@opengis/gis 0.2.52 → 0.2.54

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.
Files changed (156) hide show
  1. package/README.md +5 -5
  2. package/dist/index.css +1 -1
  3. package/dist/index.js +170 -152
  4. package/dist/index.umd.cjs +3 -3
  5. package/module/cls.json +6 -6
  6. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  7. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  8. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  9. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  10. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  11. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  12. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  13. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  14. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  15. package/module/gis/card/gis.registers.table/index.yml +23 -23
  16. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  17. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  18. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  19. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  20. package/module/gis/card/gis.services.table/index.yml +25 -25
  21. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  22. package/module/gis/card/gis.services.table/source.hbs +25 -25
  23. package/module/gis/cls/bool.yes_no.json +12 -12
  24. package/module/gis/cls/encoding.json +14 -14
  25. package/module/gis/cls/geom_type.json +14 -14
  26. package/module/gis/cls/gis.column_type.json +34 -34
  27. package/module/gis/cls/gis.column_view_type.json +26 -26
  28. package/module/gis/cls/gis.filter_type.json +22 -22
  29. package/module/gis/cls/language.json +10 -10
  30. package/module/gis/cls/meta.service_type.json +42 -42
  31. package/module/gis/cls/ogc.service.json +21 -21
  32. package/module/gis/cls/service_type.json +42 -42
  33. package/module/gis/cls/source_type.json +10 -10
  34. package/module/gis/cls/standarts.json +6 -6
  35. package/module/gis/cls/topic_category.json +106 -106
  36. package/module/gis/cls/update_frequency.json +29 -29
  37. package/module/gis/cls/view.json +21 -21
  38. package/module/gis/form/gis.cartocss.form.json +45 -45
  39. package/module/gis/form/gis.group_list.form.json +17 -17
  40. package/module/gis/form/gis.maps.form.json +61 -61
  41. package/module/gis/form/gis.metadata.form.json +240 -240
  42. package/module/gis/form/gis.ogc_service.form.json +45 -45
  43. package/module/gis/form/gis.rasters.form.json +76 -76
  44. package/module/gis/form/gis.registers.form.json +124 -124
  45. package/module/gis/form/gis.registers_column.form.json +84 -84
  46. package/module/gis/form/gis.registers_filter.form.json +65 -65
  47. package/module/gis/form/gis.services.form.json +111 -111
  48. package/module/gis/form/gis.services_attributes.form.json +75 -75
  49. package/module/gis/form/gis.services_filter.form.json +65 -65
  50. package/module/gis/menu.json +43 -43
  51. package/module/gis/select/pg.columns.parent.sql +6 -6
  52. package/module/gis/select/pg.table_name.sql +17 -17
  53. package/module/gis/select/service_id.sql +1 -1
  54. package/module/gis/table/gis.cartocss.table.json +62 -62
  55. package/module/gis/table/gis.group_list.table.json +35 -35
  56. package/module/gis/table/gis.maps.table.json +108 -108
  57. package/module/gis/table/gis.metadata.table.json +70 -70
  58. package/module/gis/table/gis.ogc_service.table.json +98 -98
  59. package/module/gis/table/gis.rasters.table.json +101 -101
  60. package/module/gis/table/gis.registers.table.json +144 -144
  61. package/module/gis/table/gis.services.table.json +121 -121
  62. package/module/gis/table/site.gis.registers.table.json +88 -88
  63. package/module/gis/table/site.gis.services.table.json +106 -106
  64. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  65. package/module/gis/tokens.yml +5 -5
  66. package/module/test/cls/bp_build_type.json +37 -37
  67. package/module/test/cls/ts.temp_status.json +18 -18
  68. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  69. package/module/test/cls/ts.temp_type.json +9 -9
  70. package/module/test/layer/bp.json +59 -59
  71. package/module/test/layer/bp1.yml +33 -33
  72. package/module/test/layer/individual.yml +53 -53
  73. package/module/test/layer/ts.linking_passport.yml +55 -55
  74. package/module/test/layer/ts.temp_structure.yml +50 -50
  75. package/module/test/map/addr.yml +21 -21
  76. package/module/test/map/bp_myo.json +43 -43
  77. package/module/test/map/bpf.json +43 -43
  78. package/module/test/map/main.json +36 -36
  79. package/module/test/map/mbd.json +91 -91
  80. package/module/test/map/ts.json +52 -52
  81. package/module/test/select/address_id.json +2 -2
  82. package/module/test/select/address_id.sql +7 -7
  83. package/module/test/table/data_address.street.table.json +69 -69
  84. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  85. package/package.json +75 -75
  86. package/plugin.js +45 -45
  87. package/server/migrations/cartocss.sql +20 -20
  88. package/server/migrations/maps.sql +30 -30
  89. package/server/migrations/ogc.sql +106 -106
  90. package/server/migrations/rasters.sql +263 -263
  91. package/server/migrations/services.sql +247 -247
  92. package/server/migrations/widgets.sql +20 -20
  93. package/server/plugins/crons.js +21 -21
  94. package/server/plugins/mapnik/funcs/checkRasterFile.js +109 -92
  95. package/server/plugins/mapnik/funcs/mapnik.js +146 -146
  96. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  97. package/server/plugins/mapnik/map.proto +187 -188
  98. package/server/plugins/vite.js +74 -74
  99. package/server/routes/gis/cartocss/add.cartocss.js +29 -29
  100. package/server/routes/gis/cartocss/get.cartocss.js +12 -12
  101. package/server/routes/gis/dashboard.js +29 -29
  102. package/server/routes/gis/index.mjs +73 -73
  103. package/server/routes/gis/metadata/metadataXML.js +13 -13
  104. package/server/routes/gis/ogc/map.info.point.js +124 -124
  105. package/server/routes/gis/registers/add.registry.js +35 -35
  106. package/server/routes/gis/registers/del.registry.js +14 -14
  107. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  108. package/server/routes/gis/registers/funcs/columns.js +4 -4
  109. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  110. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  111. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +145 -145
  112. package/server/routes/gis/registers/gis.export.js +148 -148
  113. package/server/routes/gis/registers/gis.registry.js +64 -64
  114. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  115. package/server/routes/gis/registers/insert.columns.js +107 -107
  116. package/server/routes/gis/registers/insert.filters.js +110 -110
  117. package/server/routes/gis/registers/map.registry.js +79 -79
  118. package/server/routes/gis/services/add.service.js +64 -64
  119. package/server/routes/gis/services/del.service.js +12 -12
  120. package/server/routes/gis/services/get.layer.geom.js +27 -27
  121. package/server/routes/gis/services/get.services.col.js +33 -33
  122. package/server/routes/gis/services/get.services.js +84 -84
  123. package/server/routes/gis/services/legend.auto.js +77 -77
  124. package/server/routes/map/controllers/geojson.js +187 -187
  125. package/server/routes/map/controllers/jsonData.js +205 -205
  126. package/server/routes/map/controllers/layerList.js +60 -60
  127. package/server/routes/map/controllers/map.js +123 -123
  128. package/server/routes/map/controllers/mapCatalog.js +72 -72
  129. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  130. package/server/routes/map/controllers/mapFeatures.js +128 -128
  131. package/server/routes/map/controllers/mapFormat.js +85 -85
  132. package/server/routes/map/controllers/mapTiles.js +152 -152
  133. package/server/routes/map/controllers/maps.js +15 -15
  134. package/server/routes/map/controllers/marker_icon.js +43 -43
  135. package/server/routes/map/controllers/vtile.js +172 -172
  136. package/server/routes/map/index.mjs +142 -142
  137. package/server/routes/map/maps/add.map.js +43 -43
  138. package/server/routes/map/maps/del.map.js +18 -18
  139. package/server/routes/map/maps/get.map.js +80 -80
  140. package/server/routes/map/vtile1.js +170 -170
  141. package/server/routes/map/widgets/add.widget.js +38 -38
  142. package/server/routes/map/widgets/del.widget.js +22 -22
  143. package/server/routes/map/widgets/get.widget.js +40 -40
  144. package/server/routes/mapnik/controllers/checkCarto.js +40 -40
  145. package/server/routes/mapnik/controllers/createXml.js +63 -63
  146. package/server/routes/mapnik/controllers/mapnikLogger.js +23 -23
  147. package/server/routes/mapnik/controllers/mapnikStat.js +20 -20
  148. package/server/routes/mapnik/controllers/rasterInfo.js +36 -36
  149. package/server/routes/mapnik/controllers/rtile.js +96 -96
  150. package/server/routes/mapnik/controllers/rtileMBD.js +91 -91
  151. package/server/routes/mapnik/controllers/uploadRaster.js +157 -157
  152. package/server/routes/mapnik/functions/cartoBounds.js +22 -22
  153. package/server/routes/mapnik/functions/uploadXML.js +106 -106
  154. package/server/routes/mapnik/index.js +21 -21
  155. package/server/routes/root.mjs +3 -3
  156. package/utils.js +13 -13
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { h as zn, defineComponent as se, mergeModels as _t, defineAsyncComponent as tt, useModel as rt, ref as P, watch as X, createElementBlock as x, openBlock as d, createElementVNode as o, createVNode as Q, unref as ee, withCtx as Me, createStaticVNode as Ft, useSlots as gr, computed as D, Fragment as G, createCommentVNode as Z, createTextVNode as he, renderList as oe, normalizeStyle as De, toDisplayString as R, withModifiers as Oe, normalizeClass as ve, createBlock as te, resolveDynamicComponent as Ct, withDirectives as Te, renderSlot as nn, onBeforeUnmount as $e, onMounted as Ce, shallowRef as Yo, onUnmounted as Zo, provide as hr, inject as yr, vModelText as bt, getCurrentInstance as At, nextTick as Pe, reactive as et, Teleport as dt, Transition as qn, createSlots as xr, resolveDirective as Ko, vShow as xt, vModelRadio as br, vModelSelect as fo, withKeys as po } from "vue";
1
+ import { h as zn, defineComponent as se, mergeModels as _t, defineAsyncComponent as tt, useModel as rt, ref as P, watch as X, openBlock as d, createElementBlock as x, createElementVNode as o, createVNode as Q, unref as ee, withCtx as Me, createStaticVNode as Ft, useSlots as gr, computed as D, Fragment as G, createTextVNode as he, createCommentVNode as Z, renderList as oe, normalizeStyle as De, toDisplayString as R, normalizeClass as ve, withModifiers as Oe, createBlock as te, resolveDynamicComponent as Ct, withDirectives as Te, renderSlot as nn, onBeforeUnmount as $e, onMounted as Ce, shallowRef as Yo, onUnmounted as Zo, provide as hr, inject as yr, vModelText as bt, getCurrentInstance as At, nextTick as Pe, reactive as et, Teleport as dt, Transition as qn, createSlots as xr, resolveDirective as Ko, vShow as xt, vModelRadio as br, vModelSelect as fo, withKeys as po } from "vue";
2
2
  import { useRoute as st, useRouter as it } from "vue-router";
3
3
  import { notify as ke, TooltipDirective as Go, confirm as vo, VsPagination as wr } from "@opengis/core";
4
4
  import { VsInputArraySelect as _r, VsInputMask as kr } from "@opengis/form";
@@ -1091,7 +1091,7 @@ const ei = /* @__PURE__ */ fe(Xs, [["render", Qs]]), yo = {
1091
1091
  }, 8, ["visible"])
1092
1092
  ], 64));
1093
1093
  }
1094
- }), Lt = /* @__PURE__ */ fe(bi, [["__scopeId", "data-v-0ede3461"]]), wi = { class: "p-4 text-[13px]" }, _i = { class: "grid grid-cols-2 gap-x-6 gap-y-2" }, ki = ["id", "checked", "onChange"], $i = { class: "ml-2 flex-1 min-w-0 flex items-center gap-2" }, Ci = { class: "font-medium text-gray-900 truncate" }, Ai = { class: "text-xs text-gray-500" }, Li = { class: "flex justify-end gap-2 p-4 border-t w-full" }, qt = /* @__PURE__ */ se({
1094
+ }), Lt = /* @__PURE__ */ fe(bi, [["__scopeId", "data-v-93fedaf0"]]), wi = { class: "p-4 text-[13px]" }, _i = { class: "grid grid-cols-2 gap-x-6 gap-y-2" }, ki = ["id", "checked", "onChange"], $i = { class: "ml-2 flex-1 min-w-0 flex items-center gap-2" }, Ci = { class: "font-medium text-gray-900 truncate" }, Ai = { class: "text-xs text-gray-500" }, Li = { class: "flex justify-end gap-2 p-4 border-t w-full" }, qt = /* @__PURE__ */ se({
1095
1095
  __name: "import-fields-dialog",
1096
1096
  props: /* @__PURE__ */ _t({
1097
1097
  fields: { default: () => [] },
@@ -2112,7 +2112,7 @@ const Zi = { class: "flex flex-col md:flex-row md:justify-between lg:flex-row lg
2112
2112
  }), 128))
2113
2113
  ]));
2114
2114
  }
2115
- }), Ba = { class: "flex flex-col space-y-1.5 p-6 pb-2" }, Ua = { class: "flex items-center gap-2" }, qa = { class: "tracking-tight text-lg font-medium" }, Ha = {
2115
+ }), Ba = { class: "flex flex-col space-y-1.5 p-6 pb-2" }, Ua = { class: "flex items-center gap-2 flex-wrap" }, qa = { class: "tracking-tight text-lg font-medium" }, Ha = {
2116
2116
  key: 0,
2117
2117
  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",
2118
2118
  "data-v0-t": "badge"
@@ -2122,7 +2122,7 @@ const Zi = { class: "flex flex-col md:flex-row md:justify-between lg:flex-row lg
2122
2122
  }, Ya = {
2123
2123
  key: 0,
2124
2124
  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"
2125
- }, Za = { class: "p-6 pt-0 pb-4" }, Ka = { class: "grid grid-cols-2 gap-4" }, Ga = { class: "text-sm text-gray-500" }, Xa = { class: "font-medium" }, Ja = { class: "flex items-center p-6 pt-0 gap-2" }, Qa = ["href"], eu = ["href"], tu = /* @__PURE__ */ se({
2125
+ }, Za = { class: "p-6 pt-0 pb-4" }, Ka = { class: "grid grid-cols-1 md:grid-cols-2 gap-4" }, Ga = { class: "text-sm text-gray-500" }, Xa = { class: "font-medium" }, Ja = { class: "flex items-center p-6 pt-0 gap-2" }, Qa = ["href"], eu = ["href"], tu = /* @__PURE__ */ se({
2126
2126
  __name: "template-4",
2127
2127
  props: {
2128
2128
  items: {},
@@ -5617,7 +5617,7 @@ const yp = { class: "map-filter" }, xp = { class: "map-filter__header" }, bp = {
5617
5617
  ]))
5618
5618
  ], 512)) : Z("", !0);
5619
5619
  }
5620
- }), bn = /* @__PURE__ */ fe(_p, [["__scopeId", "data-v-3e84c1ab"]]), kp = {
5620
+ }), bn = /* @__PURE__ */ fe(_p, [["__scopeId", "data-v-0d4c9370"]]), kp = {
5621
5621
  key: 0,
5622
5622
  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"
5623
5623
  }, $p = /* @__PURE__ */ se({
@@ -5640,7 +5640,7 @@ const yp = { class: "map-filter" }, xp = { class: "map-filter__header" }, bp = {
5640
5640
  ])) : Z("", !0)
5641
5641
  ]));
5642
5642
  }
5643
- }), Bn = /* @__PURE__ */ fe($p, [["__scopeId", "data-v-d244723f"]]), Cp = { class: "flex flex-row gap-x-3 z-10 relative widget" }, Ap = ["onClick"], Lp = ["src", "alt"], en = /* @__PURE__ */ se({
5643
+ }), Bn = /* @__PURE__ */ fe($p, [["__scopeId", "data-v-98772410"]]), Cp = { class: "flex flex-row gap-x-3 z-10 relative widget" }, Ap = ["onClick"], Lp = ["src", "alt"], en = /* @__PURE__ */ se({
5644
5644
  __name: "BaseMaps",
5645
5645
  setup(e) {
5646
5646
  var f, v, g;
@@ -7097,7 +7097,7 @@ const Rp = {
7097
7097
  _: 1
7098
7098
  }));
7099
7099
  }
7100
- }), Gl = /* @__PURE__ */ fe(yv, [["__scopeId", "data-v-370b3cd8"]]), Xl = /* @__PURE__ */ se({
7100
+ }), Gl = /* @__PURE__ */ fe(yv, [["__scopeId", "data-v-f89447ba"]]), Xl = /* @__PURE__ */ se({
7101
7101
  __name: "MapBoundaryLayer",
7102
7102
  props: {
7103
7103
  layerId: {},
@@ -7307,7 +7307,7 @@ const Rp = {
7307
7307
  ]);
7308
7308
  };
7309
7309
  }
7310
- }), Un = /* @__PURE__ */ fe(wv, [["__scopeId", "data-v-f32f9c9c"]]), _v = { class: "flex h-screen bg-gradient-to-br from-slate-50 to-white" }, kv = { class: "flex-1 relative overflow-hidden" }, $v = { class: "absolute top-0 left-0 w-full z-20" }, Cv = { class: "flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4" }, Av = { class: "flex items-center gap-3" }, Lv = { class: "font-semibold text-lg text-gray-800 line-clamp-1" }, Sv = { class: "text-xs text-gray-500 truncate" }, Ev = ["title"], Mv = { 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]" }, Tv = { class: "relative w-full h-full" }, Fv = { style: { top: "17px", left: "230px", position: "absolute", "z-index": "1" } }, Iv = { class: "absolute top-4 left-4 z-20" }, jv = { class: "absolute top-[6.5rem] right-2 space-y-1 z-20" }, zv = { class: "absolute bottom-4 left-4 z-20" }, Nv = { class: "w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg" }, Ov = { class: "flex-1 flex flex-col h-full" }, Pv = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, Vv = { 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" }, Dv = ["aria-selected", "onClick"], Rv = { class: "leading-none" }, Bv = { class: "flex flex-col flex-1 overflow-y-hidden p-3" }, Uv = /* @__PURE__ */ se({
7310
+ }), Un = /* @__PURE__ */ fe(wv, [["__scopeId", "data-v-92671a57"]]), _v = { class: "flex h-screen bg-gradient-to-br from-slate-50 to-white" }, kv = { class: "flex-1 relative overflow-hidden" }, $v = { class: "absolute top-0 left-0 w-full z-20" }, Cv = { class: "flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4" }, Av = { class: "flex items-center gap-3" }, Lv = { class: "font-semibold text-lg text-gray-800 line-clamp-1" }, Sv = { class: "text-xs text-gray-500 truncate" }, Ev = ["title"], Mv = { 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]" }, Tv = { class: "relative w-full h-full" }, Fv = { style: { top: "17px", left: "230px", position: "absolute", "z-index": "1" } }, Iv = { class: "absolute top-4 left-4 z-20" }, jv = { class: "absolute top-[6.5rem] right-2 space-y-1 z-20" }, zv = { class: "absolute bottom-4 left-4 z-20" }, Nv = { class: "w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg" }, Ov = { class: "flex-1 flex flex-col h-full" }, Pv = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, Vv = { 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" }, Dv = ["aria-selected", "onClick"], Rv = { class: "leading-none" }, Bv = { class: "flex flex-col flex-1 overflow-y-hidden p-3" }, Uv = /* @__PURE__ */ se({
7311
7311
  __name: "service",
7312
7312
  setup(e) {
7313
7313
  var K, V;
@@ -7569,7 +7569,7 @@ const Rp = {
7569
7569
  ]);
7570
7570
  };
7571
7571
  }
7572
- }), vx = /* @__PURE__ */ fe(Uv, [["__scopeId", "data-v-6a1fd91f"]]), qv = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, Hv = { class: "space-y-6" }, Wv = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, Yv = { class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4" }, Zv = { class: "text-xs text-gray-500 mb-1" }, Kv = { class: "text-base font-semibold text-gray-900" }, Gv = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, Xv = { class: "space-y-4" }, Jv = { class: "bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200" }, Qv = { class: "text-sm font-semibold text-gray-900" }, e0 = { class: "text-xs text-gray-600 mt-1" }, t0 = { class: "grid grid-cols-2 gap-3" }, n0 = { class: "text-xs text-gray-500 mb-1" }, o0 = { class: "text-sm font-semibold text-gray-900" }, l0 = { class: "bg-gray-50 p-4 rounded-lg" }, r0 = { class: "grid grid-cols-2 gap-4" }, s0 = { class: "text-xs text-gray-500 mb-1" }, i0 = { class: "text-sm font-semibold text-gray-900" }, a0 = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, u0 = { class: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, c0 = { class: "space-y-2" }, d0 = { class: "text-gray-600" }, f0 = { class: "font-semibold text-gray-900" }, p0 = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, v0 = { class: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, m0 = { class: "text-xs text-gray-500 mb-1" }, g0 = { class: "text-sm font-medium text-gray-900" }, h0 = /* @__PURE__ */ se({
7572
+ }), vx = /* @__PURE__ */ fe(Uv, [["__scopeId", "data-v-453aa0f6"]]), qv = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, Hv = { class: "space-y-6" }, Wv = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, Yv = { class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4" }, Zv = { class: "text-xs text-gray-500 mb-1" }, Kv = { class: "text-base font-semibold text-gray-900" }, Gv = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, Xv = { class: "space-y-4" }, Jv = { class: "bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200" }, Qv = { class: "text-sm font-semibold text-gray-900" }, em = { class: "text-xs text-gray-600 mt-1" }, tm = { class: "grid grid-cols-2 gap-3" }, nm = { class: "text-xs text-gray-500 mb-1" }, om = { class: "text-sm font-semibold text-gray-900" }, lm = { class: "bg-gray-50 p-4 rounded-lg" }, rm = { class: "grid grid-cols-2 gap-4" }, sm = { class: "text-xs text-gray-500 mb-1" }, im = { class: "text-sm font-semibold text-gray-900" }, am = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, um = { class: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, cm = { class: "space-y-2" }, dm = { class: "text-gray-600" }, fm = { class: "font-semibold text-gray-900" }, pm = { class: "bg-white p-6 rounded-xl border border-gray-200 shadow-sm" }, vm = { class: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, mm = { class: "text-xs text-gray-500 mb-1" }, gm = { class: "text-sm font-medium text-gray-900" }, hm = /* @__PURE__ */ se({
7573
7573
  __name: "raster-info-tab",
7574
7574
  props: {
7575
7575
  details: {}
@@ -7603,38 +7603,38 @@ const Rp = {
7603
7603
  n[1] || (n[1] = o("p", { class: "text-xs text-gray-500 mb-2" }, "Система координат", -1)),
7604
7604
  o("div", Jv, [
7605
7605
  o("p", Qv, R(e.details.spatial.crs.code), 1),
7606
- o("p", e0, R(e.details.spatial.crs.description), 1)
7606
+ o("p", em, R(e.details.spatial.crs.description), 1)
7607
7607
  ])
7608
7608
  ]),
7609
7609
  o("div", null, [
7610
7610
  n[2] || (n[2] = o("p", { class: "text-xs text-gray-500 mb-2" }, "Межі покриття", -1)),
7611
- o("div", t0, [
7611
+ o("div", tm, [
7612
7612
  (d(!0), x(G, null, oe(e.details.spatial.bounds, (l) => (d(), x("div", {
7613
7613
  key: l.label,
7614
7614
  class: "bg-gray-50 p-3 rounded-lg border border-gray-200"
7615
7615
  }, [
7616
- o("p", n0, R(l.label), 1),
7617
- o("p", o0, R(l.value), 1)
7616
+ o("p", nm, R(l.label), 1),
7617
+ o("p", om, R(l.value), 1)
7618
7618
  ]))), 128))
7619
7619
  ])
7620
7620
  ]),
7621
- o("div", l0, [
7622
- o("div", r0, [
7621
+ o("div", lm, [
7622
+ o("div", rm, [
7623
7623
  (d(!0), x(G, null, oe(e.details.spatial.resolution, (l) => (d(), x("div", {
7624
7624
  key: l.label
7625
7625
  }, [
7626
- o("p", s0, R(l.label), 1),
7627
- o("p", i0, R(l.value), 1)
7626
+ o("p", sm, R(l.label), 1),
7627
+ o("p", im, R(l.value), 1)
7628
7628
  ]))), 128))
7629
7629
  ])
7630
7630
  ])
7631
7631
  ])
7632
7632
  ]),
7633
- o("div", a0, [
7633
+ o("div", am, [
7634
7634
  n[4] || (n[4] = o("div", { class: "mb-4" }, [
7635
7635
  o("h4", { class: "text-sm font-semibold text-gray-900 uppercase tracking-wide" }, "Статистика даних")
7636
7636
  ], -1)),
7637
- o("div", u0, [
7637
+ o("div", um, [
7638
7638
  (d(!0), x(G, null, oe(e.details.statistics, (l) => (d(), x("div", {
7639
7639
  key: l.label,
7640
7640
  class: ve(["p-4 rounded-lg border", l.cardClass])
@@ -7642,48 +7642,48 @@ const Rp = {
7642
7642
  o("p", {
7643
7643
  class: ve(["text-xs font-medium mb-2", l.titleClass])
7644
7644
  }, R(l.label), 3),
7645
- o("div", c0, [
7645
+ o("div", cm, [
7646
7646
  (d(!0), x(G, null, oe(l.metrics, (r) => (d(), x("div", {
7647
7647
  class: "flex justify-between text-xs",
7648
7648
  key: r.label
7649
7649
  }, [
7650
- o("span", d0, R(r.label) + ":", 1),
7651
- o("span", f0, R(r.value), 1)
7650
+ o("span", dm, R(r.label) + ":", 1),
7651
+ o("span", fm, R(r.value), 1)
7652
7652
  ]))), 128))
7653
7653
  ])
7654
7654
  ], 2))), 128))
7655
7655
  ])
7656
7656
  ]),
7657
- o("div", p0, [
7657
+ o("div", pm, [
7658
7658
  n[5] || (n[5] = o("div", { class: "mb-4" }, [
7659
7659
  o("h4", { class: "text-sm font-semibold text-gray-900 uppercase tracking-wide" }, "Технічні деталі")
7660
7660
  ], -1)),
7661
- o("div", v0, [
7661
+ o("div", vm, [
7662
7662
  (d(!0), x(G, null, oe(e.details.technical, (l) => (d(), x("div", {
7663
7663
  key: l.label
7664
7664
  }, [
7665
- o("p", m0, R(l.label), 1),
7666
- o("p", g0, R(l.value), 1)
7665
+ o("p", mm, R(l.label), 1),
7666
+ o("p", gm, R(l.value), 1)
7667
7667
  ]))), 128))
7668
7668
  ])
7669
7669
  ])
7670
7670
  ])
7671
7671
  ]));
7672
7672
  }
7673
- }), y0 = { class: "flex-1 overflow-y-auto space-y-3 pr-1" }, x0 = { class: "font-medium text-sm text-gray-800" }, b0 = { class: "text-xs text-gray-500" }, w0 = /* @__PURE__ */ se({
7673
+ }), ym = { class: "flex-1 overflow-y-auto space-y-3 pr-1" }, xm = { class: "font-medium text-sm text-gray-800" }, bm = { class: "text-xs text-gray-500" }, wm = /* @__PURE__ */ se({
7674
7674
  __name: "raster-files-tab",
7675
7675
  props: {
7676
7676
  files: {}
7677
7677
  },
7678
7678
  setup(e) {
7679
- return (t, n) => (d(), x("div", y0, [
7679
+ return (t, n) => (d(), x("div", ym, [
7680
7680
  (d(!0), x(G, null, oe(e.files, (l) => (d(), x("div", {
7681
7681
  key: l.name,
7682
7682
  class: "border border-gray-100 rounded-xl p-4 shadow-sm bg-white flex items-start justify-between"
7683
7683
  }, [
7684
7684
  o("div", null, [
7685
- o("p", x0, R(l.name), 1),
7686
- o("p", b0, R(l.resolution) + " • " + R(l.size), 1)
7685
+ o("p", xm, R(l.name), 1),
7686
+ o("p", bm, R(l.resolution) + " • " + R(l.size), 1)
7687
7687
  ]),
7688
7688
  o("span", {
7689
7689
  class: ve(["text-[11px] font-semibold px-2 py-0.5 rounded-full", l.statusClass])
@@ -7691,7 +7691,7 @@ const Rp = {
7691
7691
  ]))), 128))
7692
7692
  ]));
7693
7693
  }
7694
- }), _0 = {}, k0 = {
7694
+ }), _m = {}, km = {
7695
7695
  xmlns: "http://www.w3.org/2000/svg",
7696
7696
  width: "12px",
7697
7697
  height: "24",
@@ -7702,8 +7702,8 @@ const Rp = {
7702
7702
  "stroke-linecap": "round",
7703
7703
  "stroke-linejoin": "round"
7704
7704
  };
7705
- function $0(e, t) {
7706
- return d(), x("svg", k0, [...t[0] || (t[0] = [
7705
+ function $m(e, t) {
7706
+ return d(), x("svg", km, [...t[0] || (t[0] = [
7707
7707
  o("path", {
7708
7708
  d: "M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",
7709
7709
  fill: "none",
@@ -7722,7 +7722,7 @@ function $0(e, t) {
7722
7722
  }, null, -1)
7723
7723
  ])]);
7724
7724
  }
7725
- const C0 = /* @__PURE__ */ fe(_0, [["render", $0]]), A0 = {}, L0 = {
7725
+ const Cm = /* @__PURE__ */ fe(_m, [["render", $m]]), Am = {}, Lm = {
7726
7726
  xmlns: "http://www.w3.org/2000/svg",
7727
7727
  width: "24",
7728
7728
  height: "24",
@@ -7733,8 +7733,8 @@ const C0 = /* @__PURE__ */ fe(_0, [["render", $0]]), A0 = {}, L0 = {
7733
7733
  "stroke-linecap": "round",
7734
7734
  "stroke-linejoin": "round"
7735
7735
  };
7736
- function S0(e, t) {
7737
- return d(), x("svg", L0, [...t[0] || (t[0] = [
7736
+ function Sm(e, t) {
7737
+ return d(), x("svg", Lm, [...t[0] || (t[0] = [
7738
7738
  o("circle", {
7739
7739
  cx: "12",
7740
7740
  cy: "12",
@@ -7749,12 +7749,12 @@ function S0(e, t) {
7749
7749
  o("path", { d: "M11 12h1v4h1" }, null, -1)
7750
7750
  ])]);
7751
7751
  }
7752
- const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-screen bg-gradient-to-br from-slate-50 to-white" }, T0 = { class: "flex-1 relative overflow-hidden" }, F0 = { class: "absolute top-0 left-0 w-full z-20" }, I0 = { class: "flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4" }, j0 = { class: "flex items-center gap-3" }, z0 = { class: "font-semibold text-lg text-gray-800 line-clamp-1" }, N0 = { class: "text-xs text-gray-500 truncate" }, O0 = ["title"], P0 = { 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]" }, V0 = { class: "relative w-full h-full" }, D0 = { class: "absolute top-4 left-4 z-20" }, R0 = { class: "absolute bottom-4 left-4 z-20" }, B0 = { class: "w-[520px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg" }, U0 = { class: "flex-1 flex flex-col h-full" }, q0 = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, H0 = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, W0 = ["aria-selected", "onClick"], Y0 = { class: "leading-none" }, Z0 = { class: "flex flex-col flex-1 overflow-y-hidden p-4" }, K0 = "3600301717964457703", mx = /* @__PURE__ */ se({
7752
+ const Em = /* @__PURE__ */ fe(Am, [["render", Sm]]), Mm = { class: "flex h-screen bg-gradient-to-br from-slate-50 to-white" }, Tm = { class: "flex-1 relative overflow-hidden" }, Fm = { class: "absolute top-0 left-0 w-full z-20" }, Im = { class: "flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4" }, jm = { class: "flex items-center gap-3" }, zm = { class: "font-semibold text-lg text-gray-800 line-clamp-1" }, Nm = { class: "text-xs text-gray-500 truncate" }, Om = ["title"], Pm = { 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]" }, Vm = { class: "relative w-full h-full" }, Dm = { class: "absolute top-4 left-4 z-20" }, Rm = { class: "absolute bottom-4 left-4 z-20" }, Bm = { class: "w-[520px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg" }, Um = { class: "flex-1 flex flex-col h-full" }, qm = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, Hm = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, Wm = ["aria-selected", "onClick"], Ym = { class: "leading-none" }, Zm = { class: "flex flex-col flex-1 overflow-y-hidden p-4" }, Km = "3600301717964457703", mx = /* @__PURE__ */ se({
7753
7753
  __name: "raster",
7754
7754
  setup(e) {
7755
7755
  const t = it(), n = st(), l = D(() => {
7756
7756
  var u;
7757
- return ((u = n.params) == null ? void 0 : u.id) || K0;
7757
+ return ((u = n.params) == null ? void 0 : u.id) || Km;
7758
7758
  }), r = D(() => ({
7759
7759
  id: l.value,
7760
7760
  name: "Фрагмент растра 30 см",
@@ -7764,8 +7764,8 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7764
7764
  source: "ДП «Центр ДЗК»",
7765
7765
  updatedAt: "14 травня 2024"
7766
7766
  })), s = [
7767
- { key: "files", label: "Файли", icon: C0 },
7768
- { key: "info", label: "Інформація", icon: E0 }
7767
+ { key: "files", label: "Файли", icon: Cm },
7768
+ { key: "info", label: "Інформація", icon: Em }
7769
7769
  ], i = s.map((u) => u.key), a = P(i.includes(n.query.tab) ? n.query.tab : "files");
7770
7770
  X(() => n.query.tab, (u) => {
7771
7771
  u && i.includes(u) && a.value !== u && (a.value = u);
@@ -7870,11 +7870,11 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7870
7870
  { label: "Оверв'ю", value: "4 рівні" }
7871
7871
  ]
7872
7872
  }));
7873
- return (u, p) => (d(), x("div", M0, [
7874
- o("div", T0, [
7875
- o("div", F0, [
7876
- o("div", I0, [
7877
- o("div", j0, [
7873
+ return (u, p) => (d(), x("div", Mm, [
7874
+ o("div", Tm, [
7875
+ o("div", Fm, [
7876
+ o("div", Im, [
7877
+ o("div", jm, [
7878
7878
  o("button", {
7879
7879
  type: "button",
7880
7880
  onClick: p[0] || (p[0] = (f) => ee(t).back()),
@@ -7897,24 +7897,24 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7897
7897
  he(" Назад ", -1)
7898
7898
  ])]),
7899
7899
  o("div", null, [
7900
- o("div", z0, R(r.value.name), 1),
7901
- o("div", N0, " Растер ID: " + R(r.value.id), 1)
7900
+ o("div", zm, R(r.value.name), 1),
7901
+ o("div", Nm, " Растер ID: " + R(r.value.id), 1)
7902
7902
  ])
7903
7903
  ]),
7904
7904
  o("div", {
7905
7905
  class: "max-w-xl text-xs text-gray-600 truncate",
7906
7906
  title: r.value.description
7907
- }, R(r.value.description), 9, O0)
7907
+ }, R(r.value.description), 9, Om)
7908
7908
  ])
7909
7909
  ]),
7910
- o("div", P0, [
7911
- o("div", V0, [
7910
+ o("div", Pm, [
7911
+ o("div", Vm, [
7912
7912
  Q(xn, null, {
7913
7913
  default: Me(() => [
7914
- o("div", D0, [
7914
+ o("div", Dm, [
7915
7915
  Q(en)
7916
7916
  ]),
7917
- o("div", R0, [
7917
+ o("div", Rm, [
7918
7918
  Q(tn, { items: m })
7919
7919
  ])
7920
7920
  ]),
@@ -7923,10 +7923,10 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7923
7923
  ])
7924
7924
  ])
7925
7925
  ]),
7926
- o("div", B0, [
7927
- o("div", U0, [
7928
- o("div", q0, [
7929
- o("div", H0, [
7926
+ o("div", Bm, [
7927
+ o("div", Um, [
7928
+ o("div", qm, [
7929
+ o("div", Hm, [
7930
7930
  (d(), x(G, null, oe(s, (f) => o("button", {
7931
7931
  key: f.key,
7932
7932
  type: "button",
@@ -7936,15 +7936,15 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7936
7936
  onClick: (v) => a.value = f.key
7937
7937
  }, [
7938
7938
  (d(), te(Ct(f.icon), { class: "h-3.5 w-3.5 mb-0.5" })),
7939
- o("span", Y0, R(f.label), 1)
7940
- ], 10, W0)), 64))
7939
+ o("span", Ym, R(f.label), 1)
7940
+ ], 10, Wm)), 64))
7941
7941
  ])
7942
7942
  ]),
7943
- o("div", Z0, [
7944
- a.value === "files" ? (d(), te(w0, {
7943
+ o("div", Zm, [
7944
+ a.value === "files" ? (d(), te(wm, {
7945
7945
  key: 0,
7946
7946
  files: h.value
7947
- }, null, 8, ["files"])) : (d(), te(h0, {
7947
+ }, null, 8, ["files"])) : (d(), te(hm, {
7948
7948
  key: 1,
7949
7949
  details: w.value
7950
7950
  }, null, 8, ["details"]))
@@ -7953,7 +7953,7 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7953
7953
  ])
7954
7954
  ]));
7955
7955
  }
7956
- }), G0 = {}, X0 = {
7956
+ }), Gm = {}, Xm = {
7957
7957
  xmlns: "http://www.w3.org/2000/svg",
7958
7958
  width: "24",
7959
7959
  height: "24",
@@ -7965,8 +7965,8 @@ const E0 = /* @__PURE__ */ fe(A0, [["render", S0]]), M0 = { class: "flex h-scree
7965
7965
  "stroke-linejoin": "round",
7966
7966
  class: "lucide lucide-table"
7967
7967
  };
7968
- function J0(e, t) {
7969
- return d(), x("svg", X0, [...t[0] || (t[0] = [
7968
+ function Jm(e, t) {
7969
+ return d(), x("svg", Xm, [...t[0] || (t[0] = [
7970
7970
  o("path", { d: "M12 3v18" }, null, -1),
7971
7971
  o("rect", {
7972
7972
  width: "18",
@@ -7979,7 +7979,7 @@ function J0(e, t) {
7979
7979
  o("path", { d: "M3 15h18" }, null, -1)
7980
7980
  ])]);
7981
7981
  }
7982
- const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-col h-full" }, tm = { class: "flex justify-end mb-3 gap-2" }, nm = /* @__PURE__ */ se({
7982
+ const Qm = /* @__PURE__ */ fe(Gm, [["render", Jm]]), e0 = { class: "flex flex-col h-full" }, t0 = { class: "flex justify-end mb-3 gap-2" }, n0 = /* @__PURE__ */ se({
7983
7983
  __name: "cartocss-css-tab",
7984
7984
  props: {
7985
7985
  modelValue: {}
@@ -7990,8 +7990,8 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
7990
7990
  get: () => n.modelValue,
7991
7991
  set: (s) => l("update:modelValue", s)
7992
7992
  });
7993
- return (s, i) => (d(), x("div", em, [
7994
- o("div", tm, [
7993
+ return (s, i) => (d(), x("div", e0, [
7994
+ o("div", t0, [
7995
7995
  o("button", {
7996
7996
  type: "button",
7997
7997
  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",
@@ -8024,7 +8024,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8024
8024
  }, null, 8, ["modelValue"])
8025
8025
  ]));
8026
8026
  }
8027
- }), om = { class: "flex flex-col flex-1 min-h-0" }, lm = { class: "flex justify-between mb-3 gap-2" }, rm = { class: "text-left" }, sm = { class: "font-medium text-gray-900" }, im = { class: "text-xs text-gray-500" }, am = { class: "flex justify-center gap-2" }, um = ["checked", "onChange"], cm = { class: "text-sm font-medium text-gray-900" }, dm = /* @__PURE__ */ se({
8027
+ }), o0 = { class: "flex flex-col flex-1 min-h-0" }, l0 = { class: "flex justify-between mb-3 gap-2" }, r0 = { class: "text-left" }, s0 = { class: "font-medium text-gray-900" }, i0 = { class: "text-xs text-gray-500" }, a0 = { class: "flex justify-center gap-2" }, u0 = ["checked", "onChange"], c0 = { class: "text-sm font-medium text-gray-900" }, d0 = /* @__PURE__ */ se({
8028
8028
  __name: "cartocss-data-tab",
8029
8029
  props: {
8030
8030
  modelValue: { default: [] },
@@ -8070,8 +8070,8 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8070
8070
  const c = ((b = y == null ? void 0 : y.target) == null ? void 0 : b.checked) ?? !1;
8071
8071
  g.active = c, i.value = Array.isArray(i.value) ? [...i.value] : [];
8072
8072
  }
8073
- return (g, y) => (d(), x("div", om, [
8074
- o("div", lm, [
8073
+ return (g, y) => (d(), x("div", o0, [
8074
+ o("div", l0, [
8075
8075
  o("button", {
8076
8076
  type: "button",
8077
8077
  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",
@@ -8092,23 +8092,23 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8092
8092
  "main-col-width": "260px"
8093
8093
  }, {
8094
8094
  datasetCell: Me(({ row: c }) => [
8095
- o("div", rm, [
8096
- o("div", sm, R(c.table), 1),
8097
- o("div", im, R(c.caption), 1)
8095
+ o("div", r0, [
8096
+ o("div", s0, R(c.table), 1),
8097
+ o("div", i0, R(c.caption), 1)
8098
8098
  ])
8099
8099
  ]),
8100
8100
  activeCell: Me(({ row: c }) => [
8101
- o("label", am, [
8101
+ o("label", a0, [
8102
8102
  o("input", {
8103
8103
  type: "checkbox",
8104
8104
  class: "h-4 w-4 text-sky-500 border-gray-300 rounded focus:ring-sky-300",
8105
8105
  checked: c.active,
8106
8106
  onChange: (b) => v(c, b)
8107
- }, null, 40, um)
8107
+ }, null, 40, u0)
8108
8108
  ])
8109
8109
  ]),
8110
8110
  zoomCell: Me(({ row: c }) => [
8111
- o("div", cm, R(c.zoom), 1)
8111
+ o("div", c0, R(c.zoom), 1)
8112
8112
  ]),
8113
8113
  _: 1
8114
8114
  }, 8, ["modelValue"]),
@@ -8143,10 +8143,10 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8143
8143
  }, 8, ["visible"])
8144
8144
  ]));
8145
8145
  }
8146
- }), fm = { class: "flex h-screen bg-gradient-to-br from-slate-50 to-white" }, pm = { class: "flex-1 relative overflow-hidden" }, vm = { class: "absolute top-0 left-0 w-full z-20" }, mm = { class: "flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4" }, gm = { class: "flex items-center gap-3" }, hm = { class: "font-semibold text-lg text-gray-800 line-clamp-1" }, ym = { class: "text-xs text-gray-500 truncate" }, xm = ["title"], bm = { 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]" }, wm = { class: "relative w-full h-full" }, _m = { class: "absolute top-4 left-4 z-20" }, km = { class: "absolute bottom-4 left-4 z-20" }, $m = { class: "w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg" }, Cm = { class: "flex-1 flex flex-col h-full" }, Am = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, Lm = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, Sm = ["aria-selected", "onClick"], Em = { class: "leading-none" }, Mm = { class: "flex flex-col flex-1 overflow-y-hidden p-4" }, Tm = {
8146
+ }), f0 = { class: "flex h-screen bg-gradient-to-br from-slate-50 to-white" }, p0 = { class: "flex-1 relative overflow-hidden" }, v0 = { class: "absolute top-0 left-0 w-full z-20" }, m0 = { class: "flex items-center justify-between bg-white/80 backdrop-blur border-b border-gray-200 px-6 py-3 shadow-sm gap-4" }, g0 = { class: "flex items-center gap-3" }, h0 = { class: "font-semibold text-lg text-gray-800 line-clamp-1" }, y0 = { class: "text-xs text-gray-500 truncate" }, x0 = ["title"], b0 = { 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]" }, w0 = { class: "relative w-full h-full" }, _0 = { class: "absolute top-4 left-4 z-20" }, k0 = { class: "absolute bottom-4 left-4 z-20" }, $0 = { class: "w-[650px] bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg" }, C0 = { class: "flex-1 flex flex-col h-full" }, A0 = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, L0 = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-2 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, S0 = ["aria-selected", "onClick"], E0 = { class: "leading-none" }, M0 = { class: "flex flex-col flex-1 overflow-y-hidden p-4" }, T0 = {
8147
8147
  key: 0,
8148
8148
  class: "flex-1 flex items-center justify-center text-sm text-gray-500"
8149
- }, Fm = "cartocss-demo-001", gx = /* @__PURE__ */ se({
8149
+ }, F0 = "cartocss-demo-001", gx = /* @__PURE__ */ se({
8150
8150
  __name: "cartocss",
8151
8151
  setup(e) {
8152
8152
  const t = it(), n = st(), l = [
@@ -8155,8 +8155,12 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8155
8155
  { label: "Фон", color: "#0ea5e9" }
8156
8156
  ], r = [
8157
8157
  { key: "css", label: "CSS", icon: Wl },
8158
- { key: "data", label: "Дані", icon: Q0 }
8159
- ], s = r.map((c) => c.key), i = P(s.includes(n.query.tab) ? n.query.tab : "css"), a = D(() => n.params.id || Fm), m = P({
8158
+ { key: "data", label: "Дані", icon: Qm }
8159
+ ], s = r.map((c) => c.key), i = P(
8160
+ s.includes(n.query.tab) ? n.query.tab : "css"
8161
+ ), a = D(
8162
+ () => n.params.id || F0
8163
+ ), m = P({
8160
8164
  id: a.value,
8161
8165
  name: "",
8162
8166
  description: ""
@@ -8167,9 +8171,12 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8167
8171
  c && g(c);
8168
8172
  },
8169
8173
  { immediate: !0 }
8170
- ), X(() => n.query.tab, (c) => {
8171
- c && s.includes(c) && i.value !== c && (i.value = c);
8172
- }), X(i, (c) => {
8174
+ ), X(
8175
+ () => n.query.tab,
8176
+ (c) => {
8177
+ c && s.includes(c) && i.value !== c && (i.value = c);
8178
+ }
8179
+ ), X(i, (c) => {
8173
8180
  n.query.tab !== c && t.replace({ query: { ...n.query, tab: c } });
8174
8181
  });
8175
8182
  function f(c) {
@@ -8216,26 +8223,34 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8216
8223
  try {
8217
8224
  const c = {
8218
8225
  style: h.value || "",
8219
- config: JSON.stringify(w.value)
8226
+ config: w.value
8220
8227
  }, b = await fetch(`/api/cartocss/${a.value}`, {
8221
8228
  method: "POST",
8222
8229
  headers: { "Content-Type": "application/json" },
8223
8230
  body: JSON.stringify(c)
8224
8231
  });
8225
8232
  if (!b.ok) throw new Error(`Failed to save cartocss: ${b.status}`);
8226
- ke({ type: "success", title: "Збережено", message: "CartoCSS оновлено" }), await g(a.value);
8233
+ ke({
8234
+ type: "success",
8235
+ title: "Збережено",
8236
+ message: "CartoCSS оновлено"
8237
+ }), await g(a.value);
8227
8238
  } catch (c) {
8228
- console.error("Failed to save CartoCSS", c), ke({ type: "error", title: "Помилка", message: "Не вдалося зберегти CartoCSS" });
8239
+ console.error("Failed to save CartoCSS", c), ke({
8240
+ type: "error",
8241
+ title: "Помилка",
8242
+ message: "Не вдалося зберегти CartoCSS"
8243
+ });
8229
8244
  } finally {
8230
8245
  p.value = !1;
8231
8246
  }
8232
8247
  }
8233
8248
  }
8234
- return (c, b) => (d(), x("div", fm, [
8235
- o("div", pm, [
8236
- o("div", vm, [
8237
- o("div", mm, [
8238
- o("div", gm, [
8249
+ return (c, b) => (d(), x("div", f0, [
8250
+ o("div", p0, [
8251
+ o("div", v0, [
8252
+ o("div", m0, [
8253
+ o("div", g0, [
8239
8254
  o("button", {
8240
8255
  type: "button",
8241
8256
  onClick: b[0] || (b[0] = (S) => ee(t).back()),
@@ -8258,24 +8273,24 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8258
8273
  he(" Назад ", -1)
8259
8274
  ])]),
8260
8275
  o("div", null, [
8261
- o("div", hm, R(m.value.name), 1),
8262
- o("div", ym, " CartoCSS ID: " + R(m.value.id), 1)
8276
+ o("div", h0, R(m.value.name), 1),
8277
+ o("div", y0, " CartoCSS ID: " + R(m.value.id), 1)
8263
8278
  ])
8264
8279
  ]),
8265
8280
  o("div", {
8266
8281
  class: "max-w-xl text-xs text-gray-600 truncate",
8267
8282
  title: m.value.description
8268
- }, R(m.value.description), 9, xm)
8283
+ }, R(m.value.description), 9, x0)
8269
8284
  ])
8270
8285
  ]),
8271
- o("div", bm, [
8272
- o("div", wm, [
8286
+ o("div", b0, [
8287
+ o("div", w0, [
8273
8288
  Q(xn, null, {
8274
8289
  default: Me(() => [
8275
- o("div", _m, [
8290
+ o("div", _0, [
8276
8291
  Q(en)
8277
8292
  ]),
8278
- o("div", km, [
8293
+ o("div", k0, [
8279
8294
  Q(tn, { items: l })
8280
8295
  ])
8281
8296
  ]),
@@ -8284,32 +8299,35 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8284
8299
  ])
8285
8300
  ])
8286
8301
  ]),
8287
- o("div", $m, [
8288
- o("div", Cm, [
8289
- o("div", Am, [
8290
- o("div", Lm, [
8302
+ o("div", $0, [
8303
+ o("div", C0, [
8304
+ o("div", A0, [
8305
+ o("div", L0, [
8291
8306
  (d(), x(G, null, oe(r, (S) => o("button", {
8292
8307
  key: S.key,
8293
8308
  type: "button",
8294
8309
  role: "tab",
8295
8310
  "aria-selected": i.value === S.key,
8296
- class: ve(["whitespace-nowrap flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group", i.value === S.key ? "bg-white shadow-sm text-gray-700" : ""]),
8311
+ class: ve([
8312
+ "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",
8313
+ i.value === S.key ? "bg-white shadow-sm text-gray-700" : ""
8314
+ ]),
8297
8315
  onClick: (O) => i.value = S.key
8298
8316
  }, [
8299
8317
  (d(), te(Ct(S.icon), { class: "h-3.5 w-3.5 mb-0.5" })),
8300
- o("span", Em, R(S.label), 1)
8301
- ], 10, Sm)), 64))
8318
+ o("span", E0, R(S.label), 1)
8319
+ ], 10, S0)), 64))
8302
8320
  ])
8303
8321
  ]),
8304
- o("div", Mm, [
8305
- u.value ? (d(), x("div", Tm, " Завантаження стилю… ")) : (d(), x(G, { key: 1 }, [
8306
- i.value === "css" ? (d(), te(nm, {
8322
+ o("div", M0, [
8323
+ u.value ? (d(), x("div", T0, " Завантаження стилю… ")) : (d(), x(G, { key: 1 }, [
8324
+ i.value === "css" ? (d(), te(n0, {
8307
8325
  key: 0,
8308
8326
  modelValue: h.value,
8309
8327
  "onUpdate:modelValue": b[1] || (b[1] = (S) => h.value = S),
8310
8328
  class: "flex-1 min-h-0",
8311
8329
  onSave: y
8312
- }, null, 8, ["modelValue"])) : (d(), te(dm, {
8330
+ }, null, 8, ["modelValue"])) : (d(), te(d0, {
8313
8331
  key: 1,
8314
8332
  modelValue: w.value,
8315
8333
  "onUpdate:modelValue": b[2] || (b[2] = (S) => w.value = S),
@@ -8322,7 +8340,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8322
8340
  ])
8323
8341
  ]));
8324
8342
  }
8325
- }), Im = { class: "w-full mb-6" }, jm = { class: "flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md" }, zm = ["onClick"], Nm = /* @__PURE__ */ se({
8343
+ }), I0 = { class: "w-full mb-6" }, j0 = { class: "flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md" }, z0 = ["onClick"], N0 = /* @__PURE__ */ se({
8326
8344
  __name: "MapSettingsTabs",
8327
8345
  props: {
8328
8346
  tabs: {},
@@ -8333,8 +8351,8 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8333
8351
  const n = t, l = (r) => {
8334
8352
  n("update:activeTab", r);
8335
8353
  };
8336
- return (r, s) => (d(), x("div", Im, [
8337
- o("div", jm, [
8354
+ return (r, s) => (d(), x("div", I0, [
8355
+ o("div", j0, [
8338
8356
  (d(!0), x(G, null, oe(e.tabs, (i) => (d(), x("button", {
8339
8357
  key: i.id,
8340
8358
  onClick: (a) => l(i.id),
@@ -8342,11 +8360,11 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8342
8360
  "inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all",
8343
8361
  i.id === e.activeTab ? "bg-blue-50 text-blue-700" : "text-gray-600 hover:bg-gray-50"
8344
8362
  ])
8345
- }, R(i.name), 11, zm))), 128))
8363
+ }, R(i.name), 11, z0))), 128))
8346
8364
  ])
8347
8365
  ]));
8348
8366
  }
8349
- }), Om = { class: "rounded-lg border border-gray-200 bg-gray-50 p-6" }, Pm = /* @__PURE__ */ se({
8367
+ }), O0 = { class: "rounded-lg border border-gray-200 bg-gray-50 p-6" }, P0 = /* @__PURE__ */ se({
8350
8368
  __name: "GeneralSettings",
8351
8369
  props: {
8352
8370
  schema: {},
@@ -8363,7 +8381,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8363
8381
  get: () => l.form,
8364
8382
  set: (a) => r("update:form", a)
8365
8383
  });
8366
- return (a, m) => (d(), x("section", Om, [
8384
+ return (a, m) => (d(), x("section", O0, [
8367
8385
  m[2] || (m[2] = o("h2", { class: "text-lg font-semibold text-gray-800 mb-4" }, " Основна інформація ", -1)),
8368
8386
  e.loading ? Z("", !0) : (d(), te(ee(n), {
8369
8387
  key: 0,
@@ -8375,7 +8393,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8375
8393
  }, null, 8, ["schema", "values", "form"]))
8376
8394
  ]));
8377
8395
  }
8378
- }), Vm = { class: "rounded-lg border border-gray-200 bg-gray-50 p-6" }, Dm = /* @__PURE__ */ se({
8396
+ }), V0 = { class: "rounded-lg border border-gray-200 bg-gray-50 p-6" }, D0 = /* @__PURE__ */ se({
8379
8397
  __name: "LayerSettings",
8380
8398
  props: {
8381
8399
  layerIDs: {},
@@ -8391,7 +8409,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8391
8409
  return D({
8392
8410
  get: () => n.layerNames,
8393
8411
  set: (s) => l("update:layerNames", s)
8394
- }), (s, i) => (d(), x("section", Vm, [
8412
+ }), (s, i) => (d(), x("section", V0, [
8395
8413
  i[1] || (i[1] = o("h2", { class: "text-lg font-semibold text-gray-800 mb-4" }, "Шари", -1)),
8396
8414
  i[2] || (i[2] = o("label", { class: "block text-sm font-medium text-gray-700 mb-2" }, "Доступні шари", -1)),
8397
8415
  Q(ee(_r), {
@@ -8402,7 +8420,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8402
8420
  }, null, 8, ["options", "modelValue"])
8403
8421
  ]));
8404
8422
  }
8405
- }), Rm = { class: "mapLayer-info__inner" }, Bm = { class: "mapLayer-info__item-label" }, Um = /* @__PURE__ */ se({
8423
+ }), R0 = { class: "mapLayer-info__inner" }, B0 = { class: "mapLayer-info__item-label" }, U0 = /* @__PURE__ */ se({
8406
8424
  __name: "MapLayerInfoPopover",
8407
8425
  props: {
8408
8426
  items: {}
@@ -8483,7 +8501,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8483
8501
  href: "#",
8484
8502
  onClick: Oe(m, ["prevent", "stop"])
8485
8503
  }, [...y[1] || (y[1] = [
8486
- Ft('<div class="mapLayer-info__icon" data-v-5688d192><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-5688d192><circle cx="12" cy="12" r="10" data-v-5688d192></circle><line x1="12" y1="16" x2="12" y2="12" data-v-5688d192></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-5688d192></line></svg></div>', 1)
8504
+ Ft('<div class="mapLayer-info__icon" data-v-cc1cc7bf><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-cc1cc7bf><circle cx="12" cy="12" r="10" data-v-cc1cc7bf></circle><line x1="12" y1="16" x2="12" y2="12" data-v-cc1cc7bf></line><line x1="12" y1="8" x2="12.01" y2="8" data-v-cc1cc7bf></line></svg></div>', 1)
8487
8505
  ])]),
8488
8506
  (d(), te(dt, { to: "body" }, [
8489
8507
  l.open ? (d(), x("div", {
@@ -8495,12 +8513,12 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8495
8513
  onClick: y[0] || (y[0] = Oe(() => {
8496
8514
  }, ["stop"]))
8497
8515
  }, [
8498
- o("div", Rm, [
8516
+ o("div", R0, [
8499
8517
  (d(!0), x(G, null, oe(e.items, (c) => (d(), x("div", {
8500
8518
  key: c.label,
8501
8519
  class: "mapLayer-info__item"
8502
8520
  }, [
8503
- o("div", Bm, R(c.label), 1),
8521
+ o("div", B0, R(c.label), 1),
8504
8522
  o("div", {
8505
8523
  class: ve(["mapLayer-info__item-value", { "mapLayer-info__item-value--break-all": c.breakLine }])
8506
8524
  }, R(c.value ?? "—"), 3)
@@ -8510,13 +8528,13 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8510
8528
  ]))
8511
8529
  ], 512));
8512
8530
  }
8513
- }), Qn = /* @__PURE__ */ fe(Um, [["__scopeId", "data-v-5688d192"]]), qm = {
8531
+ }), Qn = /* @__PURE__ */ fe(U0, [["__scopeId", "data-v-cc1cc7bf"]]), q0 = {
8514
8532
  key: 0,
8515
8533
  class: "map-info__title"
8516
- }, Hm = { class: "map-info__actions" }, Wm = {
8534
+ }, H0 = { class: "map-info__actions" }, W0 = {
8517
8535
  key: 0,
8518
8536
  class: "map-info__menu"
8519
- }, Ym = ["onClick"], Zm = ["innerHTML"], Km = /* @__PURE__ */ se({
8537
+ }, Y0 = ["onClick"], Z0 = ["innerHTML"], K0 = /* @__PURE__ */ se({
8520
8538
  __name: "MapInfoWidget",
8521
8539
  props: {
8522
8540
  title: {},
@@ -8585,9 +8603,9 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8585
8603
  class: "map-info__header",
8586
8604
  style: De([e.content ? "" : "padding-bottom: 20px"])
8587
8605
  }, [
8588
- e.title ? (d(), x("h2", qm, R(e.title), 1)) : Z("", !0),
8589
- o("div", Hm, [
8590
- w.value.length ? (d(), x("div", Wm, [
8606
+ e.title ? (d(), x("h2", q0, R(e.title), 1)) : Z("", !0),
8607
+ o("div", H0, [
8608
+ w.value.length ? (d(), x("div", W0, [
8591
8609
  o("button", {
8592
8610
  ref_key: "menuButton",
8593
8611
  ref: r,
@@ -8638,7 +8656,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8638
8656
  type: "button",
8639
8657
  class: "map-info__popover-link",
8640
8658
  onClick: (C) => y(U.slug)
8641
- }, R(U.name), 9, Ym))), 128))
8659
+ }, R(U.name), 9, Y0))), 128))
8642
8660
  ], 4)) : Z("", !0)
8643
8661
  ]))
8644
8662
  ])) : Z("", !0),
@@ -8676,10 +8694,10 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8676
8694
  key: 1,
8677
8695
  class: ve(["map-info__content", { "map-info__content--collapsed": h.value && !m.value }]),
8678
8696
  innerHTML: e.content
8679
- }, null, 10, Zm)) : Z("", !0)
8697
+ }, null, 10, Z0)) : Z("", !0)
8680
8698
  ], 512));
8681
8699
  }
8682
- }), Ro = /* @__PURE__ */ fe(Km, [["__scopeId", "data-v-d8c9a613"]]), Gm = { class: "opacity-popover__content" }, Xm = { class: "opacity-popover__value" }, Jm = /* @__PURE__ */ se({
8700
+ }), Ro = /* @__PURE__ */ fe(K0, [["__scopeId", "data-v-b7a90727"]]), G0 = { class: "opacity-popover__content" }, X0 = { class: "opacity-popover__value" }, J0 = /* @__PURE__ */ se({
8683
8701
  __name: "LayerOpacityPopover",
8684
8702
  props: {
8685
8703
  layerId: {}
@@ -8757,7 +8775,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8757
8775
  class: "opacity-popover",
8758
8776
  style: De({ top: i.top + "px", left: i.left + "px" })
8759
8777
  }, [
8760
- o("div", Gm, [
8778
+ o("div", G0, [
8761
8779
  p[1] || (p[1] = o("label", { class: "opacity-popover__label" }, "Прозорість:", -1)),
8762
8780
  Te(o("input", {
8763
8781
  type: "range",
@@ -8770,13 +8788,13 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8770
8788
  }, null, 544), [
8771
8789
  [bt, l.value]
8772
8790
  ]),
8773
- o("span", Xm, R(l.value) + "%", 1)
8791
+ o("span", X0, R(l.value) + "%", 1)
8774
8792
  ])
8775
8793
  ], 4)) : Z("", !0)
8776
8794
  ]))
8777
8795
  ], 512));
8778
8796
  }
8779
- }), Jl = /* @__PURE__ */ fe(Jm, [["__scopeId", "data-v-0f5e9595"]]), Qm = { class: "layers-panel" }, eg = { class: "layers-panel__header" }, tg = { class: "layers-panel__heading" }, ng = { class: "layers-panel__title" }, og = {
8797
+ }), Jl = /* @__PURE__ */ fe(J0, [["__scopeId", "data-v-b278347a"]]), Q0 = { class: "layers-panel" }, eg = { class: "layers-panel__header" }, tg = { class: "layers-panel__heading" }, ng = { class: "layers-panel__title" }, og = {
8780
8798
  key: 0,
8781
8799
  class: "layers-panel__description"
8782
8800
  }, lg = { class: "layers-panel__header-actions" }, rg = { class: "layers-panel__label" }, sg = { class: "layers-panel__label-row" }, ig = ["checked", "onChange"], ag = { class: "layers-panel__title-block" }, ug = ["aria-label"], cg = { class: "layers-panel__name" }, dg = { class: "layers-panel__meta text-slate-500" }, fg = ["onClick"], pg = { class: "inline-flex items-center justify-center w-[18px] h-[18px] text-slate-500 transition-colors duration-200 hover:text-blue-700" }, vg = {
@@ -8988,7 +9006,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
8988
9006
  }), (V, F) => {
8989
9007
  var T, N;
8990
9008
  const _ = Ko("tooltip");
8991
- return d(), x("div", Qm, [
9009
+ return d(), x("div", Q0, [
8992
9010
  o("div", eg, [
8993
9011
  o("div", tg, [
8994
9012
  o("h2", ng, R(((T = e.config) == null ? void 0 : T.title) || "Шари"), 1),
@@ -9107,7 +9125,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
9107
9125
  ]);
9108
9126
  };
9109
9127
  }
9110
- }), Uo = /* @__PURE__ */ fe(gg, [["__scopeId", "data-v-b69f6110"]]), hg = { class: "catalog-tab__search relative mt-[10px]" }, yg = {
9128
+ }), Uo = /* @__PURE__ */ fe(gg, [["__scopeId", "data-v-2724c3c9"]]), hg = { class: "catalog-tab__search relative mt-[10px]" }, yg = {
9111
9129
  width: "24",
9112
9130
  height: "24",
9113
9131
  viewBox: "0 0 24 24",
@@ -9308,7 +9326,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
9308
9326
  ]))
9309
9327
  ], 512));
9310
9328
  }
9311
- }), Mg = /* @__PURE__ */ fe(Eg, [["__scopeId", "data-v-7d3953c5"]]), Tg = { class: "flex flex-col gap-0" }, Fg = { class: "text-xs text-slate-600 font-semibold" }, Ig = /* @__PURE__ */ se({
9329
+ }), Mg = /* @__PURE__ */ fe(Eg, [["__scopeId", "data-v-f68d8bda"]]), Tg = { class: "flex flex-col gap-0" }, Fg = { class: "text-xs text-slate-600 font-semibold" }, Ig = /* @__PURE__ */ se({
9312
9330
  __name: "MapLayerPopover",
9313
9331
  props: {
9314
9332
  items: {}
@@ -9780,7 +9798,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
9780
9798
  ]))
9781
9799
  ]));
9782
9800
  }
9783
- }), Wg = /* @__PURE__ */ fe(Hg, [["__scopeId", "data-v-e8c4b151"]]), Yg = { class: "filter-tab" }, Zg = {
9801
+ }), Wg = /* @__PURE__ */ fe(Hg, [["__scopeId", "data-v-39b6f281"]]), Yg = { class: "filter-tab" }, Zg = {
9784
9802
  key: 0,
9785
9803
  class: "filter-tab__header"
9786
9804
  }, Kg = { class: "filter-tab__title" }, Gg = {
@@ -9827,7 +9845,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
9827
9845
  ])]))
9828
9846
  ]));
9829
9847
  }
9830
- }), eh = /* @__PURE__ */ fe(Qg, [["__scopeId", "data-v-b9cd2910"]]), th = { class: "flex items-center justify-between mb-4" }, nh = { class: "flex items-center gap-2" }, oh = { class: "text-lg font-semibold text-gray-800" }, lh = { key: 0 }, rh = {
9848
+ }), eh = /* @__PURE__ */ fe(Qg, [["__scopeId", "data-v-c6632fbd"]]), th = { class: "flex items-center justify-between mb-4" }, nh = { class: "flex items-center gap-2" }, oh = { class: "text-lg font-semibold text-gray-800" }, lh = { key: 0 }, rh = {
9831
9849
  key: 1,
9832
9850
  class: "block text-sm font-normal text-gray-500"
9833
9851
  }, sh = { class: "flex items-center gap-2" }, ih = { class: "flex mb-4 border-b border-gray-200" }, ah = { class: "map-catalog-widget__body" }, uh = /* @__PURE__ */ se({
@@ -10020,7 +10038,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10020
10038
  class: "p-1 rounded-full hover:bg-gray-200 transition-colors",
10021
10039
  "aria-label": "Reset layers"
10022
10040
  }, [...T[6] || (T[6] = [
10023
- Ft('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw text-gray-600" data-v-22fbc74e><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-22fbc74e></path><path d="M21 3v5h-5" data-v-22fbc74e></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-22fbc74e></path><path d="M8 16H3v5" data-v-22fbc74e></path></svg>', 1)
10041
+ Ft('<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-6372b747><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-6372b747></path><path d="M21 3v5h-5" data-v-6372b747></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-6372b747></path><path d="M8 16H3v5" data-v-6372b747></path></svg>', 1)
10024
10042
  ])]),
10025
10043
  u.value ? (d(), x("button", {
10026
10044
  key: 0,
@@ -10096,7 +10114,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10096
10114
  ], 2)
10097
10115
  ], 2));
10098
10116
  }
10099
- }), qo = /* @__PURE__ */ fe(uh, [["__scopeId", "data-v-22fbc74e"]]), ch = {
10117
+ }), qo = /* @__PURE__ */ fe(uh, [["__scopeId", "data-v-6372b747"]]), ch = {
10100
10118
  key: 1,
10101
10119
  class: "flex flex-col bg-white border border-stone-200 shadow-2xs rounded-xl z-10 relative widget"
10102
10120
  }, dh = { class: "flex items-start justify-between gap-3 p-5 pb-3" }, fh = { class: "inline-block text-xl font-semibold text-gray-800" }, ph = {
@@ -10385,7 +10403,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10385
10403
  onClick: N[0] || (N[0] = (E) => l.value = !0)
10386
10404
  }, " Набори даних "));
10387
10405
  }
10388
- }), Ho = /* @__PURE__ */ fe(Sh, [["__scopeId", "data-v-437c8d68"]]), Eh = { 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]" }, Mh = ["title"], Th = {
10406
+ }), Ho = /* @__PURE__ */ fe(Sh, [["__scopeId", "data-v-9686ce7b"]]), Eh = { 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]" }, Mh = ["title"], Th = {
10389
10407
  key: 0,
10390
10408
  class: "vs-select__options absolute z-50 mt-1 w-auto min-w-full bg-white border border-gray-300 shadow-lg rounded-lg text-sm text-gray-900"
10391
10409
  }, Fh = ["onClick"], Ih = ["placeholder"], jh = { class: "divide-y divide-gray-100" }, zh = ["onClick"], Nh = 600, Oh = 30, Ph = 8, Vh = "https://data.softpro.ua/api-user/gis-url-proxy", Dh = "https://geo.rv.ua/api-user/dzk.api", Rh = "https://nominatim.openstreetmap.org/search", Bh = /* @__PURE__ */ se({
@@ -10569,7 +10587,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10569
10587
  ke({ type: "warning", title: "Пошук координат", message: "Не знайдено або невірний формат координат" });
10570
10588
  return;
10571
10589
  }
10572
- N({ ...k }), u.value = "";
10590
+ N({ id: "xy", title: "Точка на мапі", ...k }), u.value = "";
10573
10591
  return;
10574
10592
  }
10575
10593
  if (w.value === "address") {
@@ -10720,7 +10738,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10720
10738
  ], 32)
10721
10739
  ]));
10722
10740
  }
10723
- }), Wo = /* @__PURE__ */ fe(Bh, [["__scopeId", "data-v-3403649e"]]), Uh = "https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css", qh = "https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js", Hh = /* @__PURE__ */ se({
10741
+ }), Wo = /* @__PURE__ */ fe(Bh, [["__scopeId", "data-v-6650498a"]]), Uh = "https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.css", qh = "https://watergis.github.io/mapbox-gl-export/mapbox-gl-export.js", Hh = /* @__PURE__ */ se({
10724
10742
  __name: "MapPrintControl",
10725
10743
  setup(e) {
10726
10744
  const { map: t, ready: n, addControl: l, removeControl: r } = Ke(), s = P(null), i = P(null), a = P(null), m = P(null);
@@ -10889,7 +10907,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10889
10907
  class: "map-print-control"
10890
10908
  }, null, 512));
10891
10909
  }
10892
- }), Wh = /* @__PURE__ */ fe(Hh, [["__scopeId", "data-v-d08551cb"]]), Yh = { class: "cursor-coordinates" }, Zh = { class: "cursor-coordinates__text" }, Kh = /* @__PURE__ */ se({
10910
+ }), Wh = /* @__PURE__ */ fe(Hh, [["__scopeId", "data-v-89156246"]]), Yh = { class: "cursor-coordinates" }, Zh = { class: "cursor-coordinates__text" }, Kh = /* @__PURE__ */ se({
10893
10911
  __name: "MapCursorCoordinates",
10894
10912
  props: {
10895
10913
  coordinates: {}
@@ -10899,7 +10917,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
10899
10917
  o("span", Zh, R(e.coordinates), 1)
10900
10918
  ]));
10901
10919
  }
10902
- }), Gh = /* @__PURE__ */ fe(Kh, [["__scopeId", "data-v-d83db59a"]]), Xh = { class: "minimap__wrapper" }, dn = "minimap-viewport", Jh = "minimap-viewport-layer", Qh = /* @__PURE__ */ se({
10920
+ }), Gh = /* @__PURE__ */ fe(Kh, [["__scopeId", "data-v-334315d9"]]), Xh = { class: "minimap__wrapper" }, dn = "minimap-viewport", Jh = "minimap-viewport-layer", Qh = /* @__PURE__ */ se({
10903
10921
  __name: "MapMiniMap",
10904
10922
  props: {
10905
10923
  mapContext: {},
@@ -11133,7 +11151,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
11133
11151
  })
11134
11152
  ], 2));
11135
11153
  }
11136
- }), ey = /* @__PURE__ */ fe(Qh, [["__scopeId", "data-v-ff9c5f7b"]]), ty = {
11154
+ }), ey = /* @__PURE__ */ fe(Qh, [["__scopeId", "data-v-bc754c89"]]), ty = {
11137
11155
  key: 1,
11138
11156
  class: "absolute bottom-4 right-4 z-[80] flex items-end gap-2"
11139
11157
  }, ny = { class: "absolute top-[103px] right-[6.5px] z-[80] flex flex-col items-end gap-1" }, oy = { class: "map-widget__overlay-grid" }, ly = {
@@ -11534,7 +11552,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
11534
11552
  a.value ? (d(), x("div", uy, "Завантаження карти…")) : m.value ? (d(), x("div", cy, R(m.value), 1)) : Z("", !0)
11535
11553
  ], 4));
11536
11554
  }
11537
- }), Ql = /* @__PURE__ */ fe(dy, [["__scopeId", "data-v-b5920949"]]), fy = { class: "rounded-lg border border-gray-200 bg-gray-50 p-6" }, py = { class: "rounded-xl border border-gray-200 overflow-hidden bg-white" }, vy = /* @__PURE__ */ se({
11555
+ }), Ql = /* @__PURE__ */ fe(dy, [["__scopeId", "data-v-73d647f9"]]), fy = { class: "rounded-lg border border-gray-200 bg-gray-50 p-6" }, py = { class: "rounded-xl border border-gray-200 overflow-hidden bg-white" }, vy = /* @__PURE__ */ se({
11538
11556
  __name: "MapPreview",
11539
11557
  props: {
11540
11558
  id: {}
@@ -12056,13 +12074,13 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
12056
12074
  l.value ? (d(), x("div", Ky, [...L[8] || (L[8] = [
12057
12075
  o("p", { class: "text-gray-500" }, "Завантаження...", -1)
12058
12076
  ])])) : (d(), x(G, { key: 1 }, [
12059
- Q(Nm, {
12077
+ Q(N0, {
12060
12078
  tabs: a,
12061
12079
  activeTab: u.value,
12062
12080
  "onUpdate:activeTab": L[1] || (L[1] = (M) => u.value = M)
12063
12081
  }, null, 8, ["activeTab"]),
12064
12082
  Te(o("div", Gy, [
12065
- Q(Pm, {
12083
+ Q(P0, {
12066
12084
  schema: b,
12067
12085
  loading: l.value,
12068
12086
  modelValue: p.value,
@@ -12074,7 +12092,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
12074
12092
  [xt, u.value === "general"]
12075
12093
  ]),
12076
12094
  Te(o("div", Xy, [
12077
- Q(Dm, {
12095
+ Q(D0, {
12078
12096
  options: v.value,
12079
12097
  layerIDs: f.value,
12080
12098
  "onUpdate:layerIDs": L[4] || (L[4] = (M) => f.value = M),
@@ -12104,7 +12122,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
12104
12122
  ])
12105
12123
  ]));
12106
12124
  }
12107
- }), hx = /* @__PURE__ */ fe(Qy, [["__scopeId", "data-v-d824d951"]]), e1 = { class: "flex-1 overflow-y-auto p-0" }, t1 = { class: "pt-0 mt-0" }, n1 = {
12125
+ }), hx = /* @__PURE__ */ fe(Qy, [["__scopeId", "data-v-75f83258"]]), e1 = { class: "flex-1 overflow-y-auto p-0" }, t1 = { class: "pt-0 mt-0" }, n1 = {
12108
12126
  key: 0,
12109
12127
  class: "flex items-center justify-center py-12"
12110
12128
  }, o1 = {
@@ -12287,7 +12305,7 @@ const Q0 = /* @__PURE__ */ fe(G0, [["render", J0]]), em = { class: "flex flex-co
12287
12305
  ])) : Z("", !0)
12288
12306
  ]));
12289
12307
  }
12290
- }), b1 = /* @__PURE__ */ fe(x1, [["__scopeId", "data-v-4e273e41"]]), w1 = { class: "flex flex-col 2xl:flex-row 2xl:items-center 2xl:justify-between" }, _1 = { class: "" }, k1 = { class: "text-2xl font-bold mb-2 flex items-center gap-2" }, $1 = {
12308
+ }), b1 = /* @__PURE__ */ fe(x1, [["__scopeId", "data-v-6f5da01d"]]), w1 = { class: "flex flex-col 2xl:flex-row 2xl:items-center 2xl:justify-between" }, _1 = { class: "" }, k1 = { class: "text-2xl font-bold mb-2 flex items-center gap-2" }, $1 = {
12291
12309
  key: 0,
12292
12310
  class: "text-sm font-normal text-gray-500 mt-2 ml-1"
12293
12311
  }, C1 = { class: "flex flex-col gap-3 mt-4 lg:mt-5 lg:flex-row lg:items-center" }, A1 = { class: "w-full md:w-auto" }, L1 = ["value"], S1 = { class: "relative w-full lg:w-[16rem]" }, E1 = { class: "bg-white focus:bg-white focus:border-blue-500 focus:ring-blue-500 rounded-lg" }, M1 = { class: "absolute bottom-2/4 translate-y-2/4 cursor-pointer left-3" }, T1 = ["value"], F1 = /* @__PURE__ */ se({