@opengis/gis 0.2.131 → 0.2.132

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.
@@ -1,5 +1,5 @@
1
1
  import { openBlock as t, createElementBlock as n, createElementVNode as l } from "vue";
2
- import { _ as o } from "./index-DtOSF_ba.js";
2
+ import { _ as o } from "./index-fOtblnh3.js";
3
3
  const s = {}, a = {
4
4
  xmlns: "http://www.w3.org/2000/svg",
5
5
  width: "24",
@@ -3,7 +3,7 @@ import { RefreshCw as ie, Plus as ue } from "lucide-vue-next";
3
3
  import { useRoute as ce, useRouter as de } from "vue-router";
4
4
  import { VsPagination as fe, notify as Q } from "@opengis/core";
5
5
  import { FilterField as me, Filter as he } from "@opengis/filter";
6
- import { F as ge, _ as ve } from "./index-DtOSF_ba.js";
6
+ import { F as ge, _ as ve } from "./index-fOtblnh3.js";
7
7
  import { _ as pe } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
8
8
  const xe = { class: "flex-1 flex flex-col bg-gray-50 h-screen overflow-hidden p-0 m-0" }, be = {
9
9
  key: 0,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as y, computed as f, watch as d, createCommentVNode as x } from "vue";
2
- import { f as C, u as b } from "./index-DtOSF_ba.js";
2
+ import { f as C, u as b } from "./index-fOtblnh3.js";
3
3
  const h = /* @__PURE__ */ y({
4
4
  __name: "ExtentOutlineLayer",
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  import { openBlock as c, createElementBlock as v, createElementVNode as n, defineComponent as ee, normalizeClass as oe, createVNode as U, createBlock as re, unref as M, defineAsyncComponent as K, ref as y, watch as de, computed as b, createTextVNode as pe, Fragment as se, renderList as be, toDisplayString as V, createCommentVNode as q, withCtx as Z, nextTick as ke, onMounted as Ve, onUnmounted as ze, withModifiers as Ce, Teleport as Ee, normalizeStyle as Me } from "vue";
2
- import { _ as Le } from "./index-DtOSF_ba.js";
2
+ import { _ as Le } from "./index-fOtblnh3.js";
3
3
  import { Settings as Se, BrushCleaning as ye, SquareCode as fe, Pencil as Te } from "lucide-vue-next";
4
4
  import { notify as H } from "@opengis/core";
5
5
  const $e = {}, Ie = {
@@ -5,7 +5,7 @@ import { confirm as H, notify as F } from "@opengis/core";
5
5
  import { _ as de } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
6
6
  import { _ as ue } from "./MapSettingsTabs.vue_vue_type_script_setup_true_lang-CKCK3NqY.js";
7
7
  import { VsInputArraySelect as ce } from "@opengis/form";
8
- import { r as me, _ as pe } from "./index-DtOSF_ba.js";
8
+ import { r as me, _ as pe } from "./index-fOtblnh3.js";
9
9
  import { _ as ye } from "./MonacoEditor.vue_vue_type_script_setup_true_lang-D3ZPeXMw.js";
10
10
  const fe = { class: "rounded-lg border border-gray-200 bg-[rgba(252,252,252,0.8)] p-6" }, ge = /* @__PURE__ */ I({
11
11
  __name: "GeneralSettings",
@@ -3,7 +3,7 @@ import { useRoute as ne, useRouter as oe } from "vue-router";
3
3
  import { VsPagination as le, notify as B } from "@opengis/core";
4
4
  import { FilterField as re, Filter as ie } from "@opengis/filter";
5
5
  import { RefreshCw as ue, Plus as ce } from "lucide-vue-next";
6
- import { F as de, _ as ve } from "./index-DtOSF_ba.js";
6
+ import { F as de, _ as ve } from "./index-fOtblnh3.js";
7
7
  import { _ as fe } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
8
8
  const ge = { class: "flex-1 flex flex-col bg-gray-50 h-screen overflow-hidden p-0 m-0" }, me = {
9
9
  href: "/api/gis-create-xml",
@@ -1,12 +1,12 @@
1
1
  import { openBlock as w, createElementBlock as z, createElementVNode as o, defineComponent as W, computed as M, createTextVNode as Le, createVNode as E, mergeModels as Ye, defineAsyncComponent as me, useModel as Ge, ref as b, withCtx as G, toDisplayString as U, unref as le, watch as T, onUnmounted as We, createCommentVNode as B, onBeforeUnmount as Me, onMounted as Xe, withDirectives as Ze, vModelText as Ke, createBlock as P, normalizeClass as ke, normalizeStyle as et, Fragment as Ce, renderList as tt, resolveDynamicComponent as at } from "vue";
2
2
  import { useRouter as ot, useRoute as nt } from "vue-router";
3
3
  import { notify as D } from "@opengis/core";
4
- import { _ as st, f as ze, o as lt, p as rt, q as ut, M as it, i as ct, j as Se, m as dt } from "./index-DtOSF_ba.js";
5
- import { S as ft, C as mt } from "./CardIcon-Bty3pjDA.js";
6
- import { _ as pt, a as yt, b as vt, c as gt } from "./HeaderActions.vue_vue_type_script_setup_true_lang-CpDC-v8-.js";
4
+ import { _ as st, f as ze, o as lt, p as rt, q as ut, M as it, i as ct, j as Se, m as dt } from "./index-fOtblnh3.js";
5
+ import { S as ft, C as mt } from "./CardIcon-C667-A5B.js";
6
+ import { _ as pt, a as yt, b as vt, c as gt } from "./HeaderActions.vue_vue_type_script_setup_true_lang-NUsY1m0k.js";
7
7
  import { _ as Ee } from "./MonacoEditor.vue_vue_type_script_setup_true_lang-D3ZPeXMw.js";
8
- import { V as ht } from "./vs-datatable-D-FY2azp.js";
9
- import { _ as $e } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DRnlsqEC.js";
8
+ import { V as ht } from "./vs-datatable-Dcf9SLpH.js";
9
+ import { _ as $e } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DkW7sPK-.js";
10
10
  const bt = {}, xt = {
11
11
  xmlns: "http://www.w3.org/2000/svg",
12
12
  width: "24",
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as V, mergeModels as S, useModel as w, defineAsyncComponent as $, computed as h, openBlock as p, createBlock as A, unref as C, withCtx as T, createElementVNode as r, toDisplayString as y, createElementBlock as b, Fragment as D, renderList as E, normalizeClass as L, resolveDynamicComponent as N, createCommentVNode as f } from "vue";
2
- import { i as P, g as j } from "./vs-datatable-D-FY2azp.js";
2
+ import { i as P, g as j } from "./vs-datatable-Dcf9SLpH.js";
3
3
  const R = { class: "p-4 text-[13px]" }, U = { class: "grid grid-cols-2 gap-x-6 gap-y-2" }, q = ["id", "checked", "onChange"], G = { class: "ml-2 flex-1 min-w-0 flex items-center gap-2" }, H = { class: "font-medium text-gray-900 truncate" }, J = { class: "text-xs text-gray-500" }, O = {
4
4
  key: 0,
5
5
  class: "text-xs text-[#B2C9D6]"
@@ -35,12 +35,12 @@ const vn = /* @__PURE__ */ he({
35
35
  __name: "RegistersWrapper",
36
36
  setup(n) {
37
37
  const t = Ge(
38
- () => import("./EntityTablePage-Bx4SIoW8.js")
38
+ () => import("./EntityTablePage-CcUrgtQd.js")
39
39
  ), a = Ge(
40
40
  () => import("./EntityCreatePage-Da8XgBKU.js")
41
41
  ), l = Ge(
42
42
  () => import("./EntityEditPage-QktKEAxz.js")
43
- ), x = Ge(() => import("./register-C_mb5TbK.js")), f = {
43
+ ), x = Ge(() => import("./register-Bw4auhFJ.js")), f = {
44
44
  table: t,
45
45
  create: a,
46
46
  edit: l,
@@ -86,12 +86,12 @@ const vn = /* @__PURE__ */ he({
86
86
  __name: "DatasetsWrapper",
87
87
  setup(n) {
88
88
  const t = Ge(
89
- () => import("./EntityTablePage-Bx4SIoW8.js")
89
+ () => import("./EntityTablePage-CcUrgtQd.js")
90
90
  ), a = Ge(
91
91
  () => import("./EntityCreatePage-Da8XgBKU.js")
92
92
  ), l = Ge(
93
93
  () => import("./EntityEditPage-QktKEAxz.js")
94
- ), x = Ge(() => import("./service-BUb9DRGZ.js")), f = {
94
+ ), x = Ge(() => import("./service-Bnu79Dgq.js")), f = {
95
95
  table: t,
96
96
  create: a,
97
97
  edit: l,
@@ -154,12 +154,12 @@ const vn = /* @__PURE__ */ he({
154
154
  __name: "RastersWrapper",
155
155
  setup(n) {
156
156
  const t = Ge(
157
- () => import("./RastersTablePage-Cjb2zg5J.js")
157
+ () => import("./RastersTablePage-DXnU_Mf7.js")
158
158
  ), a = Ge(
159
159
  () => import("./EntityCreatePage-Da8XgBKU.js")
160
160
  ), l = Ge(
161
161
  () => import("./EntityEditPage-QktKEAxz.js")
162
- ), x = Ge(() => import("./raster-D7fESzin.js")), f = {
162
+ ), x = Ge(() => import("./raster-C_Mqx3id.js")), f = {
163
163
  table: t,
164
164
  create: a,
165
165
  edit: l,
@@ -211,12 +211,12 @@ const vn = /* @__PURE__ */ he({
211
211
  __name: "CartocssWrapper",
212
212
  setup(n) {
213
213
  const t = Ge(
214
- () => import("./EntityTablePage-Bx4SIoW8.js")
214
+ () => import("./EntityTablePage-CcUrgtQd.js")
215
215
  ), a = Ge(
216
216
  () => import("./EntityCreatePage-Da8XgBKU.js")
217
217
  ), l = Ge(
218
218
  () => import("./EntityEditPage-QktKEAxz.js")
219
- ), x = Ge(() => import("./cartocss-sXf_ZeCv.js")), f = {
219
+ ), x = Ge(() => import("./cartocss-N1uM83tE.js")), f = {
220
220
  table: t,
221
221
  create: a,
222
222
  edit: l,
@@ -321,12 +321,12 @@ const Nr = /* @__PURE__ */ Ue(Rr, [["render", jr]]), Or = { class: "gap-2 inline
321
321
  __name: "MapsWrapper",
322
322
  setup(n) {
323
323
  const t = Ge(
324
- () => import("./EntityTablePage-Bx4SIoW8.js")
324
+ () => import("./EntityTablePage-CcUrgtQd.js")
325
325
  ), a = Ge(
326
326
  () => import("./EntityCreatePage-Da8XgBKU.js")
327
327
  ), l = Ge(
328
328
  () => import("./EntityEditPage-QktKEAxz.js")
329
- ), x = Ge(() => import("./MapSettings-Bw4WyHXT.js")), f = {
329
+ ), x = Ge(() => import("./MapSettings-nlgaugUY.js")), f = {
330
330
  table: t,
331
331
  create: a,
332
332
  edit: l,
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- [data-v-d576dfc7] .entity-table-root tbody td:nth-child(5) a{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:1px solid rgb(229 231 235);border-radius:.375rem;background:#fff;font-size:0;line-height:0}[data-v-d576dfc7] .entity-table-root tbody td:nth-child(5) a:hover{background:#f3f4f6}[data-v-d576dfc7] .entity-table-root tbody td:nth-child(5) a:before{content:"";width:1rem;height:1rem;display:block;background-color:#2563eb;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:contain;-webkit-mask-size:contain;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z'/%3E%3Cpath d='M15 5.764v15'/%3E%3Cpath d='M9 3.236v15'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z'/%3E%3Cpath d='M15 5.764v15'/%3E%3Cpath d='M9 3.236v15'/%3E%3C/svg%3E")}.custom-pagination[data-v-e728e68b] .items-center{display:block}.maplibregl-ctrl.maplibregl-ctrl-attrib.maplibregl-compact.maplibregl-compact{display:none}.maplibre-demo-map-container{height:100%;width:100%;position:relative}#maplibre-demo-map{height:100%;width:100%;position:absolute}.map-widgets-flex{width:100%;height:100%;display:flex;justify-content:space-between;padding:20px;box-sizing:border-box}.widgets-left,.widgets-right{display:flex;flex-direction:column;gap:10px;height:100%;width:400px;pointer-events:none}.widgets-right .widget-column{align-items:flex-end}.widgets-left{align-items:flex-start}.widget-column{display:flex;flex-direction:column;gap:10px;z-index:10;height:100%}.widgets-top{overflow-y:auto}.widgets-bottom{flex-shrink:0}.widgets-top,.widgets-bottom{display:flex;flex-direction:column;gap:8px;pointer-events:auto;overflow-y:auto}.widgets-top{align-items:flex-start}.widgets-bottom{align-items:flex-end;margin-top:auto}.widgets-left{justify-content:flex-start}.map-view-root[data-v-d6e61166]{position:relative}.mapLayer-info[data-v-cc1cc7bf]{display:inline-flex;position:relative}.mapLayer-info__trigger[data-v-cc1cc7bf]{display:inline-flex;align-items:center;justify-content:center;padding:0;color:inherit;text-decoration:none;cursor:pointer}.mapLayer-info__icon[data-v-cc1cc7bf]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;transition:color .2s ease}.mapLayer-info__icon[data-v-cc1cc7bf]:hover{color:#1d4ed8}.mapLayer-info__popover[data-v-cc1cc7bf]{position:absolute;min-width:200px}.mapLayer-info__inner[data-v-cc1cc7bf]{display:flex;flex-direction:column;gap:0}.mapLayer-info__item[data-v-cc1cc7bf]{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:flex-start;padding:6px 0;border-bottom:1px solid #e2e8f0}.mapLayer-info__item[data-v-cc1cc7bf]:last-child{border-bottom:none}.mapLayer-info__item-label[data-v-cc1cc7bf]{font-size:12px;color:#475569;font-weight:600}.mapLayer-info__item-value[data-v-cc1cc7bf]{font-size:13px;color:#1f2937}.mapLayer-info__item-value--break-all[data-v-cc1cc7bf]{word-break:break-all}.map-info[data-v-813e24fb]{width:100%}.map-info__header[data-v-813e24fb]{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;padding:20px 20px 12px}.map-info__actions[data-v-813e24fb]{display:flex;align-items:center;gap:8px}.map-info__title[data-v-813e24fb]{margin:0;font-size:18px;line-height:1.3;font-weight:600;color:#1f2937}.map-info__menu[data-v-813e24fb]{position:relative}.map-info__menu-button[data-v-813e24fb]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.map-info__menu-button[data-v-813e24fb]:hover{background:#94a3b833}.map-info__popover[data-v-813e24fb]{position:absolute;background:#fff;box-shadow:0 10px 40px 10px #00000014;border-radius:12px;padding:8px 12px;min-width:160px;z-index:50}.map-info__popover-link[data-v-813e24fb]{display:block;padding:6px 0;font-size:13px;color:#1f2937;text-decoration:none}.map-info__popover-link[data-v-813e24fb]:hover{color:#1d4ed8}.map-info__content[data-v-813e24fb]{padding:0 20px 20px;font-size:14px;color:#34495e;transition:max-height .3s ease,opacity .3s ease,padding .3s ease;overflow:hidden;max-height:1000px;opacity:1}.map-info__content--collapsed[data-v-813e24fb]{max-height:0;opacity:0;padding:0 20px 5px}.map-info__content[data-v-813e24fb] p{margin:0 0 12px}.map-info__toggle-button[data-v-813e24fb]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.map-info__toggle-button[data-v-813e24fb]:hover{background:#94a3b833}.map-info__toggle-icon--rotated[data-v-813e24fb]{transform:rotate(180deg)}.mapLayer-filter[data-v-32948852]{display:inline-flex;position:relative}.mapLayer-filter__trigger[data-v-32948852]{display:inline-flex;align-items:center;justify-content:center;padding:0;color:inherit;text-decoration:none;cursor:pointer;border-radius:50%;transition:background .2s ease}.mapLayer-filter__trigger[data-v-32948852]:hover:not(.mapLayer-filter__trigger--disabled){background:#d4dae033}.mapLayer-filter__trigger:hover:not(.mapLayer-filter__trigger--disabled) .mapLayer-filter__icon[data-v-32948852]{color:#1d4ed8}.mapLayer-filter__trigger--disabled[data-v-32948852]{cursor:not-allowed;opacity:.5;pointer-events:auto}.mapLayer-filter__icon[data-v-32948852]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;color:#475569;transition:color .2s ease}.mapLayer-filter__trigger--disabled .mapLayer-filter__icon[data-v-32948852]{color:inherit}.mapLayer-filter__popover[data-v-32948852]{position:absolute;max-width:min-content}.mapLayer-filter__popover--static[data-v-32948852]{position:static;top:auto;left:auto;transform:none!important}.map-filter[data-v-32948852]{background:#fffffff0;border:1px solid rgba(148,163,184,.35);border-radius:16px;padding:16px}.map-filter__header[data-v-32948852]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.map-filter__title[data-v-32948852]{margin:0;font-size:15px;font-weight:600;color:#1f2937}.map-filter__close[data-v-32948852]{width:24px;height:24px;border:none;border-radius:50%;background:#94a3b833;color:#475569;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.map-filter__close[data-v-32948852]:hover{background:#3b82f633;color:#2563eb}.filter-badge__hint[data-v-32948852]{position:fixed;transform:translate(-50%);max-width:220px;font-size:11px;line-height:1.3;color:#1f2937;background:#fffffff2;border:1px solid rgba(148,163,184,.35);border-radius:6px;padding:6px 8px;box-shadow:0 8px 16px #0f172a1f;pointer-events:none;white-space:normal;z-index:1000}.opacity-btn[data-v-b278347a]{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:8px;border:none;background:transparent;color:#475569;cursor:pointer;transition:background .2s ease,color .2s ease}.opacity-btn[data-v-b278347a]:hover{background:#94a3b829;color:#1f2937}.opacity-popover[data-v-b278347a]{position:fixed;z-index:102;padding:12px;width:260px;background:#fff;border-radius:12px;box-shadow:0 16px 32px #0f172a26}.opacity-popover__content[data-v-b278347a]{display:flex;align-items:center;gap:8px}.opacity-popover__label[data-v-b278347a]{font-size:12px;color:#6b7280}.opacity-popover__range[data-v-b278347a]{flex:1 1 auto;accent-color:#2563eb}.opacity-popover__value[data-v-b278347a]{font-size:12px;color:#475569}.layers-panel[data-v-4706ee79]{display:flex;flex-direction:column;background:#fff;border:1px solid rgba(148,163,184,.35);border-radius:16px;padding:16px;box-shadow:0 16px 32px #0f172a1a;min-width:220px}.layers-panel__header[data-v-4706ee79]{display:flex;justify-content:space-between;align-items:center;gap:16px}.layers-panel__header-actions[data-v-4706ee79]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.layers-panel__heading-title[data-v-4706ee79]{display:flex;align-items:baseline;gap:8px}.layers-panel__count[data-v-4706ee79]{font-size:12px;text-transform:none;color:#475569}.layers-panel__bulk-actions[data-v-4706ee79]{display:flex;align-items:center;gap:6px}.layers-panel__header-link[data-v-4706ee79]{border:none;background:transparent;padding:0;font-size:12px;font-weight:500;color:#2563eb;cursor:pointer;transition:color .2s ease}.layers-panel__header-link[data-v-4706ee79]:hover{color:#1d4ed8}.layers-panel__header-controls[data-v-4706ee79]{display:flex;align-items:center;gap:6px}.layers-panel__heading[data-v-4706ee79]{display:flex;flex-direction:column;gap:6px}.layers-panel__title[data-v-4706ee79]{font-size:18px;font-weight:600;color:#1f2937}.layers-panel__clear[data-v-4706ee79]{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:10px;border:1px solid rgba(59,130,246,.6);background-color:#3b82f614;color:#1d4ed8;font-size:12px;font-weight:500;line-height:1;transition:background-color .15s ease,color .15s ease}.layers-panel__clear[data-v-4706ee79]:hover{background-color:#2563eb26;color:#1e40af}.layers-panel__item[data-v-4706ee79]{display:flex;align-items:center;justify-content:space-between;gap:12px}.layers-panel__label[data-v-4706ee79]{display:flex;flex-direction:column;gap:4px;color:#334155;width:100%}.layers-panel__label-row[data-v-4706ee79]{display:flex;align-items:center;gap:12px}.layers-panel__title-block[data-v-4706ee79]{display:inline-flex;align-items:center;gap:8px;flex:1;min-width:0}.layers-panel__checkbox[data-v-4706ee79]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border:2px solid var(--layers-panel-checkbox-color, #94a3b8);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;background:#fff;transition:all .15s ease}.layers-panel__checkbox[data-v-4706ee79]:checked{background:var(--layers-panel-checkbox-color, #94a3b8);border-color:var(--layers-panel-checkbox-color, #94a3b8)}.layers-panel__checkbox[data-v-4706ee79]:checked:after{content:"";width:9px;height:9px;display:block;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='9' viewBox='0 0 12 9' fill='none'%3E%3Cpath d='M10.3332 1.5L4.49984 7.33333L1.6665 4.5' stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}.layers-panel__checkbox[data-v-4706ee79]:hover{border-color:var(--layers-panel-checkbox-color, #94a3b8);box-shadow:none}.layers-panel__name[data-v-4706ee79]{font-size:14px;font-weight:400;color:#1f2937;min-width:0}.layers-panel__meta[data-v-4706ee79]{display:flex;align-items:center;gap:4px;margin-left:auto}.layers-panel__actions[data-v-4706ee79]{display:flex;align-items:center;gap:4px}.layers-panel__action[data-v-4706ee79]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;cursor:pointer;padding:0;color:#475569}.layers-panel__action[data-v-4706ee79]:hover{color:#1d4ed8}.layers-panel__content[data-v-4706ee79]{display:flex;flex-direction:column;gap:10px;transition:max-height .3s ease,opacity .3s ease;overflow:hidden;max-height:10000px;opacity:1;margin-top:15px}.layers-panel__content--collapsed[data-v-4706ee79]{margin-top:-5px;max-height:0;opacity:0;gap:0}.layers-panel__toggle-button[data-v-4706ee79]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.layers-panel__toggle-button[data-v-4706ee79]:hover{background:#94a3b833}.layers-panel__toggle-icon--rotated[data-v-4706ee79]{transform:rotate(180deg);transition:transform .3s ease}.card[data-v-3a3cb28b]{font-family:inherit}.fade-enter-active[data-v-3a3cb28b],.fade-leave-active[data-v-3a3cb28b]{transition:opacity .2s ease}.fade-enter-from[data-v-3a3cb28b],.fade-leave-to[data-v-3a3cb28b]{opacity:0}.map-filter[data-v-98772410]{background:#fffffff0;border:1px solid rgba(148,163,184,.35);border-radius:16px;padding:16px;box-shadow:0 16px 32px #0f172a1a;min-width:240px}.map-filter__header[data-v-98772410]{display:flex;align-items:center;justify-content:space-between}.map-filter__title[data-v-98772410]{margin:0;font-size:15px;font-weight:600;color:#1f2937}.map-filter__close[data-v-98772410]{width:24px;height:24px;border:none;border-radius:50%;background:#94a3b833;color:#475569;cursor:pointer}.map-filter__close[data-v-98772410]:hover{background:#3b82f633;color:#2563eb}.catalog-tab[data-v-36ed2aad]{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.catalog-tab__search[data-v-36ed2aad]{position:sticky;top:0;background:inherit;z-index:1;padding-bottom:8px}.catalog-tab__list[data-v-36ed2aad]{flex:1 1 auto;display:flex;flex-direction:column;overflow-y:auto;min-height:0;padding-bottom:8px}.fade-enter-active[data-v-36ed2aad],.fade-leave-active[data-v-36ed2aad]{transition:all .2s ease}.fade-enter-from[data-v-36ed2aad],.fade-leave-to[data-v-36ed2aad]{opacity:0;max-height:0}.filter-badge[data-v-36ed2aad]{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:9999px;background:#94a3b826;color:#475569;font-size:11px;font-weight:600;border:none;cursor:pointer;transition:background .2s ease,color .2s ease}.filter-badge[data-v-36ed2aad]:hover{background:#94a3b840;color:#1f2937}.filter-badge--disabled[data-v-36ed2aad]{cursor:not-allowed;background:#94a3b814;color:#475569b3}.filter-badge__icon[data-v-36ed2aad]{width:14px;height:14px}.filter-badge__hint[data-v-36ed2aad]{position:fixed;transform:translate(-50%);max-width:220px;font-size:11px;line-height:1.3;color:#1f2937;background:#fffffff2;border:1px solid rgba(148,163,184,.35);border-radius:6px;padding:6px 8px;box-shadow:0 8px 16px #0f172a1f;pointer-events:none;white-space:normal;z-index:1000}.selected-tab[data-v-1566770c]{display:flex;flex-direction:column;gap:12px;height:100%;min-height:0}.selected-tab__actions[data-v-1566770c]{flex:0 0 auto}.selected-tab__add[data-v-1566770c]{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:8px 12px;border-radius:10px;background:#3b82f614;color:#2563eb;border:none;cursor:pointer;transition:background .2s ease,color .2s ease}.selected-tab__add[data-v-1566770c]:hover{background:#3b82f629;color:#1d4ed8}.selected-tab__empty[data-v-1566770c]{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px dashed rgba(148,163,184,.6);border-radius:16px;padding:24px;background:#f8fafce6;text-align:center;color:#6b7280}.selected-tab__empty-title[data-v-1566770c]{margin:0;font-weight:600;color:#1f2937}.selected-tab__empty-text[data-v-1566770c]{margin:0;font-size:13px}.selected-tab__scroll[data-v-1566770c]{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:4px;display:flex;flex-direction:column}.selected-tab__scroll>div[data-v-1566770c]{display:flex;flex-direction:column;gap:8px}.selected-tab__item[data-v-1566770c]{border:1px solid #e5e7eb;border-radius:10px;padding:12px;background:#fff;color:#4b5563;font-size:13px;transition:background .2s ease,border-color .2s ease}.selected-tab__item[data-v-1566770c]:hover{background:#f8fafccc}.selected-tab__item--dragging[data-v-1566770c]{opacity:.5}.selected-tab__item--over[data-v-1566770c]{border-color:#2563eb;background:#3b82f61f}.selected-tab__item-header[data-v-1566770c]{display:flex;align-items:center;justify-content:space-between;gap:12px}.selected-tab__item-info[data-v-1566770c]{display:flex;align-items:center;gap:8px;cursor:move;color:#1f2937}.selected-tab__item-handle[data-v-1566770c]{color:#64748bcc;font-size:16px}.selected-tab__item-checkbox[data-v-1566770c]{width:16px;height:16px;accent-color:#2563eb}.selected-tab__item-controls[data-v-1566770c]{display:flex;align-items:center;gap:8px}.selected-tab__item-opacity[data-v-1566770c],.selected-tab__item-menu[data-v-1566770c]{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:8px;border:none;background:transparent;color:#475569;cursor:pointer;transition:background .2s ease,color .2s ease}.selected-tab__item-opacity[data-v-1566770c]:hover,.selected-tab__item-menu[data-v-1566770c]:hover{background:#94a3b829;color:#1f2937}.selected-tab__popover[data-v-1566770c]{position:fixed;z-index:102;padding:12px;width:240px;background:#fff;border-radius:12px;box-shadow:0 16px 32px #0f172a26}.selected-tab__popover-content[data-v-1566770c]{display:flex;align-items:center;gap:8px}.selected-tab__popover-label[data-v-1566770c]{font-size:12px;color:#6b7280}.selected-tab__popover-range[data-v-1566770c]{flex:1 1 auto;accent-color:#2563eb}.selected-tab__popover-value[data-v-1566770c]{font-size:12px;color:#475569}.selected-tab__menu[data-v-1566770c]{position:fixed;z-index:102;background:#fff;border-radius:12px;box-shadow:0 16px 32px #0f172a26;padding:12px}.selected-tab__menu-inner[data-v-1566770c]{display:flex;flex-direction:column;gap:4px;width:190px}.selected-tab__menu-item[data-v-1566770c]{display:flex;align-items:center;gap:8px;padding:6px 8px;border:none;background:transparent;color:#1f2937;font-size:13px;text-align:left;cursor:pointer;transition:background .2s ease}.selected-tab__menu-item[data-v-1566770c]:hover{background:#94a3b829}.selected-tab__menu-item--disabled[data-v-1566770c]{color:#63666a99;cursor:not-allowed}.selected-tab__menu-item--danger[data-v-1566770c]{color:#dc2626}.selected-tab__menu-item--danger[data-v-1566770c]:hover{background:#dc26261f}.filter-tab[data-v-c6632fbd]{display:flex;flex-direction:column;gap:16px;height:100%;min-height:0}.filter-tab__header[data-v-c6632fbd]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.filter-tab__subtitle[data-v-c6632fbd]{margin:0 0 4px;font-size:12px;font-weight:500;color:#6b7280}.filter-tab__title[data-v-c6632fbd]{margin:0;font-size:16px;font-weight:600;color:#1f2937}.filter-tab__content[data-v-c6632fbd]{flex:1 1 auto;min-height:0;background:#fffffff0;border:1px solid rgba(148,163,184,.35);box-shadow:0 16px 32px #0f172a1a}.filter-tab__scroll[data-v-c6632fbd]{max-height:100%;overflow-y:auto;padding:0}.filter-tab__empty[data-v-c6632fbd]{padding:24px;text-align:center;background:#f8fafce6;border:1px dashed rgba(148,163,184,.6);border-radius:16px}.filter-tab__empty-title[data-v-c6632fbd]{margin:0 0 8px;font-size:15px;font-weight:600;color:#1f2937}.filter-tab__empty-text[data-v-c6632fbd]{margin:0;font-size:13px;color:#6b7280}.map-catalog-widget[data-v-a5b24fc9]{display:flex;flex-direction:column;max-height:100%;overflow:hidden}.map-catalog-widget__body[data-v-a5b24fc9]{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.map-catalog-widget__scroll[data-v-a5b24fc9]{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:4px}.map-catalog-widget__content[data-v-a5b24fc9]{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;transition:max-height .3s ease,opacity .3s ease;overflow:hidden;max-height:10000px;opacity:1}.map-catalog-widget__content--collapsed[data-v-a5b24fc9]{max-height:0;opacity:0;padding:0}.map-catalog-widget__toggle-button[data-v-a5b24fc9]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.map-catalog-widget__toggle-button[data-v-a5b24fc9]:hover{background:#94a3b833}.map-catalog-widget__toggle-icon--rotated[data-v-a5b24fc9]{transform:rotate(180deg);transition:transform .3s ease}.map-attribute__filter[data-v-9686ce7b] .filter-badge{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9999px;background:#94a3b82e;color:#475569;border:none;padding:0;transition:background-color .15s ease}.map-attribute__filter[data-v-9686ce7b] .filter-badge:hover,.map-attribute__filter[data-v-9686ce7b] .filter-badge.filter-badge--active{background:#2563eb2e;color:#1d4ed8}.map-attribute__filter[data-v-9686ce7b] .filter-badge__icon{width:16px;height:16px}.map-attribute__filter[data-v-9686ce7b] .filter-badge__panel{border-radius:16px;box-shadow:0 16px 32px #0f172a14}.map-search-widget[data-v-d7cf7dd1]{width:100%}.map-print-control[data-v-4fae7635]{z-index:35;display:flex;flex-direction:column;align-items:flex-end;gap:12px}[data-v-4fae7635] .mapboxgl-export-list{display:none;min-width:280px;padding:20px 16px 16px;border-radius:16px;background:#fffffffa;box-shadow:0 18px 40px #0f172a40;color:#0f172a;font-size:14px;line-height:1.4;margin-right:40px}[data-v-4fae7635] .mapboxgl-export-list table{width:100%;border-collapse:separate;border-spacing:0 12px}[data-v-4fae7635] .mapboxgl-export-list td:first-child{width:35%;font-weight:500;color:#334155;padding-right:12px}[data-v-4fae7635] .mapboxgl-export-list label{display:inline-flex;align-items:center}[data-v-4fae7635] .mapboxgl-export-list select{width:100%;height:36px;border-radius:10px;border:1px solid rgba(15,23,42,.1);padding:0 12px;font-size:14px;color:#0f172a;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none}[data-v-4fae7635] .mapboxgl-export-list select:focus{outline:none;border-color:#0f172a40;box-shadow:0 0 0 2px #3b82f633}[data-v-4fae7635] .mapboxgl-export-list .generate-button{margin-top:12px;width:100%;height:40px;border-radius:12px;border:none;background:linear-gradient(134deg,#2563eb,#1d4ed8);color:#fff;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}[data-v-4fae7635] .mapboxgl-export-list .generate-button:hover{transform:translateY(-1px);box-shadow:0 14px 28px #2563eb59}[data-v-4fae7635] .mapboxgl-export-list .generate-button:active{transform:translateY(0);box-shadow:0 10px 20px #2563eb4d}.map-center-control[data-v-03fa94f6]{display:flex;gap:.5rem}.cursor-coordinates[data-v-334315d9]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;background:#ffffffeb;color:#1f2937;box-shadow:0 10px 22px #0f172a29;font-size:12px;max-width:240px}.cursor-coordinates__icon[data-v-334315d9]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#2563eb}.cursor-coordinates__icon svg[data-v-334315d9]{width:100%;height:100%}.cursor-coordinates__text[data-v-334315d9]{white-space:nowrap;font-family:ui-monospace,SFMono-Regular,SFMono,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.minimap[data-v-bc754c89]{position:relative}.minimap__button[data-v-bc754c89]{width:32px;height:32px;border-radius:50%;border:1px solid rgba(148,163,184,.35);background:#ffffffeb;color:#334155;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 16px #0f172a1f;transition:all .2s ease}.minimap__button[data-v-bc754c89]:hover{border-color:#3b82f680;color:#1d4ed8}.minimap__button-icon[data-v-bc754c89]{transition:transform .2s ease}.minimap__wrapper[data-v-bc754c89]{position:absolute;bottom:2.5rem;right:2rem;border-radius:10px;overflow:hidden;border:1px solid rgba(148,163,184,.4);box-shadow:0 10px 22px #0f172a1f;background:#fff}.minimap-slide-enter-active[data-v-bc754c89],.minimap-slide-leave-active[data-v-bc754c89]{transition:opacity .2s ease,transform .2s ease}.minimap-slide-enter-from[data-v-bc754c89],.minimap-slide-leave-to[data-v-bc754c89]{opacity:0;transform:translate(12px)}.drawing-panel-range[data-v-4cee5a30]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#e5e7eb}.drawing-panel-range[data-v-4cee5a30]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:#3b82f6;border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0003}.drawing-panel-range[data-v-4cee5a30]::-moz-range-thumb{width:16px;height:16px;background:#3b82f6;border:none;border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0003}.drawing-canvas-wrap[data-v-ed2688bc]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:auto;touch-action:none}.drawing-canvas-wrap--eraser[data-v-ed2688bc]{cursor:none}.drawing-canvas[data-v-ed2688bc]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;background:transparent}.drawing-canvas--preview[data-v-ed2688bc]{pointer-events:none}.drawing-canvas__eraser-cursor[data-v-ed2688bc]{position:fixed;pointer-events:none;border:2px solid rgba(100,116,139,.8);border-radius:50%;background:#ffffff26;box-sizing:border-box;z-index:1000}.map-widget[data-v-890fa8c5]{position:relative;width:100%;background:#f1f5f9;overflow:hidden}.map-widget__view[data-v-890fa8c5]{font-family:inherit;width:100%;height:100%}.map-widget__state[data-v-890fa8c5]{position:absolute;top:16px;left:50%;transform:translate(-50%);background:#fffffff2;border:1px solid rgba(148,163,184,.4);border-radius:12px;padding:10px 18px;font-size:14px;color:#1f2937;z-index:30;box-shadow:0 12px 24px #0f172a1f}.map-widget__state--error[data-v-890fa8c5]{color:#b91c1c;border-color:#dc262659}.map-widget__filter-host[data-v-890fa8c5]{position:absolute;left:430px;flex:0 0 auto;width:0;align-self:stretch;pointer-events:auto;z-index:21}.map-widget__overlay-grid[data-v-890fa8c5]{position:absolute;top:0;right:0;bottom:0;left:0;font-family:inherit;z-index:20;pointer-events:none;display:flex;justify-content:space-between;padding:16px 16px 36px}.map-widget__side[data-v-890fa8c5]{flex:0 0 auto;display:flex;flex-direction:column;justify-content:flex-start;height:100%;width:min(100%,400px);pointer-events:none}.map-widget__side--right[data-v-890fa8c5]{align-items:flex-end}.map-widget__stack-wrapper[data-v-890fa8c5]{display:flex;flex-direction:column;min-height:0;pointer-events:none;max-height:100%;max-width:calc(100% - 29px)}.map-widget__stack-wrapper--top[data-v-890fa8c5]{flex:1 1 auto}.map-widget__stack-wrapper--bottom[data-v-890fa8c5]{flex:0 0 auto;margin-top:auto;padding-top:16px}.map-widget__stack[data-v-890fa8c5]{display:flex;flex-direction:column;gap:12px;max-height:100%;min-height:0;width:min(100%,400px);pointer-events:auto;overflow-y:auto;padding-right:4px}.map-overlay__item[data-v-890fa8c5]{display:contents;flex-direction:column;flex:0 1 auto;max-width:100%;max-height:100%;min-height:0;width:100%;overflow:hidden}.map-widget__filter-host[data-v-890fa8c5]{left:16px;top:16px;z-index:82}@media (min-width: 768px){.map-widget__filter-host[data-v-890fa8c5]{left:397px}}.animate-pulse[data-v-821aeb35]{animation:pulse-821aeb35 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-821aeb35{0%,to{opacity:1}50%{opacity:.4}}[data-v-821aeb35] [data-popover-trigger]{background-color:#fff!important;border:1px solid #d1d5db!important;color:#5b657a!important;border-radius:.5rem!important;padding:.45rem 1rem!important;box-shadow:none!important;height:38px!important}[data-v-821aeb35] [data-popover-trigger]:hover,[data-v-821aeb35] [data-popover-trigger]:focus{background-color:#f3f4f6!important;border-color:#c7d2fe!important;outline:none!important}[data-v-821aeb35] [data-popover-trigger][aria-expanded=true]{background-color:#fff!important;border-color:#2563eb!important;box-shadow:0 0 0 4px #2563eb1f!important}[data-v-821aeb35] [data-popover-trigger] svg{color:inherit!important;stroke:currentColor!important}th[data-v-25566600]{position:sticky;top:0;background:#fff}.map-widget__filter-host[data-v-008c5939]{position:absolute;left:10px;top:100px;align-self:stretch;pointer-events:auto;z-index:21}.animate-pulse[data-v-63309b89]{animation:pulse-63309b89 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-63309b89{0%,to{opacity:1}50%{opacity:.4}}[data-v-63309b89] [data-popover-trigger]{background-color:#fff!important;border:1px solid #d1d5db!important;color:#5b657a!important;border-radius:.5rem!important;padding:.45rem 1rem!important;box-shadow:none!important;height:38px!important}[data-v-63309b89] [data-popover-trigger]:hover,[data-v-63309b89] [data-popover-trigger]:focus{background-color:#f3f4f6!important;border-color:#c7d2fe!important;outline:none!important}[data-v-63309b89] [data-popover-trigger][aria-expanded=true]{background-color:#fff!important;border-color:#2563eb!important;box-shadow:0 0 0 4px #2563eb1f!important}[data-v-df90fbac] .hide-add-btn button.rounded-full{display:none!important}
1
+ [data-v-d576dfc7] .entity-table-root tbody td:nth-child(5) a{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:1px solid rgb(229 231 235);border-radius:.375rem;background:#fff;font-size:0;line-height:0}[data-v-d576dfc7] .entity-table-root tbody td:nth-child(5) a:hover{background:#f3f4f6}[data-v-d576dfc7] .entity-table-root tbody td:nth-child(5) a:before{content:"";width:1rem;height:1rem;display:block;background-color:#2563eb;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:contain;-webkit-mask-size:contain;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z'/%3E%3Cpath d='M15 5.764v15'/%3E%3Cpath d='M9 3.236v15'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z'/%3E%3Cpath d='M15 5.764v15'/%3E%3Cpath d='M9 3.236v15'/%3E%3C/svg%3E")}.custom-pagination[data-v-e728e68b] .items-center{display:block}.maplibregl-ctrl.maplibregl-ctrl-attrib.maplibregl-compact.maplibregl-compact{display:none}.maplibre-demo-map-container{height:100%;width:100%;position:relative}#maplibre-demo-map{height:100%;width:100%;position:absolute}.map-widgets-flex{width:100%;height:100%;display:flex;justify-content:space-between;padding:20px;box-sizing:border-box}.widgets-left,.widgets-right{display:flex;flex-direction:column;gap:10px;height:100%;width:400px;pointer-events:none}.widgets-right .widget-column{align-items:flex-end}.widgets-left{align-items:flex-start}.widget-column{display:flex;flex-direction:column;gap:10px;z-index:10;height:100%}.widgets-top{overflow-y:auto}.widgets-bottom{flex-shrink:0}.widgets-top,.widgets-bottom{display:flex;flex-direction:column;gap:8px;pointer-events:auto;overflow-y:auto}.widgets-top{align-items:flex-start}.widgets-bottom{align-items:flex-end;margin-top:auto}.widgets-left{justify-content:flex-start}.map-view-root[data-v-d6e61166]{position:relative}.mapLayer-info[data-v-cc1cc7bf]{display:inline-flex;position:relative}.mapLayer-info__trigger[data-v-cc1cc7bf]{display:inline-flex;align-items:center;justify-content:center;padding:0;color:inherit;text-decoration:none;cursor:pointer}.mapLayer-info__icon[data-v-cc1cc7bf]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;transition:color .2s ease}.mapLayer-info__icon[data-v-cc1cc7bf]:hover{color:#1d4ed8}.mapLayer-info__popover[data-v-cc1cc7bf]{position:absolute;min-width:200px}.mapLayer-info__inner[data-v-cc1cc7bf]{display:flex;flex-direction:column;gap:0}.mapLayer-info__item[data-v-cc1cc7bf]{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:flex-start;padding:6px 0;border-bottom:1px solid #e2e8f0}.mapLayer-info__item[data-v-cc1cc7bf]:last-child{border-bottom:none}.mapLayer-info__item-label[data-v-cc1cc7bf]{font-size:12px;color:#475569;font-weight:600}.mapLayer-info__item-value[data-v-cc1cc7bf]{font-size:13px;color:#1f2937}.mapLayer-info__item-value--break-all[data-v-cc1cc7bf]{word-break:break-all}.map-info[data-v-813e24fb]{width:100%}.map-info__header[data-v-813e24fb]{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;padding:20px 20px 12px}.map-info__actions[data-v-813e24fb]{display:flex;align-items:center;gap:8px}.map-info__title[data-v-813e24fb]{margin:0;font-size:18px;line-height:1.3;font-weight:600;color:#1f2937}.map-info__menu[data-v-813e24fb]{position:relative}.map-info__menu-button[data-v-813e24fb]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.map-info__menu-button[data-v-813e24fb]:hover{background:#94a3b833}.map-info__popover[data-v-813e24fb]{position:absolute;background:#fff;box-shadow:0 10px 40px 10px #00000014;border-radius:12px;padding:8px 12px;min-width:160px;z-index:50}.map-info__popover-link[data-v-813e24fb]{display:block;padding:6px 0;font-size:13px;color:#1f2937;text-decoration:none}.map-info__popover-link[data-v-813e24fb]:hover{color:#1d4ed8}.map-info__content[data-v-813e24fb]{padding:0 20px 20px;font-size:14px;color:#34495e;transition:max-height .3s ease,opacity .3s ease,padding .3s ease;overflow:hidden;max-height:1000px;opacity:1}.map-info__content--collapsed[data-v-813e24fb]{max-height:0;opacity:0;padding:0 20px 5px}.map-info__content[data-v-813e24fb] p{margin:0 0 12px}.map-info__toggle-button[data-v-813e24fb]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.map-info__toggle-button[data-v-813e24fb]:hover{background:#94a3b833}.map-info__toggle-icon--rotated[data-v-813e24fb]{transform:rotate(180deg)}.mapLayer-filter[data-v-32948852]{display:inline-flex;position:relative}.mapLayer-filter__trigger[data-v-32948852]{display:inline-flex;align-items:center;justify-content:center;padding:0;color:inherit;text-decoration:none;cursor:pointer;border-radius:50%;transition:background .2s ease}.mapLayer-filter__trigger[data-v-32948852]:hover:not(.mapLayer-filter__trigger--disabled){background:#d4dae033}.mapLayer-filter__trigger:hover:not(.mapLayer-filter__trigger--disabled) .mapLayer-filter__icon[data-v-32948852]{color:#1d4ed8}.mapLayer-filter__trigger--disabled[data-v-32948852]{cursor:not-allowed;opacity:.5;pointer-events:auto}.mapLayer-filter__icon[data-v-32948852]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;color:#475569;transition:color .2s ease}.mapLayer-filter__trigger--disabled .mapLayer-filter__icon[data-v-32948852]{color:inherit}.mapLayer-filter__popover[data-v-32948852]{position:absolute;max-width:min-content}.mapLayer-filter__popover--static[data-v-32948852]{position:static;top:auto;left:auto;transform:none!important}.map-filter[data-v-32948852]{background:#fffffff0;border:1px solid rgba(148,163,184,.35);border-radius:16px;padding:16px}.map-filter__header[data-v-32948852]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.map-filter__title[data-v-32948852]{margin:0;font-size:15px;font-weight:600;color:#1f2937}.map-filter__close[data-v-32948852]{width:24px;height:24px;border:none;border-radius:50%;background:#94a3b833;color:#475569;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.map-filter__close[data-v-32948852]:hover{background:#3b82f633;color:#2563eb}.filter-badge__hint[data-v-32948852]{position:fixed;transform:translate(-50%);max-width:220px;font-size:11px;line-height:1.3;color:#1f2937;background:#fffffff2;border:1px solid rgba(148,163,184,.35);border-radius:6px;padding:6px 8px;box-shadow:0 8px 16px #0f172a1f;pointer-events:none;white-space:normal;z-index:1000}.opacity-btn[data-v-b278347a]{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:8px;border:none;background:transparent;color:#475569;cursor:pointer;transition:background .2s ease,color .2s ease}.opacity-btn[data-v-b278347a]:hover{background:#94a3b829;color:#1f2937}.opacity-popover[data-v-b278347a]{position:fixed;z-index:102;padding:12px;width:260px;background:#fff;border-radius:12px;box-shadow:0 16px 32px #0f172a26}.opacity-popover__content[data-v-b278347a]{display:flex;align-items:center;gap:8px}.opacity-popover__label[data-v-b278347a]{font-size:12px;color:#6b7280}.opacity-popover__range[data-v-b278347a]{flex:1 1 auto;accent-color:#2563eb}.opacity-popover__value[data-v-b278347a]{font-size:12px;color:#475569}.layers-panel[data-v-4706ee79]{display:flex;flex-direction:column;background:#fff;border:1px solid rgba(148,163,184,.35);border-radius:16px;padding:16px;box-shadow:0 16px 32px #0f172a1a;min-width:220px}.layers-panel__header[data-v-4706ee79]{display:flex;justify-content:space-between;align-items:center;gap:16px}.layers-panel__header-actions[data-v-4706ee79]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.layers-panel__heading-title[data-v-4706ee79]{display:flex;align-items:baseline;gap:8px}.layers-panel__count[data-v-4706ee79]{font-size:12px;text-transform:none;color:#475569}.layers-panel__bulk-actions[data-v-4706ee79]{display:flex;align-items:center;gap:6px}.layers-panel__header-link[data-v-4706ee79]{border:none;background:transparent;padding:0;font-size:12px;font-weight:500;color:#2563eb;cursor:pointer;transition:color .2s ease}.layers-panel__header-link[data-v-4706ee79]:hover{color:#1d4ed8}.layers-panel__header-controls[data-v-4706ee79]{display:flex;align-items:center;gap:6px}.layers-panel__heading[data-v-4706ee79]{display:flex;flex-direction:column;gap:6px}.layers-panel__title[data-v-4706ee79]{font-size:18px;font-weight:600;color:#1f2937}.layers-panel__clear[data-v-4706ee79]{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:10px;border:1px solid rgba(59,130,246,.6);background-color:#3b82f614;color:#1d4ed8;font-size:12px;font-weight:500;line-height:1;transition:background-color .15s ease,color .15s ease}.layers-panel__clear[data-v-4706ee79]:hover{background-color:#2563eb26;color:#1e40af}.layers-panel__item[data-v-4706ee79]{display:flex;align-items:center;justify-content:space-between;gap:12px}.layers-panel__label[data-v-4706ee79]{display:flex;flex-direction:column;gap:4px;color:#334155;width:100%}.layers-panel__label-row[data-v-4706ee79]{display:flex;align-items:center;gap:12px}.layers-panel__title-block[data-v-4706ee79]{display:inline-flex;align-items:center;gap:8px;flex:1;min-width:0}.layers-panel__checkbox[data-v-4706ee79]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border:2px solid var(--layers-panel-checkbox-color, #94a3b8);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;background:#fff;transition:all .15s ease}.layers-panel__checkbox[data-v-4706ee79]:checked{background:var(--layers-panel-checkbox-color, #94a3b8);border-color:var(--layers-panel-checkbox-color, #94a3b8)}.layers-panel__checkbox[data-v-4706ee79]:checked:after{content:"";width:9px;height:9px;display:block;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='9' viewBox='0 0 12 9' fill='none'%3E%3Cpath d='M10.3332 1.5L4.49984 7.33333L1.6665 4.5' stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}.layers-panel__checkbox[data-v-4706ee79]:hover{border-color:var(--layers-panel-checkbox-color, #94a3b8);box-shadow:none}.layers-panel__name[data-v-4706ee79]{font-size:14px;font-weight:400;color:#1f2937;min-width:0}.layers-panel__meta[data-v-4706ee79]{display:flex;align-items:center;gap:4px;margin-left:auto}.layers-panel__actions[data-v-4706ee79]{display:flex;align-items:center;gap:4px}.layers-panel__action[data-v-4706ee79]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;cursor:pointer;padding:0;color:#475569}.layers-panel__action[data-v-4706ee79]:hover{color:#1d4ed8}.layers-panel__content[data-v-4706ee79]{display:flex;flex-direction:column;gap:10px;transition:max-height .3s ease,opacity .3s ease;overflow:hidden;max-height:10000px;opacity:1;margin-top:15px}.layers-panel__content--collapsed[data-v-4706ee79]{margin-top:-5px;max-height:0;opacity:0;gap:0}.layers-panel__toggle-button[data-v-4706ee79]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.layers-panel__toggle-button[data-v-4706ee79]:hover{background:#94a3b833}.layers-panel__toggle-icon--rotated[data-v-4706ee79]{transform:rotate(180deg);transition:transform .3s ease}.card[data-v-3a3cb28b]{font-family:inherit}.fade-enter-active[data-v-3a3cb28b],.fade-leave-active[data-v-3a3cb28b]{transition:opacity .2s ease}.fade-enter-from[data-v-3a3cb28b],.fade-leave-to[data-v-3a3cb28b]{opacity:0}.map-filter[data-v-98772410]{background:#fffffff0;border:1px solid rgba(148,163,184,.35);border-radius:16px;padding:16px;box-shadow:0 16px 32px #0f172a1a;min-width:240px}.map-filter__header[data-v-98772410]{display:flex;align-items:center;justify-content:space-between}.map-filter__title[data-v-98772410]{margin:0;font-size:15px;font-weight:600;color:#1f2937}.map-filter__close[data-v-98772410]{width:24px;height:24px;border:none;border-radius:50%;background:#94a3b833;color:#475569;cursor:pointer}.map-filter__close[data-v-98772410]:hover{background:#3b82f633;color:#2563eb}.catalog-tab[data-v-36ed2aad]{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.catalog-tab__search[data-v-36ed2aad]{position:sticky;top:0;background:inherit;z-index:1;padding-bottom:8px}.catalog-tab__list[data-v-36ed2aad]{flex:1 1 auto;display:flex;flex-direction:column;overflow-y:auto;min-height:0;padding-bottom:8px}.fade-enter-active[data-v-36ed2aad],.fade-leave-active[data-v-36ed2aad]{transition:all .2s ease}.fade-enter-from[data-v-36ed2aad],.fade-leave-to[data-v-36ed2aad]{opacity:0;max-height:0}.filter-badge[data-v-36ed2aad]{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:9999px;background:#94a3b826;color:#475569;font-size:11px;font-weight:600;border:none;cursor:pointer;transition:background .2s ease,color .2s ease}.filter-badge[data-v-36ed2aad]:hover{background:#94a3b840;color:#1f2937}.filter-badge--disabled[data-v-36ed2aad]{cursor:not-allowed;background:#94a3b814;color:#475569b3}.filter-badge__icon[data-v-36ed2aad]{width:14px;height:14px}.filter-badge__hint[data-v-36ed2aad]{position:fixed;transform:translate(-50%);max-width:220px;font-size:11px;line-height:1.3;color:#1f2937;background:#fffffff2;border:1px solid rgba(148,163,184,.35);border-radius:6px;padding:6px 8px;box-shadow:0 8px 16px #0f172a1f;pointer-events:none;white-space:normal;z-index:1000}.selected-tab[data-v-1566770c]{display:flex;flex-direction:column;gap:12px;height:100%;min-height:0}.selected-tab__actions[data-v-1566770c]{flex:0 0 auto}.selected-tab__add[data-v-1566770c]{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:8px 12px;border-radius:10px;background:#3b82f614;color:#2563eb;border:none;cursor:pointer;transition:background .2s ease,color .2s ease}.selected-tab__add[data-v-1566770c]:hover{background:#3b82f629;color:#1d4ed8}.selected-tab__empty[data-v-1566770c]{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px dashed rgba(148,163,184,.6);border-radius:16px;padding:24px;background:#f8fafce6;text-align:center;color:#6b7280}.selected-tab__empty-title[data-v-1566770c]{margin:0;font-weight:600;color:#1f2937}.selected-tab__empty-text[data-v-1566770c]{margin:0;font-size:13px}.selected-tab__scroll[data-v-1566770c]{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:4px;display:flex;flex-direction:column}.selected-tab__scroll>div[data-v-1566770c]{display:flex;flex-direction:column;gap:8px}.selected-tab__item[data-v-1566770c]{border:1px solid #e5e7eb;border-radius:10px;padding:12px;background:#fff;color:#4b5563;font-size:13px;transition:background .2s ease,border-color .2s ease}.selected-tab__item[data-v-1566770c]:hover{background:#f8fafccc}.selected-tab__item--dragging[data-v-1566770c]{opacity:.5}.selected-tab__item--over[data-v-1566770c]{border-color:#2563eb;background:#3b82f61f}.selected-tab__item-header[data-v-1566770c]{display:flex;align-items:center;justify-content:space-between;gap:12px}.selected-tab__item-info[data-v-1566770c]{display:flex;align-items:center;gap:8px;cursor:move;color:#1f2937}.selected-tab__item-handle[data-v-1566770c]{color:#64748bcc;font-size:16px}.selected-tab__item-checkbox[data-v-1566770c]{width:16px;height:16px;accent-color:#2563eb}.selected-tab__item-controls[data-v-1566770c]{display:flex;align-items:center;gap:8px}.selected-tab__item-opacity[data-v-1566770c],.selected-tab__item-menu[data-v-1566770c]{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:8px;border:none;background:transparent;color:#475569;cursor:pointer;transition:background .2s ease,color .2s ease}.selected-tab__item-opacity[data-v-1566770c]:hover,.selected-tab__item-menu[data-v-1566770c]:hover{background:#94a3b829;color:#1f2937}.selected-tab__popover[data-v-1566770c]{position:fixed;z-index:102;padding:12px;width:240px;background:#fff;border-radius:12px;box-shadow:0 16px 32px #0f172a26}.selected-tab__popover-content[data-v-1566770c]{display:flex;align-items:center;gap:8px}.selected-tab__popover-label[data-v-1566770c]{font-size:12px;color:#6b7280}.selected-tab__popover-range[data-v-1566770c]{flex:1 1 auto;accent-color:#2563eb}.selected-tab__popover-value[data-v-1566770c]{font-size:12px;color:#475569}.selected-tab__menu[data-v-1566770c]{position:fixed;z-index:102;background:#fff;border-radius:12px;box-shadow:0 16px 32px #0f172a26;padding:12px}.selected-tab__menu-inner[data-v-1566770c]{display:flex;flex-direction:column;gap:4px;width:190px}.selected-tab__menu-item[data-v-1566770c]{display:flex;align-items:center;gap:8px;padding:6px 8px;border:none;background:transparent;color:#1f2937;font-size:13px;text-align:left;cursor:pointer;transition:background .2s ease}.selected-tab__menu-item[data-v-1566770c]:hover{background:#94a3b829}.selected-tab__menu-item--disabled[data-v-1566770c]{color:#63666a99;cursor:not-allowed}.selected-tab__menu-item--danger[data-v-1566770c]{color:#dc2626}.selected-tab__menu-item--danger[data-v-1566770c]:hover{background:#dc26261f}.filter-tab[data-v-c6632fbd]{display:flex;flex-direction:column;gap:16px;height:100%;min-height:0}.filter-tab__header[data-v-c6632fbd]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.filter-tab__subtitle[data-v-c6632fbd]{margin:0 0 4px;font-size:12px;font-weight:500;color:#6b7280}.filter-tab__title[data-v-c6632fbd]{margin:0;font-size:16px;font-weight:600;color:#1f2937}.filter-tab__content[data-v-c6632fbd]{flex:1 1 auto;min-height:0;background:#fffffff0;border:1px solid rgba(148,163,184,.35);box-shadow:0 16px 32px #0f172a1a}.filter-tab__scroll[data-v-c6632fbd]{max-height:100%;overflow-y:auto;padding:0}.filter-tab__empty[data-v-c6632fbd]{padding:24px;text-align:center;background:#f8fafce6;border:1px dashed rgba(148,163,184,.6);border-radius:16px}.filter-tab__empty-title[data-v-c6632fbd]{margin:0 0 8px;font-size:15px;font-weight:600;color:#1f2937}.filter-tab__empty-text[data-v-c6632fbd]{margin:0;font-size:13px;color:#6b7280}.map-catalog-widget[data-v-a5b24fc9]{display:flex;flex-direction:column;max-height:100%;overflow:hidden}.map-catalog-widget__body[data-v-a5b24fc9]{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.map-catalog-widget__scroll[data-v-a5b24fc9]{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:4px}.map-catalog-widget__content[data-v-a5b24fc9]{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;transition:max-height .3s ease,opacity .3s ease;overflow:hidden;max-height:10000px;opacity:1}.map-catalog-widget__content--collapsed[data-v-a5b24fc9]{max-height:0;opacity:0;padding:0}.map-catalog-widget__toggle-button[data-v-a5b24fc9]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:transparent;cursor:pointer;transition:background .2s ease}.map-catalog-widget__toggle-button[data-v-a5b24fc9]:hover{background:#94a3b833}.map-catalog-widget__toggle-icon--rotated[data-v-a5b24fc9]{transform:rotate(180deg);transition:transform .3s ease}.map-attribute__filter[data-v-9686ce7b] .filter-badge{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9999px;background:#94a3b82e;color:#475569;border:none;padding:0;transition:background-color .15s ease}.map-attribute__filter[data-v-9686ce7b] .filter-badge:hover,.map-attribute__filter[data-v-9686ce7b] .filter-badge.filter-badge--active{background:#2563eb2e;color:#1d4ed8}.map-attribute__filter[data-v-9686ce7b] .filter-badge__icon{width:16px;height:16px}.map-attribute__filter[data-v-9686ce7b] .filter-badge__panel{border-radius:16px;box-shadow:0 16px 32px #0f172a14}.map-search-widget[data-v-d7cf7dd1]{width:100%}.map-print-control[data-v-4fae7635]{z-index:35;display:flex;flex-direction:column;align-items:flex-end;gap:12px}[data-v-4fae7635] .mapboxgl-export-list{display:none;min-width:280px;padding:20px 16px 16px;border-radius:16px;background:#fffffffa;box-shadow:0 18px 40px #0f172a40;color:#0f172a;font-size:14px;line-height:1.4;margin-right:40px}[data-v-4fae7635] .mapboxgl-export-list table{width:100%;border-collapse:separate;border-spacing:0 12px}[data-v-4fae7635] .mapboxgl-export-list td:first-child{width:35%;font-weight:500;color:#334155;padding-right:12px}[data-v-4fae7635] .mapboxgl-export-list label{display:inline-flex;align-items:center}[data-v-4fae7635] .mapboxgl-export-list select{width:100%;height:36px;border-radius:10px;border:1px solid rgba(15,23,42,.1);padding:0 12px;font-size:14px;color:#0f172a;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none}[data-v-4fae7635] .mapboxgl-export-list select:focus{outline:none;border-color:#0f172a40;box-shadow:0 0 0 2px #3b82f633}[data-v-4fae7635] .mapboxgl-export-list .generate-button{margin-top:12px;width:100%;height:40px;border-radius:12px;border:none;background:linear-gradient(134deg,#2563eb,#1d4ed8);color:#fff;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}[data-v-4fae7635] .mapboxgl-export-list .generate-button:hover{transform:translateY(-1px);box-shadow:0 14px 28px #2563eb59}[data-v-4fae7635] .mapboxgl-export-list .generate-button:active{transform:translateY(0);box-shadow:0 10px 20px #2563eb4d}.map-center-control[data-v-03fa94f6]{display:flex;gap:.5rem}.cursor-coordinates[data-v-334315d9]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;background:#ffffffeb;color:#1f2937;box-shadow:0 10px 22px #0f172a29;font-size:12px;max-width:240px}.cursor-coordinates__icon[data-v-334315d9]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#2563eb}.cursor-coordinates__icon svg[data-v-334315d9]{width:100%;height:100%}.cursor-coordinates__text[data-v-334315d9]{white-space:nowrap;font-family:ui-monospace,SFMono-Regular,SFMono,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.minimap[data-v-bc754c89]{position:relative}.minimap__button[data-v-bc754c89]{width:32px;height:32px;border-radius:50%;border:1px solid rgba(148,163,184,.35);background:#ffffffeb;color:#334155;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 16px #0f172a1f;transition:all .2s ease}.minimap__button[data-v-bc754c89]:hover{border-color:#3b82f680;color:#1d4ed8}.minimap__button-icon[data-v-bc754c89]{transition:transform .2s ease}.minimap__wrapper[data-v-bc754c89]{position:absolute;bottom:2.5rem;right:2rem;border-radius:10px;overflow:hidden;border:1px solid rgba(148,163,184,.4);box-shadow:0 10px 22px #0f172a1f;background:#fff}.minimap-slide-enter-active[data-v-bc754c89],.minimap-slide-leave-active[data-v-bc754c89]{transition:opacity .2s ease,transform .2s ease}.minimap-slide-enter-from[data-v-bc754c89],.minimap-slide-leave-to[data-v-bc754c89]{opacity:0;transform:translate(12px)}.drawing-panel-range[data-v-4cee5a30]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#e5e7eb}.drawing-panel-range[data-v-4cee5a30]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:#3b82f6;border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0003}.drawing-panel-range[data-v-4cee5a30]::-moz-range-thumb{width:16px;height:16px;background:#3b82f6;border:none;border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0003}.drawing-canvas-wrap[data-v-ed2688bc]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:auto;touch-action:none}.drawing-canvas-wrap--eraser[data-v-ed2688bc]{cursor:none}.drawing-canvas[data-v-ed2688bc]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;background:transparent}.drawing-canvas--preview[data-v-ed2688bc]{pointer-events:none}.drawing-canvas__eraser-cursor[data-v-ed2688bc]{position:fixed;pointer-events:none;border:2px solid rgba(100,116,139,.8);border-radius:50%;background:#ffffff26;box-sizing:border-box;z-index:1000}.map-widget[data-v-890fa8c5]{position:relative;width:100%;background:#f1f5f9;overflow:hidden}.map-widget__view[data-v-890fa8c5]{font-family:inherit;width:100%;height:100%}.map-widget__state[data-v-890fa8c5]{position:absolute;top:16px;left:50%;transform:translate(-50%);background:#fffffff2;border:1px solid rgba(148,163,184,.4);border-radius:12px;padding:10px 18px;font-size:14px;color:#1f2937;z-index:30;box-shadow:0 12px 24px #0f172a1f}.map-widget__state--error[data-v-890fa8c5]{color:#b91c1c;border-color:#dc262659}.map-widget__filter-host[data-v-890fa8c5]{position:absolute;left:430px;flex:0 0 auto;width:0;align-self:stretch;pointer-events:auto;z-index:21}.map-widget__overlay-grid[data-v-890fa8c5]{position:absolute;top:0;right:0;bottom:0;left:0;font-family:inherit;z-index:20;pointer-events:none;display:flex;justify-content:space-between;padding:16px 16px 36px}.map-widget__side[data-v-890fa8c5]{flex:0 0 auto;display:flex;flex-direction:column;justify-content:flex-start;height:100%;width:min(100%,400px);pointer-events:none}.map-widget__side--right[data-v-890fa8c5]{align-items:flex-end}.map-widget__stack-wrapper[data-v-890fa8c5]{display:flex;flex-direction:column;min-height:0;pointer-events:none;max-height:100%;max-width:calc(100% - 29px)}.map-widget__stack-wrapper--top[data-v-890fa8c5]{flex:1 1 auto}.map-widget__stack-wrapper--bottom[data-v-890fa8c5]{flex:0 0 auto;margin-top:auto;padding-top:16px}.map-widget__stack[data-v-890fa8c5]{display:flex;flex-direction:column;gap:12px;max-height:100%;min-height:0;width:min(100%,400px);pointer-events:auto;overflow-y:auto;padding-right:4px}.map-overlay__item[data-v-890fa8c5]{display:contents;flex-direction:column;flex:0 1 auto;max-width:100%;max-height:100%;min-height:0;width:100%;overflow:hidden}.map-widget__filter-host[data-v-890fa8c5]{left:16px;top:16px;z-index:82}@media(min-width:768px){.map-widget__filter-host[data-v-890fa8c5]{left:397px}}.animate-pulse[data-v-821aeb35]{animation:pulse-821aeb35 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-821aeb35{0%,to{opacity:1}50%{opacity:.4}}[data-v-821aeb35] [data-popover-trigger]{background-color:#fff!important;border:1px solid #d1d5db!important;color:#5b657a!important;border-radius:.5rem!important;padding:.45rem 1rem!important;box-shadow:none!important;height:38px!important}[data-v-821aeb35] [data-popover-trigger]:hover,[data-v-821aeb35] [data-popover-trigger]:focus{background-color:#f3f4f6!important;border-color:#c7d2fe!important;outline:none!important}[data-v-821aeb35] [data-popover-trigger][aria-expanded=true]{background-color:#fff!important;border-color:#2563eb!important;box-shadow:0 0 0 4px #2563eb1f!important}[data-v-821aeb35] [data-popover-trigger] svg{color:inherit!important;stroke:currentColor!important}th[data-v-25566600]{position:sticky;top:0;background:#fff}.map-widget__filter-host[data-v-008c5939]{position:absolute;left:10px;top:100px;align-self:stretch;pointer-events:auto;z-index:21}.animate-pulse[data-v-63309b89]{animation:pulse-63309b89 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-63309b89{0%,to{opacity:1}50%{opacity:.4}}[data-v-63309b89] [data-popover-trigger]{background-color:#fff!important;border:1px solid #d1d5db!important;color:#5b657a!important;border-radius:.5rem!important;padding:.45rem 1rem!important;box-shadow:none!important;height:38px!important}[data-v-63309b89] [data-popover-trigger]:hover,[data-v-63309b89] [data-popover-trigger]:focus{background-color:#f3f4f6!important;border-color:#c7d2fe!important;outline:none!important}[data-v-63309b89] [data-popover-trigger][aria-expanded=true]{background-color:#fff!important;border-color:#2563eb!important;box-shadow:0 0 0 4px #2563eb1f!important}[data-v-df90fbac] .hide-add-btn button.rounded-full{display:none!important}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { x as e, A as t, z as r, r as i, y as l, w as p, t as m, v as o, r as S, B as d, a as f, b as g, c as n, d as C, e as c } from "./index-DtOSF_ba.js";
1
+ import { x as e, A as t, z as r, r as i, y as l, w as p, t as m, v as o, r as S, B as d, a as f, b as g, c as n, d as C, e as c } from "./index-fOtblnh3.js";
2
2
  export {
3
3
  e as CartoCSS,
4
4
  t as Classifiers,
@@ -2,7 +2,7 @@
2
2
  `)});return}const m=await fetch("/api/table/"+a.value,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o.value)});if(!m.ok){ye.notify({type:"error",title:"Error",message:`Error code: ${m.status}`});return}await m.json(),ye.notify({title:"Success!",message:"Object created."}),i.back()}return e.onMounted(async()=>{const f=c.entityKey||String(s.name??"").split("-")[0],m=await fetch(`/api/form/gis.${f}.table`).then(h=>h.json());a.value=m.token,g.value=m.id,r.value=m.schema,document.title=y.value}),(f,m)=>{const h=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Yt,{variant:"form"},e.createSlots({breadcrumbs:e.withCtx(()=>[x.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(h,{to:x.value,class:"text-gray-500 hover:text-gray-700"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value),1)]),_:1},8,["to"]),e.createElementVNode("span",Rf,[e.createVNode(e.unref(ce.LucideChevronRight),{size:16,class:"shrink-0"})])],64)):e.createCommentVNode("",!0),m[2]||(m[2]=e.createElementVNode("span",{class:"text-gray-900 font-semibold"},"Створення",-1))]),title:e.withCtx(()=>[e.createElementVNode("div",Of,[e.createElementVNode("button",{type:"button",class:"p-0 m-0 border-0 bg-transparent cursor-pointer text-inherit hover:opacity-80",onClick:u,"aria-label":"Назад"},[e.createVNode(e.unref(ce.ArrowLeft),{size:20,class:"shrink-0"})]),e.createElementVNode("span",null,e.toDisplayString(l.value||"Створення"),1)])]),actions:e.withCtx(()=>[e.createElementVNode("button",{class:"cursor-pointer flex items-center px-3 py-2 text-sm font-medium text-gray-800 duration-300 bg-white border border-gray-100 rounded-lg shadow gap-x-2 focus:outline-none hover:bg-gray-50 hover:border-gray-100",onClick:u}," Назад "),e.createElementVNode("button",{onClick:b,class:"cursor-pointer inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 hover:bg-blue-700 border border-transparent rounded-lg gap-x-2 hover:text-white"}," Зберегти ")]),_:2},[d.value?{name:"description",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),key:"0"}:void 0]),1024),e.createElementVNode("div",Uf,[e.createElementVNode("div",qf,[e.createElementVNode("div",Hf,[e.createElementVNode("div",Wf,[r.value?(e.openBlock(),e.createBlock(e.unref(n),{key:0,values:o.value,"onUpdate:values":m[0]||(m[0]=k=>o.value=k),form:p.value,"onUpdate:form":m[1]||(m[1]=k=>p.value=k),schema:r.value,style:{primaryColor:"blue"},formId:g.value},null,8,["values","form","schema","formId"])):e.createCommentVNode("",!0)])])])])],64)}}})},Symbol.toStringTag,{value:"Module"})),Yf={class:"mx-1"},Zf={class:"mx-1"},Gf={class:"flex items-center gap-2 mt-[0.4rem]"},Kf={class:"flex-1 px-4 sm:px-6 pb-4 overflow-y-auto"},Xf={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden"},Qf={class:"w-full relative overflow-auto p-5 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar:horizontal]:h-[8px] [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500"},Jf={class:"vs-form w-full"},pn=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"EntityEditPage",props:{entityKey:{default:""}},setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.ref({}),r=e.ref(null),a=e.ref(null),i=e.ref({}),s=e.ref(""),c=Fe.useRoute(),p=Fe.useRouter(),x=t.entityKey||String(c.name??"").split("-")[0],{id:l}=c.params,y=e.computed(()=>c.path.replace(/\/edit\/[^/]+$/,"").replace(/\/[^/]+\/edit$/,"")),d=e.computed(()=>l?`${y.value}/${l}`:y.value||"/"),u=e.computed(()=>{var h;return((h=p.resolve(y.value).meta)==null?void 0:h.title)??""}),b=e.computed(()=>{var h;return((h=c.meta)==null?void 0:h.description)??""});function f(){p.push(y.value||"/")}async function m(){const h=i.value.validate();if(h){ye.notify({type:"warning",title:"Validation",message:Object.entries(h).map(([N,$])=>`${N}: ${$}`).join(`
3
3
  `)});return}if(!a.value){ye.notify({type:"error",title:"Error",message:"Edit token is missing."});return}const k=await fetch(`/api/table/${a.value}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(o.value)});if(!k.ok){ye.notify({type:"error",title:"Error",message:`Error code: ${k.status}`});return}await k.json(),ye.notify({title:"Success!",message:"Your changes have been saved."}),p.back()}return e.onMounted(async()=>{const h=await fetch(`/api/form/gis.${x}.table/${l}`).then(N=>N.json());o.value=h.data,a.value=h.token,r.value=h.schema;const k=h.data;s.value=(k==null?void 0:k.name)||(k==null?void 0:k.title)||(k==null?void 0:k.register_key)||(k==null?void 0:k.map_key)||""}),(h,k)=>{const N=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Yt,{variant:"form"},e.createSlots({breadcrumbs:e.withCtx(()=>[y.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(N,{to:y.value,class:"text-gray-500 hover:text-gray-700"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value),1)]),_:1},8,["to"]),e.createElementVNode("span",Yf,[e.createVNode(e.unref(ce.LucideChevronRight),{size:16,class:"shrink-0"})])],64)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(N,{to:d.value,class:"text-gray-500 hover:text-gray-700"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1},8,["to"]),e.createElementVNode("span",Zf,[e.createVNode(e.unref(ce.LucideChevronRight),{size:16,class:"shrink-0"})])],64)):e.createCommentVNode("",!0),k[2]||(k[2]=e.createElementVNode("span",{class:"text-gray-900 font-semibold"},"Редагування",-1))]),title:e.withCtx(()=>[e.createElementVNode("div",Gf,[e.createElementVNode("button",{type:"button",class:"p-0 m-0 border-0 bg-transparent cursor-pointer text-inherit hover:opacity-80",onClick:f,"aria-label":"Назад"},[e.createVNode(e.unref(ce.ArrowLeft),{size:20,class:"shrink-0"})]),e.createElementVNode("span",null,e.toDisplayString(s.value||u.value||"Редагування"),1)])]),actions:e.withCtx(()=>[e.createElementVNode("button",{class:"cursor-pointer flex items-center px-3 py-2 text-sm font-medium text-gray-800 duration-300 bg-white border border-gray-100 rounded-lg shadow gap-x-2 focus:outline-none hover:bg-gray-50 hover:border-gray-100",onClick:f}," Назад "),e.createElementVNode("button",{onClick:m,class:"cursor-pointer inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 hover:bg-blue-700 border border-transparent rounded-lg gap-x-2 hover:text-white"}," Зберегти ")]),_:2},[b.value?{name:"description",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.value),1)]),key:"0"}:void 0]),1024),e.createElementVNode("div",Kf,[e.createElementVNode("div",Xf,[e.createElementVNode("div",Qf,[e.createElementVNode("div",Jf,[r.value?(e.openBlock(),e.createBlock(e.unref(n),{key:0,schema:r.value,values:o.value,"onUpdate:values":k[0]||(k[0]=$=>o.value=$),form:i.value,"onUpdate:form":k[1]||(k[1]=$=>i.value=$),style:{primaryColor:"blue"}},null,8,["schema","values","form"])):e.createCommentVNode("",!0)])])])])],64)}}})},Symbol.toStringTag,{value:"Module"})),eg={class:"flex items-center justify-center col-span-3 gap-2"},tg={class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},ng=e.defineComponent({__name:"vs-datatable-controls",props:e.mergeModels({index:{},data:{},scheme:{}},{columns:{type:Array,default:()=>[]},columnsModifiers:{}}),emits:["update:columns"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.defineAsyncComponent(()=>import("@opengis/core").then(x=>x.VsModal)),r=t,a=e.useModel(t,"columns"),i=e.ref(!1),s=e.ref({}),c=e.ref({...r.data||{}});e.watch(()=>r.data,x=>{c.value={...x||{}}},{deep:!0});const p=()=>a.value=a.value.filter((x,l)=>l!==r.index),g=async()=>{const x=s.value.validate();if(x){ye.notify({type:"warning",title:"Validation",message:Object.entries(x).map(([l,y])=>`${l}: ${y}`).join(`
4
4
  `)});return}a.value[r.index]=c.value,i.value=!1};return(x,l)=>(e.openBlock(),e.createElementBlock("div",eg,[e.createElementVNode("button",{onClick:l[0]||(l[0]=y=>{i.value=!0}),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground h-8 w-8 rounded-full hover:bg-gray-100"},[e.createVNode(e.unref(ce.Edit),{class:"w-4 h-4"})]),e.createElementVNode("button",{onClick:p,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 h-8 w-8 rounded-full hover:bg-red-100 text-red-600 hover:text-red-700"},[e.createVNode(e.unref(ce.Trash),{class:"w-4 h-4"})]),e.createVNode(e.unref(o),{teleport:"#modal",size:"lg",visible:i.value,"onUpdate:visible":l[4]||(l[4]=y=>i.value=y),title:"Редагувати поле"},{footer:e.withCtx(()=>[e.createElementVNode("div",tg,[e.createElementVNode("button",{type:"button",class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-black border border-gray-200 rounded-lg hover:bg-gray-100 duration-300",onClick:l[3]||(l[3]=y=>i.value=!1)}," Скасувати "),e.createElementVNode("button",{class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300",onClick:g}," Зберегти ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(n),{values:c.value,"onUpdate:values":l[1]||(l[1]=y=>c.value=y),schema:t.scheme,form:s.value,"onUpdate:form":l[2]||(l[2]=y=>s.value=y)},null,8,["values","schema","form"])]),_:1},8,["visible"])]))}}),og={mounted(t){setTimeout(()=>{t.scrollWidth>t.clientWidth?t.setAttribute("title",t.textContent):t.removeAttribute("title")})},updated(t){setTimeout(()=>{t.scrollWidth>t.clientWidth?t.setAttribute("title",t.textContent):t.removeAttribute("title")})}},rg={array:"purple",boolean:"red",date:"red",datetime:"purple",number:"green",text:"blue",file:"yellow",select:"yellow",slug:"green",image:"blue",badge:"orange",title:"blue",features:"green",status:"red",tags:"yellow",category:"purple",check:"green",range:"orange",autocomplete:"yellow",other:"gray","yes/no":"green"},cr=t=>rg[t==null?void 0:t.toLowerCase()]||"gray",lg=["array","boolean","date","datetime","number","text","file","select","slug","image","badge","title","features","status","tags","category","check","range","autocomplete"],dr=t=>{var n;return lg.includes((n=t||"")==null?void 0:n.toLowerCase())},ag={},sg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-type",__v0_r:"0,5361,5384"};function ig(t,n){return e.openBlock(),e.createElementBlock("svg",sg,[...n[0]||(n[0]=[e.createElementVNode("polyline",{points:"4 7 4 4 20 4 20 7"},null,-1),e.createElementVNode("line",{x1:"9",x2:"15",y1:"20",y2:"20"},null,-1),e.createElementVNode("line",{x1:"12",x2:"12",y1:"4",y2:"20"},null,-1)])])}const cg=Ce(ag,[["render",ig]]),dg={},ug={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-hash",__v0_r:"0,5361,5384"};function pg(t,n){return e.openBlock(),e.createElementBlock("svg",ug,[...n[0]||(n[0]=[e.createElementVNode("line",{x1:"4",x2:"20",y1:"9",y2:"9"},null,-1),e.createElementVNode("line",{x1:"4",x2:"20",y1:"15",y2:"15"},null,-1),e.createElementVNode("line",{x1:"10",x2:"8",y1:"3",y2:"21"},null,-1),e.createElementVNode("line",{x1:"16",x2:"14",y1:"3",y2:"21"},null,-1)])])}const mg=Ce(dg,[["render",pg]]),fg={},gg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function yg(t,n){return e.openBlock(),e.createElementBlock("svg",gg,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M8 2v4"},null,-1),e.createElementVNode("path",{d:"M16 2v4"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"4",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 10h18"},null,-1)])])}const hg=Ce(fg,[["render",yg]]),xg={},bg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-calendar",__v0_r:"0,5361,5384"};function kg(t,n){return e.openBlock(),e.createElementBlock("svg",bg,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M8 2v4"},null,-1),e.createElementVNode("path",{d:"M16 2v4"},null,-1),e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"4",rx:"2"},null,-1),e.createElementVNode("path",{d:"M3 10h18"},null,-1)])])}const wg=Ce(xg,[["render",kg]]),_g={},Eg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-code",__v0_r:"0,5361,5384"};function Cg(t,n){return e.openBlock(),e.createElementBlock("svg",Eg,[...n[0]||(n[0]=[e.createElementVNode("polyline",{points:"16 18 22 12 16 6"},null,-1),e.createElementVNode("polyline",{points:"8 6 2 12 8 18"},null,-1)])])}const Ng=Ce(_g,[["render",Cg]]),Vg={},Bg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-toggle-left",__v0_r:"0,5361,5384"};function $g(t,n){return e.openBlock(),e.createElementBlock("svg",Bg,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6"},null,-1),e.createElementVNode("circle",{cx:"8",cy:"12",r:"2"},null,-1)])])}const Sg=Ce(Vg,[["render",$g]]),vg={},Lg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-file-text",__v0_r:"0,5361,5384"};function Ag(t,n){return e.openBlock(),e.createElementBlock("svg",Lg,[...n[0]||(n[0]=[e.createStaticVNode('<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path>',5)])])}const Tg=Ce(vg,[["render",Ag]]),Mg={},Fg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-image",__v0_r:"0,5361,5384"};function Dg(t,n){return e.openBlock(),e.createElementBlock("svg",Fg,[...n[0]||(n[0]=[e.createElementVNode("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),e.createElementVNode("circle",{cx:"9",cy:"9",r:"2"},null,-1),e.createElementVNode("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])])}const zg=Ce(Mg,[["render",Dg]]),Ig={},Pg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function jg(t,n){return e.openBlock(),e.createElementBlock("svg",Pg,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Rg=Ce(Ig,[["render",jg]]),Og={},Ug={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function qg(t,n){return e.openBlock(),e.createElementBlock("svg",Ug,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Hg=Ce(Og,[["render",qg]]),Wg={},Yg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-link2",__v0_r:"0,5361,5384"};function Zg(t,n){return e.openBlock(),e.createElementBlock("svg",Yg,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M9 17H7A5 5 0 0 1 7 7h2"},null,-1),e.createElementVNode("path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"},null,-1),e.createElementVNode("line",{x1:"8",x2:"16",y1:"12",y2:"12"},null,-1)])])}const Gg=Ce(Wg,[["render",Zg]]),Kg={},Xg={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function Qg(t,n){return e.openBlock(),e.createElementBlock("svg",Xg,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const Jg=Ce(Kg,[["render",Qg]]),ey={},ty={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-link2",__v0_r:"0,5361,5384"};function ny(t,n){return e.openBlock(),e.createElementBlock("svg",ty,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M9 17H7A5 5 0 0 1 7 7h2"},null,-1),e.createElementVNode("path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"},null,-1),e.createElementVNode("line",{x1:"8",x2:"16",y1:"12",y2:"12"},null,-1)])])}const oy=Ce(ey,[["render",ny]]),ry={},ly={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4 text-gray-700 lucide lucide-list",__v0_r:"0,5361,5384"};function ay(t,n){return e.openBlock(),e.createElementBlock("svg",ly,[...n[0]||(n[0]=[e.createStaticVNode('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>',6)])])}const sy=Ce(ry,[["render",ay]]),iy={},cy={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",height:"800px",width:"800px",version:"1.1",id:"_x32_",viewBox:"0 0 512 512","xml:space":"preserve"};function dy(t,n){return e.openBlock(),e.createElementBlock("svg",cy,[...n[0]||(n[0]=[e.createElementVNode("g",null,[e.createElementVNode("path",{class:"st0",d:"M511.989,292.396c0.021-16.486-6.344-33.136-18.945-45.703L273.605,27.242 C262.3,15.936,247.175,9.22,231.184,8.407L66.821,0.032l1.184,0.066C66.974,0.044,65.866,0,64.67,0 C47.58,0,31.105,6.783,18.944,18.955C6.783,31.106-0.001,47.58,0.011,64.67c0,1.076,0.034,2.172,0.078,3.27l8.297,163.254 c0.835,15.981,7.54,31.106,18.857,42.421l219.451,219.451c12.578,12.589,29.217,18.955,45.703,18.934 c16.496,0.021,33.124-6.356,45.703-18.934l154.956-154.945l-11.92-11.92l11.932,11.909 C505.645,325.521,512.011,308.881,511.989,292.396z M314.26,469.216c-6.08,6.08-13.895,9.044-21.864,9.067 c-7.969-0.023-15.783-2.986-21.864-9.067L51.082,249.765c-5.4-5.4-8.616-12.633-9.023-20.305L33.762,66.238l-0.034-1.569 c0-8.188,3.238-16.048,9.055-21.875c5.839-5.839,13.697-9.077,21.886-9.077l1.502,0.044l163.288,8.319 c7.683,0.396,14.904,3.6,20.305,9.012l219.45,219.45c6.059,6.069,9.033,13.884,9.056,21.853 c-0.023,7.968-2.986,15.794-9.067,21.886h0.011L314.26,469.216z"}),e.createElementVNode("path",{class:"st0",d:"M105.632,105.642c-15.366,15.378-15.366,40.27,0,55.636c15.366,15.366,40.259,15.366,55.625,0 c15.366-15.366,15.366-40.259,0-55.636C145.891,90.276,120.998,90.276,105.632,105.642z"})],-1)])])}const uy=Ce(iy,[["render",dy]]),py={},my={xmlns:"http://www.w3.org/2000/svg",width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none"};function fy(t,n){return e.openBlock(),e.createElementBlock("svg",my,[...n[0]||(n[0]=[e.createElementVNode("path",{d:"M3 12C3 4.5885 4.5885 3 12 3C19.4115 3 21 4.5885 21 12C21 19.4115 19.4115 21 12 21C4.5885 21 3 19.4115 3 12Z",stroke:"#323232","stroke-width":"2"},null,-1),e.createElementVNode("path",{d:"M9 12L10.6828 13.6828V13.6828C10.858 13.858 11.142 13.858 11.3172 13.6828V13.6828L15 10",stroke:"#323232","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])}const ur={IconText:cg,IconNumber:mg,IconDate:hg,IconDatetime:wg,IconRichtext:Ng,IconBoolean:Sg,IconFile:Tg,IconImage:zg,IconArray:Rg,IconSelect:Hg,IconSlug:Gg,IconDatalist:Jg,IconReference:oy,IconReferenceList:sy,IconBadge:uy,IconCheck:Ce(py,[["render",fy]])},gy={key:0,class:"flex items-center justify-between mb-6"},yy={class:"flex justify-end w-full"},hy={class:"overflow-hidden bg-white border border-gray-200 shadow-sm rounded-xl flex flex-col flex-1 min-h-0"},xy={class:"table-scroll-wrapper flex-1 overflow-y-auto min-h-0"},by={class:"table-fixed w-full text-[13px]"},ky={class:"bg-gray-50 border-b border-gray-200"},wy={key:0},_y=["onDragstart","onDragover","onDrop"],Ey={key:0,class:"flex w-fit items-center gap-2 text-left"},Cy={class:"flex-1 min-w-0"},Ny={class:"font-medium text-gray-900 truncate"},Vy={class:"text-xs text-gray-500"},By={key:1,class:"flex items-center justify-center"},$y={key:0,class:"inline-flex items-center px-2 py-1 h-fit text-[13px] font-medium rounded-md ring-1 ring-inset ring-gray-500/10 bg-gray-100"},Sy={key:1,class:"text-gray-500 text-sm"},vy={key:3},Ly={class:"px-6 py-4"},Ay={key:1},Ty=["colspan"],At=Ce(e.defineComponent({__name:"vs-datatable",props:e.mergeModels({columnsScheme:{},formScheme:{},addButton:{type:Boolean,default:!0},mainColWidth:{default:""}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(t,{expose:n}){function o(E){return E.charAt(0).toUpperCase()+E.slice(1)}const r=e.defineAsyncComponent(()=>import("@opengis/core").then(E=>E.VsModal)),a=e.defineAsyncComponent(()=>import("@opengis/form")),i=e.useModel(t,"modelValue"),s=t,c=e.ref({}),p=e.ref(!1),g=e.ref({}),x=e.ref(null),l=e.useSlots(),y=E=>!!(E&&l[E]);n({openCreateDialog:()=>{p.value=!0}});const d=e.computed({get(){return Array.isArray(i.value)?i.value:i.value&&Array.isArray(i.value.columns)?i.value.columns:[]},set(E){Array.isArray(i.value)?i.value=E:i.value&&Array.isArray(i.value.columns)&&(i.value.columns=E)}}),u=e.computed(()=>{const E=s.columnsScheme.map(w=>w.key);return E.includes("name")&&E.includes("label")||E.includes("id")&&E.includes("label")?[{key:"main",label:"Назва",type:"main",width:"100%"},...s.columnsScheme.filter(w=>!["name","id","label"].includes(w.key))]:s.columnsScheme});function b(){p.value=!1,g.value={},x.value=null}async function f(){const E=c.value.validate();if(E){ye.notify({type:"warning",title:"Validation",message:Object.entries(E).map(([w,S])=>`${w}: ${S}`).join(`
5
- `)});return}if(x.value===null)d.value=[...d.value,{...g.value}];else{const w=[...d.value];w[x.value]={...g.value},d.value=w}b()}const m=e.ref(null),h=e.ref(null),k=E=>{m.value=E},N=E=>{h.value=E},$=E=>{if(m.value===null||m.value===E){m.value=null,h.value=null;return}const w=[...d.value],[S]=w.splice(m.value,1);w.splice(E,0,S),d.value=w,m.value=null,h.value=null};return(E,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",gy,[e.createElementVNode("div",yy,[e.createElementVNode("button",{onClick:w[0]||(w[0]=S=>p.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...w[4]||(w[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Додати поле ",-1)])])])])):e.createCommentVNode("",!0),e.createElementVNode("div",hy,[e.createElementVNode("div",xy,[e.createElementVNode("table",by,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,S=>(e.openBlock(),e.createElementBlock("col",{key:S.key,style:e.normalizeStyle(S.type==="main"?`width: ${t.mainColWidth}`:S.width?`width: ${S.width}`:"auto")},null,4))),128)),w[5]||(w[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",ky,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,S=>(e.openBlock(),e.createElementBlock("th",{key:S.key,class:"px-6 py-4"},e.toDisplayString(S.label),1))),128)),w[6]||(w[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(),e.createElementBlock("tbody",wy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(S,A)=>(e.openBlock(),e.createElementBlock("tr",{key:S.id||S.name||A,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":m.value===A,"border-t-2 border-b-2 border-blue-500 bg-blue-50":h.value===A}]),draggable:"true",onDragstart:R=>k(A),onDragover:e.withModifiers(R=>N(A),["prevent"]),onDrop:R=>$(A)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,R=>(e.openBlock(),e.createElementBlock("td",{key:R.key,class:"px-6 py-4 align-middle text-center"},[R.type==="main"?(e.openBlock(),e.createElementBlock("div",Ey,[w[7]||(w[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(dr)(S.format==="yes/no"?"check":S.format||S.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(cr)(S.format==="yes/no"?"check":S.format||S.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.format==="yes/no"?"icon-check":e.unref(ur)["Icon"+o(S.format||S.type)]||e.unref(ur).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Cy,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Ny,[e.createTextVNode(e.toDisplayString(S.name||S.id),1)])),[[e.unref(og)]]),e.createElementVNode("p",Vy,e.toDisplayString(S.ua||S.label||S.name||S.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[R.slot&&y(R.slot)?e.renderSlot(E.$slots,R.slot,{key:0,row:S,column:R,value:S[R.key],rowIndex:A},void 0,!0):R.type==="color"?(e.openBlock(),e.createElementBlock("div",By,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${S[R.key]}]`])},null,2)])):["format","type","meta"].includes(R.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[S[R.key]?(e.openBlock(),e.createElementBlock("span",$y,e.toDisplayString(S[R.key]),1)):(e.openBlock(),e.createElementBlock("span",Sy,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",vy,e.toDisplayString(S[R.key]),1))],64))]))),128)),e.createElementVNode("td",Ly,[e.createVNode(ng,{columns:d.value,"onUpdate:columns":w[1]||(w[1]=R=>d.value=R),data:S,index:A,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,_y))),128))])):(e.openBlock(),e.createElementBlock("tr",Ay,[e.createElementVNode("td",{colspan:u.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Ty)]))])])]),e.createVNode(e.unref(r),{teleport:"#modal",title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":w[3]||(w[3]=S=>p.value=S)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:b,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:f,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(a),{ref_key:"form",ref:c,modelValue:g.value,"onUpdate:modelValue":w[2]||(w[2]=S=>g.value=S),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-25566600"]]),My={class:"p-4 text-[13px]"},Fy={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Dy=["id","checked","onChange"],zy={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Iy={class:"font-medium text-gray-900 truncate"},Py={class:"text-xs text-gray-500"},jy={key:0,class:"text-xs text-[#B2C9D6]"},Ry={class:"flex justify-end gap-2 p-4 border-t w-full"},Zt=e.defineComponent({__name:"import-fields-dialog",props:e.mergeModels({fields:{default:()=>[]},title:{},idPrefix:{default:"import"},confirmText:{default:"Імпортувати"},cancelText:{default:"Скасувати"}},{visible:{type:Boolean,default:!1},visibleModifiers:{},selection:{default:[]},selectionModifiers:{}}),emits:e.mergeModels(["confirm","cancel"],["update:visible","update:selection"]),setup(t,{emit:n}){const o=e.useModel(t,"visible"),r=e.useModel(t,"selection"),a=t,i=n,s=e.defineAsyncComponent(()=>import("@opengis/core").then(k=>k.VsModal)),c=e.computed(()=>Array.isArray(a.fields)?a.fields.filter(Boolean):[]),p=k=>(k==null?void 0:k.name)??(k==null?void 0:k.id)??(k==null?void 0:k.key)??(k==null?void 0:k.code)??(k==null?void 0:k.field)??(k==null?void 0:k.value)??"",g=k=>String(p(k)??"").trim(),x=k=>(k==null?void 0:k.title)??(k==null?void 0:k.label)??g(k),l=k=>String((k==null?void 0:k.type)??"").trim(),y=e.computed(()=>new Set(r.value.map(k=>String(k??"").trim()))),d=k=>y.value.has(g(k)),u=k=>{const N=g(k);if(!N)return;const $=new Set(y.value);$.has(N)?$.delete(N):$.add(N),r.value=Array.from($)},b=e.computed(()=>a.confirmText||"Імпортувати"),f=e.computed(()=>a.cancelText||"Скасувати"),m=()=>{o.value=!1,i("cancel")},h=()=>{i("confirm"),o.value=!1};return(k,N)=>(e.openBlock(),e.createBlock(e.unref(s),{visible:o.value,"onUpdate:visible":N[0]||(N[0]=$=>o.value=$),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Ry,[e.createElementVNode("button",{onClick:m,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(f.value),1),e.createElementVNode("button",{onClick:h,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(b.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",My,[e.createElementVNode("div",Fy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,$=>(e.openBlock(),e.createElementBlock("label",{key:g($),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${g($)}`,checked:d($),onChange:E=>u($)},null,40,Dy),e.createElementVNode("div",zy,[e.unref(dr)($.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(cr)($.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${$.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Iy,e.toDisplayString(g($)),1),e.createElementVNode("p",Py,e.toDisplayString(x($)),1),l($)?(e.openBlock(),e.createElementBlock("p",jy,e.toDisplayString(l($)),1)):e.createCommentVNode("",!0)])])]))),128))])])]),_:1},8,["visible","title"]))}});function Gt(t){return t==null?"":String(t).trim()}function Tt(t){return Gt((t==null?void 0:t.name)??(t==null?void 0:t.id)??(t==null?void 0:t.key)??(t==null?void 0:t.code)??(t==null?void 0:t.field)??(t==null?void 0:t.value)??"")}function Kt(t,n,o){const r=Array.isArray(t)?[...t]:[],a=Array.isArray(n)?n:[],{selectedKeys:i,resolveKey:s}=o,c=new Set;for(const l of i){const y=Gt(l);y&&c.add(y)}if(c.size===0)return[];const p=l=>Gt(s(l)),g=[],x=new Set;for(const l of r){const y=p(l);!y||!c.has(y)||(g.push(l),x.add(y))}for(const l of a){const y=p(l);!y||x.has(y)||!c.has(y)||(g.push(l),x.add(y))}return g}const Oy={class:"vs-form"},Uy={class:"vs-form__body auto-rows-max container"},qy={class:"flex flex-wrap"},Hy={class:"h-fit w-full mb-6 bg-white border border-gray-200 rounded-lg p-6"},Wy={class:"h-fit w-full flex flex-wrap"},Yy={class:"w-full"},Zy=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,a=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=h=>Tt(h||{}),s=e.defineAsyncComponent(()=>import("@opengis/form")),c=e.ref(),p=e.ref(!1),g=e.ref([]),x=()=>{const h=y.value.map(k=>i(k)).filter(k=>k.length>0);g.value=[...h],p.value=!0},l=e.computed(()=>{var h,k;return((h=n.value)==null?void 0:h.token)||((k=n.value)==null?void 0:k.id)||"register-form"}),y=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:h=>{n.value||(n.value={}),n.value.columns=Array.isArray(h)?h:[]}}),d=e.computed({get:()=>n.value||{},set:h=>{var N;const k=Array.isArray((N=n.value)==null?void 0:N.columns)?n.value.columns:[];n.value={...n.value,...h,columns:k}}});e.watch(()=>c.value,h=>{o.value=h||null},{immediate:!0}),e.watch(p,h=>{h||(g.value=[])});const u=()=>{const h=new Set(g.value.map($=>Gt($)).filter($=>$.length>0)),k=Array.isArray(y.value)?[...y.value]:[],N=a.value.filter($=>h.has(i($))).map($=>{const E=i($),w=$.title??$.label??E;return{...$,name:E,label:w,type:$.type||"text",meta:$.meta??"features"}});y.value=Kt(k,N,{selectedKeys:g.value,resolveKey:i}),p.value=!1,g.value=[]},b={table_name:{type:"select",label:"Таблиця",required:!0,data:"pg.table_name",placeholder:"Таблиця в БД",validators:["required"],col:6},name:{type:"text",label:"Назва",required:!0,placeholder:"Назва",validators:["required"],col:6},query:{type:"text",label:"Умова",placeholder:"Умова",col:6},order:{type:"text",label:"Сортування",placeholder:"Сортування",col:6},description:{type:"textarea",label:"Опис",placeholder:"Опис",col:12}},f=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"meta",label:"Мета",type:"text"}],m={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},ua:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},is_export:{type:"switcher",label:"Експорт",info:"Чи експортувати дані колонки?",view:"switcher"},meta:{type:"combobox",label:"Мета",mode:"combo",options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]},data:{type:"select",label:"Класифікатор",data:"admin.cls.name",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(h,k)=>(e.openBlock(),e.createElementBlock("div",Oy,[e.createElementVNode("div",Uy,[e.createElementVNode("div",qy,[e.createElementVNode("div",Hy,[(e.openBlock(),e.createBlock(e.unref(s),{ref_key:"formEl",ref:c,key:l.value,schema:b,modelValue:d.value,"onUpdate:modelValue":k[0]||(k[0]=N=>d.value=N)},null,8,["modelValue"]))]),e.createElementVNode("div",Wy,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:x,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...k[4]||(k[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Yy,[e.createVNode(At,{modelValue:y.value,"onUpdate:modelValue":k[1]||(k[1]=N=>y.value=N),"columns-scheme":f,"form-scheme":m,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Zt,{visible:p.value,"onUpdate:visible":k[2]||(k[2]=N=>p.value=N),selection:g.value,"onUpdate:selection":k[3]||(k[3]=N=>g.value=N),fields:a.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),Gy={class:"vs-form"},Ky={class:"vs-form__body auto-rows-max container"},Xy={class:"flex flex-wrap"},Qy={class:"h-fit w-full flex flex-wrap"},Jy={class:"w-full"},eh=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,a=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>Tt(d||{}),s=e.ref(!1),c=e.ref([]),p=()=>{const d=g.value.map(u=>i(u)).filter(u=>u.length>0);c.value=[...d],s.value=!0},g=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:d=>{n.value||(n.value={}),n.value.filters=Array.isArray(d)?d:[]}});e.watch(s,d=>{d||(c.value=[])});const x=()=>{const d=new Set(c.value.map(f=>Gt(f)).filter(f=>f.length>0)),u=Array.isArray(g.value)?[...g.value]:[],b=a.value.filter(f=>d.has(i(f))).map(f=>({name:i(f),label:f.title??f.label??i(f),type:f.type||"text"}));g.value=Kt(u,b,{selectedKeys:c.value,resolveKey:i}),s.value=!1,c.value=[]},l=[{key:"id",label:"Name"},{key:"label",label:"Назва"},{key:"type",label:"Тип"}],y={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},ua:{type:"text",label:"Назва",validators:["required"]},type:{type:"radio",label:"Тип",validators:["required"],position:"horizontal",options:[{text:"Check",id:"Check"},{text:"Range",id:"Range"},{text:"Date",id:"Date"},{text:"Text",id:"Text"},{text:"Select",id:"Select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"select",label:"Класифікатор",data:"admin.cls.name",conditions:["type","in",["select","autocomplete","check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,u)=>(e.openBlock(),e.createElementBlock("div",Gy,[e.createElementVNode("div",Ky,[e.createElementVNode("div",Xy,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте фільтри реєстру. Оберіть поля для імпорту або відредагуйте властивості вручну. ")],-1)),e.createElementVNode("div",Qy,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Jy,[e.createVNode(At,{modelValue:g.value,"onUpdate:modelValue":u[0]||(u[0]=b=>g.value=b),"columns-scheme":l,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Zt,{visible:s.value,"onUpdate:visible":u[1]||(u[1]=b=>s.value=b),selection:c.value,"onUpdate:selection":u[2]||(u[2]=b=>c.value=b),fields:a.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:x},null,8,["visible","selection","fields"])]))}}),th={class:"vs-form"},nh={class:"vs-form__body auto-rows-max container"},oh={class:"flex flex-wrap"},rh={class:"h-fit w-full flex flex-wrap"},lh={class:"w-full"},ah=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,a=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>Tt(d||{}),s=e.ref(!1),c=e.ref([]),p=()=>{const d=g.value.map(u=>i(u)).filter(u=>u.length>0);c.value=[...d],s.value=!0},g=e.computed({get:()=>n.value.card,set:d=>{n.value||(n.value={}),n.value.card=Array.isArray(d)?d:[]}});e.watch(s,d=>{var u;if(d){const b=((u=g.value)==null?void 0:u.map(f=>f.name))||[];c.value=[...b]}});const x=()=>{const d=new Set(c.value.map(f=>Gt(f)).filter(f=>f.length>0)),u=Array.isArray(g.value)?[...g.value]:[],b=a.value.filter(f=>d.has(i(f))).map(f=>{const m=i(f),h=f.title??f.label??m;return{...f,name:m,label:h,format:f.format||f.type||"text",meta:f.meta||"title"}});g.value=Kt(u,b,{selectedKeys:c.value,resolveKey:i}),s.value=!1,c.value=[]},l=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"format",label:"Формат",type:"text"}],y={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},ua:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},data:{type:"text",label:"Класифікатор",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,u)=>(e.openBlock(),e.createElementBlock("div",th,[e.createElementVNode("div",nh,[e.createElementVNode("div",oh,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте відображення картки. Оберіть потрібні поля та відредагуйте їхні властивості. ")],-1)),e.createElementVNode("div",rh,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",lh,[e.createVNode(At,{modelValue:g.value,"onUpdate:modelValue":u[0]||(u[0]=b=>g.value=b),"columns-scheme":l,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Zt,{visible:s.value,"onUpdate:visible":u[1]||(u[1]=b=>s.value=b),selection:c.value,"onUpdate:selection":u[2]||(u[2]=b=>c.value=b),fields:a.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:x},null,8,["visible","selection","fields"])]))}}),pr={template1:rr,template2:lr,template3:ar,template4:sr,template5:ir},sh={class:"space-y-4"},ih={class:"flex items-center gap-4 bg-white border border-gray-200 rounded-lg px-6 py-4"},ch={class:"text-lg font-semibold mb-4"},dh={class:"bg-white"},uh={key:1,class:"text-gray-400 text-center py-12"},ph={key:2,class:"text-gray-400 text-center py-12"},mh=e.defineComponent({__name:"preview-tab",props:e.mergeModels({hideDetailsButton:{type:Boolean,default:!1}},{data:{default:{}},dataModifiers:{}}),emits:["update:data"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.useModel(t,"data"),r=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],a={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},i=e.computed(()=>{var x;return Array.isArray((x=o.value)==null?void 0:x.columns)?o.value.columns:[]}),s=e.computed(()=>{var x;return((x=o.value)==null?void 0:x.view)||"template1"}),c=e.computed(()=>pr[s.value]||pr.template1),p=e.computed(()=>{var y;const x=(y=o.value)==null?void 0:y.view;if(!x)return"template1";const l=r.find(d=>d.id===x);return(l==null?void 0:l.text)||x}),g=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(l=>{var y,d;return{...l,service_id:(y=o.value)==null?void 0:y.service_id,is_map:(d=o.value)==null?void 0:d.is_map}}));return(x,l)=>(e.openBlock(),e.createElementBlock("div",sh,[e.createElementVNode("div",ih,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:a,modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=y=>o.value=y)},null,8,["modelValue"]))]),e.createElementVNode("h2",ch," Превʼю таблиці ("+e.toDisplayString(p.value)+") ",1),e.createElementVNode("div",dh,[c.value&&g.value.length&&i.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{items:g.value,columns:i.value,path:"#",id_key:"id","hide-details-button":t.hideDetailsButton,key:s.value},null,8,["items","columns","hide-details-button"])):g.value.length?(e.openBlock(),e.createElementBlock("div",ph," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",uh," Немає даних для превʼю "))])]))}}),fh={class:"w-full mb-6"},gh={class:"flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md"},yh=["onClick"],mr=e.defineComponent({__name:"MapSettingsTabs",props:{tabs:{},activeTab:{}},emits:["update:activeTab"],setup(t,{emit:n}){const o=n,r=a=>{o("update:activeTab",a)};return(a,i)=>(e.openBlock(),e.createElementBlock("div",fh,[e.createElementVNode("div",gh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,s=>(e.openBlock(),e.createElementBlock("button",{key:s.id,onClick:c=>r(s.id),class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all",s.id===t.activeTab?"bg-blue-50 text-blue-700":"text-gray-600 hover:bg-gray-50"])},e.toDisplayString(s.name),11,yh))),128))])]))}}),hh={class:"relative h-full flex flex-col flex-1 min-h-0 overflow-hidden mx-auto w-full"},xh={class:"mx-1"},bh={class:"text-gray-900 font-semibold"},kh={key:0,class:"text-center py-12 mt-6 px-[24px]"},wh={key:1,class:"px-[24px] overflow-y-auto"},_h={class:"space-y-6"},Eh=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"register",props:{hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=Fe.useRoute(),o=Fe.useRouter(),r=e.computed(()=>n.path.replace(/\/[^/]+$/,"")),a=e.computed(()=>{var m;return((m=o.resolve(r.value).meta)==null?void 0:m.title)??""}),i=e.computed(()=>{var m;return((m=y.value)==null?void 0:m.name)||"Налаштування реєстру"}),s=e.ref("list"),c=e.ref(""),p=e.ref(!0),g=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],x={list:Zy,filters:eh,card:ah,preview:mh},l=g.map(m=>m.id),y=e.ref({columns:[],filters:[],card:[],tableData:[]}),d=e.ref([]),u=async()=>{var h;if(!((h=y.value)==null?void 0:h.token)){ye.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const k=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y.value)});if(!k.ok)throw new Error(`Failed to save content: ${k.status}`);ye.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(k){ye.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(k)}},b=async m=>{try{const k=await(await fetch(`/api/gis-registry/${m}`)).json(),N=Array.isArray(k==null?void 0:k.rows)?k.rows:[];y.value.tableData=N.slice(0,3)}catch(h){console.error("Помилка завантаження превʼю:",h)}},f=async()=>{var m,h;try{p.value=!0;const N=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),$=((m=N==null?void 0:N.rows)==null?void 0:m[0])||{};c.value=$.register_key||"",y.value={...$,columns:Array.isArray($.columns)?$.columns:[],filters:Array.isArray($.filters)?$.filters:[],card:Array.isArray($.card)?$.card:[],tableData:Array.isArray($.tableData)?$.tableData:[]},(h=N==null?void 0:N.tokens)!=null&&h.edit&&(y.value.token=N.tokens.edit),d.value=Array.isArray(N==null?void 0:N.fields)?N.fields:[]}catch(k){console.error("Помилка завантаження даних:",k)}finally{p.value=!1}};return e.onMounted(async()=>{const m=n.query.tab;typeof m=="string"&&l.includes(m)&&(s.value=m),await f(),c.value&&await b(c.value)}),e.watch(s,m=>{n.query.tab!==m&&o.replace({query:{...n.query,tab:m}})}),e.watch(()=>n.query.tab,m=>{typeof m=="string"&&l.includes(m)&&s.value!==m&&(s.value=m)}),e.watch(()=>n.params.id,async(m,h)=>{!m||m===h||(await f(),c.value&&await b(c.value))}),(m,h)=>{const k=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",hh,[e.createVNode(Yt,{variant:"form",title:i.value},{breadcrumbs:e.withCtx(()=>[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(k,{to:r.value,class:"text-gray-500 hover:text-gray-700"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.value),1)]),_:1},8,["to"]),e.createElementVNode("span",xh,[e.createVNode(e.unref(ce.LucideChevronRight),{size:16,class:"shrink-0"})])],64)):e.createCommentVNode("",!0),e.createElementVNode("span",bh,e.toDisplayString(i.value),1)]),description:e.withCtx(()=>[...h[3]||(h[3]=[e.createTextVNode("Налаштування реєстру",-1)])]),actions:e.withCtx(()=>[e.createElementVNode("button",{onClick:h[0]||(h[0]=N=>e.unref(o).back()),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium border h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися "),e.createElementVNode("button",{onClick:u,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-white rounded-md text-sm font-medium h-10 px-4 py-2 bg-blue-600 hover:bg-blue-700"}," Зберегти ")]),_:1},8,["title"]),p.value?(e.openBlock(),e.createElementBlock("div",kh,[...h[4]||(h[4]=[e.createElementVNode("p",{class:"text-gray-500"},"Завантаження...",-1)])])):(e.openBlock(),e.createElementBlock("div",wh,[e.createVNode(mr,{tabs:g,activeTab:s.value,"onUpdate:activeTab":h[1]||(h[1]=N=>s.value=N)},null,8,["activeTab"]),e.createElementVNode("div",_h,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x[s.value]),{data:y.value,"onUpdate:data":h[2]||(h[2]=N=>y.value=N),fields:d.value,"hide-details-button":t.hideDetailsButton,key:s.value},null,40,["data","fields","hide-details-button"]))])]))])}}})},Symbol.toStringTag,{value:"Module"}));/*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */function fr(t){return typeof t>"u"||t===null}function Ch(t){return typeof t=="object"&&t!==null}function Nh(t){return Array.isArray(t)?t:fr(t)?[]:[t]}function Vh(t,n){var o,r,a,i;if(n)for(i=Object.keys(n),o=0,r=i.length;o<r;o+=1)a=i[o],t[a]=n[a];return t}function Bh(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function $h(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var Sh=fr,vh=Ch,Lh=Nh,Ah=Bh,Th=$h,Mh=Vh,st={isNothing:Sh,isObject:vh,toArray:Lh,repeat:Ah,isNegativeZero:Th,extend:Mh};function gr(t,n){var o="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(o+='in "'+t.mark.name+'" '),o+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!n&&t.mark.snippet&&(o+=`
5
+ `)});return}if(x.value===null)d.value=[...d.value,{...g.value}];else{const w=[...d.value];w[x.value]={...g.value},d.value=w}b()}const m=e.ref(null),h=e.ref(null),k=E=>{m.value=E},N=E=>{h.value=E},$=E=>{if(m.value===null||m.value===E){m.value=null,h.value=null;return}const w=[...d.value],[S]=w.splice(m.value,1);w.splice(E,0,S),d.value=w,m.value=null,h.value=null};return(E,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.addButton?(e.openBlock(),e.createElementBlock("div",gy,[e.createElementVNode("div",yy,[e.createElementVNode("button",{onClick:w[0]||(w[0]=S=>p.value=!0),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...w[4]||(w[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Додати поле ",-1)])])])])):e.createCommentVNode("",!0),e.createElementVNode("div",hy,[e.createElementVNode("div",xy,[e.createElementVNode("table",by,[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,S=>(e.openBlock(),e.createElementBlock("col",{key:S.key,style:e.normalizeStyle(S.type==="main"?`width: ${t.mainColWidth}`:S.width?`width: ${S.width}`:"auto")},null,4))),128)),w[5]||(w[5]=e.createElementVNode("col",null,null,-1))]),e.createElementVNode("thead",null,[e.createElementVNode("tr",ky,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,S=>(e.openBlock(),e.createElementBlock("th",{key:S.key,class:"px-6 py-4"},e.toDisplayString(S.label),1))),128)),w[6]||(w[6]=e.createElementVNode("th",{class:"px-6 py-4"},"Дії",-1))])]),d.value.length?(e.openBlock(),e.createElementBlock("tbody",wy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(S,A)=>(e.openBlock(),e.createElementBlock("tr",{key:S.id||S.name||A,class:e.normalizeClass(["transition-colors hover:bg-gray-50/50 cursor-move",{"opacity-50":m.value===A,"border-t-2 border-b-2 border-blue-500 bg-blue-50":h.value===A}]),draggable:"true",onDragstart:R=>k(A),onDragover:e.withModifiers(R=>N(A),["prevent"]),onDrop:R=>$(A)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,R=>(e.openBlock(),e.createElementBlock("td",{key:R.key,class:"px-6 py-4 align-middle text-center"},[R.type==="main"?(e.openBlock(),e.createElementBlock("div",Ey,[w[7]||(w[7]=e.createElementVNode("span",{class:"drag-handle cursor-move mr-2 text-gray-400"},"☰",-1)),e.unref(dr)(S.format==="yes/no"?"check":S.format||S.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-center p-1 rounded",`bg-${e.unref(cr)(S.format==="yes/no"?"check":S.format||S.type)}-100`])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.format==="yes/no"?"icon-check":e.unref(ur)["Icon"+o(S.format||S.type)]||e.unref(ur).IconText),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",Cy,[e.withDirectives((e.openBlock(),e.createElementBlock("p",Ny,[e.createTextVNode(e.toDisplayString(S.name||S.id),1)])),[[e.unref(og)]]),e.createElementVNode("p",Vy,e.toDisplayString(S.ua||S.label||S.name||S.id),1)])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[R.slot&&y(R.slot)?e.renderSlot(E.$slots,R.slot,{key:0,row:S,column:R,value:S[R.key],rowIndex:A},void 0,!0):R.type==="color"?(e.openBlock(),e.createElementBlock("div",By,[e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full align-middle",`bg-[${S[R.key]}]`])},null,2)])):["format","type","meta"].includes(R.key)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[S[R.key]?(e.openBlock(),e.createElementBlock("span",$y,e.toDisplayString(S[R.key]),1)):(e.openBlock(),e.createElementBlock("span",Sy,"Не вказано"))],64)):(e.openBlock(),e.createElementBlock("span",vy,e.toDisplayString(S[R.key]),1))],64))]))),128)),e.createElementVNode("td",Ly,[e.createVNode(ng,{columns:d.value,"onUpdate:columns":w[1]||(w[1]=R=>d.value=R),data:S,index:A,scheme:t.formScheme},null,8,["columns","data","index","scheme"])])],42,_y))),128))])):(e.openBlock(),e.createElementBlock("tr",Ay,[e.createElementVNode("td",{colspan:u.value.length+1,class:"text-gray-500 text-center py-4"}," Поля не знайдені ",8,Ty)]))])])]),e.createVNode(e.unref(r),{teleport:"#modal",title:"Створити поле",size:"lg",visible:p.value,"onUpdate:visible":w[3]||(w[3]=S=>p.value=S)},{footer:e.withCtx(()=>[e.createElementVNode("div",{class:"flex justify-end p-[20px] gap-[10px] border-t w-full"},[e.createElementVNode("button",{type:"button",onClick:b,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"}," Скасувати "),e.createElementVNode("button",{type:"button",onClick:f,class:"px-4 py-2 rounded bg-blue-600 text-white"}," Зберегти1 ")])]),default:e.withCtx(()=>[e.createVNode(e.unref(a),{ref_key:"form",ref:c,modelValue:g.value,"onUpdate:modelValue":w[2]||(w[2]=S=>g.value=S),schema:t.formScheme},null,8,["modelValue","schema"])]),_:1},8,["visible"])],64))}}),[["__scopeId","data-v-25566600"]]),My={class:"p-4 text-[13px]"},Fy={class:"grid grid-cols-2 gap-x-6 gap-y-2"},Dy=["id","checked","onChange"],zy={class:"ml-2 flex-1 min-w-0 flex items-center gap-2"},Iy={class:"font-medium text-gray-900 truncate"},Py={class:"text-xs text-gray-500"},jy={key:0,class:"text-xs text-[#B2C9D6]"},Ry={class:"flex justify-end gap-2 p-4 border-t w-full"},Zt=e.defineComponent({__name:"import-fields-dialog",props:e.mergeModels({fields:{default:()=>[]},title:{},idPrefix:{default:"import"},confirmText:{default:"Імпортувати"},cancelText:{default:"Скасувати"}},{visible:{type:Boolean,default:!1},visibleModifiers:{},selection:{default:[]},selectionModifiers:{}}),emits:e.mergeModels(["confirm","cancel"],["update:visible","update:selection"]),setup(t,{emit:n}){const o=e.useModel(t,"visible"),r=e.useModel(t,"selection"),a=t,i=n,s=e.defineAsyncComponent(()=>import("@opengis/core").then(k=>k.VsModal)),c=e.computed(()=>Array.isArray(a.fields)?a.fields.filter(Boolean):[]),p=k=>(k==null?void 0:k.name)??(k==null?void 0:k.id)??(k==null?void 0:k.key)??(k==null?void 0:k.code)??(k==null?void 0:k.field)??(k==null?void 0:k.value)??"",g=k=>String(p(k)??"").trim(),x=k=>(k==null?void 0:k.title)??(k==null?void 0:k.label)??g(k),l=k=>String((k==null?void 0:k.type)??"").trim(),y=e.computed(()=>new Set(r.value.map(k=>String(k??"").trim()))),d=k=>y.value.has(g(k)),u=k=>{const N=g(k);if(!N)return;const $=new Set(y.value);$.has(N)?$.delete(N):$.add(N),r.value=Array.from($)},b=e.computed(()=>a.confirmText||"Імпортувати"),f=e.computed(()=>a.cancelText||"Скасувати"),m=()=>{o.value=!1,i("cancel")},h=()=>{i("confirm"),o.value=!1};return(k,N)=>(e.openBlock(),e.createBlock(e.unref(s),{visible:o.value,"onUpdate:visible":N[0]||(N[0]=$=>o.value=$),teleport:"#modal",title:t.title,size:"lg"},{footer:e.withCtx(()=>[e.createElementVNode("div",Ry,[e.createElementVNode("button",{onClick:m,class:"px-4 py-2 rounded bg-gray-100 text-gray-700"},e.toDisplayString(f.value),1),e.createElementVNode("button",{onClick:h,class:"px-4 py-2 rounded bg-blue-600 text-white"},e.toDisplayString(b.value),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",My,[e.createElementVNode("div",Fy,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,$=>(e.openBlock(),e.createElementBlock("label",{key:g($),class:"flex items-center hover:bg-gray-100 rounded p-2 cursor-pointer"},[e.createElementVNode("input",{type:"checkbox",id:`${t.idPrefix}-${g($)}`,checked:d($),onChange:E=>u($)},null,40,Dy),e.createElementVNode("div",zy,[e.unref(dr)($.type)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`bg-${e.unref(cr)($.type)}-100 p-1 rounded`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`icon-${$.type}`),{class:"w-4 h-4"}))],2)):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createElementVNode("p",Iy,e.toDisplayString(g($)),1),e.createElementVNode("p",Py,e.toDisplayString(x($)),1),l($)?(e.openBlock(),e.createElementBlock("p",jy,e.toDisplayString(l($)),1)):e.createCommentVNode("",!0)])])]))),128))])])]),_:1},8,["visible","title"]))}});function Gt(t){return t==null?"":String(t).trim()}function Tt(t){return Gt((t==null?void 0:t.name)??(t==null?void 0:t.id)??(t==null?void 0:t.key)??(t==null?void 0:t.code)??(t==null?void 0:t.field)??(t==null?void 0:t.value)??"")}function Kt(t,n,o){const r=Array.isArray(t)?[...t]:[],a=Array.isArray(n)?n:[],{selectedKeys:i,resolveKey:s}=o,c=new Set;for(const l of i){const y=Gt(l);y&&c.add(y)}if(c.size===0)return[];const p=l=>Gt(s(l)),g=[],x=new Set;for(const l of r){const y=p(l);!y||!c.has(y)||(g.push(l),x.add(y))}for(const l of a){const y=p(l);!y||x.has(y)||!c.has(y)||(g.push(l),x.add(y))}return g}const Oy={class:"vs-form"},Uy={class:"vs-form__body auto-rows-max container"},qy={class:"flex flex-wrap"},Hy={class:"h-fit w-full mb-6 bg-white border border-gray-200 rounded-lg p-6"},Wy={class:"h-fit w-full flex flex-wrap"},Yy={class:"w-full"},Zy=e.defineComponent({__name:"list-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,a=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=h=>Tt(h||{}),s=e.defineAsyncComponent(()=>import("@opengis/form")),c=e.ref(),p=e.ref(!1),g=e.ref([]),x=()=>{const h=y.value.map(k=>i(k)).filter(k=>k.length>0);g.value=[...h],p.value=!0},l=e.computed(()=>{var h,k;return((h=n.value)==null?void 0:h.token)||((k=n.value)==null?void 0:k.id)||"register-form"}),y=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.columns)||(n.value.columns=[]),n.value.columns),set:h=>{n.value||(n.value={}),n.value.columns=Array.isArray(h)?h:[]}}),d=e.computed({get:()=>n.value||{},set:h=>{var N;const k=Array.isArray((N=n.value)==null?void 0:N.columns)?n.value.columns:[];n.value={...n.value,...h,columns:k}}});e.watch(()=>c.value,h=>{o.value=h||null},{immediate:!0}),e.watch(p,h=>{h||(g.value=[])});const u=()=>{const h=new Set(g.value.map($=>Gt($)).filter($=>$.length>0)),k=Array.isArray(y.value)?[...y.value]:[],N=a.value.filter($=>h.has(i($))).map($=>{const E=i($),w=$.title??$.label??E;return{...$,name:E,label:w,type:$.type||"text",meta:$.meta??"features"}});y.value=Kt(k,N,{selectedKeys:g.value,resolveKey:i}),p.value=!1,g.value=[]},b={table_name:{type:"select",label:"Таблиця",required:!0,data:"pg.table_name",placeholder:"Таблиця в БД",validators:["required"],col:6},name:{type:"text",label:"Назва",required:!0,placeholder:"Назва",validators:["required"],col:6},query:{type:"text",label:"Умова",placeholder:"Умова",col:6},order:{type:"text",label:"Сортування",placeholder:"Сортування",col:6},description:{type:"textarea",label:"Опис",placeholder:"Опис",col:12}},f=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"meta",label:"Мета",type:"text"}],m={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},ua:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},is_export:{type:"switcher",label:"Експорт",info:"Чи експортувати дані колонки?",view:"switcher"},meta:{type:"combobox",label:"Мета",mode:"combo",options:[{text:"Title",id:"title"},{text:"Features",id:"features"},{text:"Status",id:"status"},{text:"Tags",id:"tags"},{text:"Category",id:"category"},{text:"Image",id:"image"}]},data:{type:"select",label:"Класифікатор",data:"admin.cls.name",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(h,k)=>(e.openBlock(),e.createElementBlock("div",Oy,[e.createElementVNode("div",Uy,[e.createElementVNode("div",qy,[e.createElementVNode("div",Hy,[(e.openBlock(),e.createBlock(e.unref(s),{ref_key:"formEl",ref:c,key:l.value,schema:b,modelValue:d.value,"onUpdate:modelValue":k[0]||(k[0]=N=>d.value=N)},null,8,["modelValue"]))]),e.createElementVNode("div",Wy,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:x,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...k[4]||(k[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Yy,[e.createVNode(At,{modelValue:y.value,"onUpdate:modelValue":k[1]||(k[1]=N=>y.value=N),"columns-scheme":f,"form-scheme":m,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Zt,{visible:p.value,"onUpdate:visible":k[2]||(k[2]=N=>p.value=N),selection:g.value,"onUpdate:selection":k[3]||(k[3]=N=>g.value=N),fields:a.value,title:"Імпорт колонок","id-prefix":"import-column",onConfirm:u},null,8,["visible","selection","fields"])]))}}),Gy={class:"vs-form"},Ky={class:"vs-form__body auto-rows-max container"},Xy={class:"flex flex-wrap"},Qy={class:"h-fit w-full flex flex-wrap"},Jy={class:"w-full"},eh=e.defineComponent({__name:"filter-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,a=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>Tt(d||{}),s=e.ref(!1),c=e.ref([]),p=()=>{const d=g.value.map(u=>i(u)).filter(u=>u.length>0);c.value=[...d],s.value=!0},g=e.computed({get:()=>(n.value||(n.value={}),Array.isArray(n.value.filters)||(n.value.filters=[]),n.value.filters),set:d=>{n.value||(n.value={}),n.value.filters=Array.isArray(d)?d:[]}});e.watch(s,d=>{d||(c.value=[])});const x=()=>{const d=new Set(c.value.map(f=>Gt(f)).filter(f=>f.length>0)),u=Array.isArray(g.value)?[...g.value]:[],b=a.value.filter(f=>d.has(i(f))).map(f=>({name:i(f),label:f.title??f.label??i(f),type:f.type||"text"}));g.value=Kt(u,b,{selectedKeys:c.value,resolveKey:i}),s.value=!1,c.value=[]},l=[{key:"id",label:"Name"},{key:"label",label:"Назва"},{key:"type",label:"Тип"}],y={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},ua:{type:"text",label:"Назва",validators:["required"]},type:{type:"radio",label:"Тип",validators:["required"],position:"horizontal",options:[{text:"Check",id:"Check"},{text:"Range",id:"Range"},{text:"Date",id:"Date"},{text:"Text",id:"Text"},{text:"Select",id:"Select"}]},hidden:{label:"Приховати",type:"Switcher"},data:{type:"select",label:"Класифікатор",data:"admin.cls.name",conditions:["type","in",["Select","Autocomplete","Check"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,u)=>(e.openBlock(),e.createElementBlock("div",Gy,[e.createElementVNode("div",Ky,[e.createElementVNode("div",Xy,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте фільтри реєстру. Оберіть поля для імпорту або відредагуйте властивості вручну. ")],-1)),e.createElementVNode("div",Qy,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",Jy,[e.createVNode(At,{modelValue:g.value,"onUpdate:modelValue":u[0]||(u[0]=b=>g.value=b),"columns-scheme":l,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Zt,{visible:s.value,"onUpdate:visible":u[1]||(u[1]=b=>s.value=b),selection:c.value,"onUpdate:selection":u[2]||(u[2]=b=>c.value=b),fields:a.value,title:"Імпорт фільтрів","id-prefix":"import-filter",onConfirm:x},null,8,["visible","selection","fields"])]))}}),th={class:"vs-form"},nh={class:"vs-form__body auto-rows-max container"},oh={class:"flex flex-wrap"},rh={class:"h-fit w-full flex flex-wrap"},lh={class:"w-full"},ah=e.defineComponent({__name:"card-tab",props:e.mergeModels({fields:{}},{data:{default:{}},dataModifiers:{},form:{},formModifiers:{}}),emits:["update:data","update:form"],setup(t){const n=e.useModel(t,"data"),o=e.useModel(t,"form"),r=t,a=e.computed(()=>Array.isArray(r.fields)?r.fields:[]),i=d=>Tt(d||{}),s=e.ref(!1),c=e.ref([]),p=()=>{const d=g.value.map(u=>i(u)).filter(u=>u.length>0);c.value=[...d],s.value=!0},g=e.computed({get:()=>n.value.card,set:d=>{n.value||(n.value={}),n.value.card=Array.isArray(d)?d:[]}});e.watch(s,d=>{var u;if(d){const b=((u=g.value)==null?void 0:u.map(f=>f.name))||[];c.value=[...b]}});const x=()=>{const d=new Set(c.value.map(f=>Gt(f)).filter(f=>f.length>0)),u=Array.isArray(g.value)?[...g.value]:[],b=a.value.filter(f=>d.has(i(f))).map(f=>{const m=i(f),h=f.title??f.label??m;return{...f,name:m,label:h,format:f.format||f.type||"text",meta:f.meta||"title"}});g.value=Kt(u,b,{selectedKeys:c.value,resolveKey:i}),s.value=!1,c.value=[]},l=[{key:"name",label:"Name",type:"text"},{key:"label",label:"Назва",type:"text"},{key:"format",label:"Формат",type:"text"}],y={name:{type:"text",label:"Назва колонки",validators:["required"],disabled:!0},ua:{type:"text",label:"Назва",validators:["required"]},format:{type:"radio",label:"Формат",position:"horizontal",options:[{text:"Text",id:"text"},{text:"Number",id:"number"},{text:"Date",id:"date"},{text:"File",id:"file"},{text:"Select",id:"select"},{text:"Badge",id:"badge"},{text:"Tags",id:"tags"}],validators:["required"]},data:{type:"text",label:"Класифікатор",conditions:["format","in",["select","badge","tags"]]}};return e.onBeforeUnmount(()=>{o.value=null}),(d,u)=>(e.openBlock(),e.createElementBlock("div",th,[e.createElementVNode("div",nh,[e.createElementVNode("div",oh,[u[4]||(u[4]=e.createElementVNode("div",{class:"h-fit w-full flex flex-wrap mb-6 px-2"},[e.createElementVNode("p",{class:"text-sm text-gray-600"}," Налаштуйте відображення картки. Оберіть потрібні поля та відредагуйте їхні властивості. ")],-1)),e.createElementVNode("div",rh,[e.createElementVNode("div",{class:"flex justify-end mb-3 gap-2 w-full"},[e.createElementVNode("button",{onClick:p,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary hover:bg-primary/90 h-10 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-500 hover:from-blue-700 hover:to-blue-600 text-white"},[...u[3]||(u[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2",class:"mr-1"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Імпорт ",-1)])])]),e.createElementVNode("div",lh,[e.createVNode(At,{modelValue:g.value,"onUpdate:modelValue":u[0]||(u[0]=b=>g.value=b),"columns-scheme":l,"form-scheme":y,"main-col-width":"250px","add-button":!1},null,8,["modelValue"])])])])]),e.createVNode(Zt,{visible:s.value,"onUpdate:visible":u[1]||(u[1]=b=>s.value=b),selection:c.value,"onUpdate:selection":u[2]||(u[2]=b=>c.value=b),fields:a.value,title:"Імпорт полів картки","id-prefix":"import-card",onConfirm:x},null,8,["visible","selection","fields"])]))}}),pr={template1:rr,template2:lr,template3:ar,template4:sr,template5:ir},sh={class:"space-y-4"},ih={class:"flex items-center gap-4 bg-white border border-gray-200 rounded-lg px-6 py-4"},ch={class:"text-lg font-semibold mb-4"},dh={class:"bg-white"},uh={key:1,class:"text-gray-400 text-center py-12"},ph={key:2,class:"text-gray-400 text-center py-12"},mh=e.defineComponent({__name:"preview-tab",props:e.mergeModels({hideDetailsButton:{type:Boolean,default:!1}},{data:{default:{}},dataModifiers:{}}),emits:["update:data"],setup(t){const n=e.defineAsyncComponent(()=>import("@opengis/form")),o=e.useModel(t,"data"),r=[{text:"template1",id:"template1"},{text:"template2",id:"template2"},{text:"template3",id:"template3"},{text:"template4",id:"template4"},{text:"template5",id:"template5"}],a={view:{type:"radio",label:"Вигляд",position:"horizontal",required:!0,options:r,col:12}},i=e.computed(()=>{var x;return Array.isArray((x=o.value)==null?void 0:x.columns)?o.value.columns:[]}),s=e.computed(()=>{var x;return((x=o.value)==null?void 0:x.view)||"template1"}),c=e.computed(()=>pr[s.value]||pr.template1),p=e.computed(()=>{var y;const x=(y=o.value)==null?void 0:y.view;if(!x)return"template1";const l=r.find(d=>d.id===x);return(l==null?void 0:l.text)||x}),g=e.computed(()=>(Array.isArray(o.value.tableData)?o.value.tableData:[]).slice(0,5).map(l=>{var y,d;return{...l,service_id:(y=o.value)==null?void 0:y.service_id,is_map:(d=o.value)==null?void 0:d.is_map}}));return(x,l)=>(e.openBlock(),e.createElementBlock("div",sh,[e.createElementVNode("div",ih,[(e.openBlock(),e.createBlock(e.unref(n),{key:o.value.id,schema:a,modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=y=>o.value=y)},null,8,["modelValue"]))]),e.createElementVNode("h2",ch," Превʼю таблиці ("+e.toDisplayString(p.value)+") ",1),e.createElementVNode("div",dh,[c.value&&g.value.length&&i.value.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{items:g.value,columns:i.value,path:"#",id_key:"id","hide-details-button":t.hideDetailsButton,key:s.value},null,8,["items","columns","hide-details-button"])):g.value.length?(e.openBlock(),e.createElementBlock("div",ph," Додайте колонки та виберіть вигляд для перегляду ")):(e.openBlock(),e.createElementBlock("div",uh," Немає даних для превʼю "))])]))}}),fh={class:"w-full mb-6"},gh={class:"flex items-center w-full h-10 max-w-md p-1 bg-white border border-gray-200 rounded-md"},yh=["onClick"],mr=e.defineComponent({__name:"MapSettingsTabs",props:{tabs:{},activeTab:{}},emits:["update:activeTab"],setup(t,{emit:n}){const o=n,r=a=>{o("update:activeTab",a)};return(a,i)=>(e.openBlock(),e.createElementBlock("div",fh,[e.createElementVNode("div",gh,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,s=>(e.openBlock(),e.createElementBlock("button",{key:s.id,onClick:c=>r(s.id),class:e.normalizeClass(["inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all",s.id===t.activeTab?"bg-blue-50 text-blue-700":"text-gray-600 hover:bg-gray-50"])},e.toDisplayString(s.name),11,yh))),128))])]))}}),hh={class:"relative h-full flex flex-col flex-1 min-h-0 overflow-hidden mx-auto w-full"},xh={class:"mx-1"},bh={class:"text-gray-900 font-semibold"},kh={key:0,class:"text-center py-12 mt-6 px-[24px]"},wh={key:1,class:"px-[24px] overflow-y-auto"},_h={class:"space-y-6"},Eh=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"register",props:{hideDetailsButton:{type:Boolean,default:!1}},setup(t){const n=Fe.useRoute(),o=Fe.useRouter(),r=e.computed(()=>n.path.replace(/\/[^/]+$/,"")),a=e.computed(()=>{var m;return((m=o.resolve(r.value).meta)==null?void 0:m.title)??""}),i=e.computed(()=>{var m;return((m=y.value)==null?void 0:m.name)||"Налаштування реєстру"}),s=e.ref("list"),c=e.ref(""),p=e.ref(!0),g=[{name:"Список",id:"list"},{name:"Фільтри",id:"filters"},{name:"Картка",id:"card"},{name:"Перегляд",id:"preview"}],x={list:Zy,filters:eh,card:ah,preview:mh},l=g.map(m=>m.id),y=e.ref({columns:[],filters:[],card:[],tableData:[]}),d=e.ref([]),u=async()=>{var h;if(!((h=y.value)==null?void 0:h.token)){ye.notify({type:"error",title:"Помилка",message:"Відсутній токен для збереження"});return}try{const k=await fetch(`/api/gis-registry/${n.params.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y.value)});if(!k.ok)throw new Error(`Failed to save content: ${k.status}`);ye.notify({type:"success",title:"Успіх",message:"Контент збережено"})}catch(k){ye.notify({type:"error",title:"Помилка",message:"Не вдалося зберегти контент"}),console.error(k)}},b=async m=>{try{const k=await(await fetch(`/api/gis-registry/${m}`)).json(),N=Array.isArray(k==null?void 0:k.rows)?k.rows:[];y.value.tableData=N.slice(0,3)}catch(h){console.error("Помилка завантаження превʼю:",h)}},f=async()=>{var m,h;try{p.value=!0;const N=await(await fetch(`/api/data/gis.registers.table/${n.params.id}`)).json(),$=((m=N==null?void 0:N.rows)==null?void 0:m[0])||{};c.value=$.register_key||"",y.value={...$,columns:Array.isArray($.columns)?$.columns:[],filters:Array.isArray($.filters)?$.filters:[],card:Array.isArray($.card)?$.card:[],tableData:Array.isArray($.tableData)?$.tableData:[]},(h=N==null?void 0:N.tokens)!=null&&h.edit&&(y.value.token=N.tokens.edit),d.value=Array.isArray(N==null?void 0:N.fields)?N.fields:[]}catch(k){console.error("Помилка завантаження даних:",k)}finally{p.value=!1}};return e.onMounted(async()=>{const m=n.query.tab;typeof m=="string"&&l.includes(m)&&(s.value=m),await f(),c.value&&await b(c.value)}),e.watch(s,m=>{n.query.tab!==m&&o.replace({query:{...n.query,tab:m}})}),e.watch(()=>n.query.tab,m=>{typeof m=="string"&&l.includes(m)&&s.value!==m&&(s.value=m)}),e.watch(()=>n.params.id,async(m,h)=>{!m||m===h||(await f(),c.value&&await b(c.value))}),(m,h)=>{const k=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",hh,[e.createVNode(Yt,{variant:"form",title:i.value},{breadcrumbs:e.withCtx(()=>[r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(k,{to:r.value,class:"text-gray-500 hover:text-gray-700"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.value),1)]),_:1},8,["to"]),e.createElementVNode("span",xh,[e.createVNode(e.unref(ce.LucideChevronRight),{size:16,class:"shrink-0"})])],64)):e.createCommentVNode("",!0),e.createElementVNode("span",bh,e.toDisplayString(i.value),1)]),description:e.withCtx(()=>[...h[3]||(h[3]=[e.createTextVNode("Налаштування реєстру",-1)])]),actions:e.withCtx(()=>[e.createElementVNode("button",{onClick:h[0]||(h[0]=N=>e.unref(o).back()),class:"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium border h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"}," Повернутися "),e.createElementVNode("button",{onClick:u,class:"inline-flex items-center justify-center gap-2 whitespace-nowrap text-white rounded-md text-sm font-medium h-10 px-4 py-2 bg-blue-600 hover:bg-blue-700"}," Зберегти ")]),_:1},8,["title"]),p.value?(e.openBlock(),e.createElementBlock("div",kh,[...h[4]||(h[4]=[e.createElementVNode("p",{class:"text-gray-500"},"Завантаження...",-1)])])):(e.openBlock(),e.createElementBlock("div",wh,[e.createVNode(mr,{tabs:g,activeTab:s.value,"onUpdate:activeTab":h[1]||(h[1]=N=>s.value=N)},null,8,["activeTab"]),e.createElementVNode("div",_h,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x[s.value]),{data:y.value,"onUpdate:data":h[2]||(h[2]=N=>y.value=N),fields:d.value,"hide-details-button":t.hideDetailsButton,key:s.value},null,40,["data","fields","hide-details-button"]))])]))])}}})},Symbol.toStringTag,{value:"Module"}));/*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */function fr(t){return typeof t>"u"||t===null}function Ch(t){return typeof t=="object"&&t!==null}function Nh(t){return Array.isArray(t)?t:fr(t)?[]:[t]}function Vh(t,n){var o,r,a,i;if(n)for(i=Object.keys(n),o=0,r=i.length;o<r;o+=1)a=i[o],t[a]=n[a];return t}function Bh(t,n){var o="",r;for(r=0;r<n;r+=1)o+=t;return o}function $h(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var Sh=fr,vh=Ch,Lh=Nh,Ah=Bh,Th=$h,Mh=Vh,st={isNothing:Sh,isObject:vh,toArray:Lh,repeat:Ah,isNegativeZero:Th,extend:Mh};function gr(t,n){var o="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(o+='in "'+t.mark.name+'" '),o+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!n&&t.mark.snippet&&(o+=`
6
6
 
7
7
  `+t.mark.snippet),r+" "+o):r}function mn(t,n){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=n,this.message=gr(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}mn.prototype=Object.create(Error.prototype),mn.prototype.constructor=mn,mn.prototype.toString=function(n){return this.name+": "+gr(this,n)};var gt=mn;function po(t,n,o,r,a){var i="",s="",c=Math.floor(a/2)-1;return r-n>c&&(i=" ... ",n=r-c+i.length),o-r>c&&(s=" ...",o=r+c-s.length),{str:i+t.slice(n,o).replace(/\t/g,"→")+s,pos:r-n+i.length}}function mo(t,n){return st.repeat(" ",n-t.length)+t}function Fh(t,n){if(n=Object.create(n||null),!t.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var o=/\r?\n|\r|\0/g,r=[0],a=[],i,s=-1;i=o.exec(t.buffer);)a.push(i.index),r.push(i.index+i[0].length),t.position<=i.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var c="",p,g,x=Math.min(t.line+n.linesAfter,a.length).toString().length,l=n.maxLength-(n.indent+x+3);for(p=1;p<=n.linesBefore&&!(s-p<0);p++)g=po(t.buffer,r[s-p],a[s-p],t.position-(r[s]-r[s-p]),l),c=st.repeat(" ",n.indent)+mo((t.line-p+1).toString(),x)+" | "+g.str+`
8
8
  `+c;for(g=po(t.buffer,r[s],a[s],t.position,l),c+=st.repeat(" ",n.indent)+mo((t.line+1).toString(),x)+" | "+g.str+`
@@ -1,9 +1,9 @@
1
1
  import { defineComponent as H, resolveDirective as Oe, openBlock as u, createElementBlock as m, createElementVNode as n, Fragment as O, renderList as G, toDisplayString as p, withDirectives as be, createTextVNode as Ge, normalizeClass as re, ref as $, watch as j, computed as h, vModelText as Qe, onMounted as We, onBeforeUnmount as Xe, unref as Ke, createCommentVNode as q, createVNode as N, withCtx as Ye, createBlock as F, resolveDynamicComponent as Ze } from "vue";
2
2
  import { useRouter as He, useRoute as Je } from "vue-router";
3
3
  import { TooltipDirective as et, notify as I } from "@opengis/core";
4
- import { _ as tt, u as st, f as nt, M as lt, i as rt, j as ye, F as ot } from "./index-DtOSF_ba.js";
5
- import { _ as it, a as at, b as ut, c as ct } from "./HeaderActions.vue_vue_type_script_setup_true_lang-CpDC-v8-.js";
6
- import { _ as xe } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DRnlsqEC.js";
4
+ import { _ as tt, u as st, f as nt, M as lt, i as rt, j as ye, F as ot } from "./index-fOtblnh3.js";
5
+ import { _ as it, a as at, b as ut, c as ct } from "./HeaderActions.vue_vue_type_script_setup_true_lang-NUsY1m0k.js";
6
+ import { _ as xe } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DkW7sPK-.js";
7
7
  const dt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, ft = { class: "space-y-3" }, mt = { class: "bg-white p-3 rounded-xl border border-gray-200 shadow-sm" }, pt = { class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2" }, gt = { class: "text-xs text-gray-500 mb-1" }, yt = {
8
8
  key: 0,
9
9
  class: "text-base text-md font-semibold text-gray-900"
@@ -2,9 +2,9 @@ import { defineComponent as B, mergeModels as j, useModel as S, computed as h, d
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-D-FY2azp.js";
6
- import { _ as z, n as R, m as E, r as H } from "./import-utils-DdinjlC4.js";
7
- import { a as ae, b as le, c as se, d as oe, e as ie } from "./index-DtOSF_ba.js";
5
+ import { V as N } from "./vs-datatable-Dcf9SLpH.js";
6
+ import { _ as z, n as R, m as E, r as H } from "./import-utils-D8vK8vZI.js";
7
+ import { a as ae, b as le, c as se, d as oe, e as ie } from "./index-fOtblnh3.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({
@@ -303,7 +303,7 @@ const ue = { class: "vs-form" }, de = { class: "vs-form__body auto-rows-max cont
303
303
  type: "select",
304
304
  label: "Класифікатор",
305
305
  data: "admin.cls.name",
306
- conditions: ["type", "in", ["select", "autocomplete", "check"]]
306
+ conditions: ["type", "in", ["Select", "Autocomplete", "Check"]]
307
307
  }
308
308
  };
309
309
  return K(() => {
@@ -1,12 +1,12 @@
1
1
  import { openBlock as C, createElementBlock as D, createElementVNode as v, defineComponent as ee, ref as S, watch as I, createTextVNode as qi, createVNode as j, createBlock as M, createCommentVNode as q, defineAsyncComponent as Ki, unref as ve, withCtx as We, withDirectives as qe, vModelText as Ke, normalizeClass as he, Fragment as Hn, renderList as Vn, toDisplayString as ue, getCurrentInstance as qn, onBeforeUnmount as Kn, toRef as zi, computed as Fe, onMounted as Gi, resolveDynamicComponent as Qi } from "vue";
2
2
  import { useRoute as Wi, useRouter as Ji } from "vue-router";
3
3
  import { notify as Q } from "@opengis/core";
4
- import { _ as Re, u as Ie, f as Zi, M as Xi, g as el, h as nl, i as il, j as kn, k as ll, l as rl, m as tl, s as Cn, n as ol } from "./index-DtOSF_ba.js";
5
- import { _ as ul, a as al, b as sl, c as cl } from "./HeaderActions.vue_vue_type_script_setup_true_lang-CpDC-v8-.js";
6
- import { S as fl, C as dl } from "./CardIcon-Bty3pjDA.js";
4
+ import { _ as Re, u as Ie, f as Zi, M as Xi, g as el, h as nl, i as il, j as kn, k as ll, l as rl, m as tl, s as Cn, n as ol } from "./index-fOtblnh3.js";
5
+ import { _ as ul, a as al, b as sl, c as cl } from "./HeaderActions.vue_vue_type_script_setup_true_lang-NUsY1m0k.js";
6
+ import { S as fl, C as dl } from "./CardIcon-C667-A5B.js";
7
7
  import { _ as zn } from "./MonacoEditor.vue_vue_type_script_setup_true_lang-D3ZPeXMw.js";
8
- import { V as $e } from "./vs-datatable-D-FY2azp.js";
9
- import { _ as ln, m as rn, r as xe } from "./import-utils-DdinjlC4.js";
8
+ import { V as $e } from "./vs-datatable-Dcf9SLpH.js";
9
+ import { _ as ln, m as rn, r as xe } from "./import-utils-D8vK8vZI.js";
10
10
  /*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */
11
11
  function Gn(e) {
12
12
  return typeof e > "u" || e === null;
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as F, mergeModels as O, defineAsyncComponent as I, useModel as R, ref as y, watch as K, openBlock as o, createElementBlock as s, createElementVNode as e, createVNode as $, unref as x, withCtx as S, createStaticVNode as V, useSlots as P, computed as H, Fragment as b, createTextVNode as U, createCommentVNode as N, renderList as A, normalizeStyle as Q, toDisplayString as M, normalizeClass as z, withModifiers as X, createBlock as Y, resolveDynamicComponent as ee, withDirectives as te, renderSlot as ne } from "vue";
2
2
  import { notify as E } from "@opengis/core";
3
3
  import { Edit as le, Trash as oe } from "lucide-vue-next";
4
- import { _ as u } from "./index-DtOSF_ba.js";
4
+ import { _ as u } from "./index-fOtblnh3.js";
5
5
  const se = { class: "flex items-center justify-center col-span-3 gap-2" }, re = { class: "flex justify-end p-[20px] gap-[10px] border-t w-full" }, ie = /* @__PURE__ */ F({
6
6
  __name: "vs-datatable-controls",
7
7
  props: /* @__PURE__ */ O({
@@ -1,32 +1,32 @@
1
- [
2
- {
3
- "id": "1",
4
- "text": "Діючий",
5
- "color": "#1ab394"
6
- },
7
- {
8
- "id": "2",
9
- "text": "Зупинений",
10
- "color": "#ed82c8"
11
- },
12
- {
13
- "id": "3",
14
- "text": "Скасований",
15
- "color": "#4a4a4a"
16
- },
17
- {
18
- "id": "5",
19
- "text": "Проектний",
20
- "color": "#6495ed"
21
- },
22
- {
23
- "id": "7",
24
- "text": "Очікує розгляду",
25
- "color": "#92b8ef"
26
- },
27
- {
28
- "id": "10",
29
- "text": "Архівний",
30
- "color": "#d48428"
31
- }
1
+ [
2
+ {
3
+ "id": "1",
4
+ "text": "Діючий",
5
+ "color": "#1ab394"
6
+ },
7
+ {
8
+ "id": "2",
9
+ "text": "Зупинений",
10
+ "color": "#ed82c8"
11
+ },
12
+ {
13
+ "id": "3",
14
+ "text": "Скасований",
15
+ "color": "#4a4a4a"
16
+ },
17
+ {
18
+ "id": "5",
19
+ "text": "Проектний",
20
+ "color": "#6495ed"
21
+ },
22
+ {
23
+ "id": "7",
24
+ "text": "Очікує розгляду",
25
+ "color": "#92b8ef"
26
+ },
27
+ {
28
+ "id": "10",
29
+ "text": "Архівний",
30
+ "color": "#d48428"
31
+ }
32
32
  ]
@@ -1 +1 @@
1
- select uid, coalesce(coalesce(sur_name,'')||coalesce(' '||user_name,'') ||coalesce(' '||father_name,''),login) as text from admin.users
1
+ select uid, coalesce(coalesce(sur_name,'')||coalesce(' '||user_name,'') ||coalesce(' '||father_name,''),login) as text from admin.users
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/gis",
3
- "version": "0.2.131",
3
+ "version": "0.2.132",
4
4
  "type": "module",
5
5
  "author": "Softpro",
6
6
  "main": "./dist/index.js",
@@ -72,4 +72,4 @@
72
72
  "vue-router": "4.5.1",
73
73
  "vuedraggable": "^4.1.0"
74
74
  }
75
- }
75
+ }
@@ -41,6 +41,10 @@ export default async function getMap({ params = {}, pg = pgClients.client }, rep
41
41
  'SELECT map_id as id, map_key as slug, name FROM gis.maps where is_active and is_public order by name',
42
42
  ).then(el => el.rows || []) : [];
43
43
 
44
+ if (mapList.includes('main') && !maps.find(el => el.slug === 'main')) {
45
+ maps.unshift({ id: 'main', slug: 'main', name: 'Основна карта' });
46
+ }
47
+
44
48
  if (params.id) {
45
49
  const map = rows[0] || {};
46
50
  const loadTemplate = await getTemplate('map', params.id) || await getTemplate('map', map.map_key);
@@ -4,7 +4,7 @@ import { createHash } from 'node:crypto';
4
4
  import SphericalMercator from '@mapbox/sphericalmercator';
5
5
 
6
6
  import {
7
- config, logger, pgClients, getRedis,
7
+ config, logger, pgClients,
8
8
  } from '@opengis/fastify-table/utils.js';
9
9
 
10
10
  import mapnik from '../../../plugins/mapnik/funcs/mapnik.js';
@@ -13,8 +13,6 @@ const { RenderTile } = mapnik();
13
13
 
14
14
  const mercator = new SphericalMercator({ size: 256 });
15
15
 
16
- const rclient = getRedis();
17
-
18
16
  /**
19
17
  * Формування растрового tile cartoCss
20
18
  *
@@ -49,16 +47,6 @@ export default async function gisRtile({
49
47
  return reply.status(400).send({ error: 'not enough params: xyz', code: 400 });
50
48
  }
51
49
 
52
- const isLocked = rclient ? await rclient.get(`rtile:${id}:${x}:${y}:${z}`) : false;
53
-
54
- if (isLocked) {
55
- console.log('is locked', `rtile:${id}:${x}:${y}:${z}`);
56
- return reply.status(400).send({ error: 'tile locked', code: 400 });
57
- }
58
-
59
- if (rclient) await rclient.set(`rtile:${id}:${x}:${y}:${z}`, 1, 'EX', 10);
60
- console.log('not locked', `rtile:${id}:${x}:${y}:${z}`);
61
-
62
50
  const decodedPath = Buffer.from(id, 'base64url').toString('utf-8');
63
51
 
64
52
  const data = pg.pk?.['gis.rasters']
@@ -80,7 +68,7 @@ export default async function gisRtile({
80
68
  });
81
69
  }
82
70
 
83
- if (!user?.uid && data.is_public === false) {
71
+ if (!user?.uid && !config.local && data.is_public === false) {
84
72
  return reply.status(403).send({ error: 'access restricted', code: 403 });
85
73
  }
86
74