@opengis/gis 0.2.28 → 0.2.30
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/README.md +5 -5
- package/dist/index.css +1 -1
- package/dist/index.js +230 -226
- package/dist/index.umd.cjs +12 -12
- package/module/cls.json +6 -6
- package/module/gis/card/gis.maps.table/index.yml +14 -14
- package/module/gis/card/gis.maps.table/main_info.hbs +25 -25
- package/module/gis/card/gis.maps.table/maps_layers.hbs +19 -19
- package/module/gis/card/gis.metadata.table/index.yml +22 -22
- package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
- package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
- package/module/gis/card/gis.metadata.table/other.hbs +25 -25
- package/module/gis/card/gis.rasters.table/index.yml +11 -11
- package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
- package/module/gis/card/gis.registers.table/cls.hbs +36 -36
- package/module/gis/card/gis.registers.table/columns.hbs +89 -89
- package/module/gis/card/gis.registers.table/filters.hbs +80 -80
- package/module/gis/card/gis.registers.table/index.yml +23 -23
- package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
- package/module/gis/card/gis.registers.table/source.hbs +45 -45
- package/module/gis/card/gis.services.table/attributes.hbs +91 -91
- package/module/gis/card/gis.services.table/filters.hbs +83 -83
- package/module/gis/card/gis.services.table/index.yml +25 -25
- package/module/gis/card/gis.services.table/main_info.hbs +27 -27
- package/module/gis/card/gis.services.table/source.hbs +25 -25
- package/module/gis/cls/bool.yes_no.json +12 -12
- package/module/gis/cls/encoding.json +14 -14
- package/module/gis/cls/geom_type.json +14 -14
- package/module/gis/cls/gis.column_type.json +34 -34
- package/module/gis/cls/gis.column_view_type.json +26 -26
- package/module/gis/cls/gis.filter_type.json +22 -22
- package/module/gis/cls/language.json +10 -10
- package/module/gis/cls/meta.service_type.json +42 -42
- package/module/gis/cls/ogc.service.json +21 -21
- package/module/gis/cls/service_type.json +42 -42
- package/module/gis/cls/source_type.json +10 -10
- package/module/gis/cls/standarts.json +6 -6
- package/module/gis/cls/topic_category.json +106 -106
- package/module/gis/cls/update_frequency.json +29 -29
- package/module/gis/cls/view.json +21 -21
- package/module/gis/form/gis.cartocss.form.json +45 -45
- package/module/gis/form/gis.group_list.form.json +17 -17
- package/module/gis/form/gis.maps.form.json +61 -61
- package/module/gis/form/gis.metadata.form.json +240 -240
- package/module/gis/form/gis.ogc_service.form.json +45 -45
- package/module/gis/form/gis.rasters.form.json +103 -103
- package/module/gis/form/gis.registers.form.json +124 -124
- package/module/gis/form/gis.registers_column.form.json +84 -84
- package/module/gis/form/gis.registers_filter.form.json +65 -65
- package/module/gis/form/gis.services.form.json +111 -111
- package/module/gis/form/gis.services_attributes.form.json +75 -75
- package/module/gis/form/gis.services_filter.form.json +65 -65
- package/module/gis/menu.json +43 -43
- package/module/gis/select/pg.columns.parent.sql +6 -6
- package/module/gis/select/pg.table_name.sql +17 -17
- package/module/gis/select/service_id.sql +1 -1
- package/module/gis/table/gis.cartocss.table.json +60 -60
- package/module/gis/table/gis.group_list.table.json +35 -35
- package/module/gis/table/gis.maps.table.json +99 -99
- package/module/gis/table/gis.metadata.table.json +70 -70
- package/module/gis/table/gis.ogc_service.table.json +97 -97
- package/module/gis/table/gis.rasters.table.json +99 -99
- package/module/gis/table/gis.registers.table.json +142 -142
- package/module/gis/table/gis.services.table.json +118 -118
- package/module/gis/table/site.gis.registers.table.json +88 -88
- package/module/gis/table/site.gis.services.table.json +106 -106
- package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
- package/module/gis/tokens.yml +5 -5
- package/module/test/cls/bp_build_type.json +37 -37
- package/module/test/cls/doc_status.json +31 -31
- package/module/test/cls/ts.temp_status.json +18 -18
- package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
- package/module/test/cls/ts.temp_type.json +9 -9
- package/module/test/layer/bp.json +59 -59
- package/module/test/layer/bp1.yml +33 -33
- package/module/test/layer/individual.yml +53 -53
- package/module/test/layer/ts.linking_passport.yml +55 -55
- package/module/test/layer/ts.temp_structure.yml +50 -50
- package/module/test/map/addr.yml +21 -21
- package/module/test/map/bp_myo.json +43 -43
- package/module/test/map/bpf.json +43 -43
- package/module/test/map/main.json +36 -36
- package/module/test/map/mbd.json +91 -91
- package/module/test/map/ts.json +52 -52
- package/module/test/select/address_id.json +2 -2
- package/module/test/select/address_id.sql +7 -7
- package/module/test/select/core.user_uid.sql +1 -1
- package/module/test/table/data_address.street.table.json +69 -69
- package/module/test/table/data_bp_myo.bp.table.json +122 -122
- package/package.json +75 -73
- package/plugin.js +44 -44
- package/server/migrations/maps.sql +30 -30
- package/server/migrations/ogc.sql +106 -106
- package/server/migrations/rasters.sql +263 -263
- package/server/migrations/services.sql +247 -247
- package/server/migrations/widgets.sql +20 -20
- package/server/plugins/crons.js +21 -21
- package/server/plugins/mapnik/funcs/createXML.js +72 -72
- package/server/plugins/mapnik/funcs/gdalWrapper.js +72 -72
- package/server/plugins/mapnik/funcs/map.proto +241 -241
- package/server/plugins/mapnik/funcs/mapnik.js +106 -106
- package/server/plugins/mapnik/funcs/rasterConfig.js +11 -11
- package/server/plugins/mapnik/funcs/rasterExists.js +20 -20
- package/server/plugins/mapnik/funcs/rasterInfo.js +109 -109
- package/server/plugins/mapnik/funcs/rasterVrt.js +55 -55
- package/server/plugins/mapnik/funcs/rasterXML.js +65 -65
- package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
- package/server/plugins/mapnik/utils/map.proto +241 -241
- package/server/plugins/vite.js +74 -74
- package/server/routes/gis/cartocss/add.cartocss.js +18 -18
- package/server/routes/gis/cartocss/get.cartocss.js +12 -12
- package/server/routes/gis/dashboard.js +29 -29
- package/server/routes/gis/index.mjs +73 -73
- package/server/routes/gis/metadata/metadataXML.js +13 -13
- package/server/routes/gis/ogc/map.info.point.js +124 -124
- package/server/routes/gis/registers/add.registry.js +35 -35
- package/server/routes/gis/registers/del.registry.js +14 -14
- package/server/routes/gis/registers/funcs/classifiers.js +100 -100
- package/server/routes/gis/registers/funcs/columns.js +4 -4
- package/server/routes/gis/registers/funcs/content.type.js +9 -9
- package/server/routes/gis/registers/funcs/get.info.js +89 -89
- package/server/routes/gis/registers/funcs/handleRegistryRequest.js +133 -133
- package/server/routes/gis/registers/gis.export.js +148 -148
- package/server/routes/gis/registers/gis.registry.js +70 -70
- package/server/routes/gis/registers/gis.registry.list.js +59 -59
- package/server/routes/gis/registers/insert.columns.js +107 -107
- package/server/routes/gis/registers/insert.filters.js +110 -110
- package/server/routes/gis/registers/map.registry.js +79 -79
- package/server/routes/gis/services/add.service.js +64 -64
- package/server/routes/gis/services/del.service.js +12 -12
- package/server/routes/gis/services/get.layer.geom.js +27 -27
- package/server/routes/gis/services/get.services.col.js +33 -33
- package/server/routes/gis/services/get.services.js +84 -84
- package/server/routes/gis/services/legend.auto.js +77 -77
- package/server/routes/map/controllers/geojson.js +187 -187
- package/server/routes/map/controllers/jsonData.js +205 -205
- package/server/routes/map/controllers/layerList.js +60 -60
- package/server/routes/map/controllers/map.js +123 -123
- package/server/routes/map/controllers/mapCatalog.js +72 -72
- package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
- package/server/routes/map/controllers/mapFeatures.js +128 -128
- package/server/routes/map/controllers/mapFormat.js +83 -83
- package/server/routes/map/controllers/mapTiles.js +152 -152
- package/server/routes/map/controllers/maps.js +15 -15
- package/server/routes/map/controllers/marker_icon.js +43 -43
- package/server/routes/map/controllers/rtile.js +134 -134
- package/server/routes/map/controllers/vtile.js +172 -172
- package/server/routes/map/index.mjs +142 -142
- package/server/routes/map/maps/add.map.js +41 -41
- package/server/routes/map/maps/del.map.js +18 -18
- package/server/routes/map/maps/get.map.js +86 -86
- package/server/routes/map/vtile1.js +170 -170
- package/server/routes/map/widgets/add.widget.js +38 -38
- package/server/routes/map/widgets/del.widget.js +22 -22
- package/server/routes/map/widgets/get.widget.js +40 -40
- package/server/routes/root.mjs +3 -3
- package/utils.js +11 -11
package/dist/index.umd.cjs
CHANGED
|
@@ -69,24 +69,24 @@
|
|
|
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
71
|
*/const ur=Ie("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),pr={class:"flex items-center justify-center col-span-3 gap-2"},fr={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},mr=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)),r=t,l=e.useModel(t,"columns"),i=e.ref(!1),a=e.ref({}),s=e.ref({...r.data||{}});e.watch(()=>r.data,b=>{s.value={...b||{}}},{deep:!0});const p=()=>l.value=l.value.filter((b,c)=>c!==r.index),f=async()=>{const b=a.value.validate();if(b){he.notify({type:"warning",title:"Validation",message:Object.entries(b).map(([c,m])=>`${c}: ${m}`).join(`
|
|
72
|
-
`)});return}l.value[r.index]=s.value,i.value=!1};return(b,c)=>(e.openBlock(),e.createElementBlock("div",pr,[e.createElementVNode("button",{onClick:c[0]||(c[0]=m=>{i.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(cr),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick: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 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(dr),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:i.value,"onUpdate:visible":c[4]||(c[4]=m=>i.value=m),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",fr,[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]=m=>i.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:s.value,"onUpdate:values":c[1]||(c[1]=m=>s.value=m),schema:t.scheme,form:a.value,"onUpdate:form":c[2]||(c[2]=m=>a.value=m)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),gr={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")})}},hr={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"},mn=t=>hr[t==null?void 0:t.toLowerCase()]||"gray",yr=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],gn=t=>{var n;return yr.includes((n=t||"")==null?void 0:n.toLowerCase())},X=(t,n)=>{const o=t.__vccOpts||t;for(const[r,l]of n)o[r]=l;return o},xr={},br={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 kr(t,n){return e.openBlock(),e.createElementBlock("svg",br,[...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 wr=X(xr,[["render",kr]]),_r={},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-hash",__v0_r:"0,5361,5384"};function vr(t,n){return e.openBlock(),e.createElementBlock("svg",Er,[...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 Br=X(_r,[["render",vr]]),Nr={},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-calendar",__v0_r:"0,5361,5384"};function Vr(t,n){return e.openBlock(),e.createElementBlock("svg",Cr,[...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 $r=X(Nr,[["render",Vr]]),Sr={},Ar={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function Lr(t,n){return e.openBlock(),e.createElementBlock("svg",Ar,[...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 Fr=X(Sr,[["render",Lr]]),Tr={},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-code",__v0_r:"0,5361,5384"};function Ir(t,n){return e.openBlock(),e.createElementBlock("svg",Mr,[...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 Dr=X(Tr,[["render",Ir]]),jr={},zr={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 Or(t,n){return e.openBlock(),e.createElementBlock("svg",zr,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6"},null,-1),e.createElementVNode("circle",{cx:"8",cy:"12",r:"2"},null,-1)])])}const Pr=X(jr,[["render",Or]]),Rr={},Ur={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 qr(t,n){return e.openBlock(),e.createElementBlock("svg",Ur,[...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 Hr=X(Rr,[["render",qr]]),Yr={},Zr={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 Wr(t,n){return e.openBlock(),e.createElementBlock("svg",Zr,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),e.createElementVNode("circle",{cx:"9",cy:"9",r:"2"},null,-1),e.createElementVNode("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])])}const Kr=X(Yr,[["render",Wr]]),Gr={},Xr={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Jr(t,n){return e.openBlock(),e.createElementBlock("svg",Xr,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Qr=X(Gr,[["render",Jr]]),el={},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-list",__v0_r:"0,5361,5384"};function nl(t,n){return e.openBlock(),e.createElementBlock("svg",tl,[...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 ol=X(el,[["render",nl]]),rl={},ll={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 il(t,n){return e.openBlock(),e.createElementBlock("svg",ll,[...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 al=X(rl,[["render",il]]),sl={},cl={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 dl(t,n){return e.openBlock(),e.createElementBlock("svg",cl,[...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 ul=X(sl,[["render",dl]]),pl={},fl={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 ml(t,n){return e.openBlock(),e.createElementBlock("svg",fl,[...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 gl=X(pl,[["render",ml]]),hl={},yl={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function xl(t,n){return e.openBlock(),e.createElementBlock("svg",yl,[...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 bl=X(hl,[["render",xl]]),kl={},wl={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 _l(t,n){return e.openBlock(),e.createElementBlock("svg",wl,[...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 El=X(kl,[["render",_l]]),vl={},Bl={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function Nl(t,n){return e.openBlock(),e.createElementBlock("svg",Bl,[...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 hn={IconText:wr,IconNumber:Br,IconDate:$r,IconDatetime:Fr,IconRichtext:Dr,IconBoolean:Pr,IconFile:Hr,IconImage:Kr,IconArray:Qr,IconSelect:ol,IconSlug:al,IconDatalist:ul,IconReference:gl,IconReferenceList:bl,IconBadge:El,IconCheck:X(vl,[["render",Nl]])},Cl={key:0,class:"flex items-center justify-between mb-6"},Vl={class:"flex justify-end w-full"},$l={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},Sl={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},Al={class:"table-fixed w-full text-[13px]"},Ll={class:"bg-gray-50 border-b border-gray-200"},Fl={key:0},Tl=["onDragstart","onDragover","onDrop"],Ml={key:0,class:"flex w-fit items-center gap-2 text-left"},Il={class:"flex-1 min-w-0"},Dl={class:"font-medium text-gray-900 truncate"},jl={class:"text-xs text-gray-500"},zl={key:1,class:"flex items-center justify-center"},Ol={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"},Pl={key:1,class:"text-gray-500 text-sm"},Rl={key:3},Ul={class:"px-6 py-4"},ql={key:1},Hl=["colspan"],Ke=X(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(v){return v.charAt(0).toUpperCase()+v.slice(1)}const r=e.defineAsyncComponent(()=>import("@opengis/core").then(v=>v.VsModal)),l=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue"),a=t,s=e.ref({}),p=e.ref(!1),f=e.ref({}),b=e.ref(null),c=e.useSlots(),m=v=>!!(v&&c[v]);n({openCreateDialog:()=>{p.value=!0}});const d=e.computed({get(){return Array.isArray(i.value)?i.value:i.value&&Array.isArray(i.value.columns)?i.value.columns:[]},set(v){Array.isArray(i.value)?i.value=v:i.value&&Array.isArray(i.value.columns)&&(i.value.columns=v)}}),u=e.computed(()=>{const v=a.columnsScheme.map(N=>N.key);return v.includes("name")&&v.includes("label")||v.includes("id")&&v.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...a.columnsScheme.filter(N=>!["name","id","label"].includes(N.key))]:a.columnsScheme});function g(){p.value=!1,f.value={},b.value=null}async function h(){const v=s.value.validate();if(v){he.notify({type:"warning",title:"Validation",message:Object.entries(v).map(([N,x])=>`${N}: ${x}`).join(`
|
|
73
|
-
`)});return}if(b.value===null)d.value=[...d.value,{...f.value}];else{const N=[...d.value];N[b.value]={...f.value},d.value=N}g()}const y=e.ref(null),k=e.ref(null),C=v=>{y.value=v},M=v=>{k.value=v},j=v=>{if(y.value===null||y.value===v){y.value=null,k.value=null;return}const N=[...d.value],[x]=N.splice(y.value,1);N.splice(v,0,x),d.value=N,y.value=null,k.value=null};return(v,N)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",Cl,[e.createElementVNode("div",Vl,[e.createElementVNode("button",{onClick:N[0]||(N[0]=x=>p.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...N[4]||(N[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",$l,[e.createElementVNode("div",Sl,[e.createElementVNode("table",Al,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,x=>(e.openBlock(),e.createElementBlock("col",{key:x.key,style:e.normalizeStyle(x.type==="main"?`width: ${t.mainColWidth}`:x.width?`width: ${x.width}`:"auto")},null,4))),128)),N[5]||(N[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",Ll,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,x=>(e.openBlock(),e.createElementBlock("th",{key:x.key,class:"px-6 py-4"},e.toDisplayString(x.label),1))),128)),N[6]||(N[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(),e.createElementBlock("tbody",Fl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(x,V)=>(e.openBlock(),e.createElementBlock("tr",{key:x.id||x.name||V,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":y.value===V,"border-t-2 border-b-2 border-blue-500 bg-blue-50":k.value===V}]),draggable:"true",onDragstart:L=>C(V),onDragover:e.withModifiers(L=>M(V),["prevent"]),onDrop:L=>j(V)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,L=>(e.openBlock(),e.createElementBlock("td",{key:L.key,class:"px-6 py-4 align-middle text-center"},[L.type==="main"?(e.openBlock(),e.createElementBlock("div",Ml,[N[7]||(N[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(gn)(x.format==="yes/no"?"check":x.format||x.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(mn)(x.format==="yes/no"?"check":x.format||x.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x.format==="yes/no"?"icon-check":e.unref(hn)["Icon"+o(x.format||x.type)]||e.unref(hn).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Il,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Dl,[e.createTextVNode(e.toDisplayString(x.name||x.id),1)])),[[e.unref(gr)]]),e.createElementVNode("p",jl,e.toDisplayString(x.label||x.ua||x.name||x.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[L.slot&&m(L.slot)?e.renderSlot(v.$slots,L.slot,{key:0,row:x,column:L,value:x[L.key],rowIndex:V},void 0,!0):L.type==="color"?(e.openBlock(),e.createElementBlock("div",zl,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${x[L.key]}]`])},null,2)])):["format","type","meta"].includes(L.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[x[L.key]?(e.openBlock(),e.createElementBlock("span",Ol,e.toDisplayString(x[L.key]),1)):(e.openBlock(),e.createElementBlock("span",Pl,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",Rl,e.toDisplayString(x[L.key]),1))],64))]))),128)),e.createElementVNode("td",Ul,[e.createVNode(mr,{columns:d.value,"onUpdate:columns":N[1]||(N[1]=L=>d.value=L),data:x,index:V,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,Tl))),128))])):(e.openBlock(),e.createElementBlock("tr",ql,[e.createElementVNode("td",{colspan:u.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Hl)]))])])]),e.createVNode(e.unref(r),{teleport:"#modal",title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":N[3]||(N[3]=x=>p.value=x)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:g,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:h,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(l),{ref_key:"form",ref:s,modelValue:f.value,"onUpdate:modelValue":N[2]||(N[2]=x=>f.value=x),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-f9fa8e3e"]]),Yl={class:"p-4 text-[13px]"},Zl={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Wl=["id","checked","onChange"],Kl={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Gl={class:"font-medium text-gray-900 truncate"},Xl={class:"text-xs text-gray-500"},Jl={class:"flex justify-end gap-2 p-4 border-t w-full"},et=e.defineComponent({__name:"import-fields-dialog",props:e.mergeModels({fields:{default:()=>[]},title:{},idPrefix:{default:"import"},confirmText:{default:"Імпортувати"},cancelText:{default:"Скасувати"}},{visible:{type:Boolean,default:!1},visibleModifiers:{},selection:{default:[]},selectionModifiers:{}}),emits:e.mergeModels(["confirm","cancel"],["update:visible","update:selection"]),setup(t,{emit:n}){const o=e.useModel(t,"visible"),r=e.useModel(t,"selection"),l=t,i=n,a=e.defineAsyncComponent(()=>import("@opengis/core").then(k=>k.VsModal)),s=e.computed(()=>Array.isArray(l.fields)?l.fields.filter(Boolean):[]),p=k=>(k==null?void 0:k.name)??(k==null?void 0:k.id)??(k==null?void 0:k.key)??(k==null?void 0:k.code)??(k==null?void 0:k.field)??(k==null?void 0:k.value)??"",f=k=>String(p(k)??"").trim(),b=k=>(k==null?void 0:k.title)??(k==null?void 0:k.label)??f(k),c=e.computed(()=>new Set(r.value.map(k=>String(k??"").trim()))),m=k=>c.value.has(f(k)),d=k=>{const C=f(k);if(!C)return;const M=new Set(c.value);M.has(C)?M.delete(C):M.add(C),r.value=Array.from(M)},u=e.computed(()=>l.confirmText||"Імпортувати"),g=e.computed(()=>l.cancelText||"Скасувати"),h=()=>{o.value=!1,i("cancel")},y=()=>{i("confirm"),o.value=!1};return(k,C)=>(e.openBlock(),e.createBlock(e.unref(a),{visible:o.value,"onUpdate:visible":C[0]||(C[0]=M=>o.value=M),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Jl,[e.createElementVNode("button",{onClick:h,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(g.value),1),e.createElementVNode("button",{onClick:y,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(u.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Yl,[e.createElementVNode("div",Zl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,M=>(e.openBlock(),e.createElementBlock("label",{key:f(M),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${f(M)}`,checked:m(M),onChange:j=>d(M)},null,40,Wl),e.createElementVNode("div",Kl,[e.unref(gn)(M.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(mn)(M.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${M.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Gl,e.toDisplayString(f(M)),1),e.createElementVNode("p",Xl,e.toDisplayString(b(M)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function tt(t){return t==null?"":String(t).trim()}function qe(t){return tt((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 nt(t,n,o){const r=Array.isArray(t)?[...t]:[],l=Array.isArray(n)?n:[],{selectedKeys:i,resolveKey:a}=o,s=new Set;for(const c of i){const m=tt(c);m&&s.add(m)}if(s.size===0)return[];const p=c=>tt(a(c)),f=[],b=new Set;for(const c of r){const m=p(c);!m||!s.has(m)||(f.push(c),b.add(m))}for(const c of l){const m=p(c);!m||b.has(m)||!s.has(m)||(f.push(c),b.add(m))}return f}const Ql={class:"vs-form"},ei={class:"vs-form__body auto-rows-max container"},ti={class:"flex flex-wrap"},ni={class:"h-fit w-full mb-6 px-2"},oi={class:"h-fit w-full flex flex-wrap"},ri={class:"w-full"},li=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=k=>qe(k||{}),a=e.defineAsyncComponent(()=>import("@opengis/form")),s=e.ref(),p=e.ref(!1),f=e.ref([]),b=()=>{const k=m.value.map(C=>i(C)).filter(C=>C.length>0);f.value=[...k],p.value=!0},c=e.computed(()=>{var k,C;return((k=n.value)==null?void 0:k.token)||((C=n.value)==null?void 0:C.id)||"register-form"}),m=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:k=>{n.value||(n.value={}),n.value.columns=Array.isArray(k)?k:[]}}),d=e.computed({get:()=>n.value||{},set:k=>{var M;const C=Array.isArray((M=n.value)==null?void 0:M.columns)?n.value.columns:[];n.value={...n.value,...k,columns:C}}});e.watch(()=>s.value,k=>{o.value=k||null},{immediate:!0}),e.watch(p,k=>{k||(f.value=[])});const u=()=>{const k=new Set(f.value.map(j=>tt(j)).filter(j=>j.length>0)),C=Array.isArray(m.value)?[...m.value]:[],M=l.value.filter(j=>k.has(i(j))).map(j=>{const v=i(j),N=j.title??j.label??v;return{...j,name:v,label:N,type:j.type||"text",meta:j.meta??"features"}});m.value=nt(C,M,{selectedKeys:f.value,resolveKey:i}),p.value=!1,f.value=[]},g={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"}],y={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"}]},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}),(k,C)=>(e.openBlock(),e.createElementBlock("div",Ql,[e.createElementVNode("div",ei,[e.createElementVNode("div",ti,[e.createElementVNode("div",ni,[(e.openBlock(),e.createBlock(e.unref(a),{ref_key:"formEl",ref:s,key:c.value,schema:g,modelValue:d.value,"onUpdate:modelValue":C[0]||(C[0]=M=>d.value=M)},null,8,["modelValue"]))]),e.createElementVNode("div",oi,[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"},[...C[4]||(C[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",ri,[e.createVNode(Ke,{modelValue:m.value,"onUpdate:modelValue":C[1]||(C[1]=M=>m.value=M),"columns-scheme":h,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(et,{visible:p.value,"onUpdate:visible":C[2]||(C[2]=M=>p.value=M),selection:f.value,"onUpdate:selection":C[3]||(C[3]=M=>f.value=M),fields:l.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),ii={class:"vs-form"},ai={class:"vs-form__body auto-rows-max container"},si={class:"flex flex-wrap"},ci={class:"h-fit w-full flex flex-wrap"},di={class:"w-full"},ui=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>qe(d||{}),a=e.ref(!1),s=e.ref([]),p=()=>{const d=f.value.map(u=>i(u)).filter(u=>u.length>0);s.value=[...d],a.value=!0},f=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:d=>{n.value||(n.value={}),n.value.filters=Array.isArray(d)?d:[]}});e.watch(a,d=>{d||(s.value=[])});const b=()=>{const d=new Set(s.value.map(h=>tt(h)).filter(h=>h.length>0)),u=Array.isArray(f.value)?[...f.value]:[],g=l.value.filter(h=>d.has(i(h))).map(h=>({name:i(h),label:h.title??h.label??i(h),type:h.type||"text"}));f.value=nt(u,g,{selectedKeys:s.value,resolveKey:i}),a.value=!1,s.value=[]},c=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],m={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},type:{type:"radio",label:"Тип",required:!0,position:"horizontal",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,u)=>(e.openBlock(),e.createElementBlock("div",ii,[e.createElementVNode("div",ai,[e.createElementVNode("div",si,[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",ci,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,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",di,[e.createVNode(Ke,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=g=>f.value=g),"columns-scheme":c,"form-scheme":m,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(et,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=g=>a.value=g),selection:s.value,"onUpdate:selection":u[2]||(u[2]=g=>s.value=g),fields:l.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:b},null,8,["visible","selection","fields"])]))}}),pi={class:"vs-form"},fi={class:"vs-form__body auto-rows-max container"},mi={class:"flex flex-wrap"},gi={class:"h-fit w-full flex flex-wrap"},hi={class:"w-full"},yi=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>qe(d||{}),a=e.ref(!1),s=e.ref([]),p=()=>{const d=f.value.map(u=>i(u)).filter(u=>u.length>0);s.value=[...d],a.value=!0},f=e.computed({get:()=>n.value.card,set:d=>{n.value||(n.value={}),n.value.card=Array.isArray(d)?d:[]}});e.watch(a,d=>{var u;if(d){const g=((u=f.value)==null?void 0:u.map(h=>h.name))||[];s.value=[...g]}});const b=()=>{const d=new Set(s.value.map(h=>tt(h)).filter(h=>h.length>0)),u=Array.isArray(f.value)?[...f.value]:[],g=l.value.filter(h=>d.has(i(h))).map(h=>{const y=i(h),k=h.title??h.label??y;return{...h,name:y,label:k,format:h.format||h.type||"text",meta:h.meta||"title"}});f.value=nt(u,g,{selectedKeys:s.value,resolveKey:i}),a.value=!1,s.value=[]},c=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"format",label:"Format",type:"text"}],m={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}),(d,u)=>(e.openBlock(),e.createElementBlock("div",pi,[e.createElementVNode("div",fi,[e.createElementVNode("div",mi,[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",gi,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,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",hi,[e.createVNode(Ke,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=g=>f.value=g),"columns-scheme":c,"form-scheme":m,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(et,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=g=>a.value=g),selection:s.value,"onUpdate:selection":u[2]||(u[2]=g=>s.value=g),fields:l.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:b},null,8,["visible","selection","fields"])]))}}),xi=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function ft(t){if(!t)return"";const[n,o]=t.split(" ");if(!n)return t;const[r,l,i]=n.split("-");if(!r||!l||!i)return t;const a=parseInt(l,10),s=xi[a]||l;let p=`${parseInt(i,10)} ${s} ${r}`;if(o){const f=o.split(".")[0],[b,c,m]=f.split(":");b&&c&&m?p+=`, ${b}:${c}:${m}`:b&&c?p+=`, ${b}:${c}`:b&&(p+=`, ${b}`)}return p}const bi={class:"flex justify-between p-4 pb-2 bg-slate-50 gap-4"},ki={class:"flex items-center justify-between"},wi={class:"text-lg font-bold line-clamp-2"},_i={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap","data-v0-t":"badge"},Ei={key:0,class:"flex"},vi={key:0,class:"h-fit inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap"},Bi={class:"p-4 pt-2"},Ni={class:"grid grid-cols-2 gap-3 text-sm"},Ci={class:"text-gray-500"},Vi={class:"font-medium"},$i={class:"items-center p-3 bg-slate-50 flex justify-end gap-2"},Si=["href"],Ai=["href"],yn=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]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),i=e.computed(()=>n.columns.filter(c=>c.meta==="category")),a=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),p=(c,m)=>{if(m)return c[m]},f=c=>{const m=p(c,n.id_key);return`${n.path}?id=${m}`},b=(c,m)=>{const d=p(c,n.id_key);return`/map?layers=${m}&info=${m},${d}`};return(c,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var u,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",bi,[e.createElementVNode("div",ki,[e.createElementVNode("h2",wi,e.toDisplayString(d[`${(u=l.value)==null?void 0:u.name}_text`]||d[(g=l.value)==null?void 0:g.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.name},[d[y.name]?(e.openBlock(),e.createElementBlock("div",_i,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ei,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.name,class:"mt-2 flex flex-wrap gap-1"},[d[y.name]?(e.openBlock(),e.createElementBlock("span",vi,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Bi,[e.createElementVNode("div",Ni,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,y=>{var k;return e.openBlock(),e.createElementBlock("div",{key:y.name,class:"flex items-center gap-1.5"},[e.createElementVNode("span",Ci,e.toDisplayString((y==null?void 0:y.ua)||y.label||y.name)+": ",1),e.createElementVNode("span",Vi,[Array.isArray(d[y==null?void 0:y.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name],(C,M)=>(e.openBlock(),e.createElementBlock("span",{key:M,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(C),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(d[y==null?void 0:y.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((k=d[(y==null?void 0:y.name)+"_data"])==null?void 0:k.text)||d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",$i,[r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(d,d==null?void 0:d.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[0]||(m[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,Si)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(d),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[1]||(m[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,Ai)])])}),128))}}),Li={class:"p-0"},Fi={class:"border-l-4 border-l-slate-400"},Ti={class:"p-4"},Mi={class:"flex flex-wrap items-center gap-2 mb-3"},Ii={class:"text-lg font-bold"},Di={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-green-100 text-green-800 hover:bg-green-100","data-v0-t":"badge"},ji={key:1,class:"flex"},zi={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-4 gap-3 text-sm border-t pt-3"},Pi={class:"text-xs text-gray-500 mb-1"},Ri={class:"font-medium"},Ui={class:"flex justify-end gap-2 mt-3 border-t pt-3"},qi=["href"],Hi=["href"],xn=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]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),i=e.computed(()=>n.columns.filter(c=>c.meta==="category")),a=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),p=(c,m)=>{if(m)return c[m]},f=c=>{const m=p(c,n.id_key);return`${n.path}?id=${m}`},b=(c,m)=>{const d=p(c,n.id_key);return`/map?layers=${m}&info=${m},${d}`};return(c,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var u,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",Li,[e.createElementVNode("div",Fi,[e.createElementVNode("div",Ti,[e.createElementVNode("div",Mi,[e.createElementVNode("h2",Ii,e.toDisplayString(d[`${(u=l.value)==null?void 0:u.name}_text`]||d[(g=l.value)==null?void 0:g.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.name},[d[y.name]?(e.openBlock(),e.createElementBlock("div",Di,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",ji,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.name,class:"flex flex-wrap gap-1 ml-2"},[d[y.name]?(e.openBlock(),e.createElementBlock("span",zi,e.toDisplayString(d[`${y.name}_text`]||d[y.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,y=>{var k;return e.openBlock(),e.createElementBlock("div",{key:y.name},[e.createElementVNode("p",Pi,e.toDisplayString(y.ua),1),e.createElementVNode("p",Ri,[Array.isArray(d[y==null?void 0:y.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[y==null?void 0:y.name],(C,M)=>(e.openBlock(),e.createElementBlock("span",{key:M,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(C),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(d[y==null?void 0:y.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((k=d[(y==null?void 0:y.name)+"_data"])==null?void 0:k.text)||d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",Ui,[r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(d,d==null?void 0:d.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[0]||(m[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,qi)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(d),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[1]||(m[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,Hi)])])])])])}),128))}}),Yi={class:"space-y-4"},Zi={class:"flex items-center py-2 px-3"},Wi={class:"flex-1"},Ki={class:"grid grid-cols-12 gap-2 w-full text-xs"},Gi={class:"col-span-5"},Xi={key:0,class:"inline-flex items-center rounded-full border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80 mt-1 text-[10px] font-normal px-1.5 py-0","data-v0-t":"badge"},Ji={key:1,class:"flex flex-wrap gap-1 mt-1"},Qi={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},ea={class:"col-span-7"},ta={class:"grid grid-cols-3 gap-3"},na={class:"text-[10px] text-gray-500 mb-1"},oa={class:"truncate font-medium"},ra={class:"flex items-center justify-center gap-2"},la=["href"],ia=["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]:[]),r=m=>(m==null?void 0:m.service_id)&&(m==null?void 0:m.is_map)&&m[n.id_key]&&(m==null?void 0:m.geom),l=e.computed(()=>n.columns.find(m=>m.meta==="title")),i=e.computed(()=>n.columns.filter(m=>m.meta==="category")),a=e.computed(()=>n.columns.filter(m=>m.meta==="tags")),s=e.computed(()=>n.columns.filter(m=>m.meta!=="title")),p=e.computed(()=>"bg-blue-500"),f=(m,d)=>{if(d)return m[d]},b=m=>{const d=f(m,n.id_key);return`${n.path}?id=${d}`},c=(m,d)=>{const u=f(m,n.id_key);return`/map?layers=${d}&info=${d},${u}`};return(m,d)=>(e.openBlock(),e.createElementBlock("div",Yi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,u=>{var g,h,y;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",Zi,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-8 rounded-full mr-3",p.value])},null,2),e.createElementVNode("div",Wi,[e.createElementVNode("div",Ki,[e.createElementVNode("div",Gi,[e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(a.value)||!a.value.length}])},e.toDisplayString(u[`${(g=l.value)==null?void 0:g.name}_text`]||u[(h=l.value)==null?void 0:h.name]||u[(y=l.value)==null?void 0:y.label]||"Не вказано"),3),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,k=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:k.name},[u[k.name]?(e.openBlock(),e.createElementBlock("div",Xi,e.toDisplayString(u[`${k.name}_text`]||u[k.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ji,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k.name,class:"flex flex-wrap gap-1 mt-1"},[u[k.name]?(e.openBlock(),e.createElementBlock("span",Qi,e.toDisplayString(u[`${k.name}_text`]||u[k.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ea,[e.createElementVNode("div",ta,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>{var C;return e.openBlock(),e.createElementBlock("div",{key:k.name},[e.createElementVNode("p",na,e.toDisplayString(k.ua),1),e.createElementVNode("p",oa,[Array.isArray(u[k==null?void 0:k.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u[k==null?void 0:k.name],(M,j)=>(e.openBlock(),e.createElementBlock("span",{key:j,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(M),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[k.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(u[k==null?void 0:k.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((C=u[(k==null?void 0:k.name)+"_data"])==null?void 0:C.text)||u[(k==null?void 0:k.name)+"_text"]||u[k==null?void 0:k.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("div",ra,[r(u)?(e.openBlock(),e.createElementBlock("a",{key:0,href:c(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"},[...d[0]||(d[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.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,la)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:b(u),class:"ml-auto flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground rounded-md h-7 w-7 p-0",style:{"min-width":"2.5rem"}},[...d[1]||(d[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-4 w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,ia)])])])}),128))]))}}),aa={class:"flex flex-col space-y-1.5 p-6 pb-2"},sa={class:"flex items-center gap-2"},ca={class:"tracking-tight text-lg font-medium"},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 border-transparent bg-blue-100 text-blue-800 ml-2","data-v0-t":"badge"},ua={key:1,class:"flex"},pa={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"},fa={class:"p-6 pt-0 pb-4"},ma={class:"grid grid-cols-2 gap-4"},ga={class:"text-sm text-gray-500"},ha={class:"font-medium"},ya={class:"flex items-center p-6 pt-0 gap-2"},xa=["href"],ba=["href"],kn=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]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),i=e.computed(()=>n.columns.filter(c=>c.meta==="category")),a=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),p=(c,m)=>{if(m)return c[m]},f=c=>{const m=p(c,n.id_key);return`${n.path}?id=${m}`},b=(c,m)=>{const d=p(c,n.id_key);return`/map?layers=${m}&info=${m},${d}`};return(c,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var u,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm border-l-4 border-l-blue-600","data-v0-t":"card"},[e.createElementVNode("div",aa,[e.createElementVNode("div",sa,[e.createElementVNode("h3",ca,e.toDisplayString(d[`${(u=l.value)==null?void 0:u.name}_text`]||d[(g=l.value)==null?void 0:g.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.name},[d[y.name]?(e.openBlock(),e.createElementBlock("div",da,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",ua,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.name,class:"flex flex-wrap gap-1 ml-2"},[d[y.name]?(e.openBlock(),e.createElementBlock("span",pa,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",fa,[e.createElementVNode("div",ma,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,y=>{var k;return e.openBlock(),e.createElementBlock("div",{key:y.name},[e.createElementVNode("p",ga,e.toDisplayString(y.ua),1),e.createElementVNode("p",ha,[Array.isArray(d[y==null?void 0:y.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[y==null?void 0:y.name],(C,M)=>(e.openBlock(),e.createElementBlock("span",{key:M,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(C),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(d[y==null?void 0:y.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((k=d[(y==null?void 0:y.name)+"_data"])==null?void 0:k.text)||d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",ya,[r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(d,d==null?void 0:d.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," На карті ",8,xa)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(d),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," Детальніше ",8,ba)])])}),128))}}),ka={class:"grid grid-cols-12 divide-x divide-gray-100"},wa={key:0},_a=["src"],Ea={key:1,class:"col-span-1 flex items-center justify-center"},va={class:"col-span-7 p-4"},Ba={class:"flex items-center mb-1 col-span-7 p-4"},Na={class:"text-base font-bold text-gray-900 mr-2"},Ca={key:0,class:"inline-flex items-center rounded-full px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-primary/80 bg-blue-100 text-blue-800 border-0 text-xs ml-2"},Va={class:"text-sm text-gray-600 line-clamp-1 mb-2"},$a={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-sm"},Sa={class:"text-gray-500 mr-1"},Aa=["innerHTML"],La={class:"text-gray-600 truncate"},Fa={class:"col-span-2 p-3 bg-gray-50 flex flex-col justify-center"},Ta={class:"text-xs text-gray-500 mb-1.5"},Ma={key:0,class:"flex flex-wrap gap-1"},Ia={key:0,class:"inline-flex items-center rounded-full font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:bg-secondary/80 bg-white border border-gray-200 text-gray-700 text-xs px-1.5 py-0"},Da={class:"col-span-2 flex flex-col justify-center items-center bg-gray-50 border-l p-2"},ja={class:"w-full space-y-2"},za=["href"],Oa=["href"],wn=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]:[]),r=d=>(d==null?void 0:d.service_id)&&(d==null?void 0:d.is_map)&&d[n.id_key]&&(d==null?void 0:d.geom),l=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),a=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),s=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),p=e.computed(()=>n.columns.find(d=>d.meta==="image")),f=e.computed(()=>n.columns.find(d=>d.meta==="desc")||n.columns.find(d=>d.name==="description")),b=(d,u)=>{if(u)return d[u]},c=d=>{const u=b(d,n.id_key);return`${n.path}?id=${u}`},m=(d,u)=>{const g=b(d,n.id_key);return`/map?layers=${u}&info=${u},${g}`};return(d,u)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,g=>{var h,y,k,C,M,j;return e.openBlock(),e.createElementBlock("div",{key:g.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",ka,[p.value?(e.openBlock(),e.createElementBlock("div",wa,[g[(h=p.value)==null?void 0:h.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:g[(y=p.value)==null?void 0:y.name],alt:"image",class:"object-cover h-full"},null,8,_a)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Ea,[...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",va,[e.createElementVNode("div",Ba,[e.createElementVNode("h3",Na,e.toDisplayString(g[`${(k=l.value)==null?void 0:k.name}_text`]||g[(C=l.value)==null?void 0:C.name]||g[(M=l.value)==null?void 0:M.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,v=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:v.name},[g[v.name]?(e.openBlock(),e.createElementBlock("div",Ca,e.toDisplayString(g[`${v.name}_text`]||g[v.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),e.createElementVNode("p",Va,e.toDisplayString(g[(j=f.value)==null?void 0:j.name]),1),e.createElementVNode("div",$a,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,v=>{var N;return e.openBlock(),e.createElementBlock("div",{key:v.name,class:"flex items-center"},[e.createElementVNode("span",Sa,e.toDisplayString((v==null?void 0:v.ua)||v.label||v.name)+":",1),v.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:v.icon},null,8,Aa)):e.createCommentVNode("",!0),e.createElementVNode("span",La,[Array.isArray(g[v==null?void 0:v.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(g[v==null?void 0:v.name],(x,V)=>(e.openBlock(),e.createElementBlock("span",{key:V,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(x),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[v.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(g[v==null?void 0:v.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((N=g[(v==null?void 0:v.name)+"_data"])==null?void 0:N.text)||g[v==null?void 0:v.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Fa,[e.createElementVNode("p",Ta," Теги: "+e.toDisplayString(a.value.length&&g[a.value[0].name]?"":"відсутні"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ma,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,v=>(e.openBlock(),e.createElementBlock("div",{key:v.name,class:"flex flex-wrap gap-1"},[g[v.name]?(e.openBlock(),e.createElementBlock("span",Ia,e.toDisplayString(g[`${v.name}_text`]||g[v.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Da,[e.createElementVNode("div",ja,[r(g)?(e.openBlock(),e.createElementBlock("a",{key:0,href:m(g,g==null?void 0:g.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md px-3 w-full bg-blue-600 hover:bg-blue-700 text-white text-xs h-8"}," На карті ",8,za)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:c(g),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md px-3 w-full bg-blue-600 hover:bg-blue-700 text-white text-xs h-8"}," Детальніше ",8,Oa)])])])])}),128))}}),_n={template1:yn,template2:xn,template3:bn,template4:kn,template5:wn},Pa={class:"space-y-4"},Ra={class:"flex items-center gap-4"},Ua={class:"text-lg font-semibold mb-4"},qa={key:1,class:"text-gray-400 text-center py-12"},Ha={key:2,class:"text-gray-400 text-center py-12"},Ya=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"),r=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],l={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},i=e.computed(()=>{var b;return Array.isArray((b=o.value)==null?void 0:b.columns)?o.value.columns:[]}),a=e.computed(()=>{var b;return((b=o.value)==null?void 0:b.view)||"template1"}),s=e.computed(()=>_n[a.value]||_n.template1),p=e.computed(()=>{var m;const b=(m=o.value)==null?void 0:m.view;if(!b)return"template1";const c=r.find(d=>d.id===b);return(c==null?void 0:c.text)||b}),f=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(c=>{var m,d;return{...c,service_id:(m=o.value)==null?void 0:m.service_id,is_map:(d=o.value)==null?void 0:d.is_map}}));return(b,c)=>(e.openBlock(),e.createElementBlock("div",Pa,[e.createElementVNode("div",Ra,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:l,modelValue:o.value,"onUpdate:modelValue":c[0]||(c[0]=m=>o.value=m)},null,8,["modelValue"]))]),e.createElementVNode("h2",Ua," Превʼю таблиці ("+e.toDisplayString(p.value)+") ",1),s.value&&f.value.length&&i.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{items:f.value,columns:i.value,path:"#",id_key:"id",key:a.value},null,8,["items","columns"])):f.value.length?(e.openBlock(),e.createElementBlock("div",Ha," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",qa," Немає даних для превʼю "))]))}}),Za={class:"relative h-screen flex flex-col bg-white p-8"},Wa={class:"flex-1 flex flex-col min-h-0 overflow-hidden"},Ka={class:"max-w-6xl mx-auto flex-1 flex flex-col min-h-0 w-full"},Ga={class:"flex items-center justify-between mb-6 flex-shrink-0"},Xa={class:"flex items-center gap-2"},Ja={class:"w-full flex-shrink-0 mb-6"},Qa={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"},es=["onClick"],ts={class:"flex-1 min-h-0 overflow-y-auto"},ns=e.defineComponent({__name:"register",setup(t){const n=Ne.useRoute(),o=Ne.useRouter(),r=e.ref("list"),l=e.ref(""),i=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],a={list:li,filters:ui,card:yi,preview:Ya},s=i.map(d=>d.id),p=e.ref({columns:[],filters:[],card:[],tableData:[]}),f=e.ref([]),b=async()=>{var u;if(!((u=p.value)==null?void 0:u.token)){he.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const g=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(p.value)});if(!g.ok)throw new Error(`Failed to save content: ${g.status}`);he.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(g){he.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(g)}},c=async d=>{try{const g=await(await fetch(`/api/gis-registry/${d}`)).json(),h=Array.isArray(g==null?void 0:g.rows)?g.rows:[];p.value.tableData=h.slice(0,3)}catch(u){console.error("Помилка завантаження превʼю:",u)}},m=async()=>{var d,u;try{const h=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),y=((d=h==null?void 0:h.rows)==null?void 0:d[0])||{};l.value=y.register_key||"",p.value={...y,columns:Array.isArray(y.columns)?y.columns:[],filters:Array.isArray(y.filters)?y.filters:[],card:Array.isArray(y.card)?y.card:[],tableData:Array.isArray(y.tableData)?y.tableData:[]},(u=h==null?void 0:h.tokens)!=null&&u.edit&&(p.value.token=h.tokens.edit),f.value=Array.isArray(h==null?void 0:h.fields)?h.fields:[]}catch(g){console.error("Помилка завантаження даних:",g)}};return e.onMounted(async()=>{const d=n.query.tab;typeof d=="string"&&s.includes(d)&&(r.value=d),await m(),l.value&&await c(l.value)}),e.watch(r,d=>{n.query.tab!==d&&o.replace({query:{...n.query,tab:d}})}),e.watch(()=>n.query.tab,d=>{typeof d=="string"&&s.includes(d)&&r.value!==d&&(r.value=d)}),(d,u)=>(e.openBlock(),e.createElementBlock("main",Za,[e.createElementVNode("div",Wa,[e.createElementVNode("div",Ka,[e.createElementVNode("div",Ga,[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",Xa,[e.createElementVNode("button",{onClick:u[0]||(u[0]=g=>e.unref(o).back()),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися "),e.createElementVNode("button",{onClick: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",Ja,[e.createElementVNode("div",Qa,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,g=>e.createElementVNode("button",{key:g.id,onClick:h=>r.value=g.id,class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",g.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(g.name),11,es)),64))])]),e.createElementVNode("div",ts,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a[r.value]),{data:p.value,"onUpdate:data":u[1]||(u[1]=g=>p.value=g),fields:f.value,key:r.value},null,40,["data","fields"]))])])])]))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function En(t){return typeof t>"u"||t===null}function os(t){return typeof t=="object"&&t!==null}function rs(t){return Array.isArray(t)?t:En(t)?[]:[t]}function ls(t,n){var o,r,l,i;if(n)for(i=Object.keys(n),o=0,r=i.length;o<r;o+=1)l=i[o],t[l]=n[l];return t}function is(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function as(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var ss=En,cs=os,ds=rs,us=is,ps=as,fs=ls,ue={isNothing:ss,isObject:cs,toArray:ds,repeat:us,isNegativeZero:ps,extend:fs};function vn(t,n){var o="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(o+='in "'+t.mark.name+'" '),o+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!n&&t.mark.snippet&&(o+=`
|
|
72
|
+
`)});return}l.value[r.index]=s.value,i.value=!1};return(b,c)=>(e.openBlock(),e.createElementBlock("div",pr,[e.createElementVNode("button",{onClick:c[0]||(c[0]=m=>{i.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(cr),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick: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 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(dr),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:i.value,"onUpdate:visible":c[4]||(c[4]=m=>i.value=m),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",fr,[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]=m=>i.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:s.value,"onUpdate:values":c[1]||(c[1]=m=>s.value=m),schema:t.scheme,form:a.value,"onUpdate:form":c[2]||(c[2]=m=>a.value=m)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),gr={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")})}},hr={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"},mn=t=>hr[t==null?void 0:t.toLowerCase()]||"gray",yr=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],gn=t=>{var n;return yr.includes((n=t||"")==null?void 0:n.toLowerCase())},X=(t,n)=>{const o=t.__vccOpts||t;for(const[r,l]of n)o[r]=l;return o},xr={},br={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 kr(t,n){return e.openBlock(),e.createElementBlock("svg",br,[...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 wr=X(xr,[["render",kr]]),_r={},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-hash",__v0_r:"0,5361,5384"};function Br(t,n){return e.openBlock(),e.createElementBlock("svg",Er,[...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 vr=X(_r,[["render",Br]]),Nr={},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-calendar",__v0_r:"0,5361,5384"};function Vr(t,n){return e.openBlock(),e.createElementBlock("svg",Cr,[...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 $r=X(Nr,[["render",Vr]]),Sr={},Ar={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function Lr(t,n){return e.openBlock(),e.createElementBlock("svg",Ar,[...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 Fr=X(Sr,[["render",Lr]]),Tr={},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-code",__v0_r:"0,5361,5384"};function Ir(t,n){return e.openBlock(),e.createElementBlock("svg",Mr,[...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 Dr=X(Tr,[["render",Ir]]),jr={},zr={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 Or(t,n){return e.openBlock(),e.createElementBlock("svg",zr,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6"},null,-1),e.createElementVNode("circle",{cx:"8",cy:"12",r:"2"},null,-1)])])}const Pr=X(jr,[["render",Or]]),Rr={},Ur={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 qr(t,n){return e.openBlock(),e.createElementBlock("svg",Ur,[...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 Hr=X(Rr,[["render",qr]]),Yr={},Zr={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 Wr(t,n){return e.openBlock(),e.createElementBlock("svg",Zr,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),e.createElementVNode("circle",{cx:"9",cy:"9",r:"2"},null,-1),e.createElementVNode("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])])}const Kr=X(Yr,[["render",Wr]]),Gr={},Xr={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Jr(t,n){return e.openBlock(),e.createElementBlock("svg",Xr,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Qr=X(Gr,[["render",Jr]]),el={},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-list",__v0_r:"0,5361,5384"};function nl(t,n){return e.openBlock(),e.createElementBlock("svg",tl,[...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 ol=X(el,[["render",nl]]),rl={},ll={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 il(t,n){return e.openBlock(),e.createElementBlock("svg",ll,[...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 al=X(rl,[["render",il]]),sl={},cl={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 dl(t,n){return e.openBlock(),e.createElementBlock("svg",cl,[...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 ul=X(sl,[["render",dl]]),pl={},fl={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 ml(t,n){return e.openBlock(),e.createElementBlock("svg",fl,[...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 gl=X(pl,[["render",ml]]),hl={},yl={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function xl(t,n){return e.openBlock(),e.createElementBlock("svg",yl,[...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 bl=X(hl,[["render",xl]]),kl={},wl={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 _l(t,n){return e.openBlock(),e.createElementBlock("svg",wl,[...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 El=X(kl,[["render",_l]]),Bl={},vl={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function Nl(t,n){return e.openBlock(),e.createElementBlock("svg",vl,[...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 hn={IconText:wr,IconNumber:vr,IconDate:$r,IconDatetime:Fr,IconRichtext:Dr,IconBoolean:Pr,IconFile:Hr,IconImage:Kr,IconArray:Qr,IconSelect:ol,IconSlug:al,IconDatalist:ul,IconReference:gl,IconReferenceList:bl,IconBadge:El,IconCheck:X(Bl,[["render",Nl]])},Cl={key:0,class:"flex items-center justify-between mb-6"},Vl={class:"flex justify-end w-full"},$l={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},Sl={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},Al={class:"table-fixed w-full text-[13px]"},Ll={class:"bg-gray-50 border-b border-gray-200"},Fl={key:0},Tl=["onDragstart","onDragover","onDrop"],Ml={key:0,class:"flex w-fit items-center gap-2 text-left"},Il={class:"flex-1 min-w-0"},Dl={class:"font-medium text-gray-900 truncate"},jl={class:"text-xs text-gray-500"},zl={key:1,class:"flex items-center justify-center"},Ol={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"},Pl={key:1,class:"text-gray-500 text-sm"},Rl={key:3},Ul={class:"px-6 py-4"},ql={key:1},Hl=["colspan"],Ke=X(e.defineComponent({__name:"vs-datatable",props:e.mergeModels({columnsScheme:{},formScheme:{},addButton:{type:Boolean,default:!0},mainColWidth:{default:""}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(t,{expose:n}){function o(B){return B.charAt(0).toUpperCase()+B.slice(1)}const r=e.defineAsyncComponent(()=>import("@opengis/core").then(B=>B.VsModal)),l=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue"),a=t,s=e.ref({}),p=e.ref(!1),f=e.ref({}),b=e.ref(null),c=e.useSlots(),m=B=>!!(B&&c[B]);n({openCreateDialog:()=>{p.value=!0}});const d=e.computed({get(){return Array.isArray(i.value)?i.value:i.value&&Array.isArray(i.value.columns)?i.value.columns:[]},set(B){Array.isArray(i.value)?i.value=B:i.value&&Array.isArray(i.value.columns)&&(i.value.columns=B)}}),u=e.computed(()=>{const B=a.columnsScheme.map(N=>N.key);return B.includes("name")&&B.includes("label")||B.includes("id")&&B.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...a.columnsScheme.filter(N=>!["name","id","label"].includes(N.key))]:a.columnsScheme});function g(){p.value=!1,f.value={},b.value=null}async function h(){const B=s.value.validate();if(B){he.notify({type:"warning",title:"Validation",message:Object.entries(B).map(([N,x])=>`${N}: ${x}`).join(`
|
|
73
|
+
`)});return}if(b.value===null)d.value=[...d.value,{...f.value}];else{const N=[...d.value];N[b.value]={...f.value},d.value=N}g()}const y=e.ref(null),k=e.ref(null),C=B=>{y.value=B},M=B=>{k.value=B},j=B=>{if(y.value===null||y.value===B){y.value=null,k.value=null;return}const N=[...d.value],[x]=N.splice(y.value,1);N.splice(B,0,x),d.value=N,y.value=null,k.value=null};return(B,N)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",Cl,[e.createElementVNode("div",Vl,[e.createElementVNode("button",{onClick:N[0]||(N[0]=x=>p.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...N[4]||(N[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",$l,[e.createElementVNode("div",Sl,[e.createElementVNode("table",Al,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,x=>(e.openBlock(),e.createElementBlock("col",{key:x.key,style:e.normalizeStyle(x.type==="main"?`width: ${t.mainColWidth}`:x.width?`width: ${x.width}`:"auto")},null,4))),128)),N[5]||(N[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",Ll,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,x=>(e.openBlock(),e.createElementBlock("th",{key:x.key,class:"px-6 py-4"},e.toDisplayString(x.label),1))),128)),N[6]||(N[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(),e.createElementBlock("tbody",Fl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(x,V)=>(e.openBlock(),e.createElementBlock("tr",{key:x.id||x.name||V,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":y.value===V,"border-t-2 border-b-2 border-blue-500 bg-blue-50":k.value===V}]),draggable:"true",onDragstart:L=>C(V),onDragover:e.withModifiers(L=>M(V),["prevent"]),onDrop:L=>j(V)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,L=>(e.openBlock(),e.createElementBlock("td",{key:L.key,class:"px-6 py-4 align-middle text-center"},[L.type==="main"?(e.openBlock(),e.createElementBlock("div",Ml,[N[7]||(N[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(gn)(x.format==="yes/no"?"check":x.format||x.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(mn)(x.format==="yes/no"?"check":x.format||x.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x.format==="yes/no"?"icon-check":e.unref(hn)["Icon"+o(x.format||x.type)]||e.unref(hn).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Il,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Dl,[e.createTextVNode(e.toDisplayString(x.name||x.id),1)])),[[e.unref(gr)]]),e.createElementVNode("p",jl,e.toDisplayString(x.label||x.ua||x.name||x.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[L.slot&&m(L.slot)?e.renderSlot(B.$slots,L.slot,{key:0,row:x,column:L,value:x[L.key],rowIndex:V},void 0,!0):L.type==="color"?(e.openBlock(),e.createElementBlock("div",zl,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${x[L.key]}]`])},null,2)])):["format","type","meta"].includes(L.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[x[L.key]?(e.openBlock(),e.createElementBlock("span",Ol,e.toDisplayString(x[L.key]),1)):(e.openBlock(),e.createElementBlock("span",Pl,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",Rl,e.toDisplayString(x[L.key]),1))],64))]))),128)),e.createElementVNode("td",Ul,[e.createVNode(mr,{columns:d.value,"onUpdate:columns":N[1]||(N[1]=L=>d.value=L),data:x,index:V,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,Tl))),128))])):(e.openBlock(),e.createElementBlock("tr",ql,[e.createElementVNode("td",{colspan:u.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Hl)]))])])]),e.createVNode(e.unref(r),{teleport:"#modal",title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":N[3]||(N[3]=x=>p.value=x)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:g,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:h,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(l),{ref_key:"form",ref:s,modelValue:f.value,"onUpdate:modelValue":N[2]||(N[2]=x=>f.value=x),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-7d841692"]]),Yl={class:"p-4 text-[13px]"},Zl={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Wl=["id","checked","onChange"],Kl={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Gl={class:"font-medium text-gray-900 truncate"},Xl={class:"text-xs text-gray-500"},Jl={class:"flex justify-end gap-2 p-4 border-t w-full"},et=e.defineComponent({__name:"import-fields-dialog",props:e.mergeModels({fields:{default:()=>[]},title:{},idPrefix:{default:"import"},confirmText:{default:"Імпортувати"},cancelText:{default:"Скасувати"}},{visible:{type:Boolean,default:!1},visibleModifiers:{},selection:{default:[]},selectionModifiers:{}}),emits:e.mergeModels(["confirm","cancel"],["update:visible","update:selection"]),setup(t,{emit:n}){const o=e.useModel(t,"visible"),r=e.useModel(t,"selection"),l=t,i=n,a=e.defineAsyncComponent(()=>import("@opengis/core").then(k=>k.VsModal)),s=e.computed(()=>Array.isArray(l.fields)?l.fields.filter(Boolean):[]),p=k=>(k==null?void 0:k.name)??(k==null?void 0:k.id)??(k==null?void 0:k.key)??(k==null?void 0:k.code)??(k==null?void 0:k.field)??(k==null?void 0:k.value)??"",f=k=>String(p(k)??"").trim(),b=k=>(k==null?void 0:k.title)??(k==null?void 0:k.label)??f(k),c=e.computed(()=>new Set(r.value.map(k=>String(k??"").trim()))),m=k=>c.value.has(f(k)),d=k=>{const C=f(k);if(!C)return;const M=new Set(c.value);M.has(C)?M.delete(C):M.add(C),r.value=Array.from(M)},u=e.computed(()=>l.confirmText||"Імпортувати"),g=e.computed(()=>l.cancelText||"Скасувати"),h=()=>{o.value=!1,i("cancel")},y=()=>{i("confirm"),o.value=!1};return(k,C)=>(e.openBlock(),e.createBlock(e.unref(a),{visible:o.value,"onUpdate:visible":C[0]||(C[0]=M=>o.value=M),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Jl,[e.createElementVNode("button",{onClick:h,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(g.value),1),e.createElementVNode("button",{onClick:y,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(u.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Yl,[e.createElementVNode("div",Zl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,M=>(e.openBlock(),e.createElementBlock("label",{key:f(M),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${f(M)}`,checked:m(M),onChange:j=>d(M)},null,40,Wl),e.createElementVNode("div",Kl,[e.unref(gn)(M.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(mn)(M.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${M.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Gl,e.toDisplayString(f(M)),1),e.createElementVNode("p",Xl,e.toDisplayString(b(M)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function tt(t){return t==null?"":String(t).trim()}function qe(t){return tt((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 nt(t,n,o){const r=Array.isArray(t)?[...t]:[],l=Array.isArray(n)?n:[],{selectedKeys:i,resolveKey:a}=o,s=new Set;for(const c of i){const m=tt(c);m&&s.add(m)}if(s.size===0)return[];const p=c=>tt(a(c)),f=[],b=new Set;for(const c of r){const m=p(c);!m||!s.has(m)||(f.push(c),b.add(m))}for(const c of l){const m=p(c);!m||b.has(m)||!s.has(m)||(f.push(c),b.add(m))}return f}const Ql={class:"vs-form"},ei={class:"vs-form__body auto-rows-max container"},ti={class:"flex flex-wrap"},ni={class:"h-fit w-full mb-6 px-2"},oi={class:"h-fit w-full flex flex-wrap"},ri={class:"w-full"},li=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=k=>qe(k||{}),a=e.defineAsyncComponent(()=>import("@opengis/form")),s=e.ref(),p=e.ref(!1),f=e.ref([]),b=()=>{const k=m.value.map(C=>i(C)).filter(C=>C.length>0);f.value=[...k],p.value=!0},c=e.computed(()=>{var k,C;return((k=n.value)==null?void 0:k.token)||((C=n.value)==null?void 0:C.id)||"register-form"}),m=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:k=>{n.value||(n.value={}),n.value.columns=Array.isArray(k)?k:[]}}),d=e.computed({get:()=>n.value||{},set:k=>{var M;const C=Array.isArray((M=n.value)==null?void 0:M.columns)?n.value.columns:[];n.value={...n.value,...k,columns:C}}});e.watch(()=>s.value,k=>{o.value=k||null},{immediate:!0}),e.watch(p,k=>{k||(f.value=[])});const u=()=>{const k=new Set(f.value.map(j=>tt(j)).filter(j=>j.length>0)),C=Array.isArray(m.value)?[...m.value]:[],M=l.value.filter(j=>k.has(i(j))).map(j=>{const B=i(j),N=j.title??j.label??B;return{...j,name:B,label:N,type:j.type||"text",meta:j.meta??"features"}});m.value=nt(C,M,{selectedKeys:f.value,resolveKey:i}),p.value=!1,f.value=[]},g={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"}],y={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"}]},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}),(k,C)=>(e.openBlock(),e.createElementBlock("div",Ql,[e.createElementVNode("div",ei,[e.createElementVNode("div",ti,[e.createElementVNode("div",ni,[(e.openBlock(),e.createBlock(e.unref(a),{ref_key:"formEl",ref:s,key:c.value,schema:g,modelValue:d.value,"onUpdate:modelValue":C[0]||(C[0]=M=>d.value=M)},null,8,["modelValue"]))]),e.createElementVNode("div",oi,[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"},[...C[4]||(C[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",ri,[e.createVNode(Ke,{modelValue:m.value,"onUpdate:modelValue":C[1]||(C[1]=M=>m.value=M),"columns-scheme":h,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(et,{visible:p.value,"onUpdate:visible":C[2]||(C[2]=M=>p.value=M),selection:f.value,"onUpdate:selection":C[3]||(C[3]=M=>f.value=M),fields:l.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),ii={class:"vs-form"},ai={class:"vs-form__body auto-rows-max container"},si={class:"flex flex-wrap"},ci={class:"h-fit w-full flex flex-wrap"},di={class:"w-full"},ui=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>qe(d||{}),a=e.ref(!1),s=e.ref([]),p=()=>{const d=f.value.map(u=>i(u)).filter(u=>u.length>0);s.value=[...d],a.value=!0},f=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:d=>{n.value||(n.value={}),n.value.filters=Array.isArray(d)?d:[]}});e.watch(a,d=>{d||(s.value=[])});const b=()=>{const d=new Set(s.value.map(h=>tt(h)).filter(h=>h.length>0)),u=Array.isArray(f.value)?[...f.value]:[],g=l.value.filter(h=>d.has(i(h))).map(h=>({name:i(h),label:h.title??h.label??i(h),type:h.type||"text"}));f.value=nt(u,g,{selectedKeys:s.value,resolveKey:i}),a.value=!1,s.value=[]},c=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],m={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},type:{type:"radio",label:"Тип",required:!0,position:"horizontal",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,u)=>(e.openBlock(),e.createElementBlock("div",ii,[e.createElementVNode("div",ai,[e.createElementVNode("div",si,[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",ci,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,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",di,[e.createVNode(Ke,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=g=>f.value=g),"columns-scheme":c,"form-scheme":m,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(et,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=g=>a.value=g),selection:s.value,"onUpdate:selection":u[2]||(u[2]=g=>s.value=g),fields:l.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:b},null,8,["visible","selection","fields"])]))}}),pi={class:"vs-form"},fi={class:"vs-form__body auto-rows-max container"},mi={class:"flex flex-wrap"},gi={class:"h-fit w-full flex flex-wrap"},hi={class:"w-full"},yi=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,l=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>qe(d||{}),a=e.ref(!1),s=e.ref([]),p=()=>{const d=f.value.map(u=>i(u)).filter(u=>u.length>0);s.value=[...d],a.value=!0},f=e.computed({get:()=>n.value.card,set:d=>{n.value||(n.value={}),n.value.card=Array.isArray(d)?d:[]}});e.watch(a,d=>{var u;if(d){const g=((u=f.value)==null?void 0:u.map(h=>h.name))||[];s.value=[...g]}});const b=()=>{const d=new Set(s.value.map(h=>tt(h)).filter(h=>h.length>0)),u=Array.isArray(f.value)?[...f.value]:[],g=l.value.filter(h=>d.has(i(h))).map(h=>{const y=i(h),k=h.title??h.label??y;return{...h,name:y,label:k,format:h.format||h.type||"text",meta:h.meta||"title"}});f.value=nt(u,g,{selectedKeys:s.value,resolveKey:i}),a.value=!1,s.value=[]},c=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"format",label:"Format",type:"text"}],m={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}),(d,u)=>(e.openBlock(),e.createElementBlock("div",pi,[e.createElementVNode("div",fi,[e.createElementVNode("div",mi,[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",gi,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,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",hi,[e.createVNode(Ke,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=g=>f.value=g),"columns-scheme":c,"form-scheme":m,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(et,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=g=>a.value=g),selection:s.value,"onUpdate:selection":u[2]||(u[2]=g=>s.value=g),fields:l.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:b},null,8,["visible","selection","fields"])]))}}),xi=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function ft(t){if(!t)return"";const[n,o]=t.split(" ");if(!n)return t;const[r,l,i]=n.split("-");if(!r||!l||!i)return t;const a=parseInt(l,10),s=xi[a]||l;let p=`${parseInt(i,10)} ${s} ${r}`;if(o){const f=o.split(".")[0],[b,c,m]=f.split(":");b&&c&&m?p+=`, ${b}:${c}:${m}`:b&&c?p+=`, ${b}:${c}`:b&&(p+=`, ${b}`)}return p}const bi={class:"flex justify-between p-4 pb-2 bg-slate-50 gap-4"},ki={class:"flex items-center justify-between"},wi={class:"text-lg font-bold line-clamp-2"},_i={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap","data-v0-t":"badge"},Ei={key:0,class:"flex"},Bi={key:0,class:"h-fit inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground ml-2 whitespace-nowrap"},vi={class:"p-4 pt-2"},Ni={class:"grid grid-cols-2 gap-3 text-sm"},Ci={class:"text-gray-500"},Vi={class:"font-medium"},$i={class:"items-center p-3 bg-slate-50 flex justify-end gap-2"},Si=["href"],Ai=["href"],yn=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]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),i=e.computed(()=>n.columns.filter(c=>c.meta==="category")),a=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),p=(c,m)=>{if(m)return c[m]},f=c=>{const m=p(c,n.id_key);return`${n.path}?id=${m}`},b=(c,m)=>{const d=p(c,n.id_key);return`/map?layers=${m}&info=${m},${d}`};return(c,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var u,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",bi,[e.createElementVNode("div",ki,[e.createElementVNode("h2",wi,e.toDisplayString(d[`${(u=l.value)==null?void 0:u.name}_text`]||d[(g=l.value)==null?void 0:g.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.name},[d[y.name]?(e.openBlock(),e.createElementBlock("div",_i,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ei,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.name,class:"mt-2 flex flex-wrap gap-1"},[d[y.name]?(e.openBlock(),e.createElementBlock("span",Bi,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",vi,[e.createElementVNode("div",Ni,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,y=>{var k;return e.openBlock(),e.createElementBlock("div",{key:y.name,class:"flex items-center gap-1.5"},[e.createElementVNode("span",Ci,e.toDisplayString((y==null?void 0:y.ua)||y.label||y.name)+": ",1),e.createElementVNode("span",Vi,[Array.isArray(d[y==null?void 0:y.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name],(C,M)=>(e.openBlock(),e.createElementBlock("span",{key:M,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(C),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(d[y==null?void 0:y.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((k=d[(y==null?void 0:y.name)+"_data"])==null?void 0:k.text)||d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",$i,[r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(d,d==null?void 0:d.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[0]||(m[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,Si)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(d),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[1]||(m[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,Ai)])])}),128))}}),Li={class:"p-0"},Fi={class:"border-l-4 border-l-slate-400"},Ti={class:"p-4"},Mi={class:"flex flex-wrap items-center gap-2 mb-3"},Ii={class:"text-lg font-bold"},Di={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-green-100 text-green-800 hover:bg-green-100","data-v0-t":"badge"},ji={key:1,class:"flex"},zi={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-4 gap-3 text-sm border-t pt-3"},Pi={class:"text-xs text-gray-500 mb-1"},Ri={class:"font-medium"},Ui={class:"flex justify-end gap-2 mt-3 border-t pt-3"},qi=["href"],Hi=["href"],xn=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]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),i=e.computed(()=>n.columns.filter(c=>c.meta==="category")),a=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),p=(c,m)=>{if(m)return c[m]},f=c=>{const m=p(c,n.id_key);return`${n.path}?id=${m}`},b=(c,m)=>{const d=p(c,n.id_key);return`/map?layers=${m}&info=${m},${d}`};return(c,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var u,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",Li,[e.createElementVNode("div",Fi,[e.createElementVNode("div",Ti,[e.createElementVNode("div",Mi,[e.createElementVNode("h2",Ii,e.toDisplayString(d[`${(u=l.value)==null?void 0:u.name}_text`]||d[(g=l.value)==null?void 0:g.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.name},[d[y.name]?(e.openBlock(),e.createElementBlock("div",Di,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",ji,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.name,class:"flex flex-wrap gap-1 ml-2"},[d[y.name]?(e.openBlock(),e.createElementBlock("span",zi,e.toDisplayString(d[`${y.name}_text`]||d[y.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,y=>{var k;return e.openBlock(),e.createElementBlock("div",{key:y.name},[e.createElementVNode("p",Pi,e.toDisplayString(y.ua),1),e.createElementVNode("p",Ri,[Array.isArray(d[y==null?void 0:y.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[y==null?void 0:y.name],(C,M)=>(e.openBlock(),e.createElementBlock("span",{key:M,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(C),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(d[y==null?void 0:y.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((k=d[(y==null?void 0:y.name)+"_data"])==null?void 0:k.text)||d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",Ui,[r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(d,d==null?void 0:d.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[0]||(m[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,qi)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(d),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...m[1]||(m[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,Hi)])])])])])}),128))}}),Yi={class:"space-y-4"},Zi={class:"flex items-center py-2 px-3"},Wi={class:"flex-1"},Ki={class:"grid grid-cols-12 gap-2 w-full text-xs"},Gi={class:"col-span-5"},Xi={key:0,class:"inline-flex items-center rounded-full border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80 mt-1 text-[10px] font-normal px-1.5 py-0","data-v0-t":"badge"},Ji={key:1,class:"flex flex-wrap gap-1 mt-1"},Qi={key:0,class:"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold border-transparent bg-gray-100 text-gray-800"},ea={class:"col-span-7"},ta={class:"grid grid-cols-3 gap-3"},na={class:"text-[10px] text-gray-500 mb-1"},oa={class:"truncate font-medium"},ra={class:"flex items-center justify-center gap-2"},la=["href"],ia=["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]:[]),r=m=>(m==null?void 0:m.service_id)&&(m==null?void 0:m.is_map)&&m[n.id_key]&&(m==null?void 0:m.geom),l=e.computed(()=>n.columns.find(m=>m.meta==="title")),i=e.computed(()=>n.columns.filter(m=>m.meta==="category")),a=e.computed(()=>n.columns.filter(m=>m.meta==="tags")),s=e.computed(()=>n.columns.filter(m=>m.meta!=="title")),p=e.computed(()=>"bg-blue-500"),f=(m,d)=>{if(d)return m[d]},b=m=>{const d=f(m,n.id_key);return`${n.path}?id=${d}`},c=(m,d)=>{const u=f(m,n.id_key);return`/map?layers=${d}&info=${d},${u}`};return(m,d)=>(e.openBlock(),e.createElementBlock("div",Yi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,u=>{var g,h,y;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",Zi,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-8 rounded-full mr-3",p.value])},null,2),e.createElementVNode("div",Wi,[e.createElementVNode("div",Ki,[e.createElementVNode("div",Gi,[e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(a.value)||!a.value.length}])},e.toDisplayString(u[`${(g=l.value)==null?void 0:g.name}_text`]||u[(h=l.value)==null?void 0:h.name]||u[(y=l.value)==null?void 0:y.label]||"Не вказано"),3),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,k=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:k.name},[u[k.name]?(e.openBlock(),e.createElementBlock("div",Xi,e.toDisplayString(u[`${k.name}_text`]||u[k.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ji,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k.name,class:"flex flex-wrap gap-1 mt-1"},[u[k.name]?(e.openBlock(),e.createElementBlock("span",Qi,e.toDisplayString(u[`${k.name}_text`]||u[k.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ea,[e.createElementVNode("div",ta,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>{var C;return e.openBlock(),e.createElementBlock("div",{key:k.name},[e.createElementVNode("p",na,e.toDisplayString(k.ua),1),e.createElementVNode("p",oa,[Array.isArray(u[k==null?void 0:k.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u[k==null?void 0:k.name],(M,j)=>(e.openBlock(),e.createElementBlock("span",{key:j,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(M),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[k.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(u[k==null?void 0:k.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((C=u[(k==null?void 0:k.name)+"_data"])==null?void 0:C.text)||u[(k==null?void 0:k.name)+"_text"]||u[k==null?void 0:k.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("div",ra,[r(u)?(e.openBlock(),e.createElementBlock("a",{key:0,href:c(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"},[...d[0]||(d[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.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,la)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:b(u),class:"ml-auto flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground rounded-md h-7 w-7 p-0",style:{"min-width":"2.5rem"}},[...d[1]||(d[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-4 w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,ia)])])])}),128))]))}}),aa={class:"flex flex-col space-y-1.5 p-6 pb-2"},sa={class:"flex items-center gap-2"},ca={class:"tracking-tight text-lg font-medium"},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 border-transparent bg-blue-100 text-blue-800 ml-2","data-v0-t":"badge"},ua={key:1,class:"flex"},pa={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"},fa={class:"p-6 pt-0 pb-4"},ma={class:"grid grid-cols-2 gap-4"},ga={class:"text-sm text-gray-500"},ha={class:"font-medium"},ya={class:"flex items-center p-6 pt-0 gap-2"},xa=["href"],ba=["href"],kn=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]:[]),r=c=>(c==null?void 0:c.service_id)&&(c==null?void 0:c.is_map)&&c[n.id_key]&&(c==null?void 0:c.geom),l=e.computed(()=>n.columns.find(c=>c.meta==="title")),i=e.computed(()=>n.columns.filter(c=>c.meta==="category")),a=e.computed(()=>n.columns.filter(c=>c.meta==="tags")),s=e.computed(()=>n.columns.filter(c=>c.meta!=="title")),p=(c,m)=>{if(m)return c[m]},f=c=>{const m=p(c,n.id_key);return`${n.path}?id=${m}`},b=(c,m)=>{const d=p(c,n.id_key);return`/map?layers=${m}&info=${m},${d}`};return(c,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>{var u,g,h;return e.openBlock(),e.createElementBlock("div",{key:d.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm border-l-4 border-l-blue-600","data-v0-t":"card"},[e.createElementVNode("div",aa,[e.createElementVNode("div",sa,[e.createElementVNode("h3",ca,e.toDisplayString(d[`${(u=l.value)==null?void 0:u.name}_text`]||d[(g=l.value)==null?void 0:g.name]||d[(h=l.value)==null?void 0:h.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.name},[d[y.name]?(e.openBlock(),e.createElementBlock("div",da,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",ua,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y.name,class:"flex flex-wrap gap-1 ml-2"},[d[y.name]?(e.openBlock(),e.createElementBlock("span",pa,e.toDisplayString(d[`${y.name}_text`]||d[y.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",fa,[e.createElementVNode("div",ma,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,y=>{var k;return e.openBlock(),e.createElementBlock("div",{key:y.name},[e.createElementVNode("p",ga,e.toDisplayString(y.ua),1),e.createElementVNode("p",ha,[Array.isArray(d[y==null?void 0:y.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d[y==null?void 0:y.name],(C,M)=>(e.openBlock(),e.createElementBlock("span",{key:M,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(C),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[y.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(d[y==null?void 0:y.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((k=d[(y==null?void 0:y.name)+"_data"])==null?void 0:k.text)||d[(y==null?void 0:y.name)+"_text"]||d[y==null?void 0:y.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",ya,[r(d)?(e.openBlock(),e.createElementBlock("a",{key:0,href:b(d,d==null?void 0:d.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," На карті ",8,xa)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:f(d),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border bg-background h-10 px-4 py-2 rounded-md text-black border-black hover:bg-gray-100 hover:text-black"}," Детальніше ",8,ba)])])}),128))}}),ka={class:"grid grid-cols-12 divide-x divide-gray-100"},wa={key:0},_a=["src"],Ea={key:1,class:"col-span-1 flex items-center justify-center"},Ba={class:"col-span-7 p-4"},va={class:"flex items-center mb-1 col-span-7 p-4"},Na={class:"text-base font-bold text-gray-900 mr-2"},Ca={key:0,class:"inline-flex items-center rounded-full px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-primary/80 bg-blue-100 text-blue-800 border-0 text-xs ml-2"},Va={class:"text-sm text-gray-600 line-clamp-1 mb-2"},$a={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-sm"},Sa={class:"text-gray-500 mr-1"},Aa=["innerHTML"],La={class:"text-gray-600 truncate"},Fa={class:"col-span-2 p-3 bg-gray-50 flex flex-col justify-center"},Ta={class:"text-xs text-gray-500 mb-1.5"},Ma={key:0,class:"flex flex-wrap gap-1"},Ia={key:0,class:"inline-flex items-center rounded-full font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:bg-secondary/80 bg-white border border-gray-200 text-gray-700 text-xs px-1.5 py-0"},Da={class:"col-span-2 flex flex-col justify-center items-center bg-gray-50 border-l p-2"},ja={class:"w-full space-y-2"},za=["href"],Oa=["href"],wn=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]:[]),r=d=>(d==null?void 0:d.service_id)&&(d==null?void 0:d.is_map)&&d[n.id_key]&&(d==null?void 0:d.geom),l=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),a=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),s=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),p=e.computed(()=>n.columns.find(d=>d.meta==="image")),f=e.computed(()=>n.columns.find(d=>d.meta==="desc")||n.columns.find(d=>d.name==="description")),b=(d,u)=>{if(u)return d[u]},c=d=>{const u=b(d,n.id_key);return`${n.path}?id=${u}`},m=(d,u)=>{const g=b(d,n.id_key);return`/map?layers=${u}&info=${u},${g}`};return(d,u)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,g=>{var h,y,k,C,M,j;return e.openBlock(),e.createElementBlock("div",{key:g.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",ka,[p.value?(e.openBlock(),e.createElementBlock("div",wa,[g[(h=p.value)==null?void 0:h.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:g[(y=p.value)==null?void 0:y.name],alt:"image",class:"object-cover h-full"},null,8,_a)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Ea,[...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",Ba,[e.createElementVNode("div",va,[e.createElementVNode("h3",Na,e.toDisplayString(g[`${(k=l.value)==null?void 0:k.name}_text`]||g[(C=l.value)==null?void 0:C.name]||g[(M=l.value)==null?void 0:M.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,B=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:B.name},[g[B.name]?(e.openBlock(),e.createElementBlock("div",Ca,e.toDisplayString(g[`${B.name}_text`]||g[B.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),e.createElementVNode("p",Va,e.toDisplayString(g[(j=f.value)==null?void 0:j.name]),1),e.createElementVNode("div",$a,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,B=>{var N;return e.openBlock(),e.createElementBlock("div",{key:B.name,class:"flex items-center"},[e.createElementVNode("span",Sa,e.toDisplayString((B==null?void 0:B.ua)||B.label||B.name)+":",1),B.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:B.icon},null,8,Aa)):e.createCommentVNode("",!0),e.createElementVNode("span",La,[Array.isArray(g[B==null?void 0:B.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(g[B==null?void 0:B.name],(x,V)=>(e.openBlock(),e.createElementBlock("span",{key:V,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(x),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[B.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(ft)(g[B==null?void 0:B.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((N=g[(B==null?void 0:B.name)+"_data"])==null?void 0:N.text)||g[B==null?void 0:B.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Fa,[e.createElementVNode("p",Ta," Теги: "+e.toDisplayString(a.value.length&&g[a.value[0].name]?"":"відсутні"),1),Array.isArray(a.value)&&a.value.length?(e.openBlock(),e.createElementBlock("div",Ma,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,B=>(e.openBlock(),e.createElementBlock("div",{key:B.name,class:"flex flex-wrap gap-1"},[g[B.name]?(e.openBlock(),e.createElementBlock("span",Ia,e.toDisplayString(g[`${B.name}_text`]||g[B.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Da,[e.createElementVNode("div",ja,[r(g)?(e.openBlock(),e.createElementBlock("a",{key:0,href:m(g,g==null?void 0:g.service_id),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md px-3 w-full bg-blue-600 hover:bg-blue-700 text-white text-xs h-8"}," На карті ",8,za)):e.createCommentVNode("",!0),e.createElementVNode("a",{href:c(g),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md px-3 w-full bg-blue-600 hover:bg-blue-700 text-white text-xs h-8"}," Детальніше ",8,Oa)])])])])}),128))}}),_n={template1:yn,template2:xn,template3:bn,template4:kn,template5:wn},Pa={class:"space-y-4"},Ra={class:"flex items-center gap-4"},Ua={class:"text-lg font-semibold mb-4"},qa={key:1,class:"text-gray-400 text-center py-12"},Ha={key:2,class:"text-gray-400 text-center py-12"},Ya=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"),r=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],l={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},i=e.computed(()=>{var b;return Array.isArray((b=o.value)==null?void 0:b.columns)?o.value.columns:[]}),a=e.computed(()=>{var b;return((b=o.value)==null?void 0:b.view)||"template1"}),s=e.computed(()=>_n[a.value]||_n.template1),p=e.computed(()=>{var m;const b=(m=o.value)==null?void 0:m.view;if(!b)return"template1";const c=r.find(d=>d.id===b);return(c==null?void 0:c.text)||b}),f=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(c=>{var m,d;return{...c,service_id:(m=o.value)==null?void 0:m.service_id,is_map:(d=o.value)==null?void 0:d.is_map}}));return(b,c)=>(e.openBlock(),e.createElementBlock("div",Pa,[e.createElementVNode("div",Ra,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:l,modelValue:o.value,"onUpdate:modelValue":c[0]||(c[0]=m=>o.value=m)},null,8,["modelValue"]))]),e.createElementVNode("h2",Ua," Превʼю таблиці ("+e.toDisplayString(p.value)+") ",1),s.value&&f.value.length&&i.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{items:f.value,columns:i.value,path:"#",id_key:"id",key:a.value},null,8,["items","columns"])):f.value.length?(e.openBlock(),e.createElementBlock("div",Ha," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",qa," Немає даних для превʼю "))]))}}),Za={class:"relative h-screen flex flex-col bg-white p-8"},Wa={class:"flex-1 flex flex-col min-h-0 overflow-hidden"},Ka={class:"max-w-6xl mx-auto flex-1 flex flex-col min-h-0 w-full"},Ga={class:"flex items-center justify-between mb-6 flex-shrink-0"},Xa={class:"flex items-center gap-2"},Ja={class:"w-full flex-shrink-0 mb-6"},Qa={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"},es=["onClick"],ts={class:"flex-1 min-h-0 overflow-y-auto"},ns=e.defineComponent({__name:"register",setup(t){const n=Ne.useRoute(),o=Ne.useRouter(),r=e.ref("list"),l=e.ref(""),i=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],a={list:li,filters:ui,card:yi,preview:Ya},s=i.map(d=>d.id),p=e.ref({columns:[],filters:[],card:[],tableData:[]}),f=e.ref([]),b=async()=>{var u;if(!((u=p.value)==null?void 0:u.token)){he.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const g=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(p.value)});if(!g.ok)throw new Error(`Failed to save content: ${g.status}`);he.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(g){he.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(g)}},c=async d=>{try{const g=await(await fetch(`/api/gis-registry/${d}`)).json(),h=Array.isArray(g==null?void 0:g.rows)?g.rows:[];p.value.tableData=h.slice(0,3)}catch(u){console.error("Помилка завантаження превʼю:",u)}},m=async()=>{var d,u;try{const h=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),y=((d=h==null?void 0:h.rows)==null?void 0:d[0])||{};l.value=y.register_key||"",p.value={...y,columns:Array.isArray(y.columns)?y.columns:[],filters:Array.isArray(y.filters)?y.filters:[],card:Array.isArray(y.card)?y.card:[],tableData:Array.isArray(y.tableData)?y.tableData:[]},(u=h==null?void 0:h.tokens)!=null&&u.edit&&(p.value.token=h.tokens.edit),f.value=Array.isArray(h==null?void 0:h.fields)?h.fields:[]}catch(g){console.error("Помилка завантаження даних:",g)}};return e.onMounted(async()=>{const d=n.query.tab;typeof d=="string"&&s.includes(d)&&(r.value=d),await m(),l.value&&await c(l.value)}),e.watch(r,d=>{n.query.tab!==d&&o.replace({query:{...n.query,tab:d}})}),e.watch(()=>n.query.tab,d=>{typeof d=="string"&&s.includes(d)&&r.value!==d&&(r.value=d)}),(d,u)=>(e.openBlock(),e.createElementBlock("main",Za,[e.createElementVNode("div",Wa,[e.createElementVNode("div",Ka,[e.createElementVNode("div",Ga,[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",Xa,[e.createElementVNode("button",{onClick:u[0]||(u[0]=g=>e.unref(o).back()),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися "),e.createElementVNode("button",{onClick: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",Ja,[e.createElementVNode("div",Qa,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,g=>e.createElementVNode("button",{key:g.id,onClick:h=>r.value=g.id,class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",g.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(g.name),11,es)),64))])]),e.createElementVNode("div",ts,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a[r.value]),{data:p.value,"onUpdate:data":u[1]||(u[1]=g=>p.value=g),fields:f.value,key:r.value},null,40,["data","fields"]))])])])]))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function En(t){return typeof t>"u"||t===null}function os(t){return typeof t=="object"&&t!==null}function rs(t){return Array.isArray(t)?t:En(t)?[]:[t]}function ls(t,n){var o,r,l,i;if(n)for(i=Object.keys(n),o=0,r=i.length;o<r;o+=1)l=i[o],t[l]=n[l];return t}function is(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function as(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var ss=En,cs=os,ds=rs,us=is,ps=as,fs=ls,ue={isNothing:ss,isObject:cs,toArray:ds,repeat:us,isNegativeZero:ps,extend:fs};function Bn(t,n){var o="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(o+='in "'+t.mark.name+'" '),o+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!n&&t.mark.snippet&&(o+=`
|
|
74
74
|
|
|
75
|
-
`+t.mark.snippet),r+" "+o):r}function mt(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=
|
|
75
|
+
`+t.mark.snippet),r+" "+o):r}function mt(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=Bn(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}mt.prototype=Object.create(Error.prototype),mt.prototype.constructor=mt,mt.prototype.toString=function(n){return this.name+": "+Bn(this,n)};var be=mt;function Tt(t,n,o,r,l){var i="",a="",s=Math.floor(l/2)-1;return r-n>s&&(i=" ... ",n=r-s+i.length),o-r>s&&(a=" ...",o=r+s-a.length),{str:i+t.slice(n,o).replace(/\t/g,"→")+a,pos:r-n+i.length}}function Mt(t,n){return ue.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,r=[0],l=[],i,a=-1;i=o.exec(t.buffer);)l.push(i.index),r.push(i.index+i[0].length),t.position<=i.index&&a<0&&(a=r.length-2);a<0&&(a=r.length-1);var s="",p,f,b=Math.min(t.line+n.linesAfter,l.length).toString().length,c=n.maxLength-(n.indent+b+3);for(p=1;p<=n.linesBefore&&!(a-p<0);p++)f=Tt(t.buffer,r[a-p],l[a-p],t.position-(r[a]-r[a-p]),c),s=ue.repeat(" ",n.indent)+Mt((t.line-p+1).toString(),b)+" | "+f.str+`
|
|
76
76
|
`+s;for(f=Tt(t.buffer,r[a],l[a],t.position,c),s+=ue.repeat(" ",n.indent)+Mt((t.line+1).toString(),b)+" | "+f.str+`
|
|
77
77
|
`,s+=ue.repeat("-",n.indent+b+3+f.pos)+`^
|
|
78
78
|
`,p=1;p<=n.linesAfter&&!(a+p>=l.length);p++)f=Tt(t.buffer,r[a+p],l[a+p],t.position-(r[a]-r[a+p]),c),s+=ue.repeat(" ",n.indent)+Mt((t.line+p+1).toString(),b)+" | "+f.str+`
|
|
79
|
-
`;return s.replace(/\n$/,"")}var gs=ms,hs=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],ys=["scalar","sequence","mapping"];function xs(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(r){n[String(r)]=o})}),n}function bs(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(hs.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=xs(n.styleAliases||null),ys.indexOf(this.kind)===-1)throw new be('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var me=bs;function
|
|
79
|
+
`;return s.replace(/\n$/,"")}var gs=ms,hs=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],ys=["scalar","sequence","mapping"];function xs(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(r){n[String(r)]=o})}),n}function bs(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(hs.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=xs(n.styleAliases||null),ys.indexOf(this.kind)===-1)throw new be('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var me=bs;function vn(t,n){var o=[];return t[n].forEach(function(r){var l=o.length;o.forEach(function(i,a){i.tag===r.tag&&i.kind===r.kind&&i.multi===r.multi&&(l=a)}),o[l]=r}),o}function ks(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,o;function r(l){l.multi?(t.multi[l.kind].push(l),t.multi.fallback.push(l)):t[l.kind][l.tag]=t.fallback[l.tag]=l}for(n=0,o=arguments.length;n<o;n+=1)arguments[n].forEach(r);return t}function It(t){return this.extend(t)}It.prototype.extend=function(n){var o=[],r=[];if(n instanceof me)r.push(n);else if(Array.isArray(n))r=r.concat(n);else if(n&&(Array.isArray(n.implicit)||Array.isArray(n.explicit)))n.implicit&&(o=o.concat(n.implicit)),n.explicit&&(r=r.concat(n.explicit));else throw new be("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(i){if(!(i instanceof me))throw new be("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(i.loadKind&&i.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(i.multi)throw new be("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(i){if(!(i instanceof me))throw new be("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var l=Object.create(It.prototype);return l.implicit=(this.implicit||[]).concat(o),l.explicit=(this.explicit||[]).concat(r),l.compiledImplicit=vn(l,"implicit"),l.compiledExplicit=vn(l,"explicit"),l.compiledTypeMap=ks(l.compiledImplicit,l.compiledExplicit),l};var Nn=It,Cn=new me("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}}),Vn=new me("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}}),$n=new me("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}}),Sn=new Nn({explicit:[Cn,Vn,$n]});function ws(t){if(t===null)return!0;var n=t.length;return n===1&&t==="~"||n===4&&(t==="null"||t==="Null"||t==="NULL")}function _s(){return null}function Es(t){return t===null}var An=new me("tag:yaml.org,2002:null",{kind:"scalar",resolve:ws,construct:_s,predicate:Es,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function Bs(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 vs(t){return t==="true"||t==="True"||t==="TRUE"}function Ns(t){return Object.prototype.toString.call(t)==="[object Boolean]"}var Ln=new me("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Bs,construct:vs,predicate:Ns,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 Cs(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Vs(t){return 48<=t&&t<=55}function $s(t){return 48<=t&&t<=57}function Ss(t){if(t===null)return!1;var n=t.length,o=0,r=!1,l;if(!n)return!1;if(l=t[o],(l==="-"||l==="+")&&(l=t[++o]),l==="0"){if(o+1===n)return!0;if(l=t[++o],l==="b"){for(o++;o<n;o++)if(l=t[o],l!=="_"){if(l!=="0"&&l!=="1")return!1;r=!0}return r&&l!=="_"}if(l==="x"){for(o++;o<n;o++)if(l=t[o],l!=="_"){if(!Cs(t.charCodeAt(o)))return!1;r=!0}return r&&l!=="_"}if(l==="o"){for(o++;o<n;o++)if(l=t[o],l!=="_"){if(!Vs(t.charCodeAt(o)))return!1;r=!0}return r&&l!=="_"}}if(l==="_")return!1;for(;o<n;o++)if(l=t[o],l!=="_"){if(!$s(t.charCodeAt(o)))return!1;r=!0}return!(!r||l==="_")}function As(t){var n=t,o=1,r;if(n.indexOf("_")!==-1&&(n=n.replace(/_/g,"")),r=n[0],(r==="-"||r==="+")&&(r==="-"&&(o=-1),n=n.slice(1),r=n[0]),n==="0")return 0;if(r==="0"){if(n[1]==="b")return o*parseInt(n.slice(2),2);if(n[1]==="x")return o*parseInt(n.slice(2),16);if(n[1]==="o")return o*parseInt(n.slice(2),8)}return o*parseInt(n,10)}function Ls(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!ue.isNegativeZero(t)}var Fn=new me("tag:yaml.org,2002:int",{kind:"scalar",resolve:Ss,construct:As,predicate:Ls,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"]}}),Fs=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Ts(t){return!(t===null||!Fs.test(t)||t[t.length-1]==="_")}function Ms(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 Is=/^[-+]?[0-9]+e/;function Ds(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(ue.isNegativeZero(t))return"-0.0";return o=t.toString(10),Is.test(o)?o.replace("e",".e"):o}function js(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||ue.isNegativeZero(t))}var Tn=new me("tag:yaml.org,2002:float",{kind:"scalar",resolve:Ts,construct:Ms,predicate:js,represent:Ds,defaultStyle:"lowercase"}),Mn=Sn.extend({implicit:[An,Ln,Fn,Tn]}),In=Mn,Dn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),jn=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 zs(t){return t===null?!1:Dn.exec(t)!==null||jn.exec(t)!==null}function Os(t){var n,o,r,l,i,a,s,p=0,f=null,b,c,m;if(n=Dn.exec(t),n===null&&(n=jn.exec(t)),n===null)throw new Error("Date resolve error");if(o=+n[1],r=+n[2]-1,l=+n[3],!n[4])return new Date(Date.UTC(o,r,l));if(i=+n[4],a=+n[5],s=+n[6],n[7]){for(p=n[7].slice(0,3);p.length<3;)p+="0";p=+p}return n[9]&&(b=+n[10],c=+(n[11]||0),f=(b*60+c)*6e4,n[9]==="-"&&(f=-f)),m=new Date(Date.UTC(o,r,l,i,a,s,p)),f&&m.setTime(m.getTime()-f),m}function Ps(t){return t.toISOString()}var zn=new me("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:zs,construct:Os,instanceOf:Date,represent:Ps});function Rs(t){return t==="<<"||t===null}var On=new me("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Rs}),Dt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
80
80
|
\r`;function Us(t){if(t===null)return!1;var n,o,r=0,l=t.length,i=Dt;for(o=0;o<l;o++)if(n=i.indexOf(t.charAt(o)),!(n>64)){if(n<0)return!1;r+=6}return r%8===0}function qs(t){var n,o,r=t.replace(/[\r\n=]/g,""),l=r.length,i=Dt,a=0,s=[];for(n=0;n<l;n++)n%4===0&&n&&(s.push(a>>16&255),s.push(a>>8&255),s.push(a&255)),a=a<<6|i.indexOf(r.charAt(n));return o=l%4*6,o===0?(s.push(a>>16&255),s.push(a>>8&255),s.push(a&255)):o===18?(s.push(a>>10&255),s.push(a>>2&255)):o===12&&s.push(a>>4&255),new Uint8Array(s)}function Hs(t){var n="",o=0,r,l,i=t.length,a=Dt;for(r=0;r<i;r++)r%3===0&&r&&(n+=a[o>>18&63],n+=a[o>>12&63],n+=a[o>>6&63],n+=a[o&63]),o=(o<<8)+t[r];return l=i%3,l===0?(n+=a[o>>18&63],n+=a[o>>12&63],n+=a[o>>6&63],n+=a[o&63]):l===2?(n+=a[o>>10&63],n+=a[o>>4&63],n+=a[o<<2&63],n+=a[64]):l===1&&(n+=a[o>>2&63],n+=a[o<<4&63],n+=a[64],n+=a[64]),n}function Ys(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var Pn=new me("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Us,construct:qs,predicate:Ys,represent:Hs}),Zs=Object.prototype.hasOwnProperty,Ws=Object.prototype.toString;function Ks(t){if(t===null)return!0;var n=[],o,r,l,i,a,s=t;for(o=0,r=s.length;o<r;o+=1){if(l=s[o],a=!1,Ws.call(l)!=="[object Object]")return!1;for(i in l)if(Zs.call(l,i))if(!a)a=!0;else return!1;if(!a)return!1;if(n.indexOf(i)===-1)n.push(i);else return!1}return!0}function Gs(t){return t!==null?t:[]}var Rn=new me("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Ks,construct:Gs}),Xs=Object.prototype.toString;function Js(t){if(t===null)return!0;var n,o,r,l,i,a=t;for(i=new Array(a.length),n=0,o=a.length;n<o;n+=1){if(r=a[n],Xs.call(r)!=="[object Object]"||(l=Object.keys(r),l.length!==1))return!1;i[n]=[l[0],r[l[0]]]}return!0}function Qs(t){if(t===null)return[];var n,o,r,l,i,a=t;for(i=new Array(a.length),n=0,o=a.length;n<o;n+=1)r=a[n],l=Object.keys(r),i[n]=[l[0],r[l[0]]];return i}var Un=new me("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Js,construct:Qs}),ec=Object.prototype.hasOwnProperty;function tc(t){if(t===null)return!0;var n,o=t;for(n in o)if(ec.call(o,n)&&o[n]!==null)return!1;return!0}function nc(t){return t!==null?t:{}}var qn=new me("tag:yaml.org,2002:set",{kind:"mapping",resolve:tc,construct:nc}),jt=In.extend({implicit:[zn,On],explicit:[Pn,Rn,Un,qn]}),He=Object.prototype.hasOwnProperty,_t=1,Hn=2,Yn=3,Et=4,zt=1,oc=2,Zn=3,rc=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,lc=/[\x85\u2028\u2029]/,ic=/[,\[\]\{\}]/,Wn=/^(?:!|!!|![a-z\-]+!)$/i,Kn=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Gn(t){return Object.prototype.toString.call(t)}function De(t){return t===10||t===13}function Ge(t){return t===9||t===32}function _e(t){return t===9||t===32||t===10||t===13}function ot(t){return t===44||t===91||t===93||t===123||t===125}function ac(t){var n;return 48<=t&&t<=57?t-48:(n=t|32,97<=n&&n<=102?n-97+10:-1)}function sc(t){return t===120?2:t===117?4:t===85?8:0}function cc(t){return 48<=t&&t<=57?t-48:-1}function Xn(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?`
|
|
81
|
-
`: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 dc(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var Jn=new Array(256),Qn=new Array(256),rt=0;rt<256;rt++)Jn[rt]=Xn(rt)?1:0,Qn[rt]=Xn(rt);function uc(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||jt,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function eo(t,n){var o={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return o.snippet=gs(o),new be(n,o)}function Z(t,n){throw eo(t,n)}function
|
|
82
|
-
`,n-1))}function pc(t,n,o){var r,l,i,a,s,p,f,b,c=t.kind,m=t.result,d;if(d=t.input.charCodeAt(t.position),_e(d)||ot(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(l=t.input.charCodeAt(t.position+1),_e(l)||o&&ot(l)))return!1;for(t.kind="scalar",t.result="",i=a=t.position,s=!1;d!==0;){if(d===58){if(l=t.input.charCodeAt(t.position+1),_e(l)||o&&ot(l))break}else if(d===35){if(r=t.input.charCodeAt(t.position-1),_e(r))break}else{if(t.position===t.lineStart&&
|
|
81
|
+
`: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 dc(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var Jn=new Array(256),Qn=new Array(256),rt=0;rt<256;rt++)Jn[rt]=Xn(rt)?1:0,Qn[rt]=Xn(rt);function uc(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||jt,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function eo(t,n){var o={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return o.snippet=gs(o),new be(n,o)}function Z(t,n){throw eo(t,n)}function Bt(t,n){t.onWarning&&t.onWarning.call(null,eo(t,n))}var to={YAML:function(n,o,r){var l,i,a;n.version!==null&&Z(n,"duplication of %YAML directive"),r.length!==1&&Z(n,"YAML directive accepts exactly one argument"),l=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),l===null&&Z(n,"ill-formed argument of the YAML directive"),i=parseInt(l[1],10),a=parseInt(l[2],10),i!==1&&Z(n,"unacceptable YAML version of the document"),n.version=r[0],n.checkLineBreaks=a<2,a!==1&&a!==2&&Bt(n,"unsupported YAML version of the document")},TAG:function(n,o,r){var l,i;r.length!==2&&Z(n,"TAG directive accepts exactly two arguments"),l=r[0],i=r[1],Wn.test(l)||Z(n,"ill-formed tag handle (first argument) of the TAG directive"),He.call(n.tagMap,l)&&Z(n,'there is a previously declared suffix for "'+l+'" tag handle'),Kn.test(i)||Z(n,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch{Z(n,"tag prefix is malformed: "+i)}n.tagMap[l]=i}};function Ye(t,n,o,r){var l,i,a,s;if(n<o){if(s=t.input.slice(n,o),r)for(l=0,i=s.length;l<i;l+=1)a=s.charCodeAt(l),a===9||32<=a&&a<=1114111||Z(t,"expected valid JSON character");else rc.test(s)&&Z(t,"the stream contains non-printable characters");t.result+=s}}function no(t,n,o,r){var l,i,a,s;for(ue.isObject(o)||Z(t,"cannot merge mappings; the provided source object is unacceptable"),l=Object.keys(o),a=0,s=l.length;a<s;a+=1)i=l[a],He.call(n,i)||(n[i]=o[i],r[i]=!0)}function lt(t,n,o,r,l,i,a,s,p){var f,b;if(Array.isArray(l))for(l=Array.prototype.slice.call(l),f=0,b=l.length;f<b;f+=1)Array.isArray(l[f])&&Z(t,"nested arrays are not supported inside keys"),typeof l=="object"&&Gn(l[f])==="[object Object]"&&(l[f]="[object Object]");if(typeof l=="object"&&Gn(l)==="[object Object]"&&(l="[object Object]"),l=String(l),n===null&&(n={}),r==="tag:yaml.org,2002:merge")if(Array.isArray(i))for(f=0,b=i.length;f<b;f+=1)no(t,n,i[f],o);else no(t,n,i,o);else!t.json&&!He.call(o,l)&&He.call(n,l)&&(t.line=a||t.line,t.lineStart=s||t.lineStart,t.position=p||t.position,Z(t,"duplicated mapping key")),l==="__proto__"?Object.defineProperty(n,l,{configurable:!0,enumerable:!0,writable:!0,value:i}):n[l]=i,delete o[l];return n}function Ot(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++):Z(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function ce(t,n,o){for(var r=0,l=t.input.charCodeAt(t.position);l!==0;){for(;Ge(l);)l===9&&t.firstTabInLine===-1&&(t.firstTabInLine=t.position),l=t.input.charCodeAt(++t.position);if(n&&l===35)do l=t.input.charCodeAt(++t.position);while(l!==10&&l!==13&&l!==0);if(De(l))for(Ot(t),l=t.input.charCodeAt(t.position),r++,t.lineIndent=0;l===32;)t.lineIndent++,l=t.input.charCodeAt(++t.position);else break}return o!==-1&&r!==0&&t.lineIndent<o&&Bt(t,"deficient indentation"),r}function vt(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||_e(o)))}function Pt(t,n){n===1?t.result+=" ":n>1&&(t.result+=ue.repeat(`
|
|
82
|
+
`,n-1))}function pc(t,n,o){var r,l,i,a,s,p,f,b,c=t.kind,m=t.result,d;if(d=t.input.charCodeAt(t.position),_e(d)||ot(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(l=t.input.charCodeAt(t.position+1),_e(l)||o&&ot(l)))return!1;for(t.kind="scalar",t.result="",i=a=t.position,s=!1;d!==0;){if(d===58){if(l=t.input.charCodeAt(t.position+1),_e(l)||o&&ot(l))break}else if(d===35){if(r=t.input.charCodeAt(t.position-1),_e(r))break}else{if(t.position===t.lineStart&&vt(t)||o&&ot(d))break;if(De(d))if(p=t.line,f=t.lineStart,b=t.lineIndent,ce(t,!1,-1),t.lineIndent>=n){s=!0,d=t.input.charCodeAt(t.position);continue}else{t.position=a,t.line=p,t.lineStart=f,t.lineIndent=b;break}}s&&(Ye(t,i,a,!1),Pt(t,t.line-p),i=a=t.position,s=!1),Ge(d)||(a=t.position+1),d=t.input.charCodeAt(++t.position)}return Ye(t,i,a,!1),t.result?!0:(t.kind=c,t.result=m,!1)}function fc(t,n){var o,r,l;if(o=t.input.charCodeAt(t.position),o!==39)return!1;for(t.kind="scalar",t.result="",t.position++,r=l=t.position;(o=t.input.charCodeAt(t.position))!==0;)if(o===39)if(Ye(t,r,t.position,!0),o=t.input.charCodeAt(++t.position),o===39)r=t.position,t.position++,l=t.position;else return!0;else De(o)?(Ye(t,r,l,!0),Pt(t,ce(t,!1,n)),r=l=t.position):t.position===t.lineStart&&vt(t)?Z(t,"unexpected end of the document within a single quoted scalar"):(t.position++,l=t.position);Z(t,"unexpected end of the stream within a single quoted scalar")}function mc(t,n){var o,r,l,i,a,s;if(s=t.input.charCodeAt(t.position),s!==34)return!1;for(t.kind="scalar",t.result="",t.position++,o=r=t.position;(s=t.input.charCodeAt(t.position))!==0;){if(s===34)return 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),De(s))ce(t,!1,n);else if(s<256&&Jn[s])t.result+=Qn[s],t.position++;else if((a=sc(s))>0){for(l=a,i=0;l>0;l--)s=t.input.charCodeAt(++t.position),(a=ac(s))>=0?i=(i<<4)+a:Z(t,"expected hexadecimal character");t.result+=dc(i),t.position++}else Z(t,"unknown escape sequence");o=r=t.position}else De(s)?(Ye(t,o,r,!0),Pt(t,ce(t,!1,n)),o=r=t.position):t.position===t.lineStart&&vt(t)?Z(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}Z(t,"unexpected end of the stream within a double quoted scalar")}function gc(t,n){var o=!0,r,l,i,a=t.tag,s,p=t.anchor,f,b,c,m,d,u=Object.create(null),g,h,y,k;if(k=t.input.charCodeAt(t.position),k===91)b=93,d=!1,s=[];else if(k===123)b=125,d=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),k=t.input.charCodeAt(++t.position);k!==0;){if(ce(t,!0,n),k=t.input.charCodeAt(t.position),k===b)return t.position++,t.tag=a,t.anchor=p,t.kind=d?"mapping":"sequence",t.result=s,!0;o?k===44&&Z(t,"expected the node content, but found ','"):Z(t,"missed comma between flow collection entries"),h=g=y=null,c=m=!1,k===63&&(f=t.input.charCodeAt(t.position+1),_e(f)&&(c=m=!0,t.position++,ce(t,!0,n))),r=t.line,l=t.lineStart,i=t.position,it(t,n,_t,!1,!0),h=t.tag,g=t.result,ce(t,!0,n),k=t.input.charCodeAt(t.position),(m||t.line===r)&&k===58&&(c=!0,k=t.input.charCodeAt(++t.position),ce(t,!0,n),it(t,n,_t,!1,!0),y=t.result),d?lt(t,s,u,h,g,y,r,l,i):c?s.push(lt(t,null,u,h,g,y,r,l,i)):s.push(g),ce(t,!0,n),k=t.input.charCodeAt(t.position),k===44?(o=!0,k=t.input.charCodeAt(++t.position)):o=!1}Z(t,"unexpected end of the stream within a flow collection")}function hc(t,n){var o,r,l=zt,i=!1,a=!1,s=n,p=0,f=!1,b,c;if(c=t.input.charCodeAt(t.position),c===124)r=!1;else if(c===62)r=!0;else return!1;for(t.kind="scalar",t.result="";c!==0;)if(c=t.input.charCodeAt(++t.position),c===43||c===45)zt===l?l=c===43?Zn:oc:Z(t,"repeat of a chomping mode identifier");else if((b=cc(c))>=0)b===0?Z(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):a?Z(t,"repeat of an indentation width identifier"):(s=n+b-1,a=!0);else break;if(Ge(c)){do c=t.input.charCodeAt(++t.position);while(Ge(c));if(c===35)do c=t.input.charCodeAt(++t.position);while(!De(c)&&c!==0)}for(;c!==0;){for(Ot(t),t.lineIndent=0,c=t.input.charCodeAt(t.position);(!a||t.lineIndent<s)&&c===32;)t.lineIndent++,c=t.input.charCodeAt(++t.position);if(!a&&t.lineIndent>s&&(s=t.lineIndent),De(c)){p++;continue}if(t.lineIndent<s){l===Zn?t.result+=ue.repeat(`
|
|
83
83
|
`,i?1+p:p):l===zt&&i&&(t.result+=`
|
|
84
84
|
`);break}for(r?Ge(c)?(f=!0,t.result+=ue.repeat(`
|
|
85
85
|
`,i?1+p:p)):f?(f=!1,t.result+=ue.repeat(`
|
|
86
86
|
`,p+1)):p===0?i&&(t.result+=" "):t.result+=ue.repeat(`
|
|
87
87
|
`,p):t.result+=ue.repeat(`
|
|
88
|
-
`,i?1+p:p),i=!0,a=!0,p=0,o=t.position;!De(c)&&c!==0;)c=t.input.charCodeAt(++t.position);Ye(t,o,t.position,!1)}return!0}function oo(t,n){var o,r=t.tag,l=t.anchor,i=[],a,s=!1,p;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=i),p=t.input.charCodeAt(t.position);p!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,Z(t,"tab characters must not be used in indentation")),!(p!==45||(a=t.input.charCodeAt(t.position+1),!_e(a))));){if(s=!0,t.position++,ce(t,!0,-1)&&t.lineIndent<=n){i.push(null),p=t.input.charCodeAt(t.position);continue}if(o=t.line,it(t,n,Yn,!1,!0),i.push(t.result),ce(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&p!==0)Z(t,"bad indentation of a sequence entry");else if(t.lineIndent<n)break}return s?(t.tag=r,t.anchor=l,t.kind="sequence",t.result=i,!0):!1}function yc(t,n,o){var r,l,i,a,s,p,f=t.tag,b=t.anchor,c={},m=Object.create(null),d=null,u=null,g=null,h=!1,y=!1,k;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=c),k=t.input.charCodeAt(t.position);k!==0;){if(!h&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,Z(t,"tab characters must not be used in indentation")),r=t.input.charCodeAt(t.position+1),i=t.line,(k===63||k===58)&&_e(r))k===63?(h&&(lt(t,c,m,d,u,null,a,s,p),d=u=g=null),y=!0,h=!0,l=!0):h?(h=!1,l=!0):Z(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,k=r;else{if(a=t.line,s=t.lineStart,p=t.position,!it(t,o,Hn,!1,!0))break;if(t.line===i){for(k=t.input.charCodeAt(t.position);Ge(k);)k=t.input.charCodeAt(++t.position);if(k===58)k=t.input.charCodeAt(++t.position),_e(k)||Z(t,"a whitespace character is expected after the key-value separator within a block mapping"),h&&(lt(t,c,m,d,u,null,a,s,p),d=u=g=null),y=!0,h=!1,l=!1,d=t.tag,u=t.result;else if(y)Z(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=f,t.anchor=b,!0}else if(y)Z(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=f,t.anchor=b,!0}if((t.line===i||t.lineIndent>n)&&(h&&(a=t.line,s=t.lineStart,p=t.position),it(t,n,Et,!0,l)&&(h?u=t.result:g=t.result),h||(lt(t,c,m,d,u,g,a,s,p),d=u=g=null),ce(t,!0,-1),k=t.input.charCodeAt(t.position)),(t.line===i||t.lineIndent>n)&&k!==0)Z(t,"bad indentation of a mapping entry");else if(t.lineIndent<n)break}return h&<(t,c,m,d,u,null,a,s,p),y&&(t.tag=f,t.anchor=b,t.kind="mapping",t.result=c),y}function xc(t){var n,o=!1,r=!1,l,i,a;if(a=t.input.charCodeAt(t.position),a!==33)return!1;if(t.tag!==null&&Z(t,"duplication of a tag property"),a=t.input.charCodeAt(++t.position),a===60?(o=!0,a=t.input.charCodeAt(++t.position)):a===33?(r=!0,l="!!",a=t.input.charCodeAt(++t.position)):l="!",n=t.position,o){do a=t.input.charCodeAt(++t.position);while(a!==0&&a!==62);t.position<t.length?(i=t.input.slice(n,t.position),a=t.input.charCodeAt(++t.position)):Z(t,"unexpected end of the stream within a verbatim tag")}else{for(;a!==0&&!_e(a);)a===33&&(r?Z(t,"tag suffix cannot contain exclamation marks"):(l=t.input.slice(n-1,t.position+1),Wn.test(l)||Z(t,"named tag handle cannot contain such characters"),r=!0,n=t.position+1)),a=t.input.charCodeAt(++t.position);i=t.input.slice(n,t.position),ic.test(i)&&Z(t,"tag suffix cannot contain flow indicator characters")}i&&!Kn.test(i)&&Z(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch{Z(t,"tag name is malformed: "+i)}return o?t.tag=i:He.call(t.tagMap,l)?t.tag=t.tagMap[l]+i:l==="!"?t.tag="!"+i:l==="!!"?t.tag="tag:yaml.org,2002:"+i:Z(t,'undeclared tag handle "'+l+'"'),!0}function bc(t){var n,o;if(o=t.input.charCodeAt(t.position),o!==38)return!1;for(t.anchor!==null&&Z(t,"duplication of an anchor property"),o=t.input.charCodeAt(++t.position),n=t.position;o!==0&&!_e(o)&&!ot(o);)o=t.input.charCodeAt(++t.position);return t.position===n&&Z(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(n,t.position),!0}function kc(t){var n,o,r;if(r=t.input.charCodeAt(t.position),r!==42)return!1;for(r=t.input.charCodeAt(++t.position),n=t.position;r!==0&&!_e(r)&&!ot(r);)r=t.input.charCodeAt(++t.position);return t.position===n&&Z(t,"name of an alias node must contain at least one character"),o=t.input.slice(n,t.position),He.call(t.anchorMap,o)||Z(t,'unidentified alias "'+o+'"'),t.result=t.anchorMap[o],ce(t,!0,-1),!0}function it(t,n,o,r,l){var i,a,s,p=1,f=!1,b=!1,c,m,d,u,g,h;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,i=a=s=Et===o||Yn===o,r&&ce(t,!0,-1)&&(f=!0,t.lineIndent>n?p=1:t.lineIndent===n?p=0:t.lineIndent<n&&(p=-1)),p===1)for(;xc(t)||bc(t);)ce(t,!0,-1)?(f=!0,s=i,t.lineIndent>n?p=1:t.lineIndent===n?p=0:t.lineIndent<n&&(p=-1)):s=!1;if(s&&(s=f||l),(p===1||Et===o)&&(_t===o||Hn===o?g=n:g=n+1,h=t.position-t.lineStart,p===1?s&&(oo(t,h)||yc(t,h,g))||gc(t,g)?b=!0:(a&&hc(t,g)||fc(t,g)||mc(t,g)?b=!0:kc(t)?(b=!0,(t.tag!==null||t.anchor!==null)&&Z(t,"alias node should not have any properties")):pc(t,g,_t===o)&&(b=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(b=s&&oo(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"&&Z(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,m=t.implicitTypes.length;c<m;c+=1)if(u=t.implicitTypes[c],u.resolve(t.result)){t.result=u.construct(t.result),t.tag=u.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else if(t.tag!=="!"){if(He.call(t.typeMap[t.kind||"fallback"],t.tag))u=t.typeMap[t.kind||"fallback"][t.tag];else for(u=null,d=t.typeMap.multi[t.kind||"fallback"],c=0,m=d.length;c<m;c+=1)if(t.tag.slice(0,d[c].tag.length)===d[c].tag){u=d[c];break}u||Z(t,"unknown tag !<"+t.tag+">"),t.result!==null&&u.kind!==t.kind&&Z(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Z(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 wc(t){var n=t.position,o,r,l,i=!1,a;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(a=t.input.charCodeAt(t.position))!==0&&(ce(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||a!==37));){for(i=!0,a=t.input.charCodeAt(++t.position),o=t.position;a!==0&&!_e(a);)a=t.input.charCodeAt(++t.position);for(r=t.input.slice(o,t.position),l=[],r.length<1&&Z(t,"directive name must not be less than one character in length");a!==0;){for(;Ge(a);)a=t.input.charCodeAt(++t.position);if(a===35){do a=t.input.charCodeAt(++t.position);while(a!==0&&!De(a));break}if(De(a))break;for(o=t.position;a!==0&&!_e(a);)a=t.input.charCodeAt(++t.position);l.push(t.input.slice(o,t.position))}a!==0&&Ot(t),He.call(to,r)?to[r](t,r,l):
|
|
89
|
-
`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new uc(t,n),r=t.indexOf("\0");for(r!==-1&&(o.position=r,Z(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;)wc(o);return o.documents}function _c(t,n,o){n!==null&&typeof n=="object"&&typeof o>"u"&&(o=n,n=null);var r=ro(t,o);if(typeof n!="function")return r;for(var l=0,i=r.length;l<i;l+=1)n(r[l])}function Ec(t,n){var o=ro(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
|
|
88
|
+
`,i?1+p:p),i=!0,a=!0,p=0,o=t.position;!De(c)&&c!==0;)c=t.input.charCodeAt(++t.position);Ye(t,o,t.position,!1)}return!0}function oo(t,n){var o,r=t.tag,l=t.anchor,i=[],a,s=!1,p;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=i),p=t.input.charCodeAt(t.position);p!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,Z(t,"tab characters must not be used in indentation")),!(p!==45||(a=t.input.charCodeAt(t.position+1),!_e(a))));){if(s=!0,t.position++,ce(t,!0,-1)&&t.lineIndent<=n){i.push(null),p=t.input.charCodeAt(t.position);continue}if(o=t.line,it(t,n,Yn,!1,!0),i.push(t.result),ce(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&p!==0)Z(t,"bad indentation of a sequence entry");else if(t.lineIndent<n)break}return s?(t.tag=r,t.anchor=l,t.kind="sequence",t.result=i,!0):!1}function yc(t,n,o){var r,l,i,a,s,p,f=t.tag,b=t.anchor,c={},m=Object.create(null),d=null,u=null,g=null,h=!1,y=!1,k;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=c),k=t.input.charCodeAt(t.position);k!==0;){if(!h&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,Z(t,"tab characters must not be used in indentation")),r=t.input.charCodeAt(t.position+1),i=t.line,(k===63||k===58)&&_e(r))k===63?(h&&(lt(t,c,m,d,u,null,a,s,p),d=u=g=null),y=!0,h=!0,l=!0):h?(h=!1,l=!0):Z(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,k=r;else{if(a=t.line,s=t.lineStart,p=t.position,!it(t,o,Hn,!1,!0))break;if(t.line===i){for(k=t.input.charCodeAt(t.position);Ge(k);)k=t.input.charCodeAt(++t.position);if(k===58)k=t.input.charCodeAt(++t.position),_e(k)||Z(t,"a whitespace character is expected after the key-value separator within a block mapping"),h&&(lt(t,c,m,d,u,null,a,s,p),d=u=g=null),y=!0,h=!1,l=!1,d=t.tag,u=t.result;else if(y)Z(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=f,t.anchor=b,!0}else if(y)Z(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=f,t.anchor=b,!0}if((t.line===i||t.lineIndent>n)&&(h&&(a=t.line,s=t.lineStart,p=t.position),it(t,n,Et,!0,l)&&(h?u=t.result:g=t.result),h||(lt(t,c,m,d,u,g,a,s,p),d=u=g=null),ce(t,!0,-1),k=t.input.charCodeAt(t.position)),(t.line===i||t.lineIndent>n)&&k!==0)Z(t,"bad indentation of a mapping entry");else if(t.lineIndent<n)break}return h&<(t,c,m,d,u,null,a,s,p),y&&(t.tag=f,t.anchor=b,t.kind="mapping",t.result=c),y}function xc(t){var n,o=!1,r=!1,l,i,a;if(a=t.input.charCodeAt(t.position),a!==33)return!1;if(t.tag!==null&&Z(t,"duplication of a tag property"),a=t.input.charCodeAt(++t.position),a===60?(o=!0,a=t.input.charCodeAt(++t.position)):a===33?(r=!0,l="!!",a=t.input.charCodeAt(++t.position)):l="!",n=t.position,o){do a=t.input.charCodeAt(++t.position);while(a!==0&&a!==62);t.position<t.length?(i=t.input.slice(n,t.position),a=t.input.charCodeAt(++t.position)):Z(t,"unexpected end of the stream within a verbatim tag")}else{for(;a!==0&&!_e(a);)a===33&&(r?Z(t,"tag suffix cannot contain exclamation marks"):(l=t.input.slice(n-1,t.position+1),Wn.test(l)||Z(t,"named tag handle cannot contain such characters"),r=!0,n=t.position+1)),a=t.input.charCodeAt(++t.position);i=t.input.slice(n,t.position),ic.test(i)&&Z(t,"tag suffix cannot contain flow indicator characters")}i&&!Kn.test(i)&&Z(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch{Z(t,"tag name is malformed: "+i)}return o?t.tag=i:He.call(t.tagMap,l)?t.tag=t.tagMap[l]+i:l==="!"?t.tag="!"+i:l==="!!"?t.tag="tag:yaml.org,2002:"+i:Z(t,'undeclared tag handle "'+l+'"'),!0}function bc(t){var n,o;if(o=t.input.charCodeAt(t.position),o!==38)return!1;for(t.anchor!==null&&Z(t,"duplication of an anchor property"),o=t.input.charCodeAt(++t.position),n=t.position;o!==0&&!_e(o)&&!ot(o);)o=t.input.charCodeAt(++t.position);return t.position===n&&Z(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(n,t.position),!0}function kc(t){var n,o,r;if(r=t.input.charCodeAt(t.position),r!==42)return!1;for(r=t.input.charCodeAt(++t.position),n=t.position;r!==0&&!_e(r)&&!ot(r);)r=t.input.charCodeAt(++t.position);return t.position===n&&Z(t,"name of an alias node must contain at least one character"),o=t.input.slice(n,t.position),He.call(t.anchorMap,o)||Z(t,'unidentified alias "'+o+'"'),t.result=t.anchorMap[o],ce(t,!0,-1),!0}function it(t,n,o,r,l){var i,a,s,p=1,f=!1,b=!1,c,m,d,u,g,h;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,i=a=s=Et===o||Yn===o,r&&ce(t,!0,-1)&&(f=!0,t.lineIndent>n?p=1:t.lineIndent===n?p=0:t.lineIndent<n&&(p=-1)),p===1)for(;xc(t)||bc(t);)ce(t,!0,-1)?(f=!0,s=i,t.lineIndent>n?p=1:t.lineIndent===n?p=0:t.lineIndent<n&&(p=-1)):s=!1;if(s&&(s=f||l),(p===1||Et===o)&&(_t===o||Hn===o?g=n:g=n+1,h=t.position-t.lineStart,p===1?s&&(oo(t,h)||yc(t,h,g))||gc(t,g)?b=!0:(a&&hc(t,g)||fc(t,g)||mc(t,g)?b=!0:kc(t)?(b=!0,(t.tag!==null||t.anchor!==null)&&Z(t,"alias node should not have any properties")):pc(t,g,_t===o)&&(b=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(b=s&&oo(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"&&Z(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,m=t.implicitTypes.length;c<m;c+=1)if(u=t.implicitTypes[c],u.resolve(t.result)){t.result=u.construct(t.result),t.tag=u.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else if(t.tag!=="!"){if(He.call(t.typeMap[t.kind||"fallback"],t.tag))u=t.typeMap[t.kind||"fallback"][t.tag];else for(u=null,d=t.typeMap.multi[t.kind||"fallback"],c=0,m=d.length;c<m;c+=1)if(t.tag.slice(0,d[c].tag.length)===d[c].tag){u=d[c];break}u||Z(t,"unknown tag !<"+t.tag+">"),t.result!==null&&u.kind!==t.kind&&Z(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Z(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 wc(t){var n=t.position,o,r,l,i=!1,a;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(a=t.input.charCodeAt(t.position))!==0&&(ce(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||a!==37));){for(i=!0,a=t.input.charCodeAt(++t.position),o=t.position;a!==0&&!_e(a);)a=t.input.charCodeAt(++t.position);for(r=t.input.slice(o,t.position),l=[],r.length<1&&Z(t,"directive name must not be less than one character in length");a!==0;){for(;Ge(a);)a=t.input.charCodeAt(++t.position);if(a===35){do a=t.input.charCodeAt(++t.position);while(a!==0&&!De(a));break}if(De(a))break;for(o=t.position;a!==0&&!_e(a);)a=t.input.charCodeAt(++t.position);l.push(t.input.slice(o,t.position))}a!==0&&Ot(t),He.call(to,r)?to[r](t,r,l):Bt(t,'unknown document directive "'+r+'"')}if(ce(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,ce(t,!0,-1)):i&&Z(t,"directives end mark is expected"),it(t,t.lineIndent-1,Et,!1,!0),ce(t,!0,-1),t.checkLineBreaks&&lc.test(t.input.slice(n,t.position))&&Bt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&vt(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,ce(t,!0,-1));return}if(t.position<t.length-1)Z(t,"end of the stream or a document separator is expected");else return}function ro(t,n){t=String(t),n=n||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`
|
|
89
|
+
`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new uc(t,n),r=t.indexOf("\0");for(r!==-1&&(o.position=r,Z(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;)wc(o);return o.documents}function _c(t,n,o){n!==null&&typeof n=="object"&&typeof o>"u"&&(o=n,n=null);var r=ro(t,o);if(typeof n!="function")return r;for(var l=0,i=r.length;l<i;l+=1)n(r[l])}function Ec(t,n){var o=ro(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 Bc=_c,vc=Ec,lo={loadAll:Bc,load:vc},io=Object.prototype.toString,ao=Object.prototype.hasOwnProperty,Rt=65279,Nc=9,gt=10,Cc=13,Vc=32,$c=33,Sc=34,Ut=35,Ac=37,Lc=38,Fc=39,Tc=42,so=44,Mc=45,Nt=58,Ic=61,Dc=62,jc=63,zc=64,co=91,uo=93,Oc=96,po=123,Pc=124,fo=125,ye={};ye[0]="\\0",ye[7]="\\a",ye[8]="\\b",ye[9]="\\t",ye[10]="\\n",ye[11]="\\v",ye[12]="\\f",ye[13]="\\r",ye[27]="\\e",ye[34]='\\"',ye[92]="\\\\",ye[133]="\\N",ye[160]="\\_",ye[8232]="\\L",ye[8233]="\\P";var Rc=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Uc=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function qc(t,n){var o,r,l,i,a,s,p;if(n===null)return{};for(o={},r=Object.keys(n),l=0,i=r.length;l<i;l+=1)a=r[l],s=String(n[a]),a.slice(0,2)==="!!"&&(a="tag:yaml.org,2002:"+a.slice(2)),p=t.compiledTypeMap.fallback[a],p&&ao.call(p.styleAliases,s)&&(s=p.styleAliases[s]),o[a]=s;return o}function Hc(t){var n,o,r;if(n=t.toString(16).toUpperCase(),t<=255)o="x",r=2;else if(t<=65535)o="u",r=4;else if(t<=4294967295)o="U",r=8;else throw new be("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+o+ue.repeat("0",r-n.length)+n}var Yc=1,ht=2;function Zc(t){this.schema=t.schema||jt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=ue.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=qc(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:Yc,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 mo(t,n){for(var o=ue.repeat(" ",n),r=0,l=-1,i="",a,s=t.length;r<s;)l=t.indexOf(`
|
|
90
90
|
`,r),l===-1?(a=t.slice(r),r=s):(a=t.slice(r,l+1),r=l+1),a.length&&a!==`
|
|
91
91
|
`&&(i+=o),i+=a;return i}function qt(t,n){return`
|
|
92
92
|
`+ue.repeat(" ",t.indent*n)}function Wc(t,n){var o,r,l;for(o=0,r=t.implicitTypes.length;o<r;o+=1)if(l=t.implicitTypes[o],l.resolve(n))return!0;return!1}function Ct(t){return t===Vc||t===Nc}function yt(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==Rt||65536<=t&&t<=1114111}function go(t){return yt(t)&&t!==Rt&&t!==Cc&&t!==gt}function ho(t,n,o){var r=go(t),l=r&&!Ct(t);return(o?r:r&&t!==so&&t!==co&&t!==uo&&t!==po&&t!==fo)&&t!==Ut&&!(n===Nt&&!l)||go(n)&&!Ct(n)&&t===Ut||n===Nt&&l}function Kc(t){return yt(t)&&t!==Rt&&!Ct(t)&&t!==Mc&&t!==jc&&t!==Nt&&t!==so&&t!==co&&t!==uo&&t!==po&&t!==fo&&t!==Ut&&t!==Lc&&t!==Tc&&t!==$c&&t!==Pc&&t!==Ic&&t!==Dc&&t!==Fc&&t!==Sc&&t!==Ac&&t!==zc&&t!==Oc}function Gc(t){return!Ct(t)&&t!==Nt}function xt(t,n){var o=t.charCodeAt(n),r;return o>=55296&&o<=56319&&n+1<t.length&&(r=t.charCodeAt(n+1),r>=56320&&r<=57343)?(o-55296)*1024+r-56320+65536:o}function yo(t){var n=/^\n* /;return n.test(t)}var xo=1,Ht=2,bo=3,ko=4,at=5;function Xc(t,n,o,r,l,i,a,s){var p,f=0,b=null,c=!1,m=!1,d=r!==-1,u=-1,g=Kc(xt(t,0))&&Gc(xt(t,t.length-1));if(n||a)for(p=0;p<t.length;f>=65536?p+=2:p++){if(f=xt(t,p),!yt(f))return at;g=g&&ho(f,b,s),b=f}else{for(p=0;p<t.length;f>=65536?p+=2:p++){if(f=xt(t,p),f===gt)c=!0,d&&(m=m||p-u-1>r&&t[u+1]!==" ",u=p);else if(!yt(f))return at;g=g&&ho(f,b,s),b=f}m=m||d&&p-u-1>r&&t[u+1]!==" "}return!c&&!m?g&&!a&&!l(t)?xo:i===ht?at:Ht:o>9&&yo(t)?at:a?i===ht?at:Ht:m?ko:bo}function Jc(t,n,o,r,l){t.dump=(function(){if(n.length===0)return t.quotingType===ht?'""':"''";if(!t.noCompatMode&&(Rc.indexOf(n)!==-1||Uc.test(n)))return t.quotingType===ht?'"'+n+'"':"'"+n+"'";var i=t.indent*Math.max(1,o),a=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-i),s=r||t.flowLevel>-1&&o>=t.flowLevel;function p(f){return Wc(t,f)}switch(Xc(n,s,t.indent,a,p,t.quotingType,t.forceQuotes&&!r,l)){case xo:return n;case Ht:return"'"+n.replace(/'/g,"''")+"'";case bo:return"|"+wo(n,t.indent)+_o(mo(n,i));case ko:return">"+wo(n,t.indent)+_o(mo(Qc(n,a),i));case at:return'"'+ed(n)+'"';default:throw new be("impossible error: invalid scalar style")}})()}function wo(t,n){var o=yo(t)?String(n):"",r=t[t.length-1]===`
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
`:"")+Eo(p,n),l=i}return r}function Eo(t,n){if(t===""||t[0]===" ")return t;for(var o=/ [^ ]/g,r,l=0,i,a=0,s=0,p="";r=o.exec(t);)s=r.index,s-l>n&&(i=a>l?a:s,p+=`
|
|
101
101
|
`+t.slice(l,i),l=i+1),a=s;return p+=`
|
|
102
102
|
`,t.length-l>n&&a>l?p+=t.slice(l,a)+`
|
|
103
|
-
`+t.slice(a+1):p+=t.slice(l),p.slice(1)}function ed(t){for(var n="",o=0,r,l=0;l<t.length;o>=65536?l+=2:l++)o=xt(t,l),r=ye[o],!r&&yt(o)?(n+=t[l],o>=65536&&(n+=t[l+1])):n+=r||Hc(o);return n}function td(t,n,o){var r="",l=t.tag,i,a,s;for(i=0,a=o.length;i<a;i+=1)s=o[i],t.replacer&&(s=t.replacer.call(o,String(i),s)),(Oe(t,n,s,!1,!1)||typeof s>"u"&&Oe(t,n,null,!1,!1))&&(r!==""&&(r+=","+(t.condenseFlow?"":" ")),r+=t.dump);t.tag=l,t.dump="["+r+"]"}function
|
|
104
|
-
`:""}var id=ld,ad={dump:id};function Zt(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 sd=me,cd=Nn,dd=Sn,ud=Mn,pd=In,fd=jt,No=lo.load,md=lo.loadAll,Wt=ad.dump,gd=be,hd={binary:Pn,float:Tn,map:$n,null:An,pairs:Un,set:qn,timestamp:zn,bool:Ln,int:Fn,merge:On,omap:Rn,seq:Vn,str:Cn},yd=Zt("safeLoad","load"),xd=Zt("safeLoadAll","loadAll"),bd=Zt("safeDump","dump"),kd={Type:sd,Schema:cd,FAILSAFE_SCHEMA:dd,JSON_SCHEMA:ud,CORE_SCHEMA:pd,DEFAULT_SCHEMA:fd,load:No,loadAll:md,dump:Wt,YAMLException:gd,types:hd,safeLoad:yd,safeLoadAll:xd,safeDump:bd};const wd={},_d={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 Ed(t,n){return e.openBlock(),e.createElementBlock("svg",_d,[...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 vd=X(wd,[["render",Ed]]),Bd={},Nd={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 Cd(t,n){return e.openBlock(),e.createElementBlock("svg",Nd,[...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 Vd=X(Bd,[["render",Cd]]),$d={},Sd={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 Ad(t,n){return e.openBlock(),e.createElementBlock("svg",Sd,[...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 Ld=X($d,[["render",Ad]]),Fd={},Td={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 Md(t,n){return e.openBlock(),e.createElementBlock("svg",Td,[...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 Id=X(Fd,[["render",Md]]),Dd={},jd={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 zd(t,n){return e.openBlock(),e.createElementBlock("svg",jd,[...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 Od=X(Dd,[["render",zd]]),Co=e.defineComponent({__name:"MonacoEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue","load"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(null);let i=null,a=null,s=!1;function p(){return new Promise((b,c)=>{if(a)return b(a);if(window.monaco)return a=window.monaco,b(a);const m=u=>{if([...document.styleSheets].some(h=>{var y;return(y=h==null?void 0:h.href)==null?void 0:y.includes(u)}))return;const g=document.createElement("link");g.rel="stylesheet",g.href=u,document.head.appendChild(g)},d=u=>new Promise((g,h)=>{const y=document.createElement("script");y.src=u,y.onload=()=>g(!0),y.onerror=h,document.body.appendChild(y)});m("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),d("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/loader.min.js").then(()=>{window.require.config({paths:{vs:"https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs"}}),window.require(["vs/editor/editor.main"],()=>{a=window.monaco,b(a)})}).catch(c)})}function f(){!l.value||!a||(i&&i.dispose(),i=a.editor.create(l.value,{value:o.modelValue||"",language:o.language||"yaml",theme:o.theme||"vs-light",automaticLayout:!0,minimap:{enabled:!1}}),i.onDidChangeModelContent(()=>{s||r("update:modelValue",i.getValue())}))}return e.watch(()=>o.modelValue,b=>{if(!i)return;const c=i.getValue();b!==c&&(s=!0,i.setValue(b||""),s=!1)}),e.watch(()=>o.language,b=>{i&&a&&a.editor.setModelLanguage(i.getModel(),b||"yaml")}),e.watch(()=>o.theme,b=>{i&&a&&a.editor.setTheme(b||"vs-light")}),e.onMounted(async()=>{await p(),f()}),e.onBeforeUnmount(()=>{i&&i.dispose()}),(b,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:l,class:"w-full h-full"},null,512))}}),Pd={class:"flex flex-col flex-1 overflow-hidden"},Rd={class:"flex justify-end gap-2"},Ud={class:"w-min-20 gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},qd=["href"],Hd={class:"flex flex-col flex-1 overflow-hidden"},Yd={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},Zd={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Wd=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:n}){const o=t,r=n,l=e.ref("");e.watch(()=>o.styleYaml,p=>{try{const f=p?Wt(p):"";!l.value&&f!==l.value&&(l.value=f)}catch{l.value=""}},{immediate:!0,deep:!0}),e.watch(l,async p=>{var f,b;try{const c=p?No(p):null;if((f=c==null?void 0:c.colorAttr)!=null&&f.length&&((b=o.styleYaml)==null?void 0:b.colorAttr)!==c.colorAttr){const m=await i(c.colorAttr);c.colors=m.reduce((u,g,h)=>({...u,[g.id.toString()]:a[h]}),{});const d=Wt(c);d!==l.value&&(l.value=d)}JSON.stringify(c)!==JSON.stringify(o.styleYaml)&&r("update:styleYaml",c)}catch{}});async function i(p){return(await fetch(`/api/gis-service/${o.token}/${p}`).then(b=>b.json())).rows}const a=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],s=async()=>{try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:l.value})}),r("update"),he.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(p){he.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(p)}};return(p,f)=>(e.openBlock(),e.createElementBlock("div",Pd,[e.createElementVNode("div",Rd,[e.createElementVNode("button",Ud,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+o.token+"/col"},"Атрибути",8,qd)]),e.createElementVNode("button",{onClick:s,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},[...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",Hd,[e.createElementVNode("div",Yd,[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",Zd,[e.createVNode(Co,{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=b=>l.value=b),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}});function st(t){if(t==null)return null;const n=Number(typeof t=="string"?t.trim():t);return Number.isFinite(n)?n:null}function ct(t){if(!t)return null;if(Array.isArray(t)&&t.length>=2){const n=st(t[0]),o=st(t[1]);return n!=null&&o!=null?[n,o]:null}if(typeof t=="object"){const n=t;if(Array.isArray(n.coordinates))return ct(n.coordinates);const o=n.lng??n.lon??n.long??n.longitude??n.x,r=n.lat??n.latitude??n.y;if(o!=null&&r!=null){const l=st(o),i=st(r);if(l!=null&&i!=null)return[l,i]}}if(typeof t=="string"&&t.includes(",")){const[n,o]=t.split(","),r=st(n),l=st(o);return r!=null&&l!=null?[r,l]:null}return null}const Vo=Symbol("MapContext");function Kd(t){const n=e.shallowRef(null),o=e.ref(!1);let r=!1;const l=[],i=()=>{r=!0,l.length&&l.forEach(m=>m())},a=()=>{const m=t.container;return typeof m=="string"?document.getElementById(m):(m==null?void 0:m.value)!==void 0?m.value:m},s=()=>r?Promise.resolve():new Promise(m=>l.push(m)),p=(m,d)=>{if(m==null)return d;const u=Number(typeof m=="string"?m.trim():m);return Number.isFinite(u)?u:d},f=async()=>{var C,M,j,v,N,x,V;if(typeof window>"u"||n.value)return;const m=a();if(!m)throw new Error("Map container not found");const d=t.settings||null,u=ct((C=d==null?void 0:d.map)==null?void 0:C.center)||[30,50],g=p((M=d==null?void 0:d.map)==null?void 0:M.zoom,7),h=p((j=d==null?void 0:d.map)==null?void 0:j.maxZoom,20),k={...{attributionControl:!1,center:u,zoom:g,maxZoom:h,minZoom:4},...t.mapOptions||{},container:m};k.maxZoom==null&&(k.maxZoom=h),n.value=new maplibregl.Map(k),(v=t.controls)!=null&&v.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(N=t.controls)!=null&&N.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(x=t.controls)!=null&&x.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(V=t.controls)!=null&&V.geolocate&&n.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),n.value.once("load",()=>{o.value=!0,i()})},b=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(f),e.onUnmounted(b);const c={map:n,ready:s,flyTo:m=>{var d;return(d=n.value)==null?void 0:d.flyTo(m)},fitBounds:(m,d)=>{var u;return(u=n.value)==null?void 0:u.fitBounds(m,d)},setCenter:m=>{var d;return(d=n.value)==null?void 0:d.setCenter(m)},setZoom:m=>{var d;return(d=n.value)==null?void 0:d.setZoom(m)},addControl:(m,d)=>{var u;return(u=n.value)==null?void 0:u.addControl(m,d)},removeControl:m=>{var d;return(d=n.value)==null?void 0:d.removeControl(m)},on:(m,d,u)=>{var g,h;return typeof d=="string"?((g=n.value)==null||g.on(m,d,u),()=>{var y;return(y=n.value)==null?void 0:y.off(m,d,u)}):((h=n.value)==null||h.on(m,d),()=>{var y;return(y=n.value)==null?void 0:y.off(m,d)})},off:(m,d,u)=>{var g,h;typeof d=="string"?(g=n.value)==null||g.off(m,d,u):(h=n.value)==null||h.off(m,d)},project:m=>{var d;return(d=n.value)==null?void 0:d.project(m)},unproject:m=>{var d;return(d=n.value)==null?void 0:d.unproject(m)}};return e.provide(Vo,c),c}function Ee(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(Vo);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const Gd=["Noto Sans Regular"],Xd=12,Jd="#0f172a",Qd="#fff",eu=14;function de(t,n){if(!t)return;for(const r of n)if(Object.prototype.hasOwnProperty.call(t,r)&&t[r]!==void 0)return t[r];const o=t.text;if(o&&typeof o=="object"){for(const r of n)if(Object.prototype.hasOwnProperty.call(o,r)&&o[r]!==void 0)return o[r]}}function tu(t){return t?Array.isArray(t)?t:[t]:Gd}function Kt(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 nu(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 ou(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 ru(t,n={}){if(!t)return[];const o=de(t,["text-field","textField","textFieldValue","labelText","label"]);if(!o)return[];const r=nu(o);if(!r)return[];const l=r,i=(n.geometry||t.type||"point").toString().toLowerCase(),a=de(t,["text-font","textFont"]),s=Kt(de(t,["text-size","textSize"]),Xd),p=de(t,["text-allow-overlap","textAllowOverlap"]),f=de(t,["text-minzoom","textMinZoom","textZoom","text-zoom"]),b=de(t,["text-maxzoom","textMaxZoom","maxzoom"]),c=de(t,["text-color","textColor"])||Jd,m=de(t,["text-halo-color","textHaloColor"])||Qd,d=de(t,["text-halo-width","textHaloWidth"]),u=de(t,["text-halo-blur","textHaloBlur"]),g=de(t,["text-offset","textOffset"]),h=de(t,["text-anchor","textAnchor"]),y=de(t,["text-justify","textJustify"]),k=de(t,["text-letter-spacing","textLetterSpacing"]),C=de(t,["text-transform","textTransform"]),M=de(t,["symbol-placement","symbolPlacement"]),j=de(t,["symbol-spacing","symbolSpacing"]),v=de(t,["text-rotation-alignment","textRotationAlignment"]),N=de(t,["text-pitch-alignment","textPitchAlignment"]),x=de(t,["text-opacity","textOpacity"]),V={"text-field":l,"text-font":tu(a),"text-size":s,"text-allow-overlap":p??!1};g&&(V["text-offset"]=g),i!=="line"&&(V["text-anchor"]=h??"center"),y&&(V["text-justify"]=y),k!==void 0&&(V["text-letter-spacing"]=k),C&&(V["text-transform"]=C),j!==void 0&&(V["symbol-spacing"]=j),i==="line"?(V["symbol-placement"]=M||"line",V["text-rotation-alignment"]=v||"map",V["text-pitch-alignment"]=N||"map"):(v&&(V["text-rotation-alignment"]=v),N&&(V["text-pitch-alignment"]=N),M&&(V["symbol-placement"]=M)),h&&i==="line"&&(V["text-anchor"]=h);const L={"text-color":c,"text-opacity":x??1};L["text-halo-color"]=m,d!==void 0&&(L["text-halo-width"]=d),u!==void 0&&(L["text-halo-blur"]=u);const I={type:"symbol",layout:V,paint:L},S=Kt(f,eu);if(I.minzoom=S,b!==void 0){const E=Kt(b,void 0);E!==void 0&&(I.maxzoom=E)}const A=ou(n.filter,n.excludeClusters);return A&&(I.filter=A),[I]}const Gt=new Map,Xt={};function Jt(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,"#94a3b8"]}return null}function lu(t){if(!t.icon||!t.colors)return null;const n=[],o=t.icon.split("+")[0];return Object.values(t.colors).forEach(r=>{n.push(`${o}+${r.replace("#","")}.png`)}),["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((r,[l,i],a)=>r.concat([l,n[a]]),[]),t.icon]}function dt(t,n){n&&(Array.isArray(n)?t.push(...n):t.push(n))}function iu(t,n){const o=(t==null?void 0:t.clusterZoom)??(t==null?void 0:t.pointZoom)??(t==null?void 0:t.iconZoom)??12,r=Number(o);if(!Number.isFinite(r))return null;const l=["get","point_count"],i=["has","point_count"],a=["!",i],f={type:"circle",maxzoom:r,filter:i,paint:{"circle-color":["step",l,"#3b82f6",10,"#fde047",100,"#fbbf24",1e3,"#fda4af",1e4,"#fb7185",1e6,"#a21caf"],"circle-radius":["step",l,16,10,22,100,28,1e3,34,1e4,40,1e6,48],"circle-stroke-color":"#fff","circle-stroke-width":1}},b={type:"symbol",maxzoom:r,filter:i,layout:{"text-field":["to-string",["coalesce",["get","point_count_abbreviated"],l]],"text-font":["Noto Sans Regular"],"text-size":12,"text-allow-overlap":!0},paint:{"text-color":"#fff","text-halo-color":"#172554","text-halo-width":1.25}},c={...n,filter:["all",a,n.filter||!0]};return[f,b,c]}function $o(t,n){const o=Jt(t);if(t.icon&&!t.iconZoom&&!t.clusterZoom)return;const r={type:"circle",maxzoom:n||t.iconZoom||22,paint:{"circle-stroke-color":(t==null?void 0:t.stroke)||"#fff","circle-opacity":t.opacity||1,"circle-color":o||t.color,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}},l=iu(t,r);return l||r}function au(t){const n=Jt(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 su(t){return{type:"line",paint:{"line-color":Jt(t)||t.color,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function cu(t){const n=lu(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 So(t,n={}){if(!t)return[];if(!du(t))return[];const o=[];t.icon&&dt(o,cu(t)),t.pointZoom&&dt(o,$o(t,t.pointZoom)),t.type==="polygon"?dt(o,au(t)):t.type==="line"?dt(o,su(t)):dt(o,$o(t));const l=n.sourceType!=="raster"?ru(t,{geometry:t.type||"point",filter:t.filter,excludeClusters:!!t.clusterZoom}):[];return dt(o,l),o.filter(Boolean)}function du(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 uu(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function Ao(t,n,o){const r=[n],l=n.split("+")[0];Object.values(o||{}).forEach(i=>{r.push(`${l}+${i.replace("#","")}.png`)});for(const i of r){if(t.getImage(i))continue;const a=await t.loadImage(`/api/gis-icon/${i}`);t.addImage(i,a.data)}}function ne(t,n,o){var S,A;if(!t)return Xt;if(!n)return Xt[t];const{map:r,ready:l=()=>Promise.resolve()}=Ee(o),i=t||((S=n.layer)==null?void 0:S.id),a=n.sourceId??t,s={...n};s.point&&(s.source=uu(s.point)),!s.layer&&((A=s.source)==null?void 0:A.type)==="raster"&&(s.layer={id:a,type:"raster",source:a}),s.layer&&!s.layer.source&&Object.assign(s.layer,{source:a});let p=!1,f=!1;const b=()=>{var E,z,T,F,B,$,D,R;if(!(f||!r.value)){if(s.source&&!r.value.getSource(a)&&r.value.addSource(a,s.source),!r.value.getLayer(i)){const q=s.beforeId===0?(z=(E=r.value.getStyle().layers)==null?void 0:E[0])==null?void 0:z.id:s.beforeId;(F=(T=s.layer)==null?void 0:T.style)!=null&&F.icon&&Ao(r.value,s.layer.style.icon,s.layer.style.colors);const U=s.style||((B=s.layer)==null?void 0:B.style);let te=[];if(U){const J={...U};($=s.layer)!=null&&$.filter&&(J.filter=s.layer.filter);const ee=((D=s.source)==null?void 0:D.type)||((R=s.layer)==null?void 0:R.type);te=So(J,{sourceType:ee})}if(!te.length){r.value.addLayer(s.layer,q);return}te.forEach((J,ee)=>{var ke;const se={...J,id:`${i}${ee||""}`,source:a};((ke=s.source)==null?void 0:ke.type)==="vector"&&(se["source-layer"]=a),r.value.addLayer(se,q)})}p=!0}};l().then(b);const c=(E,z)=>r.value?(r.value.on(E,i,z),()=>{var T;return(T=r.value)==null?void 0:T.off(E,i,z)}):()=>{},m=E=>{r.value&&r.value.getStyle().layers.filter(z=>z.source===i).forEach(z=>{r.value.setLayoutProperty(z.id,"visibility",E?"visible":"none")})},d=(E=!0)=>{r.value&&(r.value.getStyle().layers.filter(z=>z.source===i).forEach(z=>{r.value.removeLayer(z.id)}),f=!0,s.source&&E&&r.value.getSource(a)&&r.value.removeSource(a))},u=async E=>{var F,B;if(!r.value)return;E.icon&&Ao(r.value,E.icon,E.colors);const z=((F=s.source)==null?void 0:F.type)||((B=s.layer)==null?void 0:B.type),T=E?So(E,{sourceType:z}):[];d(!1),T.forEach(($,D)=>{const R={...$,id:`${i}${D}`,source:s.layer.source,"source-layer":s.layer.source};r.value.addLayer(R)})},g=E=>{r.value&&Object.entries(E).forEach(([z,T])=>{r.value.setPaintProperty(i,z,T)})},h=(E,z,T)=>{const F=r.value;if(F)switch(z){case"raster":F.setPaintProperty(E,"raster-opacity",T);break;case"fill":F.setPaintProperty(E,"fill-opacity",T);break;case"line":F.setPaintProperty(E,"line-opacity",T);break;case"circle":F.setPaintProperty(E,"circle-opacity",T);break;case"symbol":F.setPaintProperty(E,"icon-opacity",T),F.setPaintProperty(E,"text-opacity",T);break}},V={ids:{layerId:i,sourceId:a},isMounted:()=>{var E;return p&&!!((E=r.value)!=null&&E.getLayer(i))},setVisible:m,updatePaint:g,updateLayout:E=>{r.value&&Object.entries(E).forEach(([z,T])=>{r.value.setLayoutProperty(i,z,T)})},updateFilter:E=>{r.value&&r.value.setFilter(i,E)},setOpacity:E=>{var F;if(!r.value)return;const T=(((F=r.value.getStyle())==null?void 0:F.layers)||[]).filter(B=>B.source===a);if(!T.length){const B=r.value.getLayer(i);B&&h(i,B.type,E);return}T.forEach(B=>h(B.id,B.type,E))},setData:E=>{if(!r.value)return;const z=r.value.getSource(a);z&&"setData"in z&&z.setData(E)},setTiles:E=>{if(!r.value)return;const z=r.value.getSource(a);z&&"setTiles"in z&&z.setTiles(E)},setStyle:u,setFilter:E=>{var T,F;if(!r.value)return;const z=r.value.getSource(a);if(z&&"setTiles"in z&&((F=(T=s.source)==null?void 0:T.tiles)!=null&&F[0])){const B=s.source.tiles[0];z.setTiles([`${B}${B.includes("?")?"&":"?"}filter=${E}`])}},setFeatureState:(E,z)=>{r.value&&r.value.setFeatureState({source:a,...E},z)},removeFeatureState:(E,z)=>{r.value&&r.value.removeFeatureState({source:a,...E},z?{key:z}:void 0)},remove:d,card:s.card,popup:s.popup,opts:s,getSource:()=>{var E;return(E=r.value)==null?void 0:E.getSource(a)},getLayer:()=>{var E;return(E=r.value)==null?void 0:E.getLayer(i)},on:c};Gt.set(i,V);const L=()=>{Gt.get(i)===V&&Gt.delete(i)},I=V.remove;return V.remove=()=>{L(),I()},e.onBeforeUnmount(V.remove),Xt[t]=V,V}const pu={class:"flex flex-col flex-1 min-h-0"},fu={class:"flex flex-col flex-1 min-h-0"},mu=e.defineComponent({__name:"vs-tab-popup",props:{token:{},fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>l.value=u||[],{immediate:!0}),e.watch(l,u=>{const g=ne(o.token);g&&(g.popup=u),r("update:columns",u)});const i=e.ref("list"),a=e.ref(!1),s=e.ref([]),p=[{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(){s.value=l.value.map(u=>u.name||u.id),a.value=!0}function c(){var y;const u=[...l.value],g=((y=o.fields)==null?void 0:y.filter(k=>s.value.includes(k.name)))||[],h=nt(u,g,{selectedKeys:s.value,resolveKey:k=>qe(k)});l.value=h,a.value=!1,s.value=[]}function m(){a.value=!1,s.value=[]}function d(){let u=[];i.value==="all"?u=o.fields||[]:i.value==="none"?u=[]:u=l.value,u.filter(g=>!g.label).forEach(g=>g.label=g.ua),r("save",u)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",pu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти попап ")]),e.createElementVNode("div",fu,[i.value==="list"?(e.openBlock(),e.createBlock(Ke,{key:0,modelValue:l.value,"onUpdate:modelValue":g[0]||(g[0]=h=>l.value=h),"columns-scheme":p,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(et,{visible:a.value,"onUpdate:visible":g[1]||(g[1]=h=>a.value=h),selection:s.value,"onUpdate:selection":g[2]||(g[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:c,onCancel:m},null,8,["visible","selection","fields"])]))}}),gu={class:"flex flex-col flex-1 min-h-0"},hu={class:"flex justify-between mb-3 gap-2"},yu={class:"p-4 space-y-4 text-sm"},xu={class:"space-y-1"},bu={class:"space-y-1"},ku={class:"flex items-center gap-3"},wu={class:"flex justify-end gap-2 p-4 border-t"},_u=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>{l.value=u||[]}),e.watch(l,u=>{r("update:columns",u)});const i=e.ref(!1),a=e.ref({name:"",color:"#2E86DE"}),s=e.defineAsyncComponent(()=>import("@opengis/core").then(u=>u.VsModal)),p=[{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&&c(),i.value=u}function c(){a.value={name:"",color:"#2E86DE"}}function m(){var y,k;const u=(y=a.value.name)==null?void 0:y.trim();if(!u){he.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const g=((k=a.value.color)==null?void 0:k.trim())||"#2E86DE";if(l.value.some(C=>qe(C)===qe({name:u}))){he.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}l.value=[...l.value,{name:u,color:g}],c(),i.value=!1}function d(){r("save",l.value)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",gu,[e.createElementVNode("div",hu,[e.createElementVNode("button",{onClick:g[0]||(g[0]=h=>i.value=!0),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"}," Додати "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти легенду ")]),e.createVNode(Ke,{modelValue:l.value,"onUpdate:modelValue":g[1]||(g[1]=h=>l.value=h),"columns-scheme":p,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(s),{teleport:"#modal",visible:i.value,title:"Новий елемент легенди","onUpdate:visible":b},{footer:e.withCtx(()=>[e.createElementVNode("div",wu,[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:g[5]||(g[5]=h=>b(!1))}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:m}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",yu,[e.createElementVNode("div",xu,[g[6]||(g[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[2]||(g[2]=h=>a.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,a.value.name]])]),e.createElementVNode("div",bu,[g[7]||(g[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",ku,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[3]||(g[3]=h=>a.value.color=h),type:"color",class:"h-10 w-16 rounded border border-gray-300"},null,512),[[e.vModelText,a.value.color]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[4]||(g[4]=h=>a.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,a.value.color]])])])])]),_:1},8,["visible"])]))}}),Eu={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},vu=["onClick"],Bu=["aria-checked","value"],Nu={key:0},Cu=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{},showHtml:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,r=n,l=a=>r("update:modelValue",a),i=o.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(a,s)=>(e.openBlock(),e.createElementBlock("div",Eu,[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(i).length}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),p=>(e.openBlock(),e.createElementBlock("div",{key:p.value,onClick:f=>l(p.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===p.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===p.value,value:p.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[t.modelValue===p.value?(e.openBlock(),e.createElementBlock("span",Nu,[...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,Bu),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===p.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(p.label),3)],10,vu))),128))],2)]))}}),Vu={class:"flex flex-col flex-1 min-h-0"},$u={class:"flex flex-col flex-1 min-h-0"},Su=e.defineComponent({__name:"vs-tab-card",props:{fields:{},columns:{},viewMode:{},html:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,h=>l.value=h||[],{immediate:!0}),e.watch(l,h=>r("update:columns",h));const i=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,h=>{h&&h!==i.value&&(i.value=h)});const a=e.ref(o.html??"");e.watch(()=>o.html,h=>{typeof h=="string"&&h!==a.value&&(a.value=h)},{immediate:!0});const s=e.ref(!1),p=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 c(){p.value=i.value==="html"?[]:l.value.map(h=>h.name||h.id),s.value=!0}function m(){var C;const h=[...l.value],y=((C=o.fields)==null?void 0:C.filter(M=>p.value.includes(M.name)).map(M=>{const{type:j,format:v,...N}=M;return{...N,format:v??j??"text"}}))||[],k=nt(h,y,{selectedKeys:p.value,resolveKey:M=>qe(M)});if(l.value=k,i.value==="html"&&y.length){const M=y.map(N=>{const x=N.label??"",V=N.name??N.id??"";return`<dd>${x}</dd>
|
|
103
|
+
`+t.slice(a+1):p+=t.slice(l),p.slice(1)}function ed(t){for(var n="",o=0,r,l=0;l<t.length;o>=65536?l+=2:l++)o=xt(t,l),r=ye[o],!r&&yt(o)?(n+=t[l],o>=65536&&(n+=t[l+1])):n+=r||Hc(o);return n}function td(t,n,o){var r="",l=t.tag,i,a,s;for(i=0,a=o.length;i<a;i+=1)s=o[i],t.replacer&&(s=t.replacer.call(o,String(i),s)),(Oe(t,n,s,!1,!1)||typeof s>"u"&&Oe(t,n,null,!1,!1))&&(r!==""&&(r+=","+(t.condenseFlow?"":" ")),r+=t.dump);t.tag=l,t.dump="["+r+"]"}function Bo(t,n,o,r){var l="",i=t.tag,a,s,p;for(a=0,s=o.length;a<s;a+=1)p=o[a],t.replacer&&(p=t.replacer.call(o,String(a),p)),(Oe(t,n+1,p,!0,!0,!1,!0)||typeof p>"u"&&Oe(t,n+1,null,!0,!0,!1,!0))&&((!r||l!=="")&&(l+=qt(t,n)),t.dump&>===t.dump.charCodeAt(0)?l+="-":l+="- ",l+=t.dump);t.tag=i,t.dump=l||"[]"}function nd(t,n,o){var r="",l=t.tag,i=Object.keys(o),a,s,p,f,b;for(a=0,s=i.length;a<s;a+=1)b="",r!==""&&(b+=", "),t.condenseFlow&&(b+='"'),p=i[a],f=o[p],t.replacer&&(f=t.replacer.call(o,p,f)),Oe(t,n,p,!1,!1)&&(t.dump.length>1024&&(b+="? "),b+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Oe(t,n,f,!1,!1)&&(b+=t.dump,r+=b));t.tag=l,t.dump="{"+r+"}"}function od(t,n,o,r){var l="",i=t.tag,a=Object.keys(o),s,p,f,b,c,m;if(t.sortKeys===!0)a.sort();else if(typeof t.sortKeys=="function")a.sort(t.sortKeys);else if(t.sortKeys)throw new be("sortKeys must be a boolean or a function");for(s=0,p=a.length;s<p;s+=1)m="",(!r||l!=="")&&(m+=qt(t,n)),f=a[s],b=o[f],t.replacer&&(b=t.replacer.call(o,f,b)),Oe(t,n+1,f,!0,!0,!0)&&(c=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,c&&(t.dump&>===t.dump.charCodeAt(0)?m+="?":m+="? "),m+=t.dump,c&&(m+=qt(t,n)),Oe(t,n+1,b,!0,c)&&(t.dump&>===t.dump.charCodeAt(0)?m+=":":m+=": ",m+=t.dump,l+=m));t.tag=i,t.dump=l||"{}"}function vo(t,n,o){var r,l,i,a,s,p;for(l=o?t.explicitTypes:t.implicitTypes,i=0,a=l.length;i<a;i+=1)if(s=l[i],(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(p=t.styleMap[s.tag]||s.defaultStyle,io.call(s.represent)==="[object Function]")r=s.represent(n,p);else if(ao.call(s.represent,p))r=s.represent[p](n,p);else throw new be("!<"+s.tag+'> tag resolver accepts not "'+p+'" style');t.dump=r}return!0}return!1}function Oe(t,n,o,r,l,i,a){t.tag=null,t.dump=o,vo(t,o,!1)||vo(t,o,!0);var s=io.call(t.dump),p=r,f;r&&(r=t.flowLevel<0||t.flowLevel>n);var b=s==="[object Object]"||s==="[object Array]",c,m;if(b&&(c=t.duplicates.indexOf(o),m=c!==-1),(t.tag!==null&&t.tag!=="?"||m||t.indent!==2&&n>0)&&(l=!1),m&&t.usedDuplicates[c])t.dump="*ref_"+c;else{if(b&&m&&!t.usedDuplicates[c]&&(t.usedDuplicates[c]=!0),s==="[object Object]")r&&Object.keys(t.dump).length!==0?(od(t,n,t.dump,l),m&&(t.dump="&ref_"+c+t.dump)):(nd(t,n,t.dump),m&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object Array]")r&&t.dump.length!==0?(t.noArrayIndent&&!a&&n>0?Bo(t,n-1,t.dump,l):Bo(t,n,t.dump,l),m&&(t.dump="&ref_"+c+t.dump)):(td(t,n,t.dump),m&&(t.dump="&ref_"+c+" "+t.dump));else if(s==="[object String]")t.tag!=="?"&&Jc(t,t.dump,n,i,p);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!=="?"&&(f=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?f="!"+f:f.slice(0,18)==="tag:yaml.org,2002:"?f="!!"+f.slice(18):f="!<"+f+">",t.dump=f+" "+t.dump)}return!0}function rd(t,n){var o=[],r=[],l,i;for(Yt(t,o,r),l=0,i=r.length;l<i;l+=1)n.duplicates.push(o[r[l]]);n.usedDuplicates=new Array(i)}function Yt(t,n,o){var r,l,i;if(t!==null&&typeof t=="object")if(l=n.indexOf(t),l!==-1)o.indexOf(l)===-1&&o.push(l);else if(n.push(t),Array.isArray(t))for(l=0,i=t.length;l<i;l+=1)Yt(t[l],n,o);else for(r=Object.keys(t),l=0,i=r.length;l<i;l+=1)Yt(t[r[l]],n,o)}function ld(t,n){n=n||{};var o=new Zc(n);o.noRefs||rd(t,o);var r=t;return o.replacer&&(r=o.replacer.call({"":r},"",r)),Oe(o,0,r,!0,!0)?o.dump+`
|
|
104
|
+
`:""}var id=ld,ad={dump:id};function Zt(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 sd=me,cd=Nn,dd=Sn,ud=Mn,pd=In,fd=jt,No=lo.load,md=lo.loadAll,Wt=ad.dump,gd=be,hd={binary:Pn,float:Tn,map:$n,null:An,pairs:Un,set:qn,timestamp:zn,bool:Ln,int:Fn,merge:On,omap:Rn,seq:Vn,str:Cn},yd=Zt("safeLoad","load"),xd=Zt("safeLoadAll","loadAll"),bd=Zt("safeDump","dump"),kd={Type:sd,Schema:cd,FAILSAFE_SCHEMA:dd,JSON_SCHEMA:ud,CORE_SCHEMA:pd,DEFAULT_SCHEMA:fd,load:No,loadAll:md,dump:Wt,YAMLException:gd,types:hd,safeLoad:yd,safeLoadAll:xd,safeDump:bd};const wd={},_d={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 Ed(t,n){return e.openBlock(),e.createElementBlock("svg",_d,[...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 Bd=X(wd,[["render",Ed]]),vd={},Nd={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 Cd(t,n){return e.openBlock(),e.createElementBlock("svg",Nd,[...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 Vd=X(vd,[["render",Cd]]),$d={},Sd={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 Ad(t,n){return e.openBlock(),e.createElementBlock("svg",Sd,[...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 Ld=X($d,[["render",Ad]]),Fd={},Td={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 Md(t,n){return e.openBlock(),e.createElementBlock("svg",Td,[...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 Id=X(Fd,[["render",Md]]),Dd={},jd={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 zd(t,n){return e.openBlock(),e.createElementBlock("svg",jd,[...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 Od=X(Dd,[["render",zd]]),Co=e.defineComponent({__name:"MonacoEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue","load"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(null);let i=null,a=null,s=!1;function p(){return new Promise((b,c)=>{if(a)return b(a);if(window.monaco)return a=window.monaco,b(a);const m=u=>{if([...document.styleSheets].some(h=>{var y;return(y=h==null?void 0:h.href)==null?void 0:y.includes(u)}))return;const g=document.createElement("link");g.rel="stylesheet",g.href=u,document.head.appendChild(g)},d=u=>new Promise((g,h)=>{const y=document.createElement("script");y.src=u,y.onload=()=>g(!0),y.onerror=h,document.body.appendChild(y)});m("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),d("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/loader.min.js").then(()=>{window.require.config({paths:{vs:"https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs"}}),window.require(["vs/editor/editor.main"],()=>{a=window.monaco,b(a)})}).catch(c)})}function f(){!l.value||!a||(i&&i.dispose(),i=a.editor.create(l.value,{value:o.modelValue||"",language:o.language||"yaml",theme:o.theme||"vs-light",automaticLayout:!0,minimap:{enabled:!1}}),i.onDidChangeModelContent(()=>{s||r("update:modelValue",i.getValue())}))}return e.watch(()=>o.modelValue,b=>{if(!i)return;const c=i.getValue();b!==c&&(s=!0,i.setValue(b||""),s=!1)}),e.watch(()=>o.language,b=>{i&&a&&a.editor.setModelLanguage(i.getModel(),b||"yaml")}),e.watch(()=>o.theme,b=>{i&&a&&a.editor.setTheme(b||"vs-light")}),e.onMounted(async()=>{await p(),f()}),e.onBeforeUnmount(()=>{i&&i.dispose()}),(b,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:l,class:"w-full h-full"},null,512))}}),Pd={class:"flex flex-col flex-1 overflow-hidden"},Rd={class:"flex justify-end gap-2"},Ud={class:"w-min-20 gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},qd=["href"],Hd={class:"flex flex-col flex-1 overflow-hidden"},Yd={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},Zd={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Wd=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:n}){const o=t,r=n,l=e.ref("");e.watch(()=>o.styleYaml,p=>{try{const f=p?Wt(p):"";!l.value&&f!==l.value&&(l.value=f)}catch{l.value=""}},{immediate:!0,deep:!0}),e.watch(l,async p=>{var f,b;try{const c=p?No(p):null;if((f=c==null?void 0:c.colorAttr)!=null&&f.length&&((b=o.styleYaml)==null?void 0:b.colorAttr)!==c.colorAttr){const m=await i(c.colorAttr);c.colors=m.reduce((u,g,h)=>({...u,[g.id.toString()]:a[h]}),{});const d=Wt(c);d!==l.value&&(l.value=d)}JSON.stringify(c)!==JSON.stringify(o.styleYaml)&&r("update:styleYaml",c)}catch{}});async function i(p){return(await fetch(`/api/gis-service/${o.token}/${p}`).then(b=>b.json())).rows}const a=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],s=async()=>{try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:l.value})}),r("update"),he.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(p){he.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(p)}};return(p,f)=>(e.openBlock(),e.createElementBlock("div",Pd,[e.createElementVNode("div",Rd,[e.createElementVNode("button",Ud,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+o.token+"/col"},"Атрибути",8,qd)]),e.createElementVNode("button",{onClick:s,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},[...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",Hd,[e.createElementVNode("div",Yd,[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",Zd,[e.createVNode(Co,{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=b=>l.value=b),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}});function st(t){if(t==null)return null;const n=Number(typeof t=="string"?t.trim():t);return Number.isFinite(n)?n:null}function ct(t){if(!t)return null;if(Array.isArray(t)&&t.length>=2){const n=st(t[0]),o=st(t[1]);return n!=null&&o!=null?[n,o]:null}if(typeof t=="object"){const n=t;if(Array.isArray(n.coordinates))return ct(n.coordinates);const o=n.lng??n.lon??n.long??n.longitude??n.x,r=n.lat??n.latitude??n.y;if(o!=null&&r!=null){const l=st(o),i=st(r);if(l!=null&&i!=null)return[l,i]}}if(typeof t=="string"&&t.includes(",")){const[n,o]=t.split(","),r=st(n),l=st(o);return r!=null&&l!=null?[r,l]:null}return null}const Vo=Symbol("MapContext");function Kd(t){const n=e.shallowRef(null),o=e.ref(!1);let r=!1;const l=[],i=()=>{r=!0,l.length&&l.forEach(m=>m())},a=()=>{const m=t.container;return typeof m=="string"?document.getElementById(m):(m==null?void 0:m.value)!==void 0?m.value:m},s=()=>r?Promise.resolve():new Promise(m=>l.push(m)),p=(m,d)=>{if(m==null)return d;const u=Number(typeof m=="string"?m.trim():m);return Number.isFinite(u)?u:d},f=async()=>{var C,M,j,B,N,x,V;if(typeof window>"u"||n.value)return;const m=a();if(!m)throw new Error("Map container not found");const d=t.settings||null,u=ct((C=d==null?void 0:d.map)==null?void 0:C.center)||[30,50],g=p((M=d==null?void 0:d.map)==null?void 0:M.zoom,7),h=p((j=d==null?void 0:d.map)==null?void 0:j.maxZoom,20),k={...{attributionControl:!1,center:u,zoom:g,maxZoom:h,minZoom:4},...t.mapOptions||{},container:m};k.maxZoom==null&&(k.maxZoom=h),n.value=new maplibregl.Map(k),(B=t.controls)!=null&&B.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(N=t.controls)!=null&&N.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(x=t.controls)!=null&&x.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(V=t.controls)!=null&&V.geolocate&&n.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),n.value.once("load",()=>{o.value=!0,i()})},b=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(f),e.onUnmounted(b);const c={map:n,ready:s,flyTo:m=>{var d;return(d=n.value)==null?void 0:d.flyTo(m)},fitBounds:(m,d)=>{var u;return(u=n.value)==null?void 0:u.fitBounds(m,d)},setCenter:m=>{var d;return(d=n.value)==null?void 0:d.setCenter(m)},setZoom:m=>{var d;return(d=n.value)==null?void 0:d.setZoom(m)},addControl:(m,d)=>{var u;return(u=n.value)==null?void 0:u.addControl(m,d)},removeControl:m=>{var d;return(d=n.value)==null?void 0:d.removeControl(m)},on:(m,d,u)=>{var g,h;return typeof d=="string"?((g=n.value)==null||g.on(m,d,u),()=>{var y;return(y=n.value)==null?void 0:y.off(m,d,u)}):((h=n.value)==null||h.on(m,d),()=>{var y;return(y=n.value)==null?void 0:y.off(m,d)})},off:(m,d,u)=>{var g,h;typeof d=="string"?(g=n.value)==null||g.off(m,d,u):(h=n.value)==null||h.off(m,d)},project:m=>{var d;return(d=n.value)==null?void 0:d.project(m)},unproject:m=>{var d;return(d=n.value)==null?void 0:d.unproject(m)}};return e.provide(Vo,c),c}function Ee(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(Vo);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const Gd=["Noto Sans Regular"],Xd=12,Jd="#0f172a",Qd="#fff",eu=14;function de(t,n){if(!t)return;for(const r of n)if(Object.prototype.hasOwnProperty.call(t,r)&&t[r]!==void 0)return t[r];const o=t.text;if(o&&typeof o=="object"){for(const r of n)if(Object.prototype.hasOwnProperty.call(o,r)&&o[r]!==void 0)return o[r]}}function tu(t){return t?Array.isArray(t)?t:[t]:Gd}function Kt(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 nu(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 ou(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 ru(t,n={}){if(!t)return[];const o=de(t,["text-field","textField","textFieldValue","labelText","label"]);if(!o)return[];const r=nu(o);if(!r)return[];const l=r,i=(n.geometry||t.type||"point").toString().toLowerCase(),a=de(t,["text-font","textFont"]),s=Kt(de(t,["text-size","textSize"]),Xd),p=de(t,["text-allow-overlap","textAllowOverlap"]),f=de(t,["text-minzoom","textMinZoom","textZoom","text-zoom"]),b=de(t,["text-maxzoom","textMaxZoom","maxzoom"]),c=de(t,["text-color","textColor"])||Jd,m=de(t,["text-halo-color","textHaloColor"])||Qd,d=de(t,["text-halo-width","textHaloWidth"]),u=de(t,["text-halo-blur","textHaloBlur"]),g=de(t,["text-offset","textOffset"]),h=de(t,["text-anchor","textAnchor"]),y=de(t,["text-justify","textJustify"]),k=de(t,["text-letter-spacing","textLetterSpacing"]),C=de(t,["text-transform","textTransform"]),M=de(t,["symbol-placement","symbolPlacement"]),j=de(t,["symbol-spacing","symbolSpacing"]),B=de(t,["text-rotation-alignment","textRotationAlignment"]),N=de(t,["text-pitch-alignment","textPitchAlignment"]),x=de(t,["text-opacity","textOpacity"]),V={"text-field":l,"text-font":tu(a),"text-size":s,"text-allow-overlap":p??!1};g&&(V["text-offset"]=g),i!=="line"&&(V["text-anchor"]=h??"center"),y&&(V["text-justify"]=y),k!==void 0&&(V["text-letter-spacing"]=k),C&&(V["text-transform"]=C),j!==void 0&&(V["symbol-spacing"]=j),i==="line"?(V["symbol-placement"]=M||"line",V["text-rotation-alignment"]=B||"map",V["text-pitch-alignment"]=N||"map"):(B&&(V["text-rotation-alignment"]=B),N&&(V["text-pitch-alignment"]=N),M&&(V["symbol-placement"]=M)),h&&i==="line"&&(V["text-anchor"]=h);const L={"text-color":c,"text-opacity":x??1};L["text-halo-color"]=m,d!==void 0&&(L["text-halo-width"]=d),u!==void 0&&(L["text-halo-blur"]=u);const I={type:"symbol",layout:V,paint:L},S=Kt(f,eu);if(I.minzoom=S,b!==void 0){const E=Kt(b,void 0);E!==void 0&&(I.maxzoom=E)}const A=ou(n.filter,n.excludeClusters);return A&&(I.filter=A),[I]}const Gt=new Map,Xt={};function Jt(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,"#94a3b8"]}return null}function lu(t){if(!t.icon||!t.colors)return null;const n=[],o=t.icon.split("+")[0];return Object.values(t.colors).forEach(r=>{n.push(`${o}+${r.replace("#","")}.png`)}),["match",["get",t.colorAttr],...Object.entries(t.colors).reduce((r,[l,i],a)=>r.concat([l,n[a]]),[]),t.icon]}function dt(t,n){n&&(Array.isArray(n)?t.push(...n):t.push(n))}function iu(t,n){const o=(t==null?void 0:t.clusterZoom)??(t==null?void 0:t.pointZoom)??(t==null?void 0:t.iconZoom)??12,r=Number(o);if(!Number.isFinite(r))return null;const l=["get","point_count"],i=["has","point_count"],a=["!",i],f={type:"circle",maxzoom:r,filter:i,paint:{"circle-color":["step",l,"#3b82f6",10,"#fde047",100,"#fbbf24",1e3,"#fda4af",1e4,"#fb7185",1e6,"#a21caf"],"circle-radius":["step",l,16,10,22,100,28,1e3,34,1e4,40,1e6,48],"circle-stroke-color":"#fff","circle-stroke-width":1}},b={type:"symbol",maxzoom:r,filter:i,layout:{"text-field":["to-string",["coalesce",["get","point_count_abbreviated"],l]],"text-font":["Noto Sans Regular"],"text-size":12,"text-allow-overlap":!0},paint:{"text-color":"#fff","text-halo-color":"#172554","text-halo-width":1.25}},c={...n,filter:["all",a,n.filter||!0]};return[f,b,c]}function $o(t,n){const o=Jt(t);if(t.icon&&!t.iconZoom&&!t.clusterZoom)return;const r={type:"circle",maxzoom:n||t.iconZoom||22,paint:{"circle-stroke-color":(t==null?void 0:t.stroke)||"#fff","circle-opacity":t.opacity||1,"circle-color":o||t.color,"circle-stroke-width":t.width||1,"circle-radius":t.radius||5}},l=iu(t,r);return l||r}function au(t){const n=Jt(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 su(t){return{type:"line",paint:{"line-color":Jt(t)||t.color,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function cu(t){const n=lu(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 So(t,n={}){if(!t)return[];if(!du(t))return[];const o=[];t.icon&&dt(o,cu(t)),t.pointZoom&&dt(o,$o(t,t.pointZoom)),t.type==="polygon"?dt(o,au(t)):t.type==="line"?dt(o,su(t)):dt(o,$o(t));const l=n.sourceType!=="raster"?ru(t,{geometry:t.type||"point",filter:t.filter,excludeClusters:!!t.clusterZoom}):[];return dt(o,l),o.filter(Boolean)}function du(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 uu(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function Ao(t,n,o){const r=[n],l=n.split("+")[0];Object.values(o||{}).forEach(i=>{r.push(`${l}+${i.replace("#","")}.png`)});for(const i of r){if(t.getImage(i))continue;const a=await t.loadImage(`/api/gis-icon/${i}`);t.addImage(i,a.data)}}function ne(t,n,o){var S,A;if(!t)return Xt;if(!n)return Xt[t];const{map:r,ready:l=()=>Promise.resolve()}=Ee(o),i=t||((S=n.layer)==null?void 0:S.id),a=n.sourceId??t,s={...n};s.point&&(s.source=uu(s.point)),!s.layer&&((A=s.source)==null?void 0:A.type)==="raster"&&(s.layer={id:a,type:"raster",source:a}),s.layer&&!s.layer.source&&Object.assign(s.layer,{source:a});let p=!1,f=!1;const b=()=>{var E,z,T,F,v,$,D,R;if(!(f||!r.value)){if(s.source&&!r.value.getSource(a)&&r.value.addSource(a,s.source),!r.value.getLayer(i)){const q=s.beforeId===0?(z=(E=r.value.getStyle().layers)==null?void 0:E[0])==null?void 0:z.id:s.beforeId;(F=(T=s.layer)==null?void 0:T.style)!=null&&F.icon&&Ao(r.value,s.layer.style.icon,s.layer.style.colors);const U=s.style||((v=s.layer)==null?void 0:v.style);let te=[];if(U){const J={...U};($=s.layer)!=null&&$.filter&&(J.filter=s.layer.filter);const ee=((D=s.source)==null?void 0:D.type)||((R=s.layer)==null?void 0:R.type);te=So(J,{sourceType:ee})}if(!te.length){r.value.addLayer(s.layer,q);return}te.forEach((J,ee)=>{var ke;const se={...J,id:`${i}${ee||""}`,source:a};((ke=s.source)==null?void 0:ke.type)==="vector"&&(se["source-layer"]=a),r.value.addLayer(se,q)})}p=!0}};l().then(b);const c=(E,z)=>r.value?(r.value.on(E,i,z),()=>{var T;return(T=r.value)==null?void 0:T.off(E,i,z)}):()=>{},m=E=>{r.value&&r.value.getStyle().layers.filter(z=>z.source===i).forEach(z=>{r.value.setLayoutProperty(z.id,"visibility",E?"visible":"none")})},d=(E=!0)=>{r.value&&(r.value.getStyle().layers.filter(z=>z.source===i).forEach(z=>{r.value.removeLayer(z.id)}),f=!0,s.source&&E&&r.value.getSource(a)&&r.value.removeSource(a))},u=async E=>{var F,v;if(!r.value)return;E.icon&&Ao(r.value,E.icon,E.colors);const z=((F=s.source)==null?void 0:F.type)||((v=s.layer)==null?void 0:v.type),T=E?So(E,{sourceType:z}):[];d(!1),T.forEach(($,D)=>{const R={...$,id:`${i}${D}`,source:s.layer.source,"source-layer":s.layer.source};r.value.addLayer(R)})},g=E=>{r.value&&Object.entries(E).forEach(([z,T])=>{r.value.setPaintProperty(i,z,T)})},h=(E,z,T)=>{const F=r.value;if(F)switch(z){case"raster":F.setPaintProperty(E,"raster-opacity",T);break;case"fill":F.setPaintProperty(E,"fill-opacity",T);break;case"line":F.setPaintProperty(E,"line-opacity",T);break;case"circle":F.setPaintProperty(E,"circle-opacity",T);break;case"symbol":F.setPaintProperty(E,"icon-opacity",T),F.setPaintProperty(E,"text-opacity",T);break}},V={ids:{layerId:i,sourceId:a},isMounted:()=>{var E;return p&&!!((E=r.value)!=null&&E.getLayer(i))},setVisible:m,updatePaint:g,updateLayout:E=>{r.value&&Object.entries(E).forEach(([z,T])=>{r.value.setLayoutProperty(i,z,T)})},updateFilter:E=>{r.value&&r.value.setFilter(i,E)},setOpacity:E=>{var F;if(!r.value)return;const T=(((F=r.value.getStyle())==null?void 0:F.layers)||[]).filter(v=>v.source===a);if(!T.length){const v=r.value.getLayer(i);v&&h(i,v.type,E);return}T.forEach(v=>h(v.id,v.type,E))},setData:E=>{if(!r.value)return;const z=r.value.getSource(a);z&&"setData"in z&&z.setData(E)},setTiles:E=>{if(!r.value)return;const z=r.value.getSource(a);z&&"setTiles"in z&&z.setTiles(E)},setStyle:u,setFilter:E=>{var T,F;if(!r.value)return;const z=r.value.getSource(a);if(z&&"setTiles"in z&&((F=(T=s.source)==null?void 0:T.tiles)!=null&&F[0])){const v=s.source.tiles[0];z.setTiles([`${v}${v.includes("?")?"&":"?"}filter=${E}`])}},setFeatureState:(E,z)=>{r.value&&r.value.setFeatureState({source:a,...E},z)},removeFeatureState:(E,z)=>{r.value&&r.value.removeFeatureState({source:a,...E},z?{key:z}:void 0)},remove:d,card:s.card,popup:s.popup,opts:s,getSource:()=>{var E;return(E=r.value)==null?void 0:E.getSource(a)},getLayer:()=>{var E;return(E=r.value)==null?void 0:E.getLayer(i)},on:c};Gt.set(i,V);const L=()=>{Gt.get(i)===V&&Gt.delete(i)},I=V.remove;return V.remove=()=>{L(),I()},e.onBeforeUnmount(V.remove),Xt[t]=V,V}const pu={class:"flex flex-col flex-1 min-h-0"},fu={class:"flex flex-col flex-1 min-h-0"},mu=e.defineComponent({__name:"vs-tab-popup",props:{token:{},fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>l.value=u||[],{immediate:!0}),e.watch(l,u=>{const g=ne(o.token);g&&(g.popup=u),r("update:columns",u)});const i=e.ref("list"),a=e.ref(!1),s=e.ref([]),p=[{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(){s.value=l.value.map(u=>u.name||u.id),a.value=!0}function c(){var y;const u=[...l.value],g=((y=o.fields)==null?void 0:y.filter(k=>s.value.includes(k.name)))||[],h=nt(u,g,{selectedKeys:s.value,resolveKey:k=>qe(k)});l.value=h,a.value=!1,s.value=[]}function m(){a.value=!1,s.value=[]}function d(){let u=[];i.value==="all"?u=o.fields||[]:i.value==="none"?u=[]:u=l.value,u.filter(g=>!g.label).forEach(g=>g.label=g.ua),r("save",u)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",pu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти попап ")]),e.createElementVNode("div",fu,[i.value==="list"?(e.openBlock(),e.createBlock(Ke,{key:0,modelValue:l.value,"onUpdate:modelValue":g[0]||(g[0]=h=>l.value=h),"columns-scheme":p,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(et,{visible:a.value,"onUpdate:visible":g[1]||(g[1]=h=>a.value=h),selection:s.value,"onUpdate:selection":g[2]||(g[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:c,onCancel:m},null,8,["visible","selection","fields"])]))}}),gu={class:"flex flex-col flex-1 min-h-0"},hu={class:"flex justify-between mb-3 gap-2"},yu={class:"p-4 space-y-4 text-sm"},xu={class:"space-y-1"},bu={class:"space-y-1"},ku={class:"flex items-center gap-3"},wu={class:"flex justify-end gap-2 p-4 border-t"},_u=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>{l.value=u||[]}),e.watch(l,u=>{r("update:columns",u)});const i=e.ref(!1),a=e.ref({name:"",color:"#2E86DE"}),s=e.defineAsyncComponent(()=>import("@opengis/core").then(u=>u.VsModal)),p=[{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&&c(),i.value=u}function c(){a.value={name:"",color:"#2E86DE"}}function m(){var y,k;const u=(y=a.value.name)==null?void 0:y.trim();if(!u){he.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const g=((k=a.value.color)==null?void 0:k.trim())||"#2E86DE";if(l.value.some(C=>qe(C)===qe({name:u}))){he.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}l.value=[...l.value,{name:u,color:g}],c(),i.value=!1}function d(){r("save",l.value)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",gu,[e.createElementVNode("div",hu,[e.createElementVNode("button",{onClick:g[0]||(g[0]=h=>i.value=!0),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"}," Додати "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти легенду ")]),e.createVNode(Ke,{modelValue:l.value,"onUpdate:modelValue":g[1]||(g[1]=h=>l.value=h),"columns-scheme":p,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(s),{teleport:"#modal",visible:i.value,title:"Новий елемент легенди","onUpdate:visible":b},{footer:e.withCtx(()=>[e.createElementVNode("div",wu,[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:g[5]||(g[5]=h=>b(!1))}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:m}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",yu,[e.createElementVNode("div",xu,[g[6]||(g[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[2]||(g[2]=h=>a.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,a.value.name]])]),e.createElementVNode("div",bu,[g[7]||(g[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",ku,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[3]||(g[3]=h=>a.value.color=h),type:"color",class:"h-10 w-16 rounded border border-gray-300"},null,512),[[e.vModelText,a.value.color]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[4]||(g[4]=h=>a.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,a.value.color]])])])])]),_:1},8,["visible"])]))}}),Eu={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},Bu=["onClick"],vu=["aria-checked","value"],Nu={key:0},Cu=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{},showHtml:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,r=n,l=a=>r("update:modelValue",a),i=o.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(a,s)=>(e.openBlock(),e.createElementBlock("div",Eu,[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(i).length}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),p=>(e.openBlock(),e.createElementBlock("div",{key:p.value,onClick:f=>l(p.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===p.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===p.value,value:p.value,class:"aspect-square rounded-full border border-primary h-4 w-4 flex items-center justify-center text-sky-500"},[t.modelValue===p.value?(e.openBlock(),e.createElementBlock("span",Nu,[...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,vu),e.createElementVNode("label",{class:e.normalizeClass(["text-xs font-medium cursor-pointer",t.modelValue===p.value?"text-gray-700":"text-gray-600"])},e.toDisplayString(p.label),3)],10,Bu))),128))],2)]))}}),Vu={class:"flex flex-col flex-1 min-h-0"},$u={class:"flex flex-col flex-1 min-h-0"},Su=e.defineComponent({__name:"vs-tab-card",props:{fields:{},columns:{},viewMode:{},html:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,l=e.ref(o.columns||[]);e.watch(()=>o.columns,h=>l.value=h||[],{immediate:!0}),e.watch(l,h=>r("update:columns",h));const i=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,h=>{h&&h!==i.value&&(i.value=h)});const a=e.ref(o.html??"");e.watch(()=>o.html,h=>{typeof h=="string"&&h!==a.value&&(a.value=h)},{immediate:!0});const s=e.ref(!1),p=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 c(){p.value=i.value==="html"?[]:l.value.map(h=>h.name||h.id),s.value=!0}function m(){var C;const h=[...l.value],y=((C=o.fields)==null?void 0:C.filter(M=>p.value.includes(M.name)).map(M=>{const{type:j,format:B,...N}=M;return{...N,format:B??j??"text"}}))||[],k=nt(h,y,{selectedKeys:p.value,resolveKey:M=>qe(M)});if(l.value=k,i.value==="html"&&y.length){const M=y.map(N=>{const x=N.label??"",V=N.name??N.id??"";return`<dd>${x}</dd>
|
|
105
105
|
<dt>{{ ${V} }}</dt>`}).join(`
|
|
106
|
-
`),
|
|
107
|
-
${M}`:M}s.value=!1,p.value=[]}function d(){s.value=!1,p.value=[]}function u(){const h=i.value==="html"?"html":"list",y={card_mode:h};h==="html"?y.html=a.value:h==="list"&&(y.list=l.value),r("save","card",y)}const g=[{value:"all",label:"Всі"},{value:"list",label:"Список"},{value:"none",label:"Жодне"},{value:"html",label:"HTML"}];return(h,y)=>(e.openBlock(),e.createElementBlock("div",Vu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:c,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"}," Імпорт "),e.createElementVNode("button",{onClick:u,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"}," Зберегти ")]),e.createVNode(Cu,{modelValue:i.value,"onUpdate:modelValue":y[0]||(y[0]=k=>i.value=k),options:g},null,8,["modelValue"]),e.createElementVNode("div",$u,[i.value==="list"?(e.openBlock(),e.createBlock(Ke,{key:0,modelValue:l.value,"onUpdate:modelValue":y[1]||(y[1]=k=>l.value=k),"columns-scheme":f,"form-scheme":b,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):i.value==="html"?(e.openBlock(),e.createBlock(Co,{key:1,modelValue:a.value,"onUpdate:modelValue":y[2]||(y[2]=k=>a.value=k),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(et,{visible:s.value,"onUpdate:visible":y[3]||(y[3]=k=>s.value=k),selection:p.value,"onUpdate:selection":y[4]||(y[4]=k=>p.value=k),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:m,onCancel:d},null,8,["visible","selection","fields"])]))}}),Au={class:"flex flex-col flex-1 min-h-0"},Lu=e.defineComponent({__name:"vs-tab-filter",props:{fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n;console.log(o.columns);const l=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>l.value=u||[],{immediate:!0}),e.watch(l,u=>r("update:columns",u),{deep:!0,immediate:!0});const i=e.ref("list"),a=e.ref(!1),s=e.ref([]),p=[{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(){s.value=l.value.map(u=>u.name||u.id),a.value=!0}function c(){var y;const u=[...l.value],g=((y=o.fields)==null?void 0:y.filter(k=>s.value.includes(k.name)))||[],h=nt(u,g,{selectedKeys:s.value,resolveKey:k=>qe(k)});l.value=h,a.value=!1,s.value=[]}function m(){a.value=!1,s.value=[]}function d(){let u=[];i.value==="all"?u=o.fields||[]:i.value==="none"?u=[]:u=l.value,r("save",u)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",Au,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти фільтр ")]),i.value==="list"?(e.openBlock(),e.createBlock(Ke,{key:0,modelValue:l.value,"onUpdate:modelValue":g[0]||(g[0]=h=>l.value=h),"columns-scheme":p,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(et,{visible:a.value,"onUpdate:visible":g[1]||(g[1]=h=>a.value=h),selection:s.value,"onUpdate:selection":g[2]||(g[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:c,onCancel:m},null,8,["visible","selection","fields"])]))}}),Lo=e.defineComponent({__name:"MapView",setup(t,{expose:n}){var f,b;const o=e.ref(null),r=e.ref(null),l=((b=(f=e.getCurrentInstance())==null?void 0:f.appContext.config.globalProperties)==null?void 0:b.$settings)||null,i=Kd({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},doubleClickZoom:!1},controls:{navigation:!0,scale:!0},settings:l});async function a(){var m;await e.nextTick();const c=(m=i.map)==null?void 0:m.value;c!=null&&c.resize&&c.resize()}function s(){typeof ResizeObserver>"u"||r.value||!o.value||(r.value=new ResizeObserver(()=>{a()}),r.value.observe(o.value))}function p(){var c;(c=r.value)==null||c.disconnect(),r.value=null}return e.onMounted(()=>{a(),s(),window.addEventListener("resize",a)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",a),p()}),n({ctx:i}),(c,m)=>(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))}}),Fu=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleSpec:{}},setup(t,{expose:n}){var u,g,h,y,k;const{map:o,flyTo:r,setZoom:l}=Ee(),i=((g=(u=e.getCurrentInstance())==null?void 0:u.appContext.config.globalProperties)==null?void 0:g.$settings)||null,a=t,s=a.id;String(a.id);const p=`${location.origin}/api/vtile/${a.id}/ua/{z}/{x}/{y}.vmt?all=1`,f=ne(s,{source:{type:"vector",tiles:[p],minzoom:0,maxzoom:14},popup:a.layer.popup,layer:{style:(h=a.layer)==null?void 0:h.style}});n({layerHandle:f}),r({center:a.layer.center||((y=i==null?void 0:i.map)==null?void 0:y.center)||[30,50],animate:!1}),l(((k=i==null?void 0:i.map)==null?void 0:k.zoom)||11),ne("point",{point:a.layer.center,style:{color:"orange"}});let b=null;function c(){if(!(f!=null&&f.setTiles))return;const C=p.includes("?")?"&":"?",M=`${p}${C}_=${Date.now()}`;f.setTiles([M])}function m(){b&&clearTimeout(b),b=setTimeout(()=>{b=null,d().catch(C=>console.error("Failed to update map layer",C))},300)}async function d(){o.value&&a.styleSpec&&(c(),f.setStyle(a.styleSpec))}return e.watch(()=>a.styleSpec,m,{deep:!0}),e.onBeforeUnmount(()=>{f.remove()}),(C,M)=>null}}),bt=e.ref(null);function Tu(){bt.value=null}function Mu(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(bt,a=>{a!==o()&&n.value&&(n.value=!1)});function r(){bt.value=o(),n.value=!0}function l(){bt.value===o()&&(bt.value=null),n.value=!1}function i(){n.value?l():r()}return{isOpen:n,open:r,close:l,toggle:i}}const Iu={class:"map-filter"},Du={class:"map-filter__header"},ju={class:"map-filter__title"},zu={"aria-hidden":"true"},Qt="#map-filter-popover-host",Vt=X(e.defineComponent({__name:"MapFilterPopover",props:{count:{},layer:{},catalogAnchor:{},disabled:{type:Boolean}},setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/filter")),o=t,r=e.computed(()=>{var D;return((D=o.layer)==null?void 0:D.id)??""}),l=e.computed(()=>`filter-popover-${r.value}`),{isOpen:i,close:a,toggle:s}=Mu(l),p=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),f=e.ref(null),b=e.ref(null);let c=null;const m=e.ref({}),d=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),u=e.computed(()=>i.value),g=e.computed(()=>{var D;return Array.isArray((D=o.layer)==null?void 0:D.filters)?o.layer.filters:[]}),h=e.computed(()=>g.value.length>0),y=e.computed(()=>{var D;return((D=o.layer)==null?void 0:D.name)??""}),k=e.computed(()=>g.value),C=e.ref(null),M=e.computed(()=>g.value.length),j=e.computed(()=>M.value<=2),v=e.computed(()=>j.value?"body":typeof window>"u"||C.value?Qt:"body"),N=e.computed(()=>!u.value||!j.value?{}:{position:"absolute",top:`${p.top}px`,left:`${p.left}px`,transform:p.transform,zIndex:1e3,width:"280px"});function x(){a()}function V(D,R,q=8){const U=window.scrollY+q,te=window.scrollY+window.innerHeight-q;let J=D;return J+R>te&&(J=te-R),J<U&&(J=U),J}function L(){var se,ke,ve;if(!f.value||!j.value)return;const D=f.value.getBoundingClientRect(),R=window.scrollX+8,q=window.scrollX+window.innerWidth-8,U=((se=b.value)==null?void 0:se.offsetWidth)||280,te=((ke=b.value)==null?void 0:ke.offsetHeight)||0;let J=0,ee=0;if((ve=o.catalogAnchor)!=null&&ve.value){const Ve=o.catalogAnchor.value.getBoundingClientRect(),we=Ve.top+window.scrollY;J=V(we,te,8);const $e=Ve.right+window.scrollX+12,Fe=q-U,je=R;ee=Math.min(Math.max($e,je),Math.max(je,Fe))}else{const Ve=D.bottom+window.scrollY+8;J=V(Ve,te,8);let we=D.left+window.scrollX;we<R&&(we=R),we+U>q&&(we=Math.max(R,q-U)),ee=we}p.left=ee,p.top=J,p.transform="none"}function I(){j.value||$(),s(),i.value&&j.value&&e.nextTick(()=>{L(),F(),requestAnimationFrame(()=>L())})}function S(){o.disabled||I()}e.watch(u,D=>{D&&j.value?e.nextTick(()=>{L(),F(),requestAnimationFrame(()=>L())}):(B(),j.value||$())}),e.watch(k,()=>{!u.value||!j.value||e.nextTick(()=>L())},{deep:!0}),e.watch(j,D=>{u.value&&(D?e.nextTick(()=>{L(),F()}):(B(),$()))}),e.watch(()=>o.disabled,D=>{D&&(a(),m.value={})});function A(){!u.value||!j.value||L()}function E(D){const R=r.value;if(!R)return;const q=ne(R);if(!(q!=null&&q.setFilter))return;m.value=D;const U=Object.entries(D).map(([te,J])=>`${te}=${J}`).join("|");q.setFilter(U)}function z(D){if(!o.disabled)return;const R=D.currentTarget;if(!R)return;const q=R.getBoundingClientRect();d.left=q.left+q.width/2+window.scrollX,d.top=q.bottom+8+window.scrollY,d.visible=!0}function T(){d.visible=!1}e.onMounted(()=>{$(),window.addEventListener("resize",A),window.addEventListener("scroll",A,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",A),window.removeEventListener("scroll",A,!0),B()});function F(){B(),!(!b.value||!j.value)&&(c=new ResizeObserver(()=>{!u.value||!j.value||L()}),c.observe(b.value))}function B(){c&&(c.disconnect(),c=null)}function $(){typeof window>"u"||typeof document>"u"||(C.value=document.querySelector(Qt))}return(D,R)=>h.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(S,["prevent","stop"]),onMouseenter:z,onMouseleave:T,onFocus:z,onBlur:T},[...R[2]||(R[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:v.value},[e.createElementVNode("div",{class:e.normalizeClass(["vst-popover__content inline-block z-50 rounded-[16px] bg-white text-sm text-gray-500 rounded-md shadow-lg bottom mapLayer-filter__popover",{"mapLayer-filter__popover--static":!j.value}]),style:e.normalizeStyle(N.value),ref_key:"panel",ref:b,onClick:R[1]||(R[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Iu,[e.createElementVNode("div",Du,[e.createElementVNode("h3",ju,e.toDisplayString(y.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:x},[e.createElementVNode("span",zu,[e.createVNode(e.unref(ur),{class:"h-4 w-4"})]),R[3]||(R[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:k.value,value:m.value,limit:10,onChange:R[0]||(R[0]=q=>E(q.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${d.top}px`,left:`${d.left}px`})},e.toDisplayString(d.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-d7fc7def"]]),Ou={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"},en=X(e.defineComponent({__name:"MapFilterWidget",props:{filters:{},title:{},layerId:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",Ou,[e.createVNode(Vt,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])]))}}),[["__scopeId","data-v-ad9fa0d0"]]),Pu={class:"flex flex-row gap-x-3 z-10 relative widget"},Ru=["onClick"],Uu=["src","alt"],tn=e.defineComponent({__name:"BaseMaps",setup(t){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=e.ref("gki"),r=ne("base",{source:{type:"raster",tiles:[n[o.value].url]},beforeId:0});function l(i){if(o.value=i,!n[i].url)return r.setVisible(!1);r.setVisible(!0),r.setTiles([n[i].url])}return(i,a)=>(e.openBlock(),e.createElementBlock("div",Pu,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,(s,p)=>e.createElementVNode("div",{key:p,onClick:f=>l(p)},[e.createElementVNode("div",{class:e.normalizeClass(["w-14 h-14 flex items-center justify-center bg-gray-200 rounded-xl shadow-2xs cursor-pointer transition-all border-4",o.value===p?"border-blue-500":"border-gray-200"])},[s.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:s.preview,alt:s.title,class:"object-cover rounded-lg w-12 h-12"},null,8,Uu)):e.createCommentVNode("",!0)],2)],8,Ru)),64))]))}}),qu={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%"}},Hu={class:"flex flex-col gap-1 p-5"},Yu={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},nn=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:r}=Ee(),l=e.ref([]);let i=null;function a(b){return b?b.map((c,m)=>{var g;const d=(c==null?void 0:c.name)||(c==null?void 0:c.label)||(c==null?void 0:c.title)||(c==null?void 0:c.id)||`Layer ${m+1}`,u=(c==null?void 0:c.color)||(c==null?void 0:c.fill)||((g=c==null?void 0:c.paint)==null?void 0:g.color)||"#3388ff";return{id:`${d}-${m}`,label:d,color:u}}):[]}function s(b){return b!=null&&b.layers?b.layers.filter(c=>{const m=c.paint||{};return m["fill-color"]||m["line-color"]||m["circle-color"]}).map((c,m)=>{var g;const d=c.paint||{},u=d["fill-color"]||d["line-color"]||d["circle-color"]||"#3388ff";return{id:c.id||`layer-${m}`,label:((g=c.metadata)==null?void 0:g.title)||c.id||`Layer ${m+1}`,color:u}}):[]}async function p(){var m;await r();const b=o.value;if(!b)return;const c=(m=b.getStyle)==null?void 0:m.call(b);l.value=s(c)}function f(){const b=o.value;if(!b)return;i==null||i();const c=()=>p();b.on("styledata",c),i=()=>b.off("styledata",c)}return e.watch(()=>n.items,async b=>{b!=null?(l.value=a(b),i==null||i()):(await r(),f(),p())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await r(),f(),p())}),e.onBeforeUnmount(()=>{i==null||i(),i=null}),(b,c)=>l.value.length?(e.openBlock(),e.createElementBlock("div",qu,[e.createElementVNode("div",Hu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.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:m.color})},null,4),e.createElementVNode("span",Yu,[e.createElementVNode("span",null,e.toDisplayString(m.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function Zu(){const{map:t,ready:n}=Ee(),o=e.ref(null),r=e.ref(null),l=e.ref(null),i=e.ref(null);let a=[];function s(){a.forEach(d=>d()),a=[]}const p=d=>{const u=(d==null?void 0:d.properties)||{};return!!(u.cluster||u.point_count||u.point_count_abbreviated)},f=d=>{var y,k;o.value=[d.point.x,d.point.y];const u=t.value.queryRenderedFeatures(d.point);if(!(u!=null&&u.length)){b();return}const g=u.find(C=>!p(C));if(!g){b();return}const h=ne(g.source)||ne((y=g.layer)==null?void 0:y.id);h!=null&&h.popup&&(r.value=((k=h.popup)==null?void 0:k.fields)||h.popup,i.value=g.properties)},b=()=>{r.value=null,i.value=null,o.value=null};async function c(){await n(),t.value&&(s(),t.value.on("mousemove",f),t.value.on("mouseleave",b))}function m(){s(),r.value=null,i.value=null,o.value=null}return n().then(c),{popupCoords:o,popupFields:r,popupValues:i,disable:m,title:l}}const Wu={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},Ku={class:"space-y-1.5"},Gu={class:"font-bold text-slate-700"},Xu={class:"text-slate-700"},Fo=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:r,disable:l}=Zu(),i=e.ref(null),a=e.ref({left:"-9999px",top:"-9999px"}),s=e.computed(()=>{const u=o.value||[],g=r.value||{};return u.filter(h=>(h==null?void 0:h.meta)!=="title").map((h,y)=>m(h,g,y)).filter(h=>h.label)}),p=e.computed(()=>{const u=o.value||[],g=r.value||{},h=u.find(y=>(y==null?void 0:y.meta)==="title");return h?m(h,g,0):null}),f=e.computed(()=>{var g;const u=s.value;return(g=p.value)!=null&&g.value?[{...p.value,key:`${p.value.key}-title`,label:"Назва"},...u]:u}),b=new Intl.NumberFormat("uk-UA",{maximumFractionDigits:2});function c(u,g){if(g==null||g==="")return g;if((u==null?void 0:u.type)==="number"){const h=typeof g=="number"?g:Number(g);if(Number.isFinite(h))return b.format(h)}return g}function m(u,g,h){const y=u.name||u.label||u.title||`field-${h}`,k=u.label||u.title||u.name||y,C=u.name?g[u.name]:void 0,j=(u.name?g[`${u.name}_text`]:void 0)??C??u.value??null;return{key:y,label:k,value:c(u,j)}}function d(){if(!f.value.length||!n.value||!i.value){a.value={left:"-9999px",top:"-9999px"};return}const[u,g]=n.value;a.value={left:`${u+18}px`,top:`${g+18}px`}}return e.watch([n,f],()=>{e.nextTick(()=>d())}),e.onBeforeUnmount(()=>{l()}),(u,g)=>f.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:i,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(a.value)},[e.createElementVNode("div",Wu,[e.createElementVNode("div",Ku,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.key,class:"flex flex-col"},[e.createElementVNode("span",Gu,e.toDisplayString(h.label),1),e.createElementVNode("span",Xu,e.toDisplayString(h.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function Ju(){const{map:t,ready:n}=Ee(),o=Ne.useRoute(),r=Ne.useRouter(),l=e.ref(null),i=e.ref(null),a=e.ref(null),s=e.ref(!1),p=e.ref([]),f=e.ref(0),b=e.computed(()=>p.value.length),c=e.computed(()=>s.value||!!l.value||!!a.value);let m=null,d=!1;function u(){l.value=null,i.value=null,a.value=null,s.value=!1,p.value=[],f.value=0}function g(){if(m){try{m()}catch{}m=null}}async function h(){await n();const S=t.value;S&&(g(),u(),S.on("click",y),m=()=>S.off("click",y),I(x()))}function y(S){const A=t.value;if(!A)return;const E=(A.queryRenderedFeatures(S.point)||[]).filter(z=>{var T;return(T=z==null?void 0:z.properties)==null?void 0:T.id});if(!E.length){u(),L(null);return}p.value=E,f.value=0,k(f.value)}function k(S){const A=p.value[S];if(!A)return;f.value=S;const E=ne(A.source);j(A,E==null?void 0:E.card)}function C(){f.value>=p.value.length-1||k(f.value+1)}function M(){f.value<=0||k(f.value-1)}async function j(S,A){var z,T,F,B;if(!((z=S==null?void 0:S.properties)!=null&&z.id))return;const E=new URLSearchParams;E.set("layer",S.source),E.set("id",String((T=S.properties)==null?void 0:T.id)),s.value=!0,a.value=null,l.value=null,i.value=S||null;try{const $=await fetch(`/api/map-format?${E.toString()}`);if(!$.ok)throw new Error(`Failed (${$.status})`);const D=await $.json(),R=Array.isArray(D.columns)?D.columns:[];l.value={rows:D.rows||{},fields:A||[],columns:R,html:D.html||null},d||L(i.value);const q=(F=D.rows)==null?void 0:F.geom;if(q){const U=typeof q=="string"?JSON.parse(q):q;U&&(i.value={...i.value,geometry:U,properties:{...((B=i.value)==null?void 0:B.properties)||{},geom:U,geom_4326:U}})}}catch{a.value="Не вдалося завантажити дані",l.value=null,he.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити дані"})}finally{s.value=!1}}function v(){u(),L(null)}function N(){g(),u()}n().then(h),e.onBeforeUnmount(()=>N());function x(){const S=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof S!="string"?null:S.trim()||null}function V(S){var T,F;const A=(S==null?void 0:S.source)??((T=S==null?void 0:S.layer)==null?void 0:T.id),E=(F=S==null?void 0:S.properties)==null?void 0:F.id;return!A||E===void 0||E===null?null:`${A},${E}`.trim()||null}function L(S){const A=V(S),E=x();if(A===E)return;const z={...o.query};A?z.info=A:delete z.info,r.push({query:z}).catch(()=>{})}async function I(S){if(!S){u();return}if(S===V(i.value))return;const[A,E]=S.split(","),z=A==null?void 0:A.trim(),T=E==null?void 0:E.trim();if(!z||!T){u(),L(null);return}d=!0;try{const F={source:z,properties:{id:T}};p.value=[F],f.value=0;const B=ne(z);await j(F,B==null?void 0:B.card)}finally{d=!1}}return e.watch(()=>x(),S=>{S!==V(i.value)&&(d=!0,I(S).finally(()=>{d=!1}))}),{card:l,cardFeature:i,cardError:a,cardLoading:s,isOpen:c,close:v,next:C,prev:M,count:b,index:f}}function Qu(){const{map:t,ready:n}=Ee(),o=e.ref([]),r=e.ref(0),l=e.ref(0),i=e.ref(!1),a=e.ref(null),s=e.ref({}),p=e.ref(null),f=e.ref([]),b=e.computed(()=>o.value[l.value]||null),c=e.computed(()=>o.value.length>0);let m=null;const d=()=>{m==null||m.remove(),m=null},u=x=>x?x.type==="FeatureCollection"?x:x.type==="Feature"?{type:"FeatureCollection",features:[x]}:x.type&&Array.isArray(x.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:x,properties:{}}]}:Array.isArray(x.features)?{type:"FeatureCollection",features:x.features}:x.geometry?u(x.geometry):null:null,g=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),h=x=>Number(x.toFixed(5)),y=async x=>{if(await n(),!t.value)return;const V=u(x);V&&(d(),m=ne("feature-highlight",{source:{type:"geojson",data:V},style:g()},t))},k=async(x,V,L)=>{var A,E;const[I,S]=[h(x),h(V)];p.value={x:I,y:S},f.value=L,i.value=!0,a.value=null,o.value=[],s.value={},l.value=0;try{const z=L.map(async D=>{const R=`/api/map-info-point?x=${I}&y=${S}&layers=${D}`,q=await fetch(R);if(!q.ok)return null;const U=await q.json();if(!U.count)return null;const J=await(await fetch(`${R}&index=0`)).json();return{layerId:D,data:J,count:U.count}}),F=(await Promise.all(z)).filter(Boolean);if(F.length===0){r.value=0;return}o.value=F.map(D=>D.data);const[B]=o.value;r.value=F.reduce((D,R)=>D+(R.count||0),0),s.value[0]=B;const $=((A=B==null?void 0:B.data)==null?void 0:A.geom_4326)??((E=B==null?void 0:B.data)==null?void 0:E.geom);await y($)}catch(z){a.value=z.message}finally{i.value=!1}},C=async x=>{if(!p.value||!f.value.length)return;if(s.value[x]){o.value[x]=s.value[x];return}const{x:V,y:L}=p.value,I=f.value.join(","),S=`/api/map-info-point?x=${V}&y=${L}&index=${x}&layers=${I}`;try{i.value=!0;const A=await fetch(S);if(!A.ok)throw new Error("Failed to fetch feature by index");const E=await A.json();o.value[x]=E,s.value[x]=E}catch(A){a.value=A.message}finally{i.value=!1}},M=async()=>{l.value<r.value-1&&(l.value+=1,s.value[l.value]||await C(l.value))},j=async()=>{l.value>0&&(l.value-=1,s.value[l.value]||await C(l.value))},v=()=>{o.value=[],r.value=0,l.value=0,s.value={},p.value=null,f.value=[],d()};e.watch(l,async()=>{var V,L;const x=b.value;if(x){const I=((V=x==null?void 0:x.data)==null?void 0:V.geom_4326)??((L=x==null?void 0:x.data)==null?void 0:L.geom);await y(I)}});let N=null;return e.onMounted(async()=>{await n(),t.value&&(N=async x=>{const{lng:V,lat:L}=x.lngLat,I=ne(),A=Object.entries(I).map(([E,z])=>{var T,F,B,$;return{id:E,service:((T=z==null?void 0:z.opts)==null?void 0:T.service)??((B=(F=z==null?void 0:z.opts)==null?void 0:F.source)==null?void 0:B.service)??null,count:(($=z==null?void 0:z.opts)==null?void 0:$.count)??null,visible:(()=>{var D;try{return((D=t.value)==null?void 0:D.getLayer(E))?t.value.getLayoutProperty(E,"visibility")!=="none":!0}catch{return!0}})()}}).filter(E=>E.service==="ogc"&&E.visible).map(E=>E.id);A.length>0&&await k(V,L,A)},t.value.on("dblclick",N))}),e.onBeforeUnmount(()=>{t.value&&N&&t.value.off("dblclick",N),d()}),{features:o,count:r,index:l,current:b,loading:i,error:a,active:c,next:M,prev:j,close:v}}const To=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,r=n;function l(f){const b=f.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(b)return b;const c=Array.from(f).map(m=>m.charCodeAt(0).toString(16)).join("").slice(0,8);return c?`layer-${c}`:"layer-temp"}const i=e.computed(()=>{var f;return((f=o.id)==null?void 0:f.trim())||l(o.title)}),a=e.computed(()=>o.buttonText||"Показати шар");function s(){return{id:i.value,title:o.title,url:o.url}}function p(){r("activate",s())}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:p},[e.renderSlot(f.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.value),1)])]))}}),Ce=e.ref([]);function ep(t,n){return typeof t!="string"?"":t.includes("{{")?t.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*}}/g,(o,r)=>{const l=String(r||"").trim();if(!l)return"";const i=n[l];return i!=null?String(i):""}):t}function on(t){return t==null?"":String(t).trim()}function rn(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function tp(t){return t?typeof(t==null?void 0:t.value)<"u"?t.value:t:null}function np(t){var o;if(!(t!=null&&t.getStyle))return;const n=((o=t.getStyle())==null?void 0:o.layers)||[];for(let r=0;r<n.length;r+=1){const l=n[r];if(!(!l||typeof l.id!="string")&&l.type&&l.type!=="background"&&l.type!=="raster")return l.id}}function Mo(t){function n(i,a={},s,p){var k,C;const f=on(i==null?void 0:i.id),b=((k=i==null?void 0:i.title)==null?void 0:k.trim())||f,c=((C=i==null?void 0:i.url)==null?void 0:C.trim())||"";if(!f||!c)return;const m=ep(c,a);if(!m)return;const d=p??t;if(!d)return;const u=tp(d);if(!u)return;const g=Ce.value.findIndex(M=>M.id===f);g!==-1&&(rn(Ce.value[g]),Ce.value.splice(g,1));let h=null;const y=i.beforeId??np(u);try{h=ne(f,{source:{type:"raster",tiles:[m],tileSize:i.tileSize??256,minzoom:i.minzoom??0,maxzoom:i.maxzoom??19},layer:{id:f,type:"raster",source:f,paint:{"raster-opacity":i.opacity??.85}},beforeId:y},d)}catch(M){const j=(M==null?void 0:M.message)??"";if(!(typeof j=="string"&&j.includes("Map provider")))throw M;return}Ce.value=[...Ce.value,{id:f,title:b,originalUrl:c,resolvedUrl:m,owner:s??null,handle:h??null}]}function o(i,a){const s=on(i);if(!s)return;const p=Ce.value.findIndex(b=>b.id===s&&(!a||b.owner===a));if(p===-1)return;const[f]=Ce.value.splice(p,1);rn(f)}function r(i){if(!Ce.value.length)return;const a=[];Ce.value.forEach(s=>{(i?s.owner===i:!0)?rn(s):a.push(s)}),Ce.value=a}function l(i,a){const s=on(i);return s?Ce.value.some(p=>p.id===s&&(!a||p.owner===a)):!1}return{temporaryLayers:Ce,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:r,isTemporaryLayerActive:l}}const op={key:0,class:"card absolute top-4 right-11 z-30 w-[400px] max-h-[80%] overflow-hidden rounded-2xl border border-slate-200 bg-white/95 shadow-2xl backdrop-blur-md flex flex-col"},rp={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},lp={class:"min-w-0 flex-1"},ip={class:"text-base font-semibold text-slate-900 truncate"},ap={key:0,class:"flex gap-1 mt-1"},sp=["disabled"],cp=["disabled"],dp={key:1,class:"flex gap-1 mt-1"},up=["disabled"],pp=["disabled"],fp={class:"flex-1 overflow-y-auto px-4 py-3 space-y-4 text-sm text-slate-700"},mp={key:0,class:"text-center text-xs text-slate-500"},gp={key:1,class:"text-center text-xs text-red-500"},hp={key:0,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},yp={class:"divide-y divide-gray-100 py-[5px]"},xp={class:"text-gray-900 font-normal"},bp={key:1,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},kp=["innerHTML"],wp=["innerHTML"],_p={key:2,class:"space-y-3 border-t border-slate-200 pt-3"},Ep={key:3,class:"border-t border-slate-100 px-4 py-2 text-right text-xs text-slate-500"},vp={class:"text-xs tracking-[0.02em] leading-none"},Bp={key:4,class:"space-y-3 border-t border-slate-200 pt-3"},Np={class:"space-y-1"},Cp={class:"flex items-center cursor-pointer gap-2 flex-1"},Vp=["checked","onChange"],$p={class:"text-[13px] text-gray-600"},Sp={key:0,class:"text-right text-xs text-gray-400 truncate max-w-[40%]"},Ap={key:5,class:"text-center text-xs text-slate-400"},Lp="map:temporary-layer-request",Io=X(e.defineComponent({__name:"MapCardWidget",props:{mapId:{}},setup(t){var Ft,Go;const n=t,o=Ju(),r=Qu(),l=e.computed(()=>r.active.value),i=e.computed(()=>l.value||o.isOpen.value),a=e.computed(()=>l.value?r.loading.value:o.cardLoading.value),s=e.computed(()=>l.value?r.error.value:o.cardError.value),p=e.computed(()=>{var w,_;return l.value?((w=r.current.value)==null?void 0:w.html)||null:((_=o.card.value)==null?void 0:_.html)||null}),f=Ee(),b=Ne.useRoute(),{activateTemporaryLayer:c,deactivateTemporaryLayer:m,clearTemporaryLayers:d,isTemporaryLayerActive:u}=Mo(f.map);function g(w){window.dispatchEvent(new CustomEvent(Lp,{detail:w}))}const h=e.computed(()=>{var w;return((w=o.cardFeature.value)==null?void 0:w.source)??null}),y=e.computed(()=>h.value?`map-card:${h.value}`:"map-card"),k=e.computed(()=>{var W,Q;const w=o.cardFeature.value,_=(w==null?void 0:w.source)||((W=w==null?void 0:w.layer)==null?void 0:W.id),P=((Q=w==null?void 0:w.properties)==null?void 0:Q.id)??(w==null?void 0:w.id);return _&&P!=null?`${_}:${P}`:null}),C=e.ref(null),M=e.ref(null),j=e.ref(0),v=new Map;function N(){if(typeof window>"u")return null;const _=(window.location.pathname||"").match(/\/maps?\/([^/]+)/i);return _&&_[1]?_[1]:null}const x=e.computed(()=>{const w=typeof n.mapId=="string"?n.mapId.trim():"";if(w.length)return w;const _=typeof b.params.slug=="string"?b.params.slug.trim():"";if(_.length)return _;const P=typeof b.query.slug=="string"?b.query.slug.trim():"";return P.length?P:N()}),V=e.ref(null),L=e.ref(null),I=new Map;function S(w){const _=w.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(_)return _;const P=Array.from(w).map(W=>W.charCodeAt(0).toString(16)).join("").slice(0,8);return P?`layer-${P}`:`layer-${Math.random().toString(36).slice(2,8)}`}function A(w){if(typeof w!="string")return"";const _=w.trim();if(!_)return"";if(/^https?:\/\//i.test(_))return _;if(_.startsWith("//"))return typeof window>"u"?`https:${_}`:`${window.location.protocol}${_}`;const P=typeof window<"u"?window.location.origin:"";return _.startsWith("/")?P?`${P}${_}`:_:P?`${P}/${_}`:_}function E(w){const _={},P=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let W;for(;(W=P.exec(w))!==null;){const Q=W[1],oe=W[2]??W[3]??W[4]??"";Q&&(_[Q]=oe)}return _}function z(w,_){for(const P of _)if(w[P]!=null&&String(w[P]).trim().length)return String(w[P]).trim();return""}function T(w){if(!(w!=null&&w.length))return;const _=Number(w);return Number.isFinite(_)?_:void 0}function F(w){if(typeof w!="string"||!w.length)return[];const _=[],P=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let W=0,Q;const oe=new Set,le=ae=>{let ge=ae,Me=2;for(;oe.has(ge);)ge=`${ae}-${Me}`,Me+=1;return oe.add(ge),ge};for(;(Q=P.exec(w))!==null;){const[ae,ge="",Me=""]=Q,xe=Q.index;if(xe>W){const Qo=w.slice(W,xe);Qo.trim().length&&_.push({type:"html",content:Qo})}const Le=E(ge),Be=z(Le,["title"])||"Тимчасовий шар",We=A(z(Le,["url"]));if(!We){_.push({type:"html",content:ae}),W=xe+ae.length;continue}const kt=z(Le,["id"]),sn=z(Le,["button-text","buttonText","show","show-label","showLabel"]),m0=T(z(Le,["tile-size","tileSize"])),g0=T(z(Le,["minzoom","minZoom"])),h0=T(z(Le,["maxzoom","maxZoom"])),y0=T(z(Le,["opacity"])),x0=kt||S(`${Be}-${We}`)||S(Be),Xo=le(x0||`layer-${_.length+1}`),cn=Me.trim(),Jo=/<[^>]+>/.test(cn),b0=Jo?cn:null,dn=Jo?null:cn,k0=sn&&sn.trim().length?sn.trim():dn&&dn.trim().length?dn.trim():void 0;_.push({type:"layer",spec:{id:Xo,title:Be,url:We,tileSize:m0,minzoom:g0,maxzoom:h0,opacity:y0},componentProps:{title:Be,url:We,id:Xo,buttonText:k0},slotText:b0}),W=xe+ae.length}if(W<w.length){const ae=w.slice(W);ae.trim().length&&_.push({type:"html",content:ae})}return!_.length&&w.trim().length&&_.push({type:"html",content:w}),_}function B(w){if(!w)return null;const _=typeof w.id=="string"?w.id.trim():"",P=typeof w.title=="string"?w.title.trim():"",W=A(typeof w.url=="string"?w.url:"");return!_||!W?null:{id:_,title:P||_,url:W,tileSize:w.tileSize,minzoom:w.minzoom,maxzoom:w.maxzoom,opacity:w.opacity}}const $=e.computed(()=>{if(l.value&&r.current.value)return r.current.value.data??{};const w=o.card.value;return(w==null?void 0:w.rows)??{}}),D=e.computed(()=>{if(l.value&&r.current.value)return r.current.value.fields??[];const w=o.card.value;if(!w)return[];const _=Array.isArray(w.columns)?w.columns:[],P=Array.isArray(w.fields)?w.fields:[];if(!_.length)return P;const W=new Set,Q=[],oe=le=>{const ae=typeof(le==null?void 0:le.name)=="string"?le.name.trim():"";!ae||W.has(ae)||(W.add(ae),Q.push(le))};return _.forEach(oe),P.forEach(oe),Q}),R=e.computed(()=>{const w=D.value;if(!w.length)return[];const _=$.value;return w.map(P=>({key:P.name,label:P.ua||P.label||P.title||P.name,value:_[P.name]??"—",format:P.format||"text"}))}),q=new Set(["—","-","–","−"]);function U(w){if(w==null)return!0;if(typeof w=="string"){const _=w.trim();return _.length?q.has(_):!0}return!1}const te=e.ref(!1),J=e.ref(!0);if(typeof window<"u"){const w=(Go=(Ft=window.localStorage)==null?void 0:Ft.getItem)==null?void 0:Go.call(Ft,"cardHideEmpty"),_=typeof w=="string"&&w.toLowerCase()==="true";te.value=_,J.value=!_}const ee=e.computed(()=>R.value.filter(w=>U(w.value)).length),se=e.computed(()=>te.value&&!J.value?R.value.filter(w=>!U(w.value)):R.value);function ke(w){const _=typeof w=="string"?w:"";if(!_.length)return{sanitized:"",hiddenCount:0};if(typeof DOMParser>"u")return{sanitized:_,hiddenCount:0};const W=new DOMParser().parseFromString(_,"text/html");let Q=0;return W.querySelectorAll("dd").forEach(oe=>{var ge;const le=((ge=oe.textContent)==null?void 0:ge.trim())??"",ae=oe.closest("div");if(U(le)){Q+=1,ae?ae.remove():oe.remove();return}}),{sanitized:W.body.innerHTML,hiddenCount:Q}}const ve=e.computed(()=>ke(p.value)),Ve=e.computed(()=>p.value?ve.value.hiddenCount:0),we=e.computed(()=>ee.value+Ve.value),$e=e.computed(()=>{var w;return te.value&&!J.value&&!!((w=p.value)!=null&&w.trim())}),Fe=e.computed(()=>te.value&&we.value>0),je=e.computed(()=>J.value?"Приховати пусті значення":"Показати пусті значення"),St=e.computed(()=>J.value?ir:lr);function At(){J.value=!J.value}const Xe=e.computed(()=>{const w=$e.value?ve.value.sanitized:p.value??"";return F(w)}),ut=e.computed(()=>Xe.value.filter(w=>w.type==="layer"));function O(w){return Array.isArray(w)?w.map((_,P)=>{const W=A(typeof(_==null?void 0:_.url)=="string"?_.url:""),Q=typeof(_==null?void 0:_.geohub)=="string"&&_.geohub.trim().length?`/api-hub/tms/${_.geohub.trim()}/ua/{z}/{x}/{y}.png`:"",oe=((_==null?void 0:_.name)||(_==null?void 0:_.title)||(_==null?void 0:_.label)||`Шар ${P+1}`).toString(),le=(_==null?void 0:_.id)!=null?String(_.id):S(`${oe}-${P+1}`),ae=(_==null?void 0:_.buttonText)||(_==null?void 0:_.button_text)||null,ge=(_==null?void 0:_.description)||(_==null?void 0:_.subtitle)||null,Me=W||A(Q)||"";if(!Me)return null;const xe={id:le,title:oe,url:Me,subtitle:ge,buttonText:ae||void 0};return typeof(_==null?void 0:_.tileSize)=="number"&&(xe.tileSize=_.tileSize),typeof(_==null?void 0:_.tile_size)=="number"&&(xe.tileSize=_.tile_size),typeof(_==null?void 0:_.minzoom)=="number"&&(xe.minzoom=_.minzoom),typeof(_==null?void 0:_.maxzoom)=="number"&&(xe.maxzoom=_.maxzoom),typeof(_==null?void 0:_.opacity)=="number"&&(xe.opacity=_.opacity),xe}).filter(Boolean):[]}const H=e.computed(()=>{var W,Q;const w=o.card.value,_=r.current.value,P=[(W=w==null?void 0:w.rows)==null?void 0:W.layers,w==null?void 0:w.layers,(Q=_==null?void 0:_.data)==null?void 0:Q.layers,_==null?void 0:_.layers];for(const oe of P){const le=O(oe);if(le.length)return le}return[]}),G=e.computed(()=>Xe.value.length>0||R.value.length>0||H.value.length>0);function re(){const w={},_=V.value;if(_&&typeof _=="object"&&Object.entries(_).forEach(([P,W])=>{typeof W=="string"&&(w[P]=W)}),h.value&&(w.layer=h.value),!w.geohub){const P=typeof(_==null?void 0:_.geohub)=="string"?_.geohub:null,W=typeof(_==null?void 0:_.geohub_key)=="string"?_.geohub_key:null,Q=typeof(_==null?void 0:_.geohubId)=="string"?_.geohubId:null;w.geohub=P||W||Q||w.layer||""}return w}async function K(){const w=h.value;if(!w)return V.value=null,L.value=null,null;if(L.value===w&&V.value)return V.value;if(I.has(w)){const _=I.get(w);return V.value=_,L.value=w,_}try{const _=await fetch(`/api/gis-service/${encodeURIComponent(w)}`);if(!_.ok)return null;const P=await _.json();return I.set(w,P),V.value=P,L.value=w,P}catch{return null}}async function ie(w){if(!(w!=null&&w.id))return;await K();const _=re(),P=ut.value.find(le=>le.spec.id===w.id),W=H.value.find(le=>le.id===w.id),Q=(P==null?void 0:P.spec)||B(W)||B(w);if(!Q||u(Q.id,y.value))return;const oe=y.value||void 0;C.value=oe??null,c(Q,_,oe),g({action:"activate",owner:oe,spec:Q,context:_})}function fe(w){if(!w)return;const _=Ae()||void 0;m(w,_),g({action:"deactivate",owner:_,spec:{id:w}})}function Y(w){return u(w,Ae())}function Se(w,_){const P=_.target;!!(P!=null&&P.checked)?ie(w):fe(w.id)}function Ae(){return C.value||y.value||null}e.watch(h,(w,_)=>{w!==_&&(V.value=null,L.value=null)});const{next:Te,prev:Ze,count:Pe,index:ze}=r,Re=e.computed(()=>o.count.value),Ue=e.computed(()=>o.index.value),pt=e.computed(()=>Re.value>1),Ho=e.computed(()=>l.value?Pe.value:Re.value),Yo=e.computed(()=>l.value?ze.value:Ue.value),Zo=o.next,Wo=o.prev;function Je(){const w=Ae();w&&(d(w),g({action:"clear",owner:w}),C.value=null)}function s0(){o.close(),r.close(),Je()}e.watch(i,(w,_)=>{!w&&_&&(Je(),Qe())});function Ko(){!o.isOpen.value&&!r.active.value&&Je()}e.watch(()=>o.isOpen.value,()=>{Ko()}),e.watch(()=>r.active.value,()=>{Ko()}),e.watch(h,(w,_)=>{w&&_&&w!==_&&Je()}),e.watch(ze,(w,_)=>{w!==_&&Je()}),e.watch(k,(w,_)=>{w&&_&&w!==_&&Je()});function c0(w){if(!w)return null;if(w.geometry)return w.geometry;const _=(w==null?void 0:w.data)??(w==null?void 0:w.properties);return _!=null&&_.geom_4326?_.geom_4326:_!=null&&_.geom?_.geom:null}function Qe(){var w,_;(_=(w=M.value)==null?void 0:w.remove)==null||_.call(w),M.value=null}function d0(w){var P,W,Q;const _=(w==null?void 0:w.type)||((Q=(W=(P=w==null?void 0:w.features)==null?void 0:P[0])==null?void 0:W.geometry)==null?void 0:Q.type)||"";return _.includes("Polygon")?{type:"fill",paint:{"fill-color":"#0a57ff","fill-opacity":.2,"fill-outline-color":"#0a57ff"}}:_.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}}}function u0(w){var Q;if(!w){Qe();return}const _=(Q=f.map)==null?void 0:Q.value,P={type:"FeatureCollection",features:[{type:"Feature",geometry:w,properties:{}}]};Qe();const W=d0(w);if(M.value=ne("feature-card-highlight",{source:{type:"geojson",data:P},layer:{id:"feature-card-highlight",type:W.type,source:"feature-card-highlight",paint:W.paint}},f.map),_!=null&&_.moveLayer){const oe=()=>{try{_.moveLayer("feature-card-highlight")}catch{}},le=()=>{typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(()=>{window.requestAnimationFrame(oe)}):setTimeout(oe,0)};le();const ae=()=>le();_.once("styledata",ae);const ge=()=>{le(),_.off("styledata",ae),_.off("idle",ge)};_.on("idle",ge)}}function p0(w){var W,Q;const _=(w==null?void 0:w.source)||((W=w==null?void 0:w.layer)==null?void 0:W.id)||"unknown",P=((Q=w==null?void 0:w.properties)==null?void 0:Q.id)??(w==null?void 0:w.id)??"unknown";return`${_}:${P}`}async function f0(w){var oe,le,ae,ge,Me;if(!w)return null;const _=c0(w);if(_)return _;const P=((oe=w==null?void 0:w.properties)==null?void 0:oe.id)??(w==null?void 0:w.id);if(!P)return null;const W=p0(w);if(v.has(W))return v.get(W);const Q=[x.value,w==null?void 0:w.source,(le=w==null?void 0:w.layer)==null?void 0:le.id].map(xe=>typeof xe=="string"?xe.trim():"").filter(Boolean);for(const xe of Q)try{const Le=await fetch(`/api/map-features/${encodeURIComponent(xe)}/${encodeURIComponent(String(P))}`);if(!Le.ok)continue;const Be=await Le.json(),We=((ae=Be==null?void 0:Be.data)==null?void 0:ae.geom)||((ge=Be==null?void 0:Be.data)==null?void 0:ge.geometry)||((Me=Be==null?void 0:Be.data)==null?void 0:Me.geom_4326)||null,kt=typeof We=="string"?JSON.parse(We):We;if(kt)return v.set(W,kt),kt}catch{continue}return null}async function Lt(w){j.value+=1;const _=j.value;if(!w||l.value){Qe();return}const P=await f0(w);if(_===j.value){if(!P){Qe();return}u0(P)}}return e.watch(()=>o.cardFeature.value,w=>{Lt(w)},{immediate:!0}),e.watch(()=>o.index.value,()=>{l.value||Lt(o.cardFeature.value)}),e.watch(l,w=>{w?Qe():Lt(o.cardFeature.value)}),e.watch(x,()=>{!l.value&&o.cardFeature.value&&Lt(o.cardFeature.value)}),e.onBeforeUnmount(()=>{Je(),Qe()}),(w,_)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createElementBlock("div",op,[e.createElementVNode("div",rp,[e.createElementVNode("div",lp,[e.createElementVNode("p",ip,[l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Yo.value+1)+" / "+e.toDisplayString(Ho.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[pt.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Yo.value+1)+" / "+e.toDisplayString(Ho.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Інформація про об’єкт ")],64))],64))])]),l.value&&e.unref(Pe)>1?(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("button",{onClick:_[0]||(_[0]=(...P)=>e.unref(Ze)&&e.unref(Ze)(...P)),disabled:e.unref(ze)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(pn),{class:"h-4 w-4"})],8,sp),e.createElementVNode("button",{onClick:_[1]||(_[1]=(...P)=>e.unref(Te)&&e.unref(Te)(...P)),disabled:e.unref(ze)===e.unref(Pe)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(fn),{class:"h-4 w-4"})],8,cp)])):!l.value&&pt.value?(e.openBlock(),e.createElementBlock("div",dp,[e.createElementVNode("button",{onClick:_[2]||(_[2]=(...P)=>e.unref(Wo)&&e.unref(Wo)(...P)),disabled:Ue.value===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(pn),{class:"h-4 w-4"})],8,up),e.createElementVNode("button",{onClick:_[3]||(_[3]=(...P)=>e.unref(Zo)&&e.unref(Zo)(...P)),disabled:Ue.value===Re.value-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(fn),{class:"h-4 w-4"})],8,pp)])):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:s0}," ✕ ")]),e.createElementVNode("div",fp,[a.value?(e.openBlock(),e.createElementBlock("div",mp," Завантаження даних… ")):s.value?(e.openBlock(),e.createElementBlock("div",gp,e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[R.value.length?(e.openBlock(),e.createElementBlock("div",hp,[e.createElementVNode("dl",yp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(se.value,P=>(e.openBlock(),e.createElementBlock("div",{key:P.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",xp,e.toDisplayString(P.label),1),e.createElementVNode("dd",{class:e.normalizeClass(["text-gray-700 sm:col-span-2 font-normal whitespace-pre-wrap",P.format==="badge"?"font-semibold text-yellow-800":""])},e.toDisplayString(P.value),3)]))),128))])])):Xe.value.length?(e.openBlock(),e.createElementBlock("div",bp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Xe.value,(P,W)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:W},[P.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:P.content},null,8,kp)):(e.openBlock(),e.createBlock(To,{key:1,title:P.componentProps.title,url:P.componentProps.url,id:P.componentProps.id,"button-text":P.componentProps.buttonText,onActivate:ie},e.createSlots({_:2},[P.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:P.slotText},null,8,wp)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):e.createCommentVNode("",!0),ut.value.length?(e.openBlock(),e.createElementBlock("div",_p,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ut.value,P=>(e.openBlock(),e.createBlock(To,{key:P.spec.id,title:P.componentProps.title,url:P.componentProps.url,id:P.spec.id,"button-text":P.componentProps.buttonText,onActivate:ie},null,8,["title","url","id","button-text"]))),128))])):e.createCommentVNode("",!0),Fe.value?(e.openBlock(),e.createElementBlock("div",Ep,[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:At},[e.createElementVNode("span",vp,e.toDisplayString(je.value),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(St.value),{class:"h-3 w-3 stroke-[1.5px]"}))])])):e.createCommentVNode("",!0),H.value.length?(e.openBlock(),e.createElementBlock("div",Bp,[_[5]||(_[5]=e.createElementVNode("p",{class:"text-xs font-semibold uppercase tracking-wide text-slate-500"},"Шари",-1)),e.createElementVNode("div",Np,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(H.value,P=>(e.openBlock(),e.createElementBlock("div",{key:P.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Cp,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:Y(P.id),onChange:W=>Se(P,W)},null,40,Vp),_[4]||(_[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",$p,e.toDisplayString(P.title),1)]),P.subtitle?(e.openBlock(),e.createElementBlock("div",Sp,e.toDisplayString(P.subtitle),1)):e.createCommentVNode("",!0)]))),128))])])):e.createCommentVNode("",!0),G.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ap," Даних не знайдено. "))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-1a457d09"]]),Do=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var m,d;const n=t,o=((d=(m=e.getCurrentInstance())==null?void 0:m.appContext.config.globalProperties)==null?void 0:d.$settings)||null,{map:r,ready:l}=Ee();let i=null;function a(){i==null||i.remove(),i=null}function s(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?s(u.geometry):null}function p(u){var y,k,C;return{type:"line",color:"#8e4484",width:2,opacity:((((C=(k=(y=u==null?void 0:u.features)==null?void 0:y[0])==null?void 0:k.geometry)==null?void 0:C.type)||"").includes("Polygon"),.95)}}async function f(u){const g=await fetch(u);if(!g.ok)throw new Error(String(g.status));return g.json()}async function b(u,g){if(u){const h=/^https?:\/\//.test(u)?u:new URL(u,location.origin).toString(),y=await f(h).catch(()=>null),k=s(y);if(k)return k}if(g){const h=await f(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(g)}`).catch(()=>null),y=s(h);if(y)return y}return null}async function c(){var y,k,C,M;if(!n.layerId||!r.value){a();return}typeof l=="function"&&await l().catch(()=>{});const u=n.boundary??((y=n.settingsMap)==null?void 0:y.boundary)??((k=o==null?void 0:o.map)==null?void 0:k.boundary)??null,g=n.katottg??((C=n.settingsMap)==null?void 0:C.katottg)??((M=o==null?void 0:o.map)==null?void 0:M.katottg)??null;if(!u&&!g){a();return}const h=await b(u,g);if(!h){a();return}a(),i=ne(`${n.layerId}-boundary`,{source:{type:"geojson",data:h},style:p(h)},r)}return e.watch(()=>{var u,g;return[n.layerId,n.boundary,n.katottg,(u=n.settingsMap)==null?void 0:u.boundary,(g=n.settingsMap)==null?void 0:g.katottg,r.value]},()=>{c()},{immediate:!0}),e.onBeforeUnmount(a),(u,g)=>null}}),Fp={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Tp={class:"flex-1 relative overflow-hidden"},Mp={class:"absolute top-0 left-0 w-full z-20"},Ip={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Dp={class:"flex items-center gap-3"},jp={class:"font-semibold text-lg text-gray-800 line-clamp-1"},zp={class:"text-xs text-gray-500 truncate"},Op=["title"],Pp={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]"},Rp={class:"relative w-full h-full"},Up={style:{top:"17px",left:"230px",position:"absolute","z-index":"1"}},qp={class:"absolute top-4 left-4 z-20"},Hp={class:"absolute bottom-4 left-4 z-20"},Yp={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},Zp={class:"flex-1 flex flex-col h-full"},Wp={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Kp={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"},Gp=["aria-selected","onClick"],Xp={class:"leading-none"},Jp={class:"flex flex-col flex-1 overflow-y-hidden p-3"},Qp=e.defineComponent({__name:"service",setup(t){var I,S;const n=Ne.useRoute(),o=Ne.useRouter(),{id:r}=n.params,l=e.ref(null),i=e.ref({}),a=e.ref(null),s=((S=(I=e.getCurrentInstance())==null?void 0:I.appContext.config.globalProperties)==null?void 0:S.$settings)||null,p=e.ref(null),f=e.ref([]),b=e.ref([]),c=e.ref([]),m=e.ref("list"),d=e.ref(""),u=e.ref([]),g=e.computed(()=>{var A,E;return((A=a.value)==null?void 0:A.id)??((E=a.value)==null?void 0:E.service_id)??null}),h=e.computed(()=>{const A=(s==null?void 0:s.map)||null,E=(A==null?void 0:A.boundary)??null,z=(A==null?void 0:A.katottg)??null;return!E&&!z?null:{boundary:E,katottg:z}}),y=[{key:"style",label:"Стиль",icon:vd},{key:"popup",label:"Попап",icon:Id},{key:"filter",label:"Фільтр",icon:Od},{key:"legend",label:"Легенда",icon:Vd},{key:"card",label:"Картка",icon:Ld}],k=y.map(A=>A.key),C=e.ref("style");e.onMounted(async()=>{const A=n.query.tab;A&&k.includes(A)&&(C.value=A),await v()}),e.watch(C,A=>{n.query.tab!==A&&o.replace({query:{...n.query,tab:A}})}),e.watch(()=>n.query.tab,A=>{A&&k.includes(A)&&C.value!==A&&(C.value=A)});function M(A){if(!A)return null;try{return JSON.parse(JSON.stringify(A))}catch(E){return console.warn("Failed to clone style",E),null}}function j(A){if(!A)return null;if(typeof A=="string")try{return kd.load(A)||null}catch(E){return console.warn("Failed to parse style yaml",E),null}return M(A)}const v=async()=>{try{const A=await fetch(`/api/gis-service/${r}`);if(!A.ok)throw new Error(`${A.status}`);const E=await A.json();i.value=E||{},l.value=r;const z=j(E.style);a.value=E?{...E,style:M(z)}:null,p.value=z,b.value=(E==null?void 0:E.popup)||[],m.value=E.card_mode==="html"?"html":"list",c.value=E.card,d.value=E.html,f.value=(E==null?void 0:E.legend)||[],u.value=(E==null?void 0:E.filters)||[]}catch(A){console.error("Failed to fetch map info",A)}};e.watch(()=>{var A;return(A=a.value)==null?void 0:A.style},A=>{p.value=j(A)},{deep:!0});async function N(A,E){await V({[A]:E},A)}function x(){const A=M(p.value);A&&(a.value=a.value?{...a.value,style:A}:a.value)}async function V(A,E){if(a.value={...a.value||{},...A},typeof A.html<"u"&&(i.value={...i.value||{},html:A.html}),!!g.value)try{if(!(await fetch(`/api/gis-service/${g.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)})).ok)throw new Error("Save failed");he.notify({type:"success",title:"Успіх",message:`${E} saved`}),await v()}catch(z){he.notify({type:"error",title:"Помилка",message:`Failed to save ${E}`}),console.error(z)}}async function L(A,E){if(A!=="card"){await N(A,E);return}const z=(E==null?void 0:E.card_mode)==="html"?"html":"list",T=z==="html"&&typeof(E==null?void 0:E.html)=="string"?E.html:"",F=(z==="html"?[]:null)||(Array.isArray(E==null?void 0:E.list)?E.list:[]);c.value=F,m.value=z,d.value=T;const B={card_mode:z};z==="html"&&(B.html=T),z==="list"&&(B.card=F),await V(B,"card")}return(A,E)=>{var z,T,F,B;return e.openBlock(),e.createElementBlock("div",Fp,[e.createElementVNode("div",Tp,[e.createElementVNode("div",Mp,[e.createElementVNode("div",Ip,[e.createElementVNode("div",Dp,[e.createElementVNode("button",{onClick:E[0]||(E[0]=$=>A.$router.back()),class:"inline-flex items-center px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition"},[...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",jp,e.toDisplayString((z=a.value)==null?void 0:z.name),1),e.createElementVNode("div",zp," Сервіс: "+e.toDisplayString((T=a.value)==null?void 0:T.service_key),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(F=a.value)==null?void 0:F.description},e.toDisplayString((B=a.value)==null?void 0:B.description),9,Op)])]),e.createElementVNode("div",Pp,[e.createElementVNode("div",Rp,[e.createVNode(Lo,null,{default:e.withCtx(()=>{var $,D,R,q,U,te,J,ee;return[($=a.value)!=null&&$.service_id?(e.openBlock(),e.createBlock(Fu,{key:0,id:(D=a.value)==null?void 0:D.service_id,layer:a.value,"style-spec":((R=a.value)==null?void 0:R.style)||null},null,8,["id","layer","style-spec"])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createBlock(Do,{key:1,"layer-id":g.value,boundary:((q=a.value)==null?void 0:q.boundary)||((U=h.value)==null?void 0:U.boundary)||null,katottg:((te=a.value)==null?void 0:te.katottg)||((J=h.value)==null?void 0:J.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",Up,[g.value?(e.openBlock(),e.createBlock(en,{key:0,"layer-id":g.value,filters:u.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",qp,[e.createVNode(tn)]),e.createElementVNode("div",Hp,[e.createVNode(nn,{items:((ee=a.value)==null?void 0:ee.legend)||null},null,8,["items"])]),e.createVNode(Fo),e.createVNode(Io,{html:i.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",Yp,[e.createElementVNode("div",Zp,[e.createElementVNode("div",Wp,[e.createElementVNode("div",Kp,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(y,$=>e.createElementVNode("button",{key:$.key,type:"button",role:"tab","aria-selected":C.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",C.value===$.key?"bg-white shadow-sm text-gray-700":""]),onClick:D=>C.value=$.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent($.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Xp,e.toDisplayString($.label),1)],10,Gp)),64))])]),e.createElementVNode("div",Jp,[C.value==="style"?(e.openBlock(),e.createBlock(Wd,{key:0,token:g.value,"style-yaml":p.value,"onUpdate:styleYaml":E[1]||(E[1]=$=>p.value=$),onUpdate:x},null,8,["token","style-yaml"])):C.value==="legend"?(e.openBlock(),e.createBlock(_u,{key:1,token:g.value,columns:f.value,"onUpdate:columns":E[2]||(E[2]=$=>f.value=$),onSave:E[3]||(E[3]=$=>N("legend",$))},null,8,["token","columns"])):C.value==="popup"?(e.openBlock(),e.createBlock(mu,{key:2,token:g.value,columns:b.value,fields:i.value.fields,"onUpdate:columns":E[4]||(E[4]=$=>b.value=$),onSave:E[5]||(E[5]=$=>N("popup",$))},null,8,["token","columns","fields"])):C.value==="card"?(e.openBlock(),e.createBlock(Su,{key:3,token:g.value,columns:c.value,fields:i.value.fields,"view-mode":m.value,html:d.value,"onUpdate:columns":E[6]||(E[6]=$=>c.value=$),onSave:L},null,8,["token","columns","fields","view-mode","html"])):C.value==="filter"?(e.openBlock(),e.createBlock(Lu,{key:4,token:g.value,fields:i.value.fields,columns:u.value,"onUpdate:columns":E[7]||(E[7]=$=>u.value=$),onSave:E[8]||(E[8]=$=>N("filters",$))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),ef={class:"mapLayer-info__inner"},tf={class:"mapLayer-info__item-label"},ln=X(e.defineComponent({__name:"MapLayerInfoPopover",props:{items:{}},setup(t,{expose:n}){const o=t,r=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),l=e.ref(null),i=e.ref(null);let a=null;const s=e.computed(()=>r.open?{position:"absolute",width:"460px",top:`${r.top}px`,left:`${r.left}px`,transform:r.transform,display:"block"}:{display:"none"});function p(g){if(r.open){m();return}const h=g.currentTarget,y=h==null?void 0:h.closest(".mapLayer-info");if(!y){m();return}l.value=y,r.open=!0,e.nextTick(()=>{f(),d(),requestAnimationFrame(()=>{f()})})}function f(){var V,L;if(!r.open||!l.value)return;const g=l.value.getBoundingClientRect(),h=8,y=window.scrollX+h,k=window.scrollX+window.innerWidth-h,C=window.scrollY+h,M=window.scrollY+window.innerHeight-h,j=((V=i.value)==null?void 0:V.offsetWidth)||460,v=((L=i.value)==null?void 0:L.offsetHeight)||0;let N=g.left+window.scrollX+(g.width-j)/2;N<y&&(N=y),N+j>k&&(N=Math.max(y,k-j)),r.left=N;let x=g.bottom+window.scrollY+h;x+v>M&&(x=g.top+window.scrollY-v-h,x<C&&(x=Math.max(C,M-v))),r.top=x,r.transform="none"}function b(g){var y,k;if(!r.open)return;const h=g.target;(y=l.value)!=null&&y.contains(h)||(k=i.value)!=null&&k.contains(h)||m()}function c(g){g.key==="Escape"&&m()}function m(){u(),r.open=!1,l.value=null,i.value=null}function d(){u(),i.value&&(a=new ResizeObserver(()=>{f()}),a.observe(i.value))}function u(){a&&(a.disconnect(),a=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f),u()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>f())},{deep:!0}),n({close:m}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:l},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(p,["prevent","stop"])},[...h[1]||(h[1]=[e.createStaticVNode('<div class="mapLayer-info__icon" data-v-48ead72b><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-48ead72b><circle cx="12" cy="12" r="10" data-v-48ead72b></circle><line x1="12" y1="16" x2="12" y2="12" data-v-48ead72b></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-48ead72b></line></svg></div>',1)])]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-50 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:i,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ef,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,y=>(e.openBlock(),e.createElementBlock("div",{key:y.label,class:"mapLayer-info__item"},[e.createElementVNode("div",tf,e.toDisplayString(y.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":y.breakLine}])},e.toDisplayString(y.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-48ead72b"]]),nf={key:0,class:"map-info__header"},of={key:0,class:"map-info__title"},rf={class:"map-info__actions"},lf={key:0,class:"map-info__menu"},af=["onClick"],sf=["innerHTML"],jo=X(e.defineComponent({__name:"MapInfoWidget",props:{title:{},content:{},links:{},mapName:{},mapDescription:{}},setup(t){const n=t,o=e.ref(null),r=e.ref(!1),l=e.ref(null),i=e.ref({top:0,left:0}),a=Ne.useRouter(),s=e.computed(()=>Array.isArray(n.links)?n.links.filter(u=>(u==null?void 0:u.name)&&(u==null?void 0:u.slug)):[]),p=e.computed(()=>({top:`${i.value.top}px`,left:`${i.value.left}px`})),f=e.computed(()=>{const u=[];return n.mapName&&u.push({label:"Назва карти",value:n.mapName}),n.mapDescription&&u.push({label:"Опис",value:n.mapDescription,breakLine:!0}),u});function b(u){u.stopPropagation(),r.value=!r.value}function c(){const u=l.value;if(!u)return;const{bottom:g,left:h}=u.getBoundingClientRect();i.value={top:g+window.scrollY+8,left:h+window.scrollX}}function m(u){if(!r.value)return;const g=o.value;if(!g){r.value=!1;return}g.contains(u.target)||(r.value=!1)}e.onMounted(()=>{document.addEventListener("click",m,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",m,!0),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}),e.watch(r,u=>{u?e.nextTick(()=>{c(),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c)}):(window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c))});function d(u){r.value=!1,a.push(`/maps/${u}`)}return(u,g)=>(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||s.value.length||f.value.length?(e.openBlock(),e.createElementBlock("div",nf,[t.title?(e.openBlock(),e.createElementBlock("h2",of,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",rf,[s.value.length?(e.openBlock(),e.createElementBlock("div",lf,[e.createElementVNode("button",{ref_key:"menuButton",ref:l,type:"button",class:"map-info__menu-button",onClick:b,"aria-label":"Показати посилання"},[...g[1]||(g[1]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M4 12H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 6H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 18H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],512),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vsTailwind vs-popover__content right map-info__popover",style:e.normalizeStyle(p.value),onClick:g[0]||(g[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,h=>(e.openBlock(),e.createElementBlock("button",{key:h.slug||h.name,type:"button",class:"map-info__popover-link",onClick:y=>d(h.slug)},e.toDisplayString(h.name),9,af))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),f.value.length?(e.openBlock(),e.createBlock(ln,{key:1,items:f.value},null,8,["items"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),t.content?(e.openBlock(),e.createElementBlock("div",{key:1,class:"map-info__content",innerHTML:t.content},null,8,sf)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-a06fbf8d"]]),cf={class:"opacity-popover__content"},df={class:"opacity-popover__value"},zo=X(e.defineComponent({__name:"LayerOpacityPopover",props:{layerId:{}},setup(t){const n=t,o=e.ref(!1),r=e.ref(100),l=e.ref(null),i=e.ref(null),a=e.reactive({top:0,left:0});function s(){var d;const c=(d=i.value)==null?void 0:d.querySelector("button");if(!c)return;const m=c.getBoundingClientRect();a.top=m.bottom+8+window.scrollY,a.left=m.left+window.scrollX}function p(){o.value=!o.value,o.value&&e.nextTick(s)}function f(){var u;const c=ne(n.layerId),m=(r.value??100)/100;if(c!=null&&c.setOpacity){c.setOpacity(m);return}const d=(u=c==null?void 0:c.getLayer)==null?void 0:u.call(c);if(d)switch(d.type){case"raster":c.updatePaint({"raster-opacity":m});break;case"fill":c.updatePaint({"fill-opacity":m});break;case"line":c.updatePaint({"line-opacity":m});break;case"circle":c.updatePaint({"circle-opacity":m});break;case"symbol":c.updatePaint({"icon-opacity":m});break}}function b(c){var d,u;if(!o.value)return;const m=c.target;(d=l.value)!=null&&d.contains(m)||(u=i.value)!=null&&u.contains(m)||(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,m)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:i},[e.renderSlot(c.$slots,"trigger",{toggle:p,opacity:r.value},()=>[e.createElementVNode("button",{type:"button",class:"opacity-btn",onClick:e.withModifiers(p,["stop"])},e.toDisplayString(r.value)+"% ",1)],!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popoverEl",ref:l,class:"opacity-popover",style:e.normalizeStyle({top:a.top+"px",left:a.left+"px"})},[e.createElementVNode("div",cf,[m[1]||(m[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":m[0]||(m[0]=d=>r.value=d),class:"opacity-popover__range",onInput:f},null,544),[[e.vModelText,r.value]]),e.createElementVNode("span",df,e.toDisplayString(r.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-7dc672a4"]]),uf={class:"layers-panel"},pf={class:"layers-panel__header"},ff={class:"layers-panel__heading"},mf={class:"layers-panel__title"},gf={key:0,class:"layers-panel__description"},hf={class:"layers-panel__label"},yf={class:"layers-panel__label-row"},xf=["checked","onChange"],bf={class:"layers-panel__name"},kf={class:"layers-panel__meta text-slate-500"},wf=["onClick"],_f={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Ef={key:0,class:"layers-panel__legend-meta"},vf={key:0,class:"layers-panel__legend-name"},Bf={key:0,class:"layers-panel__actions"},Nf=["innerHTML","onClick"],Oo="map:temporary-layer-request",Po=X(e.defineComponent({__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,r=e.ref({}),l=Ee(),{temporaryLayers:i,activateTemporaryLayer:a,deactivateTemporaryLayer:s,clearTemporaryLayers:p}=Mo(l.map),f=e.computed(()=>{const x=o.layers.map(L=>({...L,isTemporary:!1,owner:null,visible:L.visible!==!1})),V=i.value.map(L=>({id:L.id,name:L.title,visible:r.value[L.id]??!0,actions:[],filters:null,isTemporary:!0,owner:L.owner??null,handle:L.handle??null,card:L.card??null,popup:L.popup??null,style:L.style??null,group_name:null,count:null,holder:null}));return[...x,...V]}),b=e.computed(()=>i.value.length>0),c=n;function m(){var x;for(let V=0;V<o.layers.length;V++){const L=o.layers[V],I=d(L);if(!I)continue;const S=ne(L.id,I),A=L.visible!==!1;r.value[L.id]=A,A||(x=S==null?void 0:S.setVisible)==null||x.call(S,!1)}}function d(x){const V=x.id;if(!V)return null;const L=(x.service||x.service_type||x.type||"").toString().toLowerCase(),I=x.service_url||x.url||null;if(!!I&&(L==="tms"||L==="wmts"||L==="wms"||L==="ogc")){const E=u(I);return E?{sourceId:V,source:{type:"raster",tiles:[E],tileSize:x.tileSize||256,minzoom:x.minzoom??0,maxzoom:x.maxzoom??22,scheme:x.scheme||"xyz"},layer:{id:V,type:"raster",source:V},card:x.card,popup:x.popup}:null}const A=`${location.origin}/api/vtile/${V}/ua/{z}/{x}/{y}.vmt`;return{sourceId:V,source:{type:"vector",tiles:[A],minZoom:4,maxZoom:14},layer:{id:V,source:V,"source-layer":V,style:x.style},card:x.card,popup:x.popup}}function u(x){return x?/^https?:\/\//i.test(x)?x:x.startsWith("//")?`${window.location.protocol}${x}`:x.startsWith("/")?`${location.origin}${x}`:`${location.origin}/${x}`:null}function g(x){const V=r.value[x];return V??!0}function h(x){var I,S;if(!(x!=null&&x.id))return null;const V=(I=x.title)==null?void 0:I.trim(),L=(S=x.url)==null?void 0:S.trim();return!V||!L?null:{id:x.id,title:V,url:L,tileSize:x.tileSize,minzoom:x.minzoom,maxzoom:x.maxzoom,opacity:x.opacity}}function y(x){if(!x)return;const V=x.owner;if(x.action==="clear"){const I=i.value.filter(S=>!V||S.owner===V).map(S=>S.id);p(V),I.forEach(S=>{S in r.value&&delete r.value[S]});return}const L=h(x.spec);if(L){if(x.action==="activate"){a(L,x.context||{},V),r.value[L.id]=!0;return}x.action==="deactivate"&&(s(L.id,V),delete r.value[L.id])}}function k(x){x instanceof CustomEvent&&y(x.detail)}e.watch(()=>i.value.map(x=>x.id),(x,V)=>{const L=new Set(V||[]),I=new Set(x);x.forEach(S=>{S in r.value||(r.value[S]=!0)}),L.forEach(S=>{I.has(S)||delete r.value[S]})},{immediate:!0}),e.onMounted(()=>{m(),window.addEventListener(Oo,k)}),e.onBeforeUnmount(()=>{window.removeEventListener(Oo,k)});function C(x,V){var A,E,z;const I=V.target.checked;if(r.value[x.id]=I,x.isTemporary){if(!I){s(x.id,x.owner||void 0),delete r.value[x.id];return}const T=x.handle||((A=i.value.find(F=>F.id===x.id))==null?void 0:A.handle);(E=T==null?void 0:T.setVisible)==null||E.call(T,!0);return}const S=ne(x.id);(z=S==null?void 0:S.setVisible)==null||z.call(S,I)}function M(x){return x.isTemporary?[{label:"Назва",value:x.name??null},{label:"Тип",value:"Тимчасовий шар"},x.owner?{label:"Джерело",value:x.owner}:null].filter(Boolean):[{label:"Назва",value:x.name??null},{label:"Назва групи",value:x.group_name||null},{label:"Кількість",value:x.count??null},{label:"Балансоутримувач",value:x.holder??null}]}function j(x){var V,L,I;return((V=x==null?void 0:x.style)==null?void 0:V.color)||((L=x==null?void 0:x.style)==null?void 0:L.stroke)||((I=x==null?void 0:x.style)==null?void 0:I.fill)||null}function v(x){var V,L;return((L=(V=x==null?void 0:x.legend)==null?void 0:V[0])==null?void 0:L.name)||null}function N(){if(!i.value.length)return;const x=i.value.map(V=>V.id);p(),x.forEach(V=>delete r.value[V])}return(x,V)=>{var L,I;return e.openBlock(),e.createElementBlock("div",uf,[e.createElementVNode("div",pf,[e.createElementVNode("div",ff,[e.createElementVNode("h2",mf,e.toDisplayString(((L=t.config)==null?void 0:L.title)||"Шари"),1),(I=t.config)!=null&&I.description?(e.openBlock(),e.createElementBlock("div",gf,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),b.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__clear",onClick:N}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,S=>{var A;return e.openBlock(),e.createElementBlock("div",{key:S.id,class:"layers-panel__item"},[e.createElementVNode("label",hf,[e.createElementVNode("div",yf,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:g(S.id),onChange:E=>C(S,E)},null,40,xf),e.createElementVNode("span",bf,e.toDisplayString(S.name),1),e.createElementVNode("div",kf,[g(S.id)&&!S.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(zo,{"layer-id":S.id,class:"flex"},{trigger:e.withCtx(({toggle:E})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(E,["prevent","stop"])},[e.createElementVNode("div",_f,[e.createVNode(e.unref(ar))])],8,wf)]),_:1},8,["layer-id"]),e.createVNode(Vt,{count:Array.isArray(S.filters)?S.filters.length:0,layer:S},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(ln,{items:M(S)},null,8,["items"])])]),g(S.id)&&j(S)?(e.openBlock(),e.createElementBlock("span",Ef,[e.createElementVNode("span",{class:"layers-panel__legend-dot",style:e.normalizeStyle({background:j(S)})},null,4),v(S)?(e.openBlock(),e.createElementBlock("span",vf,e.toDisplayString(v(S)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),(A=S.actions)!=null&&A.length?(e.openBlock(),e.createElementBlock("div",Bf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.actions,E=>(e.openBlock(),e.createElementBlock("button",{key:E.widget||E.id||E.icon,type:"button",class:"layers-panel__action",innerHTML:E.icon,onClick:z=>c("action",{layerId:E.widget})},null,8,Nf))),128))])):e.createCommentVNode("",!0)])}),128))])}}}),[["__scopeId","data-v-6e06fcad"]]),Cf={class:"catalog-tab__search relative mt-[10px]"},Vf={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%)"}},$f={key:0,class:"text-sm text-gray-400 text-center mt-6"},Sf=["onClick"],Af={class:"flex items-center gap-x-3"},Lf={class:"max-w-[260px] text-[14px] text-[#4b5563]"},Ff={class:"text-xs opacity-60 text-[#4b5563]"},Tf={class:"flex items-center cursor-pointer gap-2 flex-1"},Mf=["checked","onChange"],If={class:"text-[13px] text-gray-600 truncate max-w-[260px]"},Df={class:"flex items-center gap-2"},jf=X(e.defineComponent({__name:"LayersCatalogTab",props:{catalog:{},selected:{},search:{}},emits:["toggle-layer","update:search","open-filter"],setup(t,{emit:n}){const o=t,r=n,l=e.reactive({}),i=e.ref(null),a=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0,layerId:null}),s=e.computed(()=>{const h=o.search.trim().toLowerCase();return o.catalog.groups.map(y=>{const k=h?y.layers.filter(C=>(typeof C.name=="string"?C.name:"").toLowerCase().includes(h)):y.layers;return{...y,layers:k}}).filter(y=>y.layers.length>0)}),p=e.computed({get:()=>o.search,set:h=>r("update:search",h)});function f(h){l[h]=!l[h],Tu()}function b(h){return!!l[h]}function c(h,y){if(o.selected.includes(y)){a.visible=!1,a.layerId=null;return}const k=h.currentTarget;if(!k)return;const C=k.getBoundingClientRect(),M=typeof window<"u"?window.scrollX:0,j=typeof window<"u"?window.scrollY:0;a.left=C.left+C.width/2+M,a.top=C.bottom+8+j,a.layerId=y,a.visible=!0}function m(){a.visible=!1,a.layerId=null}function d(h){return[{label:"Назва",value:u(h.name)},{label:"Сервіс",value:u(h.service)},{label:"Посилання",value:u(h.url),breakLine:!0},{label:"Джерело",value:u(h.source_path),breakLine:!0},{label:"Popup",value:g(h.popup,"полів")},{label:"Картка",value:g(h.card,"полів")},{label:"Фільтри",value:g(h.filters,"фільтрів")}]}function u(h){return h==null||h===""?null:String(h)}function g(h,y){return!Array.isArray(h)||h.length===0?null:`${h.length} ${y}`}return e.watch(()=>o.selected?o.selected.slice():[],h=>{!a.visible||!a.layerId||h.includes(a.layerId)&&(a.visible=!1,a.layerId=null)}),(h,y)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:i,class:"catalog-tab"},[e.createElementVNode("div",Cf,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[0]=k=>p.value=k),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,p.value]]),(e.openBlock(),e.createElementBlock("svg",Vf,[...y[1]||(y[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)])]))]),s.value.length===0?(e.openBlock(),e.createElementBlock("div",$f," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:"mt-2"},[e.createElementVNode("div",{class:"hover:bg-gray-100 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:C=>f(k.id)},[e.createElementVNode("div",Af,[(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(k.id)?"rotate-90":""])},[...y[2]||(y[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",Lf,e.toDisplayString(k.name),1)]),e.createElementVNode("div",Ff,e.toDisplayString(k.layers.length),1)],8,Sf),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(k.layers,C=>(e.openBlock(),e.createElementBlock("div",{key:C.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Tf,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(C.id),onChange:M=>h.$emit("toggle-layer",C.id,M.target.checked,C)},null,40,Mf),y[3]||(y[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",If,e.toDisplayString(C.name),1)]),e.createElementVNode("div",Df,[Array.isArray(C.filters)&&C.filters.length?(e.openBlock(),e.createBlock(Vt,{key:0,count:C.filters.length,layer:C,disabled:!t.selected.includes(C.id),onMouseenter:M=>c(M,C.id),onMouseleave:m,onFocus:M=>c(M,C.id),onBlur:m},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(ln,{items:d(C)},null,8,["items"])])]))),128))],512),[[e.vShow,b(k.id)]])]),_:2},1024)]))),128)),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[a.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${a.top}px`,left:`${a.left}px`})},e.toDisplayString(a.text),5)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-f516a825"]]),zf={class:"flex flex-col gap-0"},Of={class:"text-xs text-slate-600 font-semibold"},Pf=e.defineComponent({__name:"MapLayerPopover",props:{items:{}},setup(t,{expose:n}){const o=t,r=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),l=e.ref(null),i=e.ref(null);let a=null;const s=e.computed(()=>r.open?{position:"absolute",width:"460px",top:`${r.top}px`,left:`${r.left}px`,transform:r.transform,display:"block"}:{display:"none"});function p(){if(r.open){m();return}if(!l.value){m();return}r.open=!0,e.nextTick(()=>{f(),d(),requestAnimationFrame(()=>{f()})})}function f(){var V,L;if(!r.open||!l.value)return;const g=l.value.getBoundingClientRect(),h=8,y=window.scrollX+h,k=window.scrollX+window.innerWidth-h,C=window.scrollY+h,M=window.scrollY+window.innerHeight-h,j=((V=i.value)==null?void 0:V.offsetWidth)||460,v=((L=i.value)==null?void 0:L.offsetHeight)||0;let N=g.left+window.scrollX+(g.width-j)/2;N<y&&(N=y),N+j>k&&(N=Math.max(y,k-j)),r.left=N;let x=g.bottom+window.scrollY+h;x+v>M&&(x=g.top+window.scrollY-v-h,x<C&&(x=Math.max(C,M-v))),r.top=x,r.transform="none"}function b(g){var y,k;if(!r.open)return;const h=g.target;(y=l.value)!=null&&y.contains(h)||(k=i.value)!=null&&k.contains(h)||m()}function c(g){g.key==="Escape"&&m()}function m(){u(),r.open=!1,l.value=null,i.value=null}function d(){u(),i.value&&(a=new ResizeObserver(()=>{f()}),a.observe(i.value))}function u(){a&&(a.disconnect(),a=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f),u()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>f())},{deep:!0}),n({close:m}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:"inline-flex relative",ref_key:"anchorEl",ref:l},[e.createElementVNode("div",{onClick:e.withModifiers(p,["prevent","stop"])},[e.renderSlot(g.$slots,"default")]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-[103] py-3 px-4 bg-white text-sm text-gray-500 rounded-md shadow-lg bottom absolute min-w-[200px]",style:e.normalizeStyle(s.value),ref_key:"popoverEl",ref:i,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",zf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,y=>(e.openBlock(),e.createElementBlock("div",{key:y.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",Of,e.toDisplayString(y.label),1),e.createElementVNode("div",{class:e.normalizeClass(["text-sm text-gray-800",{"break-all":y.breakLine}])},e.toDisplayString(y.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),Rf={class:"selected-tab"},Uf={class:"selected-tab__actions"},qf={key:0,class:"selected-tab__scroll"},Hf=["onDragstart","onDragover","onDrop"],Yf={class:"selected-tab__item-header"},Zf={class:"selected-tab__item-info"},Wf=["checked","onChange"],Kf={class:"selected-tab__item-name"},Gf={class:"selected-tab__item-controls"},Xf=["onClick"],Jf={class:"selected-tab__menu-inner"},Qf=X(e.defineComponent({__name:"LayersSelectedTab",props:{catalog:{},selected:{}},emits:["select-layer","reorder","remove","toggle-layer"],setup(t,{emit:n}){const o=t,r=n,l=e.reactive({}),i=e.ref(null),a=e.ref(null),s=new Map,p=e.reactive({top:0,left:0}),f=e.ref(null),b=e.reactive({top:0,left:0}),c=e.ref(null),m=new Map,d=e.reactive({});function u(B){var $;for(const D of(($=o.catalog)==null?void 0:$.groups)??[]){const R=D.layers.find(q=>q.id===B);if(R)return R}return null}e.watch(()=>o.selected,B=>{B.forEach($=>{l[$]==null&&(l[$]=100)})},{immediate:!0});function g(){if(!i.value)return;const B=s.get(i.value);if(!B)return;const $=B.getBoundingClientRect();p.top=$.bottom+8+window.scrollY,p.left=$.left+window.scrollX}e.watch(()=>o.selected,B=>{B.forEach($=>{d[$]==null&&(d[$]=!0)})},{immediate:!0});function h(B,$){d[B]=$;const D=ne(B);D&&D.setVisible($)}function y(B,$){$?m.set(B,$):m.delete(B)}function k(B){f.value=f.value===B?null:B,f.value&&e.nextTick(()=>C(B))}function C(B){const $=m.get(B);if(!$)return;const D=$.getBoundingClientRect();b.top=D.bottom+6+window.scrollY,b.left=D.left+window.scrollX}function M(B){const $=ne(B);$&&$.remove(),r("remove",B),f.value=null}function j(B){const $=B.target,D=i.value,R=f.value;if(D){const q=a.value,U=s.get(D);if(q&&q.contains($)||U&&U.contains($))return;i.value=null}if(R){const q=c.value,U=m.get(R);if(q&&q.contains($)||U&&U.contains($))return;f.value=null}}function v(){i.value&&g(),f.value&&C(f.value)}e.onMounted(()=>{document.addEventListener("click",j),window.addEventListener("resize",v),window.addEventListener("scroll",v,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",j),window.removeEventListener("resize",v),window.removeEventListener("scroll",v,!0)});const{map:N}=Ee();function x(B){var q,U,te;if(!B)return;const $=ne(B),D=u(B);if(!$&&!D)return;if(((q=D==null?void 0:D.extent)==null?void 0:q.length)===4&&((U=N.value)!=null&&U.fitBounds)){const J=D.extent.map(ee=>Number(ee));if(J.every(ee=>Number.isFinite(ee))){const[ee,se,ke,ve]=J;N.value.fitBounds([[ee,se],[ke,ve]],{padding:40}),f.value=null;return}}(te=$==null?void 0:$.getSource)!=null&&te.call($)&&(f.value=null)}const V=e.ref(null),L=e.ref(null);function I(B,$){V.value=$,L.value=$,B.dataTransfer&&(B.dataTransfer.effectAllowed="move",B.dataTransfer.setData("text/plain",String($)))}function S(B){L.value=B}function A(B,$){if(B.preventDefault(),V.value===null||V.value===$){V.value=null,L.value=null;return}const D=[...o.selected],[R]=D.splice(V.value,1);D.splice($,0,R),r("reorder",D),V.value=null,L.value=null}function E(){V.value=null,L.value=null}function z(B){return B==null||B===""?null:String(B)}function T(B,$){return!Array.isArray(B)||B.length===0?null:`${B.length} ${$}`}function F(B){var ve,Ve,we,$e,Fe,je;const $=ne(B),D=u(B);if(!$&&!D)return[];const R=(D==null?void 0:D.name)||((Ve=(ve=$==null?void 0:$.opts)==null?void 0:ve.layer)==null?void 0:Ve.name)||null,q=(D==null?void 0:D.service)||((we=$==null?void 0:$.opts)==null?void 0:we.service)||null,U=($e=$==null?void 0:$.getSource)==null?void 0:$e.call($),te=U&&"tiles"in U?(Fe=U.tiles)==null?void 0:Fe[0]:(D==null?void 0:D.url)||null,J=(D==null?void 0:D.source_path)||null,ee=($==null?void 0:$.popup)||(D==null?void 0:D.popup),se=($==null?void 0:$.card)||(D==null?void 0:D.card),ke=(D==null?void 0:D.filters)||((je=$==null?void 0:$.opts)==null?void 0:je.filters);return[{label:"Назва",value:z(R)},{label:"Сервіс",value:z(q)},{label:"Посилання",value:z(te),breakLine:!0},{label:"Джерело",value:z(J),breakLine:!0},{label:"Popup",value:T(ee,"полів")},{label:"Картка",value:T(se,"полів")},{label:"Фільтри",value:T(ke,"фільтрів")}]}return(B,$)=>(e.openBlock(),e.createElementBlock("div",Rf,[e.createElementVNode("div",Uf,[e.createElementVNode("button",{class:"selected-tab__add",onClick:$[0]||($[0]=D=>r("select-layer"))},[...$[3]||($[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",qf,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(D,R)=>{var q;return e.openBlock(),e.createElementBlock("div",{key:D,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":V.value===R,"selected-tab__item--over":L.value===R}]),draggable:"true",onDragstart:U=>I(U,R),onDragover:e.withModifiers(U=>S(R),["prevent"]),onDrop:U=>A(U,R),onDragend:E},[e.createElementVNode("div",Yf,[e.createElementVNode("div",Zf,[$[4]||($[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:d[D]??!0,onChange:U=>h(D,U.target.checked)},null,40,Wf),e.createElementVNode("span",Kf,e.toDisplayString(((q=u(D))==null?void 0:q.name)||"Шар"),1)]),e.createElementVNode("div",Gf,[e.createVNode(zo,{"layer-id":D},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:U=>y(D,U),onClick:e.withModifiers(U=>k(D),["stop"])},[...$[5]||($[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,Xf)])])],42,Hf)}),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:c,class:"selected-tab__menu",style:e.normalizeStyle({top:b.top+"px",left:b.left+"px"})},[e.createElementVNode("div",Jf,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:$[1]||($[1]=D=>x(f.value))},[...$[6]||($[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(Pf,{items:F(f.value)},{default:e.withCtx(()=>[...$[7]||($[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"]),$[9]||($[9]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:$[2]||($[2]=D=>M(f.value))},[...$[8]||($[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-18bd541c"]]),em={class:"filter-tab"},tm={key:0,class:"filter-tab__header"},nm={class:"filter-tab__title"},om={key:1,class:"filter-tab__content rounded-md"},rm={class:"filter-tab__scroll"},lm={key:2,class:"filter-tab__empty"},im=X(e.defineComponent({__name:"LayersFilterTab",props:{layer:{},value:{}},emits:["change"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/filter")),r=t,l=n,i=e.computed(()=>{var p;return((p=r.layer)==null?void 0:p.filters)??[]}),a=e.computed(()=>i.value.length>0);function s(p){l("change",p.data)}return(p,f)=>(e.openBlock(),e.createElementBlock("div",em,[t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",tm,[e.createElementVNode("div",null,[e.createElementVNode("p",nm,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",om,[e.createElementVNode("div",rm,[e.createVNode(e.unref(o),{view:"vertical",schema:i.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:f[0]||(f[0]=b=>s(b))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",lm,[...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"]]),am={class:"map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget"},sm={class:"flex items-center justify-between mb-4"},cm={class:"flex items-center gap-2"},dm={class:"text-lg font-semibold text-gray-800"},um={key:0},pm={key:1,class:"block text-sm font-normal text-gray-500"},fm={class:"flex mb-4 border-b border-gray-200"},mm={class:"map-catalog-widget__body"},Ro=X(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=e.ref("catalog"),o=e.ref({groups:[]}),r=e.ref([]),l=e.ref(""),{map:i}=Ee(),a=Ne.useRoute(),s=Ne.useRouter(),p=e.reactive({}),f=e.ref(null);function b(I){return o.value.groups.map(S=>S.layers.find(A=>A.id===I)).find(Boolean)||null}function c(){const I=f.value;if(!I)return;delete p[I];const S=ne(I);S!=null&&S.setFilter&&S.setFilter("")}function m(I,S){const A=ne(I);if(p[I]={...S},!(A!=null&&A.setFilter))return;const E=Object.entries(S).filter(([,z])=>z!=null&&z!=="").map(([z,T])=>`${z}=${T}`);A.setFilter(E.join("|"))}function d(I){const S=f.value;S&&m(S,I)}function u(I){const S=I.url;let A=null;if(S&&(A=S.startsWith("http")?S:`${window.location.origin}${S}`),!A)return null;const E=(I.service||"").toString().toLowerCase(),z=I.count??null;return E&&E!=="vtile"?{service:E,count:z,source:{type:"raster",tiles:[A],tileSize:256,minzoom:0,maxzoom:20}}:{service:E,count:z,source:{type:"vector",tiles:[A],minzoom:0,maxzoom:14},layer:{style:I.style},card:I.card,popup:I.popup}}function g(I,S,A){var F;const E=A??b(I);if(!E)return;const z=u(E);if(!z)return;const T=ne(E.id,z,i);if(T)if(T.setVisible(S),S){if(!r.value.includes(I)&&(r.value.push(I),(F=i.value)!=null&&F.getLayer(I)))try{i.value.moveLayer(I)}catch(B){console.warn("Cannot move new layer",I,B)}}else r.value=r.value.filter(B=>B!==I),f.value===I&&(c(),f.value=null)}function h(){r.value.forEach(I=>{const S=ne(I);S&&S.setVisible(!1)}),r.value=[]}function y(I){r.value=[...I],e.nextTick(()=>{var z;if(!i.value)return;const S=((z=i.value.getStyle())==null?void 0:z.layers)??[];let A;const E=T=>S.filter(F=>{var B,$;return(F==null?void 0:F.source)===T||(F==null?void 0:F.id)===T||(($=(B=F==null?void 0:F.id)==null?void 0:B.startsWith)==null?void 0:$.call(B,`${T}`))}).map(F=>F.id);for(let T=I.length-1;T>=0;T-=1){const F=I[T],B=E(F);B.length&&(B.forEach($=>{var D;if((D=i.value)!=null&&D.getLayer($))try{i.value.moveLayer($,A)}catch(R){console.warn("Cannot move layer",$,R)}}),A=B[0])}})}function k(I){!I||!Array.isArray(I.filters)||I.filters.length===0||r.value.includes(I.id)&&(f.value=I.id,p[I.id]||(p[I.id]={}),n.value="filter")}function C(){n.value="catalog"}const M=e.computed(()=>f.value?b(f.value):null),j=e.computed(()=>{const I=f.value;return I?p[I]??{}:{}}),v=e.computed(()=>o.value.groups.reduce((I,S)=>I+S.layers.length,0)),N=e.computed(()=>n.value==="selected"?"Вибрані шари":n.value==="filter"?"Фільтр шарів":"Каталог"),x=e.computed(()=>n.value==="selected"?r.value.length:n.value==="catalog"?v.value:null),V=e.computed(()=>{var I;return n.value==="filter"?((I=M.value)==null?void 0:I.name)??"":""});async function L(){const S=await(await fetch("/api/gis-layer-list")).json(),A=new Map;S.forEach(T=>{const F=T.group_id??"other";A.has(F)||A.set(F,{id:F,name:T.group_name||"Інші шари",layers:[]}),A.get(F).layers.push(T)}),o.value={groups:Array.from(A.values())};const E=a.query.layers;if(!E)return;const z=Array.isArray(E)?E[0]:E;typeof z=="string"&&z.split(",").forEach(T=>{const F=T.trim();if(!F)return;const B=b(F);B&&g(F,!0,B)})}return e.watch(f,I=>{!I&&n.value==="filter"&&(n.value="catalog")}),e.watch(M,I=>{!I&&f.value&&(f.value=null)}),e.watch(r,I=>{const S={...a.query};I.length?S.layers=I.join(","):delete S.layers,s.replace({query:S}).catch(()=>{})},{deep:!0}),e.onMounted(L),(I,S)=>(e.openBlock(),e.createElementBlock("div",am,[e.createElementVNode("div",sm,[e.createElementVNode("div",cm,[S[5]||(S[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",dm,[e.createTextVNode(e.toDisplayString(N.value)+" ",1),x.value!==null?(e.openBlock(),e.createElementBlock("span",um,"("+e.toDisplayString(x.value)+")",1)):e.createCommentVNode("",!0),V.value?(e.openBlock(),e.createElementBlock("span",pm,e.toDisplayString(V.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("button",{onClick:h,class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers"},[...S[6]||(S[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-3656760f><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-3656760f></path><path d="M21 3v5h-5" data-v-3656760f></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-3656760f></path><path d="M8 16H3v5" data-v-3656760f></path></svg>',1)])])]),e.createElementVNode("div",fm,[e.createElementVNode("button",{onClick:S[0]||(S[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:S[1]||(S[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",mm,[n.value==="catalog"?(e.openBlock(),e.createBlock(jf,{key:0,class:"map-catalog-widget__scroll",catalog:o.value,selected:r.value,search:l.value,"onUpdate:search":S[2]||(S[2]=A=>l.value=A),onToggleLayer:g,onOpenFilter:k},null,8,["catalog","selected","search"])):n.value==="selected"?(e.openBlock(),e.createBlock(Qf,{key:1,catalog:o.value,selected:r.value,onToggleLayer:g,onSelectLayer:S[3]||(S[3]=A=>n.value="catalog"),onReorder:y,onRemove:S[4]||(S[4]=A=>r.value=r.value.filter(E=>E!==A))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(im,{key:2,layer:M.value,value:j.value,onChange:d,onClose:C},null,8,["layer","value"]))])]))}}),[["__scopeId","data-v-3656760f"]]),gm={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},hm={class:"flex items-start justify-between gap-3 p-5 pb-3"},ym={class:"inline-block text-xl font-semibold text-gray-800"},xm={key:0,class:"mt-1 text-sm text-gray-500"},bm={class:"flex items-center gap-[6px]"},km={class:"px-5 pb-5 space-y-6"},wm={key:0,class:"space-y-2"},_m={class:"flex flex-wrap gap-4"},Em=["value"],vm={key:1,class:"text-sm text-gray-500"},Bm={key:2,class:"text-sm text-gray-500"},Nm={class:"text-4xl font-medium text-gray-800"},Cm={class:"space-y-[14px]"},Vm={class:"flex items-center gap-[10px] text-gray-600"},$m={class:"font-medium text-gray-700"},Sm={class:"flex items-center justify-end text-end gap-3"},Am={class:"font-medium text-gray-800"},Lm={class:"min-w-[40px] font-medium text-[#3C3C4399]"},Uo=X(e.defineComponent({__name:"MapAttributeWidget",props:{config:{}},setup(t){const n=["#3a7a57","#d970d5","#8e997b","#b4c039","#a855f7","#71823a","#f79d92","#8b5cf6","#a6514e","#6b7280"],o=t,r=e.ref(!0),l=e.ref(!1),i=e.ref([]),a=e.ref(null),s=e.ref(null),p=e.ref(null),f=e.ref(null),b=e.ref(null),c=e.ref({}),m=e.ref(null);function d(T){return T&&JSON.parse(JSON.stringify(T))}const u=e.computed(()=>{const T=o.config.layer;if(typeof T!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const F=T.trim();if(!F)throw new Error("MapAttributeWidget: `layer` must be non-empty");return F}),g=e.computed(()=>{const{list:T,attribute:F}=o.config;if(Array.isArray(T)&&T.length)return T.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(F))return F.map(B=>B!=null?String(B).trim():"").filter(B=>B.length).map(B=>({id:B,text:null}));if(typeof F=="string"){const B=F.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(()=>g.value.map(T=>({id:T.id,label:T.text||c.value[T.id]||T.id})));e.watch(g,T=>{if(!T.length){m.value=null,i.value=[];return}(!m.value||!T.some(F=>F.id===m.value))&&(m.value=T[0].id)},{immediate:!0});const y=e.computed(()=>{var T;return m.value||((T=g.value[0])==null?void 0:T.id)||null});e.watch(u,()=>{var T,F;(F=(T=s.value)==null?void 0:T.remove)==null||F.call(T),s.value=null,p.value=null,f.value=null,b.value=null,c.value={}});const k=e.computed(()=>{var T;return(T=f.value)!=null&&T.length?{id:u.value,name:p.value,filters:f.value}:null}),C=e.computed(()=>{var T,F;return((F=(T=k.value)==null?void 0:T.filters)==null?void 0:F.length)||0});async function M(T){var $;const F=await fetch(`/api/gis-service/${encodeURIComponent(T)}`);if(!F.ok){let D="Не вдалося завантажити налаштування шару";try{const R=await F.json();D=(($=R==null?void 0:R.message)==null?void 0:$.error)||(R==null?void 0:R.message)||D}catch{}throw new Error(D)}const B=await F.json();return p.value=(B==null?void 0:B.name)||null,f.value=Array.isArray(B==null?void 0:B.filters)?B.filters:null,b.value=d((B==null?void 0:B.style)||{}),c.value=((B==null?void 0:B.attributes)||[]).reduce((D,R)=>{const q=typeof(R==null?void 0:R.name)=="string"?R.name.trim():"",U=typeof(R==null?void 0:R.ua)=="string"?R.ua.trim():"";return q&&(D[q]=U||q),D},{}),B}function j(T,F){let B=ne(T);if(!B){const $=`${location.origin}/api/vtile/${T}/ua/{z}/{x}/{y}.vmt`;B=ne(T,{source:{type:"vector",tiles:[$],minzoom:0,maxzoom:14},layer:{id:T,source:T,"source-layer":T,style:(F==null?void 0:F.style)||{}},card:F==null?void 0:F.card,popup:F==null?void 0:F.popup})}return s.value=B,B}async function v(T,F){var D;const B=`/api/gis-service/${encodeURIComponent(T)}/${encodeURIComponent(F)}`,$=await fetch(B);if(!$.ok){let R="Не вдалося отримати статистику";try{const q=await $.json();R=((D=q==null?void 0:q.message)==null?void 0:D.error)||(q==null?void 0:q.message)||R}catch{}throw new Error(R)}return $.json()}function N(T){const F=new Map;return T&&(T.rules||[]).forEach($=>{const D=($==null?void 0:$.value)??($==null?void 0:$.id);D!=null&&F.set(String(D),$)}),F}function x(T,F,B,$,D){if(typeof(F==null?void 0:F.color)=="string"&&F.color.trim())return F.color.trim();const R=o.config.colors||{};if(R[T])return R[T];const U=N(B==null?void 0:B.style).get(T);return typeof(U==null?void 0:U.color)=="string"&&U.color.trim()?U.color.trim():n[D%n.length]}function V(T,F,B,$){var D;return(F==null?void 0:F.text)||(F==null?void 0:F.label)||(F==null?void 0:F.name)||(F==null?void 0:F[`${$}_text`])||((D=N(B==null?void 0:B.style).get(T))==null?void 0:D.label)||T}function L(T,F,B,$){if(!T)return;const D=d((F==null?void 0:F.style)||b.value)||{},R=$.trim();if(!R)return;const q={...D.colors||{},...o.config.colors||{}};R===$&&B.forEach(U=>{U.color.trim()&&(q[U.id]=U.color)}),T.setStyle({...D,type:D.type||"polygon",colorAttr:R,opacity:.8,colors:q})}async function I(){var R,q;i.value=[],a.value=null;const T=u.value,F=y.value;if(!F)return;l.value=!0;const B=await M(T);j(T,B);const $=await v(T,F),D=Array.isArray($==null?void 0:$.rows)?$.rows.map((U,te)=>{const J=(U==null?void 0:U.id)??(U==null?void 0:U.value),ee=J!=null?String(J):"";if(!ee)return null;const se=V(ee,U,B,F),ke=Number((U==null?void 0:U.count)??0)||0,ve=x(ee,U,B,F,te);return{id:ee,label:se,count:ke,color:ve}}).filter(Boolean):[];i.value=D,a.value=((R=$==null?void 0:$.field)==null?void 0:R.label)||((q=$==null?void 0:$.field)==null?void 0:q.name)||null,L(s.value,B,D,F),l.value=!1}e.watch(()=>[u.value,y.value],()=>{I()},{immediate:!0});const S=e.computed(()=>"Набори даних"),A=e.computed(()=>i.value.reduce((T,F)=>T+F.count,0)),E=e.computed(()=>{var B;const T=y.value;return((B=h.value.find($=>$.id===T))==null?void 0:B.label)||null||a.value||T||null});function z(T){return A.value?`${(T/A.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var T,F;(F=(T=s.value)==null?void 0:T.remove)==null||F.call(T)}),(T,F)=>r.value?(e.openBlock(),e.createElementBlock("div",gm,[e.createElementVNode("div",hm,[e.createElementVNode("div",null,[e.createElementVNode("h2",ym,e.toDisplayString(S.value),1),E.value&&h.value.length===1?(e.openBlock(),e.createElementBlock("p",xm,e.toDisplayString(E.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",bm,[k.value?(e.openBlock(),e.createBlock(Vt,{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:C.value,layer:k.value},null,8,["count","layer"])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",onClick:F[1]||(F[1]=B=>r.value=!1)},[...F[3]||(F[3]=[e.createElementVNode("svg",{class:"w-4 h-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},[e.createElementVNode("path",{d:"M18 6 6 18"}),e.createElementVNode("path",{d:"m6 6 12 12"})],-1)])])])]),e.createElementVNode("div",km,[h.value.length>1?(e.openBlock(),e.createElementBlock("div",wm,[e.createElementVNode("div",_m,[(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":F[2]||(F[2]=$=>m.value=$)},null,8,Em),[[e.vModelRadio,m.value]]),e.createElementVNode("span",null,e.toDisplayString(B.label),1)]))),128))])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",vm,"Завантаження…")):i.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",Nm,e.toDisplayString(A.value),1),e.createElementVNode("ul",Cm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,B=>(e.openBlock(),e.createElementBlock("li",{key:B.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",Vm,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:B.color})},null,4),e.createElementVNode("span",$m,e.toDisplayString(B.label),1)]),e.createElementVNode("div",Sm,[e.createElementVNode("span",Am,e.toDisplayString(B.count),1),e.createElementVNode("span",Lm,e.toDisplayString(z(B.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",Bm,"Дані відсутні"))])])):(e.openBlock(),e.createElementBlock("button",{key:0,class:"py-2 px-2.5 max-h-[38px] inline-flex items-center gap-x-1.5 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50",onClick:F[0]||(F[0]=B=>r.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-437c8d68"]]),Fm={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]"},Tm={key:0,class:"vs-select__options absolute z-50 mt-1 w-full bg-white border border-gray-300 shadow-lg rounded-lg text-sm"},Mm=["onClick"],Im={class:"relative flex-1 min-w-[140px]"},Dm=["placeholder"],jm="https://data.softpro.ua/api-user/gis-url-proxy",zm="https://geo.rv.ua/api-user/dzk.api",qo=X(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=Ee(),r=["xy","parcel"],l=e.computed(()=>{var M,j;const C=(j=(M=n.config)==null?void 0:M.tools)==null?void 0:j.filter(v=>r.includes(v));return C&&C.length?C:r}),i=e.computed(()=>{var C,M;return((M=(C=n.config)==null?void 0:C.placeholder)==null?void 0:M.trim())||"Пошук…"}),a=e.ref(l.value[0]);e.watch(l,C=>{C.includes(a.value)||(a.value=C[0])});const s=e.ref(""),p=e.ref(!1),f=e.ref(null);e.watch(a,()=>{s.value="",p.value=!1});function b(C){a.value=C}function c(C){if(!p.value)return;const M=f.value;M&&!M.contains(C.target)&&(p.value=!1)}e.onMounted(()=>{window.addEventListener("click",c,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",c,!0)});function m(C){return C==="xy"?"Координати":C==="parcel"?"Кадастр":"Адреси"}function d(C){const M=C.replace(/[,]+/g," ").trim();if(!M)return null;const j=M.split(/\s+/).filter(Boolean);if(j.length<2)return null;const v=j.slice(0,2).map(Number);if(!v.every(A=>Number.isFinite(A)))return null;let[N,x]=v,V=N,L=x;const I=A=>Math.abs(A)<=90,S=A=>Math.abs(A)<=180;if(!I(V)||!S(L))if(I(L)&&S(V))V=x,L=N;else return null;return{lat:V,lng:L}}function u(C){return((C==null?void 0:C.items)||[]).map((j,v)=>{var N,x,V;return{id:String((j==null?void 0:j.id)??v),title:(j==null?void 0:j.title)||((N=j==null?void 0:j.address)==null?void 0:N.label)||"Знайдений обʼєкт",lat:Number((x=j==null?void 0:j.position)==null?void 0:x.lat),lng:Number((V=j==null?void 0:j.position)==null?void 0:V.lng)}})}function g(C){const M=(C==null?void 0:C.result)||(C==null?void 0:C.data)||C;if(!M)return[];const j=M.geom_centroid;if(!j||!Array.isArray(j.coordinates))return[];const[v,N]=j.coordinates;return!Number.isFinite(N)||!Number.isFinite(v)?[]:[{id:"parcel",title:M.cadnum||M.cad_num||"Земельна ділянка",lat:N,lng:v}]}function h(C){const j=C.replace(/\s+/g,"").split(":");if(console.log(j),j.length!==4)return!1;const v=[10,2,3,4];return j.every((N,x)=>N.length===v[x]&&/^\d+$/.test(N))}function y(C){var j,v;const M=((j=n.config)==null?void 0:j.zoom)??17;(v=o.flyTo)==null||v.call(o,{center:[C.lng,C.lat],zoom:M})}async function k(){const C=s.value.trim();if(C){if(a.value==="xy"){const M=d(C);if(!M){he.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}y({...M}),s.value="";return}try{const M=new URL(a.value==="here"?jm:zm);if(a.value==="here")M.searchParams.set("searchtext",C);else{if(!h(C)){he.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}M.searchParams.set("cad_num",C)}const j=await fetch(M.toString());if(!j.ok)throw new Error(`HTTP ${j.status}`);const v=await j.json(),N=a.value==="here"?u(v):g(v);if(!N.length)he.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const x=N[0];y(x),s.value=""}}catch(M){const j=(M==null?void 0:M.message)||"Помилка пошуку";he.notify({type:"error",title:"Пошук",message:j})}}}return(C,M)=>(e.openBlock(),e.createElementBlock("div",Fm,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(k,["prevent"])},[l.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:f,class:"relative search-type w-[140px]"},[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:M[0]||(M[0]=j=>p.value=!p.value)},[e.createElementVNode("span",null,e.toDisplayString(m(a.value)),1),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":p.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[...M[2]||(M[2]=[e.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))]),p.value?(e.openBlock(),e.createElementBlock("div",Tm,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,j=>(e.openBlock(),e.createElementBlock("li",{key:j,class:"px-3 py-2 cursor-pointer hover:bg-gray-100",onClick:v=>b(j)},e.toDisplayString(m(j)),9,Mm))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",Im,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":M[1]||(M[1]=j=>s.value=j),placeholder:i.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,Dm),[[e.vModelText,s.value,void 0,{trim:!0}]]),M[3]||(M[3]=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))])],32)]))}}),[["__scopeId","data-v-8ac9fe48"]]),Om="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",Pm="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",Rm=X(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:r,removeControl:l}=Ee(),i=e.ref(null),a=e.ref(null),s=e.ref(null),p=e.ref(null);let f=null;function b(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function c(v){if(Array.from(document.styleSheets).some(V=>{var L;return(L=V==null?void 0:V.href)==null?void 0:L.includes(v)}))return;const x=document.createElement("link");x.rel="stylesheet",x.href=v,document.head.appendChild(x)}function m(v){return new Promise((N,x)=>{const V=Array.from(document.scripts).find(I=>I.src===v);if(V){if(V._loaded)return N();V.addEventListener("load",()=>N()),V.addEventListener("error",()=>x(new Error(`Failed ${v}`)));return}const L=document.createElement("script");L.src=v,L.async=!0,L.onload=()=>{L._loaded=!0,N()},L.onerror=()=>x(new Error(`Failed ${v}`)),document.head.appendChild(L)})}function d(){var N,x,V;const v=window;return v.MapboxExportControl||((N=v.mapboxgl)==null?void 0:N.MapboxExportControl)||((x=v.mapboxglExport)==null?void 0:x.MapboxExportControl)||((V=v.mapboxglExport)==null?void 0:V.default)||null}function u(){const v=document.createElementNS("http://www.w3.org/2000/svg","svg");return v.setAttribute("xmlns","http://www.w3.org/2000/svg"),v.setAttribute("viewBox","0 0 24 24"),v.setAttribute("width","18"),v.setAttribute("height","18"),v.setAttribute("fill","none"),v.setAttribute("stroke","currentColor"),v.setAttribute("stroke-width","2"),v.setAttribute("stroke-linecap","round"),v.setAttribute("stroke-linejoin","round"),v.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((x,V)=>{const L=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(x).forEach(([I,S])=>{L.setAttribute(I,S)}),v.appendChild(L)}),v}function g(){const v=document.createElement("button");v.id="print-btn",v.type="button",v.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(" "),v.setAttribute("aria-label","Друк");const N=u(),x=document.createElement("span");return x.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(" "),x.textContent="Друк",x.setAttribute("aria-hidden","true"),v.appendChild(N),v.appendChild(x),v.addEventListener("click",V=>{V.stopPropagation(),h()}),p.value=v,v}function h(){if(!s.value)return;s.value.style.display==="block"?k():y()}function y(){var v,N,x;s.value&&(s.value.style.display="block",(v=p.value)==null||v.classList.add("scale-105","shadow-xl"),(N=a.value)==null||N.toggleCrosshair(!0),(x=a.value)==null||x.togglePrintableArea(!0),document.addEventListener("click",C))}function k(){var v,N,x;s.value&&(s.value.style.display="none",(v=p.value)==null||v.classList.remove("scale-105","shadow-xl"),(N=a.value)==null||N.toggleCrosshair(!1),(x=a.value)==null||x.togglePrintableArea(!1),document.removeEventListener("click",C))}function C(v){const N=i.value;N&&(v.target&&N.contains(v.target)||k())}function M(v){const N={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};v.querySelectorAll("label, option").forEach(V=>{var I;const L=(I=V.textContent)==null?void 0:I.trim();L&&N[L]&&(V.textContent=N[L])});const x=v.querySelector("button");x&&(x.textContent="Друкувати")}function j(v){const N=v.querySelector(".mapboxgl-export-list");if(!N||!i.value)return;s.value=N;const x=v.querySelector("button");if(x&&(x.style.display="none"),v.style.display="none",!p.value){const L=g();i.value.appendChild(L)}N.style.display="none";const V="_printControlBound";if(!N[V]){const L=I=>I.stopPropagation();N.addEventListener("click",L),N.addEventListener("mousedown",L),N[V]=!0}i.value.appendChild(N),M(N)}return e.onMounted(async()=>{await(o==null?void 0:o());const v=n.value;if(!v)return;c(Om),b();try{await m(Pm)}catch(V){console.warn("[MapPrintControl] load error",V);return}const N=d();if(!N)return;const x=new N({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(a.value=x,typeof x.onAdd=="function"){const V=x.onAdd.bind(x);x.onAdd=L=>{const I=V(L);return setTimeout(()=>I&&j(I),50),I}}r?r(x,"top-right"):v.addControl(x,"top-right"),f=V=>{V.key==="Escape"&&k()},document.addEventListener("keyup",f)}),e.onBeforeUnmount(()=>{k(),f&&(document.removeEventListener("keyup",f),f=null);const v=n.value;if(a.value)try{l?l(a.value):v==null||v.removeControl(a.value)}catch{}a.value=null}),(v,N)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:i,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-d08551cb"]]),Um={class:"map-center-control"},qm=X(e.defineComponent({__name:"MapCenterControl",props:{center:{},zoom:{}},setup(t){const n=t,{map:o,ready:r}=Ee(),l=e.ref(null),i=e.ref(null);function a(p){if(Array.isArray(p)&&p.length>=2){const[f,b]=p.slice(0,2).map(c=>Number(c));return Number.isNaN(f)||Number.isNaN(b)?null:[f,b]}if(p&&typeof p=="object"){const f=p,b=f.lng??f.lon??f.long??f.x,c=f.lat??f.y;if(b!=null&&c!=null){const m=Number(b),d=Number(c);if(!Number.isNaN(m)&&!Number.isNaN(d))return[m,d]}}if(typeof p=="string"){const f=p.split(",").map(b=>Number(b.trim()));if(f.length>=2&&f.every(b=>!Number.isNaN(b)))return[f[0],f[1]]}return null}e.watch(()=>n.center,p=>{const f=a(p);f&&(l.value=f)},{immediate:!0}),e.watch(()=>n.zoom,p=>{const f=Number(p);Number.isNaN(f)||(i.value=f)},{immediate:!0}),e.onMounted(async()=>{await(r==null?void 0:r());const p=o.value;if(p){if(!l.value){const f=p.getCenter();l.value=[f.lng,f.lat]}i.value==null&&(i.value=p.getZoom())}});function s(){const p=o.value;if(!p)return;const f=l.value||(()=>{const c=p.getCenter();return[c.lng,c.lat]})(),b=i.value??p.getZoom();p.flyTo({center:f,zoom:b})}return(p,f)=>(e.openBlock(),e.createElementBlock("div",Um,[e.createElementVNode("button",{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(s,["stop"])},[e.createVNode(e.unref(sr),{class:"w-4 h-4"}),f[0]||(f[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))])]))}}),[["__scopeId","data-v-6caf041e"]]),Hm={class:"cursor-coordinates"},Ym={class:"cursor-coordinates__text"},Zm=X(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Hm,[e.createElementVNode("span",Ym,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-d83db59a"]]),Wm={class:"minimap__wrapper"},$t="minimap-viewport",Km="minimap-viewport-layer",Gm=X(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var C,M,j,v;const n=t,o=((M=(C=e.getCurrentInstance())==null?void 0:C.appContext.config.globalProperties)==null?void 0:M.$settings)||null,r=ct((j=o==null?void 0:o.map)==null?void 0:j.center)||[30,50],l=e.ref(null),i=e.shallowRef(null),a=(v=n.options)==null?void 0:v.active,s=e.ref(a===void 0?!1:!!a);function p(N,x){return typeof N=="number"&&Number.isFinite(N)?N:x}const f=e.computed(()=>{var I,S;const N=(I=n.options)==null?void 0:I.width,x=(S=n.options)==null?void 0:S.height,V=p(n.width??N,210),L=p(n.height??x,150);return{width:`${V}px`,height:`${L}px`}});function b(){var x,V;const N=(V=(x=n.mapContext)==null?void 0:x.map)==null?void 0:V.value;if(!N||typeof N.getStyle!="function")return null;try{const L=N.getStyle();return L?JSON.parse(JSON.stringify(L)):null}catch{return null}}let c=null;function m(){var I;if(typeof window>"u"||i.value||!l.value)return;const N=b(),x=r,V={container:l.value,style:N??{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:x,zoom:((I=n.options)==null?void 0:I.zoom)??3,interactive:!1,attributionControl:!1},L={...V,...n.options??{}};L.container=V.container,i.value=new maplibregl.Map(L),i.value.on("load",()=>{u(),h()})}function d(){if(!i.value)return;const N=b();N&&(i.value.once("styledata",()=>{u(),h()}),i.value.setStyle(N))}function u(){if(i.value){if(typeof i.value.isStyleLoaded=="function"&&!i.value.isStyleLoaded()){i.value.once("styledata",()=>{u(),h()});return}i.value.getSource($t)||(i.value.addSource($t,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),i.value.addLayer({id:Km,type:"fill",source:$t,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function g(){s.value=!s.value,s.value&&e.nextTick(()=>{var N;return(N=i.value)==null?void 0:N.resize()})}function h(){var A,E;const N=(E=(A=n.mapContext)==null?void 0:A.map)==null?void 0:E.value;if(!i.value||!N||!N.getBounds)return;if(typeof i.value.isStyleLoaded=="function"&&!i.value.isStyleLoaded()){i.value.once("styledata",()=>{h()});return}const x=N.getBounds();if(!x)return;const V=x.getNorthEast(),L=x.getSouthWest();if(!V||!L)return;const I=[[L.lng,V.lat],[V.lng,V.lat],[V.lng,L.lat],[L.lng,L.lat],[L.lng,V.lat]],S=i.value.getSource($t);if(!S){u();return}S.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[I]},properties:{}})}function y(){var V;const N=n.mapContext,x=(V=N==null?void 0:N.map)==null?void 0:V.value;!(N!=null&&N.on)||!x||(c==null||c(),c=N.on("move",h),h())}async function k(){const N=n.mapContext;if(N){if(typeof N.ready=="function")try{await N.ready()}catch{return}y()}}return e.onMounted(()=>{m(),k()}),e.watch(()=>n.mapContext,()=>{k(),h()}),e.watch(()=>{var N,x;return(x=(N=n.mapContext)==null?void 0:N.map)==null?void 0:x.value},()=>{i.value&&(d(),k())}),e.watch(f,()=>{i.value&&e.nextTick(()=>{var N;return(N=i.value)==null?void 0:N.resize()})}),e.watch(()=>n.options,()=>{var x;c==null||c(),c=null,i.value&&(i.value.remove(),i.value=null);const N=(x=n.options)==null?void 0:x.active;typeof N=="boolean"&&(s.value=N),e.nextTick(()=>{m(),k()})},{deep:!0}),e.onBeforeUnmount(()=>{c==null||c(),c=null,i.value&&(i.value.remove(),i.value=null)}),(N,x)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":s.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:g},[e.createVNode(e.unref(rr))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",Wm,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:l,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(f.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,s.value]])]),_:1})],2))}}),[["__scopeId","data-v-ff9c5f7b"]]),Xm={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},Jm={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},Qm={class:"map-widget__overlay-grid"},e0={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},t0={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},n0={class:"map-widget__stack"},o0={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom mb-5"},r0={class:"map-widget__stack map-widget__stack--bottom"},l0={key:0,class:"map-widget__state"},i0={key:1,class:"map-widget__state map-widget__state--error"},an=X(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{}},setup(t){var St,At,Xe,ut;const n=t,o=Ne.useRoute(),r=Ne.useRouter(),l=e.ref(null),i=e.ref({}),a=e.ref(null),s=e.ref(!1),p=e.ref(null),f=e.ref(!1),b=e.ref([]),c=e.computed(()=>n.id||"main"),m=e.computed(()=>{var O,H;return{height:((O=n.height)==null?void 0:O.trim())||((H=i.value)==null?void 0:H.height)||"calc(100vh - 65px)"}}),d=e.computed(()=>{var O;return((O=i.value)==null?void 0:O.name)??null}),u=e.computed(()=>{var O;return((O=i.value)==null?void 0:O.description)??null}),g=e.computed(()=>{var O;return A((O=i.value)==null?void 0:O.maps)}),h=e.computed(()=>{var H,G;const O=((H=i.value)==null?void 0:H.minZoom)??((G=i.value)==null?void 0:G.minzoom)??null;return typeof O=="number"?O:null}),y=e.computed(()=>{var H,G;const O=((H=i.value)==null?void 0:H.maxZoom)??((G=i.value)==null?void 0:G.maxzoom)??null;return typeof O=="number"?O:typeof n.maxZoom=="number"?n.maxZoom:20}),k=e.ref(null),C=e.computed(()=>{if(!k.value)return null;const{lng:O,lat:H}=k.value;return`${H.toFixed(6)}, ${O.toFixed(6)}`}),M=e.computed(()=>{var O;return((O=l.value)==null?void 0:O.ctx)??null}),j=e.computed(()=>{var O;return((O=i.value)==null?void 0:O.minimap)??null});function v(O){if(!O||typeof O!="object")return O;const H=ct(O.center);return H?{...O,center:H}:O}const N=((At=(St=e.getCurrentInstance())==null?void 0:St.appContext.config.globalProperties)==null?void 0:At.$settings)||null;function x(O){if(O==null)return null;const H=Number(typeof O=="string"?O.trim():O);return Number.isFinite(H)?H:null}const V=ct((Xe=N==null?void 0:N.map)==null?void 0:Xe.center),L=x((ut=N==null?void 0:N.map)==null?void 0:ut.zoom),I=e.computed(()=>{const O=(N==null?void 0:N.map)||null,H=(O==null?void 0:O.boundary)??null,G=(O==null?void 0:O.katottg)??null;return!H&&!G?null:{boundary:H,katottg:G}});function S(O){return typeof O=="string"&&O.trim()?O.trim().toLowerCase():"top-left"}function A(O){return Array.isArray(O)?O:O&&typeof O=="object"?Object.values(O).filter(Boolean):[]}const E=e.computed(()=>{var O;return A((O=i.value)==null?void 0:O.widgets)}),z=["left","right"],T=e.computed(()=>{const O={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 E.value.forEach(G=>{const re=S(G.position),K=H[re]??{side:"left",align:"top"};O[K.side][K.align].push(G)}),O});function F(O){return Array.isArray(O)?O[0]??null:typeof O=="string"?O:null}async function B(){var H;await e.nextTick();const O=(H=l.value)==null?void 0:H.ctx;return O?(O.ready&&await O.ready(),O):null}function $(){var O,H,G;return((G=(H=(O=l.value)==null?void 0:O.ctx)==null?void 0:H.map)==null?void 0:G.value)??null}function D(){const O=$();if(!O)return null;const H=O.getCenter();return{z:O.getZoom().toFixed(2),x:H.lng.toFixed(5),y:H.lat.toFixed(5)}}async function R(){var G;const O=await B(),H=(G=O==null?void 0:O.map)==null?void 0:G.value;H&&(typeof h.value=="number"&&H.setMinZoom(h.value),typeof y.value=="number"&&H.setMaxZoom(y.value))}async function q(){var K;if(a.value)return;const O=await B(),H=(K=O==null?void 0:O.map)==null?void 0:K.value;if(!H)return;const G=H.getCenter(),re=H.getZoom();a.value={center:[G.lng,G.lat],zoom:re}}function U(){const O=D();if(!O)return;const H=F(o.query.x),G=F(o.query.y),re=F(o.query.z);H===O.x&&G===O.y&&re===O.z||r.replace({query:{...o.query,...O}}).catch(()=>{})}function te(O,H,G=1e-6){return Math.abs(O-H)<=G}async function J(){var Ae;const O=await B(),H=(Ae=O==null?void 0:O.map)==null?void 0:Ae.value;if(!O||!H)return;const G=parseFloat(F(o.query.x)??""),re=parseFloat(F(o.query.y)??""),K=parseFloat(F(o.query.z)??""),ie=!Number.isNaN(G),fe=!Number.isNaN(re),Y=!Number.isNaN(K);let Se=!1;if(ie&&fe){const Te=H.getCenter();(!te(Te.lng,G)||!te(Te.lat,re))&&(H.setCenter([G,re]),Se=!0)}Y&&H.setZoom(K),(!ie||!fe||!Y||Se)&&U()}let ee=null,se=null;function ke(O){const H=O==null?void 0:O.lngLat;H&&(k.value={lng:H.lng,lat:H.lat})}async function ve(){const O=await B();O!=null&&O.on&&(ee==null||ee(),ee=O.on("moveend",U),se==null||se(),se=O.on("mousemove",ke))}e.onUnmounted(()=>{ee==null||ee(),ee=null,se==null||se(),se=null});async function Ve(){var O,H;f.value=!1,s.value=!0,p.value=null,k.value=null;try{const G=await fetch(`/api/gis-map/${encodeURIComponent(c.value)}`);if(!G.ok)throw new Error(`Помилка завантаження (${G.status})`);const re=await G.json(),K=ct(re.center)??V,ie=A(re.layers).map(Se=>v(Se)),fe=x(re.zoom)??L;i.value={...re,center:K??null,zoom:fe??re.zoom??null,layers:ie,widgets:re.widgets},b.value=re.tools||["home","print"];const Y=await B();Y&&(K&&((O=Y.setCenter)==null||O.call(Y,K)),fe!=null&&((H=Y.setZoom)==null||H.call(Y,fe)),a.value||await q()),await R(),await J(),await ve(),f.value=!0}catch(G){p.value=(G==null?void 0:G.message)||"Не вдалося завантажити карту"}finally{s.value=!1}}const we=e.computed(()=>{var re;const O=new Map;return A((re=i.value)==null?void 0:re.layers).forEach(K=>{if(!(K!=null&&K.id))return;const ie=v(K)||K;O.set(K.id,{...ie})}),E.value.filter(K=>(K==null?void 0:K.type)==="layers").flatMap(K=>{var ie;return A((ie=K==null?void 0:K.config)==null?void 0:ie.layers)}).forEach(K=>{if(!(K!=null&&K.id))return;const ie=O.get(K.id)||{},fe=v(K)||K;O.set(K.id,{...ie,...fe,actions:K.actions||ie.actions||null,name:ie.name||K.name||K.title||ie.title||K.id,title:ie.title||K.title||ie.name||null,visible:ie.visible??K.visible??!0})}),Array.from(O.values())}),$e=e.ref([]);function Fe(O){$e.value.includes(O)?$e.value=$e.value.filter(H=>H!==O):$e.value.push(O)}const je=e.computed(()=>O=>$e.value.includes(O.id));return e.watch([h,y],()=>{R()},{immediate:!0}),e.watch(c,()=>{Ve()}),e.onMounted(()=>{Ve()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{J()}),(O,H)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(m.value)},[e.createVNode(Lo,{ref_key:"mapViewRef",ref:l,class:"map-widget__view"},{default:e.withCtx(()=>{var G,re,K,ie;return[I.value?(e.openBlock(),e.createBlock(Do,{key:0,"layer-id":"app-boundary",boundary:I.value.boundary,katottg:I.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("div",Xm,[C.value?(e.openBlock(),e.createBlock(Zm,{key:0,coordinates:C.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(Gm,{"map-context":M.value,options:j.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Jm,[b.value.includes("home")?(e.openBlock(),e.createBlock(qm,{key:0,center:((G=i.value)==null?void 0:G.center)||((re=a.value)==null?void 0:re.center)||null,zoom:((K=i.value)==null?void 0:K.zoom)??((ie=a.value)==null?void 0:ie.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),b.value.includes("print")?(e.openBlock(),e.createBlock(Rm,{key:1})):e.createCommentVNode("",!0)]),f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Qm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(z,fe=>e.createElementVNode("div",{key:fe,class:e.normalizeClass(["map-widget__side",`map-widget__side--${fe}`])},[fe==="left"?(e.openBlock(),e.createElementBlock("div",e0)):e.createCommentVNode("",!0),T.value[fe].top.length?(e.openBlock(),e.createElementBlock("div",t0,[e.createElementVNode("div",n0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value[fe].top,Y=>{var Se,Ae,Te,Ze,Pe,ze,Re,Ue;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Y.id||Y.type,class:"map-overlay__item"},[Y.type==="info"?(e.openBlock(),e.createBlock(jo,{key:0,title:((Se=Y.config)==null?void 0:Se.title)||Y.title||null,content:((Ae=Y.config)==null?void 0:Ae.content)||"",links:g.value,"map-name":d.value,"map-description":u.value},null,8,["title","content","links","map-name","map-description"])):Y.type==="catalog"?(e.openBlock(),e.createBlock(Ro,{key:1,api:((Te=Y.config)==null?void 0:Te.api)||null},null,8,["api"])):Y.type==="layers"?(e.openBlock(),e.createBlock(Po,{key:2,layers:we.value,onAction:H[0]||(H[0]=pt=>Fe(pt.layerId)),config:Y.config},null,8,["layers","config"])):Y.type==="basemaps"?(e.openBlock(),e.createBlock(tn,{key:3,layers:((Ze=Y.config)==null?void 0:Ze.layers)||null,"default-layer":((Pe=Y.config)==null?void 0:Pe.default)||null,title:Y.title||((ze=Y.config)==null?void 0:ze.title)||null},null,8,["layers","default-layer","title"])):Y.type==="legend"?(e.openBlock(),e.createBlock(nn,{key:4,items:((Re=Y.config)==null?void 0:Re.items)||[]},null,8,["items"])):Y.type==="filters"&&je.value(Y)?(e.openBlock(),e.createBlock(en,{key:5,"layer-id":(Ue=Y.config)==null?void 0:Ue.layer,onClose:Fe},null,8,["layer-id"])):Y.type==="dataset"||Y.type==="attribute"?(e.openBlock(),e.createBlock(Uo,{key:6,config:Y.config},null,8,["config"])):Y.type==="search"?(e.openBlock(),e.createBlock(qo,{key:7,config:Y.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Y.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),T.value[fe].bottom.length?(e.openBlock(),e.createElementBlock("div",o0,[e.createElementVNode("div",r0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value[fe].bottom,Y=>{var Se,Ae,Te,Ze,Pe,ze,Re,Ue;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Y.id||Y.type,class:"map-overlay__item"},[Y.type==="info"?(e.openBlock(),e.createBlock(jo,{key:0,title:((Se=Y.config)==null?void 0:Se.title)||Y.title||null,content:((Ae=Y.config)==null?void 0:Ae.content)||"",links:g.value,"map-name":d.value,"map-description":u.value},null,8,["title","content","links","map-name","map-description"])):Y.type==="catalog"?(e.openBlock(),e.createBlock(Ro,{key:1,api:((Te=Y.config)==null?void 0:Te.api)||null},null,8,["api"])):Y.type==="layers"?(e.openBlock(),e.createBlock(Po,{key:2,layers:we.value,onAction:H[1]||(H[1]=pt=>Fe(pt.layerId)),config:Y.config},null,8,["layers","config"])):Y.type==="basemaps"?(e.openBlock(),e.createBlock(tn,{key:3,layers:((Ze=Y.config)==null?void 0:Ze.layers)||null,"default-layer":((Pe=Y.config)==null?void 0:Pe.default)||null,title:Y.title||((ze=Y.config)==null?void 0:ze.title)||null},null,8,["layers","default-layer","title"])):Y.type==="legend"?(e.openBlock(),e.createBlock(nn,{key:4,items:((Re=Y.config)==null?void 0:Re.items)||[]},null,8,["items"])):Y.type==="filters"&&je.value(Y)?(e.openBlock(),e.createBlock(en,{key:5,"layer-id":(Ue=Y.config)==null?void 0:Ue.layer,onClose:Fe},null,8,["layer-id"])):Y.type==="dataset"||Y.type==="attribute"?(e.openBlock(),e.createBlock(Uo,{key:6,config:Y.config},null,8,["config"])):Y.type==="search"?(e.openBlock(),e.createBlock(qo,{key:7,config:Y.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Y.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(Fo),e.createVNode(Io,{"map-id":c.value},null,8,["map-id"])],64)):e.createCommentVNode("",!0)]}),_:1},512),s.value?(e.openBlock(),e.createElementBlock("div",l0,"Завантаження карти…")):p.value?(e.openBlock(),e.createElementBlock("div",i0,e.toDisplayString(p.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-2fdbf6f4"]]);function a0(t){t.component("MapCustom",an)}pe.MapWidget=an,pe.Register=ns,pe.Service=Qp,pe.default=an,pe.install=a0,pe.template1=yn,pe.template2=xn,pe.template3=bn,pe.template4=kn,pe.template5=wn,Object.defineProperties(pe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
106
|
+
`),B=(a.value??"").trimEnd();a.value=B?`${B}
|
|
107
|
+
${M}`:M}s.value=!1,p.value=[]}function d(){s.value=!1,p.value=[]}function u(){const h=i.value==="html"?"html":"list",y={card_mode:h};h==="html"?y.html=a.value:h==="list"&&(y.list=l.value),r("save","card",y)}const g=[{value:"all",label:"Всі"},{value:"list",label:"Список"},{value:"none",label:"Жодне"},{value:"html",label:"HTML"}];return(h,y)=>(e.openBlock(),e.createElementBlock("div",Vu,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:c,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"}," Імпорт "),e.createElementVNode("button",{onClick:u,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"}," Зберегти ")]),e.createVNode(Cu,{modelValue:i.value,"onUpdate:modelValue":y[0]||(y[0]=k=>i.value=k),options:g},null,8,["modelValue"]),e.createElementVNode("div",$u,[i.value==="list"?(e.openBlock(),e.createBlock(Ke,{key:0,modelValue:l.value,"onUpdate:modelValue":y[1]||(y[1]=k=>l.value=k),"columns-scheme":f,"form-scheme":b,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):i.value==="html"?(e.openBlock(),e.createBlock(Co,{key:1,modelValue:a.value,"onUpdate:modelValue":y[2]||(y[2]=k=>a.value=k),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(et,{visible:s.value,"onUpdate:visible":y[3]||(y[3]=k=>s.value=k),selection:p.value,"onUpdate:selection":y[4]||(y[4]=k=>p.value=k),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:m,onCancel:d},null,8,["visible","selection","fields"])]))}}),Au={class:"flex flex-col flex-1 min-h-0"},Lu=e.defineComponent({__name:"vs-tab-filter",props:{fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n;console.log(o.columns);const l=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>l.value=u||[],{immediate:!0}),e.watch(l,u=>r("update:columns",u),{deep:!0,immediate:!0});const i=e.ref("list"),a=e.ref(!1),s=e.ref([]),p=[{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(){s.value=l.value.map(u=>u.name||u.id),a.value=!0}function c(){var y;const u=[...l.value],g=((y=o.fields)==null?void 0:y.filter(k=>s.value.includes(k.name)))||[],h=nt(u,g,{selectedKeys:s.value,resolveKey:k=>qe(k)});l.value=h,a.value=!1,s.value=[]}function m(){a.value=!1,s.value=[]}function d(){let u=[];i.value==="all"?u=o.fields||[]:i.value==="none"?u=[]:u=l.value,r("save",u)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",Au,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:b,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"}," Імпорт "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти фільтр ")]),i.value==="list"?(e.openBlock(),e.createBlock(Ke,{key:0,modelValue:l.value,"onUpdate:modelValue":g[0]||(g[0]=h=>l.value=h),"columns-scheme":p,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(et,{visible:a.value,"onUpdate:visible":g[1]||(g[1]=h=>a.value=h),selection:s.value,"onUpdate:selection":g[2]||(g[2]=h=>s.value=h),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:c,onCancel:m},null,8,["visible","selection","fields"])]))}}),Lo=e.defineComponent({__name:"MapView",setup(t,{expose:n}){var f,b;const o=e.ref(null),r=e.ref(null),l=((b=(f=e.getCurrentInstance())==null?void 0:f.appContext.config.globalProperties)==null?void 0:b.$settings)||null,i=Kd({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},doubleClickZoom:!1},controls:{navigation:!0,scale:!0},settings:l});async function a(){var m;await e.nextTick();const c=(m=i.map)==null?void 0:m.value;c!=null&&c.resize&&c.resize()}function s(){typeof ResizeObserver>"u"||r.value||!o.value||(r.value=new ResizeObserver(()=>{a()}),r.value.observe(o.value))}function p(){var c;(c=r.value)==null||c.disconnect(),r.value=null}return e.onMounted(()=>{a(),s(),window.addEventListener("resize",a)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",a),p()}),n({ctx:i}),(c,m)=>(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))}}),Fu=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleSpec:{}},setup(t,{expose:n}){var u,g,h,y,k;const{map:o,flyTo:r,setZoom:l}=Ee(),i=((g=(u=e.getCurrentInstance())==null?void 0:u.appContext.config.globalProperties)==null?void 0:g.$settings)||null,a=t,s=a.id;String(a.id);const p=`${location.origin}/api/vtile/${a.id}/ua/{z}/{x}/{y}.vmt?all=1`,f=ne(s,{source:{type:"vector",tiles:[p],minzoom:0,maxzoom:14},popup:a.layer.popup,layer:{style:(h=a.layer)==null?void 0:h.style}});n({layerHandle:f}),r({center:a.layer.center||((y=i==null?void 0:i.map)==null?void 0:y.center)||[30,50],animate:!1}),l(((k=i==null?void 0:i.map)==null?void 0:k.zoom)||11),ne("point",{point:a.layer.center,style:{color:"orange"}});let b=null;function c(){if(!(f!=null&&f.setTiles))return;const C=p.includes("?")?"&":"?",M=`${p}${C}_=${Date.now()}`;f.setTiles([M])}function m(){b&&clearTimeout(b),b=setTimeout(()=>{b=null,d().catch(C=>console.error("Failed to update map layer",C))},300)}async function d(){o.value&&a.styleSpec&&(c(),f.setStyle(a.styleSpec))}return e.watch(()=>a.styleSpec,m,{deep:!0}),e.onBeforeUnmount(()=>{f.remove()}),(C,M)=>null}}),bt=e.ref(null);function Tu(){bt.value=null}function Mu(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(bt,a=>{a!==o()&&n.value&&(n.value=!1)});function r(){bt.value=o(),n.value=!0}function l(){bt.value===o()&&(bt.value=null),n.value=!1}function i(){n.value?l():r()}return{isOpen:n,open:r,close:l,toggle:i}}const Iu={class:"map-filter"},Du={class:"map-filter__header"},ju={class:"map-filter__title"},zu={"aria-hidden":"true"},Qt="#map-filter-popover-host",Vt=X(e.defineComponent({__name:"MapFilterPopover",props:{count:{},layer:{},catalogAnchor:{},disabled:{type:Boolean}},setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/filter")),o=t,r=e.computed(()=>{var D;return((D=o.layer)==null?void 0:D.id)??""}),l=e.computed(()=>`filter-popover-${r.value}`),{isOpen:i,close:a,toggle:s}=Mu(l),p=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),f=e.ref(null),b=e.ref(null);let c=null;const m=e.ref({}),d=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),u=e.computed(()=>i.value),g=e.computed(()=>{var D;return Array.isArray((D=o.layer)==null?void 0:D.filters)?o.layer.filters:[]}),h=e.computed(()=>g.value.length>0),y=e.computed(()=>{var D;return((D=o.layer)==null?void 0:D.name)??""}),k=e.computed(()=>g.value),C=e.ref(null),M=e.computed(()=>g.value.length),j=e.computed(()=>M.value<=2),B=e.computed(()=>j.value?"body":typeof window>"u"||C.value?Qt:"body"),N=e.computed(()=>!u.value||!j.value?{}:{position:"absolute",top:`${p.top}px`,left:`${p.left}px`,transform:p.transform,zIndex:1e3,width:"280px"});function x(){a()}function V(D,R,q=8){const U=window.scrollY+q,te=window.scrollY+window.innerHeight-q;let J=D;return J+R>te&&(J=te-R),J<U&&(J=U),J}function L(){var se,ke,Be;if(!f.value||!j.value)return;const D=f.value.getBoundingClientRect(),R=window.scrollX+8,q=window.scrollX+window.innerWidth-8,U=((se=b.value)==null?void 0:se.offsetWidth)||280,te=((ke=b.value)==null?void 0:ke.offsetHeight)||0;let J=0,ee=0;if((Be=o.catalogAnchor)!=null&&Be.value){const Ve=o.catalogAnchor.value.getBoundingClientRect(),we=Ve.top+window.scrollY;J=V(we,te,8);const $e=Ve.right+window.scrollX+12,Fe=q-U,je=R;ee=Math.min(Math.max($e,je),Math.max(je,Fe))}else{const Ve=D.bottom+window.scrollY+8;J=V(Ve,te,8);let we=D.left+window.scrollX;we<R&&(we=R),we+U>q&&(we=Math.max(R,q-U)),ee=we}p.left=ee,p.top=J,p.transform="none"}function I(){j.value||$(),s(),i.value&&j.value&&e.nextTick(()=>{L(),F(),requestAnimationFrame(()=>L())})}function S(){o.disabled||I()}e.watch(u,D=>{D&&j.value?e.nextTick(()=>{L(),F(),requestAnimationFrame(()=>L())}):(v(),j.value||$())}),e.watch(k,()=>{!u.value||!j.value||e.nextTick(()=>L())},{deep:!0}),e.watch(j,D=>{u.value&&(D?e.nextTick(()=>{L(),F()}):(v(),$()))}),e.watch(()=>o.disabled,D=>{D&&(a(),m.value={})});function A(){!u.value||!j.value||L()}function E(D){const R=r.value;if(!R)return;const q=ne(R);if(!(q!=null&&q.setFilter))return;m.value=D;const U=Object.entries(D).map(([te,J])=>`${te}=${J}`).join("|");q.setFilter(U)}function z(D){if(!o.disabled)return;const R=D.currentTarget;if(!R)return;const q=R.getBoundingClientRect();d.left=q.left+q.width/2+window.scrollX,d.top=q.bottom+8+window.scrollY,d.visible=!0}function T(){d.visible=!1}e.onMounted(()=>{$(),window.addEventListener("resize",A),window.addEventListener("scroll",A,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",A),window.removeEventListener("scroll",A,!0),v()});function F(){v(),!(!b.value||!j.value)&&(c=new ResizeObserver(()=>{!u.value||!j.value||L()}),c.observe(b.value))}function v(){c&&(c.disconnect(),c=null)}function $(){typeof window>"u"||typeof document>"u"||(C.value=document.querySelector(Qt))}return(D,R)=>h.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(S,["prevent","stop"]),onMouseenter:z,onMouseleave:T,onFocus:z,onBlur:T},[...R[2]||(R[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:B.value},[e.createElementVNode("div",{class:e.normalizeClass(["vst-popover__content inline-block z-50 rounded-[16px] bg-white text-sm text-gray-500 rounded-md shadow-lg bottom mapLayer-filter__popover",{"mapLayer-filter__popover--static":!j.value}]),style:e.normalizeStyle(N.value),ref_key:"panel",ref:b,onClick:R[1]||(R[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Iu,[e.createElementVNode("div",Du,[e.createElementVNode("h3",ju,e.toDisplayString(y.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:x},[e.createElementVNode("span",zu,[e.createVNode(e.unref(ur),{class:"h-4 w-4"})]),R[3]||(R[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:k.value,value:m.value,limit:10,onChange:R[0]||(R[0]=q=>E(q.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${d.top}px`,left:`${d.left}px`})},e.toDisplayString(d.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-e46ae0d6"]]),Ou={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"},en=X(e.defineComponent({__name:"MapFilterWidget",props:{filters:{},title:{},layerId:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",Ou,[e.createVNode(Vt,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])]))}}),[["__scopeId","data-v-5db0f90a"]]),Pu={class:"flex flex-row gap-x-3 z-10 relative widget"},Ru=["onClick"],Uu=["src","alt"],tn=e.defineComponent({__name:"BaseMaps",setup(t){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=e.ref("gki"),r=ne("base",{source:{type:"raster",tiles:[n[o.value].url]},beforeId:0});function l(i){if(o.value=i,!n[i].url)return r.setVisible(!1);r.setVisible(!0),r.setTiles([n[i].url])}return(i,a)=>(e.openBlock(),e.createElementBlock("div",Pu,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,(s,p)=>e.createElementVNode("div",{key:p,onClick:f=>l(p)},[e.createElementVNode("div",{class:e.normalizeClass(["w-14 h-14 flex items-center justify-center bg-gray-200 rounded-xl shadow-2xs cursor-pointer transition-all border-4",o.value===p?"border-blue-500":"border-gray-200"])},[s.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:s.preview,alt:s.title,class:"object-cover rounded-lg w-12 h-12"},null,8,Uu)):e.createCommentVNode("",!0)],2)],8,Ru)),64))]))}}),qu={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%"}},Hu={class:"flex flex-col gap-1 p-5"},Yu={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},nn=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:r}=Ee(),l=e.ref([]);let i=null;function a(b){return b?b.map((c,m)=>{var g;const d=(c==null?void 0:c.name)||(c==null?void 0:c.label)||(c==null?void 0:c.title)||(c==null?void 0:c.id)||`Layer ${m+1}`,u=(c==null?void 0:c.color)||(c==null?void 0:c.fill)||((g=c==null?void 0:c.paint)==null?void 0:g.color)||"#3388ff";return{id:`${d}-${m}`,label:d,color:u}}):[]}function s(b){return b!=null&&b.layers?b.layers.filter(c=>{const m=c.paint||{};return m["fill-color"]||m["line-color"]||m["circle-color"]}).map((c,m)=>{var g;const d=c.paint||{},u=d["fill-color"]||d["line-color"]||d["circle-color"]||"#3388ff";return{id:c.id||`layer-${m}`,label:((g=c.metadata)==null?void 0:g.title)||c.id||`Layer ${m+1}`,color:u}}):[]}async function p(){var m;await r();const b=o.value;if(!b)return;const c=(m=b.getStyle)==null?void 0:m.call(b);l.value=s(c)}function f(){const b=o.value;if(!b)return;i==null||i();const c=()=>p();b.on("styledata",c),i=()=>b.off("styledata",c)}return e.watch(()=>n.items,async b=>{b!=null?(l.value=a(b),i==null||i()):(await r(),f(),p())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await r(),f(),p())}),e.onBeforeUnmount(()=>{i==null||i(),i=null}),(b,c)=>l.value.length?(e.openBlock(),e.createElementBlock("div",qu,[e.createElementVNode("div",Hu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.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:m.color})},null,4),e.createElementVNode("span",Yu,[e.createElementVNode("span",null,e.toDisplayString(m.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function Zu(){const{map:t,ready:n}=Ee(),o=e.ref(null),r=e.ref(null),l=e.ref(null),i=e.ref(null);let a=[];function s(){a.forEach(d=>d()),a=[]}const p=d=>{const u=(d==null?void 0:d.properties)||{};return!!(u.cluster||u.point_count||u.point_count_abbreviated)},f=d=>{var y,k;o.value=[d.point.x,d.point.y];const u=t.value.queryRenderedFeatures(d.point);if(!(u!=null&&u.length)){b();return}const g=u.find(C=>!p(C));if(!g){b();return}const h=ne(g.source)||ne((y=g.layer)==null?void 0:y.id);h!=null&&h.popup&&(r.value=((k=h.popup)==null?void 0:k.fields)||h.popup,i.value=g.properties)},b=()=>{r.value=null,i.value=null,o.value=null};async function c(){await n(),t.value&&(s(),t.value.on("mousemove",f),t.value.on("mouseleave",b))}function m(){s(),r.value=null,i.value=null,o.value=null}return n().then(c),{popupCoords:o,popupFields:r,popupValues:i,disable:m,title:l}}const Wu={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},Ku={class:"space-y-1.5"},Gu={class:"font-bold text-slate-700"},Xu={class:"text-slate-700"},Fo=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:r,disable:l}=Zu(),i=e.ref(null),a=e.ref({left:"-9999px",top:"-9999px"}),s=e.computed(()=>{const u=o.value||[],g=r.value||{};return u.filter(h=>(h==null?void 0:h.meta)!=="title").map((h,y)=>m(h,g,y)).filter(h=>h.label)}),p=e.computed(()=>{const u=o.value||[],g=r.value||{},h=u.find(y=>(y==null?void 0:y.meta)==="title");return h?m(h,g,0):null}),f=e.computed(()=>{var g;const u=s.value;return(g=p.value)!=null&&g.value?[{...p.value,key:`${p.value.key}-title`,label:"Назва"},...u]:u}),b=new Intl.NumberFormat("uk-UA",{maximumFractionDigits:2});function c(u,g){if(g==null||g==="")return g;if((u==null?void 0:u.type)==="number"){const h=typeof g=="number"?g:Number(g);if(Number.isFinite(h))return b.format(h)}return g}function m(u,g,h){const y=u.name||u.label||u.title||`field-${h}`,k=u.label||u.title||u.name||y,C=u.name?g[u.name]:void 0,j=(u.name?g[`${u.name}_text`]:void 0)??C??u.value??null;return{key:y,label:k,value:c(u,j)}}function d(){if(!f.value.length||!n.value||!i.value){a.value={left:"-9999px",top:"-9999px"};return}const[u,g]=n.value;a.value={left:`${u+18}px`,top:`${g+18}px`}}return e.watch([n,f],()=>{e.nextTick(()=>d())}),e.onBeforeUnmount(()=>{l()}),(u,g)=>f.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:i,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(a.value)},[e.createElementVNode("div",Wu,[e.createElementVNode("div",Ku,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.key,class:"flex flex-col"},[e.createElementVNode("span",Gu,e.toDisplayString(h.label),1),e.createElementVNode("span",Xu,e.toDisplayString(h.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function Ju(){const{map:t,ready:n}=Ee(),o=Ne.useRoute(),r=Ne.useRouter(),l=e.ref(null),i=e.ref(null),a=e.ref(null),s=e.ref(!1),p=e.ref([]),f=e.ref(0),b=e.computed(()=>p.value.length),c=e.computed(()=>s.value||!!l.value||!!a.value);let m=null,d=!1;function u(){l.value=null,i.value=null,a.value=null,s.value=!1,p.value=[],f.value=0}function g(){if(m){try{m()}catch{}m=null}}async function h(){await n();const S=t.value;S&&(g(),u(),S.on("click",y),m=()=>S.off("click",y),I(x()))}function y(S){const A=t.value;if(!A)return;const E=(A.queryRenderedFeatures(S.point)||[]).filter(z=>{var T;return(T=z==null?void 0:z.properties)==null?void 0:T.id});if(!E.length){u(),L(null);return}p.value=E,f.value=0,k(f.value)}function k(S){const A=p.value[S];if(!A)return;f.value=S;const E=ne(A.source);j(A,E==null?void 0:E.card)}function C(){f.value>=p.value.length-1||k(f.value+1)}function M(){f.value<=0||k(f.value-1)}async function j(S,A){var z,T,F,v;if(!((z=S==null?void 0:S.properties)!=null&&z.id))return;const E=new URLSearchParams;E.set("layer",S.source),E.set("id",String((T=S.properties)==null?void 0:T.id)),s.value=!0,a.value=null,l.value=null,i.value=S||null;try{const $=await fetch(`/api/map-format?${E.toString()}`);if(!$.ok)throw new Error(`Failed (${$.status})`);const D=await $.json(),R=Array.isArray(D.columns)?D.columns:[];l.value={rows:D.rows||{},fields:A||[],columns:R,html:D.html||null},d||L(i.value);const q=(F=D.rows)==null?void 0:F.geom;if(q){const U=typeof q=="string"?JSON.parse(q):q;U&&(i.value={...i.value,geometry:U,properties:{...((v=i.value)==null?void 0:v.properties)||{},geom:U,geom_4326:U}})}}catch{a.value="Не вдалося завантажити дані",l.value=null,he.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити дані"})}finally{s.value=!1}}function B(){u(),L(null)}function N(){g(),u()}n().then(h),e.onBeforeUnmount(()=>N());function x(){const S=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof S!="string"?null:S.trim()||null}function V(S){var T,F;const A=(S==null?void 0:S.source)??((T=S==null?void 0:S.layer)==null?void 0:T.id),E=(F=S==null?void 0:S.properties)==null?void 0:F.id;return!A||E===void 0||E===null?null:`${A},${E}`.trim()||null}function L(S){const A=V(S),E=x();if(A===E)return;const z={...o.query};A?z.info=A:delete z.info,r.push({query:z}).catch(()=>{})}async function I(S){if(!S){u();return}if(S===V(i.value))return;const[A,E]=S.split(","),z=A==null?void 0:A.trim(),T=E==null?void 0:E.trim();if(!z||!T){u(),L(null);return}d=!0;try{const F={source:z,properties:{id:T}};p.value=[F],f.value=0;const v=ne(z);await j(F,v==null?void 0:v.card)}finally{d=!1}}return e.watch(()=>x(),S=>{S!==V(i.value)&&(d=!0,I(S).finally(()=>{d=!1}))}),{card:l,cardFeature:i,cardError:a,cardLoading:s,isOpen:c,close:B,next:C,prev:M,count:b,index:f}}function Qu(){const{map:t,ready:n}=Ee(),o=e.ref([]),r=e.ref(0),l=e.ref(0),i=e.ref(!1),a=e.ref(null),s=e.ref({}),p=e.ref(null),f=e.ref([]),b=e.computed(()=>o.value[l.value]||null),c=e.computed(()=>o.value.length>0);let m=null;const d=()=>{m==null||m.remove(),m=null},u=x=>x?x.type==="FeatureCollection"?x:x.type==="Feature"?{type:"FeatureCollection",features:[x]}:x.type&&Array.isArray(x.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:x,properties:{}}]}:Array.isArray(x.features)?{type:"FeatureCollection",features:x.features}:x.geometry?u(x.geometry):null:null,g=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),h=x=>Number(x.toFixed(5)),y=async x=>{if(await n(),!t.value)return;const V=u(x);V&&(d(),m=ne("feature-highlight",{source:{type:"geojson",data:V},style:g()},t))},k=async(x,V,L)=>{var A,E;const[I,S]=[h(x),h(V)];p.value={x:I,y:S},f.value=L,i.value=!0,a.value=null,o.value=[],s.value={},l.value=0;try{const z=L.map(async D=>{const R=`/api/map-info-point?x=${I}&y=${S}&layers=${D}`,q=await fetch(R);if(!q.ok)return null;const U=await q.json();if(!U.count)return null;const J=await(await fetch(`${R}&index=0`)).json();return{layerId:D,data:J,count:U.count}}),F=(await Promise.all(z)).filter(Boolean);if(F.length===0){r.value=0;return}o.value=F.map(D=>D.data);const[v]=o.value;r.value=F.reduce((D,R)=>D+(R.count||0),0),s.value[0]=v;const $=((A=v==null?void 0:v.data)==null?void 0:A.geom_4326)??((E=v==null?void 0:v.data)==null?void 0:E.geom);await y($)}catch(z){a.value=z.message}finally{i.value=!1}},C=async x=>{if(!p.value||!f.value.length)return;if(s.value[x]){o.value[x]=s.value[x];return}const{x:V,y:L}=p.value,I=f.value.join(","),S=`/api/map-info-point?x=${V}&y=${L}&index=${x}&layers=${I}`;try{i.value=!0;const A=await fetch(S);if(!A.ok)throw new Error("Failed to fetch feature by index");const E=await A.json();o.value[x]=E,s.value[x]=E}catch(A){a.value=A.message}finally{i.value=!1}},M=async()=>{l.value<r.value-1&&(l.value+=1,s.value[l.value]||await C(l.value))},j=async()=>{l.value>0&&(l.value-=1,s.value[l.value]||await C(l.value))},B=()=>{o.value=[],r.value=0,l.value=0,s.value={},p.value=null,f.value=[],d()};e.watch(l,async()=>{var V,L;const x=b.value;if(x){const I=((V=x==null?void 0:x.data)==null?void 0:V.geom_4326)??((L=x==null?void 0:x.data)==null?void 0:L.geom);await y(I)}});let N=null;return e.onMounted(async()=>{await n(),t.value&&(N=async x=>{const{lng:V,lat:L}=x.lngLat,I=ne(),A=Object.entries(I).map(([E,z])=>{var T,F,v,$;return{id:E,service:((T=z==null?void 0:z.opts)==null?void 0:T.service)??((v=(F=z==null?void 0:z.opts)==null?void 0:F.source)==null?void 0:v.service)??null,count:(($=z==null?void 0:z.opts)==null?void 0:$.count)??null,visible:(()=>{var D;try{return((D=t.value)==null?void 0:D.getLayer(E))?t.value.getLayoutProperty(E,"visibility")!=="none":!0}catch{return!0}})()}}).filter(E=>E.service==="ogc"&&E.visible).map(E=>E.id);A.length>0&&await k(V,L,A)},t.value.on("dblclick",N))}),e.onBeforeUnmount(()=>{t.value&&N&&t.value.off("dblclick",N),d()}),{features:o,count:r,index:l,current:b,loading:i,error:a,active:c,next:M,prev:j,close:B}}const To=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,r=n;function l(f){const b=f.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(b)return b;const c=Array.from(f).map(m=>m.charCodeAt(0).toString(16)).join("").slice(0,8);return c?`layer-${c}`:"layer-temp"}const i=e.computed(()=>{var f;return((f=o.id)==null?void 0:f.trim())||l(o.title)}),a=e.computed(()=>o.buttonText||"Показати шар");function s(){return{id:i.value,title:o.title,url:o.url}}function p(){r("activate",s())}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:p},[e.renderSlot(f.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.value),1)])]))}}),Ce=e.ref([]);function ep(t,n){return typeof t!="string"?"":t.includes("{{")?t.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*}}/g,(o,r)=>{const l=String(r||"").trim();if(!l)return"";const i=n[l];return i!=null?String(i):""}):t}function on(t){return t==null?"":String(t).trim()}function rn(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function tp(t){return t?typeof(t==null?void 0:t.value)<"u"?t.value:t:null}function np(t){var o;if(!(t!=null&&t.getStyle))return;const n=((o=t.getStyle())==null?void 0:o.layers)||[];for(let r=0;r<n.length;r+=1){const l=n[r];if(!(!l||typeof l.id!="string")&&l.type&&l.type!=="background"&&l.type!=="raster")return l.id}}function Mo(t){function n(i,a={},s,p){var k,C;const f=on(i==null?void 0:i.id),b=((k=i==null?void 0:i.title)==null?void 0:k.trim())||f,c=((C=i==null?void 0:i.url)==null?void 0:C.trim())||"";if(!f||!c)return;const m=ep(c,a);if(!m)return;const d=p??t;if(!d)return;const u=tp(d);if(!u)return;const g=Ce.value.findIndex(M=>M.id===f);g!==-1&&(rn(Ce.value[g]),Ce.value.splice(g,1));let h=null;const y=i.beforeId??np(u);try{h=ne(f,{source:{type:"raster",tiles:[m],tileSize:i.tileSize??256,minzoom:i.minzoom??0,maxzoom:i.maxzoom??19},layer:{id:f,type:"raster",source:f,paint:{"raster-opacity":i.opacity??.85}},beforeId:y},d)}catch(M){const j=(M==null?void 0:M.message)??"";if(!(typeof j=="string"&&j.includes("Map provider")))throw M;return}Ce.value=[...Ce.value,{id:f,title:b,originalUrl:c,resolvedUrl:m,owner:s??null,handle:h??null}]}function o(i,a){const s=on(i);if(!s)return;const p=Ce.value.findIndex(b=>b.id===s&&(!a||b.owner===a));if(p===-1)return;const[f]=Ce.value.splice(p,1);rn(f)}function r(i){if(!Ce.value.length)return;const a=[];Ce.value.forEach(s=>{(i?s.owner===i:!0)?rn(s):a.push(s)}),Ce.value=a}function l(i,a){const s=on(i);return s?Ce.value.some(p=>p.id===s&&(!a||p.owner===a)):!1}return{temporaryLayers:Ce,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:r,isTemporaryLayerActive:l}}const op={key:0,class:"card absolute top-4 right-11 z-30 w-[400px] max-h-[80%] overflow-hidden rounded-2xl border border-slate-200 bg-white/95 shadow-2xl backdrop-blur-md flex flex-col"},rp={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},lp={class:"min-w-0 flex-1"},ip={class:"text-base font-semibold text-slate-900 truncate"},ap={key:0,class:"flex gap-1 mt-1"},sp=["disabled"],cp=["disabled"],dp={key:1,class:"flex gap-1 mt-1"},up=["disabled"],pp=["disabled"],fp={class:"flex-1 overflow-y-auto px-4 py-3 space-y-4 text-sm text-slate-700"},mp={key:0,class:"text-center text-xs text-slate-500"},gp={key:1,class:"text-center text-xs text-red-500"},hp={key:0,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},yp={class:"divide-y divide-gray-100 py-[5px]"},xp={class:"text-gray-900 font-normal"},bp={key:1,class:"prose prose-sm max-w-none space-y-3 border-slate-200"},kp=["innerHTML"],wp=["innerHTML"],_p={key:2,class:"space-y-3 border-t border-slate-200 pt-3"},Ep={key:3,class:"border-t border-slate-100 px-4 py-2 text-right text-xs text-slate-500"},Bp={class:"text-xs tracking-[0.02em] leading-none"},vp={key:4,class:"space-y-3 border-t border-slate-200 pt-3"},Np={class:"space-y-1"},Cp={class:"flex items-center cursor-pointer gap-2 flex-1"},Vp=["checked","onChange"],$p={class:"text-[13px] text-gray-600"},Sp={key:0,class:"text-right text-xs text-gray-400 truncate max-w-[40%]"},Ap={key:5,class:"text-center text-xs text-slate-400"},Lp="map:temporary-layer-request",Io=X(e.defineComponent({__name:"MapCardWidget",props:{mapId:{}},setup(t){var Ft,Go;const n=t,o=Ju(),r=Qu(),l=e.computed(()=>r.active.value),i=e.computed(()=>l.value||o.isOpen.value),a=e.computed(()=>l.value?r.loading.value:o.cardLoading.value),s=e.computed(()=>l.value?r.error.value:o.cardError.value),p=e.computed(()=>{var w,_;return l.value?((w=r.current.value)==null?void 0:w.html)||null:((_=o.card.value)==null?void 0:_.html)||null}),f=Ee(),b=Ne.useRoute(),{activateTemporaryLayer:c,deactivateTemporaryLayer:m,clearTemporaryLayers:d,isTemporaryLayerActive:u}=Mo(f.map);function g(w){window.dispatchEvent(new CustomEvent(Lp,{detail:w}))}const h=e.computed(()=>{var w;return((w=o.cardFeature.value)==null?void 0:w.source)??null}),y=e.computed(()=>h.value?`map-card:${h.value}`:"map-card"),k=e.computed(()=>{var W,Q;const w=o.cardFeature.value,_=(w==null?void 0:w.source)||((W=w==null?void 0:w.layer)==null?void 0:W.id),P=((Q=w==null?void 0:w.properties)==null?void 0:Q.id)??(w==null?void 0:w.id);return _&&P!=null?`${_}:${P}`:null}),C=e.ref(null),M=e.ref(null),j=e.ref(0),B=new Map;function N(){if(typeof window>"u")return null;const _=(window.location.pathname||"").match(/\/maps?\/([^/]+)/i);return _&&_[1]?_[1]:null}const x=e.computed(()=>{const w=typeof n.mapId=="string"?n.mapId.trim():"";if(w.length)return w;const _=typeof b.params.slug=="string"?b.params.slug.trim():"";if(_.length)return _;const P=typeof b.query.slug=="string"?b.query.slug.trim():"";return P.length?P:N()}),V=e.ref(null),L=e.ref(null),I=new Map;function S(w){const _=w.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(_)return _;const P=Array.from(w).map(W=>W.charCodeAt(0).toString(16)).join("").slice(0,8);return P?`layer-${P}`:`layer-${Math.random().toString(36).slice(2,8)}`}function A(w){if(typeof w!="string")return"";const _=w.trim();if(!_)return"";if(/^https?:\/\//i.test(_))return _;if(_.startsWith("//"))return typeof window>"u"?`https:${_}`:`${window.location.protocol}${_}`;const P=typeof window<"u"?window.location.origin:"";return _.startsWith("/")?P?`${P}${_}`:_:P?`${P}/${_}`:_}function E(w){const _={},P=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let W;for(;(W=P.exec(w))!==null;){const Q=W[1],oe=W[2]??W[3]??W[4]??"";Q&&(_[Q]=oe)}return _}function z(w,_){for(const P of _)if(w[P]!=null&&String(w[P]).trim().length)return String(w[P]).trim();return""}function T(w){if(!(w!=null&&w.length))return;const _=Number(w);return Number.isFinite(_)?_:void 0}function F(w){if(typeof w!="string"||!w.length)return[];const _=[],P=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let W=0,Q;const oe=new Set,le=ae=>{let ge=ae,Me=2;for(;oe.has(ge);)ge=`${ae}-${Me}`,Me+=1;return oe.add(ge),ge};for(;(Q=P.exec(w))!==null;){const[ae,ge="",Me=""]=Q,xe=Q.index;if(xe>W){const Qo=w.slice(W,xe);Qo.trim().length&&_.push({type:"html",content:Qo})}const Le=E(ge),ve=z(Le,["title"])||"Тимчасовий шар",We=A(z(Le,["url"]));if(!We){_.push({type:"html",content:ae}),W=xe+ae.length;continue}const kt=z(Le,["id"]),sn=z(Le,["button-text","buttonText","show","show-label","showLabel"]),m0=T(z(Le,["tile-size","tileSize"])),g0=T(z(Le,["minzoom","minZoom"])),h0=T(z(Le,["maxzoom","maxZoom"])),y0=T(z(Le,["opacity"])),x0=kt||S(`${ve}-${We}`)||S(ve),Xo=le(x0||`layer-${_.length+1}`),cn=Me.trim(),Jo=/<[^>]+>/.test(cn),b0=Jo?cn:null,dn=Jo?null:cn,k0=sn&&sn.trim().length?sn.trim():dn&&dn.trim().length?dn.trim():void 0;_.push({type:"layer",spec:{id:Xo,title:ve,url:We,tileSize:m0,minzoom:g0,maxzoom:h0,opacity:y0},componentProps:{title:ve,url:We,id:Xo,buttonText:k0},slotText:b0}),W=xe+ae.length}if(W<w.length){const ae=w.slice(W);ae.trim().length&&_.push({type:"html",content:ae})}return!_.length&&w.trim().length&&_.push({type:"html",content:w}),_}function v(w){if(!w)return null;const _=typeof w.id=="string"?w.id.trim():"",P=typeof w.title=="string"?w.title.trim():"",W=A(typeof w.url=="string"?w.url:"");return!_||!W?null:{id:_,title:P||_,url:W,tileSize:w.tileSize,minzoom:w.minzoom,maxzoom:w.maxzoom,opacity:w.opacity}}const $=e.computed(()=>{if(l.value&&r.current.value)return r.current.value.data??{};const w=o.card.value;return(w==null?void 0:w.rows)??{}}),D=e.computed(()=>{if(l.value&&r.current.value)return r.current.value.fields??[];const w=o.card.value;if(!w)return[];const _=Array.isArray(w.columns)?w.columns:[],P=Array.isArray(w.fields)?w.fields:[];if(!_.length)return P;const W=new Set,Q=[],oe=le=>{const ae=typeof(le==null?void 0:le.name)=="string"?le.name.trim():"";!ae||W.has(ae)||(W.add(ae),Q.push(le))};return _.forEach(oe),P.forEach(oe),Q}),R=e.computed(()=>{const w=D.value;if(!w.length)return[];const _=$.value;return w.map(P=>({key:P.name,label:P.ua||P.label||P.title||P.name,value:_[P.name]??"—",format:P.format||"text"}))}),q=new Set(["—","-","–","−"]);function U(w){if(w==null)return!0;if(typeof w=="string"){const _=w.trim();return _.length?q.has(_):!0}return!1}const te=e.ref(!1),J=e.ref(!0);if(typeof window<"u"){const w=(Go=(Ft=window.localStorage)==null?void 0:Ft.getItem)==null?void 0:Go.call(Ft,"cardHideEmpty"),_=typeof w=="string"&&w.toLowerCase()==="true";te.value=_,J.value=!_}const ee=e.computed(()=>R.value.filter(w=>U(w.value)).length),se=e.computed(()=>te.value&&!J.value?R.value.filter(w=>!U(w.value)):R.value);function ke(w){const _=typeof w=="string"?w:"";if(!_.length)return{sanitized:"",hiddenCount:0};if(typeof DOMParser>"u")return{sanitized:_,hiddenCount:0};const W=new DOMParser().parseFromString(_,"text/html");let Q=0;return W.querySelectorAll("dd").forEach(oe=>{var ge;const le=((ge=oe.textContent)==null?void 0:ge.trim())??"",ae=oe.closest("div");if(U(le)){Q+=1,ae?ae.remove():oe.remove();return}}),{sanitized:W.body.innerHTML,hiddenCount:Q}}const Be=e.computed(()=>ke(p.value)),Ve=e.computed(()=>p.value?Be.value.hiddenCount:0),we=e.computed(()=>ee.value+Ve.value),$e=e.computed(()=>{var w;return te.value&&!J.value&&!!((w=p.value)!=null&&w.trim())}),Fe=e.computed(()=>te.value&&we.value>0),je=e.computed(()=>J.value?"Приховати пусті значення":"Показати пусті значення"),St=e.computed(()=>J.value?ir:lr);function At(){J.value=!J.value}const Xe=e.computed(()=>{const w=$e.value?Be.value.sanitized:p.value??"";return F(w)}),ut=e.computed(()=>Xe.value.filter(w=>w.type==="layer"));function O(w){return Array.isArray(w)?w.map((_,P)=>{const W=A(typeof(_==null?void 0:_.url)=="string"?_.url:""),Q=typeof(_==null?void 0:_.geohub)=="string"&&_.geohub.trim().length?`/api-hub/tms/${_.geohub.trim()}/ua/{z}/{x}/{y}.png`:"",oe=((_==null?void 0:_.name)||(_==null?void 0:_.title)||(_==null?void 0:_.label)||`Шар ${P+1}`).toString(),le=(_==null?void 0:_.id)!=null?String(_.id):S(`${oe}-${P+1}`),ae=(_==null?void 0:_.buttonText)||(_==null?void 0:_.button_text)||null,ge=(_==null?void 0:_.description)||(_==null?void 0:_.subtitle)||null,Me=W||A(Q)||"";if(!Me)return null;const xe={id:le,title:oe,url:Me,subtitle:ge,buttonText:ae||void 0};return typeof(_==null?void 0:_.tileSize)=="number"&&(xe.tileSize=_.tileSize),typeof(_==null?void 0:_.tile_size)=="number"&&(xe.tileSize=_.tile_size),typeof(_==null?void 0:_.minzoom)=="number"&&(xe.minzoom=_.minzoom),typeof(_==null?void 0:_.maxzoom)=="number"&&(xe.maxzoom=_.maxzoom),typeof(_==null?void 0:_.opacity)=="number"&&(xe.opacity=_.opacity),xe}).filter(Boolean):[]}const H=e.computed(()=>{var W,Q;const w=o.card.value,_=r.current.value,P=[(W=w==null?void 0:w.rows)==null?void 0:W.layers,w==null?void 0:w.layers,(Q=_==null?void 0:_.data)==null?void 0:Q.layers,_==null?void 0:_.layers];for(const oe of P){const le=O(oe);if(le.length)return le}return[]}),G=e.computed(()=>Xe.value.length>0||R.value.length>0||H.value.length>0);function re(){const w={},_=V.value;if(_&&typeof _=="object"&&Object.entries(_).forEach(([P,W])=>{typeof W=="string"&&(w[P]=W)}),h.value&&(w.layer=h.value),!w.geohub){const P=typeof(_==null?void 0:_.geohub)=="string"?_.geohub:null,W=typeof(_==null?void 0:_.geohub_key)=="string"?_.geohub_key:null,Q=typeof(_==null?void 0:_.geohubId)=="string"?_.geohubId:null;w.geohub=P||W||Q||w.layer||""}return w}async function K(){const w=h.value;if(!w)return V.value=null,L.value=null,null;if(L.value===w&&V.value)return V.value;if(I.has(w)){const _=I.get(w);return V.value=_,L.value=w,_}try{const _=await fetch(`/api/gis-service/${encodeURIComponent(w)}`);if(!_.ok)return null;const P=await _.json();return I.set(w,P),V.value=P,L.value=w,P}catch{return null}}async function ie(w){if(!(w!=null&&w.id))return;await K();const _=re(),P=ut.value.find(le=>le.spec.id===w.id),W=H.value.find(le=>le.id===w.id),Q=(P==null?void 0:P.spec)||v(W)||v(w);if(!Q||u(Q.id,y.value))return;const oe=y.value||void 0;C.value=oe??null,c(Q,_,oe),g({action:"activate",owner:oe,spec:Q,context:_})}function fe(w){if(!w)return;const _=Ae()||void 0;m(w,_),g({action:"deactivate",owner:_,spec:{id:w}})}function Y(w){return u(w,Ae())}function Se(w,_){const P=_.target;!!(P!=null&&P.checked)?ie(w):fe(w.id)}function Ae(){return C.value||y.value||null}e.watch(h,(w,_)=>{w!==_&&(V.value=null,L.value=null)});const{next:Te,prev:Ze,count:Pe,index:ze}=r,Re=e.computed(()=>o.count.value),Ue=e.computed(()=>o.index.value),pt=e.computed(()=>Re.value>1),Ho=e.computed(()=>l.value?Pe.value:Re.value),Yo=e.computed(()=>l.value?ze.value:Ue.value),Zo=o.next,Wo=o.prev;function Je(){const w=Ae();w&&(d(w),g({action:"clear",owner:w}),C.value=null)}function s0(){o.close(),r.close(),Je()}e.watch(i,(w,_)=>{!w&&_&&(Je(),Qe())});function Ko(){!o.isOpen.value&&!r.active.value&&Je()}e.watch(()=>o.isOpen.value,()=>{Ko()}),e.watch(()=>r.active.value,()=>{Ko()}),e.watch(h,(w,_)=>{w&&_&&w!==_&&Je()}),e.watch(ze,(w,_)=>{w!==_&&Je()}),e.watch(k,(w,_)=>{w&&_&&w!==_&&Je()});function c0(w){if(!w)return null;if(w.geometry)return w.geometry;const _=(w==null?void 0:w.data)??(w==null?void 0:w.properties);return _!=null&&_.geom_4326?_.geom_4326:_!=null&&_.geom?_.geom:null}function Qe(){var w,_;(_=(w=M.value)==null?void 0:w.remove)==null||_.call(w),M.value=null}function d0(w){var P,W,Q;const _=(w==null?void 0:w.type)||((Q=(W=(P=w==null?void 0:w.features)==null?void 0:P[0])==null?void 0:W.geometry)==null?void 0:Q.type)||"";return _.includes("Polygon")?{type:"fill",paint:{"fill-color":"#0a57ff","fill-opacity":.2,"fill-outline-color":"#0a57ff"}}:_.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}}}function u0(w){var Q;if(!w){Qe();return}const _=(Q=f.map)==null?void 0:Q.value,P={type:"FeatureCollection",features:[{type:"Feature",geometry:w,properties:{}}]};Qe();const W=d0(w);if(M.value=ne("feature-card-highlight",{source:{type:"geojson",data:P},layer:{id:"feature-card-highlight",type:W.type,source:"feature-card-highlight",paint:W.paint}},f.map),_!=null&&_.moveLayer){const oe=()=>{try{_.moveLayer("feature-card-highlight")}catch{}},le=()=>{typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(()=>{window.requestAnimationFrame(oe)}):setTimeout(oe,0)};le();const ae=()=>le();_.once("styledata",ae);const ge=()=>{le(),_.off("styledata",ae),_.off("idle",ge)};_.on("idle",ge)}}function p0(w){var W,Q;const _=(w==null?void 0:w.source)||((W=w==null?void 0:w.layer)==null?void 0:W.id)||"unknown",P=((Q=w==null?void 0:w.properties)==null?void 0:Q.id)??(w==null?void 0:w.id)??"unknown";return`${_}:${P}`}async function f0(w){var oe,le,ae,ge,Me;if(!w)return null;const _=c0(w);if(_)return _;const P=((oe=w==null?void 0:w.properties)==null?void 0:oe.id)??(w==null?void 0:w.id);if(!P)return null;const W=p0(w);if(B.has(W))return B.get(W);const Q=[x.value,w==null?void 0:w.source,(le=w==null?void 0:w.layer)==null?void 0:le.id].map(xe=>typeof xe=="string"?xe.trim():"").filter(Boolean);for(const xe of Q)try{const Le=await fetch(`/api/map-features/${encodeURIComponent(xe)}/${encodeURIComponent(String(P))}`);if(!Le.ok)continue;const ve=await Le.json(),We=((ae=ve==null?void 0:ve.data)==null?void 0:ae.geom)||((ge=ve==null?void 0:ve.data)==null?void 0:ge.geometry)||((Me=ve==null?void 0:ve.data)==null?void 0:Me.geom_4326)||null,kt=typeof We=="string"?JSON.parse(We):We;if(kt)return B.set(W,kt),kt}catch{continue}return null}async function Lt(w){j.value+=1;const _=j.value;if(!w||l.value){Qe();return}const P=await f0(w);if(_===j.value){if(!P){Qe();return}u0(P)}}return e.watch(()=>o.cardFeature.value,w=>{Lt(w)},{immediate:!0}),e.watch(()=>o.index.value,()=>{l.value||Lt(o.cardFeature.value)}),e.watch(l,w=>{w?Qe():Lt(o.cardFeature.value)}),e.watch(x,()=>{!l.value&&o.cardFeature.value&&Lt(o.cardFeature.value)}),e.onBeforeUnmount(()=>{Je(),Qe()}),(w,_)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createElementBlock("div",op,[e.createElementVNode("div",rp,[e.createElementVNode("div",lp,[e.createElementVNode("p",ip,[l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Yo.value+1)+" / "+e.toDisplayString(Ho.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[pt.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Об’єкт "+e.toDisplayString(Yo.value+1)+" / "+e.toDisplayString(Ho.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Інформація про об’єкт ")],64))],64))])]),l.value&&e.unref(Pe)>1?(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("button",{onClick:_[0]||(_[0]=(...P)=>e.unref(Ze)&&e.unref(Ze)(...P)),disabled:e.unref(ze)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(pn),{class:"h-4 w-4"})],8,sp),e.createElementVNode("button",{onClick:_[1]||(_[1]=(...P)=>e.unref(Te)&&e.unref(Te)(...P)),disabled:e.unref(ze)===e.unref(Pe)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(fn),{class:"h-4 w-4"})],8,cp)])):!l.value&&pt.value?(e.openBlock(),e.createElementBlock("div",dp,[e.createElementVNode("button",{onClick:_[2]||(_[2]=(...P)=>e.unref(Wo)&&e.unref(Wo)(...P)),disabled:Ue.value===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(pn),{class:"h-4 w-4"})],8,up),e.createElementVNode("button",{onClick:_[3]||(_[3]=(...P)=>e.unref(Zo)&&e.unref(Zo)(...P)),disabled:Ue.value===Re.value-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(fn),{class:"h-4 w-4"})],8,pp)])):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:s0}," ✕ ")]),e.createElementVNode("div",fp,[a.value?(e.openBlock(),e.createElementBlock("div",mp," Завантаження даних… ")):s.value?(e.openBlock(),e.createElementBlock("div",gp,e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[R.value.length?(e.openBlock(),e.createElementBlock("div",hp,[e.createElementVNode("dl",yp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(se.value,P=>(e.openBlock(),e.createElementBlock("div",{key:P.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",xp,e.toDisplayString(P.label),1),e.createElementVNode("dd",{class:e.normalizeClass(["text-gray-700 sm:col-span-2 font-normal whitespace-pre-wrap",P.format==="badge"?"font-semibold text-yellow-800":""])},e.toDisplayString(P.value),3)]))),128))])])):Xe.value.length?(e.openBlock(),e.createElementBlock("div",bp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Xe.value,(P,W)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:W},[P.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:P.content},null,8,kp)):(e.openBlock(),e.createBlock(To,{key:1,title:P.componentProps.title,url:P.componentProps.url,id:P.componentProps.id,"button-text":P.componentProps.buttonText,onActivate:ie},e.createSlots({_:2},[P.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:P.slotText},null,8,wp)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):e.createCommentVNode("",!0),ut.value.length?(e.openBlock(),e.createElementBlock("div",_p,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ut.value,P=>(e.openBlock(),e.createBlock(To,{key:P.spec.id,title:P.componentProps.title,url:P.componentProps.url,id:P.spec.id,"button-text":P.componentProps.buttonText,onActivate:ie},null,8,["title","url","id","button-text"]))),128))])):e.createCommentVNode("",!0),Fe.value?(e.openBlock(),e.createElementBlock("div",Ep,[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:At},[e.createElementVNode("span",Bp,e.toDisplayString(je.value),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(St.value),{class:"h-3 w-3 stroke-[1.5px]"}))])])):e.createCommentVNode("",!0),H.value.length?(e.openBlock(),e.createElementBlock("div",vp,[_[5]||(_[5]=e.createElementVNode("p",{class:"text-xs font-semibold uppercase tracking-wide text-slate-500"},"Шари",-1)),e.createElementVNode("div",Np,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(H.value,P=>(e.openBlock(),e.createElementBlock("div",{key:P.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Cp,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:Y(P.id),onChange:W=>Se(P,W)},null,40,Vp),_[4]||(_[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",$p,e.toDisplayString(P.title),1)]),P.subtitle?(e.openBlock(),e.createElementBlock("div",Sp,e.toDisplayString(P.subtitle),1)):e.createCommentVNode("",!0)]))),128))])])):e.createCommentVNode("",!0),G.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ap," Даних не знайдено. "))],64))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-9c934132"]]),Do=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var m,d;const n=t,o=((d=(m=e.getCurrentInstance())==null?void 0:m.appContext.config.globalProperties)==null?void 0:d.$settings)||null,{map:r,ready:l}=Ee();let i=null;function a(){i==null||i.remove(),i=null}function s(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?s(u.geometry):null}function p(u){var y,k,C;return{type:"line",color:"#8e4484",width:2,opacity:((((C=(k=(y=u==null?void 0:u.features)==null?void 0:y[0])==null?void 0:k.geometry)==null?void 0:C.type)||"").includes("Polygon"),.95)}}async function f(u){const g=await fetch(u);if(!g.ok)throw new Error(String(g.status));return g.json()}async function b(u,g){if(u){const h=/^https?:\/\//.test(u)?u:new URL(u,location.origin).toString(),y=await f(h).catch(()=>null),k=s(y);if(k)return k}if(g){const h=await f(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(g)}`).catch(()=>null),y=s(h);if(y)return y}return null}async function c(){var y,k,C,M;if(!n.layerId||!r.value){a();return}typeof l=="function"&&await l().catch(()=>{});const u=n.boundary??((y=n.settingsMap)==null?void 0:y.boundary)??((k=o==null?void 0:o.map)==null?void 0:k.boundary)??null,g=n.katottg??((C=n.settingsMap)==null?void 0:C.katottg)??((M=o==null?void 0:o.map)==null?void 0:M.katottg)??null;if(!u&&!g){a();return}const h=await b(u,g);if(!h){a();return}a(),i=ne(`${n.layerId}-boundary`,{source:{type:"geojson",data:h},style:p(h)},r)}return e.watch(()=>{var u,g;return[n.layerId,n.boundary,n.katottg,(u=n.settingsMap)==null?void 0:u.boundary,(g=n.settingsMap)==null?void 0:g.katottg,r.value]},()=>{c()},{immediate:!0}),e.onBeforeUnmount(a),(u,g)=>null}}),Fp={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Tp={class:"flex-1 relative overflow-hidden"},Mp={class:"absolute top-0 left-0 w-full z-20"},Ip={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Dp={class:"flex items-center gap-3"},jp={class:"font-semibold text-lg text-gray-800 line-clamp-1"},zp={class:"text-xs text-gray-500 truncate"},Op=["title"],Pp={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]"},Rp={class:"relative w-full h-full"},Up={style:{top:"17px",left:"230px",position:"absolute","z-index":"1"}},qp={class:"absolute top-4 left-4 z-20"},Hp={class:"absolute bottom-4 left-4 z-20"},Yp={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},Zp={class:"flex-1 flex flex-col h-full"},Wp={class:"px-3 pt-3 pb-2 border-b border-gray-100"},Kp={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"},Gp=["aria-selected","onClick"],Xp={class:"leading-none"},Jp={class:"flex flex-col flex-1 overflow-y-hidden p-3"},Qp=X(e.defineComponent({__name:"service",setup(t){var I,S;const n=Ne.useRoute(),o=Ne.useRouter(),{id:r}=n.params,l=e.ref(null),i=e.ref({}),a=e.ref(null),s=((S=(I=e.getCurrentInstance())==null?void 0:I.appContext.config.globalProperties)==null?void 0:S.$settings)||null,p=e.ref(null),f=e.ref([]),b=e.ref([]),c=e.ref([]),m=e.ref("list"),d=e.ref(""),u=e.ref([]),g=e.computed(()=>{var A,E;return((A=a.value)==null?void 0:A.id)??((E=a.value)==null?void 0:E.service_id)??null}),h=e.computed(()=>{const A=(s==null?void 0:s.map)||null,E=(A==null?void 0:A.boundary)??null,z=(A==null?void 0:A.katottg)??null;return!E&&!z?null:{boundary:E,katottg:z}}),y=[{key:"style",label:"Стиль",icon:Bd},{key:"popup",label:"Попап",icon:Id},{key:"filter",label:"Фільтр",icon:Od},{key:"legend",label:"Легенда",icon:Vd},{key:"card",label:"Картка",icon:Ld}],k=y.map(A=>A.key),C=e.ref("style");e.onMounted(async()=>{const A=n.query.tab;A&&k.includes(A)&&(C.value=A),await B()}),e.watch(C,A=>{n.query.tab!==A&&o.replace({query:{...n.query,tab:A}})}),e.watch(()=>n.query.tab,A=>{A&&k.includes(A)&&C.value!==A&&(C.value=A)});function M(A){if(!A)return null;try{return JSON.parse(JSON.stringify(A))}catch(E){return console.warn("Failed to clone style",E),null}}function j(A){if(!A)return null;if(typeof A=="string")try{return kd.load(A)||null}catch(E){return console.warn("Failed to parse style yaml",E),null}return M(A)}const B=async()=>{try{const A=await fetch(`/api/gis-service/${r}`);if(!A.ok)throw new Error(`${A.status}`);const E=await A.json();i.value=E||{},l.value=r;const z=j(E.style);a.value=E?{...E,style:M(z)}:null,p.value=z,b.value=(E==null?void 0:E.popup)||[],m.value=E.card_mode==="html"?"html":"list",c.value=E.card,d.value=E.html,f.value=(E==null?void 0:E.legend)||[],u.value=(E==null?void 0:E.filters)||[]}catch(A){console.error("Failed to fetch map info",A)}};e.watch(()=>{var A;return(A=a.value)==null?void 0:A.style},A=>{p.value=j(A)},{deep:!0});async function N(A,E){await V({[A]:E},A)}function x(){const A=M(p.value);A&&(a.value=a.value?{...a.value,style:A}:a.value)}async function V(A,E){if(a.value={...a.value||{},...A},typeof A.html<"u"&&(i.value={...i.value||{},html:A.html}),!!g.value)try{if(!(await fetch(`/api/gis-service/${g.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)})).ok)throw new Error("Save failed");he.notify({type:"success",title:"Успіх",message:`${E} saved`}),await B()}catch(z){he.notify({type:"error",title:"Помилка",message:`Failed to save ${E}`}),console.error(z)}}async function L(A,E){if(A!=="card"){await N(A,E);return}const z=(E==null?void 0:E.card_mode)==="html"?"html":"list",T=z==="html"&&typeof(E==null?void 0:E.html)=="string"?E.html:"",F=(z==="html"?[]:null)||(Array.isArray(E==null?void 0:E.list)?E.list:[]);c.value=F,m.value=z,d.value=T;const v={card_mode:z};z==="html"&&(v.html=T),z==="list"&&(v.card=F),await V(v,"card")}return(A,E)=>{var z,T,F,v;return e.openBlock(),e.createElementBlock("div",Fp,[e.createElementVNode("div",Tp,[e.createElementVNode("div",Mp,[e.createElementVNode("div",Ip,[e.createElementVNode("div",Dp,[e.createElementVNode("button",{onClick:E[0]||(E[0]=$=>A.$router.back()),class:"inline-flex items-center px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition"},[...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",jp,e.toDisplayString((z=a.value)==null?void 0:z.name),1),e.createElementVNode("div",zp," Сервіс: "+e.toDisplayString((T=a.value)==null?void 0:T.service_key),1)])]),e.createElementVNode("div",{class:"max-w-xl text-xs text-gray-600 truncate",title:(F=a.value)==null?void 0:F.description},e.toDisplayString((v=a.value)==null?void 0:v.description),9,Op)])]),e.createElementVNode("div",Pp,[e.createElementVNode("div",Rp,[e.createVNode(Lo,null,{default:e.withCtx(()=>{var $,D,R,q,U,te,J,ee;return[($=a.value)!=null&&$.service_id?(e.openBlock(),e.createBlock(Fu,{key:0,id:(D=a.value)==null?void 0:D.service_id,layer:a.value,"style-spec":((R=a.value)==null?void 0:R.style)||null},null,8,["id","layer","style-spec"])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createBlock(Do,{key:1,"layer-id":g.value,boundary:((q=a.value)==null?void 0:q.boundary)||((U=h.value)==null?void 0:U.boundary)||null,katottg:((te=a.value)==null?void 0:te.katottg)||((J=h.value)==null?void 0:J.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",Up,[g.value?(e.openBlock(),e.createBlock(en,{key:0,"layer-id":g.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",qp,[e.createVNode(tn)]),e.createElementVNode("div",Hp,[e.createVNode(nn,{items:((ee=a.value)==null?void 0:ee.legend)||null},null,8,["items"])]),e.createVNode(Fo),e.createVNode(Io,{html:i.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",Yp,[e.createElementVNode("div",Zp,[e.createElementVNode("div",Wp,[e.createElementVNode("div",Kp,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(y,$=>e.createElementVNode("button",{key:$.key,type:"button",role:"tab","aria-selected":C.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",C.value===$.key?"bg-white shadow-sm text-gray-700":""]),onClick:D=>C.value=$.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent($.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",Xp,e.toDisplayString($.label),1)],10,Gp)),64))])]),e.createElementVNode("div",Jp,[C.value==="style"?(e.openBlock(),e.createBlock(Wd,{key:0,token:g.value,"style-yaml":p.value,"onUpdate:styleYaml":E[1]||(E[1]=$=>p.value=$),onUpdate:x},null,8,["token","style-yaml"])):C.value==="legend"?(e.openBlock(),e.createBlock(_u,{key:1,token:g.value,columns:f.value,"onUpdate:columns":E[2]||(E[2]=$=>f.value=$),onSave:E[3]||(E[3]=$=>N("legend",$))},null,8,["token","columns"])):C.value==="popup"?(e.openBlock(),e.createBlock(mu,{key:2,token:g.value,columns:b.value,fields:i.value.fields,"onUpdate:columns":E[4]||(E[4]=$=>b.value=$),onSave:E[5]||(E[5]=$=>N("popup",$))},null,8,["token","columns","fields"])):C.value==="card"?(e.openBlock(),e.createBlock(Su,{key:3,token:g.value,columns:c.value,fields:i.value.fields,"view-mode":m.value,html:d.value,"onUpdate:columns":E[6]||(E[6]=$=>c.value=$),onSave:L},null,8,["token","columns","fields","view-mode","html"])):C.value==="filter"?(e.openBlock(),e.createBlock(Lu,{key:4,token:g.value,fields:i.value.fields,columns:u.value,"onUpdate:columns":E[7]||(E[7]=$=>u.value=$),onSave:E[8]||(E[8]=$=>N("filters",$))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),[["__scopeId","data-v-392e1bd1"]]),ef={class:"mapLayer-info__inner"},tf={class:"mapLayer-info__item-label"},ln=X(e.defineComponent({__name:"MapLayerInfoPopover",props:{items:{}},setup(t,{expose:n}){const o=t,r=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),l=e.ref(null),i=e.ref(null);let a=null;const s=e.computed(()=>r.open?{position:"absolute",width:"460px",top:`${r.top}px`,left:`${r.left}px`,transform:r.transform,display:"block"}:{display:"none"});function p(g){if(r.open){m();return}const h=g.currentTarget,y=h==null?void 0:h.closest(".mapLayer-info");if(!y){m();return}l.value=y,r.open=!0,e.nextTick(()=>{f(),d(),requestAnimationFrame(()=>{f()})})}function f(){var V,L;if(!r.open||!l.value)return;const g=l.value.getBoundingClientRect(),h=8,y=window.scrollX+h,k=window.scrollX+window.innerWidth-h,C=window.scrollY+h,M=window.scrollY+window.innerHeight-h,j=((V=i.value)==null?void 0:V.offsetWidth)||460,B=((L=i.value)==null?void 0:L.offsetHeight)||0;let N=g.left+window.scrollX+(g.width-j)/2;N<y&&(N=y),N+j>k&&(N=Math.max(y,k-j)),r.left=N;let x=g.bottom+window.scrollY+h;x+B>M&&(x=g.top+window.scrollY-B-h,x<C&&(x=Math.max(C,M-B))),r.top=x,r.transform="none"}function b(g){var y,k;if(!r.open)return;const h=g.target;(y=l.value)!=null&&y.contains(h)||(k=i.value)!=null&&k.contains(h)||m()}function c(g){g.key==="Escape"&&m()}function m(){u(),r.open=!1,l.value=null,i.value=null}function d(){u(),i.value&&(a=new ResizeObserver(()=>{f()}),a.observe(i.value))}function u(){a&&(a.disconnect(),a=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f),u()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>f())},{deep:!0}),n({close:m}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:l},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(p,["prevent","stop"])},[...h[1]||(h[1]=[e.createStaticVNode('<div class="mapLayer-info__icon" data-v-e7d532ad><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-e7d532ad><circle cx="12" cy="12" r="10" data-v-e7d532ad></circle><line x1="12" y1="16" x2="12" y2="12" data-v-e7d532ad></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-e7d532ad></line></svg></div>',1)])]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-50 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:i,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ef,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,y=>(e.openBlock(),e.createElementBlock("div",{key:y.label,class:"mapLayer-info__item"},[e.createElementVNode("div",tf,e.toDisplayString(y.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":y.breakLine}])},e.toDisplayString(y.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-e7d532ad"]]),nf={key:0,class:"map-info__header"},of={key:0,class:"map-info__title"},rf={class:"map-info__actions"},lf={key:0,class:"map-info__menu"},af=["onClick"],sf=["innerHTML"],jo=X(e.defineComponent({__name:"MapInfoWidget",props:{title:{},content:{},links:{},mapName:{},mapDescription:{}},setup(t){const n=t,o=e.ref(null),r=e.ref(!1),l=e.ref(null),i=e.ref({top:0,left:0}),a=Ne.useRouter(),s=e.computed(()=>Array.isArray(n.links)?n.links.filter(u=>(u==null?void 0:u.name)&&(u==null?void 0:u.slug)):[]),p=e.computed(()=>({top:`${i.value.top}px`,left:`${i.value.left}px`})),f=e.computed(()=>{const u=[];return n.mapName&&u.push({label:"Назва карти",value:n.mapName}),n.mapDescription&&u.push({label:"Опис",value:n.mapDescription,breakLine:!0}),u});function b(u){u.stopPropagation(),r.value=!r.value}function c(){const u=l.value;if(!u)return;const{bottom:g,left:h}=u.getBoundingClientRect();i.value={top:g+window.scrollY+8,left:h+window.scrollX}}function m(u){if(!r.value)return;const g=o.value;if(!g){r.value=!1;return}g.contains(u.target)||(r.value=!1)}e.onMounted(()=>{document.addEventListener("click",m,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",m,!0),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}),e.watch(r,u=>{u?e.nextTick(()=>{c(),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c)}):(window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c))});function d(u){r.value=!1,a.push(`/maps/${u}`)}return(u,g)=>(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||s.value.length||f.value.length?(e.openBlock(),e.createElementBlock("div",nf,[t.title?(e.openBlock(),e.createElementBlock("h2",of,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",rf,[s.value.length?(e.openBlock(),e.createElementBlock("div",lf,[e.createElementVNode("button",{ref_key:"menuButton",ref:l,type:"button",class:"map-info__menu-button",onClick:b,"aria-label":"Показати посилання"},[...g[1]||(g[1]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M4 12H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 6H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M4 18H20",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],512),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vsTailwind vs-popover__content right map-info__popover",style:e.normalizeStyle(p.value),onClick:g[0]||(g[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,h=>(e.openBlock(),e.createElementBlock("button",{key:h.slug||h.name,type:"button",class:"map-info__popover-link",onClick:y=>d(h.slug)},e.toDisplayString(h.name),9,af))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),f.value.length?(e.openBlock(),e.createBlock(ln,{key:1,items:f.value},null,8,["items"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),t.content?(e.openBlock(),e.createElementBlock("div",{key:1,class:"map-info__content",innerHTML:t.content},null,8,sf)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-2b3e43a7"]]),cf={class:"opacity-popover__content"},df={class:"opacity-popover__value"},zo=X(e.defineComponent({__name:"LayerOpacityPopover",props:{layerId:{}},setup(t){const n=t,o=e.ref(!1),r=e.ref(100),l=e.ref(null),i=e.ref(null),a=e.reactive({top:0,left:0});function s(){var d;const c=(d=i.value)==null?void 0:d.querySelector("button");if(!c)return;const m=c.getBoundingClientRect();a.top=m.bottom+8+window.scrollY,a.left=m.left+window.scrollX}function p(){o.value=!o.value,o.value&&e.nextTick(s)}function f(){var u;const c=ne(n.layerId),m=(r.value??100)/100;if(c!=null&&c.setOpacity){c.setOpacity(m);return}const d=(u=c==null?void 0:c.getLayer)==null?void 0:u.call(c);if(d)switch(d.type){case"raster":c.updatePaint({"raster-opacity":m});break;case"fill":c.updatePaint({"fill-opacity":m});break;case"line":c.updatePaint({"line-opacity":m});break;case"circle":c.updatePaint({"circle-opacity":m});break;case"symbol":c.updatePaint({"icon-opacity":m});break}}function b(c){var d,u;if(!o.value)return;const m=c.target;(d=l.value)!=null&&d.contains(m)||(u=i.value)!=null&&u.contains(m)||(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,m)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:i},[e.renderSlot(c.$slots,"trigger",{toggle:p,opacity:r.value},()=>[e.createElementVNode("button",{type:"button",class:"opacity-btn",onClick:e.withModifiers(p,["stop"])},e.toDisplayString(r.value)+"% ",1)],!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popoverEl",ref:l,class:"opacity-popover",style:e.normalizeStyle({top:a.top+"px",left:a.left+"px"})},[e.createElementVNode("div",cf,[m[1]||(m[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":m[0]||(m[0]=d=>r.value=d),class:"opacity-popover__range",onInput:f},null,544),[[e.vModelText,r.value]]),e.createElementVNode("span",df,e.toDisplayString(r.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-e53d97ef"]]),uf={class:"layers-panel"},pf={class:"layers-panel__header"},ff={class:"layers-panel__heading"},mf={class:"layers-panel__title"},gf={key:0,class:"layers-panel__description"},hf={class:"layers-panel__label"},yf={class:"layers-panel__label-row"},xf=["checked","onChange"],bf={class:"layers-panel__name"},kf={class:"layers-panel__meta text-slate-500"},wf=["onClick"],_f={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Ef={key:0,class:"layers-panel__legend-meta"},Bf={key:0,class:"layers-panel__legend-name"},vf={key:0,class:"layers-panel__actions"},Nf=["innerHTML","onClick"],Oo="map:temporary-layer-request",Po=X(e.defineComponent({__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,r=e.ref({}),l=Ee(),{temporaryLayers:i,activateTemporaryLayer:a,deactivateTemporaryLayer:s,clearTemporaryLayers:p}=Mo(l.map),f=e.computed(()=>{const x=o.layers.map(L=>({...L,isTemporary:!1,owner:null,visible:L.visible!==!1})),V=i.value.map(L=>({id:L.id,name:L.title,visible:r.value[L.id]??!0,actions:[],filters:null,isTemporary:!0,owner:L.owner??null,handle:L.handle??null,card:L.card??null,popup:L.popup??null,style:L.style??null,group_name:null,count:null,holder:null}));return[...x,...V]}),b=e.computed(()=>i.value.length>0),c=n;function m(){var x;for(let V=0;V<o.layers.length;V++){const L=o.layers[V],I=d(L);if(!I)continue;const S=ne(L.id,I),A=L.visible!==!1;r.value[L.id]=A,A||(x=S==null?void 0:S.setVisible)==null||x.call(S,!1)}}function d(x){const V=x.id;if(!V)return null;const L=(x.service||x.service_type||x.type||"").toString().toLowerCase(),I=x.service_url||x.url||null;if(!!I&&(L==="tms"||L==="wmts"||L==="wms"||L==="ogc")){const E=u(I);return E?{sourceId:V,source:{type:"raster",tiles:[E],tileSize:x.tileSize||256,minzoom:x.minzoom??0,maxzoom:x.maxzoom??22,scheme:x.scheme||"xyz"},layer:{id:V,type:"raster",source:V},card:x.card,popup:x.popup}:null}const A=`${location.origin}/api/vtile/${V}/ua/{z}/{x}/{y}.vmt`;return{sourceId:V,source:{type:"vector",tiles:[A],minZoom:4,maxZoom:14},layer:{id:V,source:V,"source-layer":V,style:x.style},card:x.card,popup:x.popup}}function u(x){return x?/^https?:\/\//i.test(x)?x:x.startsWith("//")?`${window.location.protocol}${x}`:x.startsWith("/")?`${location.origin}${x}`:`${location.origin}/${x}`:null}function g(x){const V=r.value[x];return V??!0}function h(x){var I,S;if(!(x!=null&&x.id))return null;const V=(I=x.title)==null?void 0:I.trim(),L=(S=x.url)==null?void 0:S.trim();return!V||!L?null:{id:x.id,title:V,url:L,tileSize:x.tileSize,minzoom:x.minzoom,maxzoom:x.maxzoom,opacity:x.opacity}}function y(x){if(!x)return;const V=x.owner;if(x.action==="clear"){const I=i.value.filter(S=>!V||S.owner===V).map(S=>S.id);p(V),I.forEach(S=>{S in r.value&&delete r.value[S]});return}const L=h(x.spec);if(L){if(x.action==="activate"){a(L,x.context||{},V),r.value[L.id]=!0;return}x.action==="deactivate"&&(s(L.id,V),delete r.value[L.id])}}function k(x){x instanceof CustomEvent&&y(x.detail)}e.watch(()=>i.value.map(x=>x.id),(x,V)=>{const L=new Set(V||[]),I=new Set(x);x.forEach(S=>{S in r.value||(r.value[S]=!0)}),L.forEach(S=>{I.has(S)||delete r.value[S]})},{immediate:!0}),e.onMounted(()=>{m(),window.addEventListener(Oo,k)}),e.onBeforeUnmount(()=>{window.removeEventListener(Oo,k)});function C(x,V){var A,E,z;const I=V.target.checked;if(r.value[x.id]=I,x.isTemporary){if(!I){s(x.id,x.owner||void 0),delete r.value[x.id];return}const T=x.handle||((A=i.value.find(F=>F.id===x.id))==null?void 0:A.handle);(E=T==null?void 0:T.setVisible)==null||E.call(T,!0);return}const S=ne(x.id);(z=S==null?void 0:S.setVisible)==null||z.call(S,I)}function M(x){return x.isTemporary?[{label:"Назва",value:x.name??null},{label:"Тип",value:"Тимчасовий шар"},x.owner?{label:"Джерело",value:x.owner}:null].filter(Boolean):[{label:"Назва",value:x.name??null},{label:"Назва групи",value:x.group_name||null},{label:"Кількість",value:x.count??null},{label:"Балансоутримувач",value:x.holder??null}]}function j(x){var V,L,I;return((V=x==null?void 0:x.style)==null?void 0:V.color)||((L=x==null?void 0:x.style)==null?void 0:L.stroke)||((I=x==null?void 0:x.style)==null?void 0:I.fill)||null}function B(x){var V,L;return((L=(V=x==null?void 0:x.legend)==null?void 0:V[0])==null?void 0:L.name)||null}function N(){if(!i.value.length)return;const x=i.value.map(V=>V.id);p(),x.forEach(V=>delete r.value[V])}return(x,V)=>{var L,I;return e.openBlock(),e.createElementBlock("div",uf,[e.createElementVNode("div",pf,[e.createElementVNode("div",ff,[e.createElementVNode("h2",mf,e.toDisplayString(((L=t.config)==null?void 0:L.title)||"Шари"),1),(I=t.config)!=null&&I.description?(e.openBlock(),e.createElementBlock("div",gf,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),b.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__clear",onClick:N}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,S=>{var A;return e.openBlock(),e.createElementBlock("div",{key:S.id,class:"layers-panel__item"},[e.createElementVNode("label",hf,[e.createElementVNode("div",yf,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:g(S.id),onChange:E=>C(S,E)},null,40,xf),e.createElementVNode("span",bf,e.toDisplayString(S.name),1),e.createElementVNode("div",kf,[g(S.id)&&!S.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(zo,{"layer-id":S.id,class:"flex"},{trigger:e.withCtx(({toggle:E})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(E,["prevent","stop"])},[e.createElementVNode("div",_f,[e.createVNode(e.unref(ar))])],8,wf)]),_:1},8,["layer-id"]),e.createVNode(Vt,{count:Array.isArray(S.filters)?S.filters.length:0,layer:S},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(ln,{items:M(S)},null,8,["items"])])]),g(S.id)&&j(S)?(e.openBlock(),e.createElementBlock("span",Ef,[e.createElementVNode("span",{class:"layers-panel__legend-dot",style:e.normalizeStyle({background:j(S)})},null,4),B(S)?(e.openBlock(),e.createElementBlock("span",Bf,e.toDisplayString(B(S)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),(A=S.actions)!=null&&A.length?(e.openBlock(),e.createElementBlock("div",vf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.actions,E=>(e.openBlock(),e.createElementBlock("button",{key:E.widget||E.id||E.icon,type:"button",class:"layers-panel__action",innerHTML:E.icon,onClick:z=>c("action",{layerId:E.widget})},null,8,Nf))),128))])):e.createCommentVNode("",!0)])}),128))])}}}),[["__scopeId","data-v-ee95bc5b"]]),Cf={class:"catalog-tab__search relative mt-[10px]"},Vf={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%)"}},$f={key:0,class:"text-sm text-gray-400 text-center mt-6"},Sf=["onClick"],Af={class:"flex items-center gap-x-3"},Lf={class:"max-w-[260px] text-[14px] text-[#4b5563]"},Ff={class:"text-xs opacity-60 text-[#4b5563]"},Tf={class:"flex items-center cursor-pointer gap-2 flex-1"},Mf=["checked","onChange"],If={class:"text-[13px] text-gray-600 truncate max-w-[260px]"},Df={class:"flex items-center gap-2"},jf=X(e.defineComponent({__name:"LayersCatalogTab",props:{catalog:{},selected:{},search:{}},emits:["toggle-layer","update:search","open-filter"],setup(t,{emit:n}){const o=t,r=n,l=e.reactive({}),i=e.ref(null),a=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0,layerId:null}),s=e.computed(()=>{const h=o.search.trim().toLowerCase();return o.catalog.groups.map(y=>{const k=h?y.layers.filter(C=>(typeof C.name=="string"?C.name:"").toLowerCase().includes(h)):y.layers;return{...y,layers:k}}).filter(y=>y.layers.length>0)}),p=e.computed({get:()=>o.search,set:h=>r("update:search",h)});function f(h){l[h]=!l[h],Tu()}function b(h){return!!l[h]}function c(h,y){if(o.selected.includes(y)){a.visible=!1,a.layerId=null;return}const k=h.currentTarget;if(!k)return;const C=k.getBoundingClientRect(),M=typeof window<"u"?window.scrollX:0,j=typeof window<"u"?window.scrollY:0;a.left=C.left+C.width/2+M,a.top=C.bottom+8+j,a.layerId=y,a.visible=!0}function m(){a.visible=!1,a.layerId=null}function d(h){return[{label:"Назва",value:u(h.name)},{label:"Сервіс",value:u(h.service)},{label:"Посилання",value:u(h.url),breakLine:!0},{label:"Джерело",value:u(h.source_path),breakLine:!0},{label:"Popup",value:g(h.popup,"полів")},{label:"Картка",value:g(h.card,"полів")},{label:"Фільтри",value:g(h.filters,"фільтрів")}]}function u(h){return h==null||h===""?null:String(h)}function g(h,y){return!Array.isArray(h)||h.length===0?null:`${h.length} ${y}`}return e.watch(()=>o.selected?o.selected.slice():[],h=>{!a.visible||!a.layerId||h.includes(a.layerId)&&(a.visible=!1,a.layerId=null)}),(h,y)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:i,class:"catalog-tab"},[e.createElementVNode("div",Cf,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[0]=k=>p.value=k),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,p.value]]),(e.openBlock(),e.createElementBlock("svg",Vf,[...y[1]||(y[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)])]))]),s.value.length===0?(e.openBlock(),e.createElementBlock("div",$f," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:"mt-2"},[e.createElementVNode("div",{class:"hover:bg-gray-100 cursor-pointer p-[8px] rounded-lg flex justify-between items-center",onClick:C=>f(k.id)},[e.createElementVNode("div",Af,[(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(k.id)?"rotate-90":""])},[...y[2]||(y[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",Lf,e.toDisplayString(k.name),1)]),e.createElementVNode("div",Ff,e.toDisplayString(k.layers.length),1)],8,Sf),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(k.layers,C=>(e.openBlock(),e.createElementBlock("div",{key:C.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Tf,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(C.id),onChange:M=>h.$emit("toggle-layer",C.id,M.target.checked,C)},null,40,Mf),y[3]||(y[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",If,e.toDisplayString(C.name),1)]),e.createElementVNode("div",Df,[Array.isArray(C.filters)&&C.filters.length?(e.openBlock(),e.createBlock(Vt,{key:0,count:C.filters.length,layer:C,disabled:!t.selected.includes(C.id),onMouseenter:M=>c(M,C.id),onMouseleave:m,onFocus:M=>c(M,C.id),onBlur:m},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(ln,{items:d(C)},null,8,["items"])])]))),128))],512),[[e.vShow,b(k.id)]])]),_:2},1024)]))),128)),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[a.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${a.top}px`,left:`${a.left}px`})},e.toDisplayString(a.text),5)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-1df2b104"]]),zf={class:"flex flex-col gap-0"},Of={class:"text-xs text-slate-600 font-semibold"},Pf=e.defineComponent({__name:"MapLayerPopover",props:{items:{}},setup(t,{expose:n}){const o=t,r=e.reactive({open:!1,top:0,left:0,transform:"translateX(-50%)"}),l=e.ref(null),i=e.ref(null);let a=null;const s=e.computed(()=>r.open?{position:"absolute",width:"460px",top:`${r.top}px`,left:`${r.left}px`,transform:r.transform,display:"block"}:{display:"none"});function p(){if(r.open){m();return}if(!l.value){m();return}r.open=!0,e.nextTick(()=>{f(),d(),requestAnimationFrame(()=>{f()})})}function f(){var V,L;if(!r.open||!l.value)return;const g=l.value.getBoundingClientRect(),h=8,y=window.scrollX+h,k=window.scrollX+window.innerWidth-h,C=window.scrollY+h,M=window.scrollY+window.innerHeight-h,j=((V=i.value)==null?void 0:V.offsetWidth)||460,B=((L=i.value)==null?void 0:L.offsetHeight)||0;let N=g.left+window.scrollX+(g.width-j)/2;N<y&&(N=y),N+j>k&&(N=Math.max(y,k-j)),r.left=N;let x=g.bottom+window.scrollY+h;x+B>M&&(x=g.top+window.scrollY-B-h,x<C&&(x=Math.max(C,M-B))),r.top=x,r.transform="none"}function b(g){var y,k;if(!r.open)return;const h=g.target;(y=l.value)!=null&&y.contains(h)||(k=i.value)!=null&&k.contains(h)||m()}function c(g){g.key==="Escape"&&m()}function m(){u(),r.open=!1,l.value=null,i.value=null}function d(){u(),i.value&&(a=new ResizeObserver(()=>{f()}),a.observe(i.value))}function u(){a&&(a.disconnect(),a=null)}return e.onMounted(()=>{document.addEventListener("click",b,!0),document.addEventListener("keydown",c),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",b,!0),document.removeEventListener("keydown",c),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f),u()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>f())},{deep:!0}),n({close:m}),(g,h)=>(e.openBlock(),e.createElementBlock("div",{class:"inline-flex relative",ref_key:"anchorEl",ref:l},[e.createElementVNode("div",{onClick:e.withModifiers(p,["prevent","stop"])},[e.renderSlot(g.$slots,"default")]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vst-popover__content inline-block z-[103] py-3 px-4 bg-white text-sm text-gray-500 rounded-md shadow-lg bottom absolute min-w-[200px]",style:e.normalizeStyle(s.value),ref_key:"popoverEl",ref:i,onClick:h[0]||(h[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",zf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,y=>(e.openBlock(),e.createElementBlock("div",{key:y.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",Of,e.toDisplayString(y.label),1),e.createElementVNode("div",{class:e.normalizeClass(["text-sm text-gray-800",{"break-all":y.breakLine}])},e.toDisplayString(y.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),Rf={class:"selected-tab"},Uf={class:"selected-tab__actions"},qf={key:0,class:"selected-tab__scroll"},Hf=["onDragstart","onDragover","onDrop"],Yf={class:"selected-tab__item-header"},Zf={class:"selected-tab__item-info"},Wf=["checked","onChange"],Kf={class:"selected-tab__item-name"},Gf={class:"selected-tab__item-controls"},Xf=["onClick"],Jf={class:"selected-tab__menu-inner"},Qf=X(e.defineComponent({__name:"LayersSelectedTab",props:{catalog:{},selected:{}},emits:["select-layer","reorder","remove","toggle-layer"],setup(t,{emit:n}){const o=t,r=n,l=e.reactive({}),i=e.ref(null),a=e.ref(null),s=new Map,p=e.reactive({top:0,left:0}),f=e.ref(null),b=e.reactive({top:0,left:0}),c=e.ref(null),m=new Map,d=e.reactive({});function u(v){var $;for(const D of(($=o.catalog)==null?void 0:$.groups)??[]){const R=D.layers.find(q=>q.id===v);if(R)return R}return null}e.watch(()=>o.selected,v=>{v.forEach($=>{l[$]==null&&(l[$]=100)})},{immediate:!0});function g(){if(!i.value)return;const v=s.get(i.value);if(!v)return;const $=v.getBoundingClientRect();p.top=$.bottom+8+window.scrollY,p.left=$.left+window.scrollX}e.watch(()=>o.selected,v=>{v.forEach($=>{d[$]==null&&(d[$]=!0)})},{immediate:!0});function h(v,$){d[v]=$;const D=ne(v);D&&D.setVisible($)}function y(v,$){$?m.set(v,$):m.delete(v)}function k(v){f.value=f.value===v?null:v,f.value&&e.nextTick(()=>C(v))}function C(v){const $=m.get(v);if(!$)return;const D=$.getBoundingClientRect();b.top=D.bottom+6+window.scrollY,b.left=D.left+window.scrollX}function M(v){const $=ne(v);$&&$.remove(),r("remove",v),f.value=null}function j(v){const $=v.target,D=i.value,R=f.value;if(D){const q=a.value,U=s.get(D);if(q&&q.contains($)||U&&U.contains($))return;i.value=null}if(R){const q=c.value,U=m.get(R);if(q&&q.contains($)||U&&U.contains($))return;f.value=null}}function B(){i.value&&g(),f.value&&C(f.value)}e.onMounted(()=>{document.addEventListener("click",j),window.addEventListener("resize",B),window.addEventListener("scroll",B,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",j),window.removeEventListener("resize",B),window.removeEventListener("scroll",B,!0)});const{map:N}=Ee();function x(v){var q,U,te;if(!v)return;const $=ne(v),D=u(v);if(!$&&!D)return;if(((q=D==null?void 0:D.extent)==null?void 0:q.length)===4&&((U=N.value)!=null&&U.fitBounds)){const J=D.extent.map(ee=>Number(ee));if(J.every(ee=>Number.isFinite(ee))){const[ee,se,ke,Be]=J;N.value.fitBounds([[ee,se],[ke,Be]],{padding:40}),f.value=null;return}}(te=$==null?void 0:$.getSource)!=null&&te.call($)&&(f.value=null)}const V=e.ref(null),L=e.ref(null);function I(v,$){V.value=$,L.value=$,v.dataTransfer&&(v.dataTransfer.effectAllowed="move",v.dataTransfer.setData("text/plain",String($)))}function S(v){L.value=v}function A(v,$){if(v.preventDefault(),V.value===null||V.value===$){V.value=null,L.value=null;return}const D=[...o.selected],[R]=D.splice(V.value,1);D.splice($,0,R),r("reorder",D),V.value=null,L.value=null}function E(){V.value=null,L.value=null}function z(v){return v==null||v===""?null:String(v)}function T(v,$){return!Array.isArray(v)||v.length===0?null:`${v.length} ${$}`}function F(v){var Be,Ve,we,$e,Fe,je;const $=ne(v),D=u(v);if(!$&&!D)return[];const R=(D==null?void 0:D.name)||((Ve=(Be=$==null?void 0:$.opts)==null?void 0:Be.layer)==null?void 0:Ve.name)||null,q=(D==null?void 0:D.service)||((we=$==null?void 0:$.opts)==null?void 0:we.service)||null,U=($e=$==null?void 0:$.getSource)==null?void 0:$e.call($),te=U&&"tiles"in U?(Fe=U.tiles)==null?void 0:Fe[0]:(D==null?void 0:D.url)||null,J=(D==null?void 0:D.source_path)||null,ee=($==null?void 0:$.popup)||(D==null?void 0:D.popup),se=($==null?void 0:$.card)||(D==null?void 0:D.card),ke=(D==null?void 0:D.filters)||((je=$==null?void 0:$.opts)==null?void 0:je.filters);return[{label:"Назва",value:z(R)},{label:"Сервіс",value:z(q)},{label:"Посилання",value:z(te),breakLine:!0},{label:"Джерело",value:z(J),breakLine:!0},{label:"Popup",value:T(ee,"полів")},{label:"Картка",value:T(se,"полів")},{label:"Фільтри",value:T(ke,"фільтрів")}]}return(v,$)=>(e.openBlock(),e.createElementBlock("div",Rf,[e.createElementVNode("div",Uf,[e.createElementVNode("button",{class:"selected-tab__add",onClick:$[0]||($[0]=D=>r("select-layer"))},[...$[3]||($[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",qf,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(D,R)=>{var q;return e.openBlock(),e.createElementBlock("div",{key:D,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":V.value===R,"selected-tab__item--over":L.value===R}]),draggable:"true",onDragstart:U=>I(U,R),onDragover:e.withModifiers(U=>S(R),["prevent"]),onDrop:U=>A(U,R),onDragend:E},[e.createElementVNode("div",Yf,[e.createElementVNode("div",Zf,[$[4]||($[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:d[D]??!0,onChange:U=>h(D,U.target.checked)},null,40,Wf),e.createElementVNode("span",Kf,e.toDisplayString(((q=u(D))==null?void 0:q.name)||"Шар"),1)]),e.createElementVNode("div",Gf,[e.createVNode(zo,{"layer-id":D},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:U=>y(D,U),onClick:e.withModifiers(U=>k(D),["stop"])},[...$[5]||($[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,Xf)])])],42,Hf)}),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:c,class:"selected-tab__menu",style:e.normalizeStyle({top:b.top+"px",left:b.left+"px"})},[e.createElementVNode("div",Jf,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:$[1]||($[1]=D=>x(f.value))},[...$[6]||($[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(Pf,{items:F(f.value)},{default:e.withCtx(()=>[...$[7]||($[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"]),$[9]||($[9]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:$[2]||($[2]=D=>M(f.value))},[...$[8]||($[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-4519d824"]]),em={class:"filter-tab"},tm={key:0,class:"filter-tab__header"},nm={class:"filter-tab__title"},om={key:1,class:"filter-tab__content rounded-md"},rm={class:"filter-tab__scroll"},lm={key:2,class:"filter-tab__empty"},im=X(e.defineComponent({__name:"LayersFilterTab",props:{layer:{},value:{}},emits:["change"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/filter")),r=t,l=n,i=e.computed(()=>{var p;return((p=r.layer)==null?void 0:p.filters)??[]}),a=e.computed(()=>i.value.length>0);function s(p){l("change",p.data)}return(p,f)=>(e.openBlock(),e.createElementBlock("div",em,[t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",tm,[e.createElementVNode("div",null,[e.createElementVNode("p",nm,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",om,[e.createElementVNode("div",rm,[e.createVNode(e.unref(o),{view:"vertical",schema:i.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:f[0]||(f[0]=b=>s(b))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",lm,[...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-c6632fbd"]]),am={class:"map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget"},sm={class:"flex items-center justify-between mb-4"},cm={class:"flex items-center gap-2"},dm={class:"text-lg font-semibold text-gray-800"},um={key:0},pm={key:1,class:"block text-sm font-normal text-gray-500"},fm={class:"flex mb-4 border-b border-gray-200"},mm={class:"map-catalog-widget__body"},Ro=X(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=e.ref("catalog"),o=e.ref({groups:[]}),r=e.ref([]),l=e.ref(""),{map:i}=Ee(),a=Ne.useRoute(),s=Ne.useRouter(),p=e.reactive({}),f=e.ref(null);function b(I){return o.value.groups.map(S=>S.layers.find(A=>A.id===I)).find(Boolean)||null}function c(){const I=f.value;if(!I)return;delete p[I];const S=ne(I);S!=null&&S.setFilter&&S.setFilter("")}function m(I,S){const A=ne(I);if(p[I]={...S},!(A!=null&&A.setFilter))return;const E=Object.entries(S).filter(([,z])=>z!=null&&z!=="").map(([z,T])=>`${z}=${T}`);A.setFilter(E.join("|"))}function d(I){const S=f.value;S&&m(S,I)}function u(I){const S=I.url;let A=null;if(S&&(A=S.startsWith("http")?S:`${window.location.origin}${S}`),!A)return null;const E=(I.service||"").toString().toLowerCase(),z=I.count??null;return E&&E!=="vtile"?{service:E,count:z,source:{type:"raster",tiles:[A],tileSize:256,minzoom:0,maxzoom:20}}:{service:E,count:z,source:{type:"vector",tiles:[A],minzoom:0,maxzoom:14},layer:{style:I.style},card:I.card,popup:I.popup}}function g(I,S,A){var F;const E=A??b(I);if(!E)return;const z=u(E);if(!z)return;const T=ne(E.id,z,i);if(T)if(T.setVisible(S),S){if(!r.value.includes(I)&&(r.value.push(I),(F=i.value)!=null&&F.getLayer(I)))try{i.value.moveLayer(I)}catch(v){console.warn("Cannot move new layer",I,v)}}else r.value=r.value.filter(v=>v!==I),f.value===I&&(c(),f.value=null)}function h(){r.value.forEach(I=>{const S=ne(I);S&&S.setVisible(!1)}),r.value=[]}function y(I){r.value=[...I],e.nextTick(()=>{var z;if(!i.value)return;const S=((z=i.value.getStyle())==null?void 0:z.layers)??[];let A;const E=T=>S.filter(F=>{var v,$;return(F==null?void 0:F.source)===T||(F==null?void 0:F.id)===T||(($=(v=F==null?void 0:F.id)==null?void 0:v.startsWith)==null?void 0:$.call(v,`${T}`))}).map(F=>F.id);for(let T=I.length-1;T>=0;T-=1){const F=I[T],v=E(F);v.length&&(v.forEach($=>{var D;if((D=i.value)!=null&&D.getLayer($))try{i.value.moveLayer($,A)}catch(R){console.warn("Cannot move layer",$,R)}}),A=v[0])}})}function k(I){!I||!Array.isArray(I.filters)||I.filters.length===0||r.value.includes(I.id)&&(f.value=I.id,p[I.id]||(p[I.id]={}),n.value="filter")}function C(){n.value="catalog"}const M=e.computed(()=>f.value?b(f.value):null),j=e.computed(()=>{const I=f.value;return I?p[I]??{}:{}}),B=e.computed(()=>o.value.groups.reduce((I,S)=>I+S.layers.length,0)),N=e.computed(()=>n.value==="selected"?"Вибрані шари":n.value==="filter"?"Фільтр шарів":"Каталог"),x=e.computed(()=>n.value==="selected"?r.value.length:n.value==="catalog"?B.value:null),V=e.computed(()=>{var I;return n.value==="filter"?((I=M.value)==null?void 0:I.name)??"":""});async function L(){const S=await(await fetch("/api/gis-layer-list")).json(),A=new Map;S.forEach(T=>{const F=T.group_id??"other";A.has(F)||A.set(F,{id:F,name:T.group_name||"Інші шари",layers:[]}),A.get(F).layers.push(T)}),o.value={groups:Array.from(A.values())};const E=a.query.layers;if(!E)return;const z=Array.isArray(E)?E[0]:E;typeof z=="string"&&z.split(",").forEach(T=>{const F=T.trim();if(!F)return;const v=b(F);v&&g(F,!0,v)})}return e.watch(f,I=>{!I&&n.value==="filter"&&(n.value="catalog")}),e.watch(M,I=>{!I&&f.value&&(f.value=null)}),e.watch(r,I=>{const S={...a.query};I.length?S.layers=I.join(","):delete S.layers,s.replace({query:S}).catch(()=>{})},{deep:!0}),e.onMounted(L),(I,S)=>(e.openBlock(),e.createElementBlock("div",am,[e.createElementVNode("div",sm,[e.createElementVNode("div",cm,[S[5]||(S[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",dm,[e.createTextVNode(e.toDisplayString(N.value)+" ",1),x.value!==null?(e.openBlock(),e.createElementBlock("span",um,"("+e.toDisplayString(x.value)+")",1)):e.createCommentVNode("",!0),V.value?(e.openBlock(),e.createElementBlock("span",pm,e.toDisplayString(V.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("button",{onClick:h,class:"p-1 rounded-full hover:bg-gray-200 transition-colors","aria-label":"Reset layers"},[...S[6]||(S[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-205c8f6a><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-205c8f6a></path><path d="M21 3v5h-5" data-v-205c8f6a></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-205c8f6a></path><path d="M8 16H3v5" data-v-205c8f6a></path></svg>',1)])])]),e.createElementVNode("div",fm,[e.createElementVNode("button",{onClick:S[0]||(S[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:S[1]||(S[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",mm,[n.value==="catalog"?(e.openBlock(),e.createBlock(jf,{key:0,class:"map-catalog-widget__scroll",catalog:o.value,selected:r.value,search:l.value,"onUpdate:search":S[2]||(S[2]=A=>l.value=A),onToggleLayer:g,onOpenFilter:k},null,8,["catalog","selected","search"])):n.value==="selected"?(e.openBlock(),e.createBlock(Qf,{key:1,catalog:o.value,selected:r.value,onToggleLayer:g,onSelectLayer:S[3]||(S[3]=A=>n.value="catalog"),onReorder:y,onRemove:S[4]||(S[4]=A=>r.value=r.value.filter(E=>E!==A))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(im,{key:2,layer:M.value,value:j.value,onChange:d,onClose:C},null,8,["layer","value"]))])]))}}),[["__scopeId","data-v-205c8f6a"]]),gm={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},hm={class:"flex items-start justify-between gap-3 p-5 pb-3"},ym={class:"inline-block text-xl font-semibold text-gray-800"},xm={key:0,class:"mt-1 text-sm text-gray-500"},bm={class:"flex items-center gap-[6px]"},km={class:"px-5 pb-5 space-y-6"},wm={key:0,class:"space-y-2"},_m={class:"flex flex-wrap gap-4"},Em=["value"],Bm={key:1,class:"text-sm text-gray-500"},vm={key:2,class:"text-sm text-gray-500"},Nm={class:"text-4xl font-medium text-gray-800"},Cm={class:"space-y-[14px]"},Vm={class:"flex items-center gap-[10px] text-gray-600"},$m={class:"font-medium text-gray-700"},Sm={class:"flex items-center justify-end text-end gap-3"},Am={class:"font-medium text-gray-800"},Lm={class:"min-w-[40px] font-medium text-[#3C3C4399]"},Uo=X(e.defineComponent({__name:"MapAttributeWidget",props:{config:{}},setup(t){const n=["#3a7a57","#d970d5","#8e997b","#b4c039","#a855f7","#71823a","#f79d92","#8b5cf6","#a6514e","#6b7280"],o=t,r=e.ref(!0),l=e.ref(!1),i=e.ref([]),a=e.ref(null),s=e.ref(null),p=e.ref(null),f=e.ref(null),b=e.ref(null),c=e.ref({}),m=e.ref(null);function d(T){return T&&JSON.parse(JSON.stringify(T))}const u=e.computed(()=>{const T=o.config.layer;if(typeof T!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const F=T.trim();if(!F)throw new Error("MapAttributeWidget: `layer` must be non-empty");return F}),g=e.computed(()=>{const{list:T,attribute:F}=o.config;if(Array.isArray(T)&&T.length)return T.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(F))return F.map(v=>v!=null?String(v).trim():"").filter(v=>v.length).map(v=>({id:v,text:null}));if(typeof F=="string"){const v=F.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")}),h=e.computed(()=>g.value.map(T=>({id:T.id,label:T.text||c.value[T.id]||T.id})));e.watch(g,T=>{if(!T.length){m.value=null,i.value=[];return}(!m.value||!T.some(F=>F.id===m.value))&&(m.value=T[0].id)},{immediate:!0});const y=e.computed(()=>{var T;return m.value||((T=g.value[0])==null?void 0:T.id)||null});e.watch(u,()=>{var T,F;(F=(T=s.value)==null?void 0:T.remove)==null||F.call(T),s.value=null,p.value=null,f.value=null,b.value=null,c.value={}});const k=e.computed(()=>{var T;return(T=f.value)!=null&&T.length?{id:u.value,name:p.value,filters:f.value}:null}),C=e.computed(()=>{var T,F;return((F=(T=k.value)==null?void 0:T.filters)==null?void 0:F.length)||0});async function M(T){var $;const F=await fetch(`/api/gis-service/${encodeURIComponent(T)}`);if(!F.ok){let D="Не вдалося завантажити налаштування шару";try{const R=await F.json();D=(($=R==null?void 0:R.message)==null?void 0:$.error)||(R==null?void 0:R.message)||D}catch{}throw new Error(D)}const v=await F.json();return p.value=(v==null?void 0:v.name)||null,f.value=Array.isArray(v==null?void 0:v.filters)?v.filters:null,b.value=d((v==null?void 0:v.style)||{}),c.value=((v==null?void 0:v.attributes)||[]).reduce((D,R)=>{const q=typeof(R==null?void 0:R.name)=="string"?R.name.trim():"",U=typeof(R==null?void 0:R.ua)=="string"?R.ua.trim():"";return q&&(D[q]=U||q),D},{}),v}function j(T,F){let v=ne(T);if(!v){const $=`${location.origin}/api/vtile/${T}/ua/{z}/{x}/{y}.vmt`;v=ne(T,{source:{type:"vector",tiles:[$],minzoom:0,maxzoom:14},layer:{id:T,source:T,"source-layer":T,style:(F==null?void 0:F.style)||{}},card:F==null?void 0:F.card,popup:F==null?void 0:F.popup})}return s.value=v,v}async function B(T,F){var D;const v=`/api/gis-service/${encodeURIComponent(T)}/${encodeURIComponent(F)}`,$=await fetch(v);if(!$.ok){let R="Не вдалося отримати статистику";try{const q=await $.json();R=((D=q==null?void 0:q.message)==null?void 0:D.error)||(q==null?void 0:q.message)||R}catch{}throw new Error(R)}return $.json()}function N(T){const F=new Map;return T&&(T.rules||[]).forEach($=>{const D=($==null?void 0:$.value)??($==null?void 0:$.id);D!=null&&F.set(String(D),$)}),F}function x(T,F,v,$,D){if(typeof(F==null?void 0:F.color)=="string"&&F.color.trim())return F.color.trim();const R=o.config.colors||{};if(R[T])return R[T];const U=N(v==null?void 0:v.style).get(T);return typeof(U==null?void 0:U.color)=="string"&&U.color.trim()?U.color.trim():n[D%n.length]}function V(T,F,v,$){var D;return(F==null?void 0:F.text)||(F==null?void 0:F.label)||(F==null?void 0:F.name)||(F==null?void 0:F[`${$}_text`])||((D=N(v==null?void 0:v.style).get(T))==null?void 0:D.label)||T}function L(T,F,v,$){if(!T)return;const D=d((F==null?void 0:F.style)||b.value)||{},R=$.trim();if(!R)return;const q={...D.colors||{},...o.config.colors||{}};R===$&&v.forEach(U=>{U.color.trim()&&(q[U.id]=U.color)}),T.setStyle({...D,type:D.type||"polygon",colorAttr:R,opacity:.8,colors:q})}async function I(){var R,q;i.value=[],a.value=null;const T=u.value,F=y.value;if(!F)return;l.value=!0;const v=await M(T);j(T,v);const $=await B(T,F),D=Array.isArray($==null?void 0:$.rows)?$.rows.map((U,te)=>{const J=(U==null?void 0:U.id)??(U==null?void 0:U.value),ee=J!=null?String(J):"";if(!ee)return null;const se=V(ee,U,v,F),ke=Number((U==null?void 0:U.count)??0)||0,Be=x(ee,U,v,F,te);return{id:ee,label:se,count:ke,color:Be}}).filter(Boolean):[];i.value=D,a.value=((R=$==null?void 0:$.field)==null?void 0:R.label)||((q=$==null?void 0:$.field)==null?void 0:q.name)||null,L(s.value,v,D,F),l.value=!1}e.watch(()=>[u.value,y.value],()=>{I()},{immediate:!0});const S=e.computed(()=>"Набори даних"),A=e.computed(()=>i.value.reduce((T,F)=>T+F.count,0)),E=e.computed(()=>{var v;const T=y.value;return((v=h.value.find($=>$.id===T))==null?void 0:v.label)||null||a.value||T||null});function z(T){return A.value?`${(T/A.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var T,F;(F=(T=s.value)==null?void 0:T.remove)==null||F.call(T)}),(T,F)=>r.value?(e.openBlock(),e.createElementBlock("div",gm,[e.createElementVNode("div",hm,[e.createElementVNode("div",null,[e.createElementVNode("h2",ym,e.toDisplayString(S.value),1),E.value&&h.value.length===1?(e.openBlock(),e.createElementBlock("p",xm,e.toDisplayString(E.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",bm,[k.value?(e.openBlock(),e.createBlock(Vt,{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:C.value,layer:k.value},null,8,["count","layer"])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",onClick:F[1]||(F[1]=v=>r.value=!1)},[...F[3]||(F[3]=[e.createElementVNode("svg",{class:"w-4 h-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},[e.createElementVNode("path",{d:"M18 6 6 18"}),e.createElementVNode("path",{d:"m6 6 12 12"})],-1)])])])]),e.createElementVNode("div",km,[h.value.length>1?(e.openBlock(),e.createElementBlock("div",wm,[e.createElementVNode("div",_m,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.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":F[2]||(F[2]=$=>m.value=$)},null,8,Em),[[e.vModelRadio,m.value]]),e.createElementVNode("span",null,e.toDisplayString(v.label),1)]))),128))])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",Bm,"Завантаження…")):i.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",Nm,e.toDisplayString(A.value),1),e.createElementVNode("ul",Cm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,v=>(e.openBlock(),e.createElementBlock("li",{key:v.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",Vm,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:v.color})},null,4),e.createElementVNode("span",$m,e.toDisplayString(v.label),1)]),e.createElementVNode("div",Sm,[e.createElementVNode("span",Am,e.toDisplayString(v.count),1),e.createElementVNode("span",Lm,e.toDisplayString(z(v.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",vm,"Дані відсутні"))])])):(e.openBlock(),e.createElementBlock("button",{key:0,class:"py-2 px-2.5 max-h-[38px] inline-flex items-center gap-x-1.5 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50",onClick:F[0]||(F[0]=v=>r.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-9686ce7b"]]),Fm={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]"},Tm={key:0,class:"vs-select__options absolute z-50 mt-1 w-full bg-white border border-gray-300 shadow-lg rounded-lg text-sm"},Mm=["onClick"],Im={class:"relative flex-1 min-w-[140px]"},Dm=["placeholder"],jm="https://data.softpro.ua/api-user/gis-url-proxy",zm="https://geo.rv.ua/api-user/dzk.api",qo=X(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=Ee(),r=["xy","parcel"],l=e.computed(()=>{var M,j;const C=(j=(M=n.config)==null?void 0:M.tools)==null?void 0:j.filter(B=>r.includes(B));return C&&C.length?C:r}),i=e.computed(()=>{var C,M;return((M=(C=n.config)==null?void 0:C.placeholder)==null?void 0:M.trim())||"Пошук…"}),a=e.ref(l.value[0]);e.watch(l,C=>{C.includes(a.value)||(a.value=C[0])});const s=e.ref(""),p=e.ref(!1),f=e.ref(null);e.watch(a,()=>{s.value="",p.value=!1});function b(C){a.value=C}function c(C){if(!p.value)return;const M=f.value;M&&!M.contains(C.target)&&(p.value=!1)}e.onMounted(()=>{window.addEventListener("click",c,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",c,!0)});function m(C){return C==="xy"?"Координати":C==="parcel"?"Кадастр":"Адреси"}function d(C){const M=C.replace(/[,]+/g," ").trim();if(!M)return null;const j=M.split(/\s+/).filter(Boolean);if(j.length<2)return null;const B=j.slice(0,2).map(Number);if(!B.every(A=>Number.isFinite(A)))return null;let[N,x]=B,V=N,L=x;const I=A=>Math.abs(A)<=90,S=A=>Math.abs(A)<=180;if(!I(V)||!S(L))if(I(L)&&S(V))V=x,L=N;else return null;return{lat:V,lng:L}}function u(C){return((C==null?void 0:C.items)||[]).map((j,B)=>{var N,x,V;return{id:String((j==null?void 0:j.id)??B),title:(j==null?void 0:j.title)||((N=j==null?void 0:j.address)==null?void 0:N.label)||"Знайдений обʼєкт",lat:Number((x=j==null?void 0:j.position)==null?void 0:x.lat),lng:Number((V=j==null?void 0:j.position)==null?void 0:V.lng)}})}function g(C){const M=(C==null?void 0:C.result)||(C==null?void 0:C.data)||C;if(!M)return[];const j=M.geom_centroid;if(!j||!Array.isArray(j.coordinates))return[];const[B,N]=j.coordinates;return!Number.isFinite(N)||!Number.isFinite(B)?[]:[{id:"parcel",title:M.cadnum||M.cad_num||"Земельна ділянка",lat:N,lng:B}]}function h(C){const j=C.replace(/\s+/g,"").split(":");if(console.log(j),j.length!==4)return!1;const B=[10,2,3,4];return j.every((N,x)=>N.length===B[x]&&/^\d+$/.test(N))}function y(C){var j,B;const M=((j=n.config)==null?void 0:j.zoom)??17;(B=o.flyTo)==null||B.call(o,{center:[C.lng,C.lat],zoom:M})}async function k(){const C=s.value.trim();if(C){if(a.value==="xy"){const M=d(C);if(!M){he.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}y({id:"xy",title:"Точка на мапі",...M}),s.value="";return}try{const M=new URL(a.value==="here"?jm:zm);if(a.value==="here")M.searchParams.set("searchtext",C);else{if(!h(C)){he.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}M.searchParams.set("cad_num",C)}const j=await fetch(M.toString());if(!j.ok)throw new Error(`HTTP ${j.status}`);const B=await j.json(),N=a.value==="here"?u(B):g(B);if(!N.length)he.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const x=N[0];y(x),s.value=""}}catch(M){const j=(M==null?void 0:M.message)||"Помилка пошуку";he.notify({type:"error",title:"Пошук",message:j})}}}return(C,M)=>(e.openBlock(),e.createElementBlock("div",Fm,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(k,["prevent"])},[l.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:f,class:"relative search-type w-[140px]"},[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:M[0]||(M[0]=j=>p.value=!p.value)},[e.createElementVNode("span",null,e.toDisplayString(m(a.value)),1),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":p.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[...M[2]||(M[2]=[e.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))]),p.value?(e.openBlock(),e.createElementBlock("div",Tm,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,j=>(e.openBlock(),e.createElementBlock("li",{key:j,class:"px-3 py-2 cursor-pointer hover:bg-gray-100",onClick:B=>b(j)},e.toDisplayString(m(j)),9,Mm))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",Im,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":M[1]||(M[1]=j=>s.value=j),placeholder:i.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,Dm),[[e.vModelText,s.value,void 0,{trim:!0}]]),M[3]||(M[3]=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))])],32)]))}}),[["__scopeId","data-v-85962cbc"]]),Om="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",Pm="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",Rm=X(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:r,removeControl:l}=Ee(),i=e.ref(null),a=e.ref(null),s=e.ref(null),p=e.ref(null);let f=null;function b(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function c(B){if(Array.from(document.styleSheets).some(V=>{var L;return(L=V==null?void 0:V.href)==null?void 0:L.includes(B)}))return;const x=document.createElement("link");x.rel="stylesheet",x.href=B,document.head.appendChild(x)}function m(B){return new Promise((N,x)=>{const V=Array.from(document.scripts).find(I=>I.src===B);if(V){if(V._loaded)return N();V.addEventListener("load",()=>N()),V.addEventListener("error",()=>x(new Error(`Failed ${B}`)));return}const L=document.createElement("script");L.src=B,L.async=!0,L.onload=()=>{L._loaded=!0,N()},L.onerror=()=>x(new Error(`Failed ${B}`)),document.head.appendChild(L)})}function d(){var N,x,V;const B=window;return B.MapboxExportControl||((N=B.mapboxgl)==null?void 0:N.MapboxExportControl)||((x=B.mapboxglExport)==null?void 0:x.MapboxExportControl)||((V=B.mapboxglExport)==null?void 0:V.default)||null}function u(){const B=document.createElementNS("http://www.w3.org/2000/svg","svg");return B.setAttribute("xmlns","http://www.w3.org/2000/svg"),B.setAttribute("viewBox","0 0 24 24"),B.setAttribute("width","18"),B.setAttribute("height","18"),B.setAttribute("fill","none"),B.setAttribute("stroke","currentColor"),B.setAttribute("stroke-width","2"),B.setAttribute("stroke-linecap","round"),B.setAttribute("stroke-linejoin","round"),B.classList.add("map-control-button__icon"),[{d:"M0 0h24v24H0z",stroke:"none",fill:"none"},{d:"M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2"},{d:"M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4"},{d:"M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z"}].forEach((x,V)=>{const L=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(x).forEach(([I,S])=>{L.setAttribute(I,S)}),B.appendChild(L)}),B}function g(){const B=document.createElement("button");B.id="print-btn",B.type="button",B.className=["group relative flex items-center justify-center","w-9 h-9 rounded-xl shadow-lg transition-transform transition-shadow duration-200","bg-white text-gray-700 hover:bg-gray-50 hover:scale-105","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400/60 focus-visible:ring-offset-2"].join(" "),B.setAttribute("aria-label","Друк");const N=u(),x=document.createElement("span");return x.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(" "),x.textContent="Друк",x.setAttribute("aria-hidden","true"),B.appendChild(N),B.appendChild(x),B.addEventListener("click",V=>{V.stopPropagation(),h()}),p.value=B,B}function h(){if(!s.value)return;s.value.style.display==="block"?k():y()}function y(){var B,N,x;s.value&&(s.value.style.display="block",(B=p.value)==null||B.classList.add("scale-105","shadow-xl"),(N=a.value)==null||N.toggleCrosshair(!0),(x=a.value)==null||x.togglePrintableArea(!0),document.addEventListener("click",C))}function k(){var B,N,x;s.value&&(s.value.style.display="none",(B=p.value)==null||B.classList.remove("scale-105","shadow-xl"),(N=a.value)==null||N.toggleCrosshair(!1),(x=a.value)==null||x.togglePrintableArea(!1),document.removeEventListener("click",C))}function C(B){const N=i.value;N&&(B.target&&N.contains(B.target)||k())}function M(B){const N={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};B.querySelectorAll("label, option").forEach(V=>{var I;const L=(I=V.textContent)==null?void 0:I.trim();L&&N[L]&&(V.textContent=N[L])});const x=B.querySelector("button");x&&(x.textContent="Друкувати")}function j(B){const N=B.querySelector(".mapboxgl-export-list");if(!N||!i.value)return;s.value=N;const x=B.querySelector("button");if(x&&(x.style.display="none"),B.style.display="none",!p.value){const L=g();i.value.appendChild(L)}N.style.display="none";const V="_printControlBound";if(!N[V]){const L=I=>I.stopPropagation();N.addEventListener("click",L),N.addEventListener("mousedown",L),N[V]=!0}i.value.appendChild(N),M(N)}return e.onMounted(async()=>{await(o==null?void 0:o());const B=n.value;if(!B)return;c(Om),b();try{await m(Pm)}catch(V){console.warn("[MapPrintControl] load error",V);return}const N=d();if(!N)return;const x=new N({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(a.value=x,typeof x.onAdd=="function"){const V=x.onAdd.bind(x);x.onAdd=L=>{const I=V(L);return setTimeout(()=>I&&j(I),50),I}}r?r(x,"top-right"):B.addControl(x,"top-right"),f=V=>{V.key==="Escape"&&k()},document.addEventListener("keyup",f)}),e.onBeforeUnmount(()=>{k(),f&&(document.removeEventListener("keyup",f),f=null);const B=n.value;if(a.value)try{l?l(a.value):B==null||B.removeControl(a.value)}catch{}a.value=null}),(B,N)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:i,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-89156246"]]),Um={class:"map-center-control"},qm=X(e.defineComponent({__name:"MapCenterControl",props:{center:{},zoom:{}},setup(t){const n=t,{map:o,ready:r}=Ee(),l=e.ref(null),i=e.ref(null);function a(p){if(Array.isArray(p)&&p.length>=2){const[f,b]=p.slice(0,2).map(c=>Number(c));return Number.isNaN(f)||Number.isNaN(b)?null:[f,b]}if(p&&typeof p=="object"){const f=p,b=f.lng??f.lon??f.long??f.x,c=f.lat??f.y;if(b!=null&&c!=null){const m=Number(b),d=Number(c);if(!Number.isNaN(m)&&!Number.isNaN(d))return[m,d]}}if(typeof p=="string"){const f=p.split(",").map(b=>Number(b.trim()));if(f.length>=2&&f.every(b=>!Number.isNaN(b)))return[f[0],f[1]]}return null}e.watch(()=>n.center,p=>{const f=a(p);f&&(l.value=f)},{immediate:!0}),e.watch(()=>n.zoom,p=>{const f=Number(p);Number.isNaN(f)||(i.value=f)},{immediate:!0}),e.onMounted(async()=>{await(r==null?void 0:r());const p=o.value;if(p){if(!l.value){const f=p.getCenter();l.value=[f.lng,f.lat]}i.value==null&&(i.value=p.getZoom())}});function s(){const p=o.value;if(!p)return;const f=l.value||(()=>{const c=p.getCenter();return[c.lng,c.lat]})(),b=i.value??p.getZoom();p.flyTo({center:f,zoom:b})}return(p,f)=>(e.openBlock(),e.createElementBlock("div",Um,[e.createElementVNode("button",{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(s,["stop"])},[e.createVNode(e.unref(sr),{class:"w-4 h-4"}),f[0]||(f[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))])]))}}),[["__scopeId","data-v-d21bee3d"]]),Hm={class:"cursor-coordinates"},Ym={class:"cursor-coordinates__text"},Zm=X(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Hm,[e.createElementVNode("span",Ym,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-334315d9"]]),Wm={class:"minimap__wrapper"},$t="minimap-viewport",Km="minimap-viewport-layer",Gm=X(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var C,M,j,B;const n=t,o=((M=(C=e.getCurrentInstance())==null?void 0:C.appContext.config.globalProperties)==null?void 0:M.$settings)||null,r=ct((j=o==null?void 0:o.map)==null?void 0:j.center)||[30,50],l=e.ref(null),i=e.shallowRef(null),a=(B=n.options)==null?void 0:B.active,s=e.ref(a===void 0?!1:!!a);function p(N,x){return typeof N=="number"&&Number.isFinite(N)?N:x}const f=e.computed(()=>{var I,S;const N=(I=n.options)==null?void 0:I.width,x=(S=n.options)==null?void 0:S.height,V=p(n.width??N,210),L=p(n.height??x,150);return{width:`${V}px`,height:`${L}px`}});function b(){var x,V;const N=(V=(x=n.mapContext)==null?void 0:x.map)==null?void 0:V.value;if(!N||typeof N.getStyle!="function")return null;try{const L=N.getStyle();return L?JSON.parse(JSON.stringify(L)):null}catch{return null}}let c=null;function m(){var I;if(typeof window>"u"||i.value||!l.value)return;const N=b(),x=r,V={container:l.value,style:N??{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:x,zoom:((I=n.options)==null?void 0:I.zoom)??3,interactive:!1,attributionControl:!1},L={...V,...n.options??{}};L.container=V.container,i.value=new maplibregl.Map(L),i.value.on("load",()=>{u(),h()})}function d(){if(!i.value)return;const N=b();N&&(i.value.once("styledata",()=>{u(),h()}),i.value.setStyle(N))}function u(){if(i.value){if(typeof i.value.isStyleLoaded=="function"&&!i.value.isStyleLoaded()){i.value.once("styledata",()=>{u(),h()});return}i.value.getSource($t)||(i.value.addSource($t,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),i.value.addLayer({id:Km,type:"fill",source:$t,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function g(){s.value=!s.value,s.value&&e.nextTick(()=>{var N;return(N=i.value)==null?void 0:N.resize()})}function h(){var A,E;const N=(E=(A=n.mapContext)==null?void 0:A.map)==null?void 0:E.value;if(!i.value||!N||!N.getBounds)return;if(typeof i.value.isStyleLoaded=="function"&&!i.value.isStyleLoaded()){i.value.once("styledata",()=>{h()});return}const x=N.getBounds();if(!x)return;const V=x.getNorthEast(),L=x.getSouthWest();if(!V||!L)return;const I=[[L.lng,V.lat],[V.lng,V.lat],[V.lng,L.lat],[L.lng,L.lat],[L.lng,V.lat]],S=i.value.getSource($t);if(!S){u();return}S.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[I]},properties:{}})}function y(){var V;const N=n.mapContext,x=(V=N==null?void 0:N.map)==null?void 0:V.value;!(N!=null&&N.on)||!x||(c==null||c(),c=N.on("move",h),h())}async function k(){const N=n.mapContext;if(N){if(typeof N.ready=="function")try{await N.ready()}catch{return}y()}}return e.onMounted(()=>{m(),k()}),e.watch(()=>n.mapContext,()=>{k(),h()}),e.watch(()=>{var N,x;return(x=(N=n.mapContext)==null?void 0:N.map)==null?void 0:x.value},()=>{i.value&&(d(),k())}),e.watch(f,()=>{i.value&&e.nextTick(()=>{var N;return(N=i.value)==null?void 0:N.resize()})}),e.watch(()=>n.options,()=>{var x;c==null||c(),c=null,i.value&&(i.value.remove(),i.value=null);const N=(x=n.options)==null?void 0:x.active;typeof N=="boolean"&&(s.value=N),e.nextTick(()=>{m(),k()})},{deep:!0}),e.onBeforeUnmount(()=>{c==null||c(),c=null,i.value&&(i.value.remove(),i.value=null)}),(N,x)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":s.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:g},[e.createVNode(e.unref(rr))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",Wm,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:l,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(f.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,s.value]])]),_:1})],2))}}),[["__scopeId","data-v-bc754c89"]]),Xm={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},Jm={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},Qm={class:"map-widget__overlay-grid"},e0={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},t0={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},n0={class:"map-widget__stack"},o0={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom mb-5"},r0={class:"map-widget__stack map-widget__stack--bottom"},l0={key:0,class:"map-widget__state"},i0={key:1,class:"map-widget__state map-widget__state--error"},an=X(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{}},setup(t){var St,At,Xe,ut;const n=t,o=Ne.useRoute(),r=Ne.useRouter(),l=e.ref(null),i=e.ref({}),a=e.ref(null),s=e.ref(!1),p=e.ref(null),f=e.ref(!1),b=e.ref([]),c=e.computed(()=>n.id||"main"),m=e.computed(()=>{var O,H;return{height:((O=n.height)==null?void 0:O.trim())||((H=i.value)==null?void 0:H.height)||"calc(100vh - 65px)"}}),d=e.computed(()=>{var O;return((O=i.value)==null?void 0:O.name)??null}),u=e.computed(()=>{var O;return((O=i.value)==null?void 0:O.description)??null}),g=e.computed(()=>{var O;return A((O=i.value)==null?void 0:O.maps)}),h=e.computed(()=>{var H,G;const O=((H=i.value)==null?void 0:H.minZoom)??((G=i.value)==null?void 0:G.minzoom)??null;return typeof O=="number"?O:null}),y=e.computed(()=>{var H,G;const O=((H=i.value)==null?void 0:H.maxZoom)??((G=i.value)==null?void 0:G.maxzoom)??null;return typeof O=="number"?O:typeof n.maxZoom=="number"?n.maxZoom:20}),k=e.ref(null),C=e.computed(()=>{if(!k.value)return null;const{lng:O,lat:H}=k.value;return`${H.toFixed(6)}, ${O.toFixed(6)}`}),M=e.computed(()=>{var O;return((O=l.value)==null?void 0:O.ctx)??null}),j=e.computed(()=>{var O;return((O=i.value)==null?void 0:O.minimap)??null});function B(O){if(!O||typeof O!="object")return O;const H=ct(O.center);return H?{...O,center:H}:O}const N=((At=(St=e.getCurrentInstance())==null?void 0:St.appContext.config.globalProperties)==null?void 0:At.$settings)||null;function x(O){if(O==null)return null;const H=Number(typeof O=="string"?O.trim():O);return Number.isFinite(H)?H:null}const V=ct((Xe=N==null?void 0:N.map)==null?void 0:Xe.center),L=x((ut=N==null?void 0:N.map)==null?void 0:ut.zoom),I=e.computed(()=>{const O=(N==null?void 0:N.map)||null,H=(O==null?void 0:O.boundary)??null,G=(O==null?void 0:O.katottg)??null;return!H&&!G?null:{boundary:H,katottg:G}});function S(O){return typeof O=="string"&&O.trim()?O.trim().toLowerCase():"top-left"}function A(O){return Array.isArray(O)?O:O&&typeof O=="object"?Object.values(O).filter(Boolean):[]}const E=e.computed(()=>{var O;return A((O=i.value)==null?void 0:O.widgets)}),z=["left","right"],T=e.computed(()=>{const O={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 E.value.forEach(G=>{const re=S(G.position),K=H[re]??{side:"left",align:"top"};O[K.side][K.align].push(G)}),O});function F(O){return Array.isArray(O)?O[0]??null:typeof O=="string"?O:null}async function v(){var H;await e.nextTick();const O=(H=l.value)==null?void 0:H.ctx;return O?(O.ready&&await O.ready(),O):null}function $(){var O,H,G;return((G=(H=(O=l.value)==null?void 0:O.ctx)==null?void 0:H.map)==null?void 0:G.value)??null}function D(){const O=$();if(!O)return null;const H=O.getCenter();return{z:O.getZoom().toFixed(2),x:H.lng.toFixed(5),y:H.lat.toFixed(5)}}async function R(){var G;const O=await v(),H=(G=O==null?void 0:O.map)==null?void 0:G.value;H&&(typeof h.value=="number"&&H.setMinZoom(h.value),typeof y.value=="number"&&H.setMaxZoom(y.value))}async function q(){var K;if(a.value)return;const O=await v(),H=(K=O==null?void 0:O.map)==null?void 0:K.value;if(!H)return;const G=H.getCenter(),re=H.getZoom();a.value={center:[G.lng,G.lat],zoom:re}}function U(){const O=D();if(!O)return;const H=F(o.query.x),G=F(o.query.y),re=F(o.query.z);H===O.x&&G===O.y&&re===O.z||r.replace({query:{...o.query,...O}}).catch(()=>{})}function te(O,H,G=1e-6){return Math.abs(O-H)<=G}async function J(){var Ae;const O=await v(),H=(Ae=O==null?void 0:O.map)==null?void 0:Ae.value;if(!O||!H)return;const G=parseFloat(F(o.query.x)??""),re=parseFloat(F(o.query.y)??""),K=parseFloat(F(o.query.z)??""),ie=!Number.isNaN(G),fe=!Number.isNaN(re),Y=!Number.isNaN(K);let Se=!1;if(ie&&fe){const Te=H.getCenter();(!te(Te.lng,G)||!te(Te.lat,re))&&(H.setCenter([G,re]),Se=!0)}Y&&H.setZoom(K),(!ie||!fe||!Y||Se)&&U()}let ee=null,se=null;function ke(O){const H=O==null?void 0:O.lngLat;H&&(k.value={lng:H.lng,lat:H.lat})}async function Be(){const O=await v();O!=null&&O.on&&(ee==null||ee(),ee=O.on("moveend",U),se==null||se(),se=O.on("mousemove",ke))}e.onUnmounted(()=>{ee==null||ee(),ee=null,se==null||se(),se=null});async function Ve(){var O,H;f.value=!1,s.value=!0,p.value=null,k.value=null;try{const G=await fetch(`/api/gis-map/${encodeURIComponent(c.value)}`);if(!G.ok)throw new Error(`Помилка завантаження (${G.status})`);const re=await G.json(),K=ct(re.center)??V,ie=A(re.layers).map(Se=>B(Se)),fe=x(re.zoom)??L;i.value={...re,center:K??null,zoom:fe??re.zoom??null,layers:ie,widgets:re.widgets},b.value=re.tools||["home","print"];const Y=await v();Y&&(K&&((O=Y.setCenter)==null||O.call(Y,K)),fe!=null&&((H=Y.setZoom)==null||H.call(Y,fe)),a.value||await q()),await R(),await J(),await Be(),f.value=!0}catch(G){p.value=(G==null?void 0:G.message)||"Не вдалося завантажити карту"}finally{s.value=!1}}const we=e.computed(()=>{var re;const O=new Map;return A((re=i.value)==null?void 0:re.layers).forEach(K=>{if(!(K!=null&&K.id))return;const ie=B(K)||K;O.set(K.id,{...ie})}),E.value.filter(K=>(K==null?void 0:K.type)==="layers").flatMap(K=>{var ie;return A((ie=K==null?void 0:K.config)==null?void 0:ie.layers)}).forEach(K=>{if(!(K!=null&&K.id))return;const ie=O.get(K.id)||{},fe=B(K)||K;O.set(K.id,{...ie,...fe,actions:K.actions||ie.actions||null,name:ie.name||K.name||K.title||ie.title||K.id,title:ie.title||K.title||ie.name||null,visible:ie.visible??K.visible??!0})}),Array.from(O.values())}),$e=e.ref([]);function Fe(O){$e.value.includes(O)?$e.value=$e.value.filter(H=>H!==O):$e.value.push(O)}const je=e.computed(()=>O=>$e.value.includes(O.id));return e.watch([h,y],()=>{R()},{immediate:!0}),e.watch(c,()=>{Ve()}),e.onMounted(()=>{Ve()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{J()}),(O,H)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(m.value)},[e.createVNode(Lo,{ref_key:"mapViewRef",ref:l,class:"map-widget__view"},{default:e.withCtx(()=>{var G,re,K,ie;return[I.value?(e.openBlock(),e.createBlock(Do,{key:0,"layer-id":"app-boundary",boundary:I.value.boundary,katottg:I.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("div",Xm,[C.value?(e.openBlock(),e.createBlock(Zm,{key:0,coordinates:C.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(Gm,{"map-context":M.value,options:j.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Jm,[b.value.includes("home")?(e.openBlock(),e.createBlock(qm,{key:0,center:((G=i.value)==null?void 0:G.center)||((re=a.value)==null?void 0:re.center)||null,zoom:((K=i.value)==null?void 0:K.zoom)??((ie=a.value)==null?void 0:ie.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),b.value.includes("print")?(e.openBlock(),e.createBlock(Rm,{key:1})):e.createCommentVNode("",!0)]),f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Qm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(z,fe=>e.createElementVNode("div",{key:fe,class:e.normalizeClass(["map-widget__side",`map-widget__side--${fe}`])},[fe==="left"?(e.openBlock(),e.createElementBlock("div",e0)):e.createCommentVNode("",!0),T.value[fe].top.length?(e.openBlock(),e.createElementBlock("div",t0,[e.createElementVNode("div",n0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value[fe].top,Y=>{var Se,Ae,Te,Ze,Pe,ze,Re,Ue;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Y.id||Y.type,class:"map-overlay__item"},[Y.type==="info"?(e.openBlock(),e.createBlock(jo,{key:0,title:((Se=Y.config)==null?void 0:Se.title)||Y.title||null,content:((Ae=Y.config)==null?void 0:Ae.content)||"",links:g.value,"map-name":d.value,"map-description":u.value},null,8,["title","content","links","map-name","map-description"])):Y.type==="catalog"?(e.openBlock(),e.createBlock(Ro,{key:1,api:((Te=Y.config)==null?void 0:Te.api)||null},null,8,["api"])):Y.type==="layers"?(e.openBlock(),e.createBlock(Po,{key:2,layers:we.value,onAction:H[0]||(H[0]=pt=>Fe(pt.layerId)),config:Y.config},null,8,["layers","config"])):Y.type==="basemaps"?(e.openBlock(),e.createBlock(tn,{key:3,layers:((Ze=Y.config)==null?void 0:Ze.layers)||null,"default-layer":((Pe=Y.config)==null?void 0:Pe.default)||null,title:Y.title||((ze=Y.config)==null?void 0:ze.title)||null},null,8,["layers","default-layer","title"])):Y.type==="legend"?(e.openBlock(),e.createBlock(nn,{key:4,items:((Re=Y.config)==null?void 0:Re.items)||[]},null,8,["items"])):Y.type==="filters"&&je.value(Y)?(e.openBlock(),e.createBlock(en,{key:5,"layer-id":(Ue=Y.config)==null?void 0:Ue.layer,onClose:Fe},null,8,["layer-id"])):Y.type==="dataset"||Y.type==="attribute"?(e.openBlock(),e.createBlock(Uo,{key:6,config:Y.config},null,8,["config"])):Y.type==="search"?(e.openBlock(),e.createBlock(qo,{key:7,config:Y.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Y.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),T.value[fe].bottom.length?(e.openBlock(),e.createElementBlock("div",o0,[e.createElementVNode("div",r0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value[fe].bottom,Y=>{var Se,Ae,Te,Ze,Pe,ze,Re,Ue;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:Y.id||Y.type,class:"map-overlay__item"},[Y.type==="info"?(e.openBlock(),e.createBlock(jo,{key:0,title:((Se=Y.config)==null?void 0:Se.title)||Y.title||null,content:((Ae=Y.config)==null?void 0:Ae.content)||"",links:g.value,"map-name":d.value,"map-description":u.value},null,8,["title","content","links","map-name","map-description"])):Y.type==="catalog"?(e.openBlock(),e.createBlock(Ro,{key:1,api:((Te=Y.config)==null?void 0:Te.api)||null},null,8,["api"])):Y.type==="layers"?(e.openBlock(),e.createBlock(Po,{key:2,layers:we.value,onAction:H[1]||(H[1]=pt=>Fe(pt.layerId)),config:Y.config},null,8,["layers","config"])):Y.type==="basemaps"?(e.openBlock(),e.createBlock(tn,{key:3,layers:((Ze=Y.config)==null?void 0:Ze.layers)||null,"default-layer":((Pe=Y.config)==null?void 0:Pe.default)||null,title:Y.title||((ze=Y.config)==null?void 0:ze.title)||null},null,8,["layers","default-layer","title"])):Y.type==="legend"?(e.openBlock(),e.createBlock(nn,{key:4,items:((Re=Y.config)==null?void 0:Re.items)||[]},null,8,["items"])):Y.type==="filters"&&je.value(Y)?(e.openBlock(),e.createBlock(en,{key:5,"layer-id":(Ue=Y.config)==null?void 0:Ue.layer,onClose:Fe},null,8,["layer-id"])):Y.type==="dataset"||Y.type==="attribute"?(e.openBlock(),e.createBlock(Uo,{key:6,config:Y.config},null,8,["config"])):Y.type==="search"?(e.openBlock(),e.createBlock(qo,{key:7,config:Y.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,Y.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(Fo),e.createVNode(Io,{"map-id":c.value},null,8,["map-id"])],64)):e.createCommentVNode("",!0)]}),_:1},512),s.value?(e.openBlock(),e.createElementBlock("div",l0,"Завантаження карти…")):p.value?(e.openBlock(),e.createElementBlock("div",i0,e.toDisplayString(p.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-0ca344ee"]]);function a0(t){t.component("MapCustom",an)}pe.MapWidget=an,pe.Register=ns,pe.Service=Qp,pe.default=an,pe.install=a0,pe.template1=yn,pe.template2=xn,pe.template3=bn,pe.template4=kn,pe.template5=wn,Object.defineProperties(pe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|