@opengis/gis 0.2.146 → 0.2.147

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 (199) hide show
  1. package/README.md +181 -181
  2. package/dist/{CardIcon-BCll_4SB.js → CardIcon-Cde9Jky8.js} +1 -1
  3. package/dist/{EntityCreatePage-Ch8NU_Yw.js → EntityCreatePage-Da8XgBKU.js} +14 -14
  4. package/dist/{EntityEditPage-CRRcW7FL.js → EntityEditPage-QktKEAxz.js} +27 -27
  5. package/dist/{EntityTablePage-DXJPsOx8.js → EntityTablePage-Cac57B6M.js} +26 -26
  6. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BJ-zsrml.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DLjREp_K.js} +1 -1
  7. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-EZGjVDor.js → HeaderActions.vue_vue_type_script_setup_true_lang-CphgPZBk.js} +5 -5
  8. package/dist/{MapSettings-CG7u4F4i.js → MapSettings-nRv1j5Ls.js} +33 -33
  9. package/dist/{RastersTablePage-CN5hfj6F.js → RastersTablePage-B8Rr7jO9.js} +29 -29
  10. package/dist/{cartocss-BNVXz6oJ.js → cartocss-mFm4xHBN.js} +12 -12
  11. package/dist/{import-utils-BwcMU3Gp.js → import-utils-Bt6oFoHB.js} +33 -33
  12. package/dist/{index-8aAArh78.js → index-wy3j6by2.js} +1347 -1343
  13. package/dist/index.css +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.umd.cjs +29 -29
  16. package/dist/{raster-BN1gB-NS.js → raster-BiqVALLd.js} +126 -126
  17. package/dist/{register-DZ24Z6dC.js → register-JkPi7fEL.js} +8 -8
  18. package/dist/{service-DXLa4AiW.js → service-BaJ_3XV-.js} +340 -343
  19. package/dist/{vs-datatable-DVC6-2mA.js → vs-datatable-CwRAYNZZ.js} +28 -28
  20. package/module/cls.json +6 -6
  21. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  22. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  23. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  24. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  25. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  26. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  27. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  28. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  29. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  30. package/module/gis/card/gis.registers.table/index.yml +23 -23
  31. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  32. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  33. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  34. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  35. package/module/gis/card/gis.services.table/index.yml +25 -25
  36. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  37. package/module/gis/card/gis.services.table/source.hbs +25 -25
  38. package/module/gis/cls/bool.yes_no.json +12 -12
  39. package/module/gis/cls/encoding.json +14 -14
  40. package/module/gis/cls/geom_type.json +14 -14
  41. package/module/gis/cls/gis.column_type.json +34 -34
  42. package/module/gis/cls/gis.column_view_type.json +26 -26
  43. package/module/gis/cls/gis.filter_type.json +22 -22
  44. package/module/gis/cls/language.json +10 -10
  45. package/module/gis/cls/meta.service_type.json +42 -42
  46. package/module/gis/cls/ogc.service.json +21 -21
  47. package/module/gis/cls/service_type.json +42 -42
  48. package/module/gis/cls/source_type.json +10 -10
  49. package/module/gis/cls/standarts.json +6 -6
  50. package/module/gis/cls/topic_category.json +106 -106
  51. package/module/gis/cls/update_frequency.json +29 -29
  52. package/module/gis/cls/view.json +21 -21
  53. package/module/gis/form/feedback.answer.form.json +10 -10
  54. package/module/gis/form/gis.cartocss.form.json +64 -64
  55. package/module/gis/form/gis.group_list.form.json +17 -17
  56. package/module/gis/form/gis.maps.form.json +61 -61
  57. package/module/gis/form/gis.metadata.form.json +240 -240
  58. package/module/gis/form/gis.metadata_new.form.json +195 -195
  59. package/module/gis/form/gis.ogc_service.form.json +51 -51
  60. package/module/gis/form/gis.rasters.form.json +76 -76
  61. package/module/gis/form/gis.registers.form.json +124 -124
  62. package/module/gis/form/gis.registers_column.form.json +84 -84
  63. package/module/gis/form/gis.registers_filter.form.json +65 -65
  64. package/module/gis/form/gis.services.form.json +111 -111
  65. package/module/gis/form/gis.services_attributes.form.json +75 -75
  66. package/module/gis/form/gis.services_filter.form.json +65 -65
  67. package/module/gis/menu.json +43 -43
  68. package/module/gis/select/admin.cls.name.sql +9 -9
  69. package/module/gis/select/layer_list.sql +7 -7
  70. package/module/gis/select/layer_list_text.sql +7 -7
  71. package/module/gis/select/pg.column_name.geometry.sql +12 -12
  72. package/module/gis/select/pg.columns.parent.sql +6 -6
  73. package/module/gis/select/pg.table_name.sql +17 -17
  74. package/module/gis/select/service_id.sql +1 -1
  75. package/module/gis/table/gis.cartocss.table.json +74 -74
  76. package/module/gis/table/gis.group_list.table.json +58 -58
  77. package/module/gis/table/gis.maps.table.json +110 -110
  78. package/module/gis/table/gis.metadata.table.json +70 -70
  79. package/module/gis/table/gis.metadata_new.table.json +137 -137
  80. package/module/gis/table/gis.ogc_service.table.json +100 -100
  81. package/module/gis/table/gis.rasters.table.json +101 -101
  82. package/module/gis/table/gis.registers.table.json +143 -143
  83. package/module/gis/table/gis.services.table.json +120 -120
  84. package/module/gis/table/site.gis.registers.table.json +88 -88
  85. package/module/gis/table/site.gis.services.table.json +106 -106
  86. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  87. package/module/gis/tokens.yml +5 -5
  88. package/module/permissions/form/permissions.users.form.json +151 -151
  89. package/module/permissions/table/gis.permissions.table.json +97 -97
  90. package/module/test/cls/bp_build_type.json +37 -37
  91. package/module/test/cls/doc_status.json +31 -31
  92. package/module/test/cls/ts.temp_status.json +18 -18
  93. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  94. package/module/test/cls/ts.temp_type.json +9 -9
  95. package/module/test/layer/bp.json +59 -59
  96. package/module/test/layer/bp1.yml +33 -33
  97. package/module/test/layer/individual.yml +53 -53
  98. package/module/test/layer/ts.linking_passport.yml +55 -55
  99. package/module/test/layer/ts.temp_structure.yml +50 -50
  100. package/module/test/map/addr.yml +21 -21
  101. package/module/test/map/bp_myo.json +43 -43
  102. package/module/test/map/bpf.json +43 -43
  103. package/module/test/map/main.json +37 -37
  104. package/module/test/map/mbd.json +92 -92
  105. package/module/test/map/ts.json +53 -53
  106. package/module/test/select/address_id.json +2 -2
  107. package/module/test/select/address_id.sql +7 -7
  108. package/module/test/select/core.user_uid.sql +1 -1
  109. package/module/test/table/data_address.street.table.json +69 -69
  110. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  111. package/package.json +75 -75
  112. package/plugin.js +55 -55
  113. package/server/migrations/array_intersect.sql +13 -13
  114. package/server/migrations/cartocss.sql +27 -27
  115. package/server/migrations/group_list.sql +74 -74
  116. package/server/migrations/maps.sql +30 -30
  117. package/server/migrations/metadata.sql +415 -415
  118. package/server/migrations/ogc.sql +106 -106
  119. package/server/migrations/rasters.sql +265 -265
  120. package/server/migrations/services.sql +247 -247
  121. package/server/migrations/services_users_rel.sql +22 -22
  122. package/server/migrations/widgets.sql +20 -20
  123. package/server/plugins/crons.js +21 -21
  124. package/server/plugins/mapnik/funcs/checkRasterFile.js +109 -109
  125. package/server/plugins/mapnik/funcs/mapnik.js +151 -151
  126. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  127. package/server/plugins/mapnik/map.proto +230 -230
  128. package/server/plugins/vite.js +74 -74
  129. package/server/routes/gis/cartocss/add.cartocss.js +42 -42
  130. package/server/routes/gis/cartocss/get.cartocss.js +59 -59
  131. package/server/routes/gis/checkXML.js +117 -117
  132. package/server/routes/gis/dashboard.js +29 -29
  133. package/server/routes/gis/index.mjs +87 -87
  134. package/server/routes/gis/metadata/editMetadata.js +34 -34
  135. package/server/routes/gis/metadata/metadataXML.js +13 -13
  136. package/server/routes/gis/ogc/map.info.point.js +124 -124
  137. package/server/routes/gis/registers/add.registry.js +35 -35
  138. package/server/routes/gis/registers/del.registry.js +14 -14
  139. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  140. package/server/routes/gis/registers/funcs/columns.js +3 -3
  141. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  142. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  143. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +146 -146
  144. package/server/routes/gis/registers/gis.export.js +153 -153
  145. package/server/routes/gis/registers/gis.registry.js +64 -64
  146. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  147. package/server/routes/gis/registers/insert.columns.js +107 -107
  148. package/server/routes/gis/registers/insert.filters.js +110 -110
  149. package/server/routes/gis/registers/map.registry.js +79 -79
  150. package/server/routes/gis/services/add.service.js +64 -64
  151. package/server/routes/gis/services/del.service.js +12 -12
  152. package/server/routes/gis/services/get.layer.geom.js +27 -27
  153. package/server/routes/gis/services/get.services.col.js +33 -33
  154. package/server/routes/gis/services/get.services.js +84 -84
  155. package/server/routes/gis/services/legend.auto.js +77 -77
  156. package/server/routes/map/controllers/clearTiles.js +34 -34
  157. package/server/routes/map/controllers/geojson.js +187 -187
  158. package/server/routes/map/controllers/jsonData.js +205 -205
  159. package/server/routes/map/controllers/layerList.js +102 -102
  160. package/server/routes/map/controllers/map.js +123 -123
  161. package/server/routes/map/controllers/mapCatalog.js +72 -72
  162. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  163. package/server/routes/map/controllers/mapFeatures.js +128 -128
  164. package/server/routes/map/controllers/mapFormat.js +234 -234
  165. package/server/routes/map/controllers/mapTiles.js +152 -152
  166. package/server/routes/map/controllers/maps.js +15 -15
  167. package/server/routes/map/controllers/marker_icon.js +43 -43
  168. package/server/routes/map/controllers/vtile.js +172 -172
  169. package/server/routes/map/index.mjs +169 -169
  170. package/server/routes/map/maps/add.map.js +43 -43
  171. package/server/routes/map/maps/del.map.js +18 -18
  172. package/server/routes/map/maps/get.map.js +118 -118
  173. package/server/routes/map/vtile1.js +179 -179
  174. package/server/routes/map/widgets/add.widget.js +38 -38
  175. package/server/routes/map/widgets/del.widget.js +22 -22
  176. package/server/routes/map/widgets/get.widget.js +40 -40
  177. package/server/routes/mapnik/controllers/clearTiles.js +106 -106
  178. package/server/routes/mapnik/controllers/createXml.js +67 -67
  179. package/server/routes/mapnik/controllers/createXmlMulti.js +76 -76
  180. package/server/routes/mapnik/controllers/fileSearch.js +38 -38
  181. package/server/routes/mapnik/controllers/fileStat.js +28 -28
  182. package/server/routes/mapnik/controllers/mapnikLogger.js +29 -29
  183. package/server/routes/mapnik/controllers/mapnikStat.js +19 -19
  184. package/server/routes/mapnik/controllers/pretile.js +144 -144
  185. package/server/routes/mapnik/controllers/rasterInfo.js +57 -57
  186. package/server/routes/mapnik/controllers/readDir.js +22 -22
  187. package/server/routes/mapnik/controllers/rtile.js +150 -150
  188. package/server/routes/mapnik/controllers/uploadRaster.js +157 -157
  189. package/server/routes/mapnik/functions/cartoBounds.js +32 -32
  190. package/server/routes/mapnik/functions/convertBoundToTile.js +27 -27
  191. package/server/routes/mapnik/functions/uploadXML.js +113 -113
  192. package/server/routes/mapnik/index.js +40 -40
  193. package/server/routes/permissions/controllers/catalog.permissions.edit.js +22 -22
  194. package/server/routes/permissions/controllers/catalog.permissions.js +7 -7
  195. package/server/routes/permissions/controllers/gis.catalog.js +80 -80
  196. package/server/routes/permissions/controllers/utils/get.permissions.js +59 -59
  197. package/server/routes/permissions/index.mjs +18 -18
  198. package/server/routes/root.mjs +3 -3
  199. package/utils.js +13 -13
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as te, resolveDirective as We, openBlock as u, createElementBlock as m, createElementVNode as n, Fragment as W, renderList as X, toDisplayString as d, withDirectives as we, createTextVNode as Xe, normalizeClass as ae, ref as $, watch as S, computed as h, vModelText as Ke, onMounted as Ye, onBeforeUnmount as Ze, createCommentVNode as q, createVNode as B, withCtx as He, createBlock as F, resolveDynamicComponent as Je } from "vue";
2
2
  import { useRouter as et, useRoute as tt } from "vue-router";
3
3
  import { TooltipDirective as st, notify as M } from "@opengis/core";
4
- import { _ as nt, u as ot, f as lt, F as rt, M as it, i as at, j as be } from "./index-8aAArh78.js";
5
- import { _ as ut, a as ct, b as dt, c as ft } from "./HeaderActions.vue_vue_type_script_setup_true_lang-EZGjVDor.js";
6
- import { _ as he } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BJ-zsrml.js";
7
- const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-y-3" }, gt = { class: "bg-white p-3 rounded-xl border border-gray-200 shadow-sm" }, vt = { class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2" }, yt = { class: "text-xs text-gray-500 mb-1" }, xt = {
4
+ import { _ as nt, u as lt, f as rt, M as ot, i as it, j as be, F as at } from "./index-wy3j6by2.js";
5
+ import { _ as ut, a as ct, b as dt, c as ft } from "./HeaderActions.vue_vue_type_script_setup_true_lang-CphgPZBk.js";
6
+ import { _ as he } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DLjREp_K.js";
7
+ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-y-3" }, gt = { class: "bg-white p-3 rounded-xl border border-gray-200 shadow-sm" }, yt = { class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2" }, vt = { class: "text-xs text-gray-500 mb-1" }, xt = {
8
8
  key: 0,
9
9
  class: "text-base text-md font-semibold text-gray-900"
10
10
  }, bt = {
@@ -19,42 +19,42 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
19
19
  details: {}
20
20
  },
21
21
  setup(_) {
22
- return (v, y) => {
23
- const r = We("tooltip");
22
+ return (y, v) => {
23
+ const o = We("tooltip");
24
24
  return u(), m("div", mt, [
25
25
  n("div", pt, [
26
26
  n("div", gt, [
27
- y[0] || (y[0] = n("div", { class: "mb-4" }, [
27
+ v[0] || (v[0] = n("div", { class: "mb-4" }, [
28
28
  n("h4", { class: "text-sm font-semibold text-gray-900 uppercase tracking-wide" }, "Основні параметри")
29
29
  ], -1)),
30
- n("div", vt, [
30
+ n("div", yt, [
31
31
  (u(!0), m(W, null, X(_.details.baseParams, (f) => (u(), m("div", {
32
32
  key: f.label,
33
33
  class: "bg-gray-50 p-2 rounded-lg"
34
34
  }, [
35
- n("p", yt, d(f.label), 1),
35
+ n("p", vt, d(f.label), 1),
36
36
  f.tooltip ? we((u(), m("p", xt, [
37
37
  Xe(d(f.value), 1)
38
38
  ])), [
39
- [r, f.tooltip]
39
+ [o, f.tooltip]
40
40
  ]) : (u(), m("p", bt, d(f.value), 1))
41
41
  ]))), 128))
42
42
  ])
43
43
  ]),
44
44
  n("div", ht, [
45
- y[3] || (y[3] = n("div", { class: "mb-2" }, [
45
+ v[3] || (v[3] = n("div", { class: "mb-2" }, [
46
46
  n("h4", { class: "text-sm font-semibold text-gray-900 uppercase tracking-wide" }, "Просторова інформація")
47
47
  ], -1)),
48
48
  n("div", _t, [
49
49
  n("div", null, [
50
- y[1] || (y[1] = n("p", { class: "text-xs text-gray-500 mb-2" }, "Система координат", -1)),
50
+ v[1] || (v[1] = n("p", { class: "text-xs text-gray-500 mb-2" }, "Система координат", -1)),
51
51
  n("div", wt, [
52
52
  n("p", $t, d(_.details.spatial.crs.code), 1),
53
53
  n("p", kt, d(_.details.spatial.crs.description), 1)
54
54
  ])
55
55
  ]),
56
56
  n("div", null, [
57
- y[2] || (y[2] = n("p", { class: "text-xs text-gray-500 mb-2" }, "Межі покриття", -1)),
57
+ v[2] || (v[2] = n("p", { class: "text-xs text-gray-500 mb-2" }, "Межі покриття", -1)),
58
58
  n("div", Ct, [
59
59
  (u(!0), m(W, null, X(_.details.spatial.bounds, (f) => (u(), m("div", {
60
60
  key: f.label,
@@ -87,18 +87,18 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
87
87
  files: {}
88
88
  },
89
89
  setup(_) {
90
- return (v, y) => (u(), m("div", zt, [
91
- (u(!0), m(W, null, X(_.files, (r) => (u(), m("div", {
92
- key: r.name,
90
+ return (y, v) => (u(), m("div", zt, [
91
+ (u(!0), m(W, null, X(_.files, (o) => (u(), m("div", {
92
+ key: o.name,
93
93
  class: "border border-gray-100 rounded-xl p-4 shadow-sm bg-white flex items-start justify-between"
94
94
  }, [
95
95
  n("div", null, [
96
- n("p", Bt, d(r.name), 1),
97
- n("p", Pt, d(r.resolution) + " • " + d(r.size) + "MB", 1)
96
+ n("p", Bt, d(o.name), 1),
97
+ n("p", Pt, d(o.resolution) + " • " + d(o.size) + "MB", 1)
98
98
  ]),
99
99
  n("span", {
100
- class: ae(["text-[11px] font-semibold px-2 py-0.5 rounded-full", r.statusClass])
101
- }, d(r.status), 3)
100
+ class: ae(["text-[11px] font-semibold px-2 py-0.5 rounded-full", o.statusClass])
101
+ }, d(o.status), 3)
102
102
  ]))), 128))
103
103
  ]));
104
104
  }
@@ -113,8 +113,8 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
113
113
  "stroke-linecap": "round",
114
114
  "stroke-linejoin": "round"
115
115
  };
116
- function Tt(_, v) {
117
- return u(), m("svg", Ut, [...v[0] || (v[0] = [
116
+ function Tt(_, y) {
117
+ return u(), m("svg", Ut, [...y[0] || (y[0] = [
118
118
  n("circle", {
119
119
  cx: "12",
120
120
  cy: "12",
@@ -140,23 +140,23 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
140
140
  },
141
141
  emits: ["toggle-extent"],
142
142
  setup(_) {
143
- const v = _, y = v.layerId || "raster-preview-layer", r = `${y}-source`, f = v.extent && v.extent.length === 4 ? [...v.extent] : void 0, P = ot(y, {
144
- sourceId: r,
143
+ const y = _, v = y.layerId || "raster-preview-layer", o = `${v}-source`, f = y.extent && y.extent.length === 4 ? [...y.extent] : void 0, P = lt(v, {
144
+ sourceId: o,
145
145
  source: {
146
146
  type: "raster",
147
- tiles: v.tileUrl ? [v.tileUrl + "?nottl=1"] : [],
147
+ tiles: y.tileUrl ? [y.tileUrl + "?nottl=1"] : [],
148
148
  tileSize: 256,
149
149
  ...f ? { bounds: f } : {}
150
150
  },
151
151
  layer: {
152
- id: `${y}-raster`,
152
+ id: `${v}-raster`,
153
153
  type: "raster",
154
154
  paint: { "raster-opacity": 1 }
155
155
  },
156
- beforeId: v.beforeId ?? null
157
- }), { fitBounds: V } = lt(), N = $(1);
156
+ beforeId: y.beforeId ?? null
157
+ }), { fitBounds: V } = rt(), N = $(1);
158
158
  S(
159
- () => v.tileUrl,
159
+ () => y.tileUrl,
160
160
  (p) => {
161
161
  if (!p) {
162
162
  P.setVisible(!1);
@@ -174,7 +174,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
174
174
  );
175
175
  let x = null, c = !1;
176
176
  S(
177
- () => v.extent,
177
+ () => y.extent,
178
178
  (p) => {
179
179
  if (!p || p.length !== 4) return;
180
180
  const b = p.join(",");
@@ -228,10 +228,10 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
228
228
  ])
229
229
  ]));
230
230
  }
231
- }), Xt = { class: "flex h-full bg-gradient-to-br from-slate-50 to-white" }, Kt = { class: "flex-1 relative overflow-hidden" }, Yt = { class: "absolute top-0 left-0 w-full z-20" }, Zt = { class: "px-4 sm:px-6 py-4 border-b border-gray-200 bg-white shadow-sm" }, Ht = { class: "flex items-start justify-between gap-4" }, Jt = { class: "flex-1 min-w-0" }, es = { class: "flex items-center text-sm text-gray-500 mb-3" }, ts = { class: "text-gray-900 font-medium truncate max-w-xs" }, ss = { class: "flex items-center justify-between gap-4" }, ns = { class: "flex-1 min-w-0" }, os = { class: "flex items-center gap-3 mb-1" }, ls = { class: "text-base font-semibold text-gray-900 truncate" }, rs = ["title"], is = { class: "flex items-center gap-4 min-w-0" }, as = { class: "flex-1 min-w-0" }, us = ["title"], cs = { class: "w-full h-full bg-gradient-to-br from-sky-50 via-white to-blue-50 flex items-center justify-center relative pt-[105px]" }, ds = { class: "relative w-full h-full" }, fs = { class: "absolute top-4 left-4 z-20" }, ms = {
231
+ }), Xt = { class: "flex h-full bg-gradient-to-br from-slate-50 to-white" }, Kt = { class: "flex-1 relative overflow-hidden" }, Yt = { class: "absolute top-0 left-0 w-full z-20" }, Zt = { class: "px-4 sm:px-6 py-4 border-b border-gray-200 bg-white shadow-sm" }, Ht = { class: "flex items-start justify-between gap-4" }, Jt = { class: "flex-1 min-w-0" }, es = { class: "flex items-center text-sm text-gray-500 mb-3" }, ts = { class: "text-gray-900 font-medium truncate max-w-xs" }, ss = { class: "flex items-center justify-between gap-4" }, ns = { class: "flex-1 min-w-0" }, ls = { class: "flex items-center gap-3 mb-1" }, rs = { class: "text-base font-semibold text-gray-900 truncate" }, os = ["title"], is = { class: "flex items-center gap-4 min-w-0" }, as = { class: "flex-1 min-w-0" }, us = ["title"], cs = { class: "w-full h-full bg-gradient-to-br from-sky-50 via-white to-blue-50 flex items-center justify-center relative pt-[105px]" }, ds = { class: "relative w-full h-full" }, fs = { class: "absolute top-4 left-4 z-20" }, ms = {
232
232
  key: 1,
233
233
  class: "absolute bottom-4 left-1/2 z-30 -translate-x-1/2 rounded-2xl border border-sky-200 bg-white/95 px-4 py-2 text-xs font-medium text-slate-700 shadow-lg backdrop-blur"
234
- }, ps = { class: "absolute top-[6.5rem] right-2 space-y-1 z-20" }, gs = { class: "flex-1 flex flex-col h-full" }, vs = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, ys = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-3 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, xs = ["aria-selected", "onClick"], bs = { class: "leading-none" }, hs = { class: "flex flex-col flex-1 overflow-y-hidden p-3" }, _s = {
234
+ }, ps = { class: "absolute top-[6.5rem] right-2 space-y-1 z-20" }, gs = { class: "flex-1 flex flex-col h-full" }, ys = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, vs = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-3 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, xs = ["aria-selected", "onClick"], bs = { class: "leading-none" }, hs = { class: "flex flex-col flex-1 overflow-y-hidden p-3" }, _s = {
235
235
  key: 0,
236
236
  class: "mb-3 text-xs text-slate-500"
237
237
  }, ws = {
@@ -240,26 +240,26 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
240
240
  }, $s = "OpenGIS", _e = 2, ee = 5, ks = 5, js = /* @__PURE__ */ te({
241
241
  __name: "raster",
242
242
  setup(_) {
243
- const v = [
243
+ const y = [
244
244
  { cardClass: "bg-gradient-to-br from-green-50 to-green-100/30 border-green-200", titleClass: "text-green-900" },
245
245
  { cardClass: "bg-gradient-to-br from-blue-50 to-blue-100/30 border-blue-200", titleClass: "text-blue-900" },
246
246
  { cardClass: "bg-gradient-to-br from-purple-50 to-purple-100/30 border-purple-200", titleClass: "text-purple-900" },
247
247
  { cardClass: "bg-gradient-to-br from-gray-50 to-gray-100/30 border-gray-200", titleClass: "text-gray-900" }
248
- ], y = et(), r = tt(), f = $(null), P = h(() => {
248
+ ], v = et(), o = tt(), f = $(null), P = h(() => {
249
249
  var s;
250
- const e = (s = r.matched[r.matched.length - 1]) == null ? void 0 : s.path;
251
- return (typeof e == "string" && e ? e : r.path).replace(/\/:id\??$/, "") || "/";
250
+ const e = (s = o.matched[o.matched.length - 1]) == null ? void 0 : s.path;
251
+ return (typeof e == "string" && e ? e : o.path).replace(/\/:id\??$/, "") || "/";
252
252
  }), V = h(() => {
253
253
  var t;
254
- const e = (t = r.meta) == null ? void 0 : t.title;
254
+ const e = (t = o.meta) == null ? void 0 : t.title;
255
255
  return typeof e == "string" && e.trim() ? e : "Растри";
256
256
  });
257
257
  function N() {
258
- y.push(P.value);
258
+ v.push(P.value);
259
259
  }
260
260
  const x = h(() => {
261
261
  var t;
262
- const e = (t = r.params) == null ? void 0 : t.id;
262
+ const e = (t = o.params) == null ? void 0 : t.id;
263
263
  return typeof e == "string" ? e : void 0;
264
264
  }), c = $(null), A = $(!1), p = $(!1), b = $(null), I = $(!0), C = $(!1), O = $(null);
265
265
  let G = null, D = null;
@@ -274,9 +274,9 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
274
274
  function ne(e, t) {
275
275
  return e.toFixed(t);
276
276
  }
277
- function oe(e, t, s) {
278
- const o = 0.5 * 10 ** -s;
279
- return Math.abs(e - t) > o;
277
+ function le(e, t, s) {
278
+ const l = 0.5 * 10 ** -s;
279
+ return Math.abs(e - t) > l;
280
280
  }
281
281
  function z() {
282
282
  var e;
@@ -286,25 +286,25 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
286
286
  var a, g, R, k;
287
287
  const e = (g = (a = z()) == null ? void 0 : a.map) == null ? void 0 : g.value;
288
288
  if (!e) return;
289
- const t = K(r.query.z), s = K(r.query.x), o = K(r.query.y);
290
- if (t == null || s == null || o == null) return;
291
- const l = (R = e.getCenter) == null ? void 0 : R.call(e), i = (k = e.getZoom) == null ? void 0 : k.call(e);
292
- (!l || oe(l.lng, s, ee) || oe(l.lat, o, ee) || oe(i ?? 0, t, _e)) && (se.value = !0, e.jumpTo({ center: [s, o], zoom: t }), se.value = !1);
289
+ const t = K(o.query.z), s = K(o.query.x), l = K(o.query.y);
290
+ if (t == null || s == null || l == null) return;
291
+ const r = (R = e.getCenter) == null ? void 0 : R.call(e), i = (k = e.getZoom) == null ? void 0 : k.call(e);
292
+ (!r || le(r.lng, s, ee) || le(r.lat, l, ee) || le(i ?? 0, t, _e)) && (se.value = !0, e.jumpTo({ center: [s, l], zoom: t }), se.value = !1);
293
293
  }
294
294
  function $e() {
295
- var l, i, w, a;
295
+ var r, i, w, a;
296
296
  if (se.value) return;
297
- const e = (i = (l = z()) == null ? void 0 : l.map) == null ? void 0 : i.value;
297
+ const e = (i = (r = z()) == null ? void 0 : r.map) == null ? void 0 : i.value;
298
298
  if (!e) return;
299
299
  const t = (w = e.getCenter) == null ? void 0 : w.call(e), s = (a = e.getZoom) == null ? void 0 : a.call(e);
300
300
  if (!t || s == null) return;
301
- const o = {
302
- ...r.query,
301
+ const l = {
302
+ ...o.query,
303
303
  z: ne(s, _e),
304
304
  x: ne(t.lng, ee),
305
305
  y: ne(t.lat, ee)
306
306
  };
307
- r.query.z === o.z && r.query.x === o.x && r.query.y === o.y || y.replace({ query: o });
307
+ o.query.z === l.z && o.query.x === l.x && o.query.y === l.y || v.replace({ query: l });
308
308
  }
309
309
  function ke() {
310
310
  var t;
@@ -316,41 +316,41 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
316
316
  return Number(e.toFixed(ks));
317
317
  }
318
318
  function ce(e, t) {
319
- const [s, o] = e, [l, i] = t;
319
+ const [s, l] = e, [r, i] = t;
320
320
  return [
321
- Y(Math.min(s, l)),
322
- Y(Math.min(o, i)),
323
- Y(Math.max(s, l)),
324
- Y(Math.max(o, i))
321
+ Y(Math.min(s, r)),
322
+ Y(Math.min(l, i)),
323
+ Y(Math.max(s, r)),
324
+ Y(Math.max(l, i))
325
325
  ];
326
326
  }
327
327
  function Ce(e) {
328
- const [t, s, o, l] = e;
328
+ const [t, s, l, r] = e;
329
329
  return {
330
330
  type: "Polygon",
331
331
  coordinates: [[
332
332
  [t, s],
333
- [o, s],
334
- [o, l],
335
- [t, l],
333
+ [l, s],
334
+ [l, r],
335
+ [t, r],
336
336
  [t, s]
337
337
  ]]
338
338
  };
339
339
  }
340
- function le(e) {
341
- var o, l, i;
342
- const t = (l = (o = z()) == null ? void 0 : o.map) == null ? void 0 : l.value, s = (i = t == null ? void 0 : t.getCanvas) == null ? void 0 : i.call(t);
340
+ function re(e) {
341
+ var l, r, i;
342
+ const t = (r = (l = z()) == null ? void 0 : l.map) == null ? void 0 : r.value, s = (i = t == null ? void 0 : t.getCanvas) == null ? void 0 : i.call(t);
343
343
  s != null && s.style && (s.style.cursor = e);
344
344
  }
345
345
  async function Ee(e, t) {
346
346
  if (!(!x.value || !c.value))
347
347
  try {
348
- const s = Ce(e), o = await fetch(`/api/gis-metadata/raster/${encodeURIComponent(x.value)}`, {
348
+ const s = Ce(e), l = await fetch(`/api/gis-metadata/raster/${encodeURIComponent(x.value)}`, {
349
349
  method: "POST",
350
350
  headers: { "Content-Type": "application/json" },
351
351
  body: JSON.stringify({ geom: s })
352
352
  });
353
- if (!o.ok) throw new Error(`Failed to save raster metadata geom: ${o.status}`);
353
+ if (!l.ok) throw new Error(`Failed to save raster metadata geom: ${l.status}`);
354
354
  M({
355
355
  type: "success",
356
356
  title: "Extent збережено",
@@ -368,18 +368,18 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
368
368
  }
369
369
  }
370
370
  function de(e) {
371
- var s, o, l;
372
- const t = (o = (s = z()) == null ? void 0 : s.map) == null ? void 0 : o.value;
373
- if ((l = t == null ? void 0 : t.dragPan) != null && l.enable && t.dragPan.enable(), (e == null ? void 0 : e.length) === 4 && c.value) {
371
+ var s, l, r;
372
+ const t = (l = (s = z()) == null ? void 0 : s.map) == null ? void 0 : l.value;
373
+ if ((r = t == null ? void 0 : t.dragPan) != null && r.enable && t.dragPan.enable(), (e == null ? void 0 : e.length) === 4 && c.value) {
374
374
  const i = Array.isArray(c.value.extent) ? [...c.value.extent] : null;
375
375
  c.value = {
376
376
  ...c.value,
377
377
  extent: [...e]
378
378
  }, Ee(e, i);
379
379
  }
380
- j = null, Q = !1, O.value = null, C.value = !1, le("");
380
+ j = null, Q = !1, O.value = null, C.value = !1, re("");
381
381
  }
382
- function re() {
382
+ function oe() {
383
383
  de(null);
384
384
  }
385
385
  function Le() {
@@ -395,11 +395,11 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
395
395
  if (!C.value || !Q || !j) return;
396
396
  const g = a == null ? void 0 : a.lngLat;
397
397
  g && (O.value = ce(j, [g.lng, g.lat]));
398
- }, o = (a) => {
398
+ }, l = (a) => {
399
399
  if (!C.value || !Q || !j) return;
400
400
  const g = a == null ? void 0 : a.lngLat;
401
401
  if (!g) {
402
- re();
402
+ oe();
403
403
  return;
404
404
  }
405
405
  const R = ce(j, [g.lng, g.lat]), [k, J, Ge, Qe] = R;
@@ -408,22 +408,22 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
408
408
  type: "warning",
409
409
  title: "Bounds не змінено",
410
410
  message: "Потрібно протягнути прямокутник з ненульовою площею."
411
- }), re();
411
+ }), oe();
412
412
  return;
413
413
  }
414
414
  de(R);
415
- }, l = (a) => {
416
- C.value && a.key === "Escape" && (a.preventDefault(), re());
415
+ }, r = (a) => {
416
+ C.value && a.key === "Escape" && (a.preventDefault(), oe());
417
417
  };
418
- e.on("mousedown", t), e.on("mousemove", s), e.on("mouseup", o), window.addEventListener("keydown", l), D = () => {
419
- e.off("mousedown", t), e.off("mousemove", s), e.off("mouseup", o), window.removeEventListener("keydown", l);
418
+ e.on("mousedown", t), e.on("mousemove", s), e.on("mouseup", l), window.addEventListener("keydown", r), D = () => {
419
+ e.off("mousedown", t), e.off("mousemove", s), e.off("mouseup", l), window.removeEventListener("keydown", r);
420
420
  };
421
421
  }
422
422
  async function Re() {
423
423
  var s;
424
424
  if (C.value) return;
425
425
  const e = z();
426
- !(e != null && e.ready) || (await e.ready(), !((s = e.map) == null ? void 0 : s.value)) || (D || Le(), C.value = !0, Q = !1, j = null, O.value = null, le("crosshair"), M({
426
+ !(e != null && e.ready) || (await e.ready(), !((s = e.map) == null ? void 0 : s.value)) || (D || Le(), C.value = !0, Q = !1, j = null, O.value = null, re("crosshair"), M({
427
427
  type: "info",
428
428
  title: "Редагування Bounds",
429
429
  message: "Протягніть прямокутник на карті, щоб задати нові межі."
@@ -442,20 +442,20 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
442
442
  }), je = h(() => !!fe.value), pe = h(() => {
443
443
  const e = U.value;
444
444
  if (!e || e.length !== 4) return null;
445
- const [t, s, o, l] = e;
446
- return [t, s, o, l].some(
445
+ const [t, s, l, r] = e;
446
+ return [t, s, l, r].some(
447
447
  (i) => typeof i != "number" || Number.isNaN(i)
448
- ) ? null : [(t + o) / 2, (s + l) / 2];
448
+ ) ? null : [(t + l) / 2, (s + r) / 2];
449
449
  }), T = h(() => {
450
450
  var i, w;
451
- const e = c.value, t = e == null ? void 0 : e.extent, o = x.value ?? "—", l = [
451
+ const e = c.value, t = e == null ? void 0 : e.extent, l = x.value ?? "—", r = [
452
452
  e != null && e.extension ? `Формат ${String(e.extension).toUpperCase()}` : null,
453
453
  (e == null ? void 0 : e.resolution) || null
454
454
  ].filter(Boolean).join(", ");
455
455
  return {
456
- id: o,
456
+ id: l,
457
457
  name: (e == null ? void 0 : e.name) || ((w = (i = e == null ? void 0 : e.files) == null ? void 0 : i[0]) == null ? void 0 : w.name),
458
- description: (e == null ? void 0 : e.description) || l || "Попередній перегляд растрового шару.",
458
+ description: (e == null ? void 0 : e.description) || r || "Попередній перегляд растрового шару.",
459
459
  coverage: t && t.length === 4 ? `${L(t[0])}, ${L(t[1])} → ${L(t[2])}, ${L(t[3])}` : "Покриття уточнюється",
460
460
  crs: e != null && e.srid ? `EPSG:${e.srid}` : "EPSG:4326",
461
461
  source: e != null && e.proj4 ? e.proj4 : "Джерело: Mapnik",
@@ -472,15 +472,15 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
472
472
  ].filter((t) => t).join(", ") : "";
473
473
  }), ge = [
474
474
  { key: "info", label: "Інформація", icon: qt },
475
- { key: "files", label: "Файли", icon: rt },
476
- { key: "metadata", label: "Метадані", icon: ut }
477
- ], ve = ge.map((e) => e.key), E = $(ve.includes(r.query.tab) ? r.query.tab : "info"), Z = $(!0);
478
- S(() => r.query.tab, (e) => {
479
- e && ve.includes(e) && E.value !== e && (E.value = e);
475
+ { key: "files", label: "Файли", icon: at },
476
+ { key: "metadata", label: "Метадані", icon: ft }
477
+ ], ye = ge.map((e) => e.key), E = $(ye.includes(o.query.tab) ? o.query.tab : "info"), Z = $(!0);
478
+ S(() => o.query.tab, (e) => {
479
+ e && ye.includes(e) && E.value !== e && (E.value = e);
480
480
  }), S(E, (e) => {
481
- r.query.tab !== e && y.replace({ query: { ...r.query, tab: e } });
481
+ o.query.tab !== e && v.replace({ query: { ...o.query, tab: e } });
482
482
  });
483
- const ze = h(() => Ne(c.value)), ye = h(() => Ue(c.value));
483
+ const ze = h(() => Ne(c.value)), ve = h(() => Ue(c.value));
484
484
  S(
485
485
  () => c.value,
486
486
  () => {
@@ -489,11 +489,11 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
489
489
  { immediate: !0 }
490
490
  );
491
491
  async function Be() {
492
- var o;
492
+ var l;
493
493
  const e = z();
494
494
  if (!(e != null && e.ready)) return;
495
495
  await e.ready(), ue();
496
- const t = (o = e.map) == null ? void 0 : o.value;
496
+ const t = (l = e.map) == null ? void 0 : l.value;
497
497
  if (!t) return;
498
498
  const s = () => $e();
499
499
  t.on("moveend", s), t.on("zoomend", s), G = () => {
@@ -501,14 +501,14 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
501
501
  };
502
502
  }
503
503
  S(
504
- () => [r.query.z, r.query.x, r.query.y],
504
+ () => [o.query.z, o.query.x, o.query.y],
505
505
  () => {
506
506
  ue();
507
507
  }
508
508
  ), Ye(() => {
509
509
  Be();
510
510
  }), Ze(() => {
511
- G == null || G(), G = null, D == null || D(), D = null, le("");
511
+ G == null || G(), G = null, D == null || D(), D = null, re("");
512
512
  }), S(x, () => {
513
513
  H();
514
514
  }, { immediate: !0 });
@@ -537,13 +537,13 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
537
537
  }
538
538
  function xe(e) {
539
539
  return new Promise((t, s) => {
540
- const o = new EventSource(e), l = [];
541
- o.onmessage = (i) => {
542
- l.push(i.data), console.log("Received:", i.data);
543
- }, o.addEventListener("end", () => {
544
- o.close(), t(l);
545
- }), o.onerror = (i) => {
546
- o.close(), t(i);
540
+ const l = new EventSource(e), r = [];
541
+ l.onmessage = (i) => {
542
+ r.push(i.data), console.log("Received:", i.data);
543
+ }, l.addEventListener("end", () => {
544
+ l.close(), t(r);
545
+ }), l.onerror = (i) => {
546
+ l.close(), t(i);
547
547
  };
548
548
  });
549
549
  }
@@ -578,15 +578,15 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
578
578
  }
579
579
  function Te(e) {
580
580
  return e != null && e.length ? e.map((s) => {
581
- var l;
581
+ var r;
582
582
  if (!s) return "";
583
- const o = s.trim().split(/\s+/)[0];
584
- return ((l = o == null ? void 0 : o[0]) == null ? void 0 : l.toUpperCase()) || "";
583
+ const l = s.trim().split(/\s+/)[0];
584
+ return ((r = l == null ? void 0 : l[0]) == null ? void 0 : r.toUpperCase()) || "";
585
585
  }).filter(Boolean).join("") : "";
586
586
  }
587
587
  function qe(e) {
588
588
  var i, w;
589
- const t = e.bands_count ?? ((i = e.bands) == null ? void 0 : i.length) ?? "—", s = Te(e.bands), o = (e.bands ?? []).map((a) => a.trim()).filter((a) => a.length > 0), l = o.length ? o.join(", ") : void 0;
589
+ const t = e.bands_count ?? ((i = e.bands) == null ? void 0 : i.length) ?? "—", s = Te(e.bands), l = (e.bands ?? []).map((a) => a.trim()).filter((a) => a.length > 0), r = l.length ? l.join(", ") : void 0;
590
590
  return [
591
591
  {
592
592
  label: "Розмір растру, px",
@@ -597,7 +597,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
597
597
  {
598
598
  label: "Кількість каналів",
599
599
  value: typeof t == "number" ? `${t}${s ? ` (${s})` : ""}` : `${t}${s ? ` (${s})` : ""}`,
600
- tooltip: l
600
+ tooltip: r
601
601
  },
602
602
  { label: "Глибина кольору", value: e.color_depth ? `${e.color_depth} біт/канал` : "—" },
603
603
  { label: "Стиснення", value: e.compression || "—" }
@@ -619,14 +619,14 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
619
619
  }
620
620
  function Ae(e) {
621
621
  var t;
622
- return (t = e.bands) != null && t.length ? e.bands.map((s, o) => {
623
- const l = v[o % v.length];
622
+ return (t = e.bands) != null && t.length ? e.bands.map((s, l) => {
623
+ const r = y[l % y.length];
624
624
  return {
625
- label: `Канал ${o + 1}${s ? ` (${s})` : ""}`,
626
- cardClass: l.cardClass,
627
- titleClass: l.titleClass,
625
+ label: `Канал ${l + 1}${s ? ` (${s})` : ""}`,
626
+ cardClass: r.cardClass,
627
+ titleClass: r.titleClass,
628
628
  metrics: [
629
- { label: "Назва", value: s || `Канал ${o + 1}` },
629
+ { label: "Назва", value: s || `Канал ${l + 1}` },
630
630
  { label: "Глибина", value: e.color_depth ? `${e.color_depth} біт` : "—" },
631
631
  { label: "Статус", value: e.cache ? "Кешовано" : "Готово" }
632
632
  ]
@@ -679,14 +679,14 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
679
679
  ]),
680
680
  n("div", ss, [
681
681
  n("div", ns, [
682
- n("div", os, [
683
- n("h1", ls, d(T.value.name || "Растер"), 1)
682
+ n("div", ls, [
683
+ n("h1", rs, d(T.value.name || "Растер"), 1)
684
684
  ]),
685
685
  ie.value ? (u(), m("p", {
686
686
  key: 0,
687
687
  class: "text-xs text-gray-500 truncate",
688
688
  title: ie.value
689
- }, d(ie.value), 9, rs)) : q("", !0)
689
+ }, d(ie.value), 9, os)) : q("", !0)
690
690
  ])
691
691
  ])
692
692
  ]),
@@ -697,7 +697,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
697
697
  title: T.value.description
698
698
  }, d(T.value.description), 9, us)
699
699
  ]),
700
- B(ct, {
700
+ B(ut, {
701
701
  "entity-id": x.value || "",
702
702
  "entity-info": { name: T.value.name },
703
703
  table: "gis.rasters.table",
@@ -712,7 +712,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
712
712
  ]),
713
713
  n("div", cs, [
714
714
  n("div", ds, [
715
- B(it, {
715
+ B(ot, {
716
716
  ref_key: "mapViewRef",
717
717
  ref: f
718
718
  }, {
@@ -736,7 +736,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
736
736
  "line-width": 3
737
737
  }, null, 8, ["extent", "layer-id"]),
738
738
  n("div", fs, [
739
- B(at)
739
+ B(it)
740
740
  ]),
741
741
  C.value ? (u(), m("div", ms, " Потягніть на карті, щоб намалювати нові Bounds. Esc скасовує редагування. ")) : q("", !0),
742
742
  n("div", ps, [
@@ -753,7 +753,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
753
753
  }, 512)
754
754
  ])
755
755
  ]),
756
- B(dt, {
756
+ B(ct, {
757
757
  open: Z.value,
758
758
  onToggle: t[1] || (t[1] = (s) => Z.value = !Z.value)
759
759
  }, null, 8, ["open"])
@@ -762,15 +762,15 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
762
762
  class: ae(["bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg flex-shrink-0 transition-[width] duration-100 ease-in-out", Z.value ? "w-[650px]" : "w-0"])
763
763
  }, [
764
764
  n("div", gs, [
765
- n("div", vs, [
766
- n("div", ys, [
765
+ n("div", ys, [
766
+ n("div", vs, [
767
767
  (u(), m(W, null, X(ge, (s) => n("button", {
768
768
  key: s.key,
769
769
  type: "button",
770
770
  role: "tab",
771
771
  "aria-selected": E.value === s.key,
772
772
  class: ae(["whitespace-nowrap flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group", E.value === s.key ? "bg-white shadow-sm text-gray-700" : ""]),
773
- onClick: (o) => E.value = s.key
773
+ onClick: (l) => E.value = s.key
774
774
  }, [
775
775
  (u(), F(Je(s.icon), { class: "h-3.5 w-3.5 mb-0.5" })),
776
776
  n("span", bs, d(s.label), 1)
@@ -782,16 +782,16 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
782
782
  E.value === "files" ? (u(), F(Nt, {
783
783
  key: 2,
784
784
  files: ze.value
785
- }, null, 8, ["files"])) : E.value === "metadata" ? (u(), F(ft, {
785
+ }, null, 8, ["files"])) : E.value === "metadata" ? (u(), F(dt, {
786
786
  key: 3,
787
787
  data: c.value,
788
788
  "entity-id": x.value,
789
789
  "entity-type": "raster",
790
790
  onSaved: H,
791
791
  onEditCssBounds: Re
792
- }, null, 8, ["data", "entity-id"])) : ye.value ? (u(), F(jt, {
792
+ }, null, 8, ["data", "entity-id"])) : ve.value ? (u(), F(jt, {
793
793
  key: 4,
794
- details: ye.value
794
+ details: ve.value
795
795
  }, null, 8, ["details"])) : q("", !0)
796
796
  ])
797
797
  ])
@@ -1,10 +1,10 @@
1
- import { defineComponent as B, useModel as S, computed as h, defineAsyncComponent as O, ref as $, watch as D, onBeforeUnmount as K, openBlock as k, createElementBlock as C, createElementVNode as l, createBlock as T, unref as U, createTextVNode as q, createVNode as V, mergeModels as j, toDisplayString as M, resolveDynamicComponent as J, onMounted as G, resolveComponent as W, withCtx as I, Fragment as X, createCommentVNode as Y } from "vue";
1
+ import { defineComponent as B, mergeModels as j, useModel as S, computed as h, defineAsyncComponent as O, ref as $, watch as D, onBeforeUnmount as K, openBlock as k, createElementBlock as C, createElementVNode as l, createBlock as T, unref as U, createTextVNode as q, createVNode as V, toDisplayString as M, resolveDynamicComponent as J, onMounted as G, resolveComponent as W, withCtx as I, Fragment as X, createCommentVNode as Y } from "vue";
2
2
  import { useRoute as Z, useRouter as ee } from "vue-router";
3
3
  import { notify as F } from "@opengis/core";
4
4
  import { _ as te } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
5
- import { V as N } from "./vs-datatable-DVC6-2mA.js";
6
- import { _ as z, n as R, m as E, r as H } from "./import-utils-BwcMU3Gp.js";
7
- import { a as ae, b as le, c as se, d as oe, e as ie } from "./index-8aAArh78.js";
5
+ import { V as N } from "./vs-datatable-CwRAYNZZ.js";
6
+ import { _ as z, n as R, m as E, r as H } from "./import-utils-Bt6oFoHB.js";
7
+ import { a as ae, b as le, c as se, d as oe, e as ie } from "./index-wy3j6by2.js";
8
8
  import { LucideChevronRight as re } from "lucide-vue-next";
9
9
  import { _ as ne } from "./MapSettingsTabs.vue_vue_type_script_setup_true_lang-CKCK3NqY.js";
10
10
  const ue = { class: "vs-form" }, de = { class: "vs-form__body auto-rows-max container" }, ce = { class: "flex flex-wrap" }, me = { class: "h-fit w-full mb-6 bg-white border border-gray-200 rounded-lg p-6" }, ve = { class: "h-fit w-full flex flex-wrap" }, pe = { class: "w-full" }, fe = /* @__PURE__ */ B({
@@ -521,11 +521,11 @@ const ue = { class: "vs-form" }, de = { class: "vs-form__body auto-rows-max cont
521
521
  ]));
522
522
  }
523
523
  }), P = {
524
- template1: ie,
525
- template2: oe,
524
+ template1: ae,
525
+ template2: le,
526
526
  template3: se,
527
- template4: le,
528
- template5: ae
527
+ template4: oe,
528
+ template5: ie
529
529
  }, De = { class: "space-y-4" }, Se = { class: "flex items-center gap-4 bg-white border border-gray-200 rounded-lg px-6 py-4" }, qe = { class: "text-lg font-semibold mb-4" }, Be = { class: "bg-white" }, Ie = {
530
530
  key: 1,
531
531
  class: "text-gray-400 text-center py-12"