@opengis/gis 0.2.13 → 0.2.15
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 +498 -499
- package/dist/index.umd.cjs +9 -9
- 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.group_list.form.json +17 -17
- package/module/gis/form/gis.maps.form.json +64 -64
- package/module/gis/form/gis.metadata.form.json +240 -240
- package/module/gis/form/gis.ogc_service.form.json +40 -40
- package/module/gis/form/gis.rasters.form.json +99 -99
- package/module/gis/form/gis.registers.form.json +110 -110
- 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 +120 -120
- 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.group_list.table.json +35 -35
- package/module/gis/table/gis.maps.table.json +69 -69
- package/module/gis/table/gis.metadata.table.json +70 -70
- package/module/gis/table/gis.ogc_service.table.json +91 -91
- package/module/gis/table/gis.rasters.table.json +97 -97
- package/module/gis/table/gis.registers.table.json +79 -79
- package/module/gis/table/gis.services.table.json +99 -99
- 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 +67 -67
- package/plugin.js +44 -44
- 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/index.mjs +59 -59
- 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 +122 -122
- package/server/routes/gis/registers/gis.export.js +148 -148
- package/server/routes/gis/registers/gis.registry.js +38 -38
- 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/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 +129 -86
- 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 +88 -88
- 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
|
@@ -59,24 +59,24 @@
|
|
|
59
59
|
* This source code is licensed under the ISC license.
|
|
60
60
|
* See the LICENSE file in the root directory of this source tree.
|
|
61
61
|
*/const Kn=_e("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Zn={class:"flex items-center justify-end col-span-3 gap-2"},Gn={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},Xn=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(g=>g.VsModal)),r=t,i=e.useModel(t,"columns"),l=e.ref(!1),a=e.ref({}),c=e.ref({...r.data||{}}),p=()=>i.value=i.value.filter((g,s)=>s!==r.index),d=async()=>{const g=a.value.validate();if(g){ne.notify({type:"warning",title:"Validation",message:Object.entries(g).map(([s,f])=>`${s}: ${f}`).join(`
|
|
62
|
-
`)});return}i.value[r.index]=c.value,l.value=!1};return(g,s)=>(e.openBlock(),e.createElementBlock("div",Zn,[e.createElementVNode("button",{onClick:s[0]||(s[0]=f=>{l.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(Hn),{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(Wn),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{size:"lg",visible:l.value,"onUpdate:visible":s[4]||(s[4]=f=>l.value=f),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",Gn,[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:s[3]||(s[3]=f=>l.value=!1)}," Скасувати "),e.createElementVNode("button",{class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300",onClick:d}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:c.value,"onUpdate:values":s[1]||(s[1]=f=>c.value=f),schema:t.scheme,form:a.value,"onUpdate:form":s[2]||(s[2]=f=>a.value=f)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),Qn={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")})}},Jn={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"},Nt=t=>Jn[t==null?void 0:t.toLowerCase()]||"gray",eo=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],vt=t=>{var n;return eo.includes((n=t||"")==null?void 0:n.toLowerCase())},W=(t,n)=>{const o=t.__vccOpts||t;for(const[r,i]of n)o[r]=i;return o},to={},no={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 oo(t,n){return e.openBlock(),e.createElementBlock("svg",no,[...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 ro=W(to,[["render",oo]]),lo={},io={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 ao(t,n){return e.openBlock(),e.createElementBlock("svg",io,[...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 so=W(lo,[["render",ao]]),co={},uo={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 po(t,n){return e.openBlock(),e.createElementBlock("svg",uo,[...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 mo=W(co,[["render",po]]),fo={},go={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 ho(t,n){return e.openBlock(),e.createElementBlock("svg",go,[...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 yo=W(fo,[["render",ho]]),xo={},ko={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 bo(t,n){return e.openBlock(),e.createElementBlock("svg",ko,[...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 _o=W(xo,[["render",bo]]),wo={},Eo={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 Bo(t,n){return e.openBlock(),e.createElementBlock("svg",Eo,[...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 No=W(wo,[["render",Bo]]),vo={},Co={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 Vo(t,n){return e.openBlock(),e.createElementBlock("svg",Co,[...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 $o=W(vo,[["render",Vo]]),Ao={},So={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 Lo(t,n){return e.openBlock(),e.createElementBlock("svg",So,[...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 Fo=W(Ao,[["render",Lo]]),Mo={},To={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 Io(t,n){return e.openBlock(),e.createElementBlock("svg",To,[...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 Do=W(Mo,[["render",Io]]),jo={},Oo={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 zo(t,n){return e.openBlock(),e.createElementBlock("svg",Oo,[...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 Po=W(jo,[["render",zo]]),Ro={},Uo={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 qo(t,n){return e.openBlock(),e.createElementBlock("svg",Uo,[...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 Yo=W(Ro,[["render",qo]]),Ho={},Wo={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 Ko(t,n){return e.openBlock(),e.createElementBlock("svg",Wo,[...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 Zo=W(Ho,[["render",Ko]]),Go={},Xo={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 Qo(t,n){return e.openBlock(),e.createElementBlock("svg",Xo,[...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 Jo=W(Go,[["render",Qo]]),er={},tr={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function nr(t,n){return e.openBlock(),e.createElementBlock("svg",tr,[...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 or=W(er,[["render",nr]]),rr={},lr={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",height:"800px",width:"800px",version:"1.1",id:"_x32_",viewBox:"0 0 512 512","xml:space":"preserve"};function ir(t,n){return e.openBlock(),e.createElementBlock("svg",lr,[...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 ar=W(rr,[["render",ir]]),sr={},cr={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function dr(t,n){return e.openBlock(),e.createElementBlock("svg",cr,[...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 Ct={IconText:ro,IconNumber:so,IconDate:mo,IconDatetime:yo,IconRichtext:_o,IconBoolean:No,IconFile:$o,IconImage:Fo,IconArray:Do,IconSelect:Po,IconSlug:Yo,IconDatalist:Zo,IconReference:Jo,IconReferenceList:or,IconBadge:ar,IconCheck:W(sr,[["render",dr]])},ur={key:0,class:"flex items-center justify-between mb-6"},pr={class:"flex justify-end w-full"},mr={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},fr={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},gr={class:"table-fixed w-full text-[13px]"},hr={class:"bg-gray-50 border-b border-gray-200"},yr={key:0},xr=["onDragstart","onDragover","onDrop"],kr={key:0,class:"flex w-fit items-center gap-2 text-left"},br={class:"flex-1 min-w-0"},_r={class:"font-medium text-gray-900 truncate"},wr={class:"text-xs text-gray-500"},Er={key:0,class:"flex items-center justify-center"},Br={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"},Nr={key:1,class:"text-gray-500 text-sm"},vr={key:2},Cr={class:"px-6 py-4"},Vr={key:1},$r=["colspan"],ve=W(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)),i=e.defineAsyncComponent(()=>import("@opengis/form")),l=e.useModel(t,"modelValue"),a=t,c=e.ref({}),p=e.ref(!1),d=e.ref({}),g=e.ref(null);n({openCreateDialog:()=>{p.value=!0}});const s=e.computed({get(){return Array.isArray(l.value)?l.value:l.value&&Array.isArray(l.value.columns)?l.value.columns:[]},set(V){Array.isArray(l.value)?l.value=V:l.value&&Array.isArray(l.value.columns)&&(l.value.columns=V)}}),f=e.computed(()=>{const V=a.columnsScheme.map(A=>A.key);return V.includes("name")&&V.includes("label")||V.includes("id")&&V.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...a.columnsScheme.filter(A=>!["name","id","label"].includes(A.key))]:a.columnsScheme});function y(){p.value=!1,d.value={},g.value=null}async function u(){const V=c.value.validate();if(V){ne.notify({type:"warning",title:"Validation",message:Object.entries(V).map(([A,h])=>`${A}: ${h}`).join(`
|
|
63
|
-
`)});return}if(g.value===null)s.value=[...s.value,{...d.value}];else{const A=[...s.value];A[g.value]={...d.value},s.value=A}y()}const m=e.ref(null),x=e.ref(null),v=V=>{m.value=V},k=V=>{x.value=V},_=V=>{if(m.value===null||m.value===V){m.value=null,x.value=null;return}const A=[...s.value],[h]=A.splice(m.value,1);A.splice(V,0,h),s.value=A,m.value=null,x.value=null};return(V,A)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",ur,[e.createElementVNode("div",pr,[e.createElementVNode("button",{onClick:A[0]||(A[0]=h=>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"},[...A[4]||(A[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",mr,[e.createElementVNode("div",fr,[e.createElementVNode("table",gr,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,h=>(e.openBlock(),e.createElementBlock("col",{key:h.key,style:e.normalizeStyle(h.type==="main"?`width: ${t.mainColWidth}`:h.width?`width: ${h.width}`:"auto")},null,4))),128)),A[5]||(A[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",hr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,h=>(e.openBlock(),e.createElementBlock("th",{key:h.key,class:"px-6 py-4"},e.toDisplayString(h.label),1))),128)),A[6]||(A[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),s.value.length?(e.openBlock(),e.createElementBlock("tbody",yr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(h,$)=>(e.openBlock(),e.createElementBlock("tr",{key:h.id||h.name||$,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":m.value===$,"border-t-2 border-b-2 border-blue-500 bg-blue-50":x.value===$}]),draggable:"true",onDragstart:B=>v($),onDragover:e.withModifiers(B=>k($),["prevent"]),onDrop:B=>_($)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,B=>(e.openBlock(),e.createElementBlock("td",{key:B.key,class:"px-6 py-4 align-middle text-center"},[B.type==="main"?(e.openBlock(),e.createElementBlock("div",kr,[A[7]||(A[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(vt)(h.format==="yes/no"?"check":h.format||h.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(Nt)(h.format==="yes/no"?"check":h.format||h.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.format==="yes/no"?"icon-check":e.unref(Ct)["Icon"+o(h.format||h.type)]||e.unref(Ct).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",br,[e.withDirectives((e.openBlock(),e.createElementBlock("p",_r,[e.createTextVNode(e.toDisplayString(h.name||h.id),1)])),[[e.unref(Qn)]]),e.createElementVNode("p",wr,e.toDisplayString(h.label||h.ua||h.name||h.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[B.type==="color"?(e.openBlock(),e.createElementBlock("div",Er,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${h[B.key]}]`])},null,2)])):["format","type","meta"].includes(B.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[h[B.key]?(e.openBlock(),e.createElementBlock("span",Br,e.toDisplayString(h[B.key]),1)):(e.openBlock(),e.createElementBlock("span",Nr,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",vr,e.toDisplayString(h[B.key]),1))],64))]))),128)),e.createElementVNode("td",Cr,[e.createVNode(Xn,{columns:s.value,"onUpdate:columns":A[1]||(A[1]=B=>s.value=B),data:h,index:$,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,xr))),128))])):(e.openBlock(),e.createElementBlock("tr",Vr,[e.createElementVNode("td",{colspan:f.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,$r)]))])])]),e.createVNode(e.unref(r),{title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":A[3]||(A[3]=h=>p.value=h)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:y,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:u,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(i),{ref_key:"form",ref:c,modelValue:d.value,"onUpdate:modelValue":A[2]||(A[2]=h=>d.value=h),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-f71323d8"]]),Ar={class:"p-4 text-[13px]"},Sr={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Lr=["id","checked","onChange"],Fr={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Mr={class:"font-medium text-gray-900 truncate"},Tr={class:"text-xs text-gray-500"},Ir={class:"flex justify-end gap-2 p-4 border-t w-full"},Ve=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"),i=t,l=n,a=e.defineAsyncComponent(()=>import("@opengis/core").then(k=>k.VsModal)),c=e.computed(()=>Array.isArray(i.fields)?i.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)??"",d=k=>String(p(k)??"").trim(),g=k=>(k==null?void 0:k.title)??(k==null?void 0:k.label)??d(k),s=e.computed(()=>new Set(r.value.map(k=>String(k??"").trim()))),f=k=>s.value.has(d(k)),y=k=>{const _=d(k);if(!_)return;const V=new Set(s.value);V.has(_)?V.delete(_):V.add(_),r.value=Array.from(V)},u=e.computed(()=>i.confirmText||"Імпортувати"),m=e.computed(()=>i.cancelText||"Скасувати"),x=()=>{o.value=!1,l("cancel")},v=()=>{l("confirm"),o.value=!1};return(k,_)=>(e.openBlock(),e.createBlock(e.unref(a),{visible:o.value,"onUpdate:visible":_[0]||(_[0]=V=>o.value=V),title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Ir,[e.createElementVNode("button",{onClick:x,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(m.value),1),e.createElementVNode("button",{onClick:v,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(u.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Ar,[e.createElementVNode("div",Sr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,V=>(e.openBlock(),e.createElementBlock("label",{key:d(V),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${d(V)}`,checked:f(V),onChange:A=>y(V)},null,40,Lr),e.createElementVNode("div",Fr,[e.unref(vt)(V.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(Nt)(V.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${V.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Mr,e.toDisplayString(d(V)),1),e.createElementVNode("p",Tr,e.toDisplayString(g(V)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function $e(t){return t==null?"":String(t).trim()}function we(t){return $e((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 Ae(t,n,o){const r=Array.isArray(t)?[...t]:[],i=Array.isArray(n)?n:[],{selectedKeys:l,resolveKey:a}=o,c=new Set;for(const s of l){const f=$e(s);f&&c.add(f)}if(c.size===0)return[];const p=s=>$e(a(s)),d=[],g=new Set;for(const s of r){const f=p(s);!f||!c.has(f)||(d.push(s),g.add(f))}for(const s of i){const f=p(s);!f||g.has(f)||!c.has(f)||(d.push(s),g.add(f))}return d}const Dr={class:"vs-form"},jr={class:"vs-form__body auto-rows-max container"},Or={class:"flex flex-wrap"},zr={class:"h-fit w-full mb-6 px-2"},Pr={class:"h-fit w-full flex flex-wrap"},Rr={class:"w-full"},Ur=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,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=k=>we(k||{}),a=e.defineAsyncComponent(()=>import("@opengis/form")),c=e.ref(),p=e.ref(!1),d=e.ref([]),g=()=>{const k=f.value.map(_=>l(_)).filter(_=>_.length>0);d.value=[...k],p.value=!0},s=e.computed(()=>{var k,_;return((k=n.value)==null?void 0:k.token)||((_=n.value)==null?void 0:_.id)||"register-form"}),f=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:[]}}),y=e.computed({get:()=>n.value||{},set:k=>{var V;const _=Array.isArray((V=n.value)==null?void 0:V.columns)?n.value.columns:[];n.value={...n.value,...k,columns:_}}});e.watch(()=>c.value,k=>{o.value=k||null},{immediate:!0}),e.watch(p,k=>{k||(d.value=[])});const u=()=>{const k=new Set(d.value.map(A=>$e(A)).filter(A=>A.length>0)),_=Array.isArray(f.value)?[...f.value]:[],V=i.value.filter(A=>k.has(l(A))).map(A=>{const h=l(A),$=A.title??A.label??h;return{...A,name:h,label:$,type:A.type||"text",meta:A.meta??"features"}});f.value=Ae(_,V,{selectedKeys:d.value,resolveKey:l}),p.value=!1,d.value=[]},m={table_name:{type:"text",label:"Table",required:!0,placeholder:"Table",validators:["required"],col:6},name:{type:"text",label:"Name",required:!0,placeholder:"Name",validators:["required"],col:6},query:{type:"text",label:"Query",placeholder:"Query",col:6},order:{type:"text",label:"Order",placeholder:"Order",col:6},description:{type:"text",label:"Description",placeholder:"Description",col:12}},x=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"meta",label:"Мета",type:"text"}],v={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,_)=>(e.openBlock(),e.createElementBlock("div",Dr,[e.createElementVNode("div",jr,[e.createElementVNode("div",Or,[e.createElementVNode("div",zr,[(e.openBlock(),e.createBlock(e.unref(a),{ref_key:"formEl",ref:c,key:s.value,schema:m,modelValue:y.value,"onUpdate:modelValue":_[0]||(_[0]=V=>y.value=V)},null,8,["modelValue"]))]),e.createElementVNode("div",Pr,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[..._[4]||(_[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Rr,[e.createVNode(ve,{modelValue:f.value,"onUpdate:modelValue":_[1]||(_[1]=V=>f.value=V),"columns-scheme":x,"form-scheme":v,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ve,{visible:p.value,"onUpdate:visible":_[2]||(_[2]=V=>p.value=V),selection:d.value,"onUpdate:selection":_[3]||(_[3]=V=>d.value=V),fields:i.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),qr={class:"vs-form"},Yr={class:"vs-form__body auto-rows-max container"},Hr={class:"flex flex-wrap"},Wr={class:"h-fit w-full flex flex-wrap"},Kr={class:"w-full"},Zr=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,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=y=>we(y||{}),a=e.ref(!1),c=e.ref([]),p=()=>{const y=d.value.map(u=>l(u)).filter(u=>u.length>0);c.value=[...y],a.value=!0},d=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:y=>{n.value||(n.value={}),n.value.filters=Array.isArray(y)?y:[]}});e.watch(a,y=>{y||(c.value=[])});const g=()=>{const y=new Set(c.value.map(x=>$e(x)).filter(x=>x.length>0)),u=Array.isArray(d.value)?[...d.value]:[],m=i.value.filter(x=>y.has(l(x))).map(x=>({name:l(x),label:x.title??x.label??l(x),type:x.type||"text"}));d.value=Ae(u,m,{selectedKeys:c.value,resolveKey:l}),a.value=!1,c.value=[]},s=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],f={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},type:{type:"radio",label:"Тип",required:!0,position:"horizontal",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(y,u)=>(e.openBlock(),e.createElementBlock("div",qr,[e.createElementVNode("div",Yr,[e.createElementVNode("div",Hr,[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",Wr,[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",Kr,[e.createVNode(ve,{modelValue:d.value,"onUpdate:modelValue":u[0]||(u[0]=m=>d.value=m),"columns-scheme":s,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=m=>a.value=m),selection:c.value,"onUpdate:selection":u[2]||(u[2]=m=>c.value=m),fields:i.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:g},null,8,["visible","selection","fields"])]))}}),Gr={class:"vs-form"},Xr={class:"vs-form__body auto-rows-max container"},Qr={class:"flex flex-wrap"},Jr={class:"h-fit w-full flex flex-wrap"},el={class:"w-full"},tl=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,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=y=>we(y||{}),a=e.ref(!1),c=e.ref([]),p=()=>{const y=d.value.map(u=>l(u)).filter(u=>u.length>0);c.value=[...y],a.value=!0},d=e.computed({get:()=>n.value.card,set:y=>{n.value||(n.value={}),n.value.card=Array.isArray(y)?y:[]}});e.watch(a,y=>{var u;if(y){const m=((u=d.value)==null?void 0:u.map(x=>x.name))||[];c.value=[...m]}});const g=()=>{const y=new Set(c.value.map(x=>$e(x)).filter(x=>x.length>0)),u=Array.isArray(d.value)?[...d.value]:[],m=i.value.filter(x=>y.has(l(x))).map(x=>{const v=l(x),k=x.title??x.label??v;return{...x,name:v,label:k,format:x.format||x.type||"text",meta:x.meta||"title"}});d.value=Ae(u,m,{selectedKeys:c.value,resolveKey:l}),a.value=!1,c.value=[]},s=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"format",label:"Format",type:"text"}],f={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},format:{type:"radio",label:"Format",position:"horizontal",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},data:{type:"text",label:"Data"}};return e.onBeforeUnmount(()=>{o.value=null}),(y,u)=>(e.openBlock(),e.createElementBlock("div",Gr,[e.createElementVNode("div",Xr,[e.createElementVNode("div",Qr,[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",Jr,[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",el,[e.createVNode(ve,{modelValue:d.value,"onUpdate:modelValue":u[0]||(u[0]=m=>d.value=m),"columns-scheme":s,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=m=>a.value=m),selection:c.value,"onUpdate:selection":u[2]||(u[2]=m=>c.value=m),fields:i.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:g},null,8,["visible","selection","fields"])]))}}),nl=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function Ie(t){if(!t)return"";const[n,o]=t.split(" ");if(!n)return t;const[r,i,l]=n.split("-");if(!r||!i||!l)return t;const a=parseInt(i,10),c=nl[a]||i;let p=`${parseInt(l,10)} ${c} ${r}`;if(o){const d=o.split(".")[0],[g,s,f]=d.split(":");g&&s&&f?p+=`, ${g}:${s}:${f}`:g&&s?p+=`, ${g}:${s}`:g&&(p+=`, ${g}`)}return p}const ol={class:"flex justify-between p-4 pb-2 bg-slate-50 gap-4"},rl={class:"flex items-center justify-between"},ll={class:"text-lg font-bold line-clamp-2"},il={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"},al={key:0,class:"flex"},sl={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"},cl={class:"p-4 pt-2"},dl={class:"grid grid-cols-2 gap-3 text-sm"},ul={class:"text-gray-500"},pl={class:"font-medium"},ml={class:"items-center p-3 bg-slate-50 flex justify-end"},fl=["href"],Vt=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=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),l=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),a=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),c=(d,g)=>{if(g)return d[g]},p=d=>{const g=c(d,n.id_key);return`${n.path}?id=${g}`};return(d,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,s=>{var f,y,u;return e.openBlock(),e.createElementBlock("div",{key:s.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",ol,[e.createElementVNode("div",rl,[e.createElementVNode("h2",ll,e.toDisplayString(s[`${(f=r.value)==null?void 0:f.name}_text`]||s[(y=r.value)==null?void 0:y.name]||s[(u=r.value)==null?void 0:u.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[s[m.name]?(e.openBlock(),e.createElementBlock("div",il,e.toDisplayString(s[`${m.name}_text`]||s[m.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",al,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:"mt-2 flex flex-wrap gap-1"},[s[m.name]?(e.openBlock(),e.createElementBlock("span",sl,e.toDisplayString(s[`${m.name}_text`]||s[m.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",cl,[e.createElementVNode("div",dl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>{var x;return e.openBlock(),e.createElementBlock("div",{key:m.name,class:"flex items-center gap-1.5"},[e.createElementVNode("span",ul,e.toDisplayString(m.ua||m.label)+": ",1),e.createElementVNode("span",pl,[Array.isArray(s[m==null?void 0:m.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s[(m==null?void 0:m.name)+"_text"]||s[m==null?void 0:m.name],(v,k)=>(e.openBlock(),e.createElementBlock("span",{key:k,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(v),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(s[m==null?void 0:m.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=s[(m==null?void 0:m.name)+"_data"])==null?void 0:x.text)||s[(m==null?void 0:m.name)+"_text"]||s[m==null?void 0:m.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",ml,[e.createElementVNode("a",{href:p(s),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...g[0]||(g[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-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,fl)])])}),128))}}),gl={class:"p-0"},hl={class:"border-l-4 border-l-slate-400"},yl={class:"p-4"},xl={class:"flex flex-wrap items-center gap-2 mb-3"},kl={class:"text-lg font-bold"},bl={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"},_l={key:1,class:"flex"},wl={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"},El={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-3 text-sm border-t pt-3"},Bl={class:"text-xs text-gray-500 mb-1"},Nl={class:"font-medium"},vl={class:"flex justify-end mt-3 border-t pt-3"},Cl=["href"],$t=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=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),l=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),a=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),c=(d,g)=>{if(g)return d[g]},p=d=>{const g=c(d,n.id_key);return`${n.path}?id=${g}`};return(d,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,s=>{var f,y;return e.openBlock(),e.createElementBlock("div",{key:s.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",gl,[e.createElementVNode("div",hl,[e.createElementVNode("div",yl,[e.createElementVNode("div",xl,[e.createElementVNode("h2",kl,e.toDisplayString(s[`${(f=r.value)==null?void 0:f.name}_text`]||s[(y=r.value)==null?void 0:y.name]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.name},[s[u.name]?(e.openBlock(),e.createElementBlock("div",bl,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",_l,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.name,class:"flex flex-wrap gap-1 ml-2"},[s[u.name]?(e.openBlock(),e.createElementBlock("span",wl,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",El,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,u=>{var m;return e.openBlock(),e.createElementBlock("div",{key:u.name},[e.createElementVNode("p",Bl,e.toDisplayString(u.ua),1),e.createElementVNode("p",Nl,[Array.isArray(s[u==null?void 0:u.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s[u==null?void 0:u.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},[u.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(s[u==null?void 0:u.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((m=s[(u==null?void 0:u.name)+"_data"])==null?void 0:m.text)||s[(u==null?void 0:u.name)+"_text"]||s[u==null?void 0:u.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",vl,[e.createElementVNode("a",{href:p(s),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...g[0]||(g[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-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,Cl)])])])])])}),128))}}),Vl={class:"space-y-4"},$l={class:"flex items-center py-2 px-3"},Al={class:"flex-1"},Sl={class:"grid grid-cols-12 gap-2 w-full text-xs"},Ll={class:"col-span-5"},Fl={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"},Ml={key:1,class:"flex flex-wrap gap-1 mt-1"},Tl={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"},Il={class:"col-span-7"},Dl={class:"grid grid-cols-3 gap-3"},jl={class:"text-[10px] text-gray-500 mb-1"},Ol={class:"truncate font-medium"},zl=["href"],At=e.defineComponent({__name:"template-3",props:{items:{},item:{},columns:{},path:{},id_key:{},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=e.computed(()=>n.columns.find(g=>g.meta==="title")),i=e.computed(()=>n.columns.filter(g=>g.meta==="category")),l=e.computed(()=>n.columns.filter(g=>g.meta==="tags")),a=e.computed(()=>n.columns.filter(g=>g.meta!=="title")),c=e.computed(()=>"bg-blue-500"),p=(g,s)=>{if(s)return g[s]},d=g=>{const s=p(g,n.id_key);return`${n.path}?id=${s}`};return(g,s)=>(e.openBlock(),e.createElementBlock("div",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,f=>{var y,u;return e.openBlock(),e.createElementBlock("div",{key:f.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",$l,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-8 rounded-full mr-3",c.value])},null,2),e.createElementVNode("div",Al,[e.createElementVNode("div",Sl,[e.createElementVNode("div",Ll,[e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(l.value)||!l.value.length}])},e.toDisplayString(f[`${(y=r.value)==null?void 0:y.name}_text`]||f[(u=r.value)==null?void 0:u.name]||f[Object.keys(f)[0]]||"Не вказано"),3),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[f[m.name]?(e.openBlock(),e.createElementBlock("div",Fl,e.toDisplayString(f[`${m.name}_text`]||f[m.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",Ml,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:"flex flex-wrap gap-1 mt-1"},[f[m.name]?(e.openBlock(),e.createElementBlock("span",Tl,e.toDisplayString(f[`${m.name}_text`]||f[m.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Il,[e.createElementVNode("div",Dl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>{var x;return e.openBlock(),e.createElementBlock("div",{key:m.name},[e.createElementVNode("p",jl,e.toDisplayString(m.ua),1),e.createElementVNode("p",Ol,[Array.isArray(f[m==null?void 0:m.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(f[m==null?void 0:m.name],(v,k)=>(e.openBlock(),e.createElementBlock("span",{key:k,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(v),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(f[m==null?void 0:m.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=f[(m==null?void 0:m.name)+"_data"])==null?void 0:x.text)||f[(m==null?void 0:m.name)+"_text"]||f[m==null?void 0:m.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("a",{href:d(f),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"}},[...s[0]||(s[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-chevron-right h-4 w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,zl)])])}),128))]))}}),Pl={class:"flex flex-col space-y-1.5 p-6 pb-2"},Rl={class:"flex items-center gap-2"},Ul={class:"tracking-tight text-lg font-medium"},ql={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"},Yl={key:1,class:"flex"},Hl={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"},Wl={class:"p-6 pt-0 pb-4"},Kl={class:"grid grid-cols-2 gap-4"},Zl={class:"text-sm text-gray-500"},Gl={class:"font-medium"},Xl={class:"flex items-center p-6 pt-0"},Ql=["href"],St=e.defineComponent({__name:"template-4",props:{items:{},item:{},columns:{},path:{},id_key:{},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=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),l=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),a=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),c=(d,g)=>{if(g)return d[g]},p=d=>{const g=c(d,n.id_key);return`${n.path}?id=${g}`};return(d,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,s=>{var f,y;return e.openBlock(),e.createElementBlock("div",{key:s.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",Pl,[e.createElementVNode("div",Rl,[e.createElementVNode("h3",Ul,e.toDisplayString(s[`${(f=r.value)==null?void 0:f.name}_text`]||s[(y=r.value)==null?void 0:y.name]||Object.keys(s)[0]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.name},[s[u.name]?(e.openBlock(),e.createElementBlock("div",ql,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",Yl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.name,class:"flex flex-wrap gap-1 ml-2"},[s[u.name]?(e.openBlock(),e.createElementBlock("span",Hl,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Wl,[e.createElementVNode("div",Kl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,u=>{var m;return e.openBlock(),e.createElementBlock("div",{key:u.name},[e.createElementVNode("p",Zl,e.toDisplayString(u.ua),1),e.createElementVNode("p",Gl,[Array.isArray(s[u==null?void 0:u.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s[u==null?void 0:u.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},[u.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(s[u==null?void 0:u.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((m=s[(u==null?void 0:u.name)+"_data"])==null?void 0:m.text)||s[(u==null?void 0:u.name)+"_text"]||s[u==null?void 0:u.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Xl,[e.createElementVNode("a",{href:p(s),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,Ql)])])}),128))}}),Jl={class:"grid grid-cols-12 divide-x divide-gray-100"},ei={key:0},ti=["src"],ni={key:1,class:"col-span-1 flex items-center justify-center"},oi={class:"col-span-7 p-4"},ri={class:"flex items-center mb-1 col-span-7 p-4"},li={class:"text-base font-bold text-gray-900 mr-2"},ii={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"},ai={class:"text-sm text-gray-600 line-clamp-1 mb-2"},si={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-sm"},ci={class:"text-gray-500 mr-1"},di=["innerHTML"],ui={class:"text-gray-600 truncate"},pi={class:"col-span-2 p-3 bg-gray-50 flex flex-col justify-center"},mi={class:"text-xs text-gray-500 mb-1.5"},fi={key:0,class:"flex flex-wrap gap-1"},gi={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"},hi={class:"col-span-2 flex flex-col justify-center items-center bg-gray-50 border-l p-2"},yi={class:"w-full space-y-2"},xi=["href"],Lt=e.defineComponent({__name:"template-5",props:{items:{},item:{},columns:{},path:{},id_key:{},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=e.computed(()=>n.columns.find(s=>s.meta==="title")),i=e.computed(()=>n.columns.filter(s=>s.meta==="category")),l=e.computed(()=>n.columns.filter(s=>s.meta==="tags")),a=e.computed(()=>n.columns.filter(s=>s.meta==="features")),c=e.computed(()=>n.columns.find(s=>s.meta==="image")),p=e.computed(()=>n.columns.find(s=>s.meta==="desc")||n.columns.find(s=>s.name==="description")),d=(s,f)=>{if(f)return s[f]},g=s=>{const f=d(s,n.id_key);return`${n.path}?id=${f}`};return(s,f)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>{var u,m,x,v,k;return e.openBlock(),e.createElementBlock("div",{key:y.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",Jl,[c.value?(e.openBlock(),e.createElementBlock("div",ei,[y[(u=c.value)==null?void 0:u.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:y[(m=c.value)==null?void 0:m.name],alt:"image",class:"object-cover h-full"},null,8,ti)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ni,[...f[0]||(f[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",oi,[e.createElementVNode("div",ri,[e.createElementVNode("h3",li,e.toDisplayString(y[`${(x=r.value)==null?void 0:x.name}_text`]||y[(v=r.value)==null?void 0:v.name]||Object.keys(y)[0]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,_=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:_.name},[y[_.name]?(e.openBlock(),e.createElementBlock("div",ii,e.toDisplayString(y[`${_.name}_text`]||y[_.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),e.createElementVNode("p",ai,e.toDisplayString(y[(k=p.value)==null?void 0:k.name]),1),e.createElementVNode("div",si,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,_=>{var V;return e.openBlock(),e.createElementBlock("div",{key:_.name,class:"flex items-center"},[e.createElementVNode("span",ci,e.toDisplayString((_==null?void 0:_.ua)||_.label||_.name)+":",1),_.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:_.icon},null,8,di)):e.createCommentVNode("",!0),e.createElementVNode("span",ui,[Array.isArray(y[_==null?void 0:_.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y[_==null?void 0:_.name],(A,h)=>(e.openBlock(),e.createElementBlock("span",{key:h,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(A),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[_.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(y[_==null?void 0:_.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((V=y[(_==null?void 0:_.name)+"_data"])==null?void 0:V.text)||y[_==null?void 0:_.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",pi,[e.createElementVNode("p",mi," Теги: "+e.toDisplayString(l.value.length&&y[l.value[0].name]?"":"відсутні"),1),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",fi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,_=>(e.openBlock(),e.createElementBlock("div",{key:_.name,class:"flex flex-wrap gap-1"},[y[_.name]?(e.openBlock(),e.createElementBlock("span",gi,e.toDisplayString(y[`${_.name}_text`]||y[_.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",hi,[e.createElementVNode("div",yi,[e.createElementVNode("a",{href:g(y),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,xi)])])])])}),128))}}),Ft={template1:Vt,template2:$t,template3:At,template4:St,template5:Lt},ki={class:"space-y-4"},bi={class:"flex items-center gap-4"},_i={class:"text-lg font-semibold mb-4"},wi={key:1,class:"text-gray-400 text-center py-12"},Ei={key:2,class:"text-gray-400 text-center py-12"},Bi=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"}],i={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},l=e.computed(()=>{var g;return Array.isArray((g=o.value)==null?void 0:g.columns)?o.value.columns:[]}),a=e.computed(()=>{var g;return((g=o.value)==null?void 0:g.view)||"template1"}),c=e.computed(()=>Ft[a.value]||Ft.template1),p=e.computed(()=>{var f;const g=(f=o.value)==null?void 0:f.view;if(!g)return"template1";const s=r.find(y=>y.id===g);return(s==null?void 0:s.text)||g}),d=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5));return(g,s)=>(e.openBlock(),e.createElementBlock("div",ki,[e.createElementVNode("div",bi,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:i,modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=f=>o.value=f)},null,8,["modelValue"]))]),e.createElementVNode("h2",_i," Превʼю таблиці ("+e.toDisplayString(p.value)+") ",1),c.value&&d.value.length&&l.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{items:d.value,columns:l.value,path:"#",id_key:"id",key:a.value},null,8,["items","columns"])):d.value.length?(e.openBlock(),e.createElementBlock("div",Ei," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",wi," Немає даних для превʼю "))]))}}),Ni={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},vi={class:"max-w-6xl mx-auto"},Ci={class:"flex items-center justify-between mb-6"},Vi={class:"flex items-center gap-2"},$i=["href"],Ai={class:"w-full"},Si={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 mb-6 bg-white border border-gray-200 rounded-md text-muted-foreground"},Li=["onClick"],Fi=e.defineComponent({__name:"register",setup(t){const n=me.useRoute(),o=me.useRouter(),r=e.ref("list"),i=e.ref(""),l=[{name:"List",id:"list"},{name:"Filters",id:"filters"},{name:"Card",id:"card"},{name:"Preview",id:"preview"}],a={list:Ur,filters:Zr,card:tl,preview:Bi},c=l.map(y=>y.id),p=e.ref({columns:[],filters:[],card:[],tableData:[]}),d=e.ref([]),g=async()=>{var u;if(!((u=p.value)==null?void 0:u.token)){ne.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const m=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(p.value)});if(!m.ok)throw new Error(`Failed to save content: ${m.status}`);ne.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(m){ne.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(m)}},s=async y=>{try{const m=await(await fetch(`/api/gis-registry/${y}`)).json(),x=Array.isArray(m==null?void 0:m.rows)?m.rows:[];p.value.tableData=x.slice(0,3)}catch(u){console.error("Помилка завантаження превʼю:",u)}},f=async()=>{var y,u;try{const x=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),v=((y=x==null?void 0:x.rows)==null?void 0:y[0])||{};i.value=v.register_key||"",p.value={...v,columns:Array.isArray(v.columns)?v.columns:[],filters:Array.isArray(v.filters)?v.filters:[],card:Array.isArray(v.card)?v.card:[],tableData:Array.isArray(v.tableData)?v.tableData:[]},(u=x==null?void 0:x.tokens)!=null&&u.edit&&(p.value.token=x.tokens.edit),d.value=Array.isArray(x==null?void 0:x.fields)?x.fields:[]}catch(m){console.error("Помилка завантаження даних:",m)}};return e.onMounted(async()=>{const y=n.query.tab;typeof y=="string"&&c.includes(y)&&(r.value=y),await f(),i.value&&await s(i.value)}),e.watch(r,y=>{n.query.tab!==y&&o.replace({query:{...n.query,tab:y}})}),e.watch(()=>n.query.tab,y=>{typeof y=="string"&&c.includes(y)&&r.value!==y&&(r.value=y)}),(y,u)=>(e.openBlock(),e.createElementBlock("main",Ni,[e.createElementVNode("div",null,[e.createElementVNode("div",vi,[e.createElementVNode("div",Ci,[u[1]||(u[1]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"mb-2 text-2xl font-semibold text-gray-900"},"Створити контент"),e.createElementVNode("p",{class:"text-gray-600"},"Створити контент для вашого сайту")],-1)),e.createElementVNode("div",Vi,[e.createElementVNode("a",{href:`/${e.unref(n).path.split("/")[1]}`,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися ",8,$i),e.createElementVNode("button",{onClick:g,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",Ai,[e.createElementVNode("div",Si,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,m=>e.createElementVNode("button",{key:m.id,onClick:x=>r.value=m.id,class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",m.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(m.name),11,Li)),64))])]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a[r.value]),{data:p.value,"onUpdate:data":u[0]||(u[0]=m=>p.value=m),fields:d.value,key:r.value},null,40,["data","fields"]))])])]))}}),Mi={},Ti={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 Ii(t,n){return e.openBlock(),e.createElementBlock("svg",Ti,[...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 Di=W(Mi,[["render",Ii]]),ji={},Oi={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 zi(t,n){return e.openBlock(),e.createElementBlock("svg",Oi,[...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 Pi=W(ji,[["render",zi]]),Ri={},Ui={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 qi(t,n){return e.openBlock(),e.createElementBlock("svg",Ui,[...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 Yi=W(Ri,[["render",qi]]),Hi={},Wi={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 Ki(t,n){return e.openBlock(),e.createElementBlock("svg",Wi,[...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 Zi=W(Hi,[["render",Ki]]),Gi={},Xi={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 Qi(t,n){return e.openBlock(),e.createElementBlock("svg",Xi,[...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 Ji=W(Gi,[["render",Qi]]),Mt=e.defineComponent({__name:"MonacoEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue","load"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(null);let l=null,a=null,c=!1;function p(){return new Promise((g,s)=>{if(a)return g(a);if(window.monaco)return a=window.monaco,g(a);const f=u=>{if([...document.styleSheets].some(x=>{var v;return(v=x==null?void 0:x.href)==null?void 0:v.includes(u)}))return;const m=document.createElement("link");m.rel="stylesheet",m.href=u,document.head.appendChild(m)},y=u=>new Promise((m,x)=>{const v=document.createElement("script");v.src=u,v.onload=()=>m(!0),v.onerror=x,document.body.appendChild(v)});f("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),y("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,g(a)})}).catch(s)})}function d(){!i.value||!a||(l&&l.dispose(),l=a.editor.create(i.value,{value:o.modelValue||"",language:o.language||"yaml",theme:o.theme||"vs-light",automaticLayout:!0,minimap:{enabled:!1}}),l.onDidChangeModelContent(()=>{c||r("update:modelValue",l.getValue())}))}return e.watch(()=>o.modelValue,g=>{if(!l)return;const s=l.getValue();g!==s&&(c=!0,l.setValue(g||""),c=!1)}),e.watch(()=>o.language,g=>{l&&a&&a.editor.setModelLanguage(l.getModel(),g||"yaml")}),e.watch(()=>o.theme,g=>{l&&a&&a.editor.setTheme(g||"vs-light")}),e.onMounted(async()=>{await p(),d()}),e.onBeforeUnmount(()=>{l&&l.dispose()}),(g,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:i,class:"w-full h-full"},null,512))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Tt(t){return typeof t>"u"||t===null}function ea(t){return typeof t=="object"&&t!==null}function ta(t){return Array.isArray(t)?t:Tt(t)?[]:[t]}function na(t,n){var o,r,i,l;if(n)for(l=Object.keys(n),o=0,r=l.length;o<r;o+=1)i=l[o],t[i]=n[i];return t}function oa(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function ra(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var la=Tt,ia=ea,aa=ta,sa=oa,ca=ra,da=na,ee={isNothing:la,isObject:ia,toArray:aa,repeat:sa,isNegativeZero:ca,extend:da};function It(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+=`
|
|
62
|
+
`)});return}i.value[r.index]=c.value,l.value=!1};return(g,s)=>(e.openBlock(),e.createElementBlock("div",Zn,[e.createElementVNode("button",{onClick:s[0]||(s[0]=f=>{l.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(Hn),{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(Wn),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{size:"lg",visible:l.value,"onUpdate:visible":s[4]||(s[4]=f=>l.value=f),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",Gn,[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:s[3]||(s[3]=f=>l.value=!1)}," Скасувати "),e.createElementVNode("button",{class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300",onClick:d}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:c.value,"onUpdate:values":s[1]||(s[1]=f=>c.value=f),schema:t.scheme,form:a.value,"onUpdate:form":s[2]||(s[2]=f=>a.value=f)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),Qn={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")})}},Jn={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"},vt=t=>Jn[t==null?void 0:t.toLowerCase()]||"gray",eo=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],Nt=t=>{var n;return eo.includes((n=t||"")==null?void 0:n.toLowerCase())},W=(t,n)=>{const o=t.__vccOpts||t;for(const[r,i]of n)o[r]=i;return o},to={},no={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 oo(t,n){return e.openBlock(),e.createElementBlock("svg",no,[...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 ro=W(to,[["render",oo]]),lo={},io={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 ao(t,n){return e.openBlock(),e.createElementBlock("svg",io,[...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 so=W(lo,[["render",ao]]),co={},uo={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 po(t,n){return e.openBlock(),e.createElementBlock("svg",uo,[...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 mo=W(co,[["render",po]]),fo={},go={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 ho(t,n){return e.openBlock(),e.createElementBlock("svg",go,[...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 yo=W(fo,[["render",ho]]),xo={},ko={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 bo(t,n){return e.openBlock(),e.createElementBlock("svg",ko,[...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 _o=W(xo,[["render",bo]]),wo={},Eo={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 Bo(t,n){return e.openBlock(),e.createElementBlock("svg",Eo,[...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 vo=W(wo,[["render",Bo]]),No={},Co={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 Vo(t,n){return e.openBlock(),e.createElementBlock("svg",Co,[...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 $o=W(No,[["render",Vo]]),Ao={},So={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 Lo(t,n){return e.openBlock(),e.createElementBlock("svg",So,[...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 Fo=W(Ao,[["render",Lo]]),Mo={},To={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 Io(t,n){return e.openBlock(),e.createElementBlock("svg",To,[...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 Do=W(Mo,[["render",Io]]),jo={},Oo={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 zo(t,n){return e.openBlock(),e.createElementBlock("svg",Oo,[...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 Po=W(jo,[["render",zo]]),Ro={},Uo={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 qo(t,n){return e.openBlock(),e.createElementBlock("svg",Uo,[...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 Yo=W(Ro,[["render",qo]]),Ho={},Wo={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 Ko(t,n){return e.openBlock(),e.createElementBlock("svg",Wo,[...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 Zo=W(Ho,[["render",Ko]]),Go={},Xo={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 Qo(t,n){return e.openBlock(),e.createElementBlock("svg",Xo,[...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 Jo=W(Go,[["render",Qo]]),er={},tr={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function nr(t,n){return e.openBlock(),e.createElementBlock("svg",tr,[...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 or=W(er,[["render",nr]]),rr={},lr={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",height:"800px",width:"800px",version:"1.1",id:"_x32_",viewBox:"0 0 512 512","xml:space":"preserve"};function ir(t,n){return e.openBlock(),e.createElementBlock("svg",lr,[...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 ar=W(rr,[["render",ir]]),sr={},cr={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function dr(t,n){return e.openBlock(),e.createElementBlock("svg",cr,[...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 Ct={IconText:ro,IconNumber:so,IconDate:mo,IconDatetime:yo,IconRichtext:_o,IconBoolean:vo,IconFile:$o,IconImage:Fo,IconArray:Do,IconSelect:Po,IconSlug:Yo,IconDatalist:Zo,IconReference:Jo,IconReferenceList:or,IconBadge:ar,IconCheck:W(sr,[["render",dr]])},ur={key:0,class:"flex items-center justify-between mb-6"},pr={class:"flex justify-end w-full"},mr={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},fr={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},gr={class:"table-fixed w-full text-[13px]"},hr={class:"bg-gray-50 border-b border-gray-200"},yr={key:0},xr=["onDragstart","onDragover","onDrop"],kr={key:0,class:"flex w-fit items-center gap-2 text-left"},br={class:"flex-1 min-w-0"},_r={class:"font-medium text-gray-900 truncate"},wr={class:"text-xs text-gray-500"},Er={key:0,class:"flex items-center justify-center"},Br={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"},vr={key:1,class:"text-gray-500 text-sm"},Nr={key:2},Cr={class:"px-6 py-4"},Vr={key:1},$r=["colspan"],Ne=W(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)),i=e.defineAsyncComponent(()=>import("@opengis/form")),l=e.useModel(t,"modelValue"),a=t,c=e.ref({}),p=e.ref(!1),d=e.ref({}),g=e.ref(null);n({openCreateDialog:()=>{p.value=!0}});const s=e.computed({get(){return Array.isArray(l.value)?l.value:l.value&&Array.isArray(l.value.columns)?l.value.columns:[]},set(V){Array.isArray(l.value)?l.value=V:l.value&&Array.isArray(l.value.columns)&&(l.value.columns=V)}}),f=e.computed(()=>{const V=a.columnsScheme.map(A=>A.key);return V.includes("name")&&V.includes("label")||V.includes("id")&&V.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...a.columnsScheme.filter(A=>!["name","id","label"].includes(A.key))]:a.columnsScheme});function y(){p.value=!1,d.value={},g.value=null}async function u(){const V=c.value.validate();if(V){ne.notify({type:"warning",title:"Validation",message:Object.entries(V).map(([A,h])=>`${A}: ${h}`).join(`
|
|
63
|
+
`)});return}if(g.value===null)s.value=[...s.value,{...d.value}];else{const A=[...s.value];A[g.value]={...d.value},s.value=A}y()}const m=e.ref(null),x=e.ref(null),N=V=>{m.value=V},k=V=>{x.value=V},_=V=>{if(m.value===null||m.value===V){m.value=null,x.value=null;return}const A=[...s.value],[h]=A.splice(m.value,1);A.splice(V,0,h),s.value=A,m.value=null,x.value=null};return(V,A)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",ur,[e.createElementVNode("div",pr,[e.createElementVNode("button",{onClick:A[0]||(A[0]=h=>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"},[...A[4]||(A[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",mr,[e.createElementVNode("div",fr,[e.createElementVNode("table",gr,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,h=>(e.openBlock(),e.createElementBlock("col",{key:h.key,style:e.normalizeStyle(h.type==="main"?`width: ${t.mainColWidth}`:h.width?`width: ${h.width}`:"auto")},null,4))),128)),A[5]||(A[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",hr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,h=>(e.openBlock(),e.createElementBlock("th",{key:h.key,class:"px-6 py-4"},e.toDisplayString(h.label),1))),128)),A[6]||(A[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),s.value.length?(e.openBlock(),e.createElementBlock("tbody",yr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(h,$)=>(e.openBlock(),e.createElementBlock("tr",{key:h.id||h.name||$,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":m.value===$,"border-t-2 border-b-2 border-blue-500 bg-blue-50":x.value===$}]),draggable:"true",onDragstart:B=>N($),onDragover:e.withModifiers(B=>k($),["prevent"]),onDrop:B=>_($)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,B=>(e.openBlock(),e.createElementBlock("td",{key:B.key,class:"px-6 py-4 align-middle text-center"},[B.type==="main"?(e.openBlock(),e.createElementBlock("div",kr,[A[7]||(A[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(Nt)(h.format==="yes/no"?"check":h.format||h.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(vt)(h.format==="yes/no"?"check":h.format||h.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.format==="yes/no"?"icon-check":e.unref(Ct)["Icon"+o(h.format||h.type)]||e.unref(Ct).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",br,[e.withDirectives((e.openBlock(),e.createElementBlock("p",_r,[e.createTextVNode(e.toDisplayString(h.name||h.id),1)])),[[e.unref(Qn)]]),e.createElementVNode("p",wr,e.toDisplayString(h.label||h.ua||h.name||h.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[B.type==="color"?(e.openBlock(),e.createElementBlock("div",Er,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${h[B.key]}]`])},null,2)])):["format","type","meta"].includes(B.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[h[B.key]?(e.openBlock(),e.createElementBlock("span",Br,e.toDisplayString(h[B.key]),1)):(e.openBlock(),e.createElementBlock("span",vr,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",Nr,e.toDisplayString(h[B.key]),1))],64))]))),128)),e.createElementVNode("td",Cr,[e.createVNode(Xn,{columns:s.value,"onUpdate:columns":A[1]||(A[1]=B=>s.value=B),data:h,index:$,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,xr))),128))])):(e.openBlock(),e.createElementBlock("tr",Vr,[e.createElementVNode("td",{colspan:f.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,$r)]))])])]),e.createVNode(e.unref(r),{title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":A[3]||(A[3]=h=>p.value=h)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:y,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:u,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(i),{ref_key:"form",ref:c,modelValue:d.value,"onUpdate:modelValue":A[2]||(A[2]=h=>d.value=h),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-1754fddd"]]),Ar={class:"p-4 text-[13px]"},Sr={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Lr=["id","checked","onChange"],Fr={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Mr={class:"font-medium text-gray-900 truncate"},Tr={class:"text-xs text-gray-500"},Ir={class:"flex justify-end gap-2 p-4 border-t w-full"},Ve=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"),i=t,l=n,a=e.defineAsyncComponent(()=>import("@opengis/core").then(k=>k.VsModal)),c=e.computed(()=>Array.isArray(i.fields)?i.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)??"",d=k=>String(p(k)??"").trim(),g=k=>(k==null?void 0:k.title)??(k==null?void 0:k.label)??d(k),s=e.computed(()=>new Set(r.value.map(k=>String(k??"").trim()))),f=k=>s.value.has(d(k)),y=k=>{const _=d(k);if(!_)return;const V=new Set(s.value);V.has(_)?V.delete(_):V.add(_),r.value=Array.from(V)},u=e.computed(()=>i.confirmText||"Імпортувати"),m=e.computed(()=>i.cancelText||"Скасувати"),x=()=>{o.value=!1,l("cancel")},N=()=>{l("confirm"),o.value=!1};return(k,_)=>(e.openBlock(),e.createBlock(e.unref(a),{visible:o.value,"onUpdate:visible":_[0]||(_[0]=V=>o.value=V),title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Ir,[e.createElementVNode("button",{onClick:x,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(m.value),1),e.createElementVNode("button",{onClick:N,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(u.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Ar,[e.createElementVNode("div",Sr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,V=>(e.openBlock(),e.createElementBlock("label",{key:d(V),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${d(V)}`,checked:f(V),onChange:A=>y(V)},null,40,Lr),e.createElementVNode("div",Fr,[e.unref(Nt)(V.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(vt)(V.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${V.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Mr,e.toDisplayString(d(V)),1),e.createElementVNode("p",Tr,e.toDisplayString(g(V)),1)])])]))),128))])])]),_:1},8,["visible","title"]))}});function $e(t){return t==null?"":String(t).trim()}function we(t){return $e((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 Ae(t,n,o){const r=Array.isArray(t)?[...t]:[],i=Array.isArray(n)?n:[],{selectedKeys:l,resolveKey:a}=o,c=new Set;for(const s of l){const f=$e(s);f&&c.add(f)}if(c.size===0)return[];const p=s=>$e(a(s)),d=[],g=new Set;for(const s of r){const f=p(s);!f||!c.has(f)||(d.push(s),g.add(f))}for(const s of i){const f=p(s);!f||g.has(f)||!c.has(f)||(d.push(s),g.add(f))}return d}const Dr={class:"vs-form"},jr={class:"vs-form__body auto-rows-max container"},Or={class:"flex flex-wrap"},zr={class:"h-fit w-full mb-6 px-2"},Pr={class:"h-fit w-full flex flex-wrap"},Rr={class:"w-full"},Ur=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,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=k=>we(k||{}),a=e.defineAsyncComponent(()=>import("@opengis/form")),c=e.ref(),p=e.ref(!1),d=e.ref([]),g=()=>{const k=f.value.map(_=>l(_)).filter(_=>_.length>0);d.value=[...k],p.value=!0},s=e.computed(()=>{var k,_;return((k=n.value)==null?void 0:k.token)||((_=n.value)==null?void 0:_.id)||"register-form"}),f=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:[]}}),y=e.computed({get:()=>n.value||{},set:k=>{var V;const _=Array.isArray((V=n.value)==null?void 0:V.columns)?n.value.columns:[];n.value={...n.value,...k,columns:_}}});e.watch(()=>c.value,k=>{o.value=k||null},{immediate:!0}),e.watch(p,k=>{k||(d.value=[])});const u=()=>{const k=new Set(d.value.map(A=>$e(A)).filter(A=>A.length>0)),_=Array.isArray(f.value)?[...f.value]:[],V=i.value.filter(A=>k.has(l(A))).map(A=>{const h=l(A),$=A.title??A.label??h;return{...A,name:h,label:$,type:A.type||"text",meta:A.meta??"features"}});f.value=Ae(_,V,{selectedKeys:d.value,resolveKey:l}),p.value=!1,d.value=[]},m={table_name:{type:"text",label:"Table",required:!0,placeholder:"Table",validators:["required"],col:6},name:{type:"text",label:"Name",required:!0,placeholder:"Name",validators:["required"],col:6},query:{type:"text",label:"Query",placeholder:"Query",col:6},order:{type:"text",label:"Order",placeholder:"Order",col:6},description:{type:"text",label:"Description",placeholder:"Description",col:12}},x=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"meta",label:"Мета",type:"text"}],N={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,_)=>(e.openBlock(),e.createElementBlock("div",Dr,[e.createElementVNode("div",jr,[e.createElementVNode("div",Or,[e.createElementVNode("div",zr,[(e.openBlock(),e.createBlock(e.unref(a),{ref_key:"formEl",ref:c,key:s.value,schema:m,modelValue:y.value,"onUpdate:modelValue":_[0]||(_[0]=V=>y.value=V)},null,8,["modelValue"]))]),e.createElementVNode("div",Pr,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:g,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[..._[4]||(_[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Rr,[e.createVNode(Ne,{modelValue:f.value,"onUpdate:modelValue":_[1]||(_[1]=V=>f.value=V),"columns-scheme":x,"form-scheme":N,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ve,{visible:p.value,"onUpdate:visible":_[2]||(_[2]=V=>p.value=V),selection:d.value,"onUpdate:selection":_[3]||(_[3]=V=>d.value=V),fields:i.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),qr={class:"vs-form"},Yr={class:"vs-form__body auto-rows-max container"},Hr={class:"flex flex-wrap"},Wr={class:"h-fit w-full flex flex-wrap"},Kr={class:"w-full"},Zr=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,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=y=>we(y||{}),a=e.ref(!1),c=e.ref([]),p=()=>{const y=d.value.map(u=>l(u)).filter(u=>u.length>0);c.value=[...y],a.value=!0},d=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:y=>{n.value||(n.value={}),n.value.filters=Array.isArray(y)?y:[]}});e.watch(a,y=>{y||(c.value=[])});const g=()=>{const y=new Set(c.value.map(x=>$e(x)).filter(x=>x.length>0)),u=Array.isArray(d.value)?[...d.value]:[],m=i.value.filter(x=>y.has(l(x))).map(x=>({name:l(x),label:x.title??x.label??l(x),type:x.type||"text"}));d.value=Ae(u,m,{selectedKeys:c.value,resolveKey:l}),a.value=!1,c.value=[]},s=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],f={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},type:{type:"radio",label:"Тип",required:!0,position:"horizontal",options:[{text:"Check",id:"check"},{text:"Range",id:"range"},{text:"Date",id:"date"},{text:"Text",id:"text"},{text:"Select",id:"select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"text",label:"Класифікатор",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(y,u)=>(e.openBlock(),e.createElementBlock("div",qr,[e.createElementVNode("div",Yr,[e.createElementVNode("div",Hr,[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",Wr,[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",Kr,[e.createVNode(Ne,{modelValue:d.value,"onUpdate:modelValue":u[0]||(u[0]=m=>d.value=m),"columns-scheme":s,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=m=>a.value=m),selection:c.value,"onUpdate:selection":u[2]||(u[2]=m=>c.value=m),fields:i.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:g},null,8,["visible","selection","fields"])]))}}),Gr={class:"vs-form"},Xr={class:"vs-form__body auto-rows-max container"},Qr={class:"flex flex-wrap"},Jr={class:"h-fit w-full flex flex-wrap"},el={class:"w-full"},tl=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,i=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),l=y=>we(y||{}),a=e.ref(!1),c=e.ref([]),p=()=>{const y=d.value.map(u=>l(u)).filter(u=>u.length>0);c.value=[...y],a.value=!0},d=e.computed({get:()=>n.value.card,set:y=>{n.value||(n.value={}),n.value.card=Array.isArray(y)?y:[]}});e.watch(a,y=>{var u;if(y){const m=((u=d.value)==null?void 0:u.map(x=>x.name))||[];c.value=[...m]}});const g=()=>{const y=new Set(c.value.map(x=>$e(x)).filter(x=>x.length>0)),u=Array.isArray(d.value)?[...d.value]:[],m=i.value.filter(x=>y.has(l(x))).map(x=>{const N=l(x),k=x.title??x.label??N;return{...x,name:N,label:k,format:x.format||x.type||"text",meta:x.meta||"title"}});d.value=Ae(u,m,{selectedKeys:c.value,resolveKey:l}),a.value=!1,c.value=[]},s=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Label",type:"text"},{key:"format",label:"Format",type:"text"}],f={name:{type:"text",label:"Name",required:!0,disabled:!0},label:{type:"text",label:"Label",required:!0},format:{type:"radio",label:"Format",position:"horizontal",required:!0,options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"}]},data:{type:"text",label:"Data"}};return e.onBeforeUnmount(()=>{o.value=null}),(y,u)=>(e.openBlock(),e.createElementBlock("div",Gr,[e.createElementVNode("div",Xr,[e.createElementVNode("div",Qr,[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",Jr,[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",el,[e.createVNode(Ne,{modelValue:d.value,"onUpdate:modelValue":u[0]||(u[0]=m=>d.value=m),"columns-scheme":s,"form-scheme":f,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":u[1]||(u[1]=m=>a.value=m),selection:c.value,"onUpdate:selection":u[2]||(u[2]=m=>c.value=m),fields:i.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:g},null,8,["visible","selection","fields"])]))}}),nl=["","січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"];function Ie(t){if(!t)return"";const[n,o]=t.split(" ");if(!n)return t;const[r,i,l]=n.split("-");if(!r||!i||!l)return t;const a=parseInt(i,10),c=nl[a]||i;let p=`${parseInt(l,10)} ${c} ${r}`;if(o){const d=o.split(".")[0],[g,s,f]=d.split(":");g&&s&&f?p+=`, ${g}:${s}:${f}`:g&&s?p+=`, ${g}:${s}`:g&&(p+=`, ${g}`)}return p}const ol={class:"flex justify-between p-4 pb-2 bg-slate-50 gap-4"},rl={class:"flex items-center justify-between"},ll={class:"text-lg font-bold line-clamp-2"},il={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"},al={key:0,class:"flex"},sl={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"},cl={class:"p-4 pt-2"},dl={class:"grid grid-cols-2 gap-3 text-sm"},ul={class:"text-gray-500"},pl={class:"font-medium"},ml={class:"items-center p-3 bg-slate-50 flex justify-end"},fl=["href"],Vt=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=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),l=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),a=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),c=(d,g)=>{if(g)return d[g]},p=d=>{const g=c(d,n.id_key);return`${n.path}?id=${g}`};return(d,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,s=>{var f,y,u;return e.openBlock(),e.createElementBlock("div",{key:s.id,class:"rounded-lg border bg-card text-card-foreground overflow-hidden border-none shadow-md relative","data-v0-t":"card"},[e.createElementVNode("div",ol,[e.createElementVNode("div",rl,[e.createElementVNode("h2",ll,e.toDisplayString(s[`${(f=r.value)==null?void 0:f.name}_text`]||s[(y=r.value)==null?void 0:y.name]||s[(u=r.value)==null?void 0:u.label]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[s[m.name]?(e.openBlock(),e.createElementBlock("div",il,e.toDisplayString(s[`${m.name}_text`]||s[m.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",al,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:"mt-2 flex flex-wrap gap-1"},[s[m.name]?(e.openBlock(),e.createElementBlock("span",sl,e.toDisplayString(s[`${m.name}_text`]||s[m.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",cl,[e.createElementVNode("div",dl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>{var x;return e.openBlock(),e.createElementBlock("div",{key:m.name,class:"flex items-center gap-1.5"},[e.createElementVNode("span",ul,e.toDisplayString(m.ua||m.label)+": ",1),e.createElementVNode("span",pl,[Array.isArray(s[m==null?void 0:m.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s[(m==null?void 0:m.name)+"_text"]||s[m==null?void 0:m.name],(N,k)=>(e.openBlock(),e.createElementBlock("span",{key:k,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(N),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(s[m==null?void 0:m.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=s[(m==null?void 0:m.name)+"_data"])==null?void 0:x.text)||s[(m==null?void 0:m.name)+"_text"]||s[m==null?void 0:m.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",ml,[e.createElementVNode("a",{href:p(s),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...g[0]||(g[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-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,fl)])])}),128))}}),gl={class:"p-0"},hl={class:"border-l-4 border-l-slate-400"},yl={class:"p-4"},xl={class:"flex flex-wrap items-center gap-2 mb-3"},kl={class:"text-lg font-bold"},bl={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"},_l={key:1,class:"flex"},wl={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"},El={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-3 text-sm border-t pt-3"},Bl={class:"text-xs text-gray-500 mb-1"},vl={class:"font-medium"},Nl={class:"flex justify-end mt-3 border-t pt-3"},Cl=["href"],$t=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=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),l=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),a=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),c=(d,g)=>{if(g)return d[g]},p=d=>{const g=c(d,n.id_key);return`${n.path}?id=${g}`};return(d,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,s=>{var f,y;return e.openBlock(),e.createElementBlock("div",{key:s.id,class:"rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden","data-v0-t":"card"},[e.createElementVNode("div",gl,[e.createElementVNode("div",hl,[e.createElementVNode("div",yl,[e.createElementVNode("div",xl,[e.createElementVNode("h2",kl,e.toDisplayString(s[`${(f=r.value)==null?void 0:f.name}_text`]||s[(y=r.value)==null?void 0:y.name]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.name},[s[u.name]?(e.openBlock(),e.createElementBlock("div",bl,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",_l,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.name,class:"flex flex-wrap gap-1 ml-2"},[s[u.name]?(e.openBlock(),e.createElementBlock("span",wl,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",El,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,u=>{var m;return e.openBlock(),e.createElementBlock("div",{key:u.name},[e.createElementVNode("p",Bl,e.toDisplayString(u.ua),1),e.createElementVNode("p",vl,[Array.isArray(s[u==null?void 0:u.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s[u==null?void 0:u.name],(x,N)=>(e.openBlock(),e.createElementBlock("span",{key:N,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},[u.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(s[u==null?void 0:u.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((m=s[(u==null?void 0:u.name)+"_data"])==null?void 0:m.text)||s[(u==null?void 0:u.name)+"_text"]||s[u==null?void 0:u.name]||"Немає даних"),1)],64))],64))])])}),128))]),e.createElementVNode("div",Nl,[e.createElementVNode("a",{href:p(s),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3"},[...g[0]||(g[0]=[e.createTextVNode(" Детальніше ",-1),e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-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,Cl)])])])])])}),128))}}),Vl={class:"space-y-4"},$l={class:"flex items-center py-2 px-3"},Al={class:"flex-1"},Sl={class:"grid grid-cols-12 gap-2 w-full text-xs"},Ll={class:"col-span-5"},Fl={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"},Ml={key:1,class:"flex flex-wrap gap-1 mt-1"},Tl={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"},Il={class:"col-span-7"},Dl={class:"grid grid-cols-3 gap-3"},jl={class:"text-[10px] text-gray-500 mb-1"},Ol={class:"truncate font-medium"},zl=["href"],At=e.defineComponent({__name:"template-3",props:{items:{},item:{},columns:{},path:{},id_key:{},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=e.computed(()=>n.columns.find(g=>g.meta==="title")),i=e.computed(()=>n.columns.filter(g=>g.meta==="category")),l=e.computed(()=>n.columns.filter(g=>g.meta==="tags")),a=e.computed(()=>n.columns.filter(g=>g.meta!=="title")),c=e.computed(()=>"bg-blue-500"),p=(g,s)=>{if(s)return g[s]},d=g=>{const s=p(g,n.id_key);return`${n.path}?id=${s}`};return(g,s)=>(e.openBlock(),e.createElementBlock("div",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,f=>{var y,u;return e.openBlock(),e.createElementBlock("div",{key:f.id,class:"border-b border-slate-200 hover:bg-slate-50 transition-colors"},[e.createElementVNode("div",$l,[e.createElementVNode("div",{class:e.normalizeClass(["w-1 h-8 rounded-full mr-3",c.value])},null,2),e.createElementVNode("div",Al,[e.createElementVNode("div",Sl,[e.createElementVNode("div",Ll,[e.createElementVNode("p",{class:e.normalizeClass(["font-bold text-sm text-left",{"w-full h-full flex items-center":!Array.isArray(l.value)||!l.value.length}])},e.toDisplayString(f[`${(y=r.value)==null?void 0:y.name}_text`]||f[(u=r.value)==null?void 0:u.name]||f[Object.keys(f)[0]]||"Не вказано"),3),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[f[m.name]?(e.openBlock(),e.createElementBlock("div",Fl,e.toDisplayString(f[`${m.name}_text`]||f[m.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",Ml,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:"flex flex-wrap gap-1 mt-1"},[f[m.name]?(e.openBlock(),e.createElementBlock("span",Tl,e.toDisplayString(f[`${m.name}_text`]||f[m.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Il,[e.createElementVNode("div",Dl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>{var x;return e.openBlock(),e.createElementBlock("div",{key:m.name},[e.createElementVNode("p",jl,e.toDisplayString(m.ua),1),e.createElementVNode("p",Ol,[Array.isArray(f[m==null?void 0:m.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(f[m==null?void 0:m.name],(N,k)=>(e.openBlock(),e.createElementBlock("span",{key:k,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(N),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(f[m==null?void 0:m.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((x=f[(m==null?void 0:m.name)+"_data"])==null?void 0:x.text)||f[(m==null?void 0:m.name)+"_text"]||f[m==null?void 0:m.name]||"Немає даних"),1)],64))],64))])])}),128))])])])]),e.createElementVNode("a",{href:d(f),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"}},[...s[0]||(s[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-chevron-right h-4 w-4"},[e.createElementVNode("path",{d:"m9 18 6-6-6-6"})],-1)])],8,zl)])])}),128))]))}}),Pl={class:"flex flex-col space-y-1.5 p-6 pb-2"},Rl={class:"flex items-center gap-2"},Ul={class:"tracking-tight text-lg font-medium"},ql={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"},Yl={key:1,class:"flex"},Hl={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"},Wl={class:"p-6 pt-0 pb-4"},Kl={class:"grid grid-cols-2 gap-4"},Zl={class:"text-sm text-gray-500"},Gl={class:"font-medium"},Xl={class:"flex items-center p-6 pt-0"},Ql=["href"],St=e.defineComponent({__name:"template-4",props:{items:{},item:{},columns:{},path:{},id_key:{},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=e.computed(()=>n.columns.find(d=>d.meta==="title")),i=e.computed(()=>n.columns.filter(d=>d.meta==="category")),l=e.computed(()=>n.columns.filter(d=>d.meta==="tags")),a=e.computed(()=>n.columns.filter(d=>d.meta!=="title")),c=(d,g)=>{if(g)return d[g]},p=d=>{const g=c(d,n.id_key);return`${n.path}?id=${g}`};return(d,g)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,s=>{var f,y;return e.openBlock(),e.createElementBlock("div",{key:s.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",Pl,[e.createElementVNode("div",Rl,[e.createElementVNode("h3",Ul,e.toDisplayString(s[`${(f=r.value)==null?void 0:f.name}_text`]||s[(y=r.value)==null?void 0:y.name]||Object.keys(s)[0]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.name},[s[u.name]?(e.openBlock(),e.createElementBlock("div",ql,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",Yl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.name,class:"flex flex-wrap gap-1 ml-2"},[s[u.name]?(e.openBlock(),e.createElementBlock("span",Hl,e.toDisplayString(s[`${u.name}_text`]||s[u.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Wl,[e.createElementVNode("div",Kl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,u=>{var m;return e.openBlock(),e.createElementBlock("div",{key:u.name},[e.createElementVNode("p",Zl,e.toDisplayString(u.ua),1),e.createElementVNode("p",Gl,[Array.isArray(s[u==null?void 0:u.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(s[u==null?void 0:u.name],(x,N)=>(e.openBlock(),e.createElementBlock("span",{key:N,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},[u.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(s[u==null?void 0:u.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((m=s[(u==null?void 0:u.name)+"_data"])==null?void 0:m.text)||s[(u==null?void 0:u.name)+"_text"]||s[u==null?void 0:u.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",Xl,[e.createElementVNode("a",{href:p(s),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,Ql)])])}),128))}}),Jl={class:"grid grid-cols-12 divide-x divide-gray-100"},ei={key:0},ti=["src"],ni={key:1,class:"col-span-1 flex items-center justify-center"},oi={class:"col-span-7 p-4"},ri={class:"flex items-center mb-1 col-span-7 p-4"},li={class:"text-base font-bold text-gray-900 mr-2"},ii={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"},ai={class:"text-sm text-gray-600 line-clamp-1 mb-2"},si={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-sm"},ci={class:"text-gray-500 mr-1"},di=["innerHTML"],ui={class:"text-gray-600 truncate"},pi={class:"col-span-2 p-3 bg-gray-50 flex flex-col justify-center"},mi={class:"text-xs text-gray-500 mb-1.5"},fi={key:0,class:"flex flex-wrap gap-1"},gi={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"},hi={class:"col-span-2 flex flex-col justify-center items-center bg-gray-50 border-l p-2"},yi={class:"w-full space-y-2"},xi=["href"],Lt=e.defineComponent({__name:"template-5",props:{items:{},item:{},columns:{},path:{},id_key:{},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=e.computed(()=>n.columns.find(s=>s.meta==="title")),i=e.computed(()=>n.columns.filter(s=>s.meta==="category")),l=e.computed(()=>n.columns.filter(s=>s.meta==="tags")),a=e.computed(()=>n.columns.filter(s=>s.meta==="features")),c=e.computed(()=>n.columns.find(s=>s.meta==="image")),p=e.computed(()=>n.columns.find(s=>s.meta==="desc")||n.columns.find(s=>s.name==="description")),d=(s,f)=>{if(f)return s[f]},g=s=>{const f=d(s,n.id_key);return`${n.path}?id=${f}`};return(s,f)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>{var u,m,x,N,k;return e.openBlock(),e.createElementBlock("div",{key:y.id,class:"bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200 hover:shadow-md"},[e.createElementVNode("div",Jl,[c.value?(e.openBlock(),e.createElementBlock("div",ei,[y[(u=c.value)==null?void 0:u.name]?(e.openBlock(),e.createElementBlock("img",{key:0,src:y[(m=c.value)==null?void 0:m.name],alt:"image",class:"object-cover h-full"},null,8,ti)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ni,[...f[0]||(f[0]=[e.createElementVNode("div",{class:"w-3 h-12 rounded-sm bg-blue-500",title:"Пріоритет: Високий","aria-hidden":"true"},null,-1)])])),e.createElementVNode("div",oi,[e.createElementVNode("div",ri,[e.createElementVNode("h3",li,e.toDisplayString(y[`${(x=r.value)==null?void 0:x.name}_text`]||y[(N=r.value)==null?void 0:N.name]||Object.keys(y)[0]||"Не вказано"),1),Array.isArray(i.value)&&i.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,_=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:_.name},[y[_.name]?(e.openBlock(),e.createElementBlock("div",ii,e.toDisplayString(y[`${_.name}_text`]||y[_.name]),1)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)]),e.createElementVNode("p",ai,e.toDisplayString(y[(k=p.value)==null?void 0:k.name]),1),e.createElementVNode("div",si,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,_=>{var V;return e.openBlock(),e.createElementBlock("div",{key:_.name,class:"flex items-center"},[e.createElementVNode("span",ci,e.toDisplayString((_==null?void 0:_.ua)||_.label||_.name)+":",1),_.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"mr-1 flex-shrink-0",innerHTML:_.icon},null,8,di)):e.createCommentVNode("",!0),e.createElementVNode("span",ui,[Array.isArray(y[_==null?void 0:_.name])?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y[_==null?void 0:_.name],(A,h)=>(e.openBlock(),e.createElementBlock("span",{key:h,class:"bg-gray-200 px-1 py-0.5 rounded-lg mr-1"},e.toDisplayString(A),1))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[_.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(Ie)(y[_==null?void 0:_.name])||"Немає даних"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(((V=y[(_==null?void 0:_.name)+"_data"])==null?void 0:V.text)||y[_==null?void 0:_.name]||"Немає даних"),1)],64))],64))])])}),128))])]),e.createElementVNode("div",pi,[e.createElementVNode("p",mi," Теги: "+e.toDisplayString(l.value.length&&y[l.value[0].name]?"":"відсутні"),1),Array.isArray(l.value)&&l.value.length?(e.openBlock(),e.createElementBlock("div",fi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,_=>(e.openBlock(),e.createElementBlock("div",{key:_.name,class:"flex flex-wrap gap-1"},[y[_.name]?(e.openBlock(),e.createElementBlock("span",gi,e.toDisplayString(y[`${_.name}_text`]||y[_.name]),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",hi,[e.createElementVNode("div",yi,[e.createElementVNode("a",{href:g(y),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,xi)])])])])}),128))}}),Ft={template1:Vt,template2:$t,template3:At,template4:St,template5:Lt},ki={class:"space-y-4"},bi={class:"flex items-center gap-4"},_i={class:"text-lg font-semibold mb-4"},wi={key:1,class:"text-gray-400 text-center py-12"},Ei={key:2,class:"text-gray-400 text-center py-12"},Bi=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"}],i={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},l=e.computed(()=>{var g;return Array.isArray((g=o.value)==null?void 0:g.columns)?o.value.columns:[]}),a=e.computed(()=>{var g;return((g=o.value)==null?void 0:g.view)||"template1"}),c=e.computed(()=>Ft[a.value]||Ft.template1),p=e.computed(()=>{var f;const g=(f=o.value)==null?void 0:f.view;if(!g)return"template1";const s=r.find(y=>y.id===g);return(s==null?void 0:s.text)||g}),d=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5));return(g,s)=>(e.openBlock(),e.createElementBlock("div",ki,[e.createElementVNode("div",bi,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:i,modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=f=>o.value=f)},null,8,["modelValue"]))]),e.createElementVNode("h2",_i," Превʼю таблиці ("+e.toDisplayString(p.value)+") ",1),c.value&&d.value.length&&l.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{items:d.value,columns:l.value,path:"#",id_key:"id",key:a.value},null,8,["items","columns"])):d.value.length?(e.openBlock(),e.createElementBlock("div",Ei," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",wi," Немає даних для превʼю "))]))}}),vi={class:"relative min-h-svh flex-1 flex-col flex gap-4 bg-white p-8 overflow-y-auto"},Ni={class:"max-w-6xl mx-auto"},Ci={class:"flex items-center justify-between mb-6"},Vi={class:"flex items-center gap-2"},$i=["href"],Ai={class:"w-full"},Si={class:"flex items-center w-full h-10 max-w-md grid-cols-3 p-1 mb-6 bg-white border border-gray-200 rounded-md text-muted-foreground"},Li=["onClick"],Fi=e.defineComponent({__name:"register",setup(t){const n=me.useRoute(),o=me.useRouter(),r=e.ref("list"),i=e.ref(""),l=[{name:"List",id:"list"},{name:"Filters",id:"filters"},{name:"Card",id:"card"},{name:"Preview",id:"preview"}],a={list:Ur,filters:Zr,card:tl,preview:Bi},c=l.map(y=>y.id),p=e.ref({columns:[],filters:[],card:[],tableData:[]}),d=e.ref([]),g=async()=>{var u;if(!((u=p.value)==null?void 0:u.token)){ne.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const m=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(p.value)});if(!m.ok)throw new Error(`Failed to save content: ${m.status}`);ne.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(m){ne.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(m)}},s=async y=>{try{const m=await(await fetch(`/api/gis-registry/${y}`)).json(),x=Array.isArray(m==null?void 0:m.rows)?m.rows:[];p.value.tableData=x.slice(0,3)}catch(u){console.error("Помилка завантаження превʼю:",u)}},f=async()=>{var y,u;try{const x=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),N=((y=x==null?void 0:x.rows)==null?void 0:y[0])||{};i.value=N.register_key||"",p.value={...N,columns:Array.isArray(N.columns)?N.columns:[],filters:Array.isArray(N.filters)?N.filters:[],card:Array.isArray(N.card)?N.card:[],tableData:Array.isArray(N.tableData)?N.tableData:[]},(u=x==null?void 0:x.tokens)!=null&&u.edit&&(p.value.token=x.tokens.edit),d.value=Array.isArray(x==null?void 0:x.fields)?x.fields:[]}catch(m){console.error("Помилка завантаження даних:",m)}};return e.onMounted(async()=>{const y=n.query.tab;typeof y=="string"&&c.includes(y)&&(r.value=y),await f(),i.value&&await s(i.value)}),e.watch(r,y=>{n.query.tab!==y&&o.replace({query:{...n.query,tab:y}})}),e.watch(()=>n.query.tab,y=>{typeof y=="string"&&c.includes(y)&&r.value!==y&&(r.value=y)}),(y,u)=>(e.openBlock(),e.createElementBlock("main",vi,[e.createElementVNode("div",null,[e.createElementVNode("div",Ni,[e.createElementVNode("div",Ci,[u[1]||(u[1]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"mb-2 text-2xl font-semibold text-gray-900"},"Створити контент"),e.createElementVNode("p",{class:"text-gray-600"},"Створити контент для вашого сайту")],-1)),e.createElementVNode("div",Vi,[e.createElementVNode("a",{href:`/${e.unref(n).path.split("/")[1]}`,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися ",8,$i),e.createElementVNode("button",{onClick:g,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",Ai,[e.createElementVNode("div",Si,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,m=>e.createElementVNode("button",{key:m.id,onClick:x=>r.value=m.id,class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",m.id===r.value?"bg-blue-50 text-blue-700 border-blue-200":""])},e.toDisplayString(m.name),11,Li)),64))])]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a[r.value]),{data:p.value,"onUpdate:data":u[0]||(u[0]=m=>p.value=m),fields:d.value,key:r.value},null,40,["data","fields"]))])])]))}}),Mi={},Ti={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 Ii(t,n){return e.openBlock(),e.createElementBlock("svg",Ti,[...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 Di=W(Mi,[["render",Ii]]),ji={},Oi={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 zi(t,n){return e.openBlock(),e.createElementBlock("svg",Oi,[...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 Pi=W(ji,[["render",zi]]),Ri={},Ui={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 qi(t,n){return e.openBlock(),e.createElementBlock("svg",Ui,[...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 Yi=W(Ri,[["render",qi]]),Hi={},Wi={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 Ki(t,n){return e.openBlock(),e.createElementBlock("svg",Wi,[...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 Zi=W(Hi,[["render",Ki]]),Gi={},Xi={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 Qi(t,n){return e.openBlock(),e.createElementBlock("svg",Xi,[...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 Ji=W(Gi,[["render",Qi]]),Mt=e.defineComponent({__name:"MonacoEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue","load"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(null);let l=null,a=null,c=!1;function p(){return new Promise((g,s)=>{if(a)return g(a);if(window.monaco)return a=window.monaco,g(a);const f=u=>{if([...document.styleSheets].some(x=>{var N;return(N=x==null?void 0:x.href)==null?void 0:N.includes(u)}))return;const m=document.createElement("link");m.rel="stylesheet",m.href=u,document.head.appendChild(m)},y=u=>new Promise((m,x)=>{const N=document.createElement("script");N.src=u,N.onload=()=>m(!0),N.onerror=x,document.body.appendChild(N)});f("https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs/editor/editor.main.min.css"),y("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,g(a)})}).catch(s)})}function d(){!i.value||!a||(l&&l.dispose(),l=a.editor.create(i.value,{value:o.modelValue||"",language:o.language||"yaml",theme:o.theme||"vs-light",automaticLayout:!0,minimap:{enabled:!1}}),l.onDidChangeModelContent(()=>{c||r("update:modelValue",l.getValue())}))}return e.watch(()=>o.modelValue,g=>{if(!l)return;const s=l.getValue();g!==s&&(c=!0,l.setValue(g||""),c=!1)}),e.watch(()=>o.language,g=>{l&&a&&a.editor.setModelLanguage(l.getModel(),g||"yaml")}),e.watch(()=>o.theme,g=>{l&&a&&a.editor.setTheme(g||"vs-light")}),e.onMounted(async()=>{await p(),d()}),e.onBeforeUnmount(()=>{l&&l.dispose()}),(g,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"editorContainer",ref:i,class:"w-full h-full"},null,512))}});/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Tt(t){return typeof t>"u"||t===null}function ea(t){return typeof t=="object"&&t!==null}function ta(t){return Array.isArray(t)?t:Tt(t)?[]:[t]}function na(t,n){var o,r,i,l;if(n)for(l=Object.keys(n),o=0,r=l.length;o<r;o+=1)i=l[o],t[i]=n[i];return t}function oa(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function ra(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var la=Tt,ia=ea,aa=ta,sa=oa,ca=ra,da=na,ee={isNothing:la,isObject:ia,toArray:aa,repeat:sa,isNegativeZero:ca,extend:da};function It(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+=`
|
|
64
64
|
|
|
65
65
|
`+t.mark.snippet),r+" "+o):r}function De(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=It(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}De.prototype=Object.create(Error.prototype),De.prototype.constructor=De,De.prototype.toString=function(n){return this.name+": "+It(this,n)};var le=De;function et(t,n,o,r,i){var l="",a="",c=Math.floor(i/2)-1;return r-n>c&&(l=" ... ",n=r-c+l.length),o-r>c&&(a=" ...",o=r+c-a.length),{str:l+t.slice(n,o).replace(/\t/g,"→")+a,pos:r-n+l.length}}function tt(t,n){return ee.repeat(" ",n-t.length)+t}function ua(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],i=[],l,a=-1;l=o.exec(t.buffer);)i.push(l.index),r.push(l.index+l[0].length),t.position<=l.index&&a<0&&(a=r.length-2);a<0&&(a=r.length-1);var c="",p,d,g=Math.min(t.line+n.linesAfter,i.length).toString().length,s=n.maxLength-(n.indent+g+3);for(p=1;p<=n.linesBefore&&!(a-p<0);p++)d=et(t.buffer,r[a-p],i[a-p],t.position-(r[a]-r[a-p]),s),c=ee.repeat(" ",n.indent)+tt((t.line-p+1).toString(),g)+" | "+d.str+`
|
|
66
66
|
`+c;for(d=et(t.buffer,r[a],i[a],t.position,s),c+=ee.repeat(" ",n.indent)+tt((t.line+1).toString(),g)+" | "+d.str+`
|
|
67
67
|
`,c+=ee.repeat("-",n.indent+g+3+d.pos)+`^
|
|
68
68
|
`,p=1;p<=n.linesAfter&&!(a+p>=i.length);p++)d=et(t.buffer,r[a+p],i[a+p],t.position-(r[a]-r[a+p]),s),c+=ee.repeat(" ",n.indent)+tt((t.line+p+1).toString(),g)+" | "+d.str+`
|
|
69
|
-
`;return c.replace(/\n$/,"")}var pa=ua,ma=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],fa=["scalar","sequence","mapping"];function ga(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(r){n[String(r)]=o})}),n}function ha(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(ma.indexOf(o)===-1)throw new le('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=ga(n.styleAliases||null),fa.indexOf(this.kind)===-1)throw new le('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var oe=ha;function Dt(t,n){var o=[];return t[n].forEach(function(r){var i=o.length;o.forEach(function(l,a){l.tag===r.tag&&l.kind===r.kind&&l.multi===r.multi&&(i=a)}),o[i]=r}),o}function ya(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,o;function r(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(n=0,o=arguments.length;n<o;n+=1)arguments[n].forEach(r);return t}function nt(t){return this.extend(t)}nt.prototype.extend=function(n){var o=[],r=[];if(n instanceof oe)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 le("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(l){if(!(l instanceof oe))throw new le("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(l.loadKind&&l.loadKind!=="scalar")throw new le("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(l.multi)throw new le("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(l){if(!(l instanceof oe))throw new le("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(nt.prototype);return i.implicit=(this.implicit||[]).concat(o),i.explicit=(this.explicit||[]).concat(r),i.compiledImplicit=Dt(i,"implicit"),i.compiledExplicit=Dt(i,"explicit"),i.compiledTypeMap=ya(i.compiledImplicit,i.compiledExplicit),i};var xa=nt,ka=new oe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}}),ba=new oe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}}),_a=new oe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}}),wa=new xa({explicit:[ka,ba,_a]});function Ea(t){if(t===null)return!0;var n=t.length;return n===1&&t==="~"||n===4&&(t==="null"||t==="Null"||t==="NULL")}function Ba(){return null}function
|
|
69
|
+
`;return c.replace(/\n$/,"")}var pa=ua,ma=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],fa=["scalar","sequence","mapping"];function ga(t){var n={};return t!==null&&Object.keys(t).forEach(function(o){t[o].forEach(function(r){n[String(r)]=o})}),n}function ha(t,n){if(n=n||{},Object.keys(n).forEach(function(o){if(ma.indexOf(o)===-1)throw new le('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=ga(n.styleAliases||null),fa.indexOf(this.kind)===-1)throw new le('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var oe=ha;function Dt(t,n){var o=[];return t[n].forEach(function(r){var i=o.length;o.forEach(function(l,a){l.tag===r.tag&&l.kind===r.kind&&l.multi===r.multi&&(i=a)}),o[i]=r}),o}function ya(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,o;function r(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(n=0,o=arguments.length;n<o;n+=1)arguments[n].forEach(r);return t}function nt(t){return this.extend(t)}nt.prototype.extend=function(n){var o=[],r=[];if(n instanceof oe)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 le("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(l){if(!(l instanceof oe))throw new le("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(l.loadKind&&l.loadKind!=="scalar")throw new le("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(l.multi)throw new le("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(l){if(!(l instanceof oe))throw new le("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(nt.prototype);return i.implicit=(this.implicit||[]).concat(o),i.explicit=(this.explicit||[]).concat(r),i.compiledImplicit=Dt(i,"implicit"),i.compiledExplicit=Dt(i,"explicit"),i.compiledTypeMap=ya(i.compiledImplicit,i.compiledExplicit),i};var xa=nt,ka=new oe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}}),ba=new oe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}}),_a=new oe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}}),wa=new xa({explicit:[ka,ba,_a]});function Ea(t){if(t===null)return!0;var n=t.length;return n===1&&t==="~"||n===4&&(t==="null"||t==="Null"||t==="NULL")}function Ba(){return null}function va(t){return t===null}var Na=new oe("tag:yaml.org,2002:null",{kind:"scalar",resolve:Ea,construct:Ba,predicate:va,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function Ca(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 Va(t){return t==="true"||t==="True"||t==="TRUE"}function $a(t){return Object.prototype.toString.call(t)==="[object Boolean]"}var Aa=new oe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Ca,construct:Va,predicate:$a,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 Sa(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function La(t){return 48<=t&&t<=55}function Fa(t){return 48<=t&&t<=57}function Ma(t){if(t===null)return!1;var n=t.length,o=0,r=!1,i;if(!n)return!1;if(i=t[o],(i==="-"||i==="+")&&(i=t[++o]),i==="0"){if(o+1===n)return!0;if(i=t[++o],i==="b"){for(o++;o<n;o++)if(i=t[o],i!=="_"){if(i!=="0"&&i!=="1")return!1;r=!0}return r&&i!=="_"}if(i==="x"){for(o++;o<n;o++)if(i=t[o],i!=="_"){if(!Sa(t.charCodeAt(o)))return!1;r=!0}return r&&i!=="_"}if(i==="o"){for(o++;o<n;o++)if(i=t[o],i!=="_"){if(!La(t.charCodeAt(o)))return!1;r=!0}return r&&i!=="_"}}if(i==="_")return!1;for(;o<n;o++)if(i=t[o],i!=="_"){if(!Fa(t.charCodeAt(o)))return!1;r=!0}return!(!r||i==="_")}function Ta(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 Ia(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!ee.isNegativeZero(t)}var Da=new oe("tag:yaml.org,2002:int",{kind:"scalar",resolve:Ma,construct:Ta,predicate:Ia,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"]}}),ja=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Oa(t){return!(t===null||!ja.test(t)||t[t.length-1]==="_")}function za(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 Pa=/^[-+]?[0-9]+e/;function Ra(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(ee.isNegativeZero(t))return"-0.0";return o=t.toString(10),Pa.test(o)?o.replace("e",".e"):o}function Ua(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||ee.isNegativeZero(t))}var qa=new oe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Oa,construct:za,predicate:Ua,represent:Ra,defaultStyle:"lowercase"}),Ya=wa.extend({implicit:[Na,Aa,Da,qa]}),Ha=Ya,jt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Ot=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 Wa(t){return t===null?!1:jt.exec(t)!==null||Ot.exec(t)!==null}function Ka(t){var n,o,r,i,l,a,c,p=0,d=null,g,s,f;if(n=jt.exec(t),n===null&&(n=Ot.exec(t)),n===null)throw new Error("Date resolve error");if(o=+n[1],r=+n[2]-1,i=+n[3],!n[4])return new Date(Date.UTC(o,r,i));if(l=+n[4],a=+n[5],c=+n[6],n[7]){for(p=n[7].slice(0,3);p.length<3;)p+="0";p=+p}return n[9]&&(g=+n[10],s=+(n[11]||0),d=(g*60+s)*6e4,n[9]==="-"&&(d=-d)),f=new Date(Date.UTC(o,r,i,l,a,c,p)),d&&f.setTime(f.getTime()-d),f}function Za(t){return t.toISOString()}var Ga=new oe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Wa,construct:Ka,instanceOf:Date,represent:Za});function Xa(t){return t==="<<"||t===null}var Qa=new oe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Xa}),ot=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
70
70
|
\r`;function Ja(t){if(t===null)return!1;var n,o,r=0,i=t.length,l=ot;for(o=0;o<i;o++)if(n=l.indexOf(t.charAt(o)),!(n>64)){if(n<0)return!1;r+=6}return r%8===0}function es(t){var n,o,r=t.replace(/[\r\n=]/g,""),i=r.length,l=ot,a=0,c=[];for(n=0;n<i;n++)n%4===0&&n&&(c.push(a>>16&255),c.push(a>>8&255),c.push(a&255)),a=a<<6|l.indexOf(r.charAt(n));return o=i%4*6,o===0?(c.push(a>>16&255),c.push(a>>8&255),c.push(a&255)):o===18?(c.push(a>>10&255),c.push(a>>2&255)):o===12&&c.push(a>>4&255),new Uint8Array(c)}function ts(t){var n="",o=0,r,i,l=t.length,a=ot;for(r=0;r<l;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 i=l%3,i===0?(n+=a[o>>18&63],n+=a[o>>12&63],n+=a[o>>6&63],n+=a[o&63]):i===2?(n+=a[o>>10&63],n+=a[o>>4&63],n+=a[o<<2&63],n+=a[64]):i===1&&(n+=a[o>>2&63],n+=a[o<<4&63],n+=a[64],n+=a[64]),n}function ns(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var os=new oe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ja,construct:es,predicate:ns,represent:ts}),rs=Object.prototype.hasOwnProperty,ls=Object.prototype.toString;function is(t){if(t===null)return!0;var n=[],o,r,i,l,a,c=t;for(o=0,r=c.length;o<r;o+=1){if(i=c[o],a=!1,ls.call(i)!=="[object Object]")return!1;for(l in i)if(rs.call(i,l))if(!a)a=!0;else return!1;if(!a)return!1;if(n.indexOf(l)===-1)n.push(l);else return!1}return!0}function as(t){return t!==null?t:[]}var ss=new oe("tag:yaml.org,2002:omap",{kind:"sequence",resolve:is,construct:as}),cs=Object.prototype.toString;function ds(t){if(t===null)return!0;var n,o,r,i,l,a=t;for(l=new Array(a.length),n=0,o=a.length;n<o;n+=1){if(r=a[n],cs.call(r)!=="[object Object]"||(i=Object.keys(r),i.length!==1))return!1;l[n]=[i[0],r[i[0]]]}return!0}function us(t){if(t===null)return[];var n,o,r,i,l,a=t;for(l=new Array(a.length),n=0,o=a.length;n<o;n+=1)r=a[n],i=Object.keys(r),l[n]=[i[0],r[i[0]]];return l}var ps=new oe("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:ds,construct:us}),ms=Object.prototype.hasOwnProperty;function fs(t){if(t===null)return!0;var n,o=t;for(n in o)if(ms.call(o,n)&&o[n]!==null)return!1;return!0}function gs(t){return t!==null?t:{}}var hs=new oe("tag:yaml.org,2002:set",{kind:"mapping",resolve:fs,construct:gs}),zt=Ha.extend({implicit:[Ga,Qa],explicit:[os,ss,ps,hs]}),Ee=Object.prototype.hasOwnProperty,He=1,Pt=2,Rt=3,We=4,rt=1,ys=2,Ut=3,xs=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ks=/[\x85\u2028\u2029]/,bs=/[,\[\]\{\}]/,qt=/^(?:!|!!|![a-z\-]+!)$/i,Yt=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Ht(t){return Object.prototype.toString.call(t)}function he(t){return t===10||t===13}function Ce(t){return t===9||t===32}function ie(t){return t===9||t===32||t===10||t===13}function Se(t){return t===44||t===91||t===93||t===123||t===125}function _s(t){var n;return 48<=t&&t<=57?t-48:(n=t|32,97<=n&&n<=102?n-97+10:-1)}function ws(t){return t===120?2:t===117?4:t===85?8:0}function Es(t){return 48<=t&&t<=57?t-48:-1}function Wt(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?`
|
|
71
|
-
`: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 Bs(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var Kt=new Array(256),Zt=new Array(256),Le=0;Le<256;Le++)Kt[Le]=Wt(Le)?1:0,Zt[Le]=Wt(Le);function
|
|
72
|
-
`,n-1))}function
|
|
71
|
+
`: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 Bs(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var Kt=new Array(256),Zt=new Array(256),Le=0;Le<256;Le++)Kt[Le]=Wt(Le)?1:0,Zt[Le]=Wt(Le);function vs(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||zt,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 Gt(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=pa(o),new le(n,o)}function R(t,n){throw Gt(t,n)}function Ke(t,n){t.onWarning&&t.onWarning.call(null,Gt(t,n))}var Xt={YAML:function(n,o,r){var i,l,a;n.version!==null&&R(n,"duplication of %YAML directive"),r.length!==1&&R(n,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),i===null&&R(n,"ill-formed argument of the YAML directive"),l=parseInt(i[1],10),a=parseInt(i[2],10),l!==1&&R(n,"unacceptable YAML version of the document"),n.version=r[0],n.checkLineBreaks=a<2,a!==1&&a!==2&&Ke(n,"unsupported YAML version of the document")},TAG:function(n,o,r){var i,l;r.length!==2&&R(n,"TAG directive accepts exactly two arguments"),i=r[0],l=r[1],qt.test(i)||R(n,"ill-formed tag handle (first argument) of the TAG directive"),Ee.call(n.tagMap,i)&&R(n,'there is a previously declared suffix for "'+i+'" tag handle'),Yt.test(l)||R(n,"ill-formed tag prefix (second argument) of the TAG directive");try{l=decodeURIComponent(l)}catch{R(n,"tag prefix is malformed: "+l)}n.tagMap[i]=l}};function Be(t,n,o,r){var i,l,a,c;if(n<o){if(c=t.input.slice(n,o),r)for(i=0,l=c.length;i<l;i+=1)a=c.charCodeAt(i),a===9||32<=a&&a<=1114111||R(t,"expected valid JSON character");else xs.test(c)&&R(t,"the stream contains non-printable characters");t.result+=c}}function Qt(t,n,o,r){var i,l,a,c;for(ee.isObject(o)||R(t,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(o),a=0,c=i.length;a<c;a+=1)l=i[a],Ee.call(n,l)||(n[l]=o[l],r[l]=!0)}function Fe(t,n,o,r,i,l,a,c,p){var d,g;if(Array.isArray(i))for(i=Array.prototype.slice.call(i),d=0,g=i.length;d<g;d+=1)Array.isArray(i[d])&&R(t,"nested arrays are not supported inside keys"),typeof i=="object"&&Ht(i[d])==="[object Object]"&&(i[d]="[object Object]");if(typeof i=="object"&&Ht(i)==="[object Object]"&&(i="[object Object]"),i=String(i),n===null&&(n={}),r==="tag:yaml.org,2002:merge")if(Array.isArray(l))for(d=0,g=l.length;d<g;d+=1)Qt(t,n,l[d],o);else Qt(t,n,l,o);else!t.json&&!Ee.call(o,i)&&Ee.call(n,i)&&(t.line=a||t.line,t.lineStart=c||t.lineStart,t.position=p||t.position,R(t,"duplicated mapping key")),i==="__proto__"?Object.defineProperty(n,i,{configurable:!0,enumerable:!0,writable:!0,value:l}):n[i]=l,delete o[i];return n}function lt(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++):R(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function Q(t,n,o){for(var r=0,i=t.input.charCodeAt(t.position);i!==0;){for(;Ce(i);)i===9&&t.firstTabInLine===-1&&(t.firstTabInLine=t.position),i=t.input.charCodeAt(++t.position);if(n&&i===35)do i=t.input.charCodeAt(++t.position);while(i!==10&&i!==13&&i!==0);if(he(i))for(lt(t),i=t.input.charCodeAt(t.position),r++,t.lineIndent=0;i===32;)t.lineIndent++,i=t.input.charCodeAt(++t.position);else break}return o!==-1&&r!==0&&t.lineIndent<o&&Ke(t,"deficient indentation"),r}function Ze(t){var n=t.position,o;return o=t.input.charCodeAt(n),!!((o===45||o===46)&&o===t.input.charCodeAt(n+1)&&o===t.input.charCodeAt(n+2)&&(n+=3,o=t.input.charCodeAt(n),o===0||ie(o)))}function it(t,n){n===1?t.result+=" ":n>1&&(t.result+=ee.repeat(`
|
|
72
|
+
`,n-1))}function Ns(t,n,o){var r,i,l,a,c,p,d,g,s=t.kind,f=t.result,y;if(y=t.input.charCodeAt(t.position),ie(y)||Se(y)||y===35||y===38||y===42||y===33||y===124||y===62||y===39||y===34||y===37||y===64||y===96||(y===63||y===45)&&(i=t.input.charCodeAt(t.position+1),ie(i)||o&&Se(i)))return!1;for(t.kind="scalar",t.result="",l=a=t.position,c=!1;y!==0;){if(y===58){if(i=t.input.charCodeAt(t.position+1),ie(i)||o&&Se(i))break}else if(y===35){if(r=t.input.charCodeAt(t.position-1),ie(r))break}else{if(t.position===t.lineStart&&Ze(t)||o&&Se(y))break;if(he(y))if(p=t.line,d=t.lineStart,g=t.lineIndent,Q(t,!1,-1),t.lineIndent>=n){c=!0,y=t.input.charCodeAt(t.position);continue}else{t.position=a,t.line=p,t.lineStart=d,t.lineIndent=g;break}}c&&(Be(t,l,a,!1),it(t,t.line-p),l=a=t.position,c=!1),Ce(y)||(a=t.position+1),y=t.input.charCodeAt(++t.position)}return Be(t,l,a,!1),t.result?!0:(t.kind=s,t.result=f,!1)}function Cs(t,n){var o,r,i;if(o=t.input.charCodeAt(t.position),o!==39)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(o=t.input.charCodeAt(t.position))!==0;)if(o===39)if(Be(t,r,t.position,!0),o=t.input.charCodeAt(++t.position),o===39)r=t.position,t.position++,i=t.position;else return!0;else he(o)?(Be(t,r,i,!0),it(t,Q(t,!1,n)),r=i=t.position):t.position===t.lineStart&&Ze(t)?R(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);R(t,"unexpected end of the stream within a single quoted scalar")}function Vs(t,n){var o,r,i,l,a,c;if(c=t.input.charCodeAt(t.position),c!==34)return!1;for(t.kind="scalar",t.result="",t.position++,o=r=t.position;(c=t.input.charCodeAt(t.position))!==0;){if(c===34)return Be(t,o,t.position,!0),t.position++,!0;if(c===92){if(Be(t,o,t.position,!0),c=t.input.charCodeAt(++t.position),he(c))Q(t,!1,n);else if(c<256&&Kt[c])t.result+=Zt[c],t.position++;else if((a=ws(c))>0){for(i=a,l=0;i>0;i--)c=t.input.charCodeAt(++t.position),(a=_s(c))>=0?l=(l<<4)+a:R(t,"expected hexadecimal character");t.result+=Bs(l),t.position++}else R(t,"unknown escape sequence");o=r=t.position}else he(c)?(Be(t,o,r,!0),it(t,Q(t,!1,n)),o=r=t.position):t.position===t.lineStart&&Ze(t)?R(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}R(t,"unexpected end of the stream within a double quoted scalar")}function $s(t,n){var o=!0,r,i,l,a=t.tag,c,p=t.anchor,d,g,s,f,y,u=Object.create(null),m,x,N,k;if(k=t.input.charCodeAt(t.position),k===91)g=93,y=!1,c=[];else if(k===123)g=125,y=!0,c={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=c),k=t.input.charCodeAt(++t.position);k!==0;){if(Q(t,!0,n),k=t.input.charCodeAt(t.position),k===g)return t.position++,t.tag=a,t.anchor=p,t.kind=y?"mapping":"sequence",t.result=c,!0;o?k===44&&R(t,"expected the node content, but found ','"):R(t,"missed comma between flow collection entries"),x=m=N=null,s=f=!1,k===63&&(d=t.input.charCodeAt(t.position+1),ie(d)&&(s=f=!0,t.position++,Q(t,!0,n))),r=t.line,i=t.lineStart,l=t.position,Me(t,n,He,!1,!0),x=t.tag,m=t.result,Q(t,!0,n),k=t.input.charCodeAt(t.position),(f||t.line===r)&&k===58&&(s=!0,k=t.input.charCodeAt(++t.position),Q(t,!0,n),Me(t,n,He,!1,!0),N=t.result),y?Fe(t,c,u,x,m,N,r,i,l):s?c.push(Fe(t,null,u,x,m,N,r,i,l)):c.push(m),Q(t,!0,n),k=t.input.charCodeAt(t.position),k===44?(o=!0,k=t.input.charCodeAt(++t.position)):o=!1}R(t,"unexpected end of the stream within a flow collection")}function As(t,n){var o,r,i=rt,l=!1,a=!1,c=n,p=0,d=!1,g,s;if(s=t.input.charCodeAt(t.position),s===124)r=!1;else if(s===62)r=!0;else return!1;for(t.kind="scalar",t.result="";s!==0;)if(s=t.input.charCodeAt(++t.position),s===43||s===45)rt===i?i=s===43?Ut:ys:R(t,"repeat of a chomping mode identifier");else if((g=Es(s))>=0)g===0?R(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):a?R(t,"repeat of an indentation width identifier"):(c=n+g-1,a=!0);else break;if(Ce(s)){do s=t.input.charCodeAt(++t.position);while(Ce(s));if(s===35)do s=t.input.charCodeAt(++t.position);while(!he(s)&&s!==0)}for(;s!==0;){for(lt(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!a||t.lineIndent<c)&&s===32;)t.lineIndent++,s=t.input.charCodeAt(++t.position);if(!a&&t.lineIndent>c&&(c=t.lineIndent),he(s)){p++;continue}if(t.lineIndent<c){i===Ut?t.result+=ee.repeat(`
|
|
73
73
|
`,l?1+p:p):i===rt&&l&&(t.result+=`
|
|
74
74
|
`);break}for(r?Ce(s)?(d=!0,t.result+=ee.repeat(`
|
|
75
75
|
`,l?1+p:p)):d?(d=!1,t.result+=ee.repeat(`
|
|
76
76
|
`,p+1)):p===0?l&&(t.result+=" "):t.result+=ee.repeat(`
|
|
77
77
|
`,p):t.result+=ee.repeat(`
|
|
78
|
-
`,l?1+p:p),l=!0,a=!0,p=0,o=t.position;!he(s)&&s!==0;)s=t.input.charCodeAt(++t.position);Be(t,o,t.position,!1)}return!0}function Jt(t,n){var o,r=t.tag,i=t.anchor,l=[],a,c=!1,p;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),p=t.input.charCodeAt(t.position);p!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,R(t,"tab characters must not be used in indentation")),!(p!==45||(a=t.input.charCodeAt(t.position+1),!ie(a))));){if(c=!0,t.position++,Q(t,!0,-1)&&t.lineIndent<=n){l.push(null),p=t.input.charCodeAt(t.position);continue}if(o=t.line,Me(t,n,Rt,!1,!0),l.push(t.result),Q(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&p!==0)R(t,"bad indentation of a sequence entry");else if(t.lineIndent<n)break}return c?(t.tag=r,t.anchor=i,t.kind="sequence",t.result=l,!0):!1}function Ss(t,n,o){var r,i,l,a,c,p,d=t.tag,g=t.anchor,s={},f=Object.create(null),y=null,u=null,m=null,x=!1,
|
|
79
|
-
`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new
|
|
78
|
+
`,l?1+p:p),l=!0,a=!0,p=0,o=t.position;!he(s)&&s!==0;)s=t.input.charCodeAt(++t.position);Be(t,o,t.position,!1)}return!0}function Jt(t,n){var o,r=t.tag,i=t.anchor,l=[],a,c=!1,p;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),p=t.input.charCodeAt(t.position);p!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,R(t,"tab characters must not be used in indentation")),!(p!==45||(a=t.input.charCodeAt(t.position+1),!ie(a))));){if(c=!0,t.position++,Q(t,!0,-1)&&t.lineIndent<=n){l.push(null),p=t.input.charCodeAt(t.position);continue}if(o=t.line,Me(t,n,Rt,!1,!0),l.push(t.result),Q(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===o||t.lineIndent>n)&&p!==0)R(t,"bad indentation of a sequence entry");else if(t.lineIndent<n)break}return c?(t.tag=r,t.anchor=i,t.kind="sequence",t.result=l,!0):!1}function Ss(t,n,o){var r,i,l,a,c,p,d=t.tag,g=t.anchor,s={},f=Object.create(null),y=null,u=null,m=null,x=!1,N=!1,k;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),k=t.input.charCodeAt(t.position);k!==0;){if(!x&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,R(t,"tab characters must not be used in indentation")),r=t.input.charCodeAt(t.position+1),l=t.line,(k===63||k===58)&&ie(r))k===63?(x&&(Fe(t,s,f,y,u,null,a,c,p),y=u=m=null),N=!0,x=!0,i=!0):x?(x=!1,i=!0):R(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,c=t.lineStart,p=t.position,!Me(t,o,Pt,!1,!0))break;if(t.line===l){for(k=t.input.charCodeAt(t.position);Ce(k);)k=t.input.charCodeAt(++t.position);if(k===58)k=t.input.charCodeAt(++t.position),ie(k)||R(t,"a whitespace character is expected after the key-value separator within a block mapping"),x&&(Fe(t,s,f,y,u,null,a,c,p),y=u=m=null),N=!0,x=!1,i=!1,y=t.tag,u=t.result;else if(N)R(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=d,t.anchor=g,!0}else if(N)R(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=d,t.anchor=g,!0}if((t.line===l||t.lineIndent>n)&&(x&&(a=t.line,c=t.lineStart,p=t.position),Me(t,n,We,!0,i)&&(x?u=t.result:m=t.result),x||(Fe(t,s,f,y,u,m,a,c,p),y=u=m=null),Q(t,!0,-1),k=t.input.charCodeAt(t.position)),(t.line===l||t.lineIndent>n)&&k!==0)R(t,"bad indentation of a mapping entry");else if(t.lineIndent<n)break}return x&&Fe(t,s,f,y,u,null,a,c,p),N&&(t.tag=d,t.anchor=g,t.kind="mapping",t.result=s),N}function Ls(t){var n,o=!1,r=!1,i,l,a;if(a=t.input.charCodeAt(t.position),a!==33)return!1;if(t.tag!==null&&R(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,i="!!",a=t.input.charCodeAt(++t.position)):i="!",n=t.position,o){do a=t.input.charCodeAt(++t.position);while(a!==0&&a!==62);t.position<t.length?(l=t.input.slice(n,t.position),a=t.input.charCodeAt(++t.position)):R(t,"unexpected end of the stream within a verbatim tag")}else{for(;a!==0&&!ie(a);)a===33&&(r?R(t,"tag suffix cannot contain exclamation marks"):(i=t.input.slice(n-1,t.position+1),qt.test(i)||R(t,"named tag handle cannot contain such characters"),r=!0,n=t.position+1)),a=t.input.charCodeAt(++t.position);l=t.input.slice(n,t.position),bs.test(l)&&R(t,"tag suffix cannot contain flow indicator characters")}l&&!Yt.test(l)&&R(t,"tag name cannot contain such characters: "+l);try{l=decodeURIComponent(l)}catch{R(t,"tag name is malformed: "+l)}return o?t.tag=l:Ee.call(t.tagMap,i)?t.tag=t.tagMap[i]+l:i==="!"?t.tag="!"+l:i==="!!"?t.tag="tag:yaml.org,2002:"+l:R(t,'undeclared tag handle "'+i+'"'),!0}function Fs(t){var n,o;if(o=t.input.charCodeAt(t.position),o!==38)return!1;for(t.anchor!==null&&R(t,"duplication of an anchor property"),o=t.input.charCodeAt(++t.position),n=t.position;o!==0&&!ie(o)&&!Se(o);)o=t.input.charCodeAt(++t.position);return t.position===n&&R(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(n,t.position),!0}function Ms(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&&!ie(r)&&!Se(r);)r=t.input.charCodeAt(++t.position);return t.position===n&&R(t,"name of an alias node must contain at least one character"),o=t.input.slice(n,t.position),Ee.call(t.anchorMap,o)||R(t,'unidentified alias "'+o+'"'),t.result=t.anchorMap[o],Q(t,!0,-1),!0}function Me(t,n,o,r,i){var l,a,c,p=1,d=!1,g=!1,s,f,y,u,m,x;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,l=a=c=We===o||Rt===o,r&&Q(t,!0,-1)&&(d=!0,t.lineIndent>n?p=1:t.lineIndent===n?p=0:t.lineIndent<n&&(p=-1)),p===1)for(;Ls(t)||Fs(t);)Q(t,!0,-1)?(d=!0,c=l,t.lineIndent>n?p=1:t.lineIndent===n?p=0:t.lineIndent<n&&(p=-1)):c=!1;if(c&&(c=d||i),(p===1||We===o)&&(He===o||Pt===o?m=n:m=n+1,x=t.position-t.lineStart,p===1?c&&(Jt(t,x)||Ss(t,x,m))||$s(t,m)?g=!0:(a&&As(t,m)||Cs(t,m)||Vs(t,m)?g=!0:Ms(t)?(g=!0,(t.tag!==null||t.anchor!==null)&&R(t,"alias node should not have any properties")):Ns(t,m,He===o)&&(g=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(g=c&&Jt(t,x))),t.tag===null)t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);else if(t.tag==="?"){for(t.result!==null&&t.kind!=="scalar"&&R(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),s=0,f=t.implicitTypes.length;s<f;s+=1)if(u=t.implicitTypes[s],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(Ee.call(t.typeMap[t.kind||"fallback"],t.tag))u=t.typeMap[t.kind||"fallback"][t.tag];else for(u=null,y=t.typeMap.multi[t.kind||"fallback"],s=0,f=y.length;s<f;s+=1)if(t.tag.slice(0,y[s].tag.length)===y[s].tag){u=y[s];break}u||R(t,"unknown tag !<"+t.tag+">"),t.result!==null&&u.kind!==t.kind&&R(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)):R(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||g}function Ts(t){var n=t.position,o,r,i,l=!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&&(Q(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||a!==37));){for(l=!0,a=t.input.charCodeAt(++t.position),o=t.position;a!==0&&!ie(a);)a=t.input.charCodeAt(++t.position);for(r=t.input.slice(o,t.position),i=[],r.length<1&&R(t,"directive name must not be less than one character in length");a!==0;){for(;Ce(a);)a=t.input.charCodeAt(++t.position);if(a===35){do a=t.input.charCodeAt(++t.position);while(a!==0&&!he(a));break}if(he(a))break;for(o=t.position;a!==0&&!ie(a);)a=t.input.charCodeAt(++t.position);i.push(t.input.slice(o,t.position))}a!==0&<(t),Ee.call(Xt,r)?Xt[r](t,r,i):Ke(t,'unknown document directive "'+r+'"')}if(Q(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,Q(t,!0,-1)):l&&R(t,"directives end mark is expected"),Me(t,t.lineIndent-1,We,!1,!0),Q(t,!0,-1),t.checkLineBreaks&&ks.test(t.input.slice(n,t.position))&&Ke(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Ze(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Q(t,!0,-1));return}if(t.position<t.length-1)R(t,"end of the stream or a document separator is expected");else return}function Is(t,n){t=String(t),n=n||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`
|
|
79
|
+
`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var o=new vs(t,n),r=t.indexOf("\0");for(r!==-1&&(o.position=r,R(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;)Ts(o);return o.documents}function Ds(t,n){var o=Is(t,n);if(o.length!==0){if(o.length===1)return o[0];throw new le("expected a single document in the stream, but found more")}}var js=Ds,Os={load:js},en=Object.prototype.toString,tn=Object.prototype.hasOwnProperty,at=65279,zs=9,je=10,Ps=13,Rs=32,Us=33,qs=34,st=35,Ys=37,Hs=38,Ws=39,Ks=42,nn=44,Zs=45,Ge=58,Gs=61,Xs=62,Qs=63,Js=64,on=91,rn=93,ec=96,ln=123,tc=124,an=125,re={};re[0]="\\0",re[7]="\\a",re[8]="\\b",re[9]="\\t",re[10]="\\n",re[11]="\\v",re[12]="\\f",re[13]="\\r",re[27]="\\e",re[34]='\\"',re[92]="\\\\",re[133]="\\N",re[160]="\\_",re[8232]="\\L",re[8233]="\\P";var nc=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],oc=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function rc(t,n){var o,r,i,l,a,c,p;if(n===null)return{};for(o={},r=Object.keys(n),i=0,l=r.length;i<l;i+=1)a=r[i],c=String(n[a]),a.slice(0,2)==="!!"&&(a="tag:yaml.org,2002:"+a.slice(2)),p=t.compiledTypeMap.fallback[a],p&&tn.call(p.styleAliases,c)&&(c=p.styleAliases[c]),o[a]=c;return o}function lc(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 le("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+o+ee.repeat("0",r-n.length)+n}var ic=1,Oe=2;function ac(t){this.schema=t.schema||zt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=ee.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=rc(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==='"'?Oe:ic,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 sn(t,n){for(var o=ee.repeat(" ",n),r=0,i=-1,l="",a,c=t.length;r<c;)i=t.indexOf(`
|
|
80
80
|
`,r),i===-1?(a=t.slice(r),r=c):(a=t.slice(r,i+1),r=i+1),a.length&&a!==`
|
|
81
81
|
`&&(l+=o),l+=a;return l}function ct(t,n){return`
|
|
82
82
|
`+ee.repeat(" ",t.indent*n)}function sc(t,n){var o,r,i;for(o=0,r=t.implicitTypes.length;o<r;o+=1)if(i=t.implicitTypes[o],i.resolve(n))return!0;return!1}function Xe(t){return t===Rs||t===zs}function ze(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==at||65536<=t&&t<=1114111}function cn(t){return ze(t)&&t!==at&&t!==Ps&&t!==je}function dn(t,n,o){var r=cn(t),i=r&&!Xe(t);return(o?r:r&&t!==nn&&t!==on&&t!==rn&&t!==ln&&t!==an)&&t!==st&&!(n===Ge&&!i)||cn(n)&&!Xe(n)&&t===st||n===Ge&&i}function cc(t){return ze(t)&&t!==at&&!Xe(t)&&t!==Zs&&t!==Qs&&t!==Ge&&t!==nn&&t!==on&&t!==rn&&t!==ln&&t!==an&&t!==st&&t!==Hs&&t!==Ks&&t!==Us&&t!==tc&&t!==Gs&&t!==Xs&&t!==Ws&&t!==qs&&t!==Ys&&t!==Js&&t!==ec}function dc(t){return!Xe(t)&&t!==Ge}function Pe(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 un(t){var n=/^\n* /;return n.test(t)}var pn=1,dt=2,mn=3,fn=4,Te=5;function uc(t,n,o,r,i,l,a,c){var p,d=0,g=null,s=!1,f=!1,y=r!==-1,u=-1,m=cc(Pe(t,0))&&dc(Pe(t,t.length-1));if(n||a)for(p=0;p<t.length;d>=65536?p+=2:p++){if(d=Pe(t,p),!ze(d))return Te;m=m&&dn(d,g,c),g=d}else{for(p=0;p<t.length;d>=65536?p+=2:p++){if(d=Pe(t,p),d===je)s=!0,y&&(f=f||p-u-1>r&&t[u+1]!==" ",u=p);else if(!ze(d))return Te;m=m&&dn(d,g,c),g=d}f=f||y&&p-u-1>r&&t[u+1]!==" "}return!s&&!f?m&&!a&&!i(t)?pn:l===Oe?Te:dt:o>9&&un(t)?Te:a?l===Oe?Te:dt:f?fn:mn}function pc(t,n,o,r,i){t.dump=(function(){if(n.length===0)return t.quotingType===Oe?'""':"''";if(!t.noCompatMode&&(nc.indexOf(n)!==-1||oc.test(n)))return t.quotingType===Oe?'"'+n+'"':"'"+n+"'";var l=t.indent*Math.max(1,o),a=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-l),c=r||t.flowLevel>-1&&o>=t.flowLevel;function p(d){return sc(t,d)}switch(uc(n,c,t.indent,a,p,t.quotingType,t.forceQuotes&&!r,i)){case pn:return n;case dt:return"'"+n.replace(/'/g,"''")+"'";case mn:return"|"+gn(n,t.indent)+hn(sn(n,l));case fn:return">"+gn(n,t.indent)+hn(sn(mc(n,a),l));case Te:return'"'+fc(n)+'"';default:throw new le("impossible error: invalid scalar style")}})()}function gn(t,n){var o=un(t)?String(n):"",r=t[t.length-1]===`
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
`+t.slice(i,l),i=l+1),a=c;return p+=`
|
|
92
92
|
`,t.length-i>n&&a>i?p+=t.slice(i,a)+`
|
|
93
93
|
`+t.slice(a+1):p+=t.slice(i),p.slice(1)}function fc(t){for(var n="",o=0,r,i=0;i<t.length;o>=65536?i+=2:i++)o=Pe(t,i),r=re[o],!r&&ze(o)?(n+=t[i],o>=65536&&(n+=t[i+1])):n+=r||lc(o);return n}function gc(t,n,o){var r="",i=t.tag,l,a,c;for(l=0,a=o.length;l<a;l+=1)c=o[l],t.replacer&&(c=t.replacer.call(o,String(l),c)),(ke(t,n,c,!1,!1)||typeof c>"u"&&ke(t,n,null,!1,!1))&&(r!==""&&(r+=","+(t.condenseFlow?"":" ")),r+=t.dump);t.tag=i,t.dump="["+r+"]"}function xn(t,n,o,r){var i="",l=t.tag,a,c,p;for(a=0,c=o.length;a<c;a+=1)p=o[a],t.replacer&&(p=t.replacer.call(o,String(a),p)),(ke(t,n+1,p,!0,!0,!1,!0)||typeof p>"u"&&ke(t,n+1,null,!0,!0,!1,!0))&&((!r||i!=="")&&(i+=ct(t,n)),t.dump&&je===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=l,t.dump=i||"[]"}function hc(t,n,o){var r="",i=t.tag,l=Object.keys(o),a,c,p,d,g;for(a=0,c=l.length;a<c;a+=1)g="",r!==""&&(g+=", "),t.condenseFlow&&(g+='"'),p=l[a],d=o[p],t.replacer&&(d=t.replacer.call(o,p,d)),ke(t,n,p,!1,!1)&&(t.dump.length>1024&&(g+="? "),g+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),ke(t,n,d,!1,!1)&&(g+=t.dump,r+=g));t.tag=i,t.dump="{"+r+"}"}function yc(t,n,o,r){var i="",l=t.tag,a=Object.keys(o),c,p,d,g,s,f;if(t.sortKeys===!0)a.sort();else if(typeof t.sortKeys=="function")a.sort(t.sortKeys);else if(t.sortKeys)throw new le("sortKeys must be a boolean or a function");for(c=0,p=a.length;c<p;c+=1)f="",(!r||i!=="")&&(f+=ct(t,n)),d=a[c],g=o[d],t.replacer&&(g=t.replacer.call(o,d,g)),ke(t,n+1,d,!0,!0,!0)&&(s=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,s&&(t.dump&&je===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,s&&(f+=ct(t,n)),ke(t,n+1,g,!0,s)&&(t.dump&&je===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,i+=f));t.tag=l,t.dump=i||"{}"}function kn(t,n,o){var r,i,l,a,c,p;for(i=o?t.explicitTypes:t.implicitTypes,l=0,a=i.length;l<a;l+=1)if(c=i[l],(c.instanceOf||c.predicate)&&(!c.instanceOf||typeof n=="object"&&n instanceof c.instanceOf)&&(!c.predicate||c.predicate(n))){if(o?c.multi&&c.representName?t.tag=c.representName(n):t.tag=c.tag:t.tag="?",c.represent){if(p=t.styleMap[c.tag]||c.defaultStyle,en.call(c.represent)==="[object Function]")r=c.represent(n,p);else if(tn.call(c.represent,p))r=c.represent[p](n,p);else throw new le("!<"+c.tag+'> tag resolver accepts not "'+p+'" style');t.dump=r}return!0}return!1}function ke(t,n,o,r,i,l,a){t.tag=null,t.dump=o,kn(t,o,!1)||kn(t,o,!0);var c=en.call(t.dump),p=r,d;r&&(r=t.flowLevel<0||t.flowLevel>n);var g=c==="[object Object]"||c==="[object Array]",s,f;if(g&&(s=t.duplicates.indexOf(o),f=s!==-1),(t.tag!==null&&t.tag!=="?"||f||t.indent!==2&&n>0)&&(i=!1),f&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(g&&f&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),c==="[object Object]")r&&Object.keys(t.dump).length!==0?(yc(t,n,t.dump,i),f&&(t.dump="&ref_"+s+t.dump)):(hc(t,n,t.dump),f&&(t.dump="&ref_"+s+" "+t.dump));else if(c==="[object Array]")r&&t.dump.length!==0?(t.noArrayIndent&&!a&&n>0?xn(t,n-1,t.dump,i):xn(t,n,t.dump,i),f&&(t.dump="&ref_"+s+t.dump)):(gc(t,n,t.dump),f&&(t.dump="&ref_"+s+" "+t.dump));else if(c==="[object String]")t.tag!=="?"&&pc(t,t.dump,n,l,p);else{if(c==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new le("unacceptable kind of an object to dump "+c)}t.tag!==null&&t.tag!=="?"&&(d=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",t.dump=d+" "+t.dump)}return!0}function xc(t,n){var o=[],r=[],i,l;for(ut(t,o,r),i=0,l=r.length;i<l;i+=1)n.duplicates.push(o[r[i]]);n.usedDuplicates=new Array(l)}function ut(t,n,o){var r,i,l;if(t!==null&&typeof t=="object")if(i=n.indexOf(t),i!==-1)o.indexOf(i)===-1&&o.push(i);else if(n.push(t),Array.isArray(t))for(i=0,l=t.length;i<l;i+=1)ut(t[i],n,o);else for(r=Object.keys(t),i=0,l=r.length;i<l;i+=1)ut(t[r[i]],n,o)}function kc(t,n){n=n||{};var o=new ac(n);o.noRefs||xc(t,o);var r=t;return o.replacer&&(r=o.replacer.call({"":r},"",r)),ke(o,0,r,!0,!0)?o.dump+`
|
|
94
|
-
`:""}var bc=kc,_c={dump:bc},wc=Os.load,bn=_c.dump;const Ec={class:"flex flex-col flex-1 overflow-hidden"},Bc={class:"flex justify-end gap-2"},Nc={class:"w-20 gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},vc=["href"],Cc={class:"flex flex-col flex-1 overflow-hidden"},Vc={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},$c={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Ac=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:n}){const o=t,r=n,i=e.ref("");e.watch(()=>o.styleYaml,p=>{try{const d=p?bn(p):"";!i.value&&d!==i.value&&(i.value=d)}catch{i.value=""}},{immediate:!0,deep:!0}),e.watch(i,async p=>{var d,g;try{const s=p?wc(p):null;if((d=s==null?void 0:s.colorAttr)!=null&&d.length&&((g=o.styleYaml)==null?void 0:g.colorAttr)!==s.colorAttr){const f=await l(s.colorAttr);s.colors=f.reduce((u,m,x)=>({...u,[m.id.toString()]:a[x]}),{});const y=bn(s);y!==i.value&&(i.value=y)}JSON.stringify(s)!==JSON.stringify(o.styleYaml)&&r("update:styleYaml",s)}catch{}});async function l(p){return(await fetch(`/api/gis-service/${o.token}/${p}`).then(g=>g.json())).rows}const a=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],c=async()=>{try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:i.value})}),r("update"),ne.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(p){ne.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(p)}};return(p,d)=>(e.openBlock(),e.createElementBlock("div",Ec,[e.createElementVNode("div",Bc,[e.createElementVNode("button",Nc,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+o.token+"/col"},"Attr",8,vc)]),e.createElementVNode("button",{onClick:c,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"},[...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-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",Cc,[e.createElementVNode("div",Vc,[d[2]||(d[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",$c,[e.createVNode(Mt,{modelValue:i.value,"onUpdate:modelValue":d[0]||(d[0]=g=>i.value=g),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}}),_n=Symbol("MapContext");function Sc(t){const n=e.shallowRef(null),o=e.ref(!1);let r=!1;const i=[],l=()=>{r=!0,i.length&&i.forEach(s=>s())},a=()=>{const s=t.container;return typeof s=="string"?document.getElementById(s):(s==null?void 0:s.value)!==void 0?s.value:s},c=()=>r?Promise.resolve():new Promise(s=>i.push(s)),p=async()=>{var f,y,u,m;if(typeof window>"u"||n.value)return;const s=a();if(!s)throw new Error("Map container not found");n.value=new maplibregl.Map({...t.mapOptions||{},attributionControl:!1,center:[30,50],zoom:7,container:s}),(f=t.controls)!=null&&f.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(y=t.controls)!=null&&y.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(u=t.controls)!=null&&u.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(m=t.controls)!=null&&m.geolocate&&n.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),n.value.once("load",()=>{o.value=!0,l()})},d=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(p),e.onUnmounted(d);const g={map:n,ready:c,flyTo:s=>{var f;return(f=n.value)==null?void 0:f.flyTo(s)},fitBounds:(s,f)=>{var y;return(y=n.value)==null?void 0:y.fitBounds(s,f)},setCenter:s=>{var f;return(f=n.value)==null?void 0:f.setCenter(s)},setZoom:s=>{var f;return(f=n.value)==null?void 0:f.setZoom(s)},addControl:(s,f)=>{var y;return(y=n.value)==null?void 0:y.addControl(s,f)},removeControl:s=>{var f;return(f=n.value)==null?void 0:f.removeControl(s)},on:(s,f,y)=>{var u,m;return typeof f=="string"?((u=n.value)==null||u.on(s,f,y),()=>{var x;return(x=n.value)==null?void 0:x.off(s,f,y)}):((m=n.value)==null||m.on(s,f),()=>{var x;return(x=n.value)==null?void 0:x.off(s,f)})},off:(s,f,y)=>{var u,m;typeof f=="string"?(u=n.value)==null||u.off(s,f,y):(m=n.value)==null||m.off(s,f)},project:s=>{var f;return(f=n.value)==null?void 0:f.project(s)},unproject:s=>{var f;return(f=n.value)==null?void 0:f.unproject(s)}};return e.provide(_n,g),g}function se(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(_n);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const pt=new Map,mt={};function ft(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,"#94a3b8"]}return null}function Lc(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,[i,l],a)=>r.concat([i,n[a]]),[]),t.icon]}function wn(t,n){const o=ft(t);if(!(t.icon&&!t.iconZoom))return{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}}}function Fc(t){const n=ft(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 Mc(t){return{type:"line",paint:{"line-color":ft(t)||t.color,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function Tc(t){const n=Lc(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 En(t){if(!t)return[];const n=[];return t.icon&&n.push(Tc(t)),t.pointZoom&&n.push(wn(t,t.pointZoom)),t.type==="polygon"?n.push(Fc(t)):t.type==="line"?n.push(Mc(t)):n.push(wn(t)),n.filter(Boolean)}function Ic(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function Bn(t,n,o){const r=[n],i=n.split("+")[0];Object.values(o||{}).forEach(l=>{r.push(`${i}+${l.replace("#","")}.png`)});for(const l of r){if(t.getImage(l))continue;const a=await t.loadImage(`/api/gis-icon/${l}`);t.addImage(l,a.data)}}function G(t,n,o){var N,w;if(!t)return mt;if(!n)return mt[t];const{map:r,ready:i=()=>Promise.resolve()}=se(o),l=t||((N=n.layer)==null?void 0:N.id),a=n.sourceId??t,c={...n};c.point&&(c.source=Ic(c.point)),!c.layer&&((w=c.source)==null?void 0:w.type)==="raster"&&(c.layer={id:a,type:"raster",source:a}),c.layer&&!c.layer.source&&Object.assign(c.layer,{source:a});let p=!1,d=!1;const g=()=>{var S,T,I,E;if(!(d||!r.value)){if(c.source&&!r.value.getSource(a)&&r.value.addSource(a,c.source),!r.value.getLayer(l)){const b=c.beforeId===0?(T=(S=r.value.getStyle().layers)==null?void 0:S[0])==null?void 0:T.id:c.beforeId;(E=(I=c.layer)==null?void 0:I.style)!=null&&E.icon&&Bn(r.value,c.layer.style.icon,c.layer.style.colors);const C=En(c.style||c.layer.style);if(!C.length){r.value.addLayer(c.layer,b);return}C.forEach((L,j)=>{var O;const D={...L,id:`${l}${j||""}`,source:a};((O=c.source)==null?void 0:O.type)==="vector"&&(D["source-layer"]=a),r.value.addLayer(D,b)})}p=!0}};i().then(g);const s=(S,T)=>r.value?(r.value.on(S,l,T),()=>{var I;return(I=r.value)==null?void 0:I.off(S,l,T)}):()=>{},f=S=>{r.value&&r.value.getStyle().layers.filter(T=>T.source===l).forEach(T=>{r.value.setLayoutProperty(T.id,"visibility",S?"visible":"none")})},y=(S=!0)=>{r.value&&(r.value.getStyle().layers.filter(T=>T.source===l).forEach(T=>{r.value.removeLayer(T.id)}),d=!0,c.source&&S&&r.value.getSource(a)&&r.value.removeSource(a))},$={ids:{layerId:l,sourceId:a},isMounted:()=>{var S;return p&&!!((S=r.value)!=null&&S.getLayer(l))},setVisible:f,updatePaint:S=>{r.value&&Object.entries(S).forEach(([T,I])=>{r.value.setPaintProperty(l,T,I)})},updateLayout:S=>{r.value&&Object.entries(S).forEach(([T,I])=>{r.value.setLayoutProperty(l,T,I)})},updateFilter:S=>{r.value&&r.value.setFilter(l,S)},setData:S=>{if(!r.value)return;const T=r.value.getSource(a);T&&"setData"in T&&T.setData(S)},setTiles:S=>{if(!r.value)return;const T=r.value.getSource(a);T&&"setTiles"in T&&T.setTiles(S)},setStyle:async S=>{if(!r.value)return;S.icon&&Bn(r.value,S.icon,S.colors);const T=En(S);y(!1),T.forEach((I,E)=>{const b={...I,id:`${l}${E}`,source:c.layer.source,"source-layer":c.layer.source};r.value.addLayer(b)})},setFilter:S=>{var I,E;if(!r.value)return;const T=r.value.getSource(a);if(T&&"setTiles"in T&&((E=(I=c.source)==null?void 0:I.tiles)!=null&&E[0])){const b=c.source.tiles[0];T.setTiles([`${b}${b.includes("?")?"&":"?"}filter=${S}`])}},setFeatureState:(S,T)=>{r.value&&r.value.setFeatureState({source:a,...S},T)},removeFeatureState:(S,T)=>{r.value&&r.value.removeFeatureState({source:a,...S},T?{key:T}:void 0)},remove:y,card:c.card,popup:c.popup,opts:c,getSource:()=>{var S;return(S=r.value)==null?void 0:S.getSource(a)},getLayer:()=>{var S;return(S=r.value)==null?void 0:S.getLayer(l)},on:s};pt.set(l,$);const B=()=>{pt.get(l)===$&&pt.delete(l)},F=$.remove;return $.remove=()=>{B(),F()},e.onBeforeUnmount($.remove),mt[t]=$,$}const Dc={class:"flex flex-col flex-1 min-h-0"},jc={class:"flex flex-col flex-1 min-h-0"},Oc=e.defineComponent({__name:"vs-tab-popup",props:{token:{},fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>i.value=u||[],{immediate:!0}),e.watch(i,u=>{const m=G(o.token);m&&(m.popup=u),r("update:columns",u)});const l=e.ref("list"),a=e.ref(!1),c=e.ref([]),p=[{key:"name",label:"Name",type:"main"},{key:"meta",label:"Meta"}],d={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 g(){c.value=i.value.map(u=>u.name||u.id),a.value=!0}function s(){var v;const u=[...i.value],m=((v=o.fields)==null?void 0:v.filter(k=>c.value.includes(k.name)))||[],x=Ae(u,m,{selectedKeys:c.value,resolveKey:k=>we(k)});i.value=x,a.value=!1,c.value=[]}function f(){a.value=!1,c.value=[]}function y(){let u=[];l.value==="all"?u=o.fields||[]:l.value==="none"?u=[]:u=i.value,u.filter(m=>!m.label).forEach(m=>m.label=m.ua),r("save",u)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",Dc,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:g,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:y,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"}," Зберегти popup ")]),e.createElementVNode("div",jc,[l.value==="list"?(e.openBlock(),e.createBlock(ve,{key:0,modelValue:i.value,"onUpdate:modelValue":m[0]||(m[0]=x=>i.value=x),"columns-scheme":p,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":m[1]||(m[1]=x=>a.value=x),selection:c.value,"onUpdate:selection":m[2]||(m[2]=x=>c.value=x),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:s,onCancel:f},null,8,["visible","selection","fields"])]))}}),zc={class:"flex flex-col flex-1 min-h-0"},Pc={class:"flex justify-between mb-3 gap-2"},Rc={class:"p-4 space-y-4 text-sm"},Uc={class:"space-y-1"},qc={class:"space-y-1"},Yc={class:"flex items-center gap-3"},Hc={class:"flex justify-end gap-2 p-4 border-t"},Wc=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>{i.value=u||[]}),e.watch(i,u=>{r("update:columns",u)});const l=e.ref(!1),a=e.ref({name:"",color:"#2E86DE"}),c=e.defineAsyncComponent(()=>import("@opengis/core").then(u=>u.VsModal)),p=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],d={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function g(u){u&&s(),l.value=u}function s(){a.value={name:"",color:"#2E86DE"}}function f(){var v,k;const u=(v=a.value.name)==null?void 0:v.trim();if(!u){ne.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const m=((k=a.value.color)==null?void 0:k.trim())||"#2E86DE";if(i.value.some(_=>we(_)===we({name:u}))){ne.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}i.value=[...i.value,{name:u,color:m}],s(),l.value=!1}function y(){r("save",i.value)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",zc,[e.createElementVNode("div",Pc,[e.createElementVNode("button",{onClick:m[0]||(m[0]=x=>l.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:y,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(ve,{modelValue:i.value,"onUpdate:modelValue":m[1]||(m[1]=x=>i.value=x),"columns-scheme":p,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(c),{visible:l.value,title:"Новий елемент легенди","onUpdate:visible":g},{footer:e.withCtx(()=>[e.createElementVNode("div",Hc,[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:m[5]||(m[5]=x=>g(!1))}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:f}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",Rc,[e.createElementVNode("div",Uc,[m[6]||(m[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[2]||(m[2]=x=>a.value.name=x),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",qc,[m[7]||(m[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",Yc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[3]||(m[3]=x=>a.value.color=x),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":m[4]||(m[4]=x=>a.value.color=x),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"])]))}}),Kc={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},Zc=["onClick"],Gc=["aria-checked","value"],Xc={key:0},Qc=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{},showHtml:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,r=n,i=a=>r("update:modelValue",a),l=o.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(a,c)=>(e.openBlock(),e.createElementBlock("div",Kc,[c[1]||(c[1]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-600"},"Режим відображення",-1)),e.createElementVNode("div",{role:"radiogroup",class:e.normalizeClass(["grid gap-2",`grid-cols-${e.unref(l).length}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),p=>(e.openBlock(),e.createElementBlock("div",{key:p.value,onClick:d=>i(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",Xc,[...c[0]||(c[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-circle h-2.5 w-2.5 fill-current text-current"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"})],-1)])])):e.createCommentVNode("",!0)],8,Gc),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,Zc))),128))],2)]))}}),Jc={class:"flex flex-col flex-1 min-h-0"},ed={class:"flex flex-col flex-1 min-h-0"},td=e.defineComponent({__name:"vs-tab-card",props:{fields:{},columns:{},viewMode:{},html:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(o.columns||[]);e.watch(()=>o.columns,x=>i.value=x||[],{immediate:!0}),e.watch(i,x=>r("update:columns",x));const l=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,x=>{x&&x!==l.value&&(l.value=x)});const a=e.ref(o.html??"");e.watch(()=>o.html,x=>{typeof x=="string"&&x!==a.value&&(a.value=x)},{immediate:!0});const c=e.ref(!1),p=e.ref([]),d=[{key:"name",label:"Name",type:"main"},{key:"format",label:"Format"}],g={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"}]},data:{type:"text",label:"Data"}};function s(){p.value=l.value==="html"?[]:i.value.map(x=>x.name||x.id),c.value=!0}function f(){var _;const x=[...i.value],v=((_=o.fields)==null?void 0:_.filter(V=>p.value.includes(V.name)).map(V=>{const{type:A,format:h,...$}=V;return{...$,format:h??A??"text"}}))||[],k=Ae(x,v,{selectedKeys:p.value,resolveKey:V=>we(V)});if(i.value=k,l.value==="html"&&v.length){const V=v.map($=>{const B=$.label??"",F=$.name??$.id??"";return`<dd>${B}</dd>
|
|
94
|
+
`:""}var bc=kc,_c={dump:bc},wc=Os.load,bn=_c.dump;const Ec={class:"flex flex-col flex-1 overflow-hidden"},Bc={class:"flex justify-end gap-2"},vc={class:"w-20 gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 px-4 py-2 h-9 text-xs bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm transition-all duration-300 hover:shadow-md hover:scale-[1.02] relative overflow-hidden"},Nc=["href"],Cc={class:"flex flex-col flex-1 overflow-hidden"},Vc={class:"bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden mt-3 flex flex-col flex-1"},$c={class:"relative bg-gradient-to-br from-slate-50 to-white flex-1"},Ac=e.defineComponent({__name:"vs-tab-style",props:{token:{},styleYaml:{}},emits:["update:styleYaml","update"],setup(t,{emit:n}){const o=t,r=n,i=e.ref("");e.watch(()=>o.styleYaml,p=>{try{const d=p?bn(p):"";!i.value&&d!==i.value&&(i.value=d)}catch{i.value=""}},{immediate:!0,deep:!0}),e.watch(i,async p=>{var d,g;try{const s=p?wc(p):null;if((d=s==null?void 0:s.colorAttr)!=null&&d.length&&((g=o.styleYaml)==null?void 0:g.colorAttr)!==s.colorAttr){const f=await l(s.colorAttr);s.colors=f.reduce((u,m,x)=>({...u,[m.id.toString()]:a[x]}),{});const y=bn(s);y!==i.value&&(i.value=y)}JSON.stringify(s)!==JSON.stringify(o.styleYaml)&&r("update:styleYaml",s)}catch{}});async function l(p){return(await fetch(`/api/gis-service/${o.token}/${p}`).then(g=>g.json())).rows}const a=["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],c=async()=>{try{await fetch(`/api/gis-service/${o.token}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({style:i.value})}),r("update"),ne.notify({type:"success",title:"Успіх",message:"Стилі збережено"})}catch(p){ne.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти стилі"}),console.log(p)}};return(p,d)=>(e.openBlock(),e.createElementBlock("div",Ec,[e.createElementVNode("div",Bc,[e.createElementVNode("button",vc,[e.createElementVNode("a",{target:"_blank",href:"/api/gis-service/"+o.token+"/col"},"Attr",8,Nc)]),e.createElementVNode("button",{onClick:c,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"},[...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-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",Cc,[e.createElementVNode("div",Vc,[d[2]||(d[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",$c,[e.createVNode(Mt,{modelValue:i.value,"onUpdate:modelValue":d[0]||(d[0]=g=>i.value=g),language:"yaml",theme:"vs-light"},null,8,["modelValue"])])])])]))}}),_n=Symbol("MapContext");function Sc(t){const n=e.shallowRef(null),o=e.ref(!1);let r=!1;const i=[],l=()=>{r=!0,i.length&&i.forEach(s=>s())},a=()=>{const s=t.container;return typeof s=="string"?document.getElementById(s):(s==null?void 0:s.value)!==void 0?s.value:s},c=()=>r?Promise.resolve():new Promise(s=>i.push(s)),p=async()=>{var f,y,u,m;if(typeof window>"u"||n.value)return;const s=a();if(!s)throw new Error("Map container not found");n.value=new maplibregl.Map({...t.mapOptions||{},attributionControl:!1,center:[30,50],zoom:7,container:s}),(f=t.controls)!=null&&f.navigation&&n.value.addControl(new maplibregl.NavigationControl(typeof t.controls.navigation=="object"?t.controls.navigation:{}),"top-right"),(y=t.controls)!=null&&y.scale&&n.value.addControl(new maplibregl.ScaleControl(typeof t.controls.scale=="object"?t.controls.scale:{}),"bottom-left"),(u=t.controls)!=null&&u.fullscreen&&n.value.addControl(new maplibregl.FullscreenControl,"top-right"),(m=t.controls)!=null&&m.geolocate&&n.value.addControl(new maplibregl.GeolocateControl(typeof t.controls.geolocate=="object"?t.controls.geolocate:{}),"top-right"),n.value.once("load",()=>{o.value=!0,l()})},d=()=>{n.value&&(n.value.remove(),n.value=null,o.value=!1)};e.onMounted(p),e.onUnmounted(d);const g={map:n,ready:c,flyTo:s=>{var f;return(f=n.value)==null?void 0:f.flyTo(s)},fitBounds:(s,f)=>{var y;return(y=n.value)==null?void 0:y.fitBounds(s,f)},setCenter:s=>{var f;return(f=n.value)==null?void 0:f.setCenter(s)},setZoom:s=>{var f;return(f=n.value)==null?void 0:f.setZoom(s)},addControl:(s,f)=>{var y;return(y=n.value)==null?void 0:y.addControl(s,f)},removeControl:s=>{var f;return(f=n.value)==null?void 0:f.removeControl(s)},on:(s,f,y)=>{var u,m;return typeof f=="string"?((u=n.value)==null||u.on(s,f,y),()=>{var x;return(x=n.value)==null?void 0:x.off(s,f,y)}):((m=n.value)==null||m.on(s,f),()=>{var x;return(x=n.value)==null?void 0:x.off(s,f)})},off:(s,f,y)=>{var u,m;typeof f=="string"?(u=n.value)==null||u.off(s,f,y):(m=n.value)==null||m.off(s,f)},project:s=>{var f;return(f=n.value)==null?void 0:f.project(s)},unproject:s=>{var f;return(f=n.value)==null?void 0:f.unproject(s)}};return e.provide(_n,g),g}function se(t){if(t)return{map:t,flyTo:t.value.flyTo,fitBounds:t.value.fitBounds};const n=e.inject(_n);if(!n)throw new Error("useMap() called outside of a Map provider");return n}const pt=new Map,mt={};function ft(t){if(t.colorAttr&&t.colors){const n=Object.entries(t.colors).flat();return["match",["get",t.colorAttr],...n,"#94a3b8"]}return null}function Lc(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,[i,l],a)=>r.concat([i,n[a]]),[]),t.icon]}function wn(t,n){const o=ft(t);if(!(t.icon&&!t.iconZoom))return{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}}}function Fc(t){const n=ft(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 Mc(t){return{type:"line",paint:{"line-color":ft(t)||t.color,"line-opacity":t.opacity||1,"line-width":t.width||1.5}}}function Tc(t){const n=Lc(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 En(t){if(!t)return[];const n=[];return t.icon&&n.push(Tc(t)),t.pointZoom&&n.push(wn(t,t.pointZoom)),t.type==="polygon"?n.push(Fc(t)):t.type==="line"?n.push(Mc(t)):n.push(wn(t)),n.filter(Boolean)}function Ic(t){return{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:t}}]}}}async function Bn(t,n,o){const r=[n],i=n.split("+")[0];Object.values(o||{}).forEach(l=>{r.push(`${i}+${l.replace("#","")}.png`)});for(const l of r){if(t.getImage(l))continue;const a=await t.loadImage(`/api/gis-icon/${l}`);t.addImage(l,a.data)}}function G(t,n,o){var v,w;if(!t)return mt;if(!n)return mt[t];const{map:r,ready:i=()=>Promise.resolve()}=se(o),l=t||((v=n.layer)==null?void 0:v.id),a=n.sourceId??t,c={...n};c.point&&(c.source=Ic(c.point)),!c.layer&&((w=c.source)==null?void 0:w.type)==="raster"&&(c.layer={id:a,type:"raster",source:a}),c.layer&&!c.layer.source&&Object.assign(c.layer,{source:a});let p=!1,d=!1;const g=()=>{var S,T,I,E;if(!(d||!r.value)){if(c.source&&!r.value.getSource(a)&&r.value.addSource(a,c.source),!r.value.getLayer(l)){const b=c.beforeId===0?(T=(S=r.value.getStyle().layers)==null?void 0:S[0])==null?void 0:T.id:c.beforeId;(E=(I=c.layer)==null?void 0:I.style)!=null&&E.icon&&Bn(r.value,c.layer.style.icon,c.layer.style.colors);const C=En(c.style||c.layer.style);if(!C.length){r.value.addLayer(c.layer,b);return}C.forEach((L,j)=>{var O;const D={...L,id:`${l}${j||""}`,source:a};((O=c.source)==null?void 0:O.type)==="vector"&&(D["source-layer"]=a),r.value.addLayer(D,b)})}p=!0}};i().then(g);const s=(S,T)=>r.value?(r.value.on(S,l,T),()=>{var I;return(I=r.value)==null?void 0:I.off(S,l,T)}):()=>{},f=S=>{r.value&&r.value.getStyle().layers.filter(T=>T.source===l).forEach(T=>{r.value.setLayoutProperty(T.id,"visibility",S?"visible":"none")})},y=(S=!0)=>{r.value&&(r.value.getStyle().layers.filter(T=>T.source===l).forEach(T=>{r.value.removeLayer(T.id)}),d=!0,c.source&&S&&r.value.getSource(a)&&r.value.removeSource(a))},$={ids:{layerId:l,sourceId:a},isMounted:()=>{var S;return p&&!!((S=r.value)!=null&&S.getLayer(l))},setVisible:f,updatePaint:S=>{r.value&&Object.entries(S).forEach(([T,I])=>{r.value.setPaintProperty(l,T,I)})},updateLayout:S=>{r.value&&Object.entries(S).forEach(([T,I])=>{r.value.setLayoutProperty(l,T,I)})},updateFilter:S=>{r.value&&r.value.setFilter(l,S)},setData:S=>{if(!r.value)return;const T=r.value.getSource(a);T&&"setData"in T&&T.setData(S)},setTiles:S=>{if(!r.value)return;const T=r.value.getSource(a);T&&"setTiles"in T&&T.setTiles(S)},setStyle:async S=>{if(!r.value)return;S.icon&&Bn(r.value,S.icon,S.colors);const T=En(S);y(!1),T.forEach((I,E)=>{const b={...I,id:`${l}${E}`,source:c.layer.source,"source-layer":c.layer.source};r.value.addLayer(b)})},setFilter:S=>{var I,E;if(!r.value)return;const T=r.value.getSource(a);if(T&&"setTiles"in T&&((E=(I=c.source)==null?void 0:I.tiles)!=null&&E[0])){const b=c.source.tiles[0];T.setTiles([`${b}${b.includes("?")?"&":"?"}filter=${S}`])}},setFeatureState:(S,T)=>{r.value&&r.value.setFeatureState({source:a,...S},T)},removeFeatureState:(S,T)=>{r.value&&r.value.removeFeatureState({source:a,...S},T?{key:T}:void 0)},remove:y,card:c.card,popup:c.popup,opts:c,getSource:()=>{var S;return(S=r.value)==null?void 0:S.getSource(a)},getLayer:()=>{var S;return(S=r.value)==null?void 0:S.getLayer(l)},on:s};pt.set(l,$);const B=()=>{pt.get(l)===$&&pt.delete(l)},F=$.remove;return $.remove=()=>{B(),F()},e.onBeforeUnmount($.remove),mt[t]=$,$}const Dc={class:"flex flex-col flex-1 min-h-0"},jc={class:"flex flex-col flex-1 min-h-0"},Oc=e.defineComponent({__name:"vs-tab-popup",props:{token:{},fields:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>i.value=u||[],{immediate:!0}),e.watch(i,u=>{const m=G(o.token);m&&(m.popup=u),r("update:columns",u)});const l=e.ref("list"),a=e.ref(!1),c=e.ref([]),p=[{key:"name",label:"Name",type:"main"},{key:"meta",label:"Meta"}],d={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 g(){c.value=i.value.map(u=>u.name||u.id),a.value=!0}function s(){var N;const u=[...i.value],m=((N=o.fields)==null?void 0:N.filter(k=>c.value.includes(k.name)))||[],x=Ae(u,m,{selectedKeys:c.value,resolveKey:k=>we(k)});i.value=x,a.value=!1,c.value=[]}function f(){a.value=!1,c.value=[]}function y(){let u=[];l.value==="all"?u=o.fields||[]:l.value==="none"?u=[]:u=i.value,u.filter(m=>!m.label).forEach(m=>m.label=m.ua),r("save",u)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",Dc,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:g,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:y,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"}," Зберегти popup ")]),e.createElementVNode("div",jc,[l.value==="list"?(e.openBlock(),e.createBlock(Ne,{key:0,modelValue:i.value,"onUpdate:modelValue":m[0]||(m[0]=x=>i.value=x),"columns-scheme":p,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":m[1]||(m[1]=x=>a.value=x),selection:c.value,"onUpdate:selection":m[2]||(m[2]=x=>c.value=x),fields:t.fields,title:"Імпорт полів","id-prefix":"import-popup",onConfirm:s,onCancel:f},null,8,["visible","selection","fields"])]))}}),zc={class:"flex flex-col flex-1 min-h-0"},Pc={class:"flex justify-between mb-3 gap-2"},Rc={class:"p-4 space-y-4 text-sm"},Uc={class:"space-y-1"},qc={class:"space-y-1"},Yc={class:"flex items-center gap-3"},Hc={class:"flex justify-end gap-2 p-4 border-t"},Wc=e.defineComponent({__name:"vs-tab-legend",props:{mapInfo:{},token:{},columns:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>{i.value=u||[]}),e.watch(i,u=>{r("update:columns",u)});const l=e.ref(!1),a=e.ref({name:"",color:"#2E86DE"}),c=e.defineAsyncComponent(()=>import("@opengis/core").then(u=>u.VsModal)),p=[{key:"name",label:"Назва"},{key:"color",label:"Колір",type:"color"}],d={name:{type:"text",label:"Назва",validators:["required"]},color:{type:"color",label:"Колір",validators:["required"]}};function g(u){u&&s(),l.value=u}function s(){a.value={name:"",color:"#2E86DE"}}function f(){var N,k;const u=(N=a.value.name)==null?void 0:N.trim();if(!u){ne.notify({type:"warning",title:"Перевірка",message:"Вкажіть назву елементу легенди"});return}const m=((k=a.value.color)==null?void 0:k.trim())||"#2E86DE";if(i.value.some(_=>we(_)===we({name:u}))){ne.notify({type:"warning",title:"Дубль",message:"Такий елемент легенди вже існує"});return}i.value=[...i.value,{name:u,color:m}],s(),l.value=!1}function y(){r("save",i.value)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",zc,[e.createElementVNode("div",Pc,[e.createElementVNode("button",{onClick:m[0]||(m[0]=x=>l.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:y,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(Ne,{modelValue:i.value,"onUpdate:modelValue":m[1]||(m[1]=x=>i.value=x),"columns-scheme":p,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"]),e.createVNode(e.unref(c),{visible:l.value,title:"Новий елемент легенди","onUpdate:visible":g},{footer:e.withCtx(()=>[e.createElementVNode("div",Hc,[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-gray-100 text-gray-700",onClick:m[5]||(m[5]=x=>g(!1))}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded bg-blue-600 text-white",onClick:f}," Додати ")])]),default:e.withCtx(()=>[e.createElementVNode("div",Rc,[e.createElementVNode("div",Uc,[m[6]||(m[6]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Назва ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[2]||(m[2]=x=>a.value.name=x),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",qc,[m[7]||(m[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 uppercase tracking-wide"}," Колір ",-1)),e.createElementVNode("div",Yc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[3]||(m[3]=x=>a.value.color=x),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":m[4]||(m[4]=x=>a.value.color=x),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"])]))}}),Kc={class:"space-y-3 bg-gradient-to-br from-sky-50 to-blue-50 p-4 rounded-xl border border-sky-100 shadow-sm"},Zc=["onClick"],Gc=["aria-checked","value"],Xc={key:0},Qc=e.defineComponent({__name:"view-mode-toggle",props:{modelValue:{},options:{},showHtml:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:n}){const o=t,r=n,i=a=>r("update:modelValue",a),l=o.options||[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"}];return(a,c)=>(e.openBlock(),e.createElementBlock("div",Kc,[c[1]||(c[1]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-600"},"Режим відображення",-1)),e.createElementVNode("div",{role:"radiogroup",class:e.normalizeClass(["grid gap-2",`grid-cols-${e.unref(l).length}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),p=>(e.openBlock(),e.createElementBlock("div",{key:p.value,onClick:d=>i(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",Xc,[...c[0]||(c[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-circle h-2.5 w-2.5 fill-current text-current"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"})],-1)])])):e.createCommentVNode("",!0)],8,Gc),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,Zc))),128))],2)]))}}),Jc={class:"flex flex-col flex-1 min-h-0"},ed={class:"flex flex-col flex-1 min-h-0"},td=e.defineComponent({__name:"vs-tab-card",props:{fields:{},columns:{},viewMode:{},html:{}},emits:["update:columns","save"],setup(t,{emit:n}){const o=t,r=n,i=e.ref(o.columns||[]);e.watch(()=>o.columns,x=>i.value=x||[],{immediate:!0}),e.watch(i,x=>r("update:columns",x));const l=e.ref(o.viewMode??"list");e.watch(()=>o.viewMode,x=>{x&&x!==l.value&&(l.value=x)});const a=e.ref(o.html??"");e.watch(()=>o.html,x=>{typeof x=="string"&&x!==a.value&&(a.value=x)},{immediate:!0});const c=e.ref(!1),p=e.ref([]),d=[{key:"name",label:"Name",type:"main"},{key:"format",label:"Format"}],g={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"}]},data:{type:"text",label:"Data"}};function s(){p.value=l.value==="html"?[]:i.value.map(x=>x.name||x.id),c.value=!0}function f(){var _;const x=[...i.value],N=((_=o.fields)==null?void 0:_.filter(V=>p.value.includes(V.name)).map(V=>{const{type:A,format:h,...$}=V;return{...$,format:h??A??"text"}}))||[],k=Ae(x,N,{selectedKeys:p.value,resolveKey:V=>we(V)});if(i.value=k,l.value==="html"&&N.length){const V=N.map($=>{const B=$.label??"",F=$.name??$.id??"";return`<dd>${B}</dd>
|
|
95
95
|
<dt>{{ ${F} }}</dt>`}).join(`
|
|
96
96
|
`),h=(a.value??"").trimEnd();a.value=h?`${h}
|
|
97
|
-
${V}`:V}c.value=!1,p.value=[]}function y(){c.value=!1,p.value=[]}function u(){const x=l.value==="html"?"html":"list",v={card_mode:x};x==="html"?v.html=a.value:x==="list"&&(v.list=i.value),r("save","card",v)}const m=[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"},{value:"html",label:"HTML"}];return(x,v)=>(e.openBlock(),e.createElementBlock("div",Jc,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:s,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(Qc,{modelValue:l.value,"onUpdate:modelValue":v[0]||(v[0]=k=>l.value=k),options:m},null,8,["modelValue"]),e.createElementVNode("div",ed,[l.value==="list"?(e.openBlock(),e.createBlock(ve,{key:0,modelValue:i.value,"onUpdate:modelValue":v[1]||(v[1]=k=>i.value=k),"columns-scheme":d,"form-scheme":g,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):l.value==="html"?(e.openBlock(),e.createBlock(Mt,{key:1,modelValue:a.value,"onUpdate:modelValue":v[2]||(v[2]=k=>a.value=k),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(Ve,{visible:c.value,"onUpdate:visible":v[3]||(v[3]=k=>c.value=k),selection:p.value,"onUpdate:selection":v[4]||(v[4]=k=>p.value=k),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:f,onCancel:y},null,8,["visible","selection","fields"])]))}}),nd={class:"flex flex-col flex-1 min-h-0"},od=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 i=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>i.value=u||[],{immediate:!0}),e.watch(i,u=>r("update:columns",u),{deep:!0,immediate:!0});const l=e.ref("list"),a=e.ref(!1),c=e.ref([]),p=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],d={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 g(){c.value=i.value.map(u=>u.name||u.id),a.value=!0}function s(){var v;const u=[...i.value],m=((v=o.fields)==null?void 0:v.filter(k=>c.value.includes(k.name)))||[],x=Ae(u,m,{selectedKeys:c.value,resolveKey:k=>we(k)});i.value=x,a.value=!1,c.value=[]}function f(){a.value=!1,c.value=[]}function y(){let u=[];l.value==="all"?u=o.fields||[]:l.value==="none"?u=[]:u=i.value,r("save",u)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",nd,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:g,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:y,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти фільтр ")]),l.value==="list"?(e.openBlock(),e.createBlock(ve,{key:0,modelValue:i.value,"onUpdate:modelValue":m[0]||(m[0]=x=>i.value=x),"columns-scheme":p,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":m[1]||(m[1]=x=>a.value=x),selection:c.value,"onUpdate:selection":m[2]||(m[2]=x=>c.value=x),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:s,onCancel:f},null,8,["visible","selection","fields"])]))}}),Nn=e.defineComponent({__name:"MapView",setup(t,{expose:n}){const o=e.ref(null),r=e.ref(null),i=Sc({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},center:[30.5234,50.4501],zoom:9,minZoom:4,maxZoom:14,doubleClickZoom:!1},controls:{navigation:!0,scale:!0}});async function l(){var d;await e.nextTick();const p=(d=i.map)==null?void 0:d.value;p!=null&&p.resize&&p.resize()}function a(){typeof ResizeObserver>"u"||r.value||!o.value||(r.value=new ResizeObserver(()=>{l()}),r.value.observe(o.value))}function c(){var p;(p=r.value)==null||p.disconnect(),r.value=null}return e.onMounted(()=>{l(),a(),window.addEventListener("resize",l)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",l),c()}),n({ctx:i}),(p,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"el",ref:o,class:"w-full h-full rounded-xl overflow-hidden"},[e.renderSlot(p.$slots,"default")],512))}}),rd=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleYaml:{}},setup(t,{expose:n}){var f;const{map:o,flyTo:r,setZoom:i}=se(),l=t,a=l.id;String(l.id);const c=`${location.origin}/api/vtile/${l.id}/ua/{z}/{x}/{y}.vmt?all=1`,p=G(a,{source:{type:"vector",tiles:[c],minzoom:0,maxzoom:14},popup:l.layer.popup,layer:{style:(f=l.layer)==null?void 0:f.style}});n({layerHandle:p}),r({center:l.layer.center||[30,50],animate:!1}),i(11),G("point",{point:l.layer.center,style:{color:"orange"}});let d=null;function g(){d&&clearTimeout(d),d=setTimeout(()=>{d=null,s().catch(y=>console.error("Failed to update map layer",y))},300)}async function s(){o.value&&p.setStyle(l.styleYaml)}return e.watch(()=>l.styleYaml,g),e.onBeforeUnmount(()=>{p.remove()}),(y,u)=>null}}),Re=e.ref(null);function ld(){Re.value=null}function id(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(Re,a=>{a!==o()&&n.value&&(n.value=!1)});function r(){Re.value=o(),n.value=!0}function i(){Re.value===o()&&(Re.value=null),n.value=!1}function l(){n.value?i():r()}return{isOpen:n,open:r,close:i,toggle:l}}const ad={class:"map-filter"},sd={class:"map-filter__header"},cd={class:"map-filter__title"},dd={"aria-hidden":"true"},gt="#map-filter-popover-host",Qe=W(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)??""}),i=e.computed(()=>`filter-popover-${r.value}`),{isOpen:l,close:a,toggle:c}=id(i),p=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),d=e.ref(null),g=e.ref(null);let s=null;const f=e.ref({}),y=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),u=e.computed(()=>l.value),m=e.computed(()=>{var D;return Array.isArray((D=o.layer)==null?void 0:D.filters)?o.layer.filters:[]}),x=e.computed(()=>m.value.length>0),v=e.computed(()=>{var D;return((D=o.layer)==null?void 0:D.name)??""}),k=e.computed(()=>m.value),_=e.ref(null),V=e.computed(()=>m.value.length),A=e.computed(()=>V.value<=2),h=e.computed(()=>A.value?"body":typeof window>"u"||_.value?gt:"body"),$=e.computed(()=>!u.value||!A.value?{}:{position:"absolute",top:`${p.top}px`,left:`${p.left}px`,transform:p.transform,zIndex:1e3,width:"280px"});function B(){a()}function F(D,O,P=8){const Y=window.scrollY+P,J=window.scrollY+window.innerHeight-P;let K=D;return K+O>J&&(K=J-O),K<Y&&(K=Y),K}function N(){var ae,de,be;if(!d.value||!A.value)return;const D=d.value.getBoundingClientRect(),O=window.scrollX+8,P=window.scrollX+window.innerWidth-8,Y=((ae=g.value)==null?void 0:ae.offsetWidth)||280,J=((de=g.value)==null?void 0:de.offsetHeight)||0;let K=0,X=0;if((be=o.catalogAnchor)!=null&&be.value){const fe=o.catalogAnchor.value.getBoundingClientRect(),M=fe.top+window.scrollY;K=F(M,J,8);const U=fe.right+window.scrollX+12,H=P-Y,Z=O;X=Math.min(Math.max(U,Z),Math.max(Z,H))}else{const fe=D.bottom+window.scrollY+8;K=F(fe,J,8);let M=D.left+window.scrollX;M<O&&(M=O),M+Y>P&&(M=Math.max(O,P-Y)),X=M}p.left=X,p.top=K,p.transform="none"}function w(){A.value||j(),c(),l.value&&A.value&&e.nextTick(()=>{N(),C(),requestAnimationFrame(()=>N())})}function S(){o.disabled||w()}e.watch(u,D=>{D&&A.value?e.nextTick(()=>{N(),C(),requestAnimationFrame(()=>N())}):(L(),A.value||j())}),e.watch(k,()=>{!u.value||!A.value||e.nextTick(()=>N())},{deep:!0}),e.watch(A,D=>{u.value&&(D?e.nextTick(()=>{N(),C()}):(L(),j()))}),e.watch(()=>o.disabled,D=>{D&&(a(),f.value={})});function T(){!u.value||!A.value||N()}function I(D){const O=r.value;if(!O)return;const P=G(O);if(!(P!=null&&P.setFilter))return;f.value=D;const Y=Object.entries(D).map(([J,K])=>`${J}=${K}`).join("|");P.setFilter(Y)}function E(D){if(!o.disabled)return;const O=D.currentTarget;if(!O)return;const P=O.getBoundingClientRect();y.left=P.left+P.width/2+window.scrollX,y.top=P.bottom+8+window.scrollY,y.visible=!0}function b(){y.visible=!1}e.onMounted(()=>{j(),window.addEventListener("resize",T),window.addEventListener("scroll",T,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",T),window.removeEventListener("scroll",T,!0),L()});function C(){L(),!(!g.value||!A.value)&&(s=new ResizeObserver(()=>{!u.value||!A.value||N()}),s.observe(g.value))}function L(){s&&(s.disconnect(),s=null)}function j(){typeof window>"u"||typeof document>"u"||(_.value=document.querySelector(gt))}return(D,O)=>x.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mapLayer-filter",ref_key:"anchor",ref:d},[e.createElementVNode("a",{class:e.normalizeClass(["mapLayer-filter__trigger",{"mapLayer-filter__trigger--disabled":o.disabled}]),href:"#",onClick:e.withModifiers(S,["prevent","stop"]),onMouseenter:E,onMouseleave:b,onFocus:E,onBlur:b},[...O[2]||(O[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:h.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":!A.value}]),style:e.normalizeStyle($.value),ref_key:"panel",ref:g,onClick:O[1]||(O[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ad,[e.createElementVNode("div",sd,[e.createElementVNode("h3",cd,e.toDisplayString(v.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:B},[e.createElementVNode("span",dd,[e.createVNode(e.unref(Kn),{class:"h-4 w-4"})]),O[3]||(O[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:k.value,value:f.value,limit:10,onChange:O[0]||(O[0]=P=>I(P.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[y.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${y.top}px`,left:`${y.left}px`})},e.toDisplayString(y.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-d7fc7def"]]),ud={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"},ht=W(e.defineComponent({__name:"MapFilterWidget",props:{filters:{},title:{},layerId:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",ud,[e.createVNode(Qe,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])]))}}),[["__scopeId","data-v-236fa913"]]),pd={class:"flex flex-row gap-x-3 z-10 relative widget"},md=["onClick"],fd=["src","alt"],yt=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=G("base",{source:{type:"raster",tiles:[n[o.value].url]},beforeId:0});function i(l){if(o.value=l,!n[l].url)return r.setVisible(!1);r.setVisible(!0),r.setTiles([n[l].url])}return(l,a)=>(e.openBlock(),e.createElementBlock("div",pd,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,(c,p)=>e.createElementVNode("div",{key:p,onClick:d=>i(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"])},[c.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:c.preview,alt:c.title,class:"object-cover rounded-lg w-12 h-12"},null,8,fd)):e.createCommentVNode("",!0)],2)],8,md)),64))]))}}),gd={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%"}},hd={class:"flex flex-col gap-1 p-5"},yd={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},xt=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:r}=se(),i=e.ref([]);let l=null;function a(g){return g?g.map((s,f)=>{var m;const y=(s==null?void 0:s.name)||(s==null?void 0:s.label)||(s==null?void 0:s.title)||(s==null?void 0:s.id)||`Layer ${f+1}`,u=(s==null?void 0:s.color)||(s==null?void 0:s.fill)||((m=s==null?void 0:s.paint)==null?void 0:m.color)||"#3388ff";return{id:`${y}-${f}`,label:y,color:u}}):[]}function c(g){return g!=null&&g.layers?g.layers.filter(s=>{const f=s.paint||{};return f["fill-color"]||f["line-color"]||f["circle-color"]}).map((s,f)=>{var m;const y=s.paint||{},u=y["fill-color"]||y["line-color"]||y["circle-color"]||"#3388ff";return{id:s.id||`layer-${f}`,label:((m=s.metadata)==null?void 0:m.title)||s.id||`Layer ${f+1}`,color:u}}):[]}async function p(){var f;await r();const g=o.value;if(!g)return;const s=(f=g.getStyle)==null?void 0:f.call(g);i.value=c(s)}function d(){const g=o.value;if(!g)return;l==null||l();const s=()=>p();g.on("styledata",s),l=()=>g.off("styledata",s)}return e.watch(()=>n.items,async g=>{g!=null?(i.value=a(g),l==null||l()):(await r(),d(),p())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await r(),d(),p())}),e.onBeforeUnmount(()=>{l==null||l(),l=null}),(g,s)=>i.value.length?(e.openBlock(),e.createElementBlock("div",gd,[e.createElementVNode("div",hd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"flex items-center"},[e.createElementVNode("span",{class:"shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px] rounded-full",style:e.normalizeStyle({background:f.color})},null,4),e.createElementVNode("span",yd,[e.createElementVNode("span",null,e.toDisplayString(f.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function xd(){const{map:t,ready:n}=se(),o=e.ref(null),r=e.ref(null),i=e.ref(null),l=e.ref(null);let a=[];function c(){a.forEach(f=>f()),a=[]}const p=f=>{var m;o.value=[f.point.x,f.point.y];const y=t.value.queryRenderedFeatures(f.point);if(!(y!=null&&y.length)){d();return}const u=G(y[0].source)||G(y[0].layer.id);u!=null&&u.popup&&(r.value=((m=u.popup)==null?void 0:m.fields)||u.popup,l.value=y[0].properties)},d=()=>{r.value=null,l.value=null,o.value=null};async function g(){await n(),t.value&&(c(),t.value.on("mousemove",p),t.value.on("mouseleave",d))}function s(){c(),r.value=null,l.value=null,o.value=null}return n().then(g),{popupCoords:o,popupFields:r,popupValues:l,disable:s,title:i}}const kd={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},bd={class:"space-y-1.5"},_d={class:"font-bold text-slate-700"},wd={class:"text-slate-700"},vn=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:r,disable:i}=xd(),l=e.ref(null),a=e.ref({left:"-9999px",top:"-9999px"}),c=e.computed(()=>{const f=o.value||[],y=r.value||{};return f.filter(u=>(u==null?void 0:u.meta)!=="title").map((u,m)=>g(u,y,m)).filter(u=>u.label)}),p=e.computed(()=>{const f=o.value||[],y=r.value||{},u=f.find(m=>(m==null?void 0:m.meta)==="title");return u?g(u,y,0):null}),d=e.computed(()=>{var y;const f=c.value;return(y=p.value)!=null&&y.value?[{...p.value,key:`${p.value.key}-title`,label:"Назва"},...f]:f});function g(f,y,u){const m=f.name||f.label||f.title||`field-${u}`,x=f.label||f.title||f.name||m,v=f.name?y[f.name]:void 0,k=f.name?y[`${f.name}_text`]:void 0;return{key:m,label:x,value:k??v??f.value??null}}function s(){if(!d.value.length||!n.value||!l.value){a.value={left:"-9999px",top:"-9999px"};return}const[f,y]=n.value;a.value={left:`${f+18}px`,top:`${y+18}px`}}return e.watch([n,d],()=>{e.nextTick(()=>s())}),e.onBeforeUnmount(()=>{i()}),(f,y)=>d.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:l,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(a.value)},[e.createElementVNode("div",kd,[e.createElementVNode("div",bd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.key,class:"flex flex-col"},[e.createElementVNode("span",_d,e.toDisplayString(u.label),1),e.createElementVNode("span",wd,e.toDisplayString(u.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function Ed(){const{map:t,ready:n}=se(),o=me.useRoute(),r=me.useRouter(),i=e.ref(null),l=e.ref(null),a=e.ref(null),c=e.ref(!1),p=e.computed(()=>c.value||!!i.value||!!a.value);let d=null,g=!1;function s(){i.value=null,l.value=null,a.value=null,c.value=!1}function f(){if(d){try{d()}catch{}d=null}}async function y(){await n();const h=t.value;h&&(f(),s(),h.on("click",u),d=()=>h.off("click",u),A(k()))}function u(h){const $=t.value;if(!$)return;const F=$.queryRenderedFeatures(h.point)[0];if(!F){s(),V(null);return}const N=G(F.source);m(F,N==null?void 0:N.card)}async function m(h,$){var F,N;if(!((F=h==null?void 0:h.properties)!=null&&F.id))return;const B=new URLSearchParams;B.set("layer",h.source),B.set("id",String((N=h.properties)==null?void 0:N.id)),c.value=!0,a.value=null,i.value=null,l.value=h||null;try{const w=await fetch(`/api/map-format?${B.toString()}`);if(!w.ok)throw new Error(`Failed (${w.status})`);const S=await w.json();i.value={rows:S.rows||{},fields:$||[],html:S.html||null},g||V(l.value)}catch{a.value="Не вдалося завантажити дані",i.value=null,ne.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити дані"})}finally{c.value=!1}}function x(){s(),V(null)}function v(){f(),s()}n().then(y),e.onBeforeUnmount(()=>v());function k(){const h=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof h!="string"?null:h.trim()||null}function _(h){var N,w;const $=(h==null?void 0:h.source)??((N=h==null?void 0:h.layer)==null?void 0:N.id),B=(w=h==null?void 0:h.properties)==null?void 0:w.id;return!$||B===void 0||B===null?null:`${$},${B}`.trim()||null}function V(h){const $=_(h),B=k();if($===B)return;const F={...o.query};$?F.info=$:delete F.info,r.push({query:F}).catch(()=>{})}async function A(h){if(!h){s();return}if(h===_(l.value))return;const[$,B]=h.split(","),F=$==null?void 0:$.trim(),N=B==null?void 0:B.trim();if(!F||!N){s(),V(null);return}g=!0;try{const w=G(F);await m({source:F,properties:{id:N}},w==null?void 0:w.card)}finally{g=!1}}return e.watch(()=>k(),h=>{h!==_(l.value)&&(g=!0,A(h).finally(()=>{g=!1}))}),{card:i,cardFeature:l,cardError:a,cardLoading:c,isOpen:p,close:x}}function Bd(){const{map:t,ready:n}=se(),o=e.ref([]),r=e.ref(0),i=e.ref(0),l=e.ref(!1),a=e.ref(null),c=e.ref({}),p=e.ref(null),d=e.ref([]),g=e.computed(()=>o.value[i.value]||null),s=e.computed(()=>o.value.length>0);let f=null;const y=()=>{f==null||f.remove(),f=null},u=B=>B?B.type==="FeatureCollection"?B:B.type==="Feature"?{type:"FeatureCollection",features:[B]}:B.type&&Array.isArray(B.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:B,properties:{}}]}:Array.isArray(B.features)?{type:"FeatureCollection",features:B.features}:B.geometry?u(B.geometry):null:null,m=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),x=B=>Number(B.toFixed(5)),v=async B=>{if(await n(),!t.value)return;const F=u(B);F&&(y(),f=G("feature-highlight",{source:{type:"geojson",data:F},style:m()},t))},k=async(B,F,N)=>{var T,I;const[w,S]=[x(B),x(F)];p.value={x:w,y:S},d.value=N,l.value=!0,a.value=null,o.value=[],c.value={},i.value=0;try{const E=N.map(async D=>{const O=`/api/map-info-point?x=${w}&y=${S}&layers=${D}`,P=await fetch(O);if(!P.ok)return null;const Y=await P.json();if(!Y.count)return null;const K=await(await fetch(`${O}&index=0`)).json();return{layerId:D,data:K,count:Y.count}}),C=(await Promise.all(E)).filter(Boolean);if(C.length===0){r.value=0;return}o.value=C.map(D=>D.data);const[L]=o.value;r.value=C.reduce((D,O)=>D+(O.count||0),0),c.value[0]=L;const j=((T=L==null?void 0:L.data)==null?void 0:T.geom_4326)??((I=L==null?void 0:L.data)==null?void 0:I.geom);await v(j)}catch(E){a.value=E.message}finally{l.value=!1}},_=async B=>{if(!p.value||!d.value.length)return;if(c.value[B]){o.value[B]=c.value[B];return}const{x:F,y:N}=p.value,w=d.value.join(","),S=`/api/map-info-point?x=${F}&y=${N}&index=${B}&layers=${w}`;try{l.value=!0;const T=await fetch(S);if(!T.ok)throw new Error("Failed to fetch feature by index");const I=await T.json();o.value[B]=I,c.value[B]=I}catch(T){a.value=T.message}finally{l.value=!1}},V=async()=>{i.value<r.value-1&&(i.value+=1,c.value[i.value]||await _(i.value))},A=async()=>{i.value>0&&(i.value-=1,c.value[i.value]||await _(i.value))},h=()=>{o.value=[],r.value=0,i.value=0,c.value={},p.value=null,d.value=[],y()};e.watch(i,async()=>{var F,N;const B=g.value;if(B){const w=((F=B==null?void 0:B.data)==null?void 0:F.geom_4326)??((N=B==null?void 0:B.data)==null?void 0:N.geom);await v(w)}});let $=null;return e.onMounted(async()=>{await n(),t.value&&($=async B=>{const{lng:F,lat:N}=B.lngLat,w=G(),T=Object.entries(w).map(([I,E])=>{var b,C,L,j;return{id:I,service:((b=E==null?void 0:E.opts)==null?void 0:b.service)??((L=(C=E==null?void 0:E.opts)==null?void 0:C.source)==null?void 0:L.service)??null,count:((j=E==null?void 0:E.opts)==null?void 0:j.count)??null,visible:(()=>{var D;try{return((D=t.value)==null?void 0:D.getLayer(I))?t.value.getLayoutProperty(I,"visibility")!=="none":!0}catch{return!0}})()}}).filter(I=>I.service==="ogc"&&I.visible).map(I=>I.id);T.length>0&&await k(F,N,T)},t.value.on("dblclick",$))}),e.onBeforeUnmount(()=>{t.value&&$&&t.value.off("dblclick",$),y()}),{features:o,count:r,index:i,current:g,loading:l,error:a,active:s,next:V,prev:A,close:h}}const Nd=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,r=n;function i(d){const g=d.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(g)return g;const s=Array.from(d).map(f=>f.charCodeAt(0).toString(16)).join("").slice(0,8);return s?`layer-${s}`:"layer-temp"}const l=e.computed(()=>{var d;return((d=o.id)==null?void 0:d.trim())||i(o.title)}),a=e.computed(()=>o.buttonText||"Показати шар");function c(){return{id:l.value,title:o.title,url:o.url}}function p(){r("activate",c())}return(d,g)=>(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(d.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.value),1)])]))}}),ce=e.ref([]);function vd(t,n){return typeof t!="string"?"":t.includes("{{")?t.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*}}/g,(o,r)=>{const i=String(r||"").trim();if(!i)return"";const l=n[i];return l!=null?String(l):""}):t}function kt(t){return t==null?"":String(t).trim()}function bt(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function Cn(t){function n(l,a={},c,p){var x,v;const d=kt(l==null?void 0:l.id),g=((x=l==null?void 0:l.title)==null?void 0:x.trim())||d,s=((v=l==null?void 0:l.url)==null?void 0:v.trim())||"";if(!d||!s)return;const f=vd(s,a);if(!f)return;const y=p??t;if(!y)return;const u=ce.value.findIndex(k=>k.id===d);u!==-1&&(bt(ce.value[u]),ce.value.splice(u,1));let m=null;try{m=G(d,{source:{type:"raster",tiles:[f],tileSize:l.tileSize??256,minzoom:l.minzoom??0,maxzoom:l.maxzoom??19},layer:{id:d,type:"raster",source:d,paint:{"raster-opacity":l.opacity??.85}}},y)}catch(k){const _=(k==null?void 0:k.message)??"";if(!(typeof _=="string"&&_.includes("Map provider")))throw k;return}ce.value=[...ce.value,{id:d,title:g,originalUrl:s,resolvedUrl:f,owner:c??null,handle:m??null}]}function o(l,a){const c=kt(l);if(!c)return;const p=ce.value.findIndex(g=>g.id===c&&(!a||g.owner===a));if(p===-1)return;const[d]=ce.value.splice(p,1);bt(d)}function r(l){if(!ce.value.length)return;const a=[];ce.value.forEach(c=>{(l?c.owner===l:!0)?bt(c):a.push(c)}),ce.value=a}function i(l,a){const c=kt(l);return c?ce.value.some(p=>p.id===c&&(!a||p.owner===a)):!1}return{temporaryLayers:ce,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:r,isTemporaryLayerActive:i}}const Cd={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"},Vd={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},$d={class:"min-w-0 flex-1"},Ad={class:"text-base font-semibold text-slate-900 truncate"},Sd={key:0,class:"flex gap-1 mt-1"},Ld=["disabled"],Fd=["disabled"],Md={class:"flex-1 overflow-y-auto px-4 py-3 space-y-3 text-sm text-slate-700"},Td={key:0,class:"text-center text-xs text-slate-500"},Id={key:1,class:"text-center text-xs text-red-500"},Dd={key:2,class:"prose prose-sm max-w-none space-y-3"},jd=["innerHTML"],Od=["innerHTML"],zd={key:3,class:"space-y-2"},Pd={class:"text-xs font-semibold text-slate-500 uppercase tracking-wide"},Rd={key:0,class:"inline-block rounded px-2 py-0.5 text-xs font-semibold text-yellow-800",style:{"background-color":"rgba(250,204,21,0.25)"}},Ud={key:1,class:"text-sm text-right text-slate-800 whitespace-pre-wrap"},qd={key:4,class:"text-center text-xs text-slate-400"},Yd="map:temporary-layer-request",Vn=W(e.defineComponent({__name:"MapCardWidget",setup(t){const n=Ed(),o=Bd(),r=e.computed(()=>o.active.value),i=e.computed(()=>r.value||n.isOpen.value),l=e.computed(()=>r.value?o.loading.value:n.cardLoading.value),a=e.computed(()=>r.value?o.error.value:n.cardError.value),c=e.computed(()=>{var E,b;return r.value?((E=o.current.value)==null?void 0:E.html)||null:((b=n.card.value)==null?void 0:b.html)||null}),{isTemporaryLayerActive:p}=Cn();function d(E){window.dispatchEvent(new CustomEvent(Yd,{detail:E}))}const g=e.computed(()=>{var E;return((E=n.cardFeature.value)==null?void 0:E.source)??null}),s=e.computed(()=>g.value?`map-card:${g.value}`:"map-card"),f=e.ref(null),y=e.ref(null),u=new Map;function m(E){const b=E.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(b)return b;const C=Array.from(E).map(L=>L.charCodeAt(0).toString(16)).join("").slice(0,8);return C?`layer-${C}`:`layer-${Math.random().toString(36).slice(2,8)}`}function x(E){const b={},C=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let L;for(;(L=C.exec(E))!==null;){const j=L[1],D=L[2]??L[3]??L[4]??"";j&&(b[j]=D)}return b}function v(E,b){for(const C of b)if(E[C]!=null&&String(E[C]).trim().length)return String(E[C]).trim();return""}function k(E){if(!(E!=null&&E.length))return;const b=Number(E);return Number.isFinite(b)?b:void 0}function _(E){if(typeof E!="string"||!E.length)return[];const b=[],C=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let L=0,j;const D=new Set,O=P=>{let Y=P,J=2;for(;D.has(Y);)Y=`${P}-${J}`,J+=1;return D.add(Y),Y};for(;(j=C.exec(E))!==null;){const[P,Y="",J=""]=j,K=j.index;if(K>L){const Ne=E.slice(L,K);Ne.trim().length&&b.push({type:"html",content:Ne})}const X=x(Y),ae=v(X,["title"])||"Тимчасовий шар",de=v(X,["url"]);if(!de){b.push({type:"html",content:P}),L=K+P.length;continue}const be=v(X,["id"]),fe=v(X,["button-text","buttonText","show","show-label","showLabel"]),M=k(v(X,["tile-size","tileSize"])),U=k(v(X,["minzoom","minZoom"])),H=k(v(X,["maxzoom","maxZoom"])),Z=k(v(X,["opacity"])),q=be||m(`${ae}-${de}`)||m(ae),z=O(q||`layer-${b.length+1}`),ue=J.trim(),ge=/<[^>]+>/.test(ue),ye=ge?ue:null,pe=ge?null:ue,xe=fe&&fe.trim().length?fe.trim():pe&&pe.trim().length?pe.trim():void 0;b.push({type:"layer",spec:{id:z,title:ae,url:de,tileSize:M,minzoom:U,maxzoom:H,opacity:Z},componentProps:{title:ae,url:de,id:z,buttonText:xe},slotText:ye}),L=K+P.length}if(L<E.length){const P=E.slice(L);P.trim().length&&b.push({type:"html",content:P})}return!b.length&&E.trim().length&&b.push({type:"html",content:E}),b}const V=e.computed(()=>{if(r.value&&o.current.value){const L=o.current.value.data??{};return(o.current.value.fields??[]).map(D=>({key:D.name,label:D.label||D.title||D.name,value:L[D.name]??"—",format:D.format||"text"}))}const E=n.card.value;if(!E)return[];const b=E.rows??{};return(E.fields??[]).map(L=>({key:L.name,label:L.ua||L.label||L.title||L.name,value:b[L.name]??"—",format:L.format||"text"}))}),A=e.computed(()=>_(c.value)),h=e.computed(()=>A.value.filter(E=>E.type==="layer"));function $(){const E={},b=f.value;if(b&&typeof b=="object"&&Object.entries(b).forEach(([C,L])=>{typeof L=="string"&&(E[C]=L)}),g.value&&(E.layer=g.value),!E.geohub){const C=typeof(b==null?void 0:b.geohub)=="string"?b.geohub:null,L=typeof(b==null?void 0:b.geohub_key)=="string"?b.geohub_key:null,j=typeof(b==null?void 0:b.geohubId)=="string"?b.geohubId:null;E.geohub=C||L||j||E.layer||""}return E}async function B(){const E=g.value;if(!E)return f.value=null,y.value=null,null;if(y.value===E&&f.value)return f.value;if(u.has(E)){const b=u.get(E);return f.value=b,y.value=E,b}try{const b=await fetch(`/api/gis-service/${encodeURIComponent(E)}`);if(!b.ok)return null;const C=await b.json();return u.set(E,C),f.value=C,y.value=E,C}catch{return null}}async function F(E){if(!(E!=null&&E.id))return;await B();const b=$(),C=h.value.find(j=>j.spec.id===E.id),L=C==null?void 0:C.spec;L&&(p(L.id,s.value)||d({action:"activate",owner:s.value||void 0,spec:L,context:b}))}e.watch(g,(E,b)=>{E!==b&&(f.value=null,y.value=null)});const{next:N,prev:w,count:S,index:T}=o;function I(){n.close(),o.close()}return e.onBeforeUnmount(()=>{const E=s.value;d({action:"clear",owner:E||void 0})}),(E,b)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createElementBlock("div",Cd,[e.createElementVNode("div",Vd,[e.createElementVNode("div",$d,[e.createElementVNode("p",Ad,[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(e.unref(T)+1)+" / "+e.toDisplayString(e.unref(S)),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Інформація про об’єкт ")],64))])]),r.value&&e.unref(S)>1?(e.openBlock(),e.createElementBlock("div",Sd,[e.createElementVNode("button",{onClick:b[0]||(b[0]=(...C)=>e.unref(w)&&e.unref(w)(...C)),disabled:e.unref(T)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Pn),{class:"h-4 w-4"})],8,Ld),e.createElementVNode("button",{onClick:b[1]||(b[1]=(...C)=>e.unref(N)&&e.unref(N)(...C)),disabled:e.unref(T)===e.unref(S)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Rn),{class:"h-4 w-4"})],8,Fd)])):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:I}," ✕ ")]),e.createElementVNode("div",Md,[l.value?(e.openBlock(),e.createElementBlock("div",Td," Завантаження даних… ")):a.value?(e.openBlock(),e.createElementBlock("div",Id,e.toDisplayString(a.value),1)):A.value.length?(e.openBlock(),e.createElementBlock("div",Dd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.value,(C,L)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:L},[C.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:C.content},null,8,jd)):(e.openBlock(),e.createBlock(Nd,{key:1,title:C.componentProps.title,url:C.componentProps.url,id:C.componentProps.id,"button-text":C.componentProps.buttonText,onActivate:F},e.createSlots({_:2},[C.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:C.slotText},null,8,Od)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):V.value.length?(e.openBlock(),e.createElementBlock("div",zd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,C=>(e.openBlock(),e.createElementBlock("div",{key:C.key,class:"flex items-start justify-between gap-3 border-b border-slate-100 pb-2"},[e.createElementVNode("span",Pd,e.toDisplayString(C.label),1),C.format==="badge"?(e.openBlock(),e.createElementBlock("span",Rd,e.toDisplayString(C.value),1)):(e.openBlock(),e.createElementBlock("span",Ud,e.toDisplayString(C.value),1))]))),128))])):(e.openBlock(),e.createElementBlock("div",qd," Даних не знайдено. "))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-0ed791c6"]]),$n=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var f,y;const n=t,o=((y=(f=e.getCurrentInstance())==null?void 0:f.appContext.config.globalProperties)==null?void 0:y.$settings)||null,{map:r,ready:i}=se();let l=null;function a(){l==null||l.remove(),l=null}function c(u){if(!u)return null;if(typeof u=="string")try{u=JSON.parse(u)}catch{return null}return u.type==="FeatureCollection"?u:u.type==="Feature"?{type:"FeatureCollection",features:[u]}:u.type&&Array.isArray(u.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:u,properties:{}}]}:Array.isArray(u.features)?{type:"FeatureCollection",features:u.features}:u.geometry?c(u.geometry):null}function p(u){var v,k,_;return{type:"line",color:"#8e4484",width:2,opacity:((((_=(k=(v=u==null?void 0:u.features)==null?void 0:v[0])==null?void 0:k.geometry)==null?void 0:_.type)||"").includes("Polygon"),.95)}}async function d(u){const m=await fetch(u);if(!m.ok)throw new Error(String(m.status));return m.json()}async function g(u,m){if(u){const x=/^https?:\/\//.test(u)?u:new URL(u,location.origin).toString(),v=await d(x).catch(()=>null),k=c(v);if(k)return k}if(m){const x=await d(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(m)}`).catch(()=>null),v=c(x);if(v)return v}return null}async function s(){var v,k,_,V;if(!n.layerId||!r.value){a();return}typeof i=="function"&&await i().catch(()=>{});const u=n.boundary??((v=n.settingsMap)==null?void 0:v.boundary)??((k=o==null?void 0:o.map)==null?void 0:k.boundary)??null,m=n.katottg??((_=n.settingsMap)==null?void 0:_.katottg)??((V=o==null?void 0:o.map)==null?void 0:V.katottg)??null;if(!u&&!m){a();return}const x=await g(u,m);if(!x){a();return}a(),l=G(`${n.layerId}-boundary`,{source:{type:"geojson",data:x},style:p(x)},r)}return e.watch(()=>{var u,m;return[n.layerId,n.boundary,n.katottg,(u=n.settingsMap)==null?void 0:u.boundary,(m=n.settingsMap)==null?void 0:m.katottg,r.value]},()=>{s()},{immediate:!0}),e.onBeforeUnmount(a),(u,m)=>null}}),Hd={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Wd={class:"flex-1 relative overflow-hidden"},Kd={class:"absolute top-0 left-0 w-full z-20"},Zd={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Gd={class:"flex items-center gap-3"},Xd={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Qd={class:"text-xs text-gray-500 truncate"},Jd=["title"],eu={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]"},tu={class:"relative w-full h-full"},nu={style:{top:"10px",left:"230px",position:"absolute","z-index":"1"}},ou={class:"absolute top-4 left-4 z-20"},ru={class:"absolute bottom-4 left-4 z-20"},lu={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},iu={class:"flex-1 flex flex-col h-full"},au={class:"px-3 pt-3 pb-2 border-b border-gray-100"},su={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"},cu=["aria-selected","onClick"],du={class:"leading-none"},uu={class:"flex flex-col flex-1 overflow-y-hidden p-3"},pu=e.defineComponent({__name:"service",setup(t){var B,F;const n=me.useRoute(),o=me.useRouter(),{id:r}=n.params,i=e.ref(null),l=e.ref({}),a=e.ref(null),c=((F=(B=e.getCurrentInstance())==null?void 0:B.appContext.config.globalProperties)==null?void 0:F.$settings)||null,p=e.ref(""),d=e.ref([]),g=e.ref([]),s=e.ref([]),f=e.ref("list"),y=e.ref(""),u=e.ref([]),m=e.computed(()=>{var N,w;return((N=a.value)==null?void 0:N.id)??((w=a.value)==null?void 0:w.service_id)??null}),x=e.computed(()=>{const N=(c==null?void 0:c.map)||null,w=(N==null?void 0:N.boundary)??null,S=(N==null?void 0:N.katottg)??null;return!w&&!S?null:{boundary:w,katottg:S}}),v=[{key:"style",label:"Style",icon:Di},{key:"popup",label:"Popup",icon:Zi},{key:"filter",label:"Filter",icon:Ji},{key:"legend",label:"Legend",icon:Pi},{key:"card",label:"Card",icon:Yi}],k=v.map(N=>N.key),_=e.ref("style");e.onMounted(async()=>{const N=n.query.tab;N&&k.includes(N)&&(_.value=N),await V()}),e.watch(_,N=>{n.query.tab!==N&&o.replace({query:{...n.query,tab:N}})}),e.watch(()=>n.query.tab,N=>{N&&k.includes(N)&&_.value!==N&&(_.value=N)});const V=async()=>{try{const N=await fetch(`/api/gis-service/${r}`);if(!N.ok)throw new Error(`${N.status}`);const w=await N.json();l.value=w||{},i.value=r,a.value=w||null,p.value=w.style||"",g.value=(w==null?void 0:w.popup)||[],f.value=w.card_mode==="html"?"html":"list",s.value=w.card,y.value=w.html,d.value=(w==null?void 0:w.legend)||[],u.value=(w==null?void 0:w.filters)||[]}catch(N){console.error("Failed to fetch map info",N)}};e.watch(()=>{var N;return(N=a.value)==null?void 0:N.style},N=>{N?typeof N=="string"?p.value=N:p.value=JSON.parse(JSON.stringify(N)):p.value=""},{deep:!0});async function A(N,w){await h({[N]:w},N)}async function h(N,w){if(a.value={...a.value||{},...N},typeof N.html<"u"&&(l.value={...l.value||{},html:N.html}),!!m.value)try{if(!(await fetch(`/api/gis-service/${m.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)})).ok)throw new Error("Save failed");ne.notify({type:"success",title:"Успіх",message:`${w} saved`}),await V()}catch(S){ne.notify({type:"error",title:"Помилка",message:`Failed to save ${w}`}),console.error(S)}}async function $(N,w){if(N!=="card"){await A(N,w);return}const S=(w==null?void 0:w.card_mode)==="html"?"html":"list",T=S==="html"&&typeof(w==null?void 0:w.html)=="string"?w.html:"",I=(S==="html"?[]:null)||(Array.isArray(w==null?void 0:w.list)?w.list:[]);s.value=I,f.value=S,y.value=T;const E={card_mode:S};S==="html"&&(E.html=T),S==="list"&&(E.card=I),await h(E,"card")}return(N,w)=>{var S,T,I,E;return e.openBlock(),e.createElementBlock("div",Hd,[e.createElementVNode("div",Wd,[e.createElementVNode("div",Kd,[e.createElementVNode("div",Zd,[e.createElementVNode("div",Gd,[e.createElementVNode("button",{onClick:w[0]||(w[0]=b=>N.$router.back()),class:"inline-flex items-center px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition"},[...w[10]||(w[10]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),e.createTextVNode(" Назад ",-1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",Xd,e.toDisplayString((S=a.value)==null?void 0:S.name),1),e.createElementVNode("div",Qd," Сервіс: "+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:(I=a.value)==null?void 0:I.description},e.toDisplayString((E=a.value)==null?void 0:E.description),9,Jd)])]),e.createElementVNode("div",eu,[e.createElementVNode("div",tu,[e.createVNode(Nn,null,{default:e.withCtx(()=>{var b,C,L,j,D,O,P;return[(b=a.value)!=null&&b.service_id?(e.openBlock(),e.createBlock(rd,{key:0,id:(C=a.value)==null?void 0:C.service_id,layer:a.value,"style-yaml":p.value},null,8,["id","layer","style-yaml"])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createBlock($n,{key:1,"layer-id":m.value,boundary:((L=a.value)==null?void 0:L.boundary)||((j=x.value)==null?void 0:j.boundary)||null,katottg:((D=a.value)==null?void 0:D.katottg)||((O=x.value)==null?void 0:O.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",nu,[m.value?(e.openBlock(),e.createBlock(ht,{key:0,"layer-id":m.value,filters:u.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ou,[e.createVNode(yt)]),e.createElementVNode("div",ru,[e.createVNode(xt,{items:((P=a.value)==null?void 0:P.legend)||null},null,8,["items"])]),e.createVNode(vn),e.createVNode(Vn,{html:l.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",lu,[e.createElementVNode("div",iu,[e.createElementVNode("div",au,[e.createElementVNode("div",su,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(v,b=>e.createElementVNode("button",{key:b.key,type:"button",role:"tab","aria-selected":_.value===b.key,class:e.normalizeClass(["whitespace-nowrap flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group",_.value===b.key?"bg-white shadow-sm text-gray-700":""]),onClick:C=>_.value=b.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",du,e.toDisplayString(b.label),1)],10,cu)),64))])]),e.createElementVNode("div",uu,[_.value==="style"?(e.openBlock(),e.createBlock(Ac,{key:0,token:m.value,"style-yaml":p.value,"onUpdate:styleYaml":w[1]||(w[1]=b=>p.value=b),onSave:w[2]||(w[2]=b=>A("style",b))},null,8,["token","style-yaml"])):_.value==="legend"?(e.openBlock(),e.createBlock(Wc,{key:1,token:m.value,columns:d.value,"onUpdate:columns":w[3]||(w[3]=b=>d.value=b),onSave:w[4]||(w[4]=b=>A("legend",b))},null,8,["token","columns"])):_.value==="popup"?(e.openBlock(),e.createBlock(Oc,{key:2,token:m.value,columns:g.value,fields:l.value.fields,"onUpdate:columns":w[5]||(w[5]=b=>g.value=b),onSave:w[6]||(w[6]=b=>A("popup",b))},null,8,["token","columns","fields"])):_.value==="card"?(e.openBlock(),e.createBlock(td,{key:3,token:m.value,columns:s.value,fields:l.value.fields,"view-mode":f.value,html:y.value,"onUpdate:columns":w[7]||(w[7]=b=>s.value=b),onSave:$},null,8,["token","columns","fields","view-mode","html"])):_.value==="filter"?(e.openBlock(),e.createBlock(od,{key:4,token:m.value,fields:l.value.fields,columns:u.value,"onUpdate:columns":w[8]||(w[8]=b=>u.value=b),onSave:w[9]||(w[9]=b=>A("filters",b))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),mu={class:"mapLayer-info__inner"},fu={class:"mapLayer-info__item-label"},_t=W(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%)"}),i=e.ref(null),l=e.ref(null);let a=null;const c=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(m){if(r.open){f();return}const x=m.currentTarget,v=x==null?void 0:x.closest(".mapLayer-info");if(!v){f();return}i.value=v,r.open=!0,e.nextTick(()=>{d(),y(),requestAnimationFrame(()=>{d()})})}function d(){var F,N;if(!r.open||!i.value)return;const m=i.value.getBoundingClientRect(),x=8,v=window.scrollX+x,k=window.scrollX+window.innerWidth-x,_=window.scrollY+x,V=window.scrollY+window.innerHeight-x,A=((F=l.value)==null?void 0:F.offsetWidth)||460,h=((N=l.value)==null?void 0:N.offsetHeight)||0;let $=m.left+window.scrollX+(m.width-A)/2;$<v&&($=v),$+A>k&&($=Math.max(v,k-A)),r.left=$;let B=m.bottom+window.scrollY+x;B+h>V&&(B=m.top+window.scrollY-h-x,B<_&&(B=Math.max(_,V-h))),r.top=B,r.transform="none"}function g(m){var v,k;if(!r.open)return;const x=m.target;(v=i.value)!=null&&v.contains(x)||(k=l.value)!=null&&k.contains(x)||f()}function s(m){m.key==="Escape"&&f()}function f(){u(),r.open=!1,i.value=null,l.value=null}function y(){u(),l.value&&(a=new ResizeObserver(()=>{d()}),a.observe(l.value))}function u(){a&&(a.disconnect(),a=null)}return e.onMounted(()=>{document.addEventListener("click",g,!0),document.addEventListener("keydown",s),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",g,!0),document.removeEventListener("keydown",s),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d),u()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>d())},{deep:!0}),n({close:f}),(m,x)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:i},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(p,["prevent","stop"])},[...x[1]||(x[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(c.value),ref_key:"popoverEl",ref:l,onClick:x[0]||(x[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",mu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,v=>(e.openBlock(),e.createElementBlock("div",{key:v.label,class:"mapLayer-info__item"},[e.createElementVNode("div",fu,e.toDisplayString(v.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":v.breakLine}])},e.toDisplayString(v.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-48ead72b"]]),gu={key:0,class:"map-info__header"},hu={key:0,class:"map-info__title"},yu={class:"map-info__actions"},xu={key:0,class:"map-info__menu"},ku=["onClick"],bu=["innerHTML"],An=W(e.defineComponent({__name:"MapInfoWidget",props:{title:{},content:{},links:{},mapName:{},mapDescription:{}},setup(t){const n=t,o=e.ref(null),r=e.ref(!1),i=e.ref(null),l=e.ref({top:0,left:0}),a=me.useRouter(),c=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:`${l.value.top}px`,left:`${l.value.left}px`})),d=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 g(u){u.stopPropagation(),r.value=!r.value}function s(){const u=i.value;if(!u)return;const{bottom:m,left:x}=u.getBoundingClientRect();l.value={top:m+window.scrollY+8,left:x+window.scrollX}}function f(u){if(!r.value)return;const m=o.value;if(!m){r.value=!1;return}m.contains(u.target)||(r.value=!1)}e.onMounted(()=>{document.addEventListener("click",f,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",f,!0),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}),e.watch(r,u=>{u?e.nextTick(()=>{s(),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s)}):(window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s))});function y(u){r.value=!1,a.push(`/maps/${u}`)}return(u,m)=>(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||c.value.length||d.value.length?(e.openBlock(),e.createElementBlock("div",gu,[t.title?(e.openBlock(),e.createElementBlock("h2",hu,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",yu,[c.value.length?(e.openBlock(),e.createElementBlock("div",xu,[e.createElementVNode("button",{ref_key:"menuButton",ref:i,type:"button",class:"map-info__menu-button",onClick:g,"aria-label":"Показати посилання"},[...m[1]||(m[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:m[0]||(m[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,x=>(e.openBlock(),e.createElementBlock("button",{key:x.slug||x.name,type:"button",class:"map-info__popover-link",onClick:v=>y(x.slug)},e.toDisplayString(x.name),9,ku))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),d.value.length?(e.openBlock(),e.createBlock(_t,{key:1,items:d.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,bu)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-a06fbf8d"]]),_u={class:"opacity-popover__content"},wu={class:"opacity-popover__value"},Sn=W(e.defineComponent({__name:"LayerOpacityPopover",props:{layerId:{}},setup(t){const n=t,o=e.ref(!1),r=e.ref(100),i=e.ref(null),l=e.ref(null),a=e.reactive({top:0,left:0});function c(){var y;const s=(y=l.value)==null?void 0:y.querySelector("button");if(!s)return;const f=s.getBoundingClientRect();a.top=f.bottom+8+window.scrollY,a.left=f.left+window.scrollX}function p(){o.value=!o.value,o.value&&e.nextTick(c)}function d(){var u;const s=G(n.layerId),f=(r.value??100)/100,y=(u=s==null?void 0:s.getLayer)==null?void 0:u.call(s);if(y)switch(y.type){case"raster":s.updatePaint({"raster-opacity":f});break;case"fill":s.updatePaint({"fill-opacity":f});break;case"line":s.updatePaint({"line-opacity":f});break;case"circle":s.updatePaint({"circle-opacity":f});break;case"symbol":s.updatePaint({"icon-opacity":f});break}}function g(s){var y,u;if(!o.value)return;const f=s.target;(y=i.value)!=null&&y.contains(f)||(u=l.value)!=null&&u.contains(f)||(o.value=!1)}return e.onMounted(()=>{document.addEventListener("click",g),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",g),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}),(s,f)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:l},[e.renderSlot(s.$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:i,class:"opacity-popover",style:e.normalizeStyle({top:a.top+"px",left:a.left+"px"})},[e.createElementVNode("div",_u,[f[1]||(f[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":f[0]||(f[0]=y=>r.value=y),class:"opacity-popover__range",onInput:d},null,544),[[e.vModelText,r.value]]),e.createElementVNode("span",wu,e.toDisplayString(r.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-c93e6a44"]]),Eu={class:"layers-panel"},Bu={class:"layers-panel__header"},Nu={class:"layers-panel__heading"},vu={class:"layers-panel__title"},Cu={key:0,class:"layers-panel__description"},Vu={class:"layers-panel__label"},$u=["checked","onChange"],Au={class:"layers-panel__name"},Su={class:"layers-panel__meta text-slate-500"},Lu=["onClick"],Fu={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Mu={key:0,class:"layers-panel__actions"},Tu=["innerHTML","onClick"],Ln="map:temporary-layer-request",Fn=W(e.defineComponent({__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,r=e.ref({}),i=se(),{temporaryLayers:l,activateTemporaryLayer:a,deactivateTemporaryLayer:c,clearTemporaryLayers:p}=Cn(i.map),d=e.computed(()=>{const h=o.layers.map(B=>({...B,isTemporary:!1,owner:null,visible:B.visible!==!1})),$=l.value.map(B=>({id:B.id,name:B.title,visible:r.value[B.id]??!0,actions:[],filters:null,isTemporary:!0,owner:B.owner??null,handle:B.handle??null,card:B.card??null,popup:B.popup??null,style:B.style??null,group_name:null,count:null,holder:null}));return[...h,...$]}),g=e.computed(()=>l.value.length>0),s=n;function f(){var h;for(let $=0;$<o.layers.length;$++){const B=o.layers[$],F=y(B);if(!F)continue;const N=G(B.id,F),w=B.visible!==!1;r.value[B.id]=w,w||(h=N==null?void 0:N.setVisible)==null||h.call(N,!1)}}function y(h){const $=h.id;if(!$)return null;const B=(h.service||h.service_type||h.type||"").toString().toLowerCase(),F=h.service_url||h.url||null;if(!!F&&(B==="tms"||B==="wmts"||B==="wms"||B==="ogc")){const S=u(F);return S?{sourceId:$,source:{type:"raster",tiles:[S],tileSize:h.tileSize||256,minzoom:h.minzoom??0,maxzoom:h.maxzoom??22,scheme:h.scheme||"xyz"},layer:{id:$,type:"raster",source:$},card:h.card,popup:h.popup}:null}const w=`${location.origin}/api/vtile/${$}/ua/{z}/{x}/{y}.vmt`;return{sourceId:$,source:{type:"vector",tiles:[w],minZoom:4,maxZoom:14},layer:{id:$,source:$,"source-layer":$,style:h.style},card:h.card,popup:h.popup}}function u(h){return h?/^https?:\/\//i.test(h)?h:h.startsWith("//")?`${window.location.protocol}${h}`:h.startsWith("/")?`${location.origin}${h}`:`${location.origin}/${h}`:null}function m(h){const $=r.value[h];return $??!0}function x(h){var F,N;if(!(h!=null&&h.id))return null;const $=(F=h.title)==null?void 0:F.trim(),B=(N=h.url)==null?void 0:N.trim();return!$||!B?null:{id:h.id,title:$,url:B,tileSize:h.tileSize,minzoom:h.minzoom,maxzoom:h.maxzoom,opacity:h.opacity}}function v(h){if(!h)return;const $=h.owner;if(h.action==="clear"){const F=l.value.filter(N=>!$||N.owner===$).map(N=>N.id);p($),F.forEach(N=>{N in r.value&&delete r.value[N]});return}const B=x(h.spec);if(B){if(h.action==="activate"){a(B,h.context||{},$),r.value[B.id]=!0;return}h.action==="deactivate"&&(c(B.id,$),delete r.value[B.id])}}function k(h){h instanceof CustomEvent&&v(h.detail)}e.watch(()=>l.value.map(h=>h.id),(h,$)=>{const B=new Set($||[]),F=new Set(h);h.forEach(N=>{N in r.value||(r.value[N]=!0)}),B.forEach(N=>{F.has(N)||delete r.value[N]})},{immediate:!0}),e.onMounted(()=>{f(),window.addEventListener(Ln,k)}),e.onBeforeUnmount(()=>{window.removeEventListener(Ln,k)});function _(h,$){var w,S,T;const F=$.target.checked;if(r.value[h.id]=F,h.isTemporary){if(!F){c(h.id,h.owner||void 0),delete r.value[h.id];return}const I=h.handle||((w=l.value.find(E=>E.id===h.id))==null?void 0:w.handle);(S=I==null?void 0:I.setVisible)==null||S.call(I,!0);return}const N=G(h.id);(T=N==null?void 0:N.setVisible)==null||T.call(N,F)}function V(h){return h.isTemporary?[{label:"Назва",value:h.name??null},{label:"Тип",value:"Тимчасовий шар"},h.owner?{label:"Джерело",value:h.owner}:null].filter(Boolean):[{label:"Назва",value:h.name??null},{label:"Назва групи",value:h.group_name||null},{label:"Кількість",value:h.count??null},{label:"Балансоутримувач",value:h.holder??null}]}function A(){if(!l.value.length)return;const h=l.value.map($=>$.id);p(),h.forEach($=>delete r.value[$])}return(h,$)=>{var B,F;return e.openBlock(),e.createElementBlock("div",Eu,[e.createElementVNode("div",Bu,[e.createElementVNode("div",Nu,[e.createElementVNode("h2",vu,e.toDisplayString(((B=t.config)==null?void 0:B.title)||"Шари"),1),(F=t.config)!=null&&F.description?(e.openBlock(),e.createElementBlock("div",Cu,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),g.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__clear",onClick:A}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,N=>{var w;return e.openBlock(),e.createElementBlock("div",{key:N.id,class:"layers-panel__item"},[e.createElementVNode("label",Vu,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:m(N.id),onChange:S=>_(N,S)},null,40,$u),e.createElementVNode("span",Au,e.toDisplayString(N.name),1),e.createElementVNode("div",Su,[m(N.id)&&!N.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Sn,{"layer-id":N.id,class:"flex"},{trigger:e.withCtx(({toggle:S})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(S,["prevent","stop"])},[e.createElementVNode("div",Fu,[e.createVNode(e.unref(qn))])],8,Lu)]),_:1},8,["layer-id"]),e.createVNode(Qe,{count:Array.isArray(N.filters)?N.filters.length:0,layer:N},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(_t,{items:V(N)},null,8,["items"])])]),(w=N.actions)!=null&&w.length?(e.openBlock(),e.createElementBlock("div",Mu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.actions,S=>(e.openBlock(),e.createElementBlock("button",{key:S.widget||S.id||S.icon,type:"button",class:"layers-panel__action",innerHTML:S.icon,onClick:T=>s("action",{layerId:S.widget})},null,8,Tu))),128))])):e.createCommentVNode("",!0)])}),128))])}}}),[["__scopeId","data-v-52b4c079"]]),Iu={class:"catalog-tab__search relative mt-[10px]"},Du={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%)"}},ju={key:0,class:"text-sm text-gray-400 text-center mt-6"},Ou=["onClick"],zu={class:"flex items-center gap-x-3"},Pu={class:"max-w-[260px] text-[14px] text-[#4b5563]"},Ru={class:"text-xs opacity-60 text-[#4b5563]"},Uu={class:"flex items-center cursor-pointer gap-2 flex-1"},qu=["checked","onChange"],Yu={class:"text-[13px] text-gray-600 truncate max-w-[260px]"},Hu={class:"flex items-center gap-2"},Wu=W(e.defineComponent({__name:"LayersCatalogTab",props:{catalog:{},selected:{},search:{}},emits:["toggle-layer","update:search","open-filter"],setup(t,{emit:n}){const o=t,r=n,i=e.reactive({}),l=e.ref(null),a=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0,layerId:null}),c=e.computed(()=>{const x=o.search.trim().toLowerCase();return o.catalog.groups.map(v=>{const k=x?v.layers.filter(_=>(typeof _.name=="string"?_.name:"").toLowerCase().includes(x)):v.layers;return{...v,layers:k}}).filter(v=>v.layers.length>0)}),p=e.computed({get:()=>o.search,set:x=>r("update:search",x)});function d(x){i[x]=!i[x],ld()}function g(x){return!!i[x]}function s(x,v){if(o.selected.includes(v)){a.visible=!1,a.layerId=null;return}const k=x.currentTarget;if(!k)return;const _=k.getBoundingClientRect(),V=typeof window<"u"?window.scrollX:0,A=typeof window<"u"?window.scrollY:0;a.left=_.left+_.width/2+V,a.top=_.bottom+8+A,a.layerId=v,a.visible=!0}function f(){a.visible=!1,a.layerId=null}function y(x){return[{label:"Назва",value:u(x.name)},{label:"Сервіс",value:u(x.service)},{label:"Посилання",value:u(x.url),breakLine:!0},{label:"Джерело",value:u(x.source_path),breakLine:!0},{label:"Popup",value:m(x.popup,"полів")},{label:"Картка",value:m(x.card,"полів")},{label:"Фільтри",value:m(x.filters,"фільтрів")}]}function u(x){return x==null||x===""?null:String(x)}function m(x,v){return!Array.isArray(x)||x.length===0?null:`${x.length} ${v}`}return e.watch(()=>o.selected?o.selected.slice():[],x=>{!a.visible||!a.layerId||x.includes(a.layerId)&&(a.visible=!1,a.layerId=null)}),(x,v)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:l,class:"catalog-tab"},[e.createElementVNode("div",Iu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":v[0]||(v[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",Du,[...v[1]||(v[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)])]))]),c.value.length===0?(e.openBlock(),e.createElementBlock("div",ju," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.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:_=>d(k.id)},[e.createElementVNode("div",zu,[(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",g(k.id)?"rotate-90":""])},[...v[2]||(v[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",Pu,e.toDisplayString(k.name),1)]),e.createElementVNode("div",Ru,e.toDisplayString(k.layers.length),1)],8,Ou),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,_=>(e.openBlock(),e.createElementBlock("div",{key:_.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Uu,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(_.id),onChange:V=>x.$emit("toggle-layer",_.id,V.target.checked,_)},null,40,qu),v[3]||(v[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",Yu,e.toDisplayString(_.name),1)]),e.createElementVNode("div",Hu,[Array.isArray(_.filters)&&_.filters.length?(e.openBlock(),e.createBlock(Qe,{key:0,count:_.filters.length,layer:_,disabled:!t.selected.includes(_.id),onMouseenter:V=>s(V,_.id),onMouseleave:f,onFocus:V=>s(V,_.id),onBlur:f},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(_t,{items:y(_)},null,8,["items"])])]))),128))],512),[[e.vShow,g(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"]]),Ku={class:"selected-tab"},Zu={class:"selected-tab__actions"},Gu={key:0,class:"selected-tab__scroll"},Xu=["onDragstart","onDragover","onDrop"],Qu={class:"selected-tab__item-header"},Ju={class:"selected-tab__item-info"},ep=["checked","onChange"],tp={class:"selected-tab__item-name"},np={class:"selected-tab__item-controls"},op=["onClick"],rp={class:"selected-tab__menu-inner"},lp=W(e.defineComponent({__name:"LayersSelectedTab",props:{catalog:{},selected:{}},emits:["select-layer","reorder","remove","toggle-layer"],setup(t,{emit:n}){const o=t,r=n,i=e.reactive({}),l=e.ref(null),a=e.ref(null),c=new Map,p=e.reactive({top:0,left:0}),d=e.ref(null),g=e.reactive({top:0,left:0}),s=e.ref(null),f=new Map,y=e.reactive({});function u(I){var E;for(const b of((E=o.catalog)==null?void 0:E.groups)??[]){const C=b.layers.find(L=>L.id===I);if(C)return C}return null}e.watch(()=>o.selected,I=>{I.forEach(E=>{i[E]==null&&(i[E]=100)})},{immediate:!0});function m(){if(!l.value)return;const I=c.get(l.value);if(!I)return;const E=I.getBoundingClientRect();p.top=E.bottom+8+window.scrollY,p.left=E.left+window.scrollX}e.watch(()=>o.selected,I=>{I.forEach(E=>{y[E]==null&&(y[E]=!0)})},{immediate:!0});function x(I,E){y[I]=E;const b=G(I);b&&b.setVisible(E);const C=u(I);r("toggle-layer",I,E,C)}function v(I,E){E?f.set(I,E):f.delete(I)}function k(I){d.value=d.value===I?null:I,d.value&&e.nextTick(()=>_(I))}function _(I){const E=f.get(I);if(!E)return;const b=E.getBoundingClientRect();g.top=b.bottom+6+window.scrollY,g.left=b.left+window.scrollX}function V(I){const E=G(I);E&&E.remove(),r("remove",I),d.value=null}function A(I){const E=I.target,b=l.value,C=d.value;if(b){const L=a.value,j=c.get(b);if(L&&L.contains(E)||j&&j.contains(E))return;l.value=null}if(C){const L=s.value,j=f.get(C);if(L&&L.contains(E)||j&&j.contains(E))return;d.value=null}}function h(){l.value&&m(),d.value&&_(d.value)}e.onMounted(()=>{document.addEventListener("click",A),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",A),window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0)});const{map:$}=se();function B(I){var L,j,D;if(!I)return;const E=G(I),b=u(I);if(!E&&!b)return;if(((L=b==null?void 0:b.extent)==null?void 0:L.length)===4&&((j=$.value)!=null&&j.fitBounds)){const O=b.extent.map(P=>Number(P));if(O.every(P=>Number.isFinite(P))){const[P,Y,J,K]=O;$.value.fitBounds([[P,Y],[J,K]],{padding:40}),d.value=null;return}}(D=E==null?void 0:E.getSource)!=null&&D.call(E)&&(d.value=null)}const F=e.ref(null),N=e.ref(null);function w(I){F.value=I}function S(I){N.value=I}function T(I){if(F.value===null||F.value===I){F.value=null,N.value=null;return}const E=[...o.selected],[b]=E.splice(F.value,1);E.splice(I,0,b),r("reorder",E),F.value=null,N.value=null}return(I,E)=>(e.openBlock(),e.createElementBlock("div",Ku,[e.createElementVNode("div",Zu,[e.createElementVNode("button",{class:"selected-tab__add",onClick:E[0]||(E[0]=b=>r("select-layer"))},[...E[3]||(E[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-plus"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"M12 5v14"})],-1),e.createElementVNode("span",null,"Вибрати шар",-1)])])]),t.selected.length?(e.openBlock(),e.createElementBlock("div",Gu,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(b,C)=>{var L;return e.openBlock(),e.createElementBlock("div",{key:b,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":F.value===C,"selected-tab__item--over":N.value===C}]),draggable:"true",onDragstart:j=>w(C),onDragover:e.withModifiers(j=>S(C),["prevent"]),onDrop:j=>T(C)},[e.createElementVNode("div",Qu,[e.createElementVNode("div",Ju,[E[4]||(E[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:y[b]??!0,onChange:j=>x(b,j.target.checked)},null,40,ep),e.createElementVNode("span",tp,e.toDisplayString(((L=u(b))==null?void 0:L.name)||"Шар"),1)]),e.createElementVNode("div",np,[e.createVNode(Sn,{"layer-id":b},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:j=>v(b,j),onClick:e.withModifiers(j=>k(b),["stop"])},[...E[5]||(E[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-more-vertical"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"})],-1)])],8,op)])])],42,Xu)}),128))])])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuEl",ref:s,class:"selected-tab__menu",style:e.normalizeStyle({top:g.top+"px",left:g.left+"px"})},[e.createElementVNode("div",rp,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:E[1]||(E[1]=b=>B(d.value))},[...E[6]||(E[6]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-zoom-in"},[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"}),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"}),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"})],-1),e.createTextVNode(" Збільшити до шару ",-1)])]),E[8]||(E[8]=e.createElementVNode("button",{disabled:"",class:"selected-tab__menu-item selected-tab__menu-item--disabled"},[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)),E[9]||(E[9]=e.createElementVNode("button",{disabled:"",class:"selected-tab__menu-item selected-tab__menu-item--disabled"},[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-table"},[e.createElementVNode("path",{d:"M12 3v18"}),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),e.createElementVNode("path",{d:"M3 9h18"}),e.createElementVNode("path",{d:"M3 15h18"})]),e.createTextVNode(" Таблиця шару ")],-1)),E[10]||(E[10]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:E[2]||(E[2]=b=>V(d.value))},[...E[7]||(E[7]=[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-1192031d"]]),ip={class:"filter-tab"},ap={key:0,class:"filter-tab__header"},sp={class:"filter-tab__title"},cp={key:1,class:"filter-tab__content rounded-md"},dp={class:"filter-tab__scroll"},up={key:2,class:"filter-tab__empty"},pp=W(e.defineComponent({__name:"LayersFilterTab",props:{layer:{},value:{}},emits:["change"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/filter")),r=t,i=n,l=e.computed(()=>{var p;return((p=r.layer)==null?void 0:p.filters)??[]}),a=e.computed(()=>l.value.length>0);function c(p){i("change",p.data)}return(p,d)=>(e.openBlock(),e.createElementBlock("div",ip,[t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("div",null,[e.createElementVNode("p",sp,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",cp,[e.createElementVNode("div",dp,[e.createVNode(e.unref(o),{view:"vertical",schema:l.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:d[0]||(d[0]=g=>c(g))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",up,[...d[1]||(d[1]=[e.createElementVNode("p",{class:"filter-tab__empty-title"},"Немає доступних фільтрів",-1),e.createElementVNode("p",{class:"filter-tab__empty-text"}," Оберіть шар із фільтрами у каталозі, щоб налаштувати відбір даних. ",-1)])]))]))}}),[["__scopeId","data-v-b9cd2910"]]),mp={class:"map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget"},fp={class:"flex items-center justify-between mb-4"},gp={class:"flex items-center gap-2"},hp={class:"text-lg font-semibold text-gray-800"},yp={key:0},xp={key:1,class:"block text-sm font-normal text-gray-500"},kp={class:"flex mb-4 border-b border-gray-200"},bp={class:"map-catalog-widget__body"},Mn=W(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=e.ref("catalog"),o=e.ref({groups:[]}),r=e.ref([]),i=e.ref(""),{map:l}=se(),a=me.useRoute(),c=me.useRouter(),p=e.reactive({}),d=e.ref(null);function g(w){return o.value.groups.map(S=>S.layers.find(T=>T.id===w)).find(Boolean)||null}function s(){const w=d.value;if(!w)return;delete p[w];const S=G(w);S!=null&&S.setFilter&&S.setFilter("")}function f(w,S){const T=G(w);if(p[w]={...S},!(T!=null&&T.setFilter))return;const I=Object.entries(S).filter(([,E])=>E!=null&&E!=="").map(([E,b])=>`${E}=${b}`);T.setFilter(I.join("|"))}function y(w){const S=d.value;S&&f(S,w)}function u(w){const S=w.url;let T=null;if(S&&(T=S.startsWith("http")?S:`${window.location.origin}${S}`),!T)return null;const I=(w.service||"").toString().toLowerCase(),E=w.count??null;return I&&I!=="vtile"?{service:I,count:E,source:{type:"raster",tiles:[T],tileSize:256,minzoom:0,maxzoom:20}}:{service:I,count:E,source:{type:"vector",tiles:[T],minzoom:0,maxzoom:14},layer:{style:w.style},card:w.card,popup:w.popup}}function m(w,S,T){var C;const I=T??g(w);if(!I)return;const E=u(I);if(!E)return;const b=G(I.id,E,l);if(b)if(b.setVisible(S),S){if(!r.value.includes(w)&&(r.value.push(w),(C=l.value)!=null&&C.getLayer(w)))try{l.value.moveLayer(w)}catch(L){console.warn("Cannot move new layer",w,L)}}else r.value=r.value.filter(L=>L!==w),d.value===w&&(s(),d.value=null)}function x(){r.value.forEach(w=>{const S=G(w);S&&S.setVisible(!1)}),r.value=[]}function v(w){r.value=w,e.nextTick(()=>{var S;for(let T=w.length-1;T>=0;T-=1){const I=w[T];if((S=l.value)!=null&&S.getLayer(I))try{l.value.moveLayer(I)}catch(E){console.warn("Cannot move layer",I,E)}}})}function k(w){!w||!Array.isArray(w.filters)||w.filters.length===0||r.value.includes(w.id)&&(d.value=w.id,p[w.id]||(p[w.id]={}),n.value="filter")}function _(){n.value="catalog"}const V=e.computed(()=>d.value?g(d.value):null),A=e.computed(()=>{const w=d.value;return w?p[w]??{}:{}}),h=e.computed(()=>o.value.groups.reduce((w,S)=>w+S.layers.length,0)),$=e.computed(()=>n.value==="selected"?"Вибрані шари":n.value==="filter"?"Фільтр шарів":"Каталог"),B=e.computed(()=>n.value==="selected"?r.value.length:n.value==="catalog"?h.value:null),F=e.computed(()=>{var w;return n.value==="filter"?((w=V.value)==null?void 0:w.name)??"":""});async function N(){const S=await(await fetch("/api/gis-layer-list")).json(),T=new Map;S.forEach(b=>{const C=b.group_id??"other";T.has(C)||T.set(C,{id:C,name:b.group_name||"Інші шари",layers:[]}),T.get(C).layers.push(b)}),o.value={groups:Array.from(T.values())};const I=a.query.layers;if(!I)return;const E=Array.isArray(I)?I[0]:I;typeof E=="string"&&E.split(",").forEach(b=>{const C=b.trim();if(!C)return;const L=g(C);L&&m(C,!0,L)})}return e.watch(d,w=>{!w&&n.value==="filter"&&(n.value="catalog")}),e.watch(V,w=>{!w&&d.value&&(d.value=null)}),e.watch(r,w=>{const S={...a.query};w.length?S.layers=w.join(","):delete S.layers,c.replace({query:S}).catch(()=>{})},{deep:!0}),e.onMounted(N),(w,S)=>(e.openBlock(),e.createElementBlock("div",mp,[e.createElementVNode("div",fp,[e.createElementVNode("div",gp,[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",hp,[e.createTextVNode(e.toDisplayString($.value)+" ",1),B.value!==null?(e.openBlock(),e.createElementBlock("span",yp,"("+e.toDisplayString(B.value)+")",1)):e.createCommentVNode("",!0),F.value?(e.openBlock(),e.createElementBlock("span",xp,e.toDisplayString(F.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("button",{onClick:x,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-4da9f7a4><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-4da9f7a4></path><path d="M21 3v5h-5" data-v-4da9f7a4></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-4da9f7a4></path><path d="M8 16H3v5" data-v-4da9f7a4></path></svg>',1)])])]),e.createElementVNode("div",kp,[e.createElementVNode("button",{onClick:S[0]||(S[0]=T=>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]=T=>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",bp,[n.value==="catalog"?(e.openBlock(),e.createBlock(Wu,{key:0,class:"map-catalog-widget__scroll",catalog:o.value,selected:r.value,search:i.value,"onUpdate:search":S[2]||(S[2]=T=>i.value=T),onToggleLayer:m,onOpenFilter:k},null,8,["catalog","selected","search"])):n.value==="selected"?(e.openBlock(),e.createBlock(lp,{key:1,catalog:o.value,selected:r.value,onToggleLayer:m,onSelectLayer:S[3]||(S[3]=T=>n.value="catalog"),onReorder:v,onRemove:S[4]||(S[4]=T=>r.value=r.value.filter(I=>I!==T))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(pp,{key:2,layer:V.value,value:A.value,onChange:y,onClose:_},null,8,["layer","value"]))])]))}}),[["__scopeId","data-v-4da9f7a4"]]),_p={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},wp={class:"flex items-start justify-between gap-3 p-5 pb-3"},Ep={class:"inline-block text-xl font-semibold text-gray-800"},Bp={key:0,class:"mt-1 text-sm text-gray-500"},Np={class:"flex items-center gap-[6px]"},vp={class:"px-5 pb-5 space-y-6"},Cp={key:0,class:"space-y-2"},Vp={class:"flex flex-wrap gap-4"},$p=["value"],Ap={key:1,class:"text-sm text-gray-500"},Sp={key:2,class:"text-sm text-gray-500"},Lp={class:"text-4xl font-medium text-gray-800"},Fp={class:"space-y-[14px]"},Mp={class:"flex items-center gap-[10px] text-gray-600"},Tp={class:"font-medium text-gray-700"},Ip={class:"flex items-center justify-end text-end gap-3"},Dp={class:"font-medium text-gray-800"},jp={class:"min-w-[40px] font-medium text-[#3C3C4399]"},Tn=W(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),i=e.ref(!1),l=e.ref([]),a=e.ref(null),c=e.ref(null),p=e.ref(null),d=e.ref(null),g=e.ref(null),s=e.ref({}),f=e.ref(null);function y(b){return b&&JSON.parse(JSON.stringify(b))}const u=e.computed(()=>{const b=o.config.layer;if(typeof b!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const C=b.trim();if(!C)throw new Error("MapAttributeWidget: `layer` must be non-empty");return C}),m=e.computed(()=>{const{list:b,attribute:C}=o.config;if(Array.isArray(b)&&b.length)return b.map(L=>({id:(L==null?void 0:L.id)!=null?String(L.id).trim():"",text:(L==null?void 0:L.text)!=null&&String(L.text).trim()||null})).filter(L=>L.id.length);if(Array.isArray(C))return C.map(L=>L!=null?String(L).trim():"").filter(L=>L.length).map(L=>({id:L,text:null}));if(typeof C=="string"){const L=C.trim();if(!L)throw new Error("MapAttributeWidget: `attribute` must be non-empty");return[{id:L,text:null}]}throw new Error("MapAttributeWidget: `attribute` or `list` must be provided")}),x=e.computed(()=>m.value.map(b=>({id:b.id,label:b.text||s.value[b.id]||b.id})));e.watch(m,b=>{if(!b.length){f.value=null,l.value=[];return}(!f.value||!b.some(C=>C.id===f.value))&&(f.value=b[0].id)},{immediate:!0});const v=e.computed(()=>{var b;return f.value||((b=m.value[0])==null?void 0:b.id)||null});e.watch(u,()=>{var b,C;(C=(b=c.value)==null?void 0:b.remove)==null||C.call(b),c.value=null,p.value=null,d.value=null,g.value=null,s.value={}});const k=e.computed(()=>{var b;return(b=d.value)!=null&&b.length?{id:u.value,name:p.value,filters:d.value}:null}),_=e.computed(()=>{var b,C;return((C=(b=k.value)==null?void 0:b.filters)==null?void 0:C.length)||0});async function V(b){var j;const C=await fetch(`/api/gis-service/${encodeURIComponent(b)}`);if(!C.ok){let D="Не вдалося завантажити налаштування шару";try{const O=await C.json();D=((j=O==null?void 0:O.message)==null?void 0:j.error)||(O==null?void 0:O.message)||D}catch{}throw new Error(D)}const L=await C.json();return p.value=(L==null?void 0:L.name)||null,d.value=Array.isArray(L==null?void 0:L.filters)?L.filters:null,g.value=y((L==null?void 0:L.style)||{}),s.value=((L==null?void 0:L.attributes)||[]).reduce((D,O)=>{const P=typeof(O==null?void 0:O.name)=="string"?O.name.trim():"",Y=typeof(O==null?void 0:O.ua)=="string"?O.ua.trim():"";return P&&(D[P]=Y||P),D},{}),L}function A(b,C){let L=G(b);if(!L){const j=`${location.origin}/api/vtile/${b}/ua/{z}/{x}/{y}.vmt`;L=G(b,{source:{type:"vector",tiles:[j],minzoom:0,maxzoom:14},layer:{id:b,source:b,"source-layer":b,style:(C==null?void 0:C.style)||{}},card:C==null?void 0:C.card,popup:C==null?void 0:C.popup})}return c.value=L,L}async function h(b,C){var D;const L=`/api/gis-service/${encodeURIComponent(b)}/${encodeURIComponent(C)}`,j=await fetch(L);if(!j.ok){let O="Не вдалося отримати статистику";try{const P=await j.json();O=((D=P==null?void 0:P.message)==null?void 0:D.error)||(P==null?void 0:P.message)||O}catch{}throw new Error(O)}return j.json()}function $(b){const C=new Map;return b&&(b.rules||[]).forEach(j=>{const D=(j==null?void 0:j.value)??(j==null?void 0:j.id);D!=null&&C.set(String(D),j)}),C}function B(b,C,L,j,D){if(typeof(C==null?void 0:C.color)=="string"&&C.color.trim())return C.color.trim();const O=o.config.colors||{};if(O[b])return O[b];const Y=$(L==null?void 0:L.style).get(b);return typeof(Y==null?void 0:Y.color)=="string"&&Y.color.trim()?Y.color.trim():n[D%n.length]}function F(b,C,L,j){var D;return(C==null?void 0:C.text)||(C==null?void 0:C.label)||(C==null?void 0:C.name)||(C==null?void 0:C[`${j}_text`])||((D=$(L==null?void 0:L.style).get(b))==null?void 0:D.label)||b}function N(b,C,L,j){if(!b)return;const D=y((C==null?void 0:C.style)||g.value)||{},O=j.trim();if(!O)return;const P={...D.colors||{},...o.config.colors||{}};O===j&&L.forEach(Y=>{Y.color.trim()&&(P[Y.id]=Y.color)}),b.setStyle({...D,type:D.type||"polygon",colorAttr:O,opacity:.8,colors:P})}async function w(){var O,P;l.value=[],a.value=null;const b=u.value,C=v.value;if(!C)return;i.value=!0;const L=await V(b);A(b,L);const j=await h(b,C),D=Array.isArray(j==null?void 0:j.rows)?j.rows.map((Y,J)=>{const K=(Y==null?void 0:Y.id)??(Y==null?void 0:Y.value),X=K!=null?String(K):"";if(!X)return null;const ae=F(X,Y,L,C),de=Number((Y==null?void 0:Y.count)??0)||0,be=B(X,Y,L,C,J);return{id:X,label:ae,count:de,color:be}}).filter(Boolean):[];l.value=D,a.value=((O=j==null?void 0:j.field)==null?void 0:O.label)||((P=j==null?void 0:j.field)==null?void 0:P.name)||null,N(c.value,L,D,C),i.value=!1}e.watch(()=>[u.value,v.value],()=>{w()},{immediate:!0});const S=e.computed(()=>"Набори даних"),T=e.computed(()=>l.value.reduce((b,C)=>b+C.count,0)),I=e.computed(()=>{var L;const b=v.value;return((L=x.value.find(j=>j.id===b))==null?void 0:L.label)||null||a.value||b||null});function E(b){return T.value?`${(b/T.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var b,C;(C=(b=c.value)==null?void 0:b.remove)==null||C.call(b)}),(b,C)=>r.value?(e.openBlock(),e.createElementBlock("div",_p,[e.createElementVNode("div",wp,[e.createElementVNode("div",null,[e.createElementVNode("h2",Ep,e.toDisplayString(S.value),1),I.value&&x.value.length===1?(e.openBlock(),e.createElementBlock("p",Bp,e.toDisplayString(I.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Np,[k.value?(e.openBlock(),e.createBlock(Qe,{key:0,class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",count:_.value,layer: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:C[1]||(C[1]=L=>r.value=!1)},[...C[3]||(C[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",vp,[x.value.length>1?(e.openBlock(),e.createElementBlock("div",Cp,[e.createElementVNode("div",Vp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,L=>(e.openBlock(),e.createElementBlock("label",{key:L.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:L.id,"onUpdate:modelValue":C[2]||(C[2]=j=>f.value=j)},null,8,$p),[[e.vModelRadio,f.value]]),e.createElementVNode("span",null,e.toDisplayString(L.label),1)]))),128))])])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("div",Ap,"Завантаження…")):l.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",Lp,e.toDisplayString(T.value),1),e.createElementVNode("ul",Fp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,L=>(e.openBlock(),e.createElementBlock("li",{key:L.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",Mp,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:L.color})},null,4),e.createElementVNode("span",Tp,e.toDisplayString(L.label),1)]),e.createElementVNode("div",Ip,[e.createElementVNode("span",Dp,e.toDisplayString(L.count),1),e.createElementVNode("span",jp,e.toDisplayString(E(L.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",Sp,"Дані відсутні"))])])):(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:C[0]||(C[0]=L=>r.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-437c8d68"]]),Op={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]"},zp={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"},Pp=["onClick"],Rp={class:"relative flex-1 min-w-[140px]"},Up=["placeholder"],qp="https://data.softpro.ua/api-user/gis-url-proxy",Yp="https://geo.rv.ua/api-user/dzk.api",In=W(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=se(),r=["xy","parcel"],i=e.computed(()=>{var V,A;const _=(A=(V=n.config)==null?void 0:V.tools)==null?void 0:A.filter(h=>r.includes(h));return _&&_.length?_:r}),l=e.computed(()=>{var _,V;return((V=(_=n.config)==null?void 0:_.placeholder)==null?void 0:V.trim())||"Пошук…"}),a=e.ref(i.value[0]);e.watch(i,_=>{_.includes(a.value)||(a.value=_[0])});const c=e.ref(""),p=e.ref(!1),d=e.ref(null);e.watch(a,()=>{c.value="",p.value=!1});function g(_){a.value=_}function s(_){if(!p.value)return;const V=d.value;V&&!V.contains(_.target)&&(p.value=!1)}e.onMounted(()=>{window.addEventListener("click",s,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",s,!0)});function f(_){return _==="xy"?"Координати":_==="parcel"?"Кадастр":"Адреси"}function y(_){const V=_.replace(/[,]+/g," ").trim();if(!V)return null;const A=V.split(/\s+/).filter(Boolean);if(A.length<2)return null;const h=A.slice(0,2).map(Number);if(!h.every(T=>Number.isFinite(T)))return null;let[$,B]=h,F=$,N=B;const w=T=>Math.abs(T)<=90,S=T=>Math.abs(T)<=180;if(!w(F)||!S(N))if(w(N)&&S(F))F=B,N=$;else return null;return{lat:F,lng:N}}function u(_){return((_==null?void 0:_.items)||[]).map((A,h)=>{var $,B,F;return{id:String((A==null?void 0:A.id)??h),title:(A==null?void 0:A.title)||(($=A==null?void 0:A.address)==null?void 0:$.label)||"Знайдений обʼєкт",lat:Number((B=A==null?void 0:A.position)==null?void 0:B.lat),lng:Number((F=A==null?void 0:A.position)==null?void 0:F.lng)}})}function m(_){const V=(_==null?void 0:_.result)||(_==null?void 0:_.data)||_;if(!V)return[];const A=V.geom_centroid;if(!A||!Array.isArray(A.coordinates))return[];const[h,$]=A.coordinates;return!Number.isFinite($)||!Number.isFinite(h)?[]:[{id:"parcel",title:V.cadnum||V.cad_num||"Земельна ділянка",lat:$,lng:h}]}function x(_){const A=_.replace(/\s+/g,"").split(":");if(console.log(A),A.length!==4)return!1;const h=[10,2,3,4];return A.every(($,B)=>$.length===h[B]&&/^\d+$/.test($))}function v(_){var A,h;const V=((A=n.config)==null?void 0:A.zoom)??17;(h=o.flyTo)==null||h.call(o,{center:[_.lng,_.lat],zoom:V})}async function k(){const _=c.value.trim();if(_){if(a.value==="xy"){const V=y(_);if(!V){ne.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}v({...V}),c.value="";return}try{const V=new URL(a.value==="here"?qp:Yp);if(a.value==="here")V.searchParams.set("searchtext",_);else{if(!x(_)){ne.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}V.searchParams.set("cad_num",_)}const A=await fetch(V.toString());if(!A.ok)throw new Error(`HTTP ${A.status}`);const h=await A.json(),$=a.value==="here"?u(h):m(h);if(!$.length)ne.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const B=$[0];v(B),c.value=""}}catch(V){const A=(V==null?void 0:V.message)||"Помилка пошуку";ne.notify({type:"error",title:"Пошук",message:A})}}}return(_,V)=>(e.openBlock(),e.createElementBlock("div",Op,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(k,["prevent"])},[i.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:d,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:V[0]||(V[0]=A=>p.value=!p.value)},[e.createElementVNode("span",null,e.toDisplayString(f(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"},[...V[2]||(V[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",zp,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,A=>(e.openBlock(),e.createElementBlock("li",{key:A,class:"px-3 py-2 cursor-pointer hover:bg-gray-100",onClick:h=>g(A)},e.toDisplayString(f(A)),9,Pp))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",Rp,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[1]||(V[1]=A=>c.value=A),placeholder:l.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,Up),[[e.vModelText,c.value,void 0,{trim:!0}]]),V[3]||(V[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"]]),Hp="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",Wp="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",Kp=W(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:r,removeControl:i}=se(),l=e.ref(null),a=e.ref(null),c=e.ref(null),p=e.ref(null);let d=null;function g(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function s(h){if(Array.from(document.styleSheets).some(F=>{var N;return(N=F==null?void 0:F.href)==null?void 0:N.includes(h)}))return;const B=document.createElement("link");B.rel="stylesheet",B.href=h,document.head.appendChild(B)}function f(h){return new Promise(($,B)=>{const F=Array.from(document.scripts).find(w=>w.src===h);if(F){if(F._loaded)return $();F.addEventListener("load",()=>$()),F.addEventListener("error",()=>B(new Error(`Failed ${h}`)));return}const N=document.createElement("script");N.src=h,N.async=!0,N.onload=()=>{N._loaded=!0,$()},N.onerror=()=>B(new Error(`Failed ${h}`)),document.head.appendChild(N)})}function y(){var $,B,F;const h=window;return h.MapboxExportControl||(($=h.mapboxgl)==null?void 0:$.MapboxExportControl)||((B=h.mapboxglExport)==null?void 0:B.MapboxExportControl)||((F=h.mapboxglExport)==null?void 0:F.default)||null}function u(){const h=document.createElementNS("http://www.w3.org/2000/svg","svg");return h.setAttribute("xmlns","http://www.w3.org/2000/svg"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("width","18"),h.setAttribute("height","18"),h.setAttribute("fill","none"),h.setAttribute("stroke","currentColor"),h.setAttribute("stroke-width","2"),h.setAttribute("stroke-linecap","round"),h.setAttribute("stroke-linejoin","round"),h.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((B,F)=>{const N=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(B).forEach(([w,S])=>{N.setAttribute(w,S)}),h.appendChild(N)}),h}function m(){const h=document.createElement("button");h.id="print-btn",h.type="button",h.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(" "),h.setAttribute("aria-label","Друк");const $=u(),B=document.createElement("span");return B.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(" "),B.textContent="Друк",B.setAttribute("aria-hidden","true"),h.appendChild($),h.appendChild(B),h.addEventListener("click",F=>{F.stopPropagation(),x()}),p.value=h,h}function x(){if(!c.value)return;c.value.style.display==="block"?k():v()}function v(){var h,$,B;c.value&&(c.value.style.display="block",(h=p.value)==null||h.classList.add("scale-105","shadow-xl"),($=a.value)==null||$.toggleCrosshair(!0),(B=a.value)==null||B.togglePrintableArea(!0),document.addEventListener("click",_))}function k(){var h,$,B;c.value&&(c.value.style.display="none",(h=p.value)==null||h.classList.remove("scale-105","shadow-xl"),($=a.value)==null||$.toggleCrosshair(!1),(B=a.value)==null||B.togglePrintableArea(!1),document.removeEventListener("click",_))}function _(h){const $=l.value;$&&(h.target&&$.contains(h.target)||k())}function V(h){const $={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};h.querySelectorAll("label, option").forEach(F=>{var w;const N=(w=F.textContent)==null?void 0:w.trim();N&&$[N]&&(F.textContent=$[N])});const B=h.querySelector("button");B&&(B.textContent="Друкувати")}function A(h){const $=h.querySelector(".mapboxgl-export-list");if(!$||!l.value)return;c.value=$;const B=h.querySelector("button");if(B&&(B.style.display="none"),h.style.display="none",!p.value){const N=m();l.value.appendChild(N)}$.style.display="none";const F="_printControlBound";if(!$[F]){const N=w=>w.stopPropagation();$.addEventListener("click",N),$.addEventListener("mousedown",N),$[F]=!0}l.value.appendChild($),V($)}return e.onMounted(async()=>{await(o==null?void 0:o());const h=n.value;if(!h)return;s(Hp),g();try{await f(Wp)}catch(F){console.warn("[MapPrintControl] load error",F);return}const $=y();if(!$)return;const B=new $({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(a.value=B,typeof B.onAdd=="function"){const F=B.onAdd.bind(B);B.onAdd=N=>{const w=F(N);return setTimeout(()=>w&&A(w),50),w}}r?r(B,"top-right"):h.addControl(B,"top-right"),d=F=>{F.key==="Escape"&&k()},document.addEventListener("keyup",d)}),e.onBeforeUnmount(()=>{k(),d&&(document.removeEventListener("keyup",d),d=null);const h=n.value;if(a.value)try{i?i(a.value):h==null||h.removeControl(a.value)}catch{}a.value=null}),(h,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:l,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-d08551cb"]]),Zp={class:"map-center-control"},Gp=W(e.defineComponent({__name:"MapCenterControl",props:{center:{},zoom:{}},setup(t){const n=t,{map:o,ready:r}=se(),i=e.ref(null),l=e.ref(null);function a(p){if(Array.isArray(p)&&p.length>=2){const[d,g]=p.slice(0,2).map(s=>Number(s));return Number.isNaN(d)||Number.isNaN(g)?null:[d,g]}if(p&&typeof p=="object"){const d=p,g=d.lng??d.lon??d.long??d.x,s=d.lat??d.y;if(g!=null&&s!=null){const f=Number(g),y=Number(s);if(!Number.isNaN(f)&&!Number.isNaN(y))return[f,y]}}if(typeof p=="string"){const d=p.split(",").map(g=>Number(g.trim()));if(d.length>=2&&d.every(g=>!Number.isNaN(g)))return[d[0],d[1]]}return null}e.watch(()=>n.center,p=>{const d=a(p);d&&(i.value=d)},{immediate:!0}),e.watch(()=>n.zoom,p=>{const d=Number(p);Number.isNaN(d)||(l.value=d)},{immediate:!0}),e.onMounted(async()=>{await(r==null?void 0:r());const p=o.value;if(p){if(!i.value){const d=p.getCenter();i.value=[d.lng,d.lat]}l.value==null&&(l.value=p.getZoom())}});function c(){const p=o.value;if(!p)return;const d=i.value||(()=>{const s=p.getCenter();return[s.lng,s.lat]})(),g=l.value??p.getZoom();p.flyTo({center:d,zoom:g})}return(p,d)=>(e.openBlock(),e.createElementBlock("div",Zp,[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(c,["stop"])},[e.createVNode(e.unref(Yn),{class:"w-4 h-4"}),d[0]||(d[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"]]),Xp={class:"cursor-coordinates"},Qp={class:"cursor-coordinates__text"},Jp=W(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Xp,[e.createElementVNode("span",Qp,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-d83db59a"]]),em={class:"minimap__wrapper"},Je="minimap-viewport",tm="minimap-viewport-layer",nm=W(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var v;const n=t,o=e.ref(null),r=e.shallowRef(null),i=(v=n.options)==null?void 0:v.active,l=e.ref(i===void 0?!1:!!i);function a(k,_){return typeof k=="number"&&Number.isFinite(k)?k:_}const c=e.computed(()=>{var h,$;const k=(h=n.options)==null?void 0:h.width,_=($=n.options)==null?void 0:$.height,V=a(n.width??k,210),A=a(n.height??_,150);return{width:`${V}px`,height:`${A}px`}});function p(){var _,V;const k=(V=(_=n.mapContext)==null?void 0:_.map)==null?void 0:V.value;if(!k||typeof k.getStyle!="function")return null;try{const A=k.getStyle();return A?JSON.parse(JSON.stringify(A)):null}catch{return null}}let d=null;function g(){var h;if(typeof window>"u"||r.value||!o.value)return;const k=p(),_=[30,50],V={container:o.value,style:k??{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:_,zoom:((h=n.options)==null?void 0:h.zoom)??3,interactive:!1,attributionControl:!1},A={...V,...n.options??{}};A.container=V.container,r.value=new maplibregl.Map(A),r.value.on("load",()=>{f(),u()})}function s(){if(!r.value)return;const k=p();k&&(r.value.once("styledata",()=>{f(),u()}),r.value.setStyle(k))}function f(){if(r.value){if(typeof r.value.isStyleLoaded=="function"&&!r.value.isStyleLoaded()){r.value.once("styledata",()=>{f(),u()});return}r.value.getSource(Je)||(r.value.addSource(Je,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),r.value.addLayer({id:tm,type:"fill",source:Je,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function y(){l.value=!l.value,l.value&&e.nextTick(()=>{var k;return(k=r.value)==null?void 0:k.resize()})}function u(){var B,F;const k=(F=(B=n.mapContext)==null?void 0:B.map)==null?void 0:F.value;if(!r.value||!k||!k.getBounds)return;if(typeof r.value.isStyleLoaded=="function"&&!r.value.isStyleLoaded()){r.value.once("styledata",()=>{u()});return}const _=k.getBounds();if(!_)return;const V=_.getNorthEast(),A=_.getSouthWest();if(!V||!A)return;const h=[[A.lng,V.lat],[V.lng,V.lat],[V.lng,A.lat],[A.lng,A.lat],[A.lng,V.lat]],$=r.value.getSource(Je);if(!$){f();return}$.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[h]},properties:{}})}function m(){var V;const k=n.mapContext,_=(V=k==null?void 0:k.map)==null?void 0:V.value;!(k!=null&&k.on)||!_||(d==null||d(),d=k.on("move",u),u())}async function x(){const k=n.mapContext;if(k){if(typeof k.ready=="function")try{await k.ready()}catch{return}m()}}return e.onMounted(()=>{g(),x()}),e.watch(()=>n.mapContext,()=>{x(),u()}),e.watch(()=>{var k,_;return(_=(k=n.mapContext)==null?void 0:k.map)==null?void 0:_.value},()=>{r.value&&(s(),x())}),e.watch(c,()=>{r.value&&e.nextTick(()=>{var k;return(k=r.value)==null?void 0:k.resize()})}),e.watch(()=>n.options,()=>{var _;d==null||d(),d=null,r.value&&(r.value.remove(),r.value=null);const k=(_=n.options)==null?void 0:_.active;typeof k=="boolean"&&(l.value=k),e.nextTick(()=>{g(),x()})},{deep:!0}),e.onBeforeUnmount(()=>{d==null||d(),d=null,r.value&&(r.value.remove(),r.value=null)}),(k,_)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":l.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:y},[e.createVNode(e.unref(Un))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",em,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:o,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(c.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,l.value]])]),_:1})],2))}}),[["__scopeId","data-v-12abb7f6"]]),om={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},rm={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},lm={class:"map-widget__overlay-grid"},im={key:0,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},am={class:"map-widget__stack"},sm={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom mb-5"},cm={class:"map-widget__stack map-widget__stack--bottom"},dm={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},um={key:0,class:"map-widget__state"},pm={key:1,class:"map-widget__state map-widget__state--error"},wt=W(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{}},setup(t){var be,fe;const n=t,o=me.useRoute(),r=me.useRouter(),i=e.ref(null),l=e.ref({}),a=e.ref(!1),c=e.ref(null),p=e.ref(!1),d=e.ref([]),g=e.computed(()=>n.id||"main"),s=e.computed(()=>{var M,U;return{height:((M=n.height)==null?void 0:M.trim())||((U=l.value)==null?void 0:U.height)||"calc(100vh - 65px)"}}),f=e.computed(()=>{var M;return((M=l.value)==null?void 0:M.name)??null}),y=e.computed(()=>{var M;return((M=l.value)==null?void 0:M.description)??null}),u=e.computed(()=>{var M;return B((M=l.value)==null?void 0:M.maps)}),m=e.computed(()=>{var U,H;const M=((U=l.value)==null?void 0:U.minZoom)??((H=l.value)==null?void 0:H.minzoom)??null;return typeof M=="number"?M:null}),x=e.computed(()=>{var U,H;const M=((U=l.value)==null?void 0:U.maxZoom)??((H=l.value)==null?void 0:H.maxzoom)??null;return typeof M=="number"?M:typeof n.maxZoom=="number"?n.maxZoom:20}),v=e.ref(null),k=e.computed(()=>{if(!v.value)return null;const{lng:M,lat:U}=v.value;return`${U.toFixed(6)}, ${M.toFixed(6)}`}),_=e.computed(()=>{var M;return((M=i.value)==null?void 0:M.ctx)??null}),V=e.computed(()=>{var M;return((M=l.value)==null?void 0:M.minimap)??null}),A=((fe=(be=e.getCurrentInstance())==null?void 0:be.appContext.config.globalProperties)==null?void 0:fe.$settings)||null,h=e.computed(()=>{const M=(A==null?void 0:A.map)||null,U=(M==null?void 0:M.boundary)??null,H=(M==null?void 0:M.katottg)??null;return!U&&!H?null:{boundary:U,katottg:H}});function $(M){return typeof M=="string"&&M.trim()?M.trim().toLowerCase():"top-left"}function B(M){return Array.isArray(M)?M:M&&typeof M=="object"?Object.values(M).filter(Boolean):[]}const F=e.computed(()=>{var M;return B((M=l.value)==null?void 0:M.widgets)}),N=["left","right"],w=e.computed(()=>{const M={left:{top:[],bottom:[]},right:{top:[],bottom:[]}},U={"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 F.value.forEach(H=>{const Z=$(H.position),q=U[Z]??{side:"left",align:"top"};M[q.side][q.align].push(H)}),M});function S(M){return Array.isArray(M)?M[0]??null:typeof M=="string"?M:null}async function T(){var U;await e.nextTick();const M=(U=i.value)==null?void 0:U.ctx;return M?(M.ready&&await M.ready(),M):null}function I(){var M,U,H;return((H=(U=(M=i.value)==null?void 0:M.ctx)==null?void 0:U.map)==null?void 0:H.value)??null}function E(){const M=I();if(!M)return null;const U=M.getCenter(),H=M.getZoom();return{x:U.lng.toFixed(5),y:U.lat.toFixed(5),z:H.toFixed(2)}}async function b(){var H;const M=await T(),U=(H=M==null?void 0:M.map)==null?void 0:H.value;U&&(typeof m.value=="number"&&U.setMinZoom(m.value),typeof x.value=="number"&&U.setMaxZoom(x.value))}function C(){const M=E();if(!M)return;const U=S(o.query.x),H=S(o.query.y),Z=S(o.query.z);U===M.x&&H===M.y&&Z===M.z||r.replace({query:{...o.query,...M}}).catch(()=>{})}function L(M,U,H=1e-6){return Math.abs(M-U)<=H}async function j(){var pe;const M=await T(),U=(pe=M==null?void 0:M.map)==null?void 0:pe.value;if(!M||!U)return;const H=parseFloat(S(o.query.x)??""),Z=parseFloat(S(o.query.y)??""),q=parseFloat(S(o.query.z)??""),z=!Number.isNaN(H),ue=!Number.isNaN(Z),ge=!Number.isNaN(q);let ye=!1;if(z&&ue){const xe=U.getCenter();(!L(xe.lng,H)||!L(xe.lat,Z))&&(U.setCenter([H,Z]),ye=!0)}ge&&U.setZoom(q),(!z||!ue||!ge||ye)&&C()}let D=null,O=null;function P(M){const U=M==null?void 0:M.lngLat;U&&(v.value={lng:U.lng,lat:U.lat})}async function Y(){const M=await T();M!=null&&M.on&&(D==null||D(),D=M.on("moveend",C),O==null||O(),O=M.on("mousemove",P))}e.onUnmounted(()=>{D==null||D(),D=null,O==null||O(),O=null});async function J(){var M,U;p.value=!1,a.value=!0,c.value=null,v.value=null;try{const H=await fetch(`/api/gis-map/${encodeURIComponent(g.value)}`);if(!H.ok)throw new Error(`Помилка завантаження (${H.status})`);const Z=await H.json();l.value=Z,l.value.widgets=Z.widgets,d.value=Z.tools||["home","print"];const q=await T();q&&(Z.center&&((M=q.setCenter)==null||M.call(q,Z.center)),Z.zoom&&((U=q.setZoom)==null||U.call(q,Z.zoom))),await b(),await j(),await Y(),p.value=!0}catch(H){c.value=(H==null?void 0:H.message)||"Не вдалося завантажити карту"}finally{a.value=!1}}const K=e.computed(()=>{var Z;const M=new Map;return B((Z=l.value)==null?void 0:Z.layers).forEach(q=>{q!=null&&q.id&&M.set(q.id,{...q})}),F.value.filter(q=>(q==null?void 0:q.type)==="layers").flatMap(q=>{var z;return B((z=q==null?void 0:q.config)==null?void 0:z.layers)}).forEach(q=>{if(!(q!=null&&q.id))return;const z=M.get(q.id)||{};M.set(q.id,{...z,...q,actions:q.actions||z.actions||null,name:z.name||q.name||q.title||z.title||q.id,title:z.title||q.title||z.name||null,visible:z.visible??q.visible??!0})}),Array.from(M.values())}),X=e.ref([]);function ae(M){X.value.includes(M)?X.value=X.value.filter(U=>U!==M):X.value.push(M)}const de=e.computed(()=>M=>X.value.includes(M.id));return e.watch([m,x],()=>{b()},{immediate:!0}),e.watch(g,()=>{J()}),e.onMounted(()=>{J()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{j()}),(M,U)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(s.value)},[e.createVNode(Nn,{ref_key:"mapViewRef",ref:i,class:"map-widget__view"},{default:e.withCtx(()=>{var H,Z;return[h.value?(e.openBlock(),e.createBlock($n,{key:0,"layer-id":"app-boundary",boundary:h.value.boundary,katottg:h.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createElementBlock("div",om,[k.value?(e.openBlock(),e.createBlock(Jp,{key:0,coordinates:k.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(nm,{"map-context":_.value,options:V.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",rm,[d.value.includes("home")?(e.openBlock(),e.createBlock(Gp,{key:0,center:((H=l.value)==null?void 0:H.center)||null,zoom:((Z=l.value)==null?void 0:Z.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),d.value.includes("print")?(e.openBlock(),e.createBlock(Kp,{key:1})):e.createCommentVNode("",!0)]),p.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",lm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(N,q=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:q},[e.createElementVNode("div",{class:e.normalizeClass(["map-widget__side",`map-widget__side--${q}`])},[w.value[q].top.length?(e.openBlock(),e.createElementBlock("div",im,[e.createElementVNode("div",am,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value[q].top,z=>{var ue,ge,ye,pe,xe,Ne,Ue,qe;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:z.id||z.type,class:"map-overlay__item"},[z.type==="info"?(e.openBlock(),e.createBlock(An,{key:0,title:((ue=z.config)==null?void 0:ue.title)||z.title||null,content:((ge=z.config)==null?void 0:ge.content)||"",links:u.value,"map-name":f.value,"map-description":y.value},null,8,["title","content","links","map-name","map-description"])):z.type==="catalog"?(e.openBlock(),e.createBlock(Mn,{key:1,api:((ye=z.config)==null?void 0:ye.api)||null},null,8,["api"])):z.type==="layers"?(e.openBlock(),e.createBlock(Fn,{key:2,layers:K.value,onAction:U[0]||(U[0]=Et=>ae(Et.layerId)),config:z.config},null,8,["layers","config"])):z.type==="basemaps"?(e.openBlock(),e.createBlock(yt,{key:3,layers:((pe=z.config)==null?void 0:pe.layers)||null,"default-layer":((xe=z.config)==null?void 0:xe.default)||null,title:z.title||((Ne=z.config)==null?void 0:Ne.title)||null},null,8,["layers","default-layer","title"])):z.type==="legend"?(e.openBlock(),e.createBlock(xt,{key:4,items:((Ue=z.config)==null?void 0:Ue.items)||[]},null,8,["items"])):z.type==="filters"&&de.value(z)?(e.openBlock(),e.createBlock(ht,{key:5,"layer-id":(qe=z.config)==null?void 0:qe.layer,onClose:ae},null,8,["layer-id"])):z.type==="dataset"||z.type==="attribute"?(e.openBlock(),e.createBlock(Tn,{key:6,config:z.config},null,8,["config"])):z.type==="search"?(e.openBlock(),e.createBlock(In,{key:7,config:z.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,z.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),w.value[q].bottom.length?(e.openBlock(),e.createElementBlock("div",sm,[e.createElementVNode("div",cm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value[q].bottom,z=>{var ue,ge,ye,pe,xe,Ne,Ue,qe;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:z.id||z.type,class:"map-overlay__item"},[z.type==="info"?(e.openBlock(),e.createBlock(An,{key:0,title:((ue=z.config)==null?void 0:ue.title)||z.title||null,content:((ge=z.config)==null?void 0:ge.content)||"",links:u.value,"map-name":f.value,"map-description":y.value},null,8,["title","content","links","map-name","map-description"])):z.type==="catalog"?(e.openBlock(),e.createBlock(Mn,{key:1,api:((ye=z.config)==null?void 0:ye.api)||null},null,8,["api"])):z.type==="layers"?(e.openBlock(),e.createBlock(Fn,{key:2,layers:K.value,onAction:U[1]||(U[1]=Et=>ae(Et.layerId)),config:z.config},null,8,["layers","config"])):z.type==="basemaps"?(e.openBlock(),e.createBlock(yt,{key:3,layers:((pe=z.config)==null?void 0:pe.layers)||null,"default-layer":((xe=z.config)==null?void 0:xe.default)||null,title:z.title||((Ne=z.config)==null?void 0:Ne.title)||null},null,8,["layers","default-layer","title"])):z.type==="legend"?(e.openBlock(),e.createBlock(xt,{key:4,items:((Ue=z.config)==null?void 0:Ue.items)||[]},null,8,["items"])):z.type==="filters"&&de.value(z)?(e.openBlock(),e.createBlock(ht,{key:5,"layer-id":(qe=z.config)==null?void 0:qe.layer,onClose:ae},null,8,["layer-id"])):z.type==="dataset"||z.type==="attribute"?(e.openBlock(),e.createBlock(Tn,{key:6,config:z.config},null,8,["config"])):z.type==="search"?(e.openBlock(),e.createBlock(In,{key:7,config:z.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,z.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2),q==="left"?(e.openBlock(),e.createElementBlock("div",dm)):e.createCommentVNode("",!0)],64))),64))]),e.createVNode(vn),e.createVNode(Vn)],64)):e.createCommentVNode("",!0)]}),_:1},512),a.value?(e.openBlock(),e.createElementBlock("div",um,"Завантаження карти…")):c.value?(e.openBlock(),e.createElementBlock("div",pm,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-ce95923f"]]);function mm(t){t.component("MapCustom",wt)}te.MapWidget=wt,te.Register=Fi,te.Service=pu,te.default=wt,te.install=mm,te.template1=Vt,te.template2=$t,te.template3=At,te.template4=St,te.template5=Lt,Object.defineProperties(te,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
97
|
+
${V}`:V}c.value=!1,p.value=[]}function y(){c.value=!1,p.value=[]}function u(){const x=l.value==="html"?"html":"list",N={card_mode:x};x==="html"?N.html=a.value:x==="list"&&(N.list=i.value),r("save","card",N)}const m=[{value:"all",label:"All"},{value:"list",label:"List"},{value:"none",label:"None"},{value:"html",label:"HTML"}];return(x,N)=>(e.openBlock(),e.createElementBlock("div",Jc,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:s,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(Qc,{modelValue:l.value,"onUpdate:modelValue":N[0]||(N[0]=k=>l.value=k),options:m},null,8,["modelValue"]),e.createElementVNode("div",ed,[l.value==="list"?(e.openBlock(),e.createBlock(Ne,{key:0,modelValue:i.value,"onUpdate:modelValue":N[1]||(N[1]=k=>i.value=k),"columns-scheme":d,"form-scheme":g,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):l.value==="html"?(e.openBlock(),e.createBlock(Mt,{key:1,modelValue:a.value,"onUpdate:modelValue":N[2]||(N[2]=k=>a.value=k),language:"html",theme:"vs-light",class:"flex-1 min-h-0"},null,8,["modelValue"])):e.createCommentVNode("",!0)]),e.createVNode(Ve,{visible:c.value,"onUpdate:visible":N[3]||(N[3]=k=>c.value=k),selection:p.value,"onUpdate:selection":N[4]||(N[4]=k=>p.value=k),fields:t.fields,title:"Імпорт полів для картки","id-prefix":"import-card",onConfirm:f,onCancel:y},null,8,["visible","selection","fields"])]))}}),nd={class:"flex flex-col flex-1 min-h-0"},od=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 i=e.ref(o.columns||[]);e.watch(()=>o.columns,u=>i.value=u||[],{immediate:!0}),e.watch(i,u=>r("update:columns",u),{deep:!0,immediate:!0});const l=e.ref("list"),a=e.ref(!1),c=e.ref([]),p=[{key:"id",label:"Name"},{key:"label",label:"UA"},{key:"type",label:"Тип"}],d={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 g(){c.value=i.value.map(u=>u.name||u.id),a.value=!0}function s(){var N;const u=[...i.value],m=((N=o.fields)==null?void 0:N.filter(k=>c.value.includes(k.name)))||[],x=Ae(u,m,{selectedKeys:c.value,resolveKey:k=>we(k)});i.value=x,a.value=!1,c.value=[]}function f(){a.value=!1,c.value=[]}function y(){let u=[];l.value==="all"?u=o.fields||[]:l.value==="none"?u=[]:u=i.value,r("save",u)}return(u,m)=>(e.openBlock(),e.createElementBlock("div",nd,[e.createElementVNode("div",{class:"flex justify-between mb-3 gap-2"},[e.createElementVNode("button",{onClick:g,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:y,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium bg-gradient-to-r from-sky-400 to-blue-400 hover:from-sky-500 hover:to-blue-500 text-white shadow-sm px-4 py-2 h-9 text-xs transition-all duration-300"}," Зберегти фільтр ")]),l.value==="list"?(e.openBlock(),e.createBlock(Ne,{key:0,modelValue:i.value,"onUpdate:modelValue":m[0]||(m[0]=x=>i.value=x),"columns-scheme":p,"form-scheme":d,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])):e.createCommentVNode("",!0),e.createVNode(Ve,{visible:a.value,"onUpdate:visible":m[1]||(m[1]=x=>a.value=x),selection:c.value,"onUpdate:selection":m[2]||(m[2]=x=>c.value=x),fields:t.fields,title:"Імпорт полів","id-prefix":"import-filter",onConfirm:s,onCancel:f},null,8,["visible","selection","fields"])]))}}),vn=e.defineComponent({__name:"MapView",setup(t,{expose:n}){const o=e.ref(null),r=e.ref(null),i=Sc({container:o,mapOptions:{style:{version:8,sources:{},layers:[]},center:[30.5234,50.4501],zoom:9,minZoom:4,maxZoom:14,doubleClickZoom:!1},controls:{navigation:!0,scale:!0}});async function l(){var d;await e.nextTick();const p=(d=i.map)==null?void 0:d.value;p!=null&&p.resize&&p.resize()}function a(){typeof ResizeObserver>"u"||r.value||!o.value||(r.value=new ResizeObserver(()=>{l()}),r.value.observe(o.value))}function c(){var p;(p=r.value)==null||p.disconnect(),r.value=null}return e.onMounted(()=>{l(),a(),window.addEventListener("resize",l)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",l),c()}),n({ctx:i}),(p,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"el",ref:o,class:"w-full h-full rounded-xl overflow-hidden"},[e.renderSlot(p.$slots,"default")],512))}}),rd=e.defineComponent({__name:"MapDataLayer",props:{id:{},layer:{},styleYaml:{}},setup(t,{expose:n}){var f;const{map:o,flyTo:r,setZoom:i}=se(),l=t,a=l.id;String(l.id);const c=`${location.origin}/api/vtile/${l.id}/ua/{z}/{x}/{y}.vmt?all=1`,p=G(a,{source:{type:"vector",tiles:[c],minzoom:0,maxzoom:14},popup:l.layer.popup,layer:{style:(f=l.layer)==null?void 0:f.style}});n({layerHandle:p}),r({center:l.layer.center||[30,50],animate:!1}),i(11),G("point",{point:l.layer.center,style:{color:"orange"}});let d=null;function g(){d&&clearTimeout(d),d=setTimeout(()=>{d=null,s().catch(y=>console.error("Failed to update map layer",y))},300)}async function s(){o.value&&p.setStyle(l.styleYaml)}return e.watch(()=>l.styleYaml,g),e.onBeforeUnmount(()=>{p.remove()}),(y,u)=>null}}),Re=e.ref(null);function ld(){Re.value=null}function id(t){const n=e.ref(!1),o=()=>typeof t=="string"?t:t.value;e.watch(Re,a=>{a!==o()&&n.value&&(n.value=!1)});function r(){Re.value=o(),n.value=!0}function i(){Re.value===o()&&(Re.value=null),n.value=!1}function l(){n.value?i():r()}return{isOpen:n,open:r,close:i,toggle:l}}const ad={class:"map-filter"},sd={class:"map-filter__header"},cd={class:"map-filter__title"},dd={"aria-hidden":"true"},gt="#map-filter-popover-host",Qe=W(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)??""}),i=e.computed(()=>`filter-popover-${r.value}`),{isOpen:l,close:a,toggle:c}=id(i),p=e.reactive({top:0,left:0,transform:"translateX(-50%)"}),d=e.ref(null),g=e.ref(null);let s=null;const f=e.ref({}),y=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0}),u=e.computed(()=>l.value),m=e.computed(()=>{var D;return Array.isArray((D=o.layer)==null?void 0:D.filters)?o.layer.filters:[]}),x=e.computed(()=>m.value.length>0),N=e.computed(()=>{var D;return((D=o.layer)==null?void 0:D.name)??""}),k=e.computed(()=>m.value),_=e.ref(null),V=e.computed(()=>m.value.length),A=e.computed(()=>V.value<=2),h=e.computed(()=>A.value?"body":typeof window>"u"||_.value?gt:"body"),$=e.computed(()=>!u.value||!A.value?{}:{position:"absolute",top:`${p.top}px`,left:`${p.left}px`,transform:p.transform,zIndex:1e3,width:"280px"});function B(){a()}function F(D,O,P=8){const Y=window.scrollY+P,J=window.scrollY+window.innerHeight-P;let K=D;return K+O>J&&(K=J-O),K<Y&&(K=Y),K}function v(){var ae,de,be;if(!d.value||!A.value)return;const D=d.value.getBoundingClientRect(),O=window.scrollX+8,P=window.scrollX+window.innerWidth-8,Y=((ae=g.value)==null?void 0:ae.offsetWidth)||280,J=((de=g.value)==null?void 0:de.offsetHeight)||0;let K=0,X=0;if((be=o.catalogAnchor)!=null&&be.value){const fe=o.catalogAnchor.value.getBoundingClientRect(),M=fe.top+window.scrollY;K=F(M,J,8);const U=fe.right+window.scrollX+12,H=P-Y,Z=O;X=Math.min(Math.max(U,Z),Math.max(Z,H))}else{const fe=D.bottom+window.scrollY+8;K=F(fe,J,8);let M=D.left+window.scrollX;M<O&&(M=O),M+Y>P&&(M=Math.max(O,P-Y)),X=M}p.left=X,p.top=K,p.transform="none"}function w(){A.value||j(),c(),l.value&&A.value&&e.nextTick(()=>{v(),C(),requestAnimationFrame(()=>v())})}function S(){o.disabled||w()}e.watch(u,D=>{D&&A.value?e.nextTick(()=>{v(),C(),requestAnimationFrame(()=>v())}):(L(),A.value||j())}),e.watch(k,()=>{!u.value||!A.value||e.nextTick(()=>v())},{deep:!0}),e.watch(A,D=>{u.value&&(D?e.nextTick(()=>{v(),C()}):(L(),j()))}),e.watch(()=>o.disabled,D=>{D&&(a(),f.value={})});function T(){!u.value||!A.value||v()}function I(D){const O=r.value;if(!O)return;const P=G(O);if(!(P!=null&&P.setFilter))return;f.value=D;const Y=Object.entries(D).map(([J,K])=>`${J}=${K}`).join("|");P.setFilter(Y)}function E(D){if(!o.disabled)return;const O=D.currentTarget;if(!O)return;const P=O.getBoundingClientRect();y.left=P.left+P.width/2+window.scrollX,y.top=P.bottom+8+window.scrollY,y.visible=!0}function b(){y.visible=!1}e.onMounted(()=>{j(),window.addEventListener("resize",T),window.addEventListener("scroll",T,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",T),window.removeEventListener("scroll",T,!0),L()});function C(){L(),!(!g.value||!A.value)&&(s=new ResizeObserver(()=>{!u.value||!A.value||v()}),s.observe(g.value))}function L(){s&&(s.disconnect(),s=null)}function j(){typeof window>"u"||typeof document>"u"||(_.value=document.querySelector(gt))}return(D,O)=>x.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mapLayer-filter",ref_key:"anchor",ref:d},[e.createElementVNode("a",{class:e.normalizeClass(["mapLayer-filter__trigger",{"mapLayer-filter__trigger--disabled":o.disabled}]),href:"#",onClick:e.withModifiers(S,["prevent","stop"]),onMouseenter:E,onMouseleave:b,onFocus:E,onBlur:b},[...O[2]||(O[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:h.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":!A.value}]),style:e.normalizeStyle($.value),ref_key:"panel",ref:g,onClick:O[1]||(O[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ad,[e.createElementVNode("div",sd,[e.createElementVNode("h3",cd,e.toDisplayString(N.value||"Фільтр"),1),e.createElementVNode("button",{type:"button",class:"map-filter__close",onClick:B},[e.createElementVNode("span",dd,[e.createVNode(e.unref(Kn),{class:"h-4 w-4"})]),O[3]||(O[3]=e.createElementVNode("span",{class:"sr-only"},"Закрити",-1))])]),e.createVNode(e.unref(n),{view:"inline",schema:k.value,value:f.value,limit:10,onChange:O[0]||(O[0]=P=>I(P.data)),width:250},null,8,["schema","value"])])],6)],8,["to"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[y.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-badge__hint",style:e.normalizeStyle({top:`${y.top}px`,left:`${y.left}px`})},e.toDisplayString(y.text),5)):e.createCommentVNode("",!0)]))],512)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-e46ae0d6"]]),ud={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"},ht=W(e.defineComponent({__name:"MapFilterWidget",props:{filters:{},title:{},layerId:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",ud,[e.createVNode(Qe,{layer:{filters:t.filters,id:t.layerId},count:t.filters.length},null,8,["layer","count"])])]))}}),[["__scopeId","data-v-2bd0fbac"]]),pd={class:"flex flex-row gap-x-3 z-10 relative widget"},md=["onClick"],fd=["src","alt"],yt=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=G("base",{source:{type:"raster",tiles:[n[o.value].url]},beforeId:0});function i(l){if(o.value=l,!n[l].url)return r.setVisible(!1);r.setVisible(!0),r.setTiles([n[l].url])}return(l,a)=>(e.openBlock(),e.createElementBlock("div",pd,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,(c,p)=>e.createElementVNode("div",{key:p,onClick:d=>i(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"])},[c.preview?(e.openBlock(),e.createElementBlock("img",{key:0,src:c.preview,alt:c.title,class:"object-cover rounded-lg w-12 h-12"},null,8,fd)):e.createCommentVNode("",!0)],2)],8,md)),64))]))}}),gd={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%"}},hd={class:"flex flex-col gap-1 p-5"},yd={class:"flex items-center justify-between w-full text-sm text-gray-800 ml-2"},xt=e.defineComponent({__name:"MapLegendWidget",props:{items:{}},setup(t){const n=t,{map:o,ready:r}=se(),i=e.ref([]);let l=null;function a(g){return g?g.map((s,f)=>{var m;const y=(s==null?void 0:s.name)||(s==null?void 0:s.label)||(s==null?void 0:s.title)||(s==null?void 0:s.id)||`Layer ${f+1}`,u=(s==null?void 0:s.color)||(s==null?void 0:s.fill)||((m=s==null?void 0:s.paint)==null?void 0:m.color)||"#3388ff";return{id:`${y}-${f}`,label:y,color:u}}):[]}function c(g){return g!=null&&g.layers?g.layers.filter(s=>{const f=s.paint||{};return f["fill-color"]||f["line-color"]||f["circle-color"]}).map((s,f)=>{var m;const y=s.paint||{},u=y["fill-color"]||y["line-color"]||y["circle-color"]||"#3388ff";return{id:s.id||`layer-${f}`,label:((m=s.metadata)==null?void 0:m.title)||s.id||`Layer ${f+1}`,color:u}}):[]}async function p(){var f;await r();const g=o.value;if(!g)return;const s=(f=g.getStyle)==null?void 0:f.call(g);i.value=c(s)}function d(){const g=o.value;if(!g)return;l==null||l();const s=()=>p();g.on("styledata",s),l=()=>g.off("styledata",s)}return e.watch(()=>n.items,async g=>{g!=null?(i.value=a(g),l==null||l()):(await r(),d(),p())},{immediate:!0,deep:!0}),e.onMounted(async()=>{(n.items===void 0||n.items===null)&&(await r(),d(),p())}),e.onBeforeUnmount(()=>{l==null||l(),l=null}),(g,s)=>i.value.length?(e.openBlock(),e.createElementBlock("div",gd,[e.createElementVNode("div",hd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,f=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"flex items-center"},[e.createElementVNode("span",{class:"shrink-0 size-2.5 inline-block me-2.5 h-[10px] w-[10px] rounded-full",style:e.normalizeStyle({background:f.color})},null,4),e.createElementVNode("span",yd,[e.createElementVNode("span",null,e.toDisplayString(f.label),1)])]))),128))])])):e.createCommentVNode("",!0)}});function xd(){const{map:t,ready:n}=se(),o=e.ref(null),r=e.ref(null),i=e.ref(null),l=e.ref(null);let a=[];function c(){a.forEach(f=>f()),a=[]}const p=f=>{var m;o.value=[f.point.x,f.point.y];const y=t.value.queryRenderedFeatures(f.point);if(!(y!=null&&y.length)){d();return}const u=G(y[0].source)||G(y[0].layer.id);u!=null&&u.popup&&(r.value=((m=u.popup)==null?void 0:m.fields)||u.popup,l.value=y[0].properties)},d=()=>{r.value=null,l.value=null,o.value=null};async function g(){await n(),t.value&&(c(),t.value.on("mousemove",p),t.value.on("mouseleave",d))}function s(){c(),r.value=null,l.value=null,o.value=null}return n().then(g),{popupCoords:o,popupFields:r,popupValues:l,disable:s,title:i}}const kd={class:"min-w-[200px] max-w-[280px] rounded-lg border border-slate-200 bg-white/90 p-3 text-xs shadow-lg backdrop-blur"},bd={class:"space-y-1.5"},_d={class:"font-bold text-slate-700"},wd={class:"text-slate-700"},Nn=e.defineComponent({__name:"MapPopup",setup(t){const{popupCoords:n,popupFields:o,popupValues:r,disable:i}=xd(),l=e.ref(null),a=e.ref({left:"-9999px",top:"-9999px"}),c=e.computed(()=>{const f=o.value||[],y=r.value||{};return f.filter(u=>(u==null?void 0:u.meta)!=="title").map((u,m)=>g(u,y,m)).filter(u=>u.label)}),p=e.computed(()=>{const f=o.value||[],y=r.value||{},u=f.find(m=>(m==null?void 0:m.meta)==="title");return u?g(u,y,0):null}),d=e.computed(()=>{var y;const f=c.value;return(y=p.value)!=null&&y.value?[{...p.value,key:`${p.value.key}-title`,label:"Назва"},...f]:f});function g(f,y,u){const m=f.name||f.label||f.title||`field-${u}`,x=f.label||f.title||f.name||m,N=f.name?y[f.name]:void 0,k=f.name?y[`${f.name}_text`]:void 0;return{key:m,label:x,value:k??N??f.value??null}}function s(){if(!d.value.length||!n.value||!l.value){a.value={left:"-9999px",top:"-9999px"};return}const[f,y]=n.value;a.value={left:`${f+18}px`,top:`${y+18}px`}}return e.watch([n,d],()=>{e.nextTick(()=>s())}),e.onBeforeUnmount(()=>{i()}),(f,y)=>d.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popupRef",ref:l,class:"absolute pointer-events-none z-20",style:e.normalizeStyle(a.value)},[e.createElementVNode("div",kd,[e.createElementVNode("div",bd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.key,class:"flex flex-col"},[e.createElementVNode("span",_d,e.toDisplayString(u.label),1),e.createElementVNode("span",wd,e.toDisplayString(u.value??"—"),1)]))),128))])])],4)):e.createCommentVNode("",!0)}});function Ed(){const{map:t,ready:n}=se(),o=me.useRoute(),r=me.useRouter(),i=e.ref(null),l=e.ref(null),a=e.ref(null),c=e.ref(!1),p=e.computed(()=>c.value||!!i.value||!!a.value);let d=null,g=!1;function s(){i.value=null,l.value=null,a.value=null,c.value=!1}function f(){if(d){try{d()}catch{}d=null}}async function y(){await n();const h=t.value;h&&(f(),s(),h.on("click",u),d=()=>h.off("click",u),A(k()))}function u(h){const $=t.value;if(!$)return;const F=$.queryRenderedFeatures(h.point)[0];if(!F){s(),V(null);return}const v=G(F.source);m(F,v==null?void 0:v.card)}async function m(h,$){var F,v;if(!((F=h==null?void 0:h.properties)!=null&&F.id))return;const B=new URLSearchParams;B.set("layer",h.source),B.set("id",String((v=h.properties)==null?void 0:v.id)),c.value=!0,a.value=null,i.value=null,l.value=h||null;try{const w=await fetch(`/api/map-format?${B.toString()}`);if(!w.ok)throw new Error(`Failed (${w.status})`);const S=await w.json();i.value={rows:S.rows||{},fields:$||[],html:S.html||null},g||V(l.value)}catch{a.value="Не вдалося завантажити дані",i.value=null,ne.notify({type:"error",title:"Помилка",message:"Не вдалося завантажити дані"})}finally{c.value=!1}}function x(){s(),V(null)}function N(){f(),s()}n().then(y),e.onBeforeUnmount(()=>N());function k(){const h=Array.isArray(o.query.info)?o.query.info[0]:o.query.info;return typeof h!="string"?null:h.trim()||null}function _(h){var v,w;const $=(h==null?void 0:h.source)??((v=h==null?void 0:h.layer)==null?void 0:v.id),B=(w=h==null?void 0:h.properties)==null?void 0:w.id;return!$||B===void 0||B===null?null:`${$},${B}`.trim()||null}function V(h){const $=_(h),B=k();if($===B)return;const F={...o.query};$?F.info=$:delete F.info,r.push({query:F}).catch(()=>{})}async function A(h){if(!h){s();return}if(h===_(l.value))return;const[$,B]=h.split(","),F=$==null?void 0:$.trim(),v=B==null?void 0:B.trim();if(!F||!v){s(),V(null);return}g=!0;try{const w=G(F);await m({source:F,properties:{id:v}},w==null?void 0:w.card)}finally{g=!1}}return e.watch(()=>k(),h=>{h!==_(l.value)&&(g=!0,A(h).finally(()=>{g=!1}))}),{card:i,cardFeature:l,cardError:a,cardLoading:c,isOpen:p,close:x}}function Bd(){const{map:t,ready:n}=se(),o=e.ref([]),r=e.ref(0),i=e.ref(0),l=e.ref(!1),a=e.ref(null),c=e.ref({}),p=e.ref(null),d=e.ref([]),g=e.computed(()=>o.value[i.value]||null),s=e.computed(()=>o.value.length>0);let f=null;const y=()=>{f==null||f.remove(),f=null},u=B=>B?B.type==="FeatureCollection"?B:B.type==="Feature"?{type:"FeatureCollection",features:[B]}:B.type&&Array.isArray(B.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:B,properties:{}}]}:Array.isArray(B.features)?{type:"FeatureCollection",features:B.features}:B.geometry?u(B.geometry):null:null,m=()=>({type:"line",color:"#0a57ff",width:4,opacity:.95}),x=B=>Number(B.toFixed(5)),N=async B=>{if(await n(),!t.value)return;const F=u(B);F&&(y(),f=G("feature-highlight",{source:{type:"geojson",data:F},style:m()},t))},k=async(B,F,v)=>{var T,I;const[w,S]=[x(B),x(F)];p.value={x:w,y:S},d.value=v,l.value=!0,a.value=null,o.value=[],c.value={},i.value=0;try{const E=v.map(async D=>{const O=`/api/map-info-point?x=${w}&y=${S}&layers=${D}`,P=await fetch(O);if(!P.ok)return null;const Y=await P.json();if(!Y.count)return null;const K=await(await fetch(`${O}&index=0`)).json();return{layerId:D,data:K,count:Y.count}}),C=(await Promise.all(E)).filter(Boolean);if(C.length===0){r.value=0;return}o.value=C.map(D=>D.data);const[L]=o.value;r.value=C.reduce((D,O)=>D+(O.count||0),0),c.value[0]=L;const j=((T=L==null?void 0:L.data)==null?void 0:T.geom_4326)??((I=L==null?void 0:L.data)==null?void 0:I.geom);await N(j)}catch(E){a.value=E.message}finally{l.value=!1}},_=async B=>{if(!p.value||!d.value.length)return;if(c.value[B]){o.value[B]=c.value[B];return}const{x:F,y:v}=p.value,w=d.value.join(","),S=`/api/map-info-point?x=${F}&y=${v}&index=${B}&layers=${w}`;try{l.value=!0;const T=await fetch(S);if(!T.ok)throw new Error("Failed to fetch feature by index");const I=await T.json();o.value[B]=I,c.value[B]=I}catch(T){a.value=T.message}finally{l.value=!1}},V=async()=>{i.value<r.value-1&&(i.value+=1,c.value[i.value]||await _(i.value))},A=async()=>{i.value>0&&(i.value-=1,c.value[i.value]||await _(i.value))},h=()=>{o.value=[],r.value=0,i.value=0,c.value={},p.value=null,d.value=[],y()};e.watch(i,async()=>{var F,v;const B=g.value;if(B){const w=((F=B==null?void 0:B.data)==null?void 0:F.geom_4326)??((v=B==null?void 0:B.data)==null?void 0:v.geom);await N(w)}});let $=null;return e.onMounted(async()=>{await n(),t.value&&($=async B=>{const{lng:F,lat:v}=B.lngLat,w=G(),T=Object.entries(w).map(([I,E])=>{var b,C,L,j;return{id:I,service:((b=E==null?void 0:E.opts)==null?void 0:b.service)??((L=(C=E==null?void 0:E.opts)==null?void 0:C.source)==null?void 0:L.service)??null,count:((j=E==null?void 0:E.opts)==null?void 0:j.count)??null,visible:(()=>{var D;try{return((D=t.value)==null?void 0:D.getLayer(I))?t.value.getLayoutProperty(I,"visibility")!=="none":!0}catch{return!0}})()}}).filter(I=>I.service==="ogc"&&I.visible).map(I=>I.id);T.length>0&&await k(F,v,T)},t.value.on("dblclick",$))}),e.onBeforeUnmount(()=>{t.value&&$&&t.value.off("dblclick",$),y()}),{features:o,count:r,index:i,current:g,loading:l,error:a,active:s,next:V,prev:A,close:h}}const vd=e.defineComponent({__name:"LayerSwitcher",props:{title:{},url:{},id:{},buttonText:{}},emits:["activate"],setup(t,{emit:n}){const o=t,r=n;function i(d){const g=d.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(g)return g;const s=Array.from(d).map(f=>f.charCodeAt(0).toString(16)).join("").slice(0,8);return s?`layer-${s}`:"layer-temp"}const l=e.computed(()=>{var d;return((d=o.id)==null?void 0:d.trim())||i(o.title)}),a=e.computed(()=>o.buttonText||"Показати шар");function c(){return{id:l.value,title:o.title,url:o.url}}function p(){r("activate",c())}return(d,g)=>(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(d.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.value),1)])]))}}),ce=e.ref([]);function Nd(t,n){return typeof t!="string"?"":t.includes("{{")?t.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*}}/g,(o,r)=>{const i=String(r||"").trim();if(!i)return"";const l=n[i];return l!=null?String(l):""}):t}function kt(t){return t==null?"":String(t).trim()}function bt(t){var n,o;(o=(n=t==null?void 0:t.handle)==null?void 0:n.remove)==null||o.call(n)}function Cn(t){function n(l,a={},c,p){var x,N;const d=kt(l==null?void 0:l.id),g=((x=l==null?void 0:l.title)==null?void 0:x.trim())||d,s=((N=l==null?void 0:l.url)==null?void 0:N.trim())||"";if(!d||!s)return;const f=Nd(s,a);if(!f)return;const y=p??t;if(!y)return;const u=ce.value.findIndex(k=>k.id===d);u!==-1&&(bt(ce.value[u]),ce.value.splice(u,1));let m=null;try{m=G(d,{source:{type:"raster",tiles:[f],tileSize:l.tileSize??256,minzoom:l.minzoom??0,maxzoom:l.maxzoom??19},layer:{id:d,type:"raster",source:d,paint:{"raster-opacity":l.opacity??.85}}},y)}catch(k){const _=(k==null?void 0:k.message)??"";if(!(typeof _=="string"&&_.includes("Map provider")))throw k;return}ce.value=[...ce.value,{id:d,title:g,originalUrl:s,resolvedUrl:f,owner:c??null,handle:m??null}]}function o(l,a){const c=kt(l);if(!c)return;const p=ce.value.findIndex(g=>g.id===c&&(!a||g.owner===a));if(p===-1)return;const[d]=ce.value.splice(p,1);bt(d)}function r(l){if(!ce.value.length)return;const a=[];ce.value.forEach(c=>{(l?c.owner===l:!0)?bt(c):a.push(c)}),ce.value=a}function i(l,a){const c=kt(l);return c?ce.value.some(p=>p.id===c&&(!a||p.owner===a)):!1}return{temporaryLayers:ce,activateTemporaryLayer:n,deactivateTemporaryLayer:o,clearTemporaryLayers:r,isTemporaryLayerActive:i}}const Cd={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"},Vd={class:"flex items-start justify-between gap-3 border-b border-slate-200 px-4 py-3"},$d={class:"min-w-0 flex-1"},Ad={class:"text-base font-semibold text-slate-900 truncate"},Sd={key:0,class:"flex gap-1 mt-1"},Ld=["disabled"],Fd=["disabled"],Md={class:"flex-1 overflow-y-auto px-4 py-3 space-y-3 text-sm text-slate-700"},Td={key:0,class:"text-center text-xs text-slate-500"},Id={key:1,class:"text-center text-xs text-red-500"},Dd={key:2,class:"prose prose-sm max-w-none space-y-3"},jd=["innerHTML"],Od=["innerHTML"],zd={key:3,class:"space-y-2"},Pd={class:"text-xs font-semibold text-slate-500 uppercase tracking-wide"},Rd={key:0,class:"inline-block rounded px-2 py-0.5 text-xs font-semibold text-yellow-800",style:{"background-color":"rgba(250,204,21,0.25)"}},Ud={key:1,class:"text-sm text-right text-slate-800 whitespace-pre-wrap"},qd={key:4,class:"text-center text-xs text-slate-400"},Yd="map:temporary-layer-request",Vn=W(e.defineComponent({__name:"MapCardWidget",setup(t){const n=Ed(),o=Bd(),r=e.computed(()=>o.active.value),i=e.computed(()=>r.value||n.isOpen.value),l=e.computed(()=>r.value?o.loading.value:n.cardLoading.value),a=e.computed(()=>r.value?o.error.value:n.cardError.value),c=e.computed(()=>{var E,b;return r.value?((E=o.current.value)==null?void 0:E.html)||null:((b=n.card.value)==null?void 0:b.html)||null}),{isTemporaryLayerActive:p}=Cn();function d(E){window.dispatchEvent(new CustomEvent(Yd,{detail:E}))}const g=e.computed(()=>{var E;return((E=n.cardFeature.value)==null?void 0:E.source)??null}),s=e.computed(()=>g.value?`map-card:${g.value}`:"map-card"),f=e.ref(null),y=e.ref(null),u=new Map;function m(E){const b=E.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase();if(b)return b;const C=Array.from(E).map(L=>L.charCodeAt(0).toString(16)).join("").slice(0,8);return C?`layer-${C}`:`layer-${Math.random().toString(36).slice(2,8)}`}function x(E){const b={},C=/([:@\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;let L;for(;(L=C.exec(E))!==null;){const j=L[1],D=L[2]??L[3]??L[4]??"";j&&(b[j]=D)}return b}function N(E,b){for(const C of b)if(E[C]!=null&&String(E[C]).trim().length)return String(E[C]).trim();return""}function k(E){if(!(E!=null&&E.length))return;const b=Number(E);return Number.isFinite(b)?b:void 0}function _(E){if(typeof E!="string"||!E.length)return[];const b=[],C=/<LayerSwitcher\b([^>]*)>([\s\S]*?)<\/LayerSwitcher>/gi;let L=0,j;const D=new Set,O=P=>{let Y=P,J=2;for(;D.has(Y);)Y=`${P}-${J}`,J+=1;return D.add(Y),Y};for(;(j=C.exec(E))!==null;){const[P,Y="",J=""]=j,K=j.index;if(K>L){const ve=E.slice(L,K);ve.trim().length&&b.push({type:"html",content:ve})}const X=x(Y),ae=N(X,["title"])||"Тимчасовий шар",de=N(X,["url"]);if(!de){b.push({type:"html",content:P}),L=K+P.length;continue}const be=N(X,["id"]),fe=N(X,["button-text","buttonText","show","show-label","showLabel"]),M=k(N(X,["tile-size","tileSize"])),U=k(N(X,["minzoom","minZoom"])),H=k(N(X,["maxzoom","maxZoom"])),Z=k(N(X,["opacity"])),q=be||m(`${ae}-${de}`)||m(ae),z=O(q||`layer-${b.length+1}`),ue=J.trim(),ge=/<[^>]+>/.test(ue),ye=ge?ue:null,pe=ge?null:ue,xe=fe&&fe.trim().length?fe.trim():pe&&pe.trim().length?pe.trim():void 0;b.push({type:"layer",spec:{id:z,title:ae,url:de,tileSize:M,minzoom:U,maxzoom:H,opacity:Z},componentProps:{title:ae,url:de,id:z,buttonText:xe},slotText:ye}),L=K+P.length}if(L<E.length){const P=E.slice(L);P.trim().length&&b.push({type:"html",content:P})}return!b.length&&E.trim().length&&b.push({type:"html",content:E}),b}const V=e.computed(()=>{if(r.value&&o.current.value){const L=o.current.value.data??{};return(o.current.value.fields??[]).map(D=>({key:D.name,label:D.label||D.title||D.name,value:L[D.name]??"—",format:D.format||"text"}))}const E=n.card.value;if(!E)return[];const b=E.rows??{};return(E.fields??[]).map(L=>({key:L.name,label:L.ua||L.label||L.title||L.name,value:b[L.name]??"—",format:L.format||"text"}))}),A=e.computed(()=>_(c.value)),h=e.computed(()=>A.value.filter(E=>E.type==="layer"));function $(){const E={},b=f.value;if(b&&typeof b=="object"&&Object.entries(b).forEach(([C,L])=>{typeof L=="string"&&(E[C]=L)}),g.value&&(E.layer=g.value),!E.geohub){const C=typeof(b==null?void 0:b.geohub)=="string"?b.geohub:null,L=typeof(b==null?void 0:b.geohub_key)=="string"?b.geohub_key:null,j=typeof(b==null?void 0:b.geohubId)=="string"?b.geohubId:null;E.geohub=C||L||j||E.layer||""}return E}async function B(){const E=g.value;if(!E)return f.value=null,y.value=null,null;if(y.value===E&&f.value)return f.value;if(u.has(E)){const b=u.get(E);return f.value=b,y.value=E,b}try{const b=await fetch(`/api/gis-service/${encodeURIComponent(E)}`);if(!b.ok)return null;const C=await b.json();return u.set(E,C),f.value=C,y.value=E,C}catch{return null}}async function F(E){if(!(E!=null&&E.id))return;await B();const b=$(),C=h.value.find(j=>j.spec.id===E.id),L=C==null?void 0:C.spec;L&&(p(L.id,s.value)||d({action:"activate",owner:s.value||void 0,spec:L,context:b}))}e.watch(g,(E,b)=>{E!==b&&(f.value=null,y.value=null)});const{next:v,prev:w,count:S,index:T}=o;function I(){n.close(),o.close()}return e.onBeforeUnmount(()=>{const E=s.value;d({action:"clear",owner:E||void 0})}),(E,b)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createElementBlock("div",Cd,[e.createElementVNode("div",Vd,[e.createElementVNode("div",$d,[e.createElementVNode("p",Ad,[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Об’єкт "+e.toDisplayString(e.unref(T)+1)+" / "+e.toDisplayString(e.unref(S)),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Інформація про об’єкт ")],64))])]),r.value&&e.unref(S)>1?(e.openBlock(),e.createElementBlock("div",Sd,[e.createElementVNode("button",{onClick:b[0]||(b[0]=(...C)=>e.unref(w)&&e.unref(w)(...C)),disabled:e.unref(T)===0,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Pn),{class:"h-4 w-4"})],8,Ld),e.createElementVNode("button",{onClick:b[1]||(b[1]=(...C)=>e.unref(v)&&e.unref(v)(...C)),disabled:e.unref(T)===e.unref(S)-1,class:"border p-1 rounded text-xs disabled:opacity-40"},[e.createVNode(e.unref(Rn),{class:"h-4 w-4"})],8,Fd)])):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:I}," ✕ ")]),e.createElementVNode("div",Md,[l.value?(e.openBlock(),e.createElementBlock("div",Td," Завантаження даних… ")):a.value?(e.openBlock(),e.createElementBlock("div",Id,e.toDisplayString(a.value),1)):A.value.length?(e.openBlock(),e.createElementBlock("div",Dd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.value,(C,L)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:L},[C.type==="html"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:C.content},null,8,jd)):(e.openBlock(),e.createBlock(vd,{key:1,title:C.componentProps.title,url:C.componentProps.url,id:C.componentProps.id,"button-text":C.componentProps.buttonText,onActivate:F},e.createSlots({_:2},[C.slotText?{name:"default",fn:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:C.slotText},null,8,Od)]),key:"0"}:void 0]),1032,["title","url","id","button-text"]))],64))),128))])):V.value.length?(e.openBlock(),e.createElementBlock("div",zd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,C=>(e.openBlock(),e.createElementBlock("div",{key:C.key,class:"flex items-start justify-between gap-3 border-b border-slate-100 pb-2"},[e.createElementVNode("span",Pd,e.toDisplayString(C.label),1),C.format==="badge"?(e.openBlock(),e.createElementBlock("span",Rd,e.toDisplayString(C.value),1)):(e.openBlock(),e.createElementBlock("span",Ud,e.toDisplayString(C.value),1))]))),128))])):(e.openBlock(),e.createElementBlock("div",qd," Даних не знайдено. "))])])):e.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-e51a6a31"]]),$n=e.defineComponent({__name:"MapBoundaryLayer",props:{layerId:{},boundary:{},katottg:{},settingsMap:{}},setup(t){var f,y;const n=t,o=((y=(f=e.getCurrentInstance())==null?void 0:f.appContext.config.globalProperties)==null?void 0:y.$settings)||null,{map:r,ready:i}=se();let l=null;function a(){l==null||l.remove(),l=null}function c(u){if(!u)return null;if(typeof u=="string")try{u=JSON.parse(u)}catch{return null}return u.type==="FeatureCollection"?u:u.type==="Feature"?{type:"FeatureCollection",features:[u]}:u.type&&Array.isArray(u.coordinates)?{type:"FeatureCollection",features:[{type:"Feature",geometry:u,properties:{}}]}:Array.isArray(u.features)?{type:"FeatureCollection",features:u.features}:u.geometry?c(u.geometry):null}function p(u){var N,k,_;return{type:"line",color:"#8e4484",width:2,opacity:((((_=(k=(N=u==null?void 0:u.features)==null?void 0:N[0])==null?void 0:k.geometry)==null?void 0:_.type)||"").includes("Polygon"),.95)}}async function d(u){const m=await fetch(u);if(!m.ok)throw new Error(String(m.status));return m.json()}async function g(u,m){if(u){const x=/^https?:\/\//.test(u)?u:new URL(u,location.origin).toString(),N=await d(x).catch(()=>null),k=c(N);if(k)return k}if(m){const x=await d(`https://data.gki.com.ua/api-user/atu/${encodeURIComponent(m)}`).catch(()=>null),N=c(x);if(N)return N}return null}async function s(){var N,k,_,V;if(!n.layerId||!r.value){a();return}typeof i=="function"&&await i().catch(()=>{});const u=n.boundary??((N=n.settingsMap)==null?void 0:N.boundary)??((k=o==null?void 0:o.map)==null?void 0:k.boundary)??null,m=n.katottg??((_=n.settingsMap)==null?void 0:_.katottg)??((V=o==null?void 0:o.map)==null?void 0:V.katottg)??null;if(!u&&!m){a();return}const x=await g(u,m);if(!x){a();return}a(),l=G(`${n.layerId}-boundary`,{source:{type:"geojson",data:x},style:p(x)},r)}return e.watch(()=>{var u,m;return[n.layerId,n.boundary,n.katottg,(u=n.settingsMap)==null?void 0:u.boundary,(m=n.settingsMap)==null?void 0:m.katottg,r.value]},()=>{s()},{immediate:!0}),e.onBeforeUnmount(a),(u,m)=>null}}),Hd={class:"flex h-screen bg-gradient-to-br from-slate-50 to-white"},Wd={class:"flex-1 relative overflow-hidden"},Kd={class:"absolute top-0 left-0 w-full z-20"},Zd={class:"flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4"},Gd={class:"flex items-center gap-3"},Xd={class:"font-semibold text-lg text-gray-800 line-clamp-1"},Qd={class:"text-xs text-gray-500 truncate"},Jd=["title"],eu={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]"},tu={class:"relative w-full h-full"},nu={style:{top:"10px",left:"230px",position:"absolute","z-index":"1"}},ou={class:"absolute top-4 left-4 z-20"},ru={class:"absolute bottom-4 left-4 z-20"},lu={class:"w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg"},iu={class:"flex-1 flex flex-col h-full"},au={class:"px-3 pt-3 pb-2 border-b border-gray-100"},su={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"},cu=["aria-selected","onClick"],du={class:"leading-none"},uu={class:"flex flex-col flex-1 overflow-y-hidden p-3"},pu=e.defineComponent({__name:"service",setup(t){var B,F;const n=me.useRoute(),o=me.useRouter(),{id:r}=n.params,i=e.ref(null),l=e.ref({}),a=e.ref(null),c=((F=(B=e.getCurrentInstance())==null?void 0:B.appContext.config.globalProperties)==null?void 0:F.$settings)||null,p=e.ref(""),d=e.ref([]),g=e.ref([]),s=e.ref([]),f=e.ref("list"),y=e.ref(""),u=e.ref([]),m=e.computed(()=>{var v,w;return((v=a.value)==null?void 0:v.id)??((w=a.value)==null?void 0:w.service_id)??null}),x=e.computed(()=>{const v=(c==null?void 0:c.map)||null,w=(v==null?void 0:v.boundary)??null,S=(v==null?void 0:v.katottg)??null;return!w&&!S?null:{boundary:w,katottg:S}}),N=[{key:"style",label:"Style",icon:Di},{key:"popup",label:"Popup",icon:Zi},{key:"filter",label:"Filter",icon:Ji},{key:"legend",label:"Legend",icon:Pi},{key:"card",label:"Card",icon:Yi}],k=N.map(v=>v.key),_=e.ref("style");e.onMounted(async()=>{const v=n.query.tab;v&&k.includes(v)&&(_.value=v),await V()}),e.watch(_,v=>{n.query.tab!==v&&o.replace({query:{...n.query,tab:v}})}),e.watch(()=>n.query.tab,v=>{v&&k.includes(v)&&_.value!==v&&(_.value=v)});const V=async()=>{try{const v=await fetch(`/api/gis-service/${r}`);if(!v.ok)throw new Error(`${v.status}`);const w=await v.json();l.value=w||{},i.value=r,a.value=w||null,p.value=w.style||"",g.value=(w==null?void 0:w.popup)||[],f.value=w.card_mode==="html"?"html":"list",s.value=w.card,y.value=w.html,d.value=(w==null?void 0:w.legend)||[],u.value=(w==null?void 0:w.filters)||[]}catch(v){console.error("Failed to fetch map info",v)}};e.watch(()=>{var v;return(v=a.value)==null?void 0:v.style},v=>{v?typeof v=="string"?p.value=v:p.value=JSON.parse(JSON.stringify(v)):p.value=""},{deep:!0});async function A(v,w){await h({[v]:w},v)}async function h(v,w){if(a.value={...a.value||{},...v},typeof v.html<"u"&&(l.value={...l.value||{},html:v.html}),!!m.value)try{if(!(await fetch(`/api/gis-service/${m.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)})).ok)throw new Error("Save failed");ne.notify({type:"success",title:"Успіх",message:`${w} saved`}),await V()}catch(S){ne.notify({type:"error",title:"Помилка",message:`Failed to save ${w}`}),console.error(S)}}async function $(v,w){if(v!=="card"){await A(v,w);return}const S=(w==null?void 0:w.card_mode)==="html"?"html":"list",T=S==="html"&&typeof(w==null?void 0:w.html)=="string"?w.html:"",I=(S==="html"?[]:null)||(Array.isArray(w==null?void 0:w.list)?w.list:[]);s.value=I,f.value=S,y.value=T;const E={card_mode:S};S==="html"&&(E.html=T),S==="list"&&(E.card=I),await h(E,"card")}return(v,w)=>{var S,T,I,E;return e.openBlock(),e.createElementBlock("div",Hd,[e.createElementVNode("div",Wd,[e.createElementVNode("div",Kd,[e.createElementVNode("div",Zd,[e.createElementVNode("div",Gd,[e.createElementVNode("button",{onClick:w[0]||(w[0]=b=>v.$router.back()),class:"inline-flex items-center px-3 py-1.5 rounded-md bg-sky-100 hover:bg-sky-200 text-sky-700 font-medium text-sm transition"},[...w[10]||(w[10]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),e.createTextVNode(" Назад ",-1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",Xd,e.toDisplayString((S=a.value)==null?void 0:S.name),1),e.createElementVNode("div",Qd," Сервіс: "+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:(I=a.value)==null?void 0:I.description},e.toDisplayString((E=a.value)==null?void 0:E.description),9,Jd)])]),e.createElementVNode("div",eu,[e.createElementVNode("div",tu,[e.createVNode(vn,null,{default:e.withCtx(()=>{var b,C,L,j,D,O,P;return[(b=a.value)!=null&&b.service_id?(e.openBlock(),e.createBlock(rd,{key:0,id:(C=a.value)==null?void 0:C.service_id,layer:a.value,"style-yaml":p.value},null,8,["id","layer","style-yaml"])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createBlock($n,{key:1,"layer-id":m.value,boundary:((L=a.value)==null?void 0:L.boundary)||((j=x.value)==null?void 0:j.boundary)||null,katottg:((D=a.value)==null?void 0:D.katottg)||((O=x.value)==null?void 0:O.katottg)||null},null,8,["layer-id","boundary","katottg"])):e.createCommentVNode("",!0),e.createElementVNode("div",nu,[m.value?(e.openBlock(),e.createBlock(ht,{key:0,"layer-id":m.value,filters:u.value},null,8,["layer-id","filters"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ou,[e.createVNode(yt)]),e.createElementVNode("div",ru,[e.createVNode(xt,{items:((P=a.value)==null?void 0:P.legend)||null},null,8,["items"])]),e.createVNode(Nn),e.createVNode(Vn,{html:l.value.html},null,8,["html"])]}),_:1})])])]),e.createElementVNode("div",lu,[e.createElementVNode("div",iu,[e.createElementVNode("div",au,[e.createElementVNode("div",su,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(N,b=>e.createElementVNode("button",{key:b.key,type:"button",role:"tab","aria-selected":_.value===b.key,class:e.normalizeClass(["whitespace-nowrap flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group",_.value===b.key?"bg-white shadow-sm text-gray-700":""]),onClick:C=>_.value=b.key},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b.icon),{class:"h-3.5 w-3.5 mb-0.5"})),e.createElementVNode("span",du,e.toDisplayString(b.label),1)],10,cu)),64))])]),e.createElementVNode("div",uu,[_.value==="style"?(e.openBlock(),e.createBlock(Ac,{key:0,token:m.value,"style-yaml":p.value,"onUpdate:styleYaml":w[1]||(w[1]=b=>p.value=b),onSave:w[2]||(w[2]=b=>A("style",b))},null,8,["token","style-yaml"])):_.value==="legend"?(e.openBlock(),e.createBlock(Wc,{key:1,token:m.value,columns:d.value,"onUpdate:columns":w[3]||(w[3]=b=>d.value=b),onSave:w[4]||(w[4]=b=>A("legend",b))},null,8,["token","columns"])):_.value==="popup"?(e.openBlock(),e.createBlock(Oc,{key:2,token:m.value,columns:g.value,fields:l.value.fields,"onUpdate:columns":w[5]||(w[5]=b=>g.value=b),onSave:w[6]||(w[6]=b=>A("popup",b))},null,8,["token","columns","fields"])):_.value==="card"?(e.openBlock(),e.createBlock(td,{key:3,token:m.value,columns:s.value,fields:l.value.fields,"view-mode":f.value,html:y.value,"onUpdate:columns":w[7]||(w[7]=b=>s.value=b),onSave:$},null,8,["token","columns","fields","view-mode","html"])):_.value==="filter"?(e.openBlock(),e.createBlock(od,{key:4,token:m.value,fields:l.value.fields,columns:u.value,"onUpdate:columns":w[8]||(w[8]=b=>u.value=b),onSave:w[9]||(w[9]=b=>A("filters",b))},null,8,["token","fields","columns"])):e.createCommentVNode("",!0)])])])])}}}),mu={class:"mapLayer-info__inner"},fu={class:"mapLayer-info__item-label"},_t=W(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%)"}),i=e.ref(null),l=e.ref(null);let a=null;const c=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(m){if(r.open){f();return}const x=m.currentTarget,N=x==null?void 0:x.closest(".mapLayer-info");if(!N){f();return}i.value=N,r.open=!0,e.nextTick(()=>{d(),y(),requestAnimationFrame(()=>{d()})})}function d(){var F,v;if(!r.open||!i.value)return;const m=i.value.getBoundingClientRect(),x=8,N=window.scrollX+x,k=window.scrollX+window.innerWidth-x,_=window.scrollY+x,V=window.scrollY+window.innerHeight-x,A=((F=l.value)==null?void 0:F.offsetWidth)||460,h=((v=l.value)==null?void 0:v.offsetHeight)||0;let $=m.left+window.scrollX+(m.width-A)/2;$<N&&($=N),$+A>k&&($=Math.max(N,k-A)),r.left=$;let B=m.bottom+window.scrollY+x;B+h>V&&(B=m.top+window.scrollY-h-x,B<_&&(B=Math.max(_,V-h))),r.top=B,r.transform="none"}function g(m){var N,k;if(!r.open)return;const x=m.target;(N=i.value)!=null&&N.contains(x)||(k=l.value)!=null&&k.contains(x)||f()}function s(m){m.key==="Escape"&&f()}function f(){u(),r.open=!1,i.value=null,l.value=null}function y(){u(),l.value&&(a=new ResizeObserver(()=>{d()}),a.observe(l.value))}function u(){a&&(a.disconnect(),a=null)}return e.onMounted(()=>{document.addEventListener("click",g,!0),document.addEventListener("keydown",s),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",g,!0),document.removeEventListener("keydown",s),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d),u()}),e.watch(()=>o.items,()=>{r.open&&e.nextTick(()=>d())},{deep:!0}),n({close:f}),(m,x)=>(e.openBlock(),e.createElementBlock("div",{class:"mapLayer-info",ref_key:"anchorEl",ref:i},[e.createElementVNode("a",{class:"mapLayer-info__trigger",href:"#",onClick:e.withModifiers(p,["prevent","stop"])},[...x[1]||(x[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(c.value),ref_key:"popoverEl",ref:l,onClick:x[0]||(x[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",mu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,N=>(e.openBlock(),e.createElementBlock("div",{key:N.label,class:"mapLayer-info__item"},[e.createElementVNode("div",fu,e.toDisplayString(N.label),1),e.createElementVNode("div",{class:e.normalizeClass(["mapLayer-info__item-value",{"mapLayer-info__item-value--break-all":N.breakLine}])},e.toDisplayString(N.value??"—"),3)]))),128))])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-e7d532ad"]]),gu={key:0,class:"map-info__header"},hu={key:0,class:"map-info__title"},yu={class:"map-info__actions"},xu={key:0,class:"map-info__menu"},ku=["onClick"],bu=["innerHTML"],An=W(e.defineComponent({__name:"MapInfoWidget",props:{title:{},content:{},links:{},mapName:{},mapDescription:{}},setup(t){const n=t,o=e.ref(null),r=e.ref(!1),i=e.ref(null),l=e.ref({top:0,left:0}),a=me.useRouter(),c=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:`${l.value.top}px`,left:`${l.value.left}px`})),d=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 g(u){u.stopPropagation(),r.value=!r.value}function s(){const u=i.value;if(!u)return;const{bottom:m,left:x}=u.getBoundingClientRect();l.value={top:m+window.scrollY+8,left:x+window.scrollX}}function f(u){if(!r.value)return;const m=o.value;if(!m){r.value=!1;return}m.contains(u.target)||(r.value=!1)}e.onMounted(()=>{document.addEventListener("click",f,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",f,!0),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s)}),e.watch(r,u=>{u?e.nextTick(()=>{s(),window.addEventListener("scroll",s,!0),window.addEventListener("resize",s)}):(window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s))});function y(u){r.value=!1,a.push(`/maps/${u}`)}return(u,m)=>(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||c.value.length||d.value.length?(e.openBlock(),e.createElementBlock("div",gu,[t.title?(e.openBlock(),e.createElementBlock("h2",hu,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",yu,[c.value.length?(e.openBlock(),e.createElementBlock("div",xu,[e.createElementVNode("button",{ref_key:"menuButton",ref:i,type:"button",class:"map-info__menu-button",onClick:g,"aria-label":"Показати посилання"},[...m[1]||(m[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:m[0]||(m[0]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,x=>(e.openBlock(),e.createElementBlock("button",{key:x.slug||x.name,type:"button",class:"map-info__popover-link",onClick:N=>y(x.slug)},e.toDisplayString(x.name),9,ku))),128))],4)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0),d.value.length?(e.openBlock(),e.createBlock(_t,{key:1,items:d.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,bu)):e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-2b3e43a7"]]),_u={class:"opacity-popover__content"},wu={class:"opacity-popover__value"},Sn=W(e.defineComponent({__name:"LayerOpacityPopover",props:{layerId:{}},setup(t){const n=t,o=e.ref(!1),r=e.ref(100),i=e.ref(null),l=e.ref(null),a=e.reactive({top:0,left:0});function c(){var y;const s=(y=l.value)==null?void 0:y.querySelector("button");if(!s)return;const f=s.getBoundingClientRect();a.top=f.bottom+8+window.scrollY,a.left=f.left+window.scrollX}function p(){o.value=!o.value,o.value&&e.nextTick(c)}function d(){var u;const s=G(n.layerId),f=(r.value??100)/100,y=(u=s==null?void 0:s.getLayer)==null?void 0:u.call(s);if(y)switch(y.type){case"raster":s.updatePaint({"raster-opacity":f});break;case"fill":s.updatePaint({"fill-opacity":f});break;case"line":s.updatePaint({"line-opacity":f});break;case"circle":s.updatePaint({"circle-opacity":f});break;case"symbol":s.updatePaint({"icon-opacity":f});break}}function g(s){var y,u;if(!o.value)return;const f=s.target;(y=i.value)!=null&&y.contains(f)||(u=l.value)!=null&&u.contains(f)||(o.value=!1)}return e.onMounted(()=>{document.addEventListener("click",g),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",g),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}),(s,f)=>(e.openBlock(),e.createElementBlock("div",{class:"opacity-wrapper",ref_key:"wrapper",ref:l},[e.renderSlot(s.$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:i,class:"opacity-popover",style:e.normalizeStyle({top:a.top+"px",left:a.left+"px"})},[e.createElementVNode("div",_u,[f[1]||(f[1]=e.createElementVNode("label",{class:"opacity-popover__label"},"Прозорість:",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",min:"0",max:"100",step:"1","onUpdate:modelValue":f[0]||(f[0]=y=>r.value=y),class:"opacity-popover__range",onInput:d},null,544),[[e.vModelText,r.value]]),e.createElementVNode("span",wu,e.toDisplayString(r.value)+"%",1)])],4)):e.createCommentVNode("",!0)]))],512))}}),[["__scopeId","data-v-b2bb0bb0"]]),Eu={class:"layers-panel"},Bu={class:"layers-panel__header"},vu={class:"layers-panel__heading"},Nu={class:"layers-panel__title"},Cu={key:0,class:"layers-panel__description"},Vu={class:"layers-panel__label"},$u=["checked","onChange"],Au={class:"layers-panel__name"},Su={class:"layers-panel__meta text-slate-500"},Lu=["onClick"],Fu={class:"inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700"},Mu={key:0,class:"layers-panel__actions"},Tu=["innerHTML","onClick"],Ln="map:temporary-layer-request",Fn=W(e.defineComponent({__name:"MapDataLayersWidget",props:{layers:{},config:{}},emits:["action"],setup(t,{emit:n}){const o=t,r=e.ref({}),i=se(),{temporaryLayers:l,activateTemporaryLayer:a,deactivateTemporaryLayer:c,clearTemporaryLayers:p}=Cn(i.map),d=e.computed(()=>{const h=o.layers.map(B=>({...B,isTemporary:!1,owner:null,visible:B.visible!==!1})),$=l.value.map(B=>({id:B.id,name:B.title,visible:r.value[B.id]??!0,actions:[],filters:null,isTemporary:!0,owner:B.owner??null,handle:B.handle??null,card:B.card??null,popup:B.popup??null,style:B.style??null,group_name:null,count:null,holder:null}));return[...h,...$]}),g=e.computed(()=>l.value.length>0),s=n;function f(){var h;for(let $=0;$<o.layers.length;$++){const B=o.layers[$],F=y(B);if(!F)continue;const v=G(B.id,F),w=B.visible!==!1;r.value[B.id]=w,w||(h=v==null?void 0:v.setVisible)==null||h.call(v,!1)}}function y(h){const $=h.id;if(!$)return null;const B=(h.service||h.service_type||h.type||"").toString().toLowerCase(),F=h.service_url||h.url||null;if(!!F&&(B==="tms"||B==="wmts"||B==="wms"||B==="ogc")){const S=u(F);return S?{sourceId:$,source:{type:"raster",tiles:[S],tileSize:h.tileSize||256,minzoom:h.minzoom??0,maxzoom:h.maxzoom??22,scheme:h.scheme||"xyz"},layer:{id:$,type:"raster",source:$},card:h.card,popup:h.popup}:null}const w=`${location.origin}/api/vtile/${$}/ua/{z}/{x}/{y}.vmt`;return{sourceId:$,source:{type:"vector",tiles:[w],minZoom:4,maxZoom:14},layer:{id:$,source:$,"source-layer":$,style:h.style},card:h.card,popup:h.popup}}function u(h){return h?/^https?:\/\//i.test(h)?h:h.startsWith("//")?`${window.location.protocol}${h}`:h.startsWith("/")?`${location.origin}${h}`:`${location.origin}/${h}`:null}function m(h){const $=r.value[h];return $??!0}function x(h){var F,v;if(!(h!=null&&h.id))return null;const $=(F=h.title)==null?void 0:F.trim(),B=(v=h.url)==null?void 0:v.trim();return!$||!B?null:{id:h.id,title:$,url:B,tileSize:h.tileSize,minzoom:h.minzoom,maxzoom:h.maxzoom,opacity:h.opacity}}function N(h){if(!h)return;const $=h.owner;if(h.action==="clear"){const F=l.value.filter(v=>!$||v.owner===$).map(v=>v.id);p($),F.forEach(v=>{v in r.value&&delete r.value[v]});return}const B=x(h.spec);if(B){if(h.action==="activate"){a(B,h.context||{},$),r.value[B.id]=!0;return}h.action==="deactivate"&&(c(B.id,$),delete r.value[B.id])}}function k(h){h instanceof CustomEvent&&N(h.detail)}e.watch(()=>l.value.map(h=>h.id),(h,$)=>{const B=new Set($||[]),F=new Set(h);h.forEach(v=>{v in r.value||(r.value[v]=!0)}),B.forEach(v=>{F.has(v)||delete r.value[v]})},{immediate:!0}),e.onMounted(()=>{f(),window.addEventListener(Ln,k)}),e.onBeforeUnmount(()=>{window.removeEventListener(Ln,k)});function _(h,$){var w,S,T;const F=$.target.checked;if(r.value[h.id]=F,h.isTemporary){if(!F){c(h.id,h.owner||void 0),delete r.value[h.id];return}const I=h.handle||((w=l.value.find(E=>E.id===h.id))==null?void 0:w.handle);(S=I==null?void 0:I.setVisible)==null||S.call(I,!0);return}const v=G(h.id);(T=v==null?void 0:v.setVisible)==null||T.call(v,F)}function V(h){return h.isTemporary?[{label:"Назва",value:h.name??null},{label:"Тип",value:"Тимчасовий шар"},h.owner?{label:"Джерело",value:h.owner}:null].filter(Boolean):[{label:"Назва",value:h.name??null},{label:"Назва групи",value:h.group_name||null},{label:"Кількість",value:h.count??null},{label:"Балансоутримувач",value:h.holder??null}]}function A(){if(!l.value.length)return;const h=l.value.map($=>$.id);p(),h.forEach($=>delete r.value[$])}return(h,$)=>{var B,F;return e.openBlock(),e.createElementBlock("div",Eu,[e.createElementVNode("div",Bu,[e.createElementVNode("div",vu,[e.createElementVNode("h2",Nu,e.toDisplayString(((B=t.config)==null?void 0:B.title)||"Шари"),1),(F=t.config)!=null&&F.description?(e.openBlock(),e.createElementBlock("div",Cu,[e.createElementVNode("p",null,e.toDisplayString(t.config.description),1)])):e.createCommentVNode("",!0)]),g.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"layers-panel__clear",onClick:A}," Очистити тимчасові шари ")):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,v=>{var w;return e.openBlock(),e.createElementBlock("div",{key:v.id,class:"layers-panel__item"},[e.createElementVNode("label",Vu,[e.createElementVNode("input",{type:"checkbox",class:"layers-panel__checkbox",checked:m(v.id),onChange:S=>_(v,S)},null,40,$u),e.createElementVNode("span",Au,e.toDisplayString(v.name),1),e.createElementVNode("div",Su,[m(v.id)&&!v.isTemporary?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Sn,{"layer-id":v.id,class:"flex"},{trigger:e.withCtx(({toggle:S})=>[e.createElementVNode("button",{class:"inline-flex items-center justify-center p-0 text-inherit no-underline cursor-pointer",onClick:e.withModifiers(S,["prevent","stop"])},[e.createElementVNode("div",Fu,[e.createVNode(e.unref(qn))])],8,Lu)]),_:1},8,["layer-id"]),e.createVNode(Qe,{count:Array.isArray(v.filters)?v.filters.length:0,layer:v},null,8,["count","layer"])],64)):e.createCommentVNode("",!0),e.createVNode(_t,{items:V(v)},null,8,["items"])])]),(w=v.actions)!=null&&w.length?(e.openBlock(),e.createElementBlock("div",Mu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.actions,S=>(e.openBlock(),e.createElementBlock("button",{key:S.widget||S.id||S.icon,type:"button",class:"layers-panel__action",innerHTML:S.icon,onClick:T=>s("action",{layerId:S.widget})},null,8,Tu))),128))])):e.createCommentVNode("",!0)])}),128))])}}}),[["__scopeId","data-v-108d6706"]]),Iu={class:"catalog-tab__search relative mt-[10px]"},Du={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%)"}},ju={key:0,class:"text-sm text-gray-400 text-center mt-6"},Ou=["onClick"],zu={class:"flex items-center gap-x-3"},Pu={class:"max-w-[260px] text-[14px] text-[#4b5563]"},Ru={class:"text-xs opacity-60 text-[#4b5563]"},Uu={class:"flex items-center cursor-pointer gap-2 flex-1"},qu=["checked","onChange"],Yu={class:"text-[13px] text-gray-600 truncate max-w-[260px]"},Hu={class:"flex items-center gap-2"},Wu=W(e.defineComponent({__name:"LayersCatalogTab",props:{catalog:{},selected:{},search:{}},emits:["toggle-layer","update:search","open-filter"],setup(t,{emit:n}){const o=t,r=n,i=e.reactive({}),l=e.ref(null),a=e.reactive({visible:!1,text:"Спочатку активуйте шар, щоб застосувати фільтр",top:0,left:0,layerId:null}),c=e.computed(()=>{const x=o.search.trim().toLowerCase();return o.catalog.groups.map(N=>{const k=x?N.layers.filter(_=>(typeof _.name=="string"?_.name:"").toLowerCase().includes(x)):N.layers;return{...N,layers:k}}).filter(N=>N.layers.length>0)}),p=e.computed({get:()=>o.search,set:x=>r("update:search",x)});function d(x){i[x]=!i[x],ld()}function g(x){return!!i[x]}function s(x,N){if(o.selected.includes(N)){a.visible=!1,a.layerId=null;return}const k=x.currentTarget;if(!k)return;const _=k.getBoundingClientRect(),V=typeof window<"u"?window.scrollX:0,A=typeof window<"u"?window.scrollY:0;a.left=_.left+_.width/2+V,a.top=_.bottom+8+A,a.layerId=N,a.visible=!0}function f(){a.visible=!1,a.layerId=null}function y(x){return[{label:"Назва",value:u(x.name)},{label:"Сервіс",value:u(x.service)},{label:"Посилання",value:u(x.url),breakLine:!0},{label:"Джерело",value:u(x.source_path),breakLine:!0},{label:"Popup",value:m(x.popup,"полів")},{label:"Картка",value:m(x.card,"полів")},{label:"Фільтри",value:m(x.filters,"фільтрів")}]}function u(x){return x==null||x===""?null:String(x)}function m(x,N){return!Array.isArray(x)||x.length===0?null:`${x.length} ${N}`}return e.watch(()=>o.selected?o.selected.slice():[],x=>{!a.visible||!a.layerId||x.includes(a.layerId)&&(a.visible=!1,a.layerId=null)}),(x,N)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"catalogRef",ref:l,class:"catalog-tab"},[e.createElementVNode("div",Iu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N[0]||(N[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",Du,[...N[1]||(N[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)])]))]),c.value.length===0?(e.openBlock(),e.createElementBlock("div",ju," Нічого не знайдено ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.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:_=>d(k.id)},[e.createElementVNode("div",zu,[(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",g(k.id)?"rotate-90":""])},[...N[2]||(N[2]=[e.createElementVNode("path",{d:"M1 9L5 5L1 1",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2)),e.createElementVNode("div",Pu,e.toDisplayString(k.name),1)]),e.createElementVNode("div",Ru,e.toDisplayString(k.layers.length),1)],8,Ou),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,_=>(e.openBlock(),e.createElementBlock("div",{key:_.id,class:"hover:bg-gray-100 rounded-lg flex items-center justify-between ml-[20px] py-[8px] px-[8px] gap-3"},[e.createElementVNode("label",Uu,[e.createElementVNode("input",{type:"checkbox",class:"peer hidden",checked:t.selected.includes(_.id),onChange:V=>x.$emit("toggle-layer",_.id,V.target.checked,_)},null,40,qu),N[3]||(N[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",Yu,e.toDisplayString(_.name),1)]),e.createElementVNode("div",Hu,[Array.isArray(_.filters)&&_.filters.length?(e.openBlock(),e.createBlock(Qe,{key:0,count:_.filters.length,layer:_,disabled:!t.selected.includes(_.id),onMouseenter:V=>s(V,_.id),onMouseleave:f,onFocus:V=>s(V,_.id),onBlur:f},null,8,["count","layer","disabled","onMouseenter","onFocus"])):e.createCommentVNode("",!0),e.createVNode(_t,{items:y(_)},null,8,["items"])])]))),128))],512),[[e.vShow,g(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"]]),Ku={class:"selected-tab"},Zu={class:"selected-tab__actions"},Gu={key:0,class:"selected-tab__scroll"},Xu=["onDragstart","onDragover","onDrop"],Qu={class:"selected-tab__item-header"},Ju={class:"selected-tab__item-info"},ep=["checked","onChange"],tp={class:"selected-tab__item-name"},np={class:"selected-tab__item-controls"},op=["onClick"],rp={class:"selected-tab__menu-inner"},lp=W(e.defineComponent({__name:"LayersSelectedTab",props:{catalog:{},selected:{}},emits:["select-layer","reorder","remove","toggle-layer"],setup(t,{emit:n}){const o=t,r=n,i=e.reactive({}),l=e.ref(null),a=e.ref(null),c=new Map,p=e.reactive({top:0,left:0}),d=e.ref(null),g=e.reactive({top:0,left:0}),s=e.ref(null),f=new Map,y=e.reactive({});function u(I){var E;for(const b of((E=o.catalog)==null?void 0:E.groups)??[]){const C=b.layers.find(L=>L.id===I);if(C)return C}return null}e.watch(()=>o.selected,I=>{I.forEach(E=>{i[E]==null&&(i[E]=100)})},{immediate:!0});function m(){if(!l.value)return;const I=c.get(l.value);if(!I)return;const E=I.getBoundingClientRect();p.top=E.bottom+8+window.scrollY,p.left=E.left+window.scrollX}e.watch(()=>o.selected,I=>{I.forEach(E=>{y[E]==null&&(y[E]=!0)})},{immediate:!0});function x(I,E){y[I]=E;const b=G(I);b&&b.setVisible(E);const C=u(I);r("toggle-layer",I,E,C)}function N(I,E){E?f.set(I,E):f.delete(I)}function k(I){d.value=d.value===I?null:I,d.value&&e.nextTick(()=>_(I))}function _(I){const E=f.get(I);if(!E)return;const b=E.getBoundingClientRect();g.top=b.bottom+6+window.scrollY,g.left=b.left+window.scrollX}function V(I){const E=G(I);E&&E.remove(),r("remove",I),d.value=null}function A(I){const E=I.target,b=l.value,C=d.value;if(b){const L=a.value,j=c.get(b);if(L&&L.contains(E)||j&&j.contains(E))return;l.value=null}if(C){const L=s.value,j=f.get(C);if(L&&L.contains(E)||j&&j.contains(E))return;d.value=null}}function h(){l.value&&m(),d.value&&_(d.value)}e.onMounted(()=>{document.addEventListener("click",A),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",A),window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0)});const{map:$}=se();function B(I){var L,j,D;if(!I)return;const E=G(I),b=u(I);if(!E&&!b)return;if(((L=b==null?void 0:b.extent)==null?void 0:L.length)===4&&((j=$.value)!=null&&j.fitBounds)){const O=b.extent.map(P=>Number(P));if(O.every(P=>Number.isFinite(P))){const[P,Y,J,K]=O;$.value.fitBounds([[P,Y],[J,K]],{padding:40}),d.value=null;return}}(D=E==null?void 0:E.getSource)!=null&&D.call(E)&&(d.value=null)}const F=e.ref(null),v=e.ref(null);function w(I){F.value=I}function S(I){v.value=I}function T(I){if(F.value===null||F.value===I){F.value=null,v.value=null;return}const E=[...o.selected],[b]=E.splice(F.value,1);E.splice(I,0,b),r("reorder",E),F.value=null,v.value=null}return(I,E)=>(e.openBlock(),e.createElementBlock("div",Ku,[e.createElementVNode("div",Zu,[e.createElementVNode("button",{class:"selected-tab__add",onClick:E[0]||(E[0]=b=>r("select-layer"))},[...E[3]||(E[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-plus"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"M12 5v14"})],-1),e.createElementVNode("span",null,"Вибрати шар",-1)])])]),t.selected.length?(e.openBlock(),e.createElementBlock("div",Gu,[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,(b,C)=>{var L;return e.openBlock(),e.createElementBlock("div",{key:b,class:e.normalizeClass(["selected-tab__item",{"selected-tab__item--dragging":F.value===C,"selected-tab__item--over":v.value===C}]),draggable:"true",onDragstart:j=>w(C),onDragover:e.withModifiers(j=>S(C),["prevent"]),onDrop:j=>T(C)},[e.createElementVNode("div",Qu,[e.createElementVNode("div",Ju,[E[4]||(E[4]=e.createElementVNode("span",{class:"selected-tab__item-handle"},"☰",-1)),e.createElementVNode("input",{type:"checkbox",class:"selected-tab__item-checkbox",checked:y[b]??!0,onChange:j=>x(b,j.target.checked)},null,40,ep),e.createElementVNode("span",tp,e.toDisplayString(((L=u(b))==null?void 0:L.name)||"Шар"),1)]),e.createElementVNode("div",np,[e.createVNode(Sn,{"layer-id":b},null,8,["layer-id"]),e.createElementVNode("button",{type:"button",class:"selected-tab__item-menu",ref_for:!0,ref:j=>N(b,j),onClick:e.withModifiers(j=>k(b),["stop"])},[...E[5]||(E[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-more-vertical"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"})],-1)])],8,op)])])],42,Xu)}),128))])])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuEl",ref:s,class:"selected-tab__menu",style:e.normalizeStyle({top:g.top+"px",left:g.left+"px"})},[e.createElementVNode("div",rp,[e.createElementVNode("button",{class:"selected-tab__menu-item",onClick:E[1]||(E[1]=b=>B(d.value))},[...E[6]||(E[6]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-zoom-in"},[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"}),e.createElementVNode("line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}),e.createElementVNode("line",{x1:"11",x2:"11",y1:"8",y2:"14"}),e.createElementVNode("line",{x1:"8",x2:"14",y1:"11",y2:"11"})],-1),e.createTextVNode(" Збільшити до шару ",-1)])]),E[8]||(E[8]=e.createElementVNode("button",{disabled:"",class:"selected-tab__menu-item selected-tab__menu-item--disabled"},[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)),E[9]||(E[9]=e.createElementVNode("button",{disabled:"",class:"selected-tab__menu-item selected-tab__menu-item--disabled"},[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-table"},[e.createElementVNode("path",{d:"M12 3v18"}),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),e.createElementVNode("path",{d:"M3 9h18"}),e.createElementVNode("path",{d:"M3 15h18"})]),e.createTextVNode(" Таблиця шару ")],-1)),E[10]||(E[10]=e.createElementVNode("hr",null,null,-1)),e.createElementVNode("button",{class:"selected-tab__menu-item selected-tab__menu-item--danger",onClick:E[2]||(E[2]=b=>V(d.value))},[...E[7]||(E[7]=[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-e336e847"]]),ip={class:"filter-tab"},ap={key:0,class:"filter-tab__header"},sp={class:"filter-tab__title"},cp={key:1,class:"filter-tab__content rounded-md"},dp={class:"filter-tab__scroll"},up={key:2,class:"filter-tab__empty"},pp=W(e.defineComponent({__name:"LayersFilterTab",props:{layer:{},value:{}},emits:["change"],setup(t,{emit:n}){const o=e.defineAsyncComponent(()=>import("@opengis/filter")),r=t,i=n,l=e.computed(()=>{var p;return((p=r.layer)==null?void 0:p.filters)??[]}),a=e.computed(()=>l.value.length>0);function c(p){i("change",p.data)}return(p,d)=>(e.openBlock(),e.createElementBlock("div",ip,[t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("div",null,[e.createElementVNode("p",sp,e.toDisplayString(t.layer.name),1)])])):e.createCommentVNode("",!0),t.layer&&a.value?(e.openBlock(),e.createElementBlock("div",cp,[e.createElementVNode("div",dp,[e.createVNode(e.unref(o),{view:"vertical",schema:l.value,value:t.value,limit:5,class:"rounded-md pb-0",onChange:d[0]||(d[0]=g=>c(g))},null,8,["schema","value"])])])):(e.openBlock(),e.createElementBlock("div",up,[...d[1]||(d[1]=[e.createElementVNode("p",{class:"filter-tab__empty-title"},"Немає доступних фільтрів",-1),e.createElementVNode("p",{class:"filter-tab__empty-text"}," Оберіть шар із фільтрами у каталозі, щоб налаштувати відбір даних. ",-1)])]))]))}}),[["__scopeId","data-v-c6632fbd"]]),mp={class:"map-catalog-widget w-full max-w-md mx-auto p-4 bg-white border border-gray-200 rounded-lg shadow-sm widget"},fp={class:"flex items-center justify-between mb-4"},gp={class:"flex items-center gap-2"},hp={class:"text-lg font-semibold text-gray-800"},yp={key:0},xp={key:1,class:"block text-sm font-normal text-gray-500"},kp={class:"flex mb-4 border-b border-gray-200"},bp={class:"map-catalog-widget__body"},Mn=W(e.defineComponent({__name:"MapCatalogWidget",setup(t){const n=e.ref("catalog"),o=e.ref({groups:[]}),r=e.ref([]),i=e.ref(""),{map:l}=se(),a=me.useRoute(),c=me.useRouter(),p=e.reactive({}),d=e.ref(null);function g(w){return o.value.groups.map(S=>S.layers.find(T=>T.id===w)).find(Boolean)||null}function s(){const w=d.value;if(!w)return;delete p[w];const S=G(w);S!=null&&S.setFilter&&S.setFilter("")}function f(w,S){const T=G(w);if(p[w]={...S},!(T!=null&&T.setFilter))return;const I=Object.entries(S).filter(([,E])=>E!=null&&E!=="").map(([E,b])=>`${E}=${b}`);T.setFilter(I.join("|"))}function y(w){const S=d.value;S&&f(S,w)}function u(w){const S=w.url;let T=null;if(S&&(T=S.startsWith("http")?S:`${window.location.origin}${S}`),!T)return null;const I=(w.service||"").toString().toLowerCase(),E=w.count??null;return I&&I!=="vtile"?{service:I,count:E,source:{type:"raster",tiles:[T],tileSize:256,minzoom:0,maxzoom:20}}:{service:I,count:E,source:{type:"vector",tiles:[T],minzoom:0,maxzoom:14},layer:{style:w.style},card:w.card,popup:w.popup}}function m(w,S,T){var C;const I=T??g(w);if(!I)return;const E=u(I);if(!E)return;const b=G(I.id,E,l);if(b)if(b.setVisible(S),S){if(!r.value.includes(w)&&(r.value.push(w),(C=l.value)!=null&&C.getLayer(w)))try{l.value.moveLayer(w)}catch(L){console.warn("Cannot move new layer",w,L)}}else r.value=r.value.filter(L=>L!==w),d.value===w&&(s(),d.value=null)}function x(){r.value.forEach(w=>{const S=G(w);S&&S.setVisible(!1)}),r.value=[]}function N(w){r.value=w,e.nextTick(()=>{var S;for(let T=w.length-1;T>=0;T-=1){const I=w[T];if((S=l.value)!=null&&S.getLayer(I))try{l.value.moveLayer(I)}catch(E){console.warn("Cannot move layer",I,E)}}})}function k(w){!w||!Array.isArray(w.filters)||w.filters.length===0||r.value.includes(w.id)&&(d.value=w.id,p[w.id]||(p[w.id]={}),n.value="filter")}function _(){n.value="catalog"}const V=e.computed(()=>d.value?g(d.value):null),A=e.computed(()=>{const w=d.value;return w?p[w]??{}:{}}),h=e.computed(()=>o.value.groups.reduce((w,S)=>w+S.layers.length,0)),$=e.computed(()=>n.value==="selected"?"Вибрані шари":n.value==="filter"?"Фільтр шарів":"Каталог"),B=e.computed(()=>n.value==="selected"?r.value.length:n.value==="catalog"?h.value:null),F=e.computed(()=>{var w;return n.value==="filter"?((w=V.value)==null?void 0:w.name)??"":""});async function v(){const S=await(await fetch("/api/gis-layer-list")).json(),T=new Map;S.forEach(b=>{const C=b.group_id??"other";T.has(C)||T.set(C,{id:C,name:b.group_name||"Інші шари",layers:[]}),T.get(C).layers.push(b)}),o.value={groups:Array.from(T.values())};const I=a.query.layers;if(!I)return;const E=Array.isArray(I)?I[0]:I;typeof E=="string"&&E.split(",").forEach(b=>{const C=b.trim();if(!C)return;const L=g(C);L&&m(C,!0,L)})}return e.watch(d,w=>{!w&&n.value==="filter"&&(n.value="catalog")}),e.watch(V,w=>{!w&&d.value&&(d.value=null)}),e.watch(r,w=>{const S={...a.query};w.length?S.layers=w.join(","):delete S.layers,c.replace({query:S}).catch(()=>{})},{deep:!0}),e.onMounted(v),(w,S)=>(e.openBlock(),e.createElementBlock("div",mp,[e.createElementVNode("div",fp,[e.createElementVNode("div",gp,[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",hp,[e.createTextVNode(e.toDisplayString($.value)+" ",1),B.value!==null?(e.openBlock(),e.createElementBlock("span",yp,"("+e.toDisplayString(B.value)+")",1)):e.createCommentVNode("",!0),F.value?(e.openBlock(),e.createElementBlock("span",xp,e.toDisplayString(F.value),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("button",{onClick:x,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-c75de067><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-c75de067></path><path d="M21 3v5h-5" data-v-c75de067></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-c75de067></path><path d="M8 16H3v5" data-v-c75de067></path></svg>',1)])])]),e.createElementVNode("div",kp,[e.createElementVNode("button",{onClick:S[0]||(S[0]=T=>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]=T=>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",bp,[n.value==="catalog"?(e.openBlock(),e.createBlock(Wu,{key:0,class:"map-catalog-widget__scroll",catalog:o.value,selected:r.value,search:i.value,"onUpdate:search":S[2]||(S[2]=T=>i.value=T),onToggleLayer:m,onOpenFilter:k},null,8,["catalog","selected","search"])):n.value==="selected"?(e.openBlock(),e.createBlock(lp,{key:1,catalog:o.value,selected:r.value,onToggleLayer:m,onSelectLayer:S[3]||(S[3]=T=>n.value="catalog"),onReorder:N,onRemove:S[4]||(S[4]=T=>r.value=r.value.filter(I=>I!==T))},null,8,["catalog","selected"])):(e.openBlock(),e.createBlock(pp,{key:2,layer:V.value,value:A.value,onChange:y,onClose:_},null,8,["layer","value"]))])]))}}),[["__scopeId","data-v-c75de067"]]),_p={key:1,class:"flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"},wp={class:"flex items-start justify-between gap-3 p-5 pb-3"},Ep={class:"inline-block text-xl font-semibold text-gray-800"},Bp={key:0,class:"mt-1 text-sm text-gray-500"},vp={class:"flex items-center gap-[6px]"},Np={class:"px-5 pb-5 space-y-6"},Cp={key:0,class:"space-y-2"},Vp={class:"flex flex-wrap gap-4"},$p=["value"],Ap={key:1,class:"text-sm text-gray-500"},Sp={key:2,class:"text-sm text-gray-500"},Lp={class:"text-4xl font-medium text-gray-800"},Fp={class:"space-y-[14px]"},Mp={class:"flex items-center gap-[10px] text-gray-600"},Tp={class:"font-medium text-gray-700"},Ip={class:"flex items-center justify-end text-end gap-3"},Dp={class:"font-medium text-gray-800"},jp={class:"min-w-[40px] font-medium text-[#3C3C4399]"},Tn=W(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),i=e.ref(!1),l=e.ref([]),a=e.ref(null),c=e.ref(null),p=e.ref(null),d=e.ref(null),g=e.ref(null),s=e.ref({}),f=e.ref(null);function y(b){return b&&JSON.parse(JSON.stringify(b))}const u=e.computed(()=>{const b=o.config.layer;if(typeof b!="string")throw new Error("MapAttributeWidget: `layer` must be a string");const C=b.trim();if(!C)throw new Error("MapAttributeWidget: `layer` must be non-empty");return C}),m=e.computed(()=>{const{list:b,attribute:C}=o.config;if(Array.isArray(b)&&b.length)return b.map(L=>({id:(L==null?void 0:L.id)!=null?String(L.id).trim():"",text:(L==null?void 0:L.text)!=null&&String(L.text).trim()||null})).filter(L=>L.id.length);if(Array.isArray(C))return C.map(L=>L!=null?String(L).trim():"").filter(L=>L.length).map(L=>({id:L,text:null}));if(typeof C=="string"){const L=C.trim();if(!L)throw new Error("MapAttributeWidget: `attribute` must be non-empty");return[{id:L,text:null}]}throw new Error("MapAttributeWidget: `attribute` or `list` must be provided")}),x=e.computed(()=>m.value.map(b=>({id:b.id,label:b.text||s.value[b.id]||b.id})));e.watch(m,b=>{if(!b.length){f.value=null,l.value=[];return}(!f.value||!b.some(C=>C.id===f.value))&&(f.value=b[0].id)},{immediate:!0});const N=e.computed(()=>{var b;return f.value||((b=m.value[0])==null?void 0:b.id)||null});e.watch(u,()=>{var b,C;(C=(b=c.value)==null?void 0:b.remove)==null||C.call(b),c.value=null,p.value=null,d.value=null,g.value=null,s.value={}});const k=e.computed(()=>{var b;return(b=d.value)!=null&&b.length?{id:u.value,name:p.value,filters:d.value}:null}),_=e.computed(()=>{var b,C;return((C=(b=k.value)==null?void 0:b.filters)==null?void 0:C.length)||0});async function V(b){var j;const C=await fetch(`/api/gis-service/${encodeURIComponent(b)}`);if(!C.ok){let D="Не вдалося завантажити налаштування шару";try{const O=await C.json();D=((j=O==null?void 0:O.message)==null?void 0:j.error)||(O==null?void 0:O.message)||D}catch{}throw new Error(D)}const L=await C.json();return p.value=(L==null?void 0:L.name)||null,d.value=Array.isArray(L==null?void 0:L.filters)?L.filters:null,g.value=y((L==null?void 0:L.style)||{}),s.value=((L==null?void 0:L.attributes)||[]).reduce((D,O)=>{const P=typeof(O==null?void 0:O.name)=="string"?O.name.trim():"",Y=typeof(O==null?void 0:O.ua)=="string"?O.ua.trim():"";return P&&(D[P]=Y||P),D},{}),L}function A(b,C){let L=G(b);if(!L){const j=`${location.origin}/api/vtile/${b}/ua/{z}/{x}/{y}.vmt`;L=G(b,{source:{type:"vector",tiles:[j],minzoom:0,maxzoom:14},layer:{id:b,source:b,"source-layer":b,style:(C==null?void 0:C.style)||{}},card:C==null?void 0:C.card,popup:C==null?void 0:C.popup})}return c.value=L,L}async function h(b,C){var D;const L=`/api/gis-service/${encodeURIComponent(b)}/${encodeURIComponent(C)}`,j=await fetch(L);if(!j.ok){let O="Не вдалося отримати статистику";try{const P=await j.json();O=((D=P==null?void 0:P.message)==null?void 0:D.error)||(P==null?void 0:P.message)||O}catch{}throw new Error(O)}return j.json()}function $(b){const C=new Map;return b&&(b.rules||[]).forEach(j=>{const D=(j==null?void 0:j.value)??(j==null?void 0:j.id);D!=null&&C.set(String(D),j)}),C}function B(b,C,L,j,D){if(typeof(C==null?void 0:C.color)=="string"&&C.color.trim())return C.color.trim();const O=o.config.colors||{};if(O[b])return O[b];const Y=$(L==null?void 0:L.style).get(b);return typeof(Y==null?void 0:Y.color)=="string"&&Y.color.trim()?Y.color.trim():n[D%n.length]}function F(b,C,L,j){var D;return(C==null?void 0:C.text)||(C==null?void 0:C.label)||(C==null?void 0:C.name)||(C==null?void 0:C[`${j}_text`])||((D=$(L==null?void 0:L.style).get(b))==null?void 0:D.label)||b}function v(b,C,L,j){if(!b)return;const D=y((C==null?void 0:C.style)||g.value)||{},O=j.trim();if(!O)return;const P={...D.colors||{},...o.config.colors||{}};O===j&&L.forEach(Y=>{Y.color.trim()&&(P[Y.id]=Y.color)}),b.setStyle({...D,type:D.type||"polygon",colorAttr:O,opacity:.8,colors:P})}async function w(){var O,P;l.value=[],a.value=null;const b=u.value,C=N.value;if(!C)return;i.value=!0;const L=await V(b);A(b,L);const j=await h(b,C),D=Array.isArray(j==null?void 0:j.rows)?j.rows.map((Y,J)=>{const K=(Y==null?void 0:Y.id)??(Y==null?void 0:Y.value),X=K!=null?String(K):"";if(!X)return null;const ae=F(X,Y,L,C),de=Number((Y==null?void 0:Y.count)??0)||0,be=B(X,Y,L,C,J);return{id:X,label:ae,count:de,color:be}}).filter(Boolean):[];l.value=D,a.value=((O=j==null?void 0:j.field)==null?void 0:O.label)||((P=j==null?void 0:j.field)==null?void 0:P.name)||null,v(c.value,L,D,C),i.value=!1}e.watch(()=>[u.value,N.value],()=>{w()},{immediate:!0});const S=e.computed(()=>"Набори даних"),T=e.computed(()=>l.value.reduce((b,C)=>b+C.count,0)),I=e.computed(()=>{var L;const b=N.value;return((L=x.value.find(j=>j.id===b))==null?void 0:L.label)||null||a.value||b||null});function E(b){return T.value?`${(b/T.value*100).toFixed(2)}%`:"0.00%"}return e.onBeforeUnmount(()=>{var b,C;(C=(b=c.value)==null?void 0:b.remove)==null||C.call(b)}),(b,C)=>r.value?(e.openBlock(),e.createElementBlock("div",_p,[e.createElementVNode("div",wp,[e.createElementVNode("div",null,[e.createElementVNode("h2",Ep,e.toDisplayString(S.value),1),I.value&&x.value.length===1?(e.openBlock(),e.createElementBlock("p",Bp,e.toDisplayString(I.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",vp,[k.value?(e.openBlock(),e.createBlock(Qe,{key:0,class:"flex justify-center items-center h-[36px] w-[36px] text-sm border border-gray-200 text-gray-600 hover:bg-gray-100 rounded-full",count:_.value,layer: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:C[1]||(C[1]=L=>r.value=!1)},[...C[3]||(C[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",Np,[x.value.length>1?(e.openBlock(),e.createElementBlock("div",Cp,[e.createElementVNode("div",Vp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,L=>(e.openBlock(),e.createElementBlock("label",{key:L.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:L.id,"onUpdate:modelValue":C[2]||(C[2]=j=>f.value=j)},null,8,$p),[[e.vModelRadio,f.value]]),e.createElementVNode("span",null,e.toDisplayString(L.label),1)]))),128))])])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("div",Ap,"Завантаження…")):l.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h4",Lp,e.toDisplayString(T.value),1),e.createElementVNode("ul",Fp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,L=>(e.openBlock(),e.createElementBlock("li",{key:L.id,class:"flex flex-wrap items-center justify-between gap-x-2"},[e.createElementVNode("div",Mp,[e.createElementVNode("span",{class:"block w-[16px] h-[16px] rounded",style:e.normalizeStyle({backgroundColor:L.color})},null,4),e.createElementVNode("span",Tp,e.toDisplayString(L.label),1)]),e.createElementVNode("div",Ip,[e.createElementVNode("span",Dp,e.toDisplayString(L.count),1),e.createElementVNode("span",jp,e.toDisplayString(E(L.count)),1)])]))),128))])],64)):(e.openBlock(),e.createElementBlock("div",Sp,"Дані відсутні"))])])):(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:C[0]||(C[0]=L=>r.value=!0)}," Набори даних "))}}),[["__scopeId","data-v-9686ce7b"]]),Op={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]"},zp={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"},Pp=["onClick"],Rp={class:"relative flex-1 min-w-[140px]"},Up=["placeholder"],qp="https://data.softpro.ua/api-user/gis-url-proxy",Yp="https://geo.rv.ua/api-user/dzk.api",In=W(e.defineComponent({__name:"MapSearchWidget",props:{config:{}},setup(t){const n=t,o=se(),r=["xy","parcel"],i=e.computed(()=>{var V,A;const _=(A=(V=n.config)==null?void 0:V.tools)==null?void 0:A.filter(h=>r.includes(h));return _&&_.length?_:r}),l=e.computed(()=>{var _,V;return((V=(_=n.config)==null?void 0:_.placeholder)==null?void 0:V.trim())||"Пошук…"}),a=e.ref(i.value[0]);e.watch(i,_=>{_.includes(a.value)||(a.value=_[0])});const c=e.ref(""),p=e.ref(!1),d=e.ref(null);e.watch(a,()=>{c.value="",p.value=!1});function g(_){a.value=_}function s(_){if(!p.value)return;const V=d.value;V&&!V.contains(_.target)&&(p.value=!1)}e.onMounted(()=>{window.addEventListener("click",s,!0)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",s,!0)});function f(_){return _==="xy"?"Координати":_==="parcel"?"Кадастр":"Адреси"}function y(_){const V=_.replace(/[,]+/g," ").trim();if(!V)return null;const A=V.split(/\s+/).filter(Boolean);if(A.length<2)return null;const h=A.slice(0,2).map(Number);if(!h.every(T=>Number.isFinite(T)))return null;let[$,B]=h,F=$,v=B;const w=T=>Math.abs(T)<=90,S=T=>Math.abs(T)<=180;if(!w(F)||!S(v))if(w(v)&&S(F))F=B,v=$;else return null;return{lat:F,lng:v}}function u(_){return((_==null?void 0:_.items)||[]).map((A,h)=>{var $,B,F;return{id:String((A==null?void 0:A.id)??h),title:(A==null?void 0:A.title)||(($=A==null?void 0:A.address)==null?void 0:$.label)||"Знайдений обʼєкт",lat:Number((B=A==null?void 0:A.position)==null?void 0:B.lat),lng:Number((F=A==null?void 0:A.position)==null?void 0:F.lng)}})}function m(_){const V=(_==null?void 0:_.result)||(_==null?void 0:_.data)||_;if(!V)return[];const A=V.geom_centroid;if(!A||!Array.isArray(A.coordinates))return[];const[h,$]=A.coordinates;return!Number.isFinite($)||!Number.isFinite(h)?[]:[{id:"parcel",title:V.cadnum||V.cad_num||"Земельна ділянка",lat:$,lng:h}]}function x(_){const A=_.replace(/\s+/g,"").split(":");if(console.log(A),A.length!==4)return!1;const h=[10,2,3,4];return A.every(($,B)=>$.length===h[B]&&/^\d+$/.test($))}function N(_){var A,h;const V=((A=n.config)==null?void 0:A.zoom)??17;(h=o.flyTo)==null||h.call(o,{center:[_.lng,_.lat],zoom:V})}async function k(){const _=c.value.trim();if(_){if(a.value==="xy"){const V=y(_);if(!V){ne.notify({type:"warning",title:"Пошук координат",message:"Не знайдено або невірний формат координат"});return}N({...V}),c.value="";return}try{const V=new URL(a.value==="here"?qp:Yp);if(a.value==="here")V.searchParams.set("searchtext",_);else{if(!x(_)){ne.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}V.searchParams.set("cad_num",_)}const A=await fetch(V.toString());if(!A.ok)throw new Error(`HTTP ${A.status}`);const h=await A.json(),$=a.value==="here"?u(h):m(h);if(!$.length)ne.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const B=$[0];N(B),c.value=""}}catch(V){const A=(V==null?void 0:V.message)||"Помилка пошуку";ne.notify({type:"error",title:"Пошук",message:A})}}}return(_,V)=>(e.openBlock(),e.createElementBlock("div",Op,[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(k,["prevent"])},[i.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:d,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:V[0]||(V[0]=A=>p.value=!p.value)},[e.createElementVNode("span",null,e.toDisplayString(f(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"},[...V[2]||(V[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",zp,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,A=>(e.openBlock(),e.createElementBlock("li",{key:A,class:"px-3 py-2 cursor-pointer hover:bg-gray-100",onClick:h=>g(A)},e.toDisplayString(f(A)),9,Pp))),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",Rp,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[1]||(V[1]=A=>c.value=A),placeholder:l.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,Up),[[e.vModelText,c.value,void 0,{trim:!0}]]),V[3]||(V[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"]]),Hp="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css",Wp="https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js",Kp=W(e.defineComponent({__name:"MapPrintControl",setup(t){const{map:n,ready:o,addControl:r,removeControl:i}=se(),l=e.ref(null),a=e.ref(null),c=e.ref(null),p=e.ref(null);let d=null;function g(){!window.mapboxgl&&window.maplibregl&&(window.mapboxgl=window.maplibregl)}function s(h){if(Array.from(document.styleSheets).some(F=>{var v;return(v=F==null?void 0:F.href)==null?void 0:v.includes(h)}))return;const B=document.createElement("link");B.rel="stylesheet",B.href=h,document.head.appendChild(B)}function f(h){return new Promise(($,B)=>{const F=Array.from(document.scripts).find(w=>w.src===h);if(F){if(F._loaded)return $();F.addEventListener("load",()=>$()),F.addEventListener("error",()=>B(new Error(`Failed ${h}`)));return}const v=document.createElement("script");v.src=h,v.async=!0,v.onload=()=>{v._loaded=!0,$()},v.onerror=()=>B(new Error(`Failed ${h}`)),document.head.appendChild(v)})}function y(){var $,B,F;const h=window;return h.MapboxExportControl||(($=h.mapboxgl)==null?void 0:$.MapboxExportControl)||((B=h.mapboxglExport)==null?void 0:B.MapboxExportControl)||((F=h.mapboxglExport)==null?void 0:F.default)||null}function u(){const h=document.createElementNS("http://www.w3.org/2000/svg","svg");return h.setAttribute("xmlns","http://www.w3.org/2000/svg"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("width","18"),h.setAttribute("height","18"),h.setAttribute("fill","none"),h.setAttribute("stroke","currentColor"),h.setAttribute("stroke-width","2"),h.setAttribute("stroke-linecap","round"),h.setAttribute("stroke-linejoin","round"),h.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((B,F)=>{const v=document.createElementNS("http://www.w3.org/2000/svg","path");Object.entries(B).forEach(([w,S])=>{v.setAttribute(w,S)}),h.appendChild(v)}),h}function m(){const h=document.createElement("button");h.id="print-btn",h.type="button",h.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(" "),h.setAttribute("aria-label","Друк");const $=u(),B=document.createElement("span");return B.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(" "),B.textContent="Друк",B.setAttribute("aria-hidden","true"),h.appendChild($),h.appendChild(B),h.addEventListener("click",F=>{F.stopPropagation(),x()}),p.value=h,h}function x(){if(!c.value)return;c.value.style.display==="block"?k():N()}function N(){var h,$,B;c.value&&(c.value.style.display="block",(h=p.value)==null||h.classList.add("scale-105","shadow-xl"),($=a.value)==null||$.toggleCrosshair(!0),(B=a.value)==null||B.togglePrintableArea(!0),document.addEventListener("click",_))}function k(){var h,$,B;c.value&&(c.value.style.display="none",(h=p.value)==null||h.classList.remove("scale-105","shadow-xl"),($=a.value)==null||$.toggleCrosshair(!1),(B=a.value)==null||B.togglePrintableArea(!1),document.removeEventListener("click",_))}function _(h){const $=l.value;$&&(h.target&&$.contains(h.target)||k())}function V(h){const $={Size:"Розмір",Orientation:"Орієнтація",Format:"Формат",DPI:"DPI",Landscape:"Горизонтальна",Portrait:"Вертикальна",PNG:"PNG",JPEG:"JPEG",SVG:"SVG",PDF:"PDF","Page Size":"Розмір","Page Orientation":"Орієнтація"};h.querySelectorAll("label, option").forEach(F=>{var w;const v=(w=F.textContent)==null?void 0:w.trim();v&&$[v]&&(F.textContent=$[v])});const B=h.querySelector("button");B&&(B.textContent="Друкувати")}function A(h){const $=h.querySelector(".mapboxgl-export-list");if(!$||!l.value)return;c.value=$;const B=h.querySelector("button");if(B&&(B.style.display="none"),h.style.display="none",!p.value){const v=m();l.value.appendChild(v)}$.style.display="none";const F="_printControlBound";if(!$[F]){const v=w=>w.stopPropagation();$.addEventListener("click",v),$.addEventListener("mousedown",v),$[F]=!0}l.value.appendChild($),V($)}return e.onMounted(async()=>{await(o==null?void 0:o());const h=n.value;if(!h)return;s(Hp),g();try{await f(Wp)}catch(F){console.warn("[MapPrintControl] load error",F);return}const $=y();if(!$)return;const B=new $({PageSize:"A4",PageOrientation:"landscape",Format:"pdf",DPI:300,Crosshair:!0,PrintableArea:!0});if(a.value=B,typeof B.onAdd=="function"){const F=B.onAdd.bind(B);B.onAdd=v=>{const w=F(v);return setTimeout(()=>w&&A(w),50),w}}r?r(B,"top-right"):h.addControl(B,"top-right"),d=F=>{F.key==="Escape"&&k()},document.addEventListener("keyup",d)}),e.onBeforeUnmount(()=>{k(),d&&(document.removeEventListener("keyup",d),d=null);const h=n.value;if(a.value)try{i?i(a.value):h==null||h.removeControl(a.value)}catch{}a.value=null}),(h,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:l,class:"map-print-control"},null,512))}}),[["__scopeId","data-v-89156246"]]),Zp={class:"map-center-control"},Gp=W(e.defineComponent({__name:"MapCenterControl",props:{center:{},zoom:{}},setup(t){const n=t,{map:o,ready:r}=se(),i=e.ref(null),l=e.ref(null);function a(p){if(Array.isArray(p)&&p.length>=2){const[d,g]=p.slice(0,2).map(s=>Number(s));return Number.isNaN(d)||Number.isNaN(g)?null:[d,g]}if(p&&typeof p=="object"){const d=p,g=d.lng??d.lon??d.long??d.x,s=d.lat??d.y;if(g!=null&&s!=null){const f=Number(g),y=Number(s);if(!Number.isNaN(f)&&!Number.isNaN(y))return[f,y]}}if(typeof p=="string"){const d=p.split(",").map(g=>Number(g.trim()));if(d.length>=2&&d.every(g=>!Number.isNaN(g)))return[d[0],d[1]]}return null}e.watch(()=>n.center,p=>{const d=a(p);d&&(i.value=d)},{immediate:!0}),e.watch(()=>n.zoom,p=>{const d=Number(p);Number.isNaN(d)||(l.value=d)},{immediate:!0}),e.onMounted(async()=>{await(r==null?void 0:r());const p=o.value;if(p){if(!i.value){const d=p.getCenter();i.value=[d.lng,d.lat]}l.value==null&&(l.value=p.getZoom())}});function c(){const p=o.value;if(!p)return;const d=i.value||(()=>{const s=p.getCenter();return[s.lng,s.lat]})(),g=l.value??p.getZoom();p.flyTo({center:d,zoom:g})}return(p,d)=>(e.openBlock(),e.createElementBlock("div",Zp,[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(c,["stop"])},[e.createVNode(e.unref(Yn),{class:"w-4 h-4"}),d[0]||(d[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"]]),Xp={class:"cursor-coordinates"},Qp={class:"cursor-coordinates__text"},Jp=W(e.defineComponent({__name:"MapCursorCoordinates",props:{coordinates:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",Xp,[e.createElementVNode("span",Qp,e.toDisplayString(t.coordinates),1)]))}}),[["__scopeId","data-v-334315d9"]]),em={class:"minimap__wrapper"},Je="minimap-viewport",tm="minimap-viewport-layer",nm=W(e.defineComponent({__name:"MapMiniMap",props:{mapContext:{},width:{},height:{},options:{}},setup(t){var N;const n=t,o=e.ref(null),r=e.shallowRef(null),i=(N=n.options)==null?void 0:N.active,l=e.ref(i===void 0?!1:!!i);function a(k,_){return typeof k=="number"&&Number.isFinite(k)?k:_}const c=e.computed(()=>{var h,$;const k=(h=n.options)==null?void 0:h.width,_=($=n.options)==null?void 0:$.height,V=a(n.width??k,210),A=a(n.height??_,150);return{width:`${V}px`,height:`${A}px`}});function p(){var _,V;const k=(V=(_=n.mapContext)==null?void 0:_.map)==null?void 0:V.value;if(!k||typeof k.getStyle!="function")return null;try{const A=k.getStyle();return A?JSON.parse(JSON.stringify(A)):null}catch{return null}}let d=null;function g(){var h;if(typeof window>"u"||r.value||!o.value)return;const k=p(),_=[30,50],V={container:o.value,style:k??{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:_,zoom:((h=n.options)==null?void 0:h.zoom)??3,interactive:!1,attributionControl:!1},A={...V,...n.options??{}};A.container=V.container,r.value=new maplibregl.Map(A),r.value.on("load",()=>{f(),u()})}function s(){if(!r.value)return;const k=p();k&&(r.value.once("styledata",()=>{f(),u()}),r.value.setStyle(k))}function f(){if(r.value){if(typeof r.value.isStyleLoaded=="function"&&!r.value.isStyleLoaded()){r.value.once("styledata",()=>{f(),u()});return}r.value.getSource(Je)||(r.value.addSource(Je,{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]},properties:{}}}),r.value.addLayer({id:tm,type:"fill",source:Je,paint:{"fill-color":"#3b82f6","fill-opacity":.2,"fill-outline-color":"#1d4ed8"}}))}}function y(){l.value=!l.value,l.value&&e.nextTick(()=>{var k;return(k=r.value)==null?void 0:k.resize()})}function u(){var B,F;const k=(F=(B=n.mapContext)==null?void 0:B.map)==null?void 0:F.value;if(!r.value||!k||!k.getBounds)return;if(typeof r.value.isStyleLoaded=="function"&&!r.value.isStyleLoaded()){r.value.once("styledata",()=>{u()});return}const _=k.getBounds();if(!_)return;const V=_.getNorthEast(),A=_.getSouthWest();if(!V||!A)return;const h=[[A.lng,V.lat],[V.lng,V.lat],[V.lng,A.lat],[A.lng,A.lat],[A.lng,V.lat]],$=r.value.getSource(Je);if(!$){f();return}$.setData({type:"Feature",geometry:{type:"Polygon",coordinates:[h]},properties:{}})}function m(){var V;const k=n.mapContext,_=(V=k==null?void 0:k.map)==null?void 0:V.value;!(k!=null&&k.on)||!_||(d==null||d(),d=k.on("move",u),u())}async function x(){const k=n.mapContext;if(k){if(typeof k.ready=="function")try{await k.ready()}catch{return}m()}}return e.onMounted(()=>{g(),x()}),e.watch(()=>n.mapContext,()=>{x(),u()}),e.watch(()=>{var k,_;return(_=(k=n.mapContext)==null?void 0:k.map)==null?void 0:_.value},()=>{r.value&&(s(),x())}),e.watch(c,()=>{r.value&&e.nextTick(()=>{var k;return(k=r.value)==null?void 0:k.resize()})}),e.watch(()=>n.options,()=>{var _;d==null||d(),d=null,r.value&&(r.value.remove(),r.value=null);const k=(_=n.options)==null?void 0:_.active;typeof k=="boolean"&&(l.value=k),e.nextTick(()=>{g(),x()})},{deep:!0}),e.onBeforeUnmount(()=>{d==null||d(),d=null,r.value&&(r.value.remove(),r.value=null)}),(k,_)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["minimap",{"minimap--open":l.value}])},[e.createElementVNode("button",{type:"button",class:"minimap__button",onClick:y},[e.createVNode(e.unref(Un))]),e.createVNode(e.Transition,{name:"minimap-slide"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",em,[e.createElementVNode("div",{ref_key:"minimapRoot",ref:o,class:"mapboxgl-ctrl-minimap mapboxgl-ctrl mapboxgl-map",style:e.normalizeStyle(c.value),id:"mapboxgl-minimap"},null,4)],512),[[e.vShow,l.value]])]),_:1})],2))}}),[["__scopeId","data-v-3ce09bde"]]),om={key:1,class:"absolute bottom-4 right-4 z-[80] flex items-end gap-2"},rm={class:"absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1"},lm={class:"map-widget__overlay-grid"},im={key:0,id:"map-filter-popover-host",class:"map-widget__filter-host"},am={key:1,class:"map-widget__stack-wrapper map-widget__stack-wrapper--top"},sm={class:"map-widget__stack"},cm={key:2,class:"map-widget__stack-wrapper map-widget__stack-wrapper--bottom mb-5"},dm={class:"map-widget__stack map-widget__stack--bottom"},um={key:0,class:"map-widget__state"},pm={key:1,class:"map-widget__state map-widget__state--error"},wt=W(e.defineComponent({__name:"MapWidget",props:{id:{},height:{},minZoom:{},maxZoom:{}},setup(t){var be,fe;const n=t,o=me.useRoute(),r=me.useRouter(),i=e.ref(null),l=e.ref({}),a=e.ref(!1),c=e.ref(null),p=e.ref(!1),d=e.ref([]),g=e.computed(()=>n.id||"main"),s=e.computed(()=>{var M,U;return{height:((M=n.height)==null?void 0:M.trim())||((U=l.value)==null?void 0:U.height)||"calc(100vh - 65px)"}}),f=e.computed(()=>{var M;return((M=l.value)==null?void 0:M.name)??null}),y=e.computed(()=>{var M;return((M=l.value)==null?void 0:M.description)??null}),u=e.computed(()=>{var M;return B((M=l.value)==null?void 0:M.maps)}),m=e.computed(()=>{var U,H;const M=((U=l.value)==null?void 0:U.minZoom)??((H=l.value)==null?void 0:H.minzoom)??null;return typeof M=="number"?M:null}),x=e.computed(()=>{var U,H;const M=((U=l.value)==null?void 0:U.maxZoom)??((H=l.value)==null?void 0:H.maxzoom)??null;return typeof M=="number"?M:typeof n.maxZoom=="number"?n.maxZoom:20}),N=e.ref(null),k=e.computed(()=>{if(!N.value)return null;const{lng:M,lat:U}=N.value;return`${U.toFixed(6)}, ${M.toFixed(6)}`}),_=e.computed(()=>{var M;return((M=i.value)==null?void 0:M.ctx)??null}),V=e.computed(()=>{var M;return((M=l.value)==null?void 0:M.minimap)??null}),A=((fe=(be=e.getCurrentInstance())==null?void 0:be.appContext.config.globalProperties)==null?void 0:fe.$settings)||null,h=e.computed(()=>{const M=(A==null?void 0:A.map)||null,U=(M==null?void 0:M.boundary)??null,H=(M==null?void 0:M.katottg)??null;return!U&&!H?null:{boundary:U,katottg:H}});function $(M){return typeof M=="string"&&M.trim()?M.trim().toLowerCase():"top-left"}function B(M){return Array.isArray(M)?M:M&&typeof M=="object"?Object.values(M).filter(Boolean):[]}const F=e.computed(()=>{var M;return B((M=l.value)==null?void 0:M.widgets)}),v=["left","right"],w=e.computed(()=>{const M={left:{top:[],bottom:[]},right:{top:[],bottom:[]}},U={"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 F.value.forEach(H=>{const Z=$(H.position),q=U[Z]??{side:"left",align:"top"};M[q.side][q.align].push(H)}),M});function S(M){return Array.isArray(M)?M[0]??null:typeof M=="string"?M:null}async function T(){var U;await e.nextTick();const M=(U=i.value)==null?void 0:U.ctx;return M?(M.ready&&await M.ready(),M):null}function I(){var M,U,H;return((H=(U=(M=i.value)==null?void 0:M.ctx)==null?void 0:U.map)==null?void 0:H.value)??null}function E(){const M=I();if(!M)return null;const U=M.getCenter(),H=M.getZoom();return{x:U.lng.toFixed(5),y:U.lat.toFixed(5),z:H.toFixed(2)}}async function b(){var H;const M=await T(),U=(H=M==null?void 0:M.map)==null?void 0:H.value;U&&(typeof m.value=="number"&&U.setMinZoom(m.value),typeof x.value=="number"&&U.setMaxZoom(x.value))}function C(){const M=E();if(!M)return;const U=S(o.query.x),H=S(o.query.y),Z=S(o.query.z);U===M.x&&H===M.y&&Z===M.z||r.replace({query:{...o.query,...M}}).catch(()=>{})}function L(M,U,H=1e-6){return Math.abs(M-U)<=H}async function j(){var pe;const M=await T(),U=(pe=M==null?void 0:M.map)==null?void 0:pe.value;if(!M||!U)return;const H=parseFloat(S(o.query.x)??""),Z=parseFloat(S(o.query.y)??""),q=parseFloat(S(o.query.z)??""),z=!Number.isNaN(H),ue=!Number.isNaN(Z),ge=!Number.isNaN(q);let ye=!1;if(z&&ue){const xe=U.getCenter();(!L(xe.lng,H)||!L(xe.lat,Z))&&(U.setCenter([H,Z]),ye=!0)}ge&&U.setZoom(q),(!z||!ue||!ge||ye)&&C()}let D=null,O=null;function P(M){const U=M==null?void 0:M.lngLat;U&&(N.value={lng:U.lng,lat:U.lat})}async function Y(){const M=await T();M!=null&&M.on&&(D==null||D(),D=M.on("moveend",C),O==null||O(),O=M.on("mousemove",P))}e.onUnmounted(()=>{D==null||D(),D=null,O==null||O(),O=null});async function J(){var M,U;p.value=!1,a.value=!0,c.value=null,N.value=null;try{const H=await fetch(`/api/gis-map/${encodeURIComponent(g.value)}`);if(!H.ok)throw new Error(`Помилка завантаження (${H.status})`);const Z=await H.json();l.value=Z,l.value.widgets=Z.widgets,d.value=Z.tools||["home","print"];const q=await T();q&&(Z.center&&((M=q.setCenter)==null||M.call(q,Z.center)),Z.zoom&&((U=q.setZoom)==null||U.call(q,Z.zoom))),await b(),await j(),await Y(),p.value=!0}catch(H){c.value=(H==null?void 0:H.message)||"Не вдалося завантажити карту"}finally{a.value=!1}}const K=e.computed(()=>{var Z;const M=new Map;return B((Z=l.value)==null?void 0:Z.layers).forEach(q=>{q!=null&&q.id&&M.set(q.id,{...q})}),F.value.filter(q=>(q==null?void 0:q.type)==="layers").flatMap(q=>{var z;return B((z=q==null?void 0:q.config)==null?void 0:z.layers)}).forEach(q=>{if(!(q!=null&&q.id))return;const z=M.get(q.id)||{};M.set(q.id,{...z,...q,actions:q.actions||z.actions||null,name:z.name||q.name||q.title||z.title||q.id,title:z.title||q.title||z.name||null,visible:z.visible??q.visible??!0})}),Array.from(M.values())}),X=e.ref([]);function ae(M){X.value.includes(M)?X.value=X.value.filter(U=>U!==M):X.value.push(M)}const de=e.computed(()=>M=>X.value.includes(M.id));return e.watch([m,x],()=>{b()},{immediate:!0}),e.watch(g,()=>{J()}),e.onMounted(()=>{J()}),e.watch(()=>[o.query.x,o.query.y,o.query.z],()=>{j()}),(M,U)=>(e.openBlock(),e.createElementBlock("div",{class:"map-widget",style:e.normalizeStyle(s.value)},[e.createVNode(vn,{ref_key:"mapViewRef",ref:i,class:"map-widget__view"},{default:e.withCtx(()=>{var H,Z;return[h.value?(e.openBlock(),e.createBlock($n,{key:0,"layer-id":"app-boundary",boundary:h.value.boundary,katottg:h.value.katottg},null,8,["boundary","katottg"])):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createElementBlock("div",om,[k.value?(e.openBlock(),e.createBlock(Jp,{key:0,coordinates:k.value},null,8,["coordinates"])):e.createCommentVNode("",!0),e.createVNode(nm,{"map-context":_.value,options:V.value},null,8,["map-context","options"])])):e.createCommentVNode("",!0),e.createElementVNode("div",rm,[d.value.includes("home")?(e.openBlock(),e.createBlock(Gp,{key:0,center:((H=l.value)==null?void 0:H.center)||null,zoom:((Z=l.value)==null?void 0:Z.zoom)??null},null,8,["center","zoom"])):e.createCommentVNode("",!0),d.value.includes("print")?(e.openBlock(),e.createBlock(Kp,{key:1})):e.createCommentVNode("",!0)]),p.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",lm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(v,q=>e.createElementVNode("div",{key:q,class:e.normalizeClass(["map-widget__side",`map-widget__side--${q}`])},[q==="left"?(e.openBlock(),e.createElementBlock("div",im)):e.createCommentVNode("",!0),w.value[q].top.length?(e.openBlock(),e.createElementBlock("div",am,[e.createElementVNode("div",sm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value[q].top,z=>{var ue,ge,ye,pe,xe,ve,Ue,qe;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:z.id||z.type,class:"map-overlay__item"},[z.type==="info"?(e.openBlock(),e.createBlock(An,{key:0,title:((ue=z.config)==null?void 0:ue.title)||z.title||null,content:((ge=z.config)==null?void 0:ge.content)||"",links:u.value,"map-name":f.value,"map-description":y.value},null,8,["title","content","links","map-name","map-description"])):z.type==="catalog"?(e.openBlock(),e.createBlock(Mn,{key:1,api:((ye=z.config)==null?void 0:ye.api)||null},null,8,["api"])):z.type==="layers"?(e.openBlock(),e.createBlock(Fn,{key:2,layers:K.value,onAction:U[0]||(U[0]=Et=>ae(Et.layerId)),config:z.config},null,8,["layers","config"])):z.type==="basemaps"?(e.openBlock(),e.createBlock(yt,{key:3,layers:((pe=z.config)==null?void 0:pe.layers)||null,"default-layer":((xe=z.config)==null?void 0:xe.default)||null,title:z.title||((ve=z.config)==null?void 0:ve.title)||null},null,8,["layers","default-layer","title"])):z.type==="legend"?(e.openBlock(),e.createBlock(xt,{key:4,items:((Ue=z.config)==null?void 0:Ue.items)||[]},null,8,["items"])):z.type==="filters"&&de.value(z)?(e.openBlock(),e.createBlock(ht,{key:5,"layer-id":(qe=z.config)==null?void 0:qe.layer,onClose:ae},null,8,["layer-id"])):z.type==="dataset"||z.type==="attribute"?(e.openBlock(),e.createBlock(Tn,{key:6,config:z.config},null,8,["config"])):z.type==="search"?(e.openBlock(),e.createBlock(In,{key:7,config:z.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,z.visible!==!1]])}),128))])])):e.createCommentVNode("",!0),w.value[q].bottom.length?(e.openBlock(),e.createElementBlock("div",cm,[e.createElementVNode("div",dm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value[q].bottom,z=>{var ue,ge,ye,pe,xe,ve,Ue,qe;return e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:z.id||z.type,class:"map-overlay__item"},[z.type==="info"?(e.openBlock(),e.createBlock(An,{key:0,title:((ue=z.config)==null?void 0:ue.title)||z.title||null,content:((ge=z.config)==null?void 0:ge.content)||"",links:u.value,"map-name":f.value,"map-description":y.value},null,8,["title","content","links","map-name","map-description"])):z.type==="catalog"?(e.openBlock(),e.createBlock(Mn,{key:1,api:((ye=z.config)==null?void 0:ye.api)||null},null,8,["api"])):z.type==="layers"?(e.openBlock(),e.createBlock(Fn,{key:2,layers:K.value,onAction:U[1]||(U[1]=Et=>ae(Et.layerId)),config:z.config},null,8,["layers","config"])):z.type==="basemaps"?(e.openBlock(),e.createBlock(yt,{key:3,layers:((pe=z.config)==null?void 0:pe.layers)||null,"default-layer":((xe=z.config)==null?void 0:xe.default)||null,title:z.title||((ve=z.config)==null?void 0:ve.title)||null},null,8,["layers","default-layer","title"])):z.type==="legend"?(e.openBlock(),e.createBlock(xt,{key:4,items:((Ue=z.config)==null?void 0:Ue.items)||[]},null,8,["items"])):z.type==="filters"&&de.value(z)?(e.openBlock(),e.createBlock(ht,{key:5,"layer-id":(qe=z.config)==null?void 0:qe.layer,onClose:ae},null,8,["layer-id"])):z.type==="dataset"||z.type==="attribute"?(e.openBlock(),e.createBlock(Tn,{key:6,config:z.config},null,8,["config"])):z.type==="search"?(e.openBlock(),e.createBlock(In,{key:7,config:z.config},null,8,["config"])):e.createCommentVNode("",!0)])),[[e.vShow,z.visible!==!1]])}),128))])])):e.createCommentVNode("",!0)],2)),64))]),e.createVNode(Nn),e.createVNode(Vn)],64)):e.createCommentVNode("",!0)]}),_:1},512),a.value?(e.openBlock(),e.createElementBlock("div",um,"Завантаження карти…")):c.value?(e.openBlock(),e.createElementBlock("div",pm,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)],4))}}),[["__scopeId","data-v-6e34dcde"]]);function mm(t){t.component("MapCustom",wt)}te.MapWidget=wt,te.Register=Fi,te.Service=pu,te.default=wt,te.install=mm,te.template1=Vt,te.template2=$t,te.template3=At,te.template4=St,te.template5=Lt,Object.defineProperties(te,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|