@opengis/widgets 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .image-wrapper{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr 1fr 1fr;grid-column-gap:5px;grid-row-gap:3px;height:100%}.image0{height:100%;width:100%;grid-row-start:1;grid-column-start:1;grid-row-end:3;grid-column-end:3}.image1{grid-row-start:1;grid-column-start:3;grid-row-end:2;grid-column-end:4}.image2{grid-row-start:1;grid-column-start:4;grid-row-end:2;grid-column-end:5}.image3{grid-row-start:2;grid-column-start:3;grid-row-end:3;grid-column-end:4}.image4{grid-row-start:2;grid-column-start:4;grid-row-end:3;grid-column-end:5}.thumb-cover{position:absolute;inset:0;z-index:5;background-color:#00000080;color:#fff;display:flex;align-items:center;justify-content:center;font-size:36px}.text-value[data-v-c14550b7]{word-break:break-word}.link-value[data-v-e6eb07a6]{word-break:break-all}.date-value[data-v-b9600618],.status-value[data-v-c72e0b01],.custom-value[data-v-11a73810]{word-break:break-word}.description-list-widget[data-v-36d43e50]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.fullscreen[data-v-341a1241]{position:fixed!important;inset:0;width:100vw!important;height:100vh!important;z-index:9999;background:#fff}.notification-enter-active[data-v-55903525],.notification-leave-active[data-v-55903525]{transition:all .3s ease}.notification-enter-from[data-v-55903525],.notification-leave-to[data-v-55903525]{opacity:0;transform:translate(100%)}.notification-move[data-v-55903525]{transition:transform .3s ease}
1
+ .image-wrapper{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr 1fr 1fr;grid-column-gap:5px;grid-row-gap:3px;height:100%}.image0{height:100%;width:100%;grid-row-start:1;grid-column-start:1;grid-row-end:3;grid-column-end:3}.image1{grid-row-start:1;grid-column-start:3;grid-row-end:2;grid-column-end:4}.image2{grid-row-start:1;grid-column-start:4;grid-row-end:2;grid-column-end:5}.image3{grid-row-start:2;grid-column-start:3;grid-row-end:3;grid-column-end:4}.image4{grid-row-start:2;grid-column-start:4;grid-row-end:3;grid-column-end:5}.thumb-cover{position:absolute;inset:0;z-index:5;background-color:#00000080;color:#fff;display:flex;align-items:center;justify-content:center;font-size:36px}.text-value[data-v-c14550b7]{word-break:break-word}.link-value[data-v-e6eb07a6]{word-break:break-all}.date-value[data-v-b9600618],.status-value[data-v-c72e0b01],.custom-value[data-v-11a73810]{word-break:break-word}.description-list-widget[data-v-36d43e50]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.notification-enter-active[data-v-55903525],.notification-leave-active[data-v-55903525]{transition:all .3s ease}.notification-enter-from[data-v-55903525],.notification-leave-to[data-v-55903525]{opacity:0;transform:translate(100%)}.notification-move[data-v-55903525]{transition:transform .3s ease}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { h as re, defineComponent as H, mergeModels as oe, useModel as fe, ref as T, createElementBlock as a, openBlock as t, createElementVNode as e, createVNode as V, unref as I, withDirectives as U, vModelText as ye, createCommentVNode as C, createTextVNode as B, onMounted as se, onUnmounted as Le, resolveComponent as ae, normalizeClass as z, createBlock as S, toDisplayString as _, Fragment as j, renderList as A, normalizeStyle as Q, resolveDynamicComponent as W, withModifiers as Z, computed as P, renderSlot as R, getCurrentInstance as Te, watch as De, vModelRadio as Oe, vModelCheckbox as ke, createStaticVNode as Be, mergeProps as J, nextTick as _e, onBeforeUnmount as Pe, vShow as we, Teleport as Ne, TransitionGroup as We, withCtx as Re } from "vue";
1
+ import { h as re, defineComponent as H, mergeModels as oe, useModel as fe, ref as T, createElementBlock as a, openBlock as t, createElementVNode as e, createVNode as V, unref as I, withDirectives as U, vModelText as ye, createCommentVNode as C, createTextVNode as B, onMounted as se, onUnmounted as Le, resolveComponent as ae, normalizeClass as z, createBlock as S, toDisplayString as _, Fragment as j, renderList as A, normalizeStyle as Q, resolveDynamicComponent as W, withModifiers as q, computed as P, renderSlot as R, getCurrentInstance as Te, watch as De, vModelRadio as Oe, vModelCheckbox as ke, createStaticVNode as Be, mergeProps as J, nextTick as _e, onBeforeUnmount as Pe, vShow as we, Teleport as Ne, TransitionGroup as We, withCtx as Re } from "vue";
2
2
  import { notify as Ue } from "@opengis/core";
3
3
  /**
4
4
  * @license lucide-vue-next v0.535.0 - ISC
@@ -852,7 +852,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
852
852
  (t(!0), a(j, null, A(l.files, (n) => (t(), a("div", {
853
853
  class: "flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",
854
854
  key: n.id,
855
- onClick: Z((o) => l.$emit("openLightbox", n), ["stop"])
855
+ onClick: q((o) => l.$emit("openLightbox", n), ["stop"])
856
856
  }, [
857
857
  e("div", {
858
858
  class: z(["p-1 rounded", I(ie)[n?.ext]?.color || "bg-blue-100 text-blue-700 border-blue-200"])
@@ -871,14 +871,14 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
871
871
  e("div", ls, _(I(Ve)(n.createdAt)), 1),
872
872
  e("div", is, [
873
873
  e("button", {
874
- onClick: Z((o) => l.$emit("download", n), ["stop"]),
874
+ onClick: q((o) => l.$emit("download", n), ["stop"]),
875
875
  class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity"
876
876
  }, [
877
877
  V(I(je), { class: "h-3 w-3" })
878
878
  ], 8, rs),
879
879
  e("button", {
880
880
  class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700",
881
- onClick: Z((o) => l.$emit("delete", o, n?.file_id), ["stop"])
881
+ onClick: q((o) => l.$emit("delete", o, n?.file_id), ["stop"])
882
882
  }, [
883
883
  V(I(ve), { class: "h-3 w-3" })
884
884
  ], 8, ds)
@@ -896,7 +896,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
896
896
  return (l, s) => (t(), a("div", us, [
897
897
  (t(!0), a(j, null, A(l.files, (n) => (t(), a("div", {
898
898
  key: n.id,
899
- onClick: Z((o) => l.$emit("openLightbox", n), ["stop"]),
899
+ onClick: q((o) => l.$emit("openLightbox", n), ["stop"]),
900
900
  class: "group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"
901
901
  }, [
902
902
  e("div", ms, [
@@ -921,14 +921,14 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
921
921
  ]),
922
922
  e("div", bs, [
923
923
  e("button", {
924
- onClick: Z((o) => l.$emit("download", n), ["stop"]),
924
+ onClick: q((o) => l.$emit("download", n), ["stop"]),
925
925
  class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-50"
926
926
  }, [
927
927
  V(I(je), { class: "h-3 w-3" })
928
928
  ], 8, xs),
929
929
  e("button", {
930
930
  class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700 hover:bg-red-50",
931
- onClick: Z((o) => l.$emit("delete", o, n?.file_id), ["stop"])
931
+ onClick: q((o) => l.$emit("delete", o, n?.file_id), ["stop"])
932
932
  }, [
933
933
  V(I(ve), { class: "h-3 w-3" })
934
934
  ], 8, ks)
@@ -1036,11 +1036,11 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1036
1036
  onOpenLightbox: f[3] || (f[3] = (D) => v(D)),
1037
1037
  files: y.value
1038
1038
  }, null, 8, ["files"])) : C("", !0)
1039
- ], 6)) : (t(), a("div", $s, f[6] || (f[6] = [
1039
+ ], 6)) : (t(), a("div", $s, [...f[6] || (f[6] = [
1040
1040
  e("div", { class: "flex items-center justify-center h-full" }, [
1041
1041
  e("p", { class: "text-gray-500 leading-[3]" }, "Файлів не знайдено")
1042
1042
  ], -1)
1043
- ])))
1043
+ ])]))
1044
1044
  ]),
1045
1045
  V(E, {
1046
1046
  modelValue: n.value,
@@ -1100,7 +1100,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1100
1100
  (t(!0), a(j, null, A(m.items, (p, v) => (t(), a("div", {
1101
1101
  class: z(["h-full w-full image" + v, "cursor-pointer bg-teal-500 rounded-[3px]"]),
1102
1102
  key: v,
1103
- onClick: Z((O) => y(p), ["stop"])
1103
+ onClick: q((O) => y(p), ["stop"])
1104
1104
  }, [
1105
1105
  v < 5 ? (t(), a("div", Ls, [
1106
1106
  e("img", {
@@ -1234,11 +1234,11 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1234
1234
  key: 0,
1235
1235
  items: n.value,
1236
1236
  onDelete: p[1] || (p[1] = (v) => r(v))
1237
- }, null, 8, ["items"])) : (t(), a("div", Hs, p[2] || (p[2] = [
1237
+ }, null, 8, ["items"])) : (t(), a("div", Hs, [...p[2] || (p[2] = [
1238
1238
  e("div", { class: "flex items-center justify-center h-full" }, [
1239
1239
  e("p", { class: "text-gray-500 leading-[3]" }, "Зображень не знайдено")
1240
1240
  ], -1)
1241
- ])))
1241
+ ])]))
1242
1242
  ], 512));
1243
1243
  }
1244
1244
  }), Ss = { class: "text-value" }, Fs = { class: "text-sm text-gray-900" }, Os = /* @__PURE__ */ H({
@@ -1255,12 +1255,12 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1255
1255
  e("span", Fs, _(s.value), 1)
1256
1256
  ]));
1257
1257
  }
1258
- }), G = (d, l) => {
1258
+ }), Z = (d, l) => {
1259
1259
  const s = d.__vccOpts || d;
1260
1260
  for (const [n, o] of l)
1261
1261
  s[n] = o;
1262
1262
  return s;
1263
- }, Bs = /* @__PURE__ */ G(Os, [["__scopeId", "data-v-c14550b7"]]), Ps = { class: "link-value" }, Ns = ["href"], Ws = /* @__PURE__ */ H({
1263
+ }, Bs = /* @__PURE__ */ Z(Os, [["__scopeId", "data-v-c14550b7"]]), Ps = { class: "link-value" }, Ns = ["href"], Ws = /* @__PURE__ */ H({
1264
1264
  __name: "LinkValue",
1265
1265
  props: {
1266
1266
  item: {}
@@ -1287,7 +1287,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1287
1287
  ], 8, Ns)
1288
1288
  ]));
1289
1289
  }
1290
- }), Rs = /* @__PURE__ */ G(Ws, [["__scopeId", "data-v-e6eb07a6"]]), Us = { class: "date-value" }, Gs = { class: "text-sm text-gray-900" }, qs = /* @__PURE__ */ H({
1290
+ }), Rs = /* @__PURE__ */ Z(Ws, [["__scopeId", "data-v-e6eb07a6"]]), Us = { class: "date-value" }, Gs = { class: "text-sm text-gray-900" }, qs = /* @__PURE__ */ H({
1291
1291
  __name: "DateValue",
1292
1292
  props: {
1293
1293
  item: {}
@@ -1320,7 +1320,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1320
1320
  e("span", Gs, _(s.value), 1)
1321
1321
  ]));
1322
1322
  }
1323
- }), Zs = /* @__PURE__ */ G(qs, [["__scopeId", "data-v-b9600618"]]), Ks = { class: "status-value" }, Js = {
1323
+ }), Zs = /* @__PURE__ */ Z(qs, [["__scopeId", "data-v-b9600618"]]), Ks = { class: "status-value" }, Js = {
1324
1324
  key: 0,
1325
1325
  class: "mr-1"
1326
1326
  }, Xs = /* @__PURE__ */ H({
@@ -1389,7 +1389,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1389
1389
  ], 2)
1390
1390
  ]));
1391
1391
  }
1392
- }), Qs = /* @__PURE__ */ G(Xs, [["__scopeId", "data-v-c72e0b01"]]), Ys = { class: "custom-value" }, en = { class: "text-sm text-gray-900" }, tn = /* @__PURE__ */ H({
1392
+ }), Qs = /* @__PURE__ */ Z(Xs, [["__scopeId", "data-v-c72e0b01"]]), Ys = { class: "custom-value" }, en = { class: "text-sm text-gray-900" }, tn = /* @__PURE__ */ H({
1393
1393
  __name: "CustomValue",
1394
1394
  props: {
1395
1395
  item: {}
@@ -1404,7 +1404,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1404
1404
  ], !0)
1405
1405
  ]));
1406
1406
  }
1407
- }), sn = /* @__PURE__ */ G(tn, [["__scopeId", "data-v-11a73810"]]), nn = ["id"], on = {
1407
+ }), sn = /* @__PURE__ */ Z(tn, [["__scopeId", "data-v-11a73810"]]), nn = ["id"], on = {
1408
1408
  key: 0,
1409
1409
  class: "text-xl font-semibold text-gray-900 mb-4"
1410
1410
  }, an = {
@@ -1467,9 +1467,9 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1467
1467
  key: 1,
1468
1468
  class: "text-gray-400 cursor-help",
1469
1469
  title: o.tooltip
1470
- }, n[0] || (n[0] = [
1470
+ }, [...n[0] || (n[0] = [
1471
1471
  e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1472
- ]), 8, un)) : C("", !0)
1472
+ ])], 8, un)) : C("", !0)
1473
1473
  ])
1474
1474
  ]),
1475
1475
  e("td", pn, [
@@ -1496,9 +1496,9 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1496
1496
  key: 0,
1497
1497
  class: "text-gray-400 cursor-help",
1498
1498
  title: o.tooltip
1499
- }, n[1] || (n[1] = [
1499
+ }, [...n[1] || (n[1] = [
1500
1500
  e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1501
- ]), 8, bn)) : C("", !0)
1501
+ ])], 8, bn)) : C("", !0)
1502
1502
  ]),
1503
1503
  (t(), S(W(l(o)), { item: o }, null, 8, ["item"]))
1504
1504
  ])
@@ -1521,9 +1521,9 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1521
1521
  key: 1,
1522
1522
  class: "text-gray-400 cursor-help",
1523
1523
  title: o.tooltip
1524
- }, n[2] || (n[2] = [
1524
+ }, [...n[2] || (n[2] = [
1525
1525
  e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1526
- ]), 8, Cn)) : C("", !0)
1526
+ ])], 8, Cn)) : C("", !0)
1527
1527
  ])
1528
1528
  ]),
1529
1529
  e("td", Mn, [
@@ -1535,7 +1535,7 @@ const es = { class: "space-y-0.5" }, ts = ["onClick"], ss = ["onClick"], ns = {
1535
1535
  ]))
1536
1536
  ], 14, nn));
1537
1537
  }
1538
- }), He = /* @__PURE__ */ G(Ln, [["__scopeId", "data-v-36d43e50"]]), Tn = {
1538
+ }), He = /* @__PURE__ */ Z(Ln, [["__scopeId", "data-v-36d43e50"]]), Tn = {
1539
1539
  draw: {
1540
1540
  toolbar: {
1541
1541
  actions: {
@@ -1660,7 +1660,7 @@ function Dn(d) {
1660
1660
  const jn = {
1661
1661
  key: 1,
1662
1662
  class: "bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"
1663
- }, In = { class: "flex items-center justify-between p-2 border-b" }, zn = { class: "p-2 border-b" }, An = { class: "flex items-center" }, Vn = ["value"], En = { class: "ml-2" }, Hn = { class: "p-2" }, Sn = { class: "flex items-center" }, Fn = { class: "flex items-center" }, On = ["onUpdate:modelValue", "onChange"], Bn = { class: "ml-2" }, Pn = /* @__PURE__ */ H({
1663
+ }, In = { class: "flex items-center justify-between p-2 border-b" }, zn = { class: "p-2 border-b" }, An = { class: "flex items-center" }, Vn = ["value"], En = { class: "ml-2" }, Hn = { class: "p-2" }, Sn = { class: "flex items-center" }, Fn = { class: "flex items-center" }, On = ["onUpdate:modelValue", "onChange"], Bn = { class: "ml-2" }, me = /* @__PURE__ */ H({
1664
1664
  __name: "MapWidget",
1665
1665
  props: {
1666
1666
  pattern: {},
@@ -1680,18 +1680,18 @@ const jn = {
1680
1680
  function w() {
1681
1681
  return new Promise((E, x) => {
1682
1682
  if (window.L && window.L.Draw) return E(0);
1683
- const D = (q) => {
1684
- if (Array.from(document.styleSheets).some((Y) => Y?.href?.includes(q))) return;
1683
+ const D = (G) => {
1684
+ if (Array.from(document.styleSheets).some((Y) => Y?.href?.includes(G))) return;
1685
1685
  const K = document.createElement("link");
1686
- K.rel = "stylesheet", K.href = q, document.head.appendChild(K);
1687
- }, N = (q) => new Promise((le, K) => {
1688
- const Y = Array.from(document.scripts).find((te) => te.src === q);
1686
+ K.rel = "stylesheet", K.href = G, document.head.appendChild(K);
1687
+ }, N = (G) => new Promise((le, K) => {
1688
+ const Y = Array.from(document.scripts).find((te) => te.src === G);
1689
1689
  if (Y) {
1690
1690
  Y.addEventListener("load", () => le()), Y.addEventListener("error", (te) => K(te));
1691
1691
  return;
1692
1692
  }
1693
1693
  const ee = document.createElement("script");
1694
- ee.src = q, ee.async = !0, ee.onload = () => le(), ee.onerror = (te) => K(te), document.body.appendChild(ee);
1694
+ ee.src = G, ee.async = !0, ee.onload = () => le(), ee.onerror = (te) => K(te), document.body.appendChild(ee);
1695
1695
  });
1696
1696
  D("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"), D("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css"), N("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").then(() => N("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js")).then(() => E(0)).catch(x);
1697
1697
  });
@@ -1751,7 +1751,7 @@ const jn = {
1751
1751
  o.invalidateSize();
1752
1752
  }, 50);
1753
1753
  }), (E, x) => (t(), a("div", {
1754
- class: z(["relative min-h-[300px] h-full", b.value ? "fullscreen" : "pb-[3.25rem]"])
1754
+ class: z(b.value ? "fixed inset-0 w-screen h-screen z-[9999] bg-white" : "relative min-h-[300px] h-full pb-[3.25rem]")
1755
1755
  }, [
1756
1756
  e("div", {
1757
1757
  ref_key: "mapContainer",
@@ -1776,7 +1776,7 @@ const jn = {
1776
1776
  "stroke-linecap": "round",
1777
1777
  "stroke-linejoin": "round",
1778
1778
  class: "icon icon-tabler icons-tabler-outline icon-tabler-x w-4 h-4"
1779
- }, x[5] || (x[5] = [
1779
+ }, [...x[5] || (x[5] = [
1780
1780
  e("path", {
1781
1781
  stroke: "none",
1782
1782
  d: "M0 0h24v24H0z",
@@ -1784,7 +1784,7 @@ const jn = {
1784
1784
  }, null, -1),
1785
1785
  e("path", { d: "M18 6l-12 12" }, null, -1),
1786
1786
  e("path", { d: "M6 6l12 12" }, null, -1)
1787
- ])))
1787
+ ])]))
1788
1788
  ]),
1789
1789
  e("div", zn, [
1790
1790
  (t(!0), a(j, null, A(I(r), (D, N) => (t(), a("div", null, [
@@ -1793,7 +1793,7 @@ const jn = {
1793
1793
  type: "radio",
1794
1794
  name: "base-layer",
1795
1795
  value: N,
1796
- "onUpdate:modelValue": x[2] || (x[2] = (q) => y.value = q),
1796
+ "onUpdate:modelValue": x[2] || (x[2] = (G) => y.value = G),
1797
1797
  onChange: c
1798
1798
  }, null, 40, Vn), [
1799
1799
  [Oe, y.value]
@@ -1828,7 +1828,7 @@ const jn = {
1828
1828
  e("div", {
1829
1829
  class: z(["absolute z-[500] bg-white p-2 border rounded-lg cursor-pointer fullscreen-button", b.value ? "bottom-[100px] right-[7px]" : "bottom-[150px] right-[7px]"]),
1830
1830
  onClick: x[4] || (x[4] = (D) => b.value = !b.value)
1831
- }, x[8] || (x[8] = [
1831
+ }, [...x[8] || (x[8] = [
1832
1832
  e("svg", {
1833
1833
  xmlns: "http://www.w3.org/2000/svg",
1834
1834
  fill: "none",
@@ -1843,13 +1843,13 @@ const jn = {
1843
1843
  d: "M4 8V4h4M20 8V4h-4M4 16v4h4m12-4v4h-4"
1844
1844
  })
1845
1845
  ], -1)
1846
- ]), 2)
1846
+ ])], 2)
1847
1847
  ], 2));
1848
1848
  }
1849
- }), me = /* @__PURE__ */ G(Pn, [["__scopeId", "data-v-341a1241"]]), Nn = { class: "flex justify-between items-center mb-[15px]" }, Wn = { class: "font-semibold text-[16px]" }, Rn = { class: "overflow-x-auto" }, Un = { class: "min-w-full relative divide-y-2 divide-gray-200 bg-white min-w-full overflow-auto divide-y-2 divide-gray-200 bg-white text-[12px] text-gray-600" }, Gn = { class: "text-left font-medium text-gray-700" }, qn = { class: "py-2 min-w-[200px]" }, Zn = {
1849
+ }), Pn = { class: "flex justify-between items-center mb-[15px]" }, Nn = { class: "font-semibold text-[16px]" }, Wn = { class: "overflow-x-auto" }, Rn = { class: "min-w-full relative divide-y-2 divide-gray-200 bg-white min-w-full overflow-auto divide-y-2 divide-gray-200 bg-white text-[12px] text-gray-600" }, Un = { class: "text-left font-medium text-gray-700" }, Gn = { class: "py-2 min-w-[200px]" }, qn = {
1850
1850
  key: 0,
1851
1851
  class: "py-2 min-w-[200px]"
1852
- }, Kn = { class: "divide-y divide-gray-200" }, Jn = { class: "bg-white odd:bg-gray-50" }, Xn = { class: "py-2 pr-5" }, Qn = ["href"], Yn = { class: "py-2 pr-5 gap-2 inline-flex" }, eo = ["onClick"], to = ["onClick"], so = /* @__PURE__ */ H({
1852
+ }, Zn = { class: "divide-y divide-gray-200" }, Kn = { class: "bg-white odd:bg-gray-50" }, Jn = { class: "py-2 pr-5" }, Xn = ["href"], Qn = { class: "py-2 pr-5 gap-2 inline-flex" }, Yn = ["onClick"], eo = ["onClick"], to = /* @__PURE__ */ H({
1853
1853
  __name: "TableWidget",
1854
1854
  props: {
1855
1855
  name: {},
@@ -1902,39 +1902,39 @@ const jn = {
1902
1902
  return u.format?.toLowerCase() === "text" ? i[u.name] : i[u.name + "_data"] ?? i[u.name + "_text"] ?? "-";
1903
1903
  }
1904
1904
  return (i, u) => (t(), a("div", null, [
1905
- e("div", Nn, [
1906
- e("div", Wn, _(i.title), 1),
1905
+ e("div", Pn, [
1906
+ e("div", Nn, _(i.title), 1),
1907
1907
  h.value.includes("add") && y.value ? (t(), a("button", {
1908
1908
  key: 0,
1909
1909
  onClick: O,
1910
1910
  class: "px-2 py-1 inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border border-transparent hover:text-white ring-offset-white bg-blue-100 text-blue-500 hover:bg-blue-500 focus:ring-blue-500"
1911
1911
  }, "Додати")) : C("", !0)
1912
1912
  ]),
1913
- e("div", Rn, [
1914
- e("table", Un, [
1915
- e("thead", Gn, [
1913
+ e("div", Wn, [
1914
+ e("table", Rn, [
1915
+ e("thead", Un, [
1916
1916
  e("tr", null, [
1917
- (t(!0), a(j, null, A(n.value, (c) => (t(), a("th", qn, _(c.ua), 1))), 256)),
1918
- h.value.includes("edit") ? (t(), a("th", Zn, " Дії ")) : C("", !0)
1917
+ (t(!0), a(j, null, A(n.value, (c) => (t(), a("th", Gn, _(c.ua), 1))), 256)),
1918
+ h.value.includes("edit") ? (t(), a("th", qn, " Дії ")) : C("", !0)
1919
1919
  ])
1920
1920
  ]),
1921
- e("tbody", Kn, [
1922
- (t(!0), a(j, null, A(s.value, (c) => (t(), a("tr", Jn, [
1923
- (t(!0), a(j, null, A(n.value, (g) => (t(), a("td", Xn, [
1921
+ e("tbody", Zn, [
1922
+ (t(!0), a(j, null, A(s.value, (c) => (t(), a("tr", Kn, [
1923
+ (t(!0), a(j, null, A(n.value, (g) => (t(), a("td", Jn, [
1924
1924
  g.link ? (t(), a("a", {
1925
1925
  key: 0,
1926
1926
  href: g.link.replace("{{id}}", c.id),
1927
1927
  class: "font-medium cursor-pointer text-start text-wrap text-cyan-800 decoration-2 focus:outline-none focus:underline hover:text-cyan-700 hover:underline"
1928
- }, _(M(c, g)), 9, Qn)) : (t(), a(j, { key: 1 }, [
1928
+ }, _(M(c, g)), 9, Xn)) : (t(), a(j, { key: 1 }, [
1929
1929
  B(_(M(c, g)), 1)
1930
1930
  ], 64))
1931
1931
  ]))), 256)),
1932
- e("td", Yn, [
1932
+ e("td", Qn, [
1933
1933
  c.token ? (t(), a("button", {
1934
1934
  key: 0,
1935
1935
  onClick: (g) => v(c),
1936
1936
  class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
1937
- }, u[0] || (u[0] = [
1937
+ }, [...u[0] || (u[0] = [
1938
1938
  e("svg", {
1939
1939
  xmlns: "http://www.w3.org/2000/svg",
1940
1940
  width: "12px",
@@ -1963,14 +1963,14 @@ const jn = {
1963
1963
  "stroke-width": "2"
1964
1964
  })
1965
1965
  ], -1)
1966
- ]), 8, eo)) : C("", !0),
1966
+ ])], 8, Yn)) : C("", !0),
1967
1967
  c.token ? (t(), a("button", {
1968
1968
  key: 1,
1969
1969
  onClick: (g) => w(c),
1970
1970
  class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
1971
- }, u[1] || (u[1] = [
1971
+ }, [...u[1] || (u[1] = [
1972
1972
  Be('<svg class="flex-shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="12px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17"></line></svg>', 1)
1973
- ]), 8, to)) : C("", !0)
1973
+ ])], 8, eo)) : C("", !0)
1974
1974
  ])
1975
1975
  ]))), 256))
1976
1976
  ])
@@ -1978,7 +1978,7 @@ const jn = {
1978
1978
  ])
1979
1979
  ]));
1980
1980
  }
1981
- }), no = { class: "p-[20px]" }, oo = { class: "flex gap-[6px] mb-5" }, ao = { class: "vs-form-text relative bg-white rounded-lg flex-grow" }, lo = { class: "grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6" }, io = { class: "mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200" }, ro = { class: "space-y-8" }, co = { key: 0 }, uo = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, po = ["onClick"], mo = { class: "md:col-span-2" }, go = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, ho = { class: "text-sm text-gray-500 dark:text-neutral-500" }, fo = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, yo = ["checked", "onChange"], vo = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, bo = { class: "md:col-span-2" }, xo = { class: "font-semibold text-gray-800 dark:text-neutral-200" }, ko = ["onClick"], _o = { class: "md:col-span-2" }, wo = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, $o = { class: "text-sm text-gray-500 dark:text-neutral-500" }, Co = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, Mo = ["checked", "onChange"], ge = /* @__PURE__ */ H({
1981
+ }), so = { class: "p-[20px]" }, no = { class: "flex gap-[6px] mb-5" }, oo = { class: "vs-form-text relative bg-white rounded-lg flex-grow" }, ao = { class: "grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6" }, lo = { class: "mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200" }, io = { class: "space-y-8" }, ro = { key: 0 }, co = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, uo = ["onClick"], po = { class: "md:col-span-2" }, mo = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, go = { class: "text-sm text-gray-500 dark:text-neutral-500" }, ho = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, fo = ["checked", "onChange"], yo = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, vo = { class: "md:col-span-2" }, bo = { class: "font-semibold text-gray-800 dark:text-neutral-200" }, xo = ["onClick"], ko = { class: "md:col-span-2" }, _o = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, wo = { class: "text-sm text-gray-500 dark:text-neutral-500" }, $o = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, Co = ["checked", "onChange"], ge = /* @__PURE__ */ H({
1982
1982
  __name: "GroupInterfaceWidget",
1983
1983
  props: {
1984
1984
  data: {},
@@ -2030,9 +2030,9 @@ const jn = {
2030
2030
  menu: p(w.menu || [])
2031
2031
  })).filter((w) => w.menu && w.menu.length > 0)
2032
2032
  );
2033
- return (w, M) => (t(), a("div", no, [
2034
- e("div", oo, [
2035
- e("div", ao, [
2033
+ return (w, M) => (t(), a("div", so, [
2034
+ e("div", no, [
2035
+ e("div", oo, [
2036
2036
  M[1] || (M[1] = e("i", { class: "absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti" }, null, -1)),
2037
2037
  U(e("input", {
2038
2038
  type: "text",
@@ -2052,7 +2052,7 @@ const jn = {
2052
2052
  class: "inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white"
2053
2053
  }, " Зберегти ")
2054
2054
  ]),
2055
- e("div", lo, [
2055
+ e("div", ao, [
2056
2056
  M[2] || (M[2] = e("div", { class: "self-center col-span-2" }, [
2057
2057
  e("h2", { class: "font-semibold text-gray-800 dark:text-neutral-200" }, "Групи")
2058
2058
  ], -1)),
@@ -2060,12 +2060,12 @@ const jn = {
2060
2060
  class: "col-span-1 text-center",
2061
2061
  key: u
2062
2062
  }, [
2063
- e("h3", io, _(i), 1)
2063
+ e("h3", lo, _(i), 1)
2064
2064
  ])), 64))
2065
2065
  ]),
2066
- e("div", ro, [
2067
- v.value.length ? (t(), a("div", co, [
2068
- e("ul", uo, [
2066
+ e("div", io, [
2067
+ v.value.length ? (t(), a("div", ro, [
2068
+ e("ul", co, [
2069
2069
  M[3] || (M[3] = e("li", { class: "md:col-span-2" }, [
2070
2070
  e("h3", { class: "font-semibold text-gray-800 dark:text-neutral-200" }, "Без категорії")
2071
2071
  ], -1)),
@@ -2077,28 +2077,28 @@ const jn = {
2077
2077
  type: "button",
2078
2078
  class: "text-xs font-medium text-blue-600 decoration-2 hover:underline",
2079
2079
  onClick: (c) => y(v.value, n[u])
2080
- }, " Toggle all ", 8, po)
2080
+ }, " Toggle all ", 8, uo)
2081
2081
  ])), 64))
2082
2082
  ]),
2083
2083
  (t(!0), a(j, null, A(v.value, (i, u) => (t(), a("ul", {
2084
2084
  key: "uncat-" + u,
2085
2085
  class: "grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"
2086
2086
  }, [
2087
- e("li", mo, [
2088
- e("p", go, _(i.ua), 1),
2089
- e("p", ho, _(i.path), 1)
2087
+ e("li", po, [
2088
+ e("p", mo, _(i.ua), 1),
2089
+ e("p", go, _(i.path), 1)
2090
2090
  ]),
2091
2091
  (t(), a(j, null, A(n, (c, g) => e("li", {
2092
2092
  key: g,
2093
2093
  class: "col-span-1"
2094
2094
  }, [
2095
- e("div", fo, [
2095
+ e("div", ho, [
2096
2096
  e("input", {
2097
2097
  type: "checkbox",
2098
2098
  checked: h(i.path, c),
2099
2099
  onChange: ($) => r(i.path, c),
2100
2100
  class: "text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"
2101
- }, null, 40, yo)
2101
+ }, null, 40, fo)
2102
2102
  ])
2103
2103
  ])), 64))
2104
2104
  ]))), 128))
@@ -2107,9 +2107,9 @@ const jn = {
2107
2107
  key: u,
2108
2108
  class: "space-y-5"
2109
2109
  }, [
2110
- e("ul", vo, [
2111
- e("li", bo, [
2112
- e("h3", xo, _(i.ua), 1)
2110
+ e("ul", yo, [
2111
+ e("li", vo, [
2112
+ e("h3", bo, _(i.ua), 1)
2113
2113
  ]),
2114
2114
  (t(), a(j, null, A(n, (c, g) => e("li", {
2115
2115
  key: g,
@@ -2119,28 +2119,28 @@ const jn = {
2119
2119
  type: "button",
2120
2120
  class: "text-xs font-medium text-blue-600 decoration-2 hover:underline",
2121
2121
  onClick: ($) => y(i.menu, n[g])
2122
- }, " Toggle all ", 8, ko)
2122
+ }, " Toggle all ", 8, xo)
2123
2123
  ])), 64))
2124
2124
  ]),
2125
2125
  (t(!0), a(j, null, A(i.menu, (c, g) => (t(), a("ul", {
2126
2126
  key: g,
2127
2127
  class: "grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"
2128
2128
  }, [
2129
- e("li", _o, [
2130
- e("p", wo, _(c.ua), 1),
2131
- e("p", $o, _(c.path), 1)
2129
+ e("li", ko, [
2130
+ e("p", _o, _(c.ua), 1),
2131
+ e("p", wo, _(c.path), 1)
2132
2132
  ]),
2133
2133
  (t(), a(j, null, A(n, ($, f) => e("li", {
2134
2134
  key: f,
2135
2135
  class: "col-span-1"
2136
2136
  }, [
2137
- e("div", Co, [
2137
+ e("div", $o, [
2138
2138
  e("input", {
2139
2139
  type: "checkbox",
2140
2140
  checked: h(c.path, $),
2141
2141
  onChange: (E) => r(c.path, $),
2142
2142
  class: "text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"
2143
- }, null, 40, Mo)
2143
+ }, null, 40, Co)
2144
2144
  ])
2145
2145
  ])), 64))
2146
2146
  ]))), 128))
@@ -2155,15 +2155,15 @@ const jn = {
2155
2155
  "vs-widget-gallery": pe,
2156
2156
  "vs-widget-file": ue,
2157
2157
  "vs-widget-list": He,
2158
- "vs-widget-table": so,
2158
+ "vs-widget-table": to,
2159
2159
  "vs-group-interface": ge
2160
- }, Lo = {
2160
+ }, Mo = {
2161
2161
  key: 0,
2162
2162
  class: "mb-4 pb-2 border-b border-gray-200"
2163
- }, To = { class: "text-lg font-semibold text-gray-900" }, Do = ["innerHTML"], jo = {
2163
+ }, Lo = { class: "text-lg font-semibold text-gray-900" }, To = ["innerHTML"], Do = {
2164
2164
  key: 0,
2165
2165
  class: "mb-4 pb-2 border-b border-gray-200"
2166
- }, Io = { class: "text-lg font-semibold text-gray-900" }, zo = ["innerHTML"], Fe = /* @__PURE__ */ H({
2166
+ }, jo = { class: "text-lg font-semibold text-gray-900" }, Io = ["innerHTML"], Fe = /* @__PURE__ */ H({
2167
2167
  __name: "CardItem",
2168
2168
  props: {
2169
2169
  items: {},
@@ -2200,49 +2200,49 @@ const jn = {
2200
2200
  return (r, y) => (t(), a("div", {
2201
2201
  class: z(["w-full bg-gray-50 rounded-lg p-4 col-span-12", s.value])
2202
2202
  }, [
2203
- r.title ? (t(), a("div", Lo, [
2204
- e("h3", To, _(r.title), 1)
2203
+ r.title ? (t(), a("div", Mo, [
2204
+ e("h3", Lo, _(r.title), 1)
2205
2205
  ])) : C("", !0),
2206
2206
  r.html ? (t(), a("div", {
2207
2207
  key: 1,
2208
2208
  innerHTML: r.html,
2209
2209
  class: "text-gray-900 leading-relaxed"
2210
- }, null, 8, Do)) : r.type?.includes("tabs") ? (t(), S(he, {
2210
+ }, null, 8, To)) : r.type?.includes("tabs") ? (t(), S(he, {
2211
2211
  key: 2,
2212
2212
  view: r.type,
2213
2213
  panels: r.items,
2214
2214
  data: r.data
2215
2215
  }, null, 8, ["view", "panels", "data"])) : (t(!0), a(j, { key: 3 }, A(r.items, (m) => (t(), a(j, null, [
2216
- m.title || m.label ? (t(), a("div", jo, [
2217
- e("h3", Io, _(m.title || m.label), 1)
2216
+ m.title || m.label ? (t(), a("div", Do, [
2217
+ e("h3", jo, _(m.title || m.label), 1)
2218
2218
  ])) : C("", !0),
2219
2219
  m.html ? (t(), a("div", {
2220
2220
  key: 1,
2221
2221
  innerHTML: m.html,
2222
2222
  class: "text-gray-900 leading-relaxed"
2223
- }, null, 8, zo)) : m.component ? (t(), S(W(n(m.component)), J({
2223
+ }, null, 8, Io)) : m.component ? (t(), S(W(n(m.component)), J({
2224
2224
  key: 2,
2225
2225
  ref_for: !0
2226
2226
  }, { geom: r.data.geom, id: r.data.id, ...h.value, ...o(m), data: r.data }, { class: "w-full" }), null, 16)) : R(r.$slots, "default", { key: 3 })
2227
2227
  ], 64))), 256))
2228
2228
  ], 2));
2229
2229
  }
2230
- }), Ao = { class: "grid grid-cols-12 gap-[20px]" }, Vo = {
2230
+ }), zo = { class: "grid grid-cols-12 gap-[20px]" }, Ao = {
2231
2231
  key: 0,
2232
2232
  class: "col-span-4"
2233
- }, Eo = ["innerHTML"], Ho = {
2233
+ }, Vo = ["innerHTML"], Eo = {
2234
2234
  key: 0,
2235
2235
  class: "overflow-hidden w-full"
2236
- }, So = { class: "flex border-b border-gray-200 bg-gray-50 relative" }, Fo = ["onClick"], Oo = { class: "p-1" }, Bo = ["innerHTML"], Po = {
2236
+ }, Ho = { class: "flex border-b border-gray-200 bg-gray-50 relative" }, So = ["onClick"], Fo = { class: "p-1" }, Oo = ["innerHTML"], Bo = {
2237
2237
  key: 1,
2238
2238
  class: "flex w-full"
2239
- }, No = { class: "flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative" }, Wo = ["onClick"], Ro = {
2239
+ }, Po = { class: "flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative" }, No = ["onClick"], Wo = {
2240
2240
  key: 0,
2241
2241
  class: "absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"
2242
- }, Uo = { class: "flex-1 p-4" }, Go = ["innerHTML"], qo = {
2242
+ }, Ro = { class: "flex-1 p-4" }, Uo = ["innerHTML"], Go = {
2243
2243
  key: 2,
2244
2244
  class: "p-1 w-full"
2245
- }, Zo = { class: "grid grid-cols-12 gap-4" }, he = /* @__PURE__ */ H({
2245
+ }, qo = { class: "grid grid-cols-12 gap-4" }, he = /* @__PURE__ */ H({
2246
2246
  __name: "Card",
2247
2247
  props: {
2248
2248
  panels: { default: () => [] },
@@ -2291,8 +2291,8 @@ const jn = {
2291
2291
  }), (i, u) => (t(), a("div", {
2292
2292
  class: z(i.classWrapper || m.value)
2293
2293
  }, [
2294
- e("div", Ao, [
2295
- n.value.length !== 0 ? (t(), a("div", Vo, [
2294
+ e("div", zo, [
2295
+ n.value.length !== 0 ? (t(), a("div", Ao, [
2296
2296
  (t(!0), a(j, null, A(n.value[0].items, (c, g) => (t(), a("div", {
2297
2297
  key: c.name || g,
2298
2298
  class: "w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"
@@ -2301,7 +2301,7 @@ const jn = {
2301
2301
  key: 0,
2302
2302
  innerHTML: c.html,
2303
2303
  class: "text-gray-900 leading-relaxed"
2304
- }, null, 8, Eo)) : c.component ? (t(), S(W(o(c.component)), J({
2304
+ }, null, 8, Vo)) : c.component ? (t(), S(W(o(c.component)), J({
2305
2305
  key: 1,
2306
2306
  ref_for: !0
2307
2307
  }, c.component === "Card" ? c : k(c), {
@@ -2313,8 +2313,8 @@ const jn = {
2313
2313
  e("div", {
2314
2314
  class: z(n.value.length !== 0 ? "col-span-8" : "col-span-12")
2315
2315
  }, [
2316
- i.view === "tabs" ? (t(), a("div", Ho, [
2317
- e("div", So, [
2316
+ i.view === "tabs" ? (t(), a("div", Eo, [
2317
+ e("div", Ho, [
2318
2318
  p.value.length ? (t(), a("div", {
2319
2319
  key: 0,
2320
2320
  class: "absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",
@@ -2332,9 +2332,9 @@ const jn = {
2332
2332
  "relative px-4 py-3 text-sm font-medium transition-colors duration-300",
2333
2333
  s.value === g ? "text-blue-600" : "text-gray-600 hover:text-gray-800"
2334
2334
  ])
2335
- }, _(c.title || c.label || c.name || `Tab ${g + 1}`), 11, Fo))), 128))
2335
+ }, _(c.title || c.label || c.name || `Tab ${g + 1}`), 11, So))), 128))
2336
2336
  ]),
2337
- e("div", Oo, [
2337
+ e("div", Fo, [
2338
2338
  (t(!0), a(j, null, A(r.value, (c, g) => U((t(), a("div", {
2339
2339
  key: c.name || g,
2340
2340
  class: z([
@@ -2347,7 +2347,7 @@ const jn = {
2347
2347
  key: 0,
2348
2348
  innerHTML: c.html,
2349
2349
  class: "text-gray-900 leading-relaxed"
2350
- }, null, 8, Bo)) : i.$slots[`tab-${g}`] ? R(i.$slots, `tab-${g}`, {
2350
+ }, null, 8, Oo)) : i.$slots[`tab-${g}`] ? R(i.$slots, `tab-${g}`, {
2351
2351
  key: 1,
2352
2352
  item: c,
2353
2353
  data: i.data
@@ -2366,8 +2366,8 @@ const jn = {
2366
2366
  [we, s.value === g]
2367
2367
  ])), 128))
2368
2368
  ])
2369
- ])) : i.view === "vertical-tabs" ? (t(), a("div", Po, [
2370
- e("div", No, [
2369
+ ])) : i.view === "vertical-tabs" ? (t(), a("div", Bo, [
2370
+ e("div", Po, [
2371
2371
  (t(!0), a(j, null, A(r.value, (c, g) => (t(), a("button", {
2372
2372
  key: c.name || g,
2373
2373
  onClick: ($) => s.value = g,
@@ -2377,7 +2377,7 @@ const jn = {
2377
2377
  ])
2378
2378
  }, [
2379
2379
  B(_(c.title || c.label || c.name || `Tab ${g + 1}`) + " ", 1),
2380
- s.value === g ? (t(), a("span", Ro, u[0] || (u[0] = [
2380
+ s.value === g ? (t(), a("span", Wo, [...u[0] || (u[0] = [
2381
2381
  e("svg", {
2382
2382
  viewBox: "0 0 24 24",
2383
2383
  xmlns: "http://www.w3.org/2000/svg",
@@ -2388,10 +2388,10 @@ const jn = {
2388
2388
  }, [
2389
2389
  e("path", { d: "M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z" })
2390
2390
  ], -1)
2391
- ]))) : C("", !0)
2392
- ], 10, Wo))), 128))
2391
+ ])])) : C("", !0)
2392
+ ], 10, No))), 128))
2393
2393
  ]),
2394
- e("div", Uo, [
2394
+ e("div", Ro, [
2395
2395
  (t(!0), a(j, null, A(r.value, (c, g) => U((t(), a("div", {
2396
2396
  key: c.name || g,
2397
2397
  class: z([
@@ -2404,7 +2404,7 @@ const jn = {
2404
2404
  key: 0,
2405
2405
  innerHTML: c.html,
2406
2406
  class: "text-gray-900 leading-relaxed"
2407
- }, null, 8, Go)) : i.$slots[`tab-${g}`] ? R(i.$slots, `tab-${g}`, {
2407
+ }, null, 8, Uo)) : i.$slots[`tab-${g}`] ? R(i.$slots, `tab-${g}`, {
2408
2408
  key: 1,
2409
2409
  item: c,
2410
2410
  data: i.data
@@ -2423,8 +2423,8 @@ const jn = {
2423
2423
  [we, s.value === g]
2424
2424
  ])), 128))
2425
2425
  ])
2426
- ])) : (t(), a("div", qo, [
2427
- e("div", Zo, [
2426
+ ])) : (t(), a("div", Go, [
2427
+ e("div", qo, [
2428
2428
  (t(!0), a(j, null, A(y.value, (c, g) => (t(), a(j, {
2429
2429
  key: c.name || g
2430
2430
  }, [
@@ -2453,7 +2453,7 @@ const jn = {
2453
2453
  ])
2454
2454
  ], 2));
2455
2455
  }
2456
- }), Ko = ["onClick"], Jo = /* @__PURE__ */ H({
2456
+ }), Zo = ["onClick"], Ko = /* @__PURE__ */ H({
2457
2457
  __name: "CopyNotification",
2458
2458
  setup(d, { expose: l }) {
2459
2459
  const s = T([]);
@@ -2504,28 +2504,28 @@ const jn = {
2504
2504
  class: "text-green-100 hover:text-white transition-colors flex-shrink-0"
2505
2505
  }, [
2506
2506
  V(I(xe), { class: "h-4 w-4" })
2507
- ], 8, Ko)
2507
+ ], 8, Zo)
2508
2508
  ]))), 128))
2509
2509
  ]),
2510
2510
  _: 1
2511
2511
  })
2512
2512
  ]));
2513
2513
  }
2514
- }), Xo = /* @__PURE__ */ G(Jo, [["__scopeId", "data-v-55903525"]]);
2514
+ }), Jo = /* @__PURE__ */ Z(Ko, [["__scopeId", "data-v-55903525"]]);
2515
2515
  he.install = function(d) {
2516
- d.component("vs-widget-file", ue), d.component("vs-widget-comments", de), d.component("vs-widget-history", ce), d.component("vs-widget-gallery", pe), d.component("vs-widget-map", me), d.component("vs-group-interface", ge), d.component("CommentsWidget", de), d.component("HistoryWidget", ce), d.component("GalleryWidget", pe), d.component("FilesWidget", ue), d.component("MapWidget", me), d.component("Card", he), d.component("CardItem", Fe), d.component("DescriptionListWidget", He), d.component("CopyNotification", Xo), d.component("GroupInterfaceWidget", ge);
2516
+ d.component("vs-widget-file", ue), d.component("vs-widget-comments", de), d.component("vs-widget-history", ce), d.component("vs-widget-gallery", pe), d.component("vs-widget-map", me), d.component("vs-group-interface", ge), d.component("CommentsWidget", de), d.component("HistoryWidget", ce), d.component("GalleryWidget", pe), d.component("FilesWidget", ue), d.component("MapWidget", me), d.component("Card", he), d.component("CardItem", Fe), d.component("DescriptionListWidget", He), d.component("CopyNotification", Jo), d.component("GroupInterfaceWidget", ge);
2517
2517
  };
2518
2518
  export {
2519
2519
  he as Card,
2520
2520
  Fe as CardItem,
2521
2521
  de as CommentsWidget,
2522
- Xo as CopyNotification,
2522
+ Jo as CopyNotification,
2523
2523
  He as DescriptionListWidget,
2524
2524
  ue as FilesWidget,
2525
2525
  pe as GalleryWidget,
2526
2526
  ge as GroupInterfaceWidget,
2527
2527
  ce as HistoryWidget,
2528
2528
  me as MapWidget,
2529
- so as TableWidget,
2529
+ to as TableWidget,
2530
2530
  he as default
2531
2531
  };
@@ -128,4 +128,4 @@
128
128
  *
129
129
  * This source code is licensed under the ISC license.
130
130
  * See the LICENSE file in the root directory of this source tree.
131
- */const Z=V("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Le={class:"border-t pt-3 mt-4"},De={class:"flex gap-2"},Me={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Se={class:"flex-1 space-y-2"},Te={class:"flex justify-between items-center"},ze={class:"flex gap-2"},Fe=["disabled"],ne=e.defineComponent({__name:"CommentInputZone",props:{isReply:{type:Boolean,required:!1,default:!1},isReplyModifiers:{}},emits:e.mergeModels(["sendComment"],["update:isReply"]),setup(r,{emit:l}){const t=e.useModel(r,"isReply"),o=e.ref(""),n=l,g=()=>{o.value.trim()&&(n("sendComment",o.value),o.value="")},a=h=>{(h.ctrlKey||h.metaKey)&&h.key==="Enter"&&(h.preventDefault(),g())};return(h,m)=>(e.openBlock(),e.createElementBlock("div",Le,[e.createElementVNode("div",De,[e.createElementVNode("span",Me,[e.createVNode(e.unref(q),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Se,[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":m[0]||(m[0]=x=>o.value=x),onKeydown:a,placeholder:"Add a comment...",class:"w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"},null,544),[[e.vModelText,o.value]]),e.createElementVNode("div",Te,[m[4]||(m[4]=e.createElementVNode("span",{class:"text-xs text-gray-500 hidden sm:inline"},"Cmd+Enter to send",-1)),e.createElementVNode("div",ze,[t.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:m[1]||(m[1]=x=>t.value=!1)},[e.createVNode(e.unref(Z),{class:"h-3 w-3"}),m[2]||(m[2]=e.createTextVNode(" Cancel ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!o.value.trim(),onClick:g},[e.createVNode(e.unref(oe),{class:"h-3 w-3 mr-1"}),m[3]||(m[3]=e.createTextVNode(" Send ",-1))],8,Fe)])])])])]))}}),je={class:"z-50 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md w-32 outline-none pointer-events-auto"},Ie=e.defineComponent({__name:"CommentDetails",props:{showMoreOptions:{type:Boolean,required:!0,default:!1},showMoreOptionsModifiers:{}},emits:e.mergeModels(["edit","delete"],["update:showMoreOptions"]),setup(r,{emit:l}){const t=l,o=e.useModel(r,"showMoreOptions"),n=e.ref(),g=e.ref(!0),a=async x=>{o.value&&n.value&&!n.value.contains(x.target)&&!g.value&&(o.value=!1),g.value=!1},h=()=>{o.value=!1,t("edit")},m=()=>{o.value=!1,t("delete")};return e.onMounted(()=>{document.addEventListener("click",a)}),e.onUnmounted(()=>{document.removeEventListener("click",a)}),(x,k)=>(e.openBlock(),e.createElementBlock("div",{class:"absolute bg-white left-0 top-full transform min-w-max z-50",ref_key:"moreOptionsRef",ref:n},[e.createElementVNode("div",je,[e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs hover:bg-gray-100 transition-colors duration-300",onClick:h},[e.createVNode(e.unref(Ne),{class:"h-3 w-3 mr-2"}),k[0]||(k[0]=e.createTextVNode(" Edit ",-1))]),e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs text-red-600 hover:bg-gray-100 transition-colors duration-300",onClick:m},[e.createVNode(e.unref(G),{class:"h-3 w-3 mr-2"}),k[1]||(k[1]=e.createTextVNode(" Delete ",-1))])])],512))}}),Ae={class:"space-y-2"},He={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Oe={class:"flex-1 min-w-0 space-y-1 relative"},Pe={class:"flex items-center gap-2"},We={class:"font-medium text-xs"},Re={class:"text-xs text-gray-500"},Ue={key:0,class:"text-xs text-gray-700 leading-relaxed"},Ge={class:"flex justify-between text-xs"},qe={class:"flex items-center gap-2"},Ze={key:0,class:"flex gap-2"},Ke=["disabled"],Je={key:0,class:"ml-8 space-y-1 border-l-2 border-gray-100 pl-3"},Xe=e.defineComponent({__name:"CommentItem",props:{comment:{},isInside:{type:Boolean}},emits:["like","reply","edit","delete"],setup(r,{emit:l}){const t=l,o=r,n=e.ref(o.comment.text),g=e.ref("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"),a=e.ref("w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"),h=e.ref(!1),m=e.ref(!1),x=e.ref(!1),k=e.ref(!1),d=s=>{const c=new Date,i=Math.floor((c.getTime()-s.getTime())/(1e3*60*60));return i<1?`${Math.floor((c.getTime()-s.getTime())/6e4)}m`:i<24?`${i}h`:`${Math.floor(i/24)}d`},y=()=>{k.value=!k.value,k.value?t("like",o.comment.id,"add"):t("like",o.comment.id,"delete")},$=()=>{t("edit",o.comment.id,n.value),x.value=!1},u=(s,c)=>{t("like",s,c)},w=(s,c)=>{t("edit",s,c)};return(s,c)=>{const i=e.resolveComponent("CommentItem",!0);return e.openBlock(),e.createElementBlock("div",Ae,[e.createElementVNode("div",{class:e.normalizeClass(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative",x.value?"bg-gray-50":""])},[e.createElementVNode("span",He,[e.createVNode(e.unref(q),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Oe,[e.createElementVNode("div",Pe,[e.createElementVNode("span",We,e.toDisplayString(s.comment?.author),1),e.createElementVNode("span",Re,e.toDisplayString(d(s.comment?.createdAt)),1)]),x.value?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:1,"onUpdate:modelValue":c[0]||(c[0]=p=>n.value=p),class:e.normalizeClass(x.value?a.value:g.value)},null,2)),[[e.vModelText,n.value]]):(e.openBlock(),e.createElementBlock("p",Ue,e.toDisplayString(s.comment?.text),1)),e.createElementVNode("div",Ge,[e.createElementVNode("div",qe,[e.createElementVNode("button",{class:e.normalizeClass(["flex items-center gap-1",k.value?"text-blue-600":"text-gray-500 hover:text-blue-600 transition-colors"]),onClick:c[1]||(c[1]=p=>y())},[e.createVNode(e.unref(_e),{class:e.normalizeClass(["h-3 w-3",k.value?"fill-blue-600":""])},null,8,["class"]),e.createTextVNode(" "+e.toDisplayString(s.comment?.likes),1)],2),s.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"text-gray-500 hover:text-blue-600 transition-colors",onClick:c[2]||(c[2]=p=>m.value=!0)},[e.createVNode(e.unref(Be),{class:"h-3 w-3"})])),e.createElementVNode("button",{class:"text-gray-400 hover:text-gray-600 transition-colors opacity-0 group-hover:opacity-100",type:"button",onClick:c[3]||(c[3]=p=>h.value=!0)},[e.createVNode(e.unref(be),{class:"h-3 w-3"})])]),x.value?(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:c[4]||(c[4]=p=>x.value=!1)},[e.createVNode(e.unref(Z),{class:"h-3 w-3"}),c[11]||(c[11]=e.createTextVNode(" Cancel ",-1))]),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!n.value.trim(),onClick:c[5]||(c[5]=p=>$())},[e.createVNode(e.unref(oe),{class:"h-3 w-3 mr-1"}),c[12]||(c[12]=e.createTextVNode(" Send ",-1))],8,Ke)])):e.createCommentVNode("",!0)])]),h.value?(e.openBlock(),e.createBlock(Ie,{key:0,showMoreOptions:h.value,"onUpdate:showMoreOptions":c[6]||(c[6]=p=>h.value=p),onEdit:c[7]||(c[7]=p=>x.value=!0),onDelete:c[8]||(c[8]=p=>s.$emit("delete",s.comment?.id)),comment:s.comment},null,8,["showMoreOptions","comment"])):e.createCommentVNode("",!0)],2),s.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.comment?.replies,p=>(e.openBlock(),e.createBlock(i,{key:p.id,comment:p,isInside:!0,onDelete:_=>s.$emit("delete",p.id),onLike:u,onEdit:w},null,8,["comment","onDelete"]))),128)),m.value&&!s.isInside?(e.openBlock(),e.createBlock(ne,{key:0,onSendComment:c[9]||(c[9]=p=>s.$emit("reply",s.comment?.id,p)),isReply:m.value,"onUpdate:isReply":c[10]||(c[10]=p=>m.value=p)},null,8,["isReply"])):e.createCommentVNode("",!0)]))])}}}),Qe=["id"],Ye={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},H=e.defineComponent({__name:"CommentsWidget",props:{title:{},comments:{},maxHeight:{},onAddComment:{type:Function},onReply:{type:Function},onLike:{type:Function},onDelete:{type:Function},onEdit:{type:Function},id:{},className:{},style:{}},emits:["add","reply","like","delete","edit"],setup(r,{emit:l}){const t=r,o=l,n=e.ref(t.comments??[]);async function g(){if(!t.id)return;const d=await fetch(`/api/widget/comment/${t.id}`).then(y=>y.json());n.value=d.rows.map(y=>({id:y.communication_id,author:y.username,text:y.body,createdAt:new Date(y.cdate)}))}n.value.length===0&&g();const a=async d=>{t.onAddComment?t.onAddComment(d):t.id&&(await fetch(`/api/widget/comment/${t.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:d})}),await g()),o("add",d)},h=(d,y)=>{t?.onLike?.(d,y),o("like",d,y)},m=(d,y)=>{t.onReply?.(d,y),o("reply",d,y)},x=async(d,y)=>{t.onEdit?t.onEdit(d,y):t.id&&(await fetch(`/api/widget/comment/${t.id}/${d}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:y})}),await g()),o("edit",d,y)},k=async d=>{t.onDelete?t.onDelete(d):t.id&&(await fetch(`/api/widget/comment/${t.id}/${d}`,{method:"DELETE"}),await g()),o("delete",d)};return(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mx-auto font-sans",d.className]),id:d.id,style:e.normalizeStyle(d.style)},[d.title?(e.openBlock(),e.createElementBlock("h3",Ye,e.toDisplayString(d.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([d.maxHeight?"overflow-y-auto":"","space-y-3"]),style:e.normalizeStyle({maxHeight:d.maxHeight+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,$=>(e.openBlock(),e.createBlock(Xe,{key:$.id,comment:$,onReply:m,onLike:h,onDelete:y[0]||(y[0]=u=>k(u)),onEdit:x},null,8,["comment"]))),128))],6),e.createVNode(ne,{onSendComment:y[1]||(y[1]=$=>a($))})],14,Qe))}}),le=new Map([["file",{name:"File",color:"bg-green-100 text-green-700 border-green-200",icon:S}],["post",{name:"Post",color:"bg-blue-100 text-blue-700 border-blue-200",icon:Ve}],["user",{name:"User",color:"bg-purple-100 text-purple-700 border-purple-200",icon:$e}],["custom",{name:"Custom",color:"bg-gray-100 text-gray-700 border-gray-200",icon:we}]]),ve={class:"mx-auto font-sans"},et={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},tt={class:"relative"},ot={class:"space-y-3"},nt={class:"flex-1 min-w-0 pb-2"},lt={class:"flex items-center gap-1.5 mb-1 mt-0.5"},st={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},at={class:"font-medium text-xs"},rt={class:"text-xs text-gray-500"},it={class:"space-y-1"},ct={class:"text-xs text-gray-700"},dt={class:"capitalize mr-1"},mt={key:0,class:"inline-flex items-center rounded-full border py-0.5 font-semibold transition-colors text-foreground text-xs h-4 px-1 capitalize"},pt={key:0,class:"flex items-center gap-1 text-xs"},gt={key:0,class:"bg-red-50 text-red-600 px-1.5 py-0.5 rounded text-xs border border-red-200"},ft={key:2,class:"bg-green-50 text-green-600 px-1.5 py-0.5 rounded text-xs border border-green-200"},O=e.defineComponent({__name:"HistoryWidget",props:{data:{},title:{},maxHeight:{},id:{},className:{},style:{}},setup(r){const l=r,t=e.ref(Array.isArray(l.data)?l.data:[]);t.value.length===0&&l.id&&o();async function o(){const n=await fetch(`/api/widget/history/${l.id}`);if(!n.ok)return{data:[]};const g=await n.json();g.rows.forEach(a=>{a.timestamp=new Date(a.cdate),a.id=a.entity_id,a.entityType=a.entity_type,a.entityId=a.entity_id,a.action=a.change_type,a.userId=a.change_user_id,a.userName=a.username,a.timestamp=new Date(a.cdate),a.description=a.username,a.status=a.username}),t.value=g.rows}return(n,g)=>(e.openBlock(),e.createElementBlock("div",ve,[n.title?(e.openBlock(),e.createElementBlock("h3",et,e.toDisplayString(n.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(n.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:n.maxHeight+"px"})},[e.createElementVNode("div",tt,[g[0]||(g[0]=e.createElementVNode("div",{class:"absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200"},null,-1)),e.createElementVNode("div",ot,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,a=>(e.openBlock(),e.createElementBlock("div",{class:"relative flex items-start gap-2",key:a?.id},[e.createElementVNode("div",{class:e.normalizeClass(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${e.unref(le).get(a?.entityType)?.color}`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(le).get(a?.entityType)?.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",nt,[e.createElementVNode("div",lt,[e.createElementVNode("span",st,[e.createVNode(e.unref(q),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("span",at,e.toDisplayString(a?.userName),1),e.createElementVNode("span",rt,e.toDisplayString(a?.timestamp.toLocaleTimeString("ua-UA",{hour:"2-digit",minute:"2-digit"})),1)]),e.createElementVNode("div",it,[e.createElementVNode("div",ct,[e.createElementVNode("span",dt,e.toDisplayString(a?.action),1),a?.entityId?(e.openBlock(),e.createElementBlock("span",mt,e.toDisplayString(a?.entityId),1)):e.createCommentVNode("",!0)]),a?.changes?.[a?.entityId]?(e.openBlock(),e.createElementBlock("div",pt,[a?.changes?.[a?.entityId]?.old?(e.openBlock(),e.createElementBlock("span",gt,e.toDisplayString(a?.changes?.[a?.entityId]?.old),1)):e.createCommentVNode("",!0),a?.changes?.[a?.entityId]?.old&&a?.changes?.[a?.entityId]?.new?(e.openBlock(),e.createBlock(e.unref(ye),{key:1,class:"h-2 w-2 text-gray-400"})):e.createCommentVNode("",!0),a?.changes?.[a?.entityId]?.new?(e.openBlock(),e.createElementBlock("span",ft,e.toDisplayString(a?.changes?.[a?.entityId]?.new),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])]))),128))])])],6)]))}}),ht={key:0,class:"text-xl font-semibold"},yt={class:"flex gap-1"},kt={class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-input bg-background hover:bg-accent hover:text-accent-foreground border rounded-md text-xs h-7 px-2 cursor-pointer"},bt=e.defineComponent({__name:"FileHeader",props:e.mergeModels({title:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["onAddFile"],["update:modelValue"]),setup(r){const l=e.useModel(r,"modelValue"),t={active:"bg-blue-100 text-black hover:bg-blue-100",inactive:"bg-white text-black hover:bg-blue-100"};return(o,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",o.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[o.title?(e.openBlock(),e.createElementBlock("h3",ht,e.toDisplayString(o.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",yt,[e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",l.value==="list"?t.active:t.inactive]),onClick:n[0]||(n[0]=g=>l.value="list")},[e.createVNode(e.unref(Ee),{class:"h-4 w-4"})],2),e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",l.value==="grid"?t.active:t.inactive]),onClick:n[1]||(n[1]=g=>l.value="grid")},[e.createVNode(e.unref(ue),{class:"h-4 w-4"})],2),e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:n[2]||(n[2]=g=>o.$emit("onAddFile",g))},null,32),e.createElementVNode("div",kt,[e.createVNode(e.unref(te),{class:"h-4 w-4"}),n[3]||(n[3]=e.createTextVNode(" Додати файл ",-1))])])])],2))}}),K={pdf:{color:"bg-red-100 text-red-700 border-red-200",icon:S,label:"PDF"},sketch:{color:"bg-gray-100 text-gray-700 border-gray-200",icon:xe,label:"SKETCH"},mp4:{color:"bg-purple-100 text-purple-700 border-purple-200",icon:Ce,label:"VIDEO"},docx:{color:"bg-blue-100 text-blue-700 border-blue-200",icon:S,label:"DOC"},zip:{color:"bg-orange-100 text-orange-700 border-orange-200",icon:he,label:"ARCHIVE"},png:{color:"bg-green-100 text-green-700 border-green-200",icon:ee,label:"IMAGE"},jpg:{color:"bg-green-100 text-green-700 border-green-200",icon:ee,label:"IMAGE"},xlsx:{color:"bg-emerald-100 text-emerald-700 border-emerald-200",icon:S,label:"EXCEL"},pptx:{color:"bg-amber-100 text-amber-700 border-amber-200",icon:S,label:"PPT"}};function se(r,l="en"){const t={month:"short",day:"numeric"};return new Intl.DateTimeFormat(l,t).format(r)}function ae(r){if(r===0)return"0 B";const l=1024,t=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(r)/Math.log(l));return`${parseFloat((r/Math.pow(l,o)).toFixed(1))} ${t[o]}`}const xt={class:"space-y-0.5"},ut=["onClick"],_t=["onClick"],wt={class:"flex items-center gap-2"},Et={class:"font-medium text-xs truncate hover:text-blue-600 cursor-pointer"},Bt={class:"hidden sm:block text-xs text-gray-500 w-16 text-right"},Vt={class:"hidden md:block text-xs text-gray-500 w-12 text-right"},Nt={class:"flex items-center gap-1"},$t=["onClick"],Ct=["onClick"],Lt=e.defineComponent({__name:"FileList",props:{files:{}},emits:["delete","download","openLightbox"],setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",xt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.files,o=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",key:o.id,onClick:e.withModifiers(n=>l.$emit("openLightbox",o),["stop"])},[e.createElementVNode("div",{class:e.normalizeClass(["p-1 rounded",e.unref(K)[o?.ext]?.color||"bg-blue-100 text-blue-700 border-blue-200"])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(K)[o?.ext]?.icon||e.unref(K).pdf.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",{class:"flex-1 min-w-0",onClick:n=>l.$emit("openLightbox",o)},[e.createElementVNode("div",wt,[e.createElementVNode("span",Et,e.toDisplayString(o?.uploaded_name||o?.name),1)])],8,_t),e.createElementVNode("div",Bt,e.toDisplayString(e.unref(ae)(o.size)),1),e.createElementVNode("div",Vt,e.toDisplayString(e.unref(se)(o.createdAt)),1),e.createElementVNode("div",Nt,[e.createElementVNode("button",{onClick:e.withModifiers(n=>l.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity"},[e.createVNode(e.unref(v),{class:"h-3 w-3"})],8,$t),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700",onClick:e.withModifiers(n=>l.$emit("delete",n,o?.file_id),["stop"])},[e.createVNode(e.unref(G),{class:"h-3 w-3"})],8,Ct)])],8,ut))),128))]))}}),Dt={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3"},Mt=["onClick"],St={class:"space-y-2"},Tt={class:"flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden"},zt=["src"],Ft={class:"space-y-1"},jt=["title"],It={class:"text-xs text-gray-500 text-left"},At={class:"absolute top-2 right-1 flex items-center gap-1"},Ht=["onClick"],Ot=["onClick"],Pt=e.defineComponent({__name:"FileGrid",props:{files:{}},emits:["delete","download","openLightbox"],setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",Dt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.files,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,onClick:e.withModifiers(n=>l.$emit("openLightbox",o),["stop"]),class:"group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"},[e.createElementVNode("div",St,[e.createElementVNode("div",Tt,[o.ext==="png"||o.ext==="jpg"||o.ext==="jpeg"||o.ext==="gif"||o.ext==="svg"||o.ext==="webp"?(e.openBlock(),e.createElementBlock("img",{key:0,src:`/file/resize?filepath=${o?.file_path}&w=500`,alt:"file",class:"w-full h-full object-cover"},null,8,zt)):(e.openBlock(),e.createBlock(e.unref(S),{key:1,class:"h-10 w-10 text-gray-500"}))]),e.createElementVNode("div",Ft,[e.createElementVNode("h3",{class:"font-medium text-xs leading-tight text-left",title:o.uploaded_name||o.name},e.toDisplayString(o.uploaded_name||o.name),9,jt),e.createElementVNode("p",It,e.toDisplayString(e.unref(se)(o.createdAt))+", "+e.toDisplayString(e.unref(ae)(o.size)),1)])]),e.createElementVNode("div",At,[e.createElementVNode("button",{onClick:e.withModifiers(n=>l.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-50"},[e.createVNode(e.unref(v),{class:"h-3 w-3"})],8,Ht),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700 hover:bg-red-50",onClick:e.withModifiers(n=>l.$emit("delete",n,o?.file_id),["stop"])},[e.createVNode(e.unref(G),{class:"h-3 w-3"})],8,Ot)])],8,Mt))),128))]))}}),Wt={class:"mx-auto font-sans"},Rt={key:1},P=e.defineComponent({__name:"FilesWidget",props:{title:{},view:{},files:{default:()=>[]},maxHeight:{},onAddFile:{},id:{},className:{},style:{},onDelete:{}},emits:["delete","add","openLightbox"],setup(r,{emit:l}){const t=r,o=e.ref(!1),n=e.ref(null),g=e.ref(!1),a=e.ref(0),h=e.ref(t.files??[]),m=l;h.value.length===0&&c();const x=(_,f)=>{n.value=f,o.value=!0},k=()=>{n.value&&(u(n.value),n.value=null,o.value=!1)},d=e.computed(()=>Array.isArray(h.value)?h.value.map(_=>_?.file_path):[]),y=_=>{const f=d.value.findIndex(B=>B===_.file_path);f!==-1&&(g.value=!0,a.value=f)},$=_=>{t.onAddFile?t.onAddFile(_):i(_),m("add",_)},u=_=>{t.onDelete?t.onDelete(_):p(_),m("delete",_)},w=_=>{const f=document.createElement("a");f.setAttribute("download",_?.uploaded_name||_?.name),f.href=_?.file_path||_?.path,f.click()},s=e.ref("list");async function c(){if(!t.id)return;const _=await fetch(`/api/widget/file/${t.id}`).then(f=>f.json());_.rows.forEach(f=>{f.timestamp=new Date(f.cdate),f.id=f.entity_id,f.entityType=f.entity_type,f.entityId=f.entity_id,f.entityType=f.entity_type,f.action=f.change_type,f.userId=f.change_user_id,f.userName=f.username,f.timestamp=new Date(f.cdate),f.description=f.username,f.status=f.username}),h.value=_.rows}const i=async _=>{if(!(!_.target||!_.target.files||_.target.files.length===0))try{await Promise.all(Array.from(_.target.files).map(async f=>{const B=new FormData;B.append("file",f);const b=`/api/widget/file/${t.id}`,E=await fetch(b,{method:"POST",body:B});if(!E.ok)throw new Error(`HTTP error! status: ${E.status}`);return f})),await c()}catch(f){console.error("Помилка при завантаженні файлів:",f)}},p=async _=>{try{await fetch(`/api/widget/file/${t.id}/${_}`,{method:"DELETE"}),await c()}catch(f){console.error(f)}};return(_,f)=>{const B=e.resolveComponent("MessageBox"),b=e.resolveComponent("Lightbox");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Wt,[e.createVNode(bt,{modelValue:s.value,"onUpdate:modelValue":f[0]||(f[0]=E=>s.value=E),title:t.title,onOnAddFile:f[1]||(f[1]=E=>$(E))},null,8,["modelValue","title"]),h.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(_.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:_.maxHeight+"px"})},[s.value==="list"?(e.openBlock(),e.createBlock(Lt,{key:0,onDelete:x,onDownload:w,onOpenLightbox:f[2]||(f[2]=E=>y(E)),files:h.value},null,8,["files"])):e.createCommentVNode("",!0),s.value==="grid"?(e.openBlock(),e.createBlock(Pt,{key:1,onDelete:x,onDownload:w,onOpenLightbox:f[3]||(f[3]=E=>y(E)),files:h.value},null,8,["files"])):e.createCommentVNode("",!0)],6)):(e.openBlock(),e.createElementBlock("div",Rt,f[6]||(f[6]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Файлів не знайдено")],-1)])))]),e.createVNode(B,{modelValue:o.value,"onUpdate:modelValue":f[4]||(f[4]=E=>o.value=E),onConfirm:k,title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати"},null,8,["modelValue"]),e.createVNode(b,{modelValue:g.value,"onUpdate:modelValue":f[5]||(f[5]=E=>g.value=E),images:d.value,"start-index":a.value},null,8,["modelValue","images","start-index"])],64)}}}),Ut={key:0,class:"image-wrapper h-full max-h-[400px]",id:"lightbox-gallery"},Gt=["onClick"],qt={key:0,rel:"noreferrer",class:"relative block h-full w-full"},Zt=["src"],Kt={key:0,class:"thumb-cover"},Jt=e.defineComponent({__name:"GalleryContent",props:{title:{},items:{},columns:{},maxHeight:{},onAddImage:{type:Function},onDelete:{type:Function},id:{},className:{},style:{}},emits:["delete"],setup(r,{emit:l}){const t=l,o=e.ref(!1),n=e.ref(0),g=r,a=e.computed(()=>Array.isArray(g.items)?g.items.map(m=>m?.file_path):[]),h=m=>{const x=a.value.findIndex(k=>k===m.file_path);x!==-1&&(o.value=!0,n.value=x)};return(m,x)=>{const k=e.resolveComponent("Lightbox");return m.items?.length>=1?(e.openBlock(),e.createElementBlock("div",Ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.items,(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["h-full w-full image"+y,"cursor-pointer bg-teal-500 rounded-[3px]"]),key:y,onClick:e.withModifiers($=>h(d),["stop"])},[y<5?(e.openBlock(),e.createElementBlock("div",qt,[e.createElementVNode("img",{src:`/file/resize?filepath=${d?.file_path}&w=500`,alt:"alt",height:"auto",width:"100%",class:e.normalizeClass(["object-cover h-full w-full bg-gray-200 rounded-[3px]",y===0?"max-h-[411px]":"max-h-[calc((411px-3px)/2)]"])},null,10,Zt),y===4&&m.items?.length>5?(e.openBlock(),e.createElementBlock("div",Kt," +"+e.toDisplayString(m.items?.length-5),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,Gt))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Math.max(0,5-m.items.length),d=>(e.openBlock(),e.createElementBlock("div",{key:"empty-"+d,class:e.normalizeClass(["h-full w-full image"+(m.items.length+d-1),"bg-gray-300 rounded-[3px]"])},null,2))),128)),e.createVNode(k,{modelValue:o.value,"onUpdate:modelValue":x[0]||(x[0]=d=>o.value=d),images:a.value,"start-index":n.value,delete:"true",download:"true",onDelete:x[1]||(x[1]=d=>t("delete",d))},null,8,["modelValue","images","start-index"])])):e.createCommentVNode("",!0)}}}),Xt={key:0,class:"text-xl font-semibold"},Qt={class:"flex gap-1"},Yt={class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-input bg-background hover:bg-accent hover:text-accent-foreground border rounded-md text-xs h-7 px-2 cursor-pointer"},vt=e.defineComponent({__name:"widgetHeader",props:{title:{}},emits:["onAddImage"],setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",l.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[l.title?(e.openBlock(),e.createElementBlock("h3",Xt,e.toDisplayString(l.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Qt,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:t[0]||(t[0]=o=>l.$emit("onAddImage",o))},null,32),e.createElementVNode("div",Yt,[e.createVNode(e.unref(te),{class:"h-4 w-4"}),t[1]||(t[1]=e.createTextVNode(" Додати зображення ",-1))])])])],2))}}),eo={class:"w-full mx-auto font-sans",ref:"containerRef"},to={key:1},W=e.defineComponent({__name:"GalleryWidget",props:{title:{},items:{default:()=>[]},columns:{},maxHeight:{},onAddImage:{},onDelete:{},id:{},className:{},style:{}},emits:["delete","add","openLightbox"],setup(r,{emit:l}){const t=r,o=e.ref(t.items??[]),n=l;o.value.length===0&&m();const g=k=>{t.onAddImage?t.onAddImage(k):h(k),n("add",k)},a=k=>{const d=o.value.find(y=>y.file_path===k)?.file_id;d&&(t.onDelete?t.onDelete(d):x(d))},h=async k=>{if(!(!k.target||!k.target.files||k.target.files.length===0))try{await Promise.all(Array.from(k.target.files).map(async d=>{const y=new FormData;y.append("file",d);const $=`/api/widget/file/${t.id}`,u=await fetch($,{method:"POST",body:y});if(!u.ok)throw new Error(`HTTP error! status: ${u.status}`);return d})),await m()}catch(d){console.error("Помилка при завантаженні файлів:",d)}};async function m(){if(!t.id)return;const k=await fetch(`/api/widget/file/${t.id}`).then(d=>d.json());o.value=k.rows}const x=async k=>{try{await fetch(`/api/widget/file/${t.id}/${k}`,{method:"DELETE"}),await m()}catch(d){console.error(d)}};return(k,d)=>(e.openBlock(),e.createElementBlock("div",eo,[e.createVNode(vt,{title:k.title,onOnAddImage:d[0]||(d[0]=y=>g(y))},null,8,["title"]),o.value.length>0?(e.openBlock(),e.createBlock(Jt,{key:0,items:o.value,onDelete:d[1]||(d[1]=y=>a(y))},null,8,["items"])):(e.openBlock(),e.createElementBlock("div",to,d[2]||(d[2]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Зображень не знайдено")],-1)])))],512))}}),oo={class:"text-value"},no={class:"text-sm text-gray-900"},lo=e.defineComponent({__name:"TextValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{const o=l.item.value;return typeof o=="boolean"?o?"Так":"Ні":o==null?"—":String(o)});return(o,n)=>(e.openBlock(),e.createElementBlock("div",oo,[e.createElementVNode("span",no,e.toDisplayString(t.value),1)]))}}),D=(r,l)=>{const t=r.__vccOpts||r;for(const[o,n]of l)t[o]=n;return t},so=D(lo,[["__scopeId","data-v-c14550b7"]]),ao={class:"link-value"},ro=["href"],io=D(e.defineComponent({__name:"LinkValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{const o=String(l.item.value);try{const n=new URL(o);return n.hostname+n.pathname}catch{return o}});return(o,n)=>(e.openBlock(),e.createElementBlock("div",ao,[e.createElementVNode("a",{href:String(o.item.value),target:"_blank",rel:"noopener noreferrer",class:"text-blue-600 hover:text-blue-800 underline text-sm"},[e.createTextVNode(e.toDisplayString(t.value)+" ",1),n[0]||(n[0]=e.createElementVNode("i",{class:"fas fa-external-link-alt ml-1 text-xs"},null,-1))],8,ro)]))}}),[["__scopeId","data-v-e6eb07a6"]]),co={class:"date-value"},mo={class:"text-sm text-gray-900"},po=D(e.defineComponent({__name:"DateValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{const o=l.item.value;if(o instanceof Date)return o.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"});if(typeof o=="string"){const n=new Date(o);if(!isNaN(n.getTime()))return n.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})}return String(o)});return(o,n)=>(e.openBlock(),e.createElementBlock("div",co,[e.createElementVNode("span",mo,e.toDisplayString(t.value),1)]))}}),[["__scopeId","data-v-b9600618"]]),go={class:"status-value"},fo={key:0,class:"mr-1"},ho=D(e.defineComponent({__name:"StatusValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{switch(String(l.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"bg-green-100 text-green-800";case"inactive":case"неактивний":case"pending":case"очікує":return"bg-yellow-100 text-yellow-800";case"error":case"помилка":case"failed":case"неуспішно":return"bg-red-100 text-red-800";case"draft":case"чернетка":return"bg-gray-100 text-gray-800";default:return"bg-blue-100 text-blue-800"}}),o=e.computed(()=>{switch(String(l.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"fas fa-check-circle";case"inactive":case"неактивний":case"pending":case"очікує":return"fas fa-clock";case"error":case"помилка":case"failed":case"неуспішно":return"fas fa-exclamation-circle";case"draft":case"чернетка":return"fas fa-edit";default:return"fas fa-info-circle"}});return(n,g)=>(e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("span",{class:e.normalizeClass(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",t.value])},[o.value?(e.openBlock(),e.createElementBlock("span",fo,[e.createElementVNode("i",{class:e.normalizeClass(o.value)},null,2)])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(String(n.item.value)),1)],2)]))}}),[["__scopeId","data-v-c72e0b01"]]),yo={class:"custom-value"},ko={class:"text-sm text-gray-900"},bo=D(e.defineComponent({__name:"CustomValue",props:{item:{}},setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",yo,[e.renderSlot(l.$slots,"default",{item:l.item,value:l.item.value},()=>[e.createElementVNode("span",ko,e.toDisplayString(String(l.item.value)),1)],!0)]))}}),[["__scopeId","data-v-11a73810"]]),xo=["id"],uo={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},_o={key:1,class:"overflow-x-auto"},wo={class:"min-w-full divide-y divide-gray-200"},Eo={class:"bg-white divide-y divide-gray-200"},Bo={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Vo={class:"flex items-center gap-2"},No=["title"],$o={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},Co={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},Lo={class:"flex items-start gap-3"},Do={key:0,class:"flex-shrink-0"},Mo={class:"flex-1 min-w-0"},So={class:"flex items-center gap-2 mb-2"},To={class:"text-sm font-medium text-gray-900"},zo=["title"],Fo={key:3,class:"overflow-x-auto"},jo={class:"min-w-full divide-y divide-gray-200"},Io={class:"bg-white divide-y divide-gray-200"},Ao={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Ho={class:"flex items-center gap-2"},Oo=["title"],Po={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},J=D(e.defineComponent({__name:"DescriptionListWidget",props:{title:{},items:{},view:{},id:{},className:{},style:{}},setup(r){const l=t=>{switch(t.type){case"link":return io;case"date":return po;case"status":return ho;case"custom":return bo;default:return so}};return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["description-list-widget",t.className]),id:t.id,style:e.normalizeStyle(t.style)},[t.title?(e.openBlock(),e.createElementBlock("h3",uo,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.view==="table"?(e.openBlock(),e.createElementBlock("div",_o,[e.createElementVNode("table",wo,[e.createElementVNode("tbody",Eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.id||n.label},[e.createElementVNode("td",Bo,[e.createElementVNode("div",Vo,[n.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([n.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:n.tooltip},o[0]||(o[0]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,No)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",$o,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(n)),{item:n},null,8,["item"]))])]))),128))])])])):t.view==="grid"?(e.openBlock(),e.createElementBlock("div",Co,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("div",{key:n.id||n.label,class:"description-item-card bg-white border border-gray-200 rounded-lg p-4"},[e.createElementVNode("div",Lo,[n.icon?(e.openBlock(),e.createElementBlock("div",Do,[e.createElementVNode("i",{class:e.normalizeClass([n.icon,"text-gray-500 text-lg"])},null,2)])):e.createCommentVNode("",!0),e.createElementVNode("div",Mo,[e.createElementVNode("div",So,[e.createElementVNode("h4",To,e.toDisplayString(n.label),1),n.tooltip?(e.openBlock(),e.createElementBlock("span",{key:0,class:"text-gray-400 cursor-help",title:n.tooltip},o[1]||(o[1]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,zo)):e.createCommentVNode("",!0)]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(n)),{item:n},null,8,["item"]))])])]))),128))])):(e.openBlock(),e.createElementBlock("div",Fo,[e.createElementVNode("table",jo,[e.createElementVNode("tbody",Io,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.id||n.label},[e.createElementVNode("td",Ao,[e.createElementVNode("div",Ho,[n.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([n.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:n.tooltip},o[2]||(o[2]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,Oo)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",Po,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(n)),{item:n},null,8,["item"]))])]))),128))])])]))],14,xo))}}),[["__scopeId","data-v-36d43e50"]]),Wo={draw:{toolbar:{actions:{title:"Скасувати малювання",text:"Скасувати"},finish:{title:"Завершити малювання",text:"Завершити"},undo:{title:"Видалити останню точку",text:"Видалити останню"},buttons:{polyline:"Намалювати лінію",polygon:"Намалювати полігон",rectangle:"Намалювати прямокутник",circle:"Намалювати коло",marker:"Додати точку",circlemarker:"Додати маркер-коло"}},handlers:{circle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати коло",end:"Відпустіть кнопку миші, щоб завершити"},radius:"Радіус"},circlemarker:{tooltip:{start:"Клацніть на карту, щоб додати маркер-коло"}},marker:{tooltip:{start:"Клацніть на карту, щоб додати точку"}},polygon:{tooltip:{start:"Клацніть, щоб почати малювати полігон",cont:"Клацайте, щоб продовжити малювати полігон",end:"Клацніть першу точку, щоб завершити полігон"}},polyline:{error:"<strong>Помилка:</strong> лінія не може перетинатися сама з собою",tooltip:{start:"Клацніть, щоб почати малювати лінію",cont:"Клацайте, щоб продовжити малювати лінію",end:"Клацніть останню точку, щоб завершити лінію"}},rectangle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати прямокутник",end:"Відпустіть кнопку миші, щоб завершити"}},simpleshape:{tooltip:{end:"Відпустіть кнопку миші, щоб завершити"}}}},edit:{toolbar:{actions:{save:{title:"Зберегти зміни",text:"Зберегти"},cancel:{title:"Скасувати редагування",text:"Скасувати"},clearAll:{title:"Очистити всі шари",text:"Очистити все"}},buttons:{edit:"Редагувати шари",editDisabled:"Немає шарів для редагування",remove:"Видалити шари",removeDisabled:"Немає шарів для видалення"}},handlers:{edit:{tooltip:{text:"Перетягніть маркери, щоб редагувати шари",subtext:"Натисніть 'Скасувати', щоб повернутися"}},remove:{tooltip:{text:"Клацніть на шари, щоб видалити їх"}}}}};function Ro(r){return r?r.type==="FeatureCollection"||r.type==="Feature"?r:r.geom?{type:"Feature",geometry:{type:r.geom.type,coordinates:r.geom.coordinates},properties:{}}:r.type&&r.coordinates?{type:"Feature",geometry:r,properties:{}}:null:null}const Uo={key:1,class:"bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"},Go={class:"flex items-center justify-between p-2 border-b"},qo={class:"p-2 border-b"},Zo={class:"flex items-center"},Ko=["value"],Jo={class:"ml-2"},Xo={class:"p-2"},Qo={class:"flex items-center"},Yo={class:"flex items-center"},vo=["onUpdate:modelValue","onChange"],en={class:"ml-2"},R=D(e.defineComponent({__name:"MapWidget",props:{pattern:{},geom:{},id:{},tms:{}},setup(r){const l=e.getCurrentInstance(),t=r,o=e.ref(null);let n,g;const a=f(),h=e.ref(Object.keys(a)[0]);let m;const x=e.ref(!0),k=e.ref(!1),d=e.ref(!1),y=e.ref($());function $(){return t.tms?(Array.isArray(t.tms)?t.tms:t.tms?.split(",")).map((b,E)=>({url:t.pattern?t.pattern.replace("{{id}}",b):b,name:"Шар "+E,visible:!0,i:E})):[]}function u(){return new Promise((B,b)=>{if(window.L&&window.L.Draw)return B(0);const E=M=>{if(Array.from(document.styleSheets).some(F=>F?.href?.includes(M)))return;const T=document.createElement("link");T.rel="stylesheet",T.href=M,document.head.appendChild(T)},C=M=>new Promise((Q,T)=>{const F=Array.from(document.scripts).find(I=>I.src===M);if(F){F.addEventListener("load",()=>Q()),F.addEventListener("error",I=>T(I));return}const j=document.createElement("script");j.src=M,j.async=!0,j.onload=()=>Q(),j.onerror=I=>T(I),document.body.appendChild(j)});E("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"),E("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css"),C("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").then(()=>C("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js")).then(()=>B(0)).catch(b)})}let w=!1;e.onMounted(async()=>{await u(),L.drawLocal=Wo;const B=l?.appContext.config.globalProperties.$settings?.center||[50,30];n=L.map(o.value,{zoomControl:!1}).setView(B,10),n.on("mousemove",E=>{w||(n.invalidateSize(),w=!0)}),L.control.zoom({position:"bottomright"}).addTo(n),m=L.tileLayer(a[h.value].url,{maxZoom:19}).addTo(n),g=new L.FeatureGroup().addTo(n),y.value.length&&_(0);const b=Ro(t.geom);if(b){const E=[];L.geoJSON(b).eachLayer(C=>E.push(C)),E.length&&g.addLayer(E[0]),g.toGeoJSON(),s()}});function s(B=30){const b=g.getLayers();if(!b.length)return;const C=L.featureGroup(b).getBounds();C&&C.isValid()&&n.fitBounds(C,{padding:[B,B],maxZoom:16})}function c(B){m&&m.removeFrom(n);const b=a[B];m=L.tileLayer(b.url,b.options||{}).addTo(n),m.bringToBack(),h.value=B}function i(){c(h.value)}function p(){g&&(x.value?g.addTo(n):g.removeFrom(n))}function _(B){const b=y.value[B];b.layer||(b.layer=L.tileLayer(b.url,{maxZoom:19})),b.visible?b.layer.addTo(n):b.layer.removeFrom(n)}function f(){return l?.appContext.config.globalProperties.$settings?.basemaps?l?.appContext.config.globalProperties.$settings?.basemaps.map((B,b)=>Object.assign(B,{key:`b${b}`,preview:B.preview||B.url.replace("{z}/{x}/{y}.png","13/4790/2762.png")})).reduce((B,b)=>({...B,[b.key]:b}),{}):{topo100:{url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"},orto10:{url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"},osmb:{url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",preview:"https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"}}}return e.watch(k,()=>{setTimeout(()=>{n.invalidateSize()},50)}),(B,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["relative min-h-[300px] h-full",k.value?"fullscreen":"pb-[3.25rem]"])},[e.createElementVNode("div",{ref_key:"mapContainer",ref:o,class:"w-full h-full min-h-[300px]"},null,512),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,onClick:b[0]||(b[0]=E=>d.value=!0),class:"z-[500] bg-white absolute top-[10px] right-[10px] p-2 border rounded-lg cursor-pointer layers-button"}," Шари ")),d.value?(e.openBlock(),e.createElementBlock("div",Uo,[e.createElementVNode("div",Go,[b[6]||(b[6]=e.createElementVNode("div",null,"Шари",-1)),(e.openBlock(),e.createElementBlock("svg",{onClick:b[1]||(b[1]=E=>d.value=!1),xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"icon icon-tabler icons-tabler-outline icon-tabler-x w-4 h-4"},b[5]||(b[5]=[e.createElementVNode("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),e.createElementVNode("path",{d:"M18 6l-12 12"},null,-1),e.createElementVNode("path",{d:"M6 6l12 12"},null,-1)])))]),e.createElementVNode("div",qo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(E,C)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("label",Zo,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"base-layer",value:C,"onUpdate:modelValue":b[2]||(b[2]=M=>h.value=M),onChange:i},null,40,Ko),[[e.vModelRadio,h.value]]),e.createElementVNode("span",Jo,e.toDisplayString(E.name||C),1)])]))),256))]),e.createElementVNode("div",Xo,[e.createElementVNode("label",Qo,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":b[3]||(b[3]=E=>x.value=E),onChange:p},null,544),[[e.vModelCheckbox,x.value]]),b[7]||(b[7]=e.createElementVNode("span",{class:"ml-2"}," Геометрія/Межі ",-1))]),t.tms?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y.value,E=>(e.openBlock(),e.createElementBlock("label",Yo,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":C=>E.visible=C,onChange:C=>_(E.i)},null,40,vo),[[e.vModelCheckbox,E.visible]]),e.createElementVNode("span",en,e.toDisplayString(E.name),1)]))),256)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["absolute z-[500] bg-white p-2 border rounded-lg cursor-pointer fullscreen-button",k.value?"bottom-[100px] right-[7px]":"bottom-[150px] right-[7px]"]),onClick:b[4]||(b[4]=E=>k.value=!k.value)},b[8]||(b[8]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 8V4h4M20 8V4h-4M4 16v4h4m12-4v4h-4"})],-1)]),2)],2))}}),[["__scopeId","data-v-341a1241"]]),tn={class:"flex justify-between items-center mb-[15px]"},on={class:"font-semibold text-[16px]"},nn={class:"overflow-x-auto"},ln={class:"min-w-full relative divide-y-2 divide-gray-200 bg-white min-w-full overflow-auto divide-y-2 divide-gray-200 bg-white text-[12px] text-gray-600"},sn={class:"text-left font-medium text-gray-700"},an={class:"py-2 min-w-[200px]"},rn={key:0,class:"py-2 min-w-[200px]"},cn={class:"divide-y divide-gray-200"},dn={class:"bg-white odd:bg-gray-50"},mn={class:"py-2 pr-5"},pn=["href"],gn={class:"py-2 pr-5 gap-2 inline-flex"},fn=["onClick"],hn=["onClick"],re=e.defineComponent({__name:"TableWidget",props:{name:{},label:{},component:{},slot:{},col:{},width:{},html:{},title:{},type:{},token:{},count:{},props:{},items:{}},setup(r){const l=e.getCurrentInstance(),t=e.ref([]),o=e.ref([]),n=r,g=e.ref([]),a=e.ref(""),h=e.ref("");async function m(){const s=await fetch("/api/data/"+n.token).then(c=>c.json());t.value=s.rows,o.value=s.columns,g.value=s.actions,a.value=s.form,h.value=s.addToken}const{$notify:x=console.log,$confirm:k,$form:d}=l?.appContext?.config?.globalProperties||{};async function y(s){await d({token:s.token}),m()}function $(){d({token:h.value})}function u(s){k({title:"Підтвердіть дію",type:"error",message:"Ви впевненні що бажаєте видалити даний рядок?",onConfirm:async()=>{const c=await fetch(`/api/table/${s.token}`,{method:"DELETE"});if(!c.ok){const{error:i,code:p}=await c.json();x({title:"Помилка",type:"warning",message:i});return}x({title:"Видаленно",message:"Успішно видалено"}),await m()}})}e.onMounted(async()=>{await m()});function w(s,c){return c.format?.toLowerCase()==="text"?s[c.name]:s[c.name+"_data"]??s[c.name+"_text"]??"-"}return(s,c)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",tn,[e.createElementVNode("div",on,e.toDisplayString(s.title),1),g.value.includes("add")&&h.value?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:$,class:"px-2 py-1 inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border border-transparent hover:text-white ring-offset-white bg-blue-100 text-blue-500 hover:bg-blue-500 focus:ring-blue-500"},"Додати")):e.createCommentVNode("",!0)]),e.createElementVNode("div",nn,[e.createElementVNode("table",ln,[e.createElementVNode("thead",sn,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,i=>(e.openBlock(),e.createElementBlock("th",an,e.toDisplayString(i.ua),1))),256)),g.value.includes("edit")?(e.openBlock(),e.createElementBlock("th",rn," Дії ")):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,i=>(e.openBlock(),e.createElementBlock("tr",dn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,p=>(e.openBlock(),e.createElementBlock("td",mn,[p.link?(e.openBlock(),e.createElementBlock("a",{key:0,href:p.link.replace("{{id}}",i.id),class:"font-medium cursor-pointer text-start text-wrap text-cyan-800 decoration-2 focus:outline-none focus:underline hover:text-cyan-700 hover:underline"},e.toDisplayString(w(i,p)),9,pn)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(w(i,p)),1)],64))]))),256)),e.createElementVNode("td",gn,[i.token?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:p=>y(i),class:"inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"},c[0]||(c[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12px",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",fill:"none",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"}),e.createElementVNode("polygon",{fill:"none",points:"12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"})],-1)]),8,fn)):e.createCommentVNode("",!0),i.token?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:p=>u(i),class:"inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"},c[1]||(c[1]=[e.createStaticVNode('<svg class="flex-shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="12px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17"></line></svg>',1)]),8,hn)):e.createCommentVNode("",!0)])]))),256))])])])]))}}),yn={class:"p-[20px]"},kn={class:"flex gap-[6px] mb-5"},bn={class:"vs-form-text relative bg-white rounded-lg flex-grow"},xn={class:"grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6"},un={class:"mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200"},_n={class:"space-y-8"},wn={key:0},En={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Bn=["onClick"],Vn={class:"md:col-span-2"},Nn={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},$n={class:"text-sm text-gray-500 dark:text-neutral-500"},Cn={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},Ln=["checked","onChange"],Dn={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Mn={class:"md:col-span-2"},Sn={class:"font-semibold text-gray-800 dark:text-neutral-200"},Tn=["onClick"],zn={class:"md:col-span-2"},Fn={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},jn={class:"text-sm text-gray-500 dark:text-neutral-500"},In={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},An=["checked","onChange"],U=e.defineComponent({__name:"GroupInterfaceWidget",props:{data:{},id:{}},setup(r){const l=r,t=e.ref(""),o=["view","add","edit","del"],n=e.ref({});e.onMounted(async()=>{const w=await(await fetch(`/api/access-group/${l.id}?tab=vs-group-interface`)).json();w.routes&&w.routes.forEach(s=>{n.value[s.path]=new Set(s.actions)})});const g=(u,w)=>n.value[u]?.has(w)??!1,a=(u,w)=>{n.value[u]||(n.value[u]=new Set),n.value[u].has(w)?n.value[u].delete(w):n.value[u].add(w)},h=(u,w)=>{u.forEach(s=>{s.path&&(n.value[s.path]||(n.value[s.path]=new Set),n.value[s.path].has(w)?n.value[s.path].delete(w):n.value[s.path].add(w))})},m=e.computed(()=>Object.entries(n.value).map(([u,w])=>({path:u,actions:Array.from(w)})).filter(u=>u.actions.length)),x=async()=>{await fetch(`/api/access-group/${l.id}?tab=vs-group-interface`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes:m.value})}),console.log("Saved",m.value),de.notify({title:"Success!",message:"Permissions saved."})},k=()=>{n.value={}},d=u=>{if(!t.value.trim())return u;const w=t.value.toLowerCase();return u.filter(s=>s.ua.toLowerCase().includes(w)||s.path&&s.path.toLowerCase().includes(w))},y=e.computed(()=>d(l.data.routers.filter(u=>!u.menu))),$=e.computed(()=>l.data.routers.filter(u=>u.menu).map(u=>({...u,menu:d(u.menu||[])})).filter(u=>u.menu&&u.menu.length>0));return(u,w)=>(e.openBlock(),e.createElementBlock("div",yn,[e.createElementVNode("div",kn,[e.createElementVNode("div",bn,[w[1]||(w[1]=e.createElementVNode("i",{class:"absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti"},null,-1)),e.withDirectives(e.createElementVNode("input",{type:"text",placeholder:"Пошук","onUpdate:modelValue":w[0]||(w[0]=s=>t.value=s),class:"bg-white h-[38px] text-sm py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 rounded-lg text-sm text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,512),[[e.vModelText,t.value]])]),e.createElementVNode("button",{onClick:k,class:"inline-flex items-center px-3 py-2 text-sm font-medium duration-300 bg-white border rounded-lg gap-x-2 hover:bg-gray-100"}," Скинути всі "),e.createElementVNode("button",{onClick:x,class:"inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white"}," Зберегти ")]),e.createElementVNode("div",xn,[w[2]||(w[2]=e.createElementVNode("div",{class:"self-center col-span-2"},[e.createElementVNode("h2",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Групи")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(s,c)=>e.createElementVNode("div",{class:"col-span-1 text-center",key:c},[e.createElementVNode("h3",un,e.toDisplayString(s),1)])),64))]),e.createElementVNode("div",_n,[y.value.length?(e.openBlock(),e.createElementBlock("div",wn,[e.createElementVNode("ul",En,[w[3]||(w[3]=e.createElementVNode("li",{class:"md:col-span-2"},[e.createElementVNode("h3",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Без категорії")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(s,c)=>e.createElementVNode("li",{key:c,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:i=>h(y.value,o[c])}," Toggle all ",8,Bn)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,(s,c)=>(e.openBlock(),e.createElementBlock("ul",{key:"uncat-"+c,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",Vn,[e.createElementVNode("p",Nn,e.toDisplayString(s.ua),1),e.createElementVNode("p",$n,e.toDisplayString(s.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(i,p)=>e.createElementVNode("li",{key:p,class:"col-span-1"},[e.createElementVNode("div",Cn,[e.createElementVNode("input",{type:"checkbox",checked:g(s.path,i),onChange:_=>a(s.path,i),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,Ln)])])),64))]))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,(s,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"space-y-5"},[e.createElementVNode("ul",Dn,[e.createElementVNode("li",Mn,[e.createElementVNode("h3",Sn,e.toDisplayString(s.ua),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(i,p)=>e.createElementVNode("li",{key:p,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:_=>h(s.menu,o[p])}," Toggle all ",8,Tn)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.menu,(i,p)=>(e.openBlock(),e.createElementBlock("ul",{key:p,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",zn,[e.createElementVNode("p",Fn,e.toDisplayString(i.ua),1),e.createElementVNode("p",jn,e.toDisplayString(i.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(_,f)=>e.createElementVNode("li",{key:f,class:"col-span-1"},[e.createElementVNode("div",In,[e.createElementVNode("input",{type:"checkbox",checked:g(i.path,_),onChange:B=>a(i.path,_),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,An)])])),64))]))),128))]))),128))])]))}}),ie={"vs-widget-map":R,"vs-widget-comments":H,"vs-widget-history":O,"vs-widget-gallery":W,"vs-widget-file":P,"vs-widget-list":J,"vs-widget-table":re,"vs-group-interface":U},Hn={key:0,class:"mb-4 pb-2 border-b border-gray-200"},On={class:"text-lg font-semibold text-gray-900"},Pn=["innerHTML"],Wn={key:0,class:"mb-4 pb-2 border-b border-gray-200"},Rn={class:"text-lg font-semibold text-gray-900"},Un=["innerHTML"],X=e.defineComponent({__name:"CardItem",props:{items:{},type:{},col:{},data:{},html:{},title:{},name:{},label:{},component:{},slot:{},id:{},className:{},style:{}},setup(r){const l=r;console.log(l.data);const t=e.computed(()=>l.col?{[`lg:col-span-${l.col}`]:!0}:{});function o(a){return ie[a]||a}const n=function(a={}){return a.props&&Object.entries(a.props).forEach(([h,m])=>{a[h]=l.data[m]}),a},g=e.computed(()=>{const a={};return l.col&&(a.col=l.col),a});return(a,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-full bg-gray-50 rounded-lg p-4 col-span-12",t.value])},[a.title?(e.openBlock(),e.createElementBlock("div",Hn,[e.createElementVNode("h3",On,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),a.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:a.html,class:"text-gray-900 leading-relaxed"},null,8,Pn)):a.type?.includes("tabs")?(e.openBlock(),e.createBlock(z,{key:2,view:a.type,panels:a.items,data:a.data},null,8,["view","panels","data"])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:3},e.renderList(a.items,m=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[m.title||m.label?(e.openBlock(),e.createElementBlock("div",Wn,[e.createElementVNode("h3",Rn,e.toDisplayString(m.title||m.label),1)])):e.createCommentVNode("",!0),m.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:m.html,class:"text-gray-900 leading-relaxed"},null,8,Un)):m.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o(m.component)),e.mergeProps({key:2,ref_for:!0},{geom:a.data.geom,id:a.data.id,...g.value,...n(m),data:a.data},{class:"w-full"}),null,16)):e.renderSlot(a.$slots,"default",{key:3})],64))),256))],2))}}),Gn={class:"grid grid-cols-12 gap-[20px]"},qn={key:0,class:"col-span-4"},Zn=["innerHTML"],Kn={key:0,class:"overflow-hidden w-full"},Jn={class:"flex border-b border-gray-200 bg-gray-50 relative"},Xn=["onClick"],Qn={class:"p-1"},Yn=["innerHTML"],vn={key:1,class:"flex w-full"},el={class:"flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative"},tl=["onClick"],ol={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"},nl={class:"flex-1 p-4"},ll=["innerHTML"],sl={key:2,class:"p-1 w-full"},al={class:"grid grid-cols-12 gap-4"},z=e.defineComponent({__name:"Card",props:{panels:{default:()=>[]},data:{default:()=>({})},view:{default:"plain"},classWrapper:{default:""},classPanel:{},normalizeTabs:{type:Boolean,default:!0},id:{},className:{},style:{}},setup(r){const l=r,t=e.ref(0),o=e.ref([]);function n(s){return ie[s]||s}function g(s){return s.forEach(c=>{c.type&&(c.view=c.type)}),o.value=s.filter(c=>c.type==="pin"),s.filter(c=>c.type!=="pin")}const a=e.computed(()=>l.panels&&l.panels.length>0?l.normalizeTabs?g(l.panels):l.panels:l.data&&Array.isArray(l.data)?l.data.filter(c=>c.type.includes("tabs"))[0]?.items||[]:[]),h=e.computed(()=>l.panels&&l.panels.length>0?l.normalizeTabs?g(l.panels):l.panels:l.data&&Array.isArray(l.data)?l.data:[]),m=e.computed(()=>({[`view-${l.view}`]:!0})),x=s=>{const c={...s};return l.data&&(c.data=l.data),c},k=e.ref([]),d=e.ref([]),y=e.ref([]);function $(s,c){s&&s instanceof HTMLElement&&(k.value[c]=s)}function u(){d.value=k.value.map(s=>s.offsetWidth),y.value=k.value.map(s=>s.offsetLeft)}let w=null;return e.onMounted(()=>{e.nextTick(()=>{u()}),w=new ResizeObserver(()=>u()),w.observe(document.body)}),e.onBeforeUnmount(()=>{w?.disconnect()}),e.watch(t,()=>{e.nextTick(()=>{u()})}),(s,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.classWrapper||m.value)},[e.createElementVNode("div",Gn,[o.value.length!==0?(e.openBlock(),e.createElementBlock("div",qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value[0].items,(i,p)=>(e.openBlock(),e.createElementBlock("div",{key:i.name||p,class:"w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"},[i.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.html,class:"text-gray-900 leading-relaxed"},null,8,Zn)):i.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component)),e.mergeProps({key:1,ref_for:!0},i.component==="Card"?i:x(i),{id:s.data.id,class:"w-full h-full"}),null,16,["id"])):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(o.value.length!==0?"col-span-8":"col-span-12")},[s.view==="tabs"?(e.openBlock(),e.createElementBlock("div",Kn,[e.createElementVNode("div",Jn,[d.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",style:e.normalizeStyle({width:d.value[t.value]+"px",left:y.value[t.value]+"px"})},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>(e.openBlock(),e.createElementBlock("button",{key:i.name||p,ref_for:!0,ref:_=>$(_,p),onClick:_=>t.value=p,class:e.normalizeClass(["relative px-4 py-3 text-sm font-medium transition-colors duration-300",t.value===p?"text-blue-600":"text-gray-600 hover:text-gray-800"])},e.toDisplayString(i.title||i.label||i.name||`Tab ${p+1}`),11,Xn))),128))]),e.createElementVNode("div",Qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:i.name||p,class:e.normalizeClass(["transition-all duration-300 ease-in-out",t.value===p?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",s.classPanel||"w-full border-gray-100 py-2"])},[i.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.html,class:"text-gray-900 leading-relaxed"},null,8,Yn)):s.$slots[`tab-${p}`]?e.renderSlot(s.$slots,`tab-${p}`,{key:1,item:i,data:s.data}):i.component||i.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component||i.name)),e.mergeProps({key:2,ref_for:!0},i.component==="Card"?i:x(i),{id:s.data.id,class:"w-full h-full"}),null,16,["id"])):e.renderSlot(s.$slots,i.slot||`tab-${p}`,{key:3,item:i,data:s.data})],2)),[[e.vShow,t.value===p]])),128))])])):s.view==="vertical-tabs"?(e.openBlock(),e.createElementBlock("div",vn,[e.createElementVNode("div",el,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>(e.openBlock(),e.createElementBlock("button",{key:i.name||p,onClick:_=>t.value=p,class:e.normalizeClass(["relative px-4 py-3 text-sm font-medium text-left transition-colors duration-300",t.value===p?"text-blue-600 bg-white":"text-gray-600 hover:text-gray-800 hover:bg-gray-100"])},[e.createTextVNode(e.toDisplayString(i.title||i.label||i.name||`Tab ${p+1}`)+" ",1),t.value===p?(e.openBlock(),e.createElementBlock("span",ol,c[0]||(c[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"currentColor",class:"remixicon text-blue-600 rounded-full bg-white shadow scale-90 opacity-100 transition ease-out"},[e.createElementVNode("path",{d:"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z"})],-1)]))):e.createCommentVNode("",!0)],10,tl))),128))]),e.createElementVNode("div",nl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:i.name||p,class:e.normalizeClass(["transition-all duration-300 ease-in-out",t.value===p?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",s.classPanel||"w-full border-gray-100 py-2"])},[i.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.html,class:"text-gray-900 leading-relaxed"},null,8,ll)):s.$slots[`tab-${p}`]?e.renderSlot(s.$slots,`tab-${p}`,{key:1,item:i,data:s.data}):i.component||i.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component||i.name)),e.mergeProps({key:2,ref_for:!0},i.component==="Card"?i:x(i),{id:s.data.id,class:"w-full h-full"}),null,16,["id"])):e.renderSlot(s.$slots,i.slot||`tab-${p}`,{key:3,item:i,data:s.data})],2)),[[e.vShow,t.value===p]])),128))])])):(e.openBlock(),e.createElementBlock("div",sl,[e.createElementVNode("div",al,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(i,p)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.name||p},[s.$slots[`panel-${p}`]?e.renderSlot(s.$slots,`panel-${p}`,{key:0,item:i,data:s.data}):i.items||i.html?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(X),e.mergeProps({key:1,ref_for:!0},x(i),{items:i.items,class:"w-full h-full"}),null,16,["items"])):i.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component)),e.mergeProps({key:2,ref_for:!0},x(i),{class:"w-full h-full"}),null,16)):e.renderSlot(s.$slots,i.slot||`panel-${p}`,{key:3,item:i,data:s.data})],64))),128))])]))],2)])],2))}}),rl=["onClick"],ce=D(e.defineComponent({__name:"CopyNotification",setup(r,{expose:l}){const t=e.ref([]);let o=1;const n=()=>{if(t.value.length>=10){const h=t.value[0];clearTimeout(h.timer),t.value.shift()}const a={id:o++,timer:setTimeout(()=>{g(a.id)},1500)};t.value.push(a)},g=a=>{const h=t.value.findIndex(m=>m.id===a);if(h!==-1){const m=t.value[h];clearTimeout(m.timer),t.value.splice(h,1)}};return l({addNotification:n}),e.onUnmounted(()=>{t.value.forEach(a=>{clearTimeout(a.timer)})}),(a,h)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.TransitionGroup,{name:"notification",tag:"div",class:"fixed top-4 right-4 z-50 space-y-2"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"bg-green-500 text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-64 max-w-sm"},[e.createVNode(e.unref(ke),{class:"h-5 w-5 text-green-100 flex-shrink-0"}),h[0]||(h[0]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("p",{class:"font-medium text-sm"},"Ссылка скопирована!"),e.createElementVNode("p",{class:"text-xs text-green-100 opacity-90"},"Файл добавлен в буфер обмена")],-1)),e.createElementVNode("button",{onClick:x=>g(m.id),class:"text-green-100 hover:text-white transition-colors flex-shrink-0"},[e.createVNode(e.unref(Z),{class:"h-4 w-4"})],8,rl)]))),128))]),_:1})]))}}),[["__scopeId","data-v-55903525"]]);z.install=function(r){r.component("vs-widget-file",P),r.component("vs-widget-comments",H),r.component("vs-widget-history",O),r.component("vs-widget-gallery",W),r.component("vs-widget-map",R),r.component("vs-group-interface",U),r.component("CommentsWidget",H),r.component("HistoryWidget",O),r.component("GalleryWidget",W),r.component("FilesWidget",P),r.component("MapWidget",R),r.component("Card",z),r.component("CardItem",X),r.component("DescriptionListWidget",J),r.component("CopyNotification",ce),r.component("GroupInterfaceWidget",U)},N.Card=z,N.CardItem=X,N.CommentsWidget=H,N.CopyNotification=ce,N.DescriptionListWidget=J,N.FilesWidget=P,N.GalleryWidget=W,N.GroupInterfaceWidget=U,N.HistoryWidget=O,N.MapWidget=R,N.TableWidget=re,N.default=z,Object.defineProperties(N,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
131
+ */const Z=V("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),Le={class:"border-t pt-3 mt-4"},De={class:"flex gap-2"},Me={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Se={class:"flex-1 space-y-2"},Te={class:"flex justify-between items-center"},ze={class:"flex gap-2"},Fe=["disabled"],ne=e.defineComponent({__name:"CommentInputZone",props:{isReply:{type:Boolean,required:!1,default:!1},isReplyModifiers:{}},emits:e.mergeModels(["sendComment"],["update:isReply"]),setup(r,{emit:l}){const t=e.useModel(r,"isReply"),o=e.ref(""),n=l,g=()=>{o.value.trim()&&(n("sendComment",o.value),o.value="")},a=h=>{(h.ctrlKey||h.metaKey)&&h.key==="Enter"&&(h.preventDefault(),g())};return(h,m)=>(e.openBlock(),e.createElementBlock("div",Le,[e.createElementVNode("div",De,[e.createElementVNode("span",Me,[e.createVNode(e.unref(q),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Se,[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":m[0]||(m[0]=x=>o.value=x),onKeydown:a,placeholder:"Add a comment...",class:"w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"},null,544),[[e.vModelText,o.value]]),e.createElementVNode("div",Te,[m[4]||(m[4]=e.createElementVNode("span",{class:"text-xs text-gray-500 hidden sm:inline"},"Cmd+Enter to send",-1)),e.createElementVNode("div",ze,[t.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:m[1]||(m[1]=x=>t.value=!1)},[e.createVNode(e.unref(Z),{class:"h-3 w-3"}),m[2]||(m[2]=e.createTextVNode(" Cancel ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!o.value.trim(),onClick:g},[e.createVNode(e.unref(oe),{class:"h-3 w-3 mr-1"}),m[3]||(m[3]=e.createTextVNode(" Send ",-1))],8,Fe)])])])])]))}}),je={class:"z-50 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md w-32 outline-none pointer-events-auto"},Ie=e.defineComponent({__name:"CommentDetails",props:{showMoreOptions:{type:Boolean,required:!0,default:!1},showMoreOptionsModifiers:{}},emits:e.mergeModels(["edit","delete"],["update:showMoreOptions"]),setup(r,{emit:l}){const t=l,o=e.useModel(r,"showMoreOptions"),n=e.ref(),g=e.ref(!0),a=async x=>{o.value&&n.value&&!n.value.contains(x.target)&&!g.value&&(o.value=!1),g.value=!1},h=()=>{o.value=!1,t("edit")},m=()=>{o.value=!1,t("delete")};return e.onMounted(()=>{document.addEventListener("click",a)}),e.onUnmounted(()=>{document.removeEventListener("click",a)}),(x,k)=>(e.openBlock(),e.createElementBlock("div",{class:"absolute bg-white left-0 top-full transform min-w-max z-50",ref_key:"moreOptionsRef",ref:n},[e.createElementVNode("div",je,[e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs hover:bg-gray-100 transition-colors duration-300",onClick:h},[e.createVNode(e.unref(Ne),{class:"h-3 w-3 mr-2"}),k[0]||(k[0]=e.createTextVNode(" Edit ",-1))]),e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs text-red-600 hover:bg-gray-100 transition-colors duration-300",onClick:m},[e.createVNode(e.unref(G),{class:"h-3 w-3 mr-2"}),k[1]||(k[1]=e.createTextVNode(" Delete ",-1))])])],512))}}),Ae={class:"space-y-2"},He={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Oe={class:"flex-1 min-w-0 space-y-1 relative"},Pe={class:"flex items-center gap-2"},We={class:"font-medium text-xs"},Re={class:"text-xs text-gray-500"},Ue={key:0,class:"text-xs text-gray-700 leading-relaxed"},Ge={class:"flex justify-between text-xs"},qe={class:"flex items-center gap-2"},Ze={key:0,class:"flex gap-2"},Ke=["disabled"],Je={key:0,class:"ml-8 space-y-1 border-l-2 border-gray-100 pl-3"},Xe=e.defineComponent({__name:"CommentItem",props:{comment:{},isInside:{type:Boolean}},emits:["like","reply","edit","delete"],setup(r,{emit:l}){const t=l,o=r,n=e.ref(o.comment.text),g=e.ref("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"),a=e.ref("w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"),h=e.ref(!1),m=e.ref(!1),x=e.ref(!1),k=e.ref(!1),d=s=>{const c=new Date,i=Math.floor((c.getTime()-s.getTime())/(1e3*60*60));return i<1?`${Math.floor((c.getTime()-s.getTime())/6e4)}m`:i<24?`${i}h`:`${Math.floor(i/24)}d`},y=()=>{k.value=!k.value,k.value?t("like",o.comment.id,"add"):t("like",o.comment.id,"delete")},$=()=>{t("edit",o.comment.id,n.value),x.value=!1},u=(s,c)=>{t("like",s,c)},w=(s,c)=>{t("edit",s,c)};return(s,c)=>{const i=e.resolveComponent("CommentItem",!0);return e.openBlock(),e.createElementBlock("div",Ae,[e.createElementVNode("div",{class:e.normalizeClass(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative",x.value?"bg-gray-50":""])},[e.createElementVNode("span",He,[e.createVNode(e.unref(q),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Oe,[e.createElementVNode("div",Pe,[e.createElementVNode("span",We,e.toDisplayString(s.comment?.author),1),e.createElementVNode("span",Re,e.toDisplayString(d(s.comment?.createdAt)),1)]),x.value?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:1,"onUpdate:modelValue":c[0]||(c[0]=p=>n.value=p),class:e.normalizeClass(x.value?a.value:g.value)},null,2)),[[e.vModelText,n.value]]):(e.openBlock(),e.createElementBlock("p",Ue,e.toDisplayString(s.comment?.text),1)),e.createElementVNode("div",Ge,[e.createElementVNode("div",qe,[e.createElementVNode("button",{class:e.normalizeClass(["flex items-center gap-1",k.value?"text-blue-600":"text-gray-500 hover:text-blue-600 transition-colors"]),onClick:c[1]||(c[1]=p=>y())},[e.createVNode(e.unref(_e),{class:e.normalizeClass(["h-3 w-3",k.value?"fill-blue-600":""])},null,8,["class"]),e.createTextVNode(" "+e.toDisplayString(s.comment?.likes),1)],2),s.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"text-gray-500 hover:text-blue-600 transition-colors",onClick:c[2]||(c[2]=p=>m.value=!0)},[e.createVNode(e.unref(Be),{class:"h-3 w-3"})])),e.createElementVNode("button",{class:"text-gray-400 hover:text-gray-600 transition-colors opacity-0 group-hover:opacity-100",type:"button",onClick:c[3]||(c[3]=p=>h.value=!0)},[e.createVNode(e.unref(be),{class:"h-3 w-3"})])]),x.value?(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:c[4]||(c[4]=p=>x.value=!1)},[e.createVNode(e.unref(Z),{class:"h-3 w-3"}),c[11]||(c[11]=e.createTextVNode(" Cancel ",-1))]),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!n.value.trim(),onClick:c[5]||(c[5]=p=>$())},[e.createVNode(e.unref(oe),{class:"h-3 w-3 mr-1"}),c[12]||(c[12]=e.createTextVNode(" Send ",-1))],8,Ke)])):e.createCommentVNode("",!0)])]),h.value?(e.openBlock(),e.createBlock(Ie,{key:0,showMoreOptions:h.value,"onUpdate:showMoreOptions":c[6]||(c[6]=p=>h.value=p),onEdit:c[7]||(c[7]=p=>x.value=!0),onDelete:c[8]||(c[8]=p=>s.$emit("delete",s.comment?.id)),comment:s.comment},null,8,["showMoreOptions","comment"])):e.createCommentVNode("",!0)],2),s.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.comment?.replies,p=>(e.openBlock(),e.createBlock(i,{key:p.id,comment:p,isInside:!0,onDelete:_=>s.$emit("delete",p.id),onLike:u,onEdit:w},null,8,["comment","onDelete"]))),128)),m.value&&!s.isInside?(e.openBlock(),e.createBlock(ne,{key:0,onSendComment:c[9]||(c[9]=p=>s.$emit("reply",s.comment?.id,p)),isReply:m.value,"onUpdate:isReply":c[10]||(c[10]=p=>m.value=p)},null,8,["isReply"])):e.createCommentVNode("",!0)]))])}}}),Qe=["id"],Ye={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},H=e.defineComponent({__name:"CommentsWidget",props:{title:{},comments:{},maxHeight:{},onAddComment:{type:Function},onReply:{type:Function},onLike:{type:Function},onDelete:{type:Function},onEdit:{type:Function},id:{},className:{},style:{}},emits:["add","reply","like","delete","edit"],setup(r,{emit:l}){const t=r,o=l,n=e.ref(t.comments??[]);async function g(){if(!t.id)return;const d=await fetch(`/api/widget/comment/${t.id}`).then(y=>y.json());n.value=d.rows.map(y=>({id:y.communication_id,author:y.username,text:y.body,createdAt:new Date(y.cdate)}))}n.value.length===0&&g();const a=async d=>{t.onAddComment?t.onAddComment(d):t.id&&(await fetch(`/api/widget/comment/${t.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:d})}),await g()),o("add",d)},h=(d,y)=>{t?.onLike?.(d,y),o("like",d,y)},m=(d,y)=>{t.onReply?.(d,y),o("reply",d,y)},x=async(d,y)=>{t.onEdit?t.onEdit(d,y):t.id&&(await fetch(`/api/widget/comment/${t.id}/${d}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:y})}),await g()),o("edit",d,y)},k=async d=>{t.onDelete?t.onDelete(d):t.id&&(await fetch(`/api/widget/comment/${t.id}/${d}`,{method:"DELETE"}),await g()),o("delete",d)};return(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mx-auto font-sans",d.className]),id:d.id,style:e.normalizeStyle(d.style)},[d.title?(e.openBlock(),e.createElementBlock("h3",Ye,e.toDisplayString(d.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([d.maxHeight?"overflow-y-auto":"","space-y-3"]),style:e.normalizeStyle({maxHeight:d.maxHeight+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,$=>(e.openBlock(),e.createBlock(Xe,{key:$.id,comment:$,onReply:m,onLike:h,onDelete:y[0]||(y[0]=u=>k(u)),onEdit:x},null,8,["comment"]))),128))],6),e.createVNode(ne,{onSendComment:y[1]||(y[1]=$=>a($))})],14,Qe))}}),le=new Map([["file",{name:"File",color:"bg-green-100 text-green-700 border-green-200",icon:S}],["post",{name:"Post",color:"bg-blue-100 text-blue-700 border-blue-200",icon:Ve}],["user",{name:"User",color:"bg-purple-100 text-purple-700 border-purple-200",icon:$e}],["custom",{name:"Custom",color:"bg-gray-100 text-gray-700 border-gray-200",icon:we}]]),ve={class:"mx-auto font-sans"},et={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},tt={class:"relative"},ot={class:"space-y-3"},nt={class:"flex-1 min-w-0 pb-2"},lt={class:"flex items-center gap-1.5 mb-1 mt-0.5"},st={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},at={class:"font-medium text-xs"},rt={class:"text-xs text-gray-500"},it={class:"space-y-1"},ct={class:"text-xs text-gray-700"},dt={class:"capitalize mr-1"},mt={key:0,class:"inline-flex items-center rounded-full border py-0.5 font-semibold transition-colors text-foreground text-xs h-4 px-1 capitalize"},pt={key:0,class:"flex items-center gap-1 text-xs"},gt={key:0,class:"bg-red-50 text-red-600 px-1.5 py-0.5 rounded text-xs border border-red-200"},ft={key:2,class:"bg-green-50 text-green-600 px-1.5 py-0.5 rounded text-xs border border-green-200"},O=e.defineComponent({__name:"HistoryWidget",props:{data:{},title:{},maxHeight:{},id:{},className:{},style:{}},setup(r){const l=r,t=e.ref(Array.isArray(l.data)?l.data:[]);t.value.length===0&&l.id&&o();async function o(){const n=await fetch(`/api/widget/history/${l.id}`);if(!n.ok)return{data:[]};const g=await n.json();g.rows.forEach(a=>{a.timestamp=new Date(a.cdate),a.id=a.entity_id,a.entityType=a.entity_type,a.entityId=a.entity_id,a.action=a.change_type,a.userId=a.change_user_id,a.userName=a.username,a.timestamp=new Date(a.cdate),a.description=a.username,a.status=a.username}),t.value=g.rows}return(n,g)=>(e.openBlock(),e.createElementBlock("div",ve,[n.title?(e.openBlock(),e.createElementBlock("h3",et,e.toDisplayString(n.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(n.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:n.maxHeight+"px"})},[e.createElementVNode("div",tt,[g[0]||(g[0]=e.createElementVNode("div",{class:"absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200"},null,-1)),e.createElementVNode("div",ot,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,a=>(e.openBlock(),e.createElementBlock("div",{class:"relative flex items-start gap-2",key:a?.id},[e.createElementVNode("div",{class:e.normalizeClass(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${e.unref(le).get(a?.entityType)?.color}`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(le).get(a?.entityType)?.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",nt,[e.createElementVNode("div",lt,[e.createElementVNode("span",st,[e.createVNode(e.unref(q),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("span",at,e.toDisplayString(a?.userName),1),e.createElementVNode("span",rt,e.toDisplayString(a?.timestamp.toLocaleTimeString("ua-UA",{hour:"2-digit",minute:"2-digit"})),1)]),e.createElementVNode("div",it,[e.createElementVNode("div",ct,[e.createElementVNode("span",dt,e.toDisplayString(a?.action),1),a?.entityId?(e.openBlock(),e.createElementBlock("span",mt,e.toDisplayString(a?.entityId),1)):e.createCommentVNode("",!0)]),a?.changes?.[a?.entityId]?(e.openBlock(),e.createElementBlock("div",pt,[a?.changes?.[a?.entityId]?.old?(e.openBlock(),e.createElementBlock("span",gt,e.toDisplayString(a?.changes?.[a?.entityId]?.old),1)):e.createCommentVNode("",!0),a?.changes?.[a?.entityId]?.old&&a?.changes?.[a?.entityId]?.new?(e.openBlock(),e.createBlock(e.unref(ye),{key:1,class:"h-2 w-2 text-gray-400"})):e.createCommentVNode("",!0),a?.changes?.[a?.entityId]?.new?(e.openBlock(),e.createElementBlock("span",ft,e.toDisplayString(a?.changes?.[a?.entityId]?.new),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])]))),128))])])],6)]))}}),ht={key:0,class:"text-xl font-semibold"},yt={class:"flex gap-1"},kt={class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-input bg-background hover:bg-accent hover:text-accent-foreground border rounded-md text-xs h-7 px-2 cursor-pointer"},bt=e.defineComponent({__name:"FileHeader",props:e.mergeModels({title:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["onAddFile"],["update:modelValue"]),setup(r){const l=e.useModel(r,"modelValue"),t={active:"bg-blue-100 text-black hover:bg-blue-100",inactive:"bg-white text-black hover:bg-blue-100"};return(o,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",o.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[o.title?(e.openBlock(),e.createElementBlock("h3",ht,e.toDisplayString(o.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",yt,[e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",l.value==="list"?t.active:t.inactive]),onClick:n[0]||(n[0]=g=>l.value="list")},[e.createVNode(e.unref(Ee),{class:"h-4 w-4"})],2),e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",l.value==="grid"?t.active:t.inactive]),onClick:n[1]||(n[1]=g=>l.value="grid")},[e.createVNode(e.unref(ue),{class:"h-4 w-4"})],2),e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:n[2]||(n[2]=g=>o.$emit("onAddFile",g))},null,32),e.createElementVNode("div",kt,[e.createVNode(e.unref(te),{class:"h-4 w-4"}),n[3]||(n[3]=e.createTextVNode(" Додати файл ",-1))])])])],2))}}),K={pdf:{color:"bg-red-100 text-red-700 border-red-200",icon:S,label:"PDF"},sketch:{color:"bg-gray-100 text-gray-700 border-gray-200",icon:xe,label:"SKETCH"},mp4:{color:"bg-purple-100 text-purple-700 border-purple-200",icon:Ce,label:"VIDEO"},docx:{color:"bg-blue-100 text-blue-700 border-blue-200",icon:S,label:"DOC"},zip:{color:"bg-orange-100 text-orange-700 border-orange-200",icon:he,label:"ARCHIVE"},png:{color:"bg-green-100 text-green-700 border-green-200",icon:ee,label:"IMAGE"},jpg:{color:"bg-green-100 text-green-700 border-green-200",icon:ee,label:"IMAGE"},xlsx:{color:"bg-emerald-100 text-emerald-700 border-emerald-200",icon:S,label:"EXCEL"},pptx:{color:"bg-amber-100 text-amber-700 border-amber-200",icon:S,label:"PPT"}};function se(r,l="en"){const t={month:"short",day:"numeric"};return new Intl.DateTimeFormat(l,t).format(r)}function ae(r){if(r===0)return"0 B";const l=1024,t=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(r)/Math.log(l));return`${parseFloat((r/Math.pow(l,o)).toFixed(1))} ${t[o]}`}const xt={class:"space-y-0.5"},ut=["onClick"],_t=["onClick"],wt={class:"flex items-center gap-2"},Et={class:"font-medium text-xs truncate hover:text-blue-600 cursor-pointer"},Bt={class:"hidden sm:block text-xs text-gray-500 w-16 text-right"},Vt={class:"hidden md:block text-xs text-gray-500 w-12 text-right"},Nt={class:"flex items-center gap-1"},$t=["onClick"],Ct=["onClick"],Lt=e.defineComponent({__name:"FileList",props:{files:{}},emits:["delete","download","openLightbox"],setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",xt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.files,o=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",key:o.id,onClick:e.withModifiers(n=>l.$emit("openLightbox",o),["stop"])},[e.createElementVNode("div",{class:e.normalizeClass(["p-1 rounded",e.unref(K)[o?.ext]?.color||"bg-blue-100 text-blue-700 border-blue-200"])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(K)[o?.ext]?.icon||e.unref(K).pdf.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",{class:"flex-1 min-w-0",onClick:n=>l.$emit("openLightbox",o)},[e.createElementVNode("div",wt,[e.createElementVNode("span",Et,e.toDisplayString(o?.uploaded_name||o?.name),1)])],8,_t),e.createElementVNode("div",Bt,e.toDisplayString(e.unref(ae)(o.size)),1),e.createElementVNode("div",Vt,e.toDisplayString(e.unref(se)(o.createdAt)),1),e.createElementVNode("div",Nt,[e.createElementVNode("button",{onClick:e.withModifiers(n=>l.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity"},[e.createVNode(e.unref(v),{class:"h-3 w-3"})],8,$t),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700",onClick:e.withModifiers(n=>l.$emit("delete",n,o?.file_id),["stop"])},[e.createVNode(e.unref(G),{class:"h-3 w-3"})],8,Ct)])],8,ut))),128))]))}}),Dt={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3"},Mt=["onClick"],St={class:"space-y-2"},Tt={class:"flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden"},zt=["src"],Ft={class:"space-y-1"},jt=["title"],It={class:"text-xs text-gray-500 text-left"},At={class:"absolute top-2 right-1 flex items-center gap-1"},Ht=["onClick"],Ot=["onClick"],Pt=e.defineComponent({__name:"FileGrid",props:{files:{}},emits:["delete","download","openLightbox"],setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",Dt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.files,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,onClick:e.withModifiers(n=>l.$emit("openLightbox",o),["stop"]),class:"group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"},[e.createElementVNode("div",St,[e.createElementVNode("div",Tt,[o.ext==="png"||o.ext==="jpg"||o.ext==="jpeg"||o.ext==="gif"||o.ext==="svg"||o.ext==="webp"?(e.openBlock(),e.createElementBlock("img",{key:0,src:`/file/resize?filepath=${o?.file_path}&w=500`,alt:"file",class:"w-full h-full object-cover"},null,8,zt)):(e.openBlock(),e.createBlock(e.unref(S),{key:1,class:"h-10 w-10 text-gray-500"}))]),e.createElementVNode("div",Ft,[e.createElementVNode("h3",{class:"font-medium text-xs leading-tight text-left",title:o.uploaded_name||o.name},e.toDisplayString(o.uploaded_name||o.name),9,jt),e.createElementVNode("p",It,e.toDisplayString(e.unref(se)(o.createdAt))+", "+e.toDisplayString(e.unref(ae)(o.size)),1)])]),e.createElementVNode("div",At,[e.createElementVNode("button",{onClick:e.withModifiers(n=>l.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-50"},[e.createVNode(e.unref(v),{class:"h-3 w-3"})],8,Ht),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700 hover:bg-red-50",onClick:e.withModifiers(n=>l.$emit("delete",n,o?.file_id),["stop"])},[e.createVNode(e.unref(G),{class:"h-3 w-3"})],8,Ot)])],8,Mt))),128))]))}}),Wt={class:"mx-auto font-sans"},Rt={key:1},P=e.defineComponent({__name:"FilesWidget",props:{title:{},view:{},files:{default:()=>[]},maxHeight:{},onAddFile:{},id:{},className:{},style:{},onDelete:{}},emits:["delete","add","openLightbox"],setup(r,{emit:l}){const t=r,o=e.ref(!1),n=e.ref(null),g=e.ref(!1),a=e.ref(0),h=e.ref(t.files??[]),m=l;h.value.length===0&&c();const x=(_,f)=>{n.value=f,o.value=!0},k=()=>{n.value&&(u(n.value),n.value=null,o.value=!1)},d=e.computed(()=>Array.isArray(h.value)?h.value.map(_=>_?.file_path):[]),y=_=>{const f=d.value.findIndex(B=>B===_.file_path);f!==-1&&(g.value=!0,a.value=f)},$=_=>{t.onAddFile?t.onAddFile(_):i(_),m("add",_)},u=_=>{t.onDelete?t.onDelete(_):p(_),m("delete",_)},w=_=>{const f=document.createElement("a");f.setAttribute("download",_?.uploaded_name||_?.name),f.href=_?.file_path||_?.path,f.click()},s=e.ref("list");async function c(){if(!t.id)return;const _=await fetch(`/api/widget/file/${t.id}`).then(f=>f.json());_.rows.forEach(f=>{f.timestamp=new Date(f.cdate),f.id=f.entity_id,f.entityType=f.entity_type,f.entityId=f.entity_id,f.entityType=f.entity_type,f.action=f.change_type,f.userId=f.change_user_id,f.userName=f.username,f.timestamp=new Date(f.cdate),f.description=f.username,f.status=f.username}),h.value=_.rows}const i=async _=>{if(!(!_.target||!_.target.files||_.target.files.length===0))try{await Promise.all(Array.from(_.target.files).map(async f=>{const B=new FormData;B.append("file",f);const b=`/api/widget/file/${t.id}`,E=await fetch(b,{method:"POST",body:B});if(!E.ok)throw new Error(`HTTP error! status: ${E.status}`);return f})),await c()}catch(f){console.error("Помилка при завантаженні файлів:",f)}},p=async _=>{try{await fetch(`/api/widget/file/${t.id}/${_}`,{method:"DELETE"}),await c()}catch(f){console.error(f)}};return(_,f)=>{const B=e.resolveComponent("MessageBox"),b=e.resolveComponent("Lightbox");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Wt,[e.createVNode(bt,{modelValue:s.value,"onUpdate:modelValue":f[0]||(f[0]=E=>s.value=E),title:t.title,onOnAddFile:f[1]||(f[1]=E=>$(E))},null,8,["modelValue","title"]),h.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(_.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:_.maxHeight+"px"})},[s.value==="list"?(e.openBlock(),e.createBlock(Lt,{key:0,onDelete:x,onDownload:w,onOpenLightbox:f[2]||(f[2]=E=>y(E)),files:h.value},null,8,["files"])):e.createCommentVNode("",!0),s.value==="grid"?(e.openBlock(),e.createBlock(Pt,{key:1,onDelete:x,onDownload:w,onOpenLightbox:f[3]||(f[3]=E=>y(E)),files:h.value},null,8,["files"])):e.createCommentVNode("",!0)],6)):(e.openBlock(),e.createElementBlock("div",Rt,[...f[6]||(f[6]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Файлів не знайдено")],-1)])]))]),e.createVNode(B,{modelValue:o.value,"onUpdate:modelValue":f[4]||(f[4]=E=>o.value=E),onConfirm:k,title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати"},null,8,["modelValue"]),e.createVNode(b,{modelValue:g.value,"onUpdate:modelValue":f[5]||(f[5]=E=>g.value=E),images:d.value,"start-index":a.value},null,8,["modelValue","images","start-index"])],64)}}}),Ut={key:0,class:"image-wrapper h-full max-h-[400px]",id:"lightbox-gallery"},Gt=["onClick"],qt={key:0,rel:"noreferrer",class:"relative block h-full w-full"},Zt=["src"],Kt={key:0,class:"thumb-cover"},Jt=e.defineComponent({__name:"GalleryContent",props:{title:{},items:{},columns:{},maxHeight:{},onAddImage:{type:Function},onDelete:{type:Function},id:{},className:{},style:{}},emits:["delete"],setup(r,{emit:l}){const t=l,o=e.ref(!1),n=e.ref(0),g=r,a=e.computed(()=>Array.isArray(g.items)?g.items.map(m=>m?.file_path):[]),h=m=>{const x=a.value.findIndex(k=>k===m.file_path);x!==-1&&(o.value=!0,n.value=x)};return(m,x)=>{const k=e.resolveComponent("Lightbox");return m.items?.length>=1?(e.openBlock(),e.createElementBlock("div",Ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.items,(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["h-full w-full image"+y,"cursor-pointer bg-teal-500 rounded-[3px]"]),key:y,onClick:e.withModifiers($=>h(d),["stop"])},[y<5?(e.openBlock(),e.createElementBlock("div",qt,[e.createElementVNode("img",{src:`/file/resize?filepath=${d?.file_path}&w=500`,alt:"alt",height:"auto",width:"100%",class:e.normalizeClass(["object-cover h-full w-full bg-gray-200 rounded-[3px]",y===0?"max-h-[411px]":"max-h-[calc((411px-3px)/2)]"])},null,10,Zt),y===4&&m.items?.length>5?(e.openBlock(),e.createElementBlock("div",Kt," +"+e.toDisplayString(m.items?.length-5),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,Gt))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Math.max(0,5-m.items.length),d=>(e.openBlock(),e.createElementBlock("div",{key:"empty-"+d,class:e.normalizeClass(["h-full w-full image"+(m.items.length+d-1),"bg-gray-300 rounded-[3px]"])},null,2))),128)),e.createVNode(k,{modelValue:o.value,"onUpdate:modelValue":x[0]||(x[0]=d=>o.value=d),images:a.value,"start-index":n.value,delete:"true",download:"true",onDelete:x[1]||(x[1]=d=>t("delete",d))},null,8,["modelValue","images","start-index"])])):e.createCommentVNode("",!0)}}}),Xt={key:0,class:"text-xl font-semibold"},Qt={class:"flex gap-1"},Yt={class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-input bg-background hover:bg-accent hover:text-accent-foreground border rounded-md text-xs h-7 px-2 cursor-pointer"},vt=e.defineComponent({__name:"widgetHeader",props:{title:{}},emits:["onAddImage"],setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",l.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[l.title?(e.openBlock(),e.createElementBlock("h3",Xt,e.toDisplayString(l.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Qt,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:t[0]||(t[0]=o=>l.$emit("onAddImage",o))},null,32),e.createElementVNode("div",Yt,[e.createVNode(e.unref(te),{class:"h-4 w-4"}),t[1]||(t[1]=e.createTextVNode(" Додати зображення ",-1))])])])],2))}}),eo={class:"w-full mx-auto font-sans",ref:"containerRef"},to={key:1},W=e.defineComponent({__name:"GalleryWidget",props:{title:{},items:{default:()=>[]},columns:{},maxHeight:{},onAddImage:{},onDelete:{},id:{},className:{},style:{}},emits:["delete","add","openLightbox"],setup(r,{emit:l}){const t=r,o=e.ref(t.items??[]),n=l;o.value.length===0&&m();const g=k=>{t.onAddImage?t.onAddImage(k):h(k),n("add",k)},a=k=>{const d=o.value.find(y=>y.file_path===k)?.file_id;d&&(t.onDelete?t.onDelete(d):x(d))},h=async k=>{if(!(!k.target||!k.target.files||k.target.files.length===0))try{await Promise.all(Array.from(k.target.files).map(async d=>{const y=new FormData;y.append("file",d);const $=`/api/widget/file/${t.id}`,u=await fetch($,{method:"POST",body:y});if(!u.ok)throw new Error(`HTTP error! status: ${u.status}`);return d})),await m()}catch(d){console.error("Помилка при завантаженні файлів:",d)}};async function m(){if(!t.id)return;const k=await fetch(`/api/widget/file/${t.id}`).then(d=>d.json());o.value=k.rows}const x=async k=>{try{await fetch(`/api/widget/file/${t.id}/${k}`,{method:"DELETE"}),await m()}catch(d){console.error(d)}};return(k,d)=>(e.openBlock(),e.createElementBlock("div",eo,[e.createVNode(vt,{title:k.title,onOnAddImage:d[0]||(d[0]=y=>g(y))},null,8,["title"]),o.value.length>0?(e.openBlock(),e.createBlock(Jt,{key:0,items:o.value,onDelete:d[1]||(d[1]=y=>a(y))},null,8,["items"])):(e.openBlock(),e.createElementBlock("div",to,[...d[2]||(d[2]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Зображень не знайдено")],-1)])]))],512))}}),oo={class:"text-value"},no={class:"text-sm text-gray-900"},lo=e.defineComponent({__name:"TextValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{const o=l.item.value;return typeof o=="boolean"?o?"Так":"Ні":o==null?"—":String(o)});return(o,n)=>(e.openBlock(),e.createElementBlock("div",oo,[e.createElementVNode("span",no,e.toDisplayString(t.value),1)]))}}),D=(r,l)=>{const t=r.__vccOpts||r;for(const[o,n]of l)t[o]=n;return t},so=D(lo,[["__scopeId","data-v-c14550b7"]]),ao={class:"link-value"},ro=["href"],io=D(e.defineComponent({__name:"LinkValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{const o=String(l.item.value);try{const n=new URL(o);return n.hostname+n.pathname}catch{return o}});return(o,n)=>(e.openBlock(),e.createElementBlock("div",ao,[e.createElementVNode("a",{href:String(o.item.value),target:"_blank",rel:"noopener noreferrer",class:"text-blue-600 hover:text-blue-800 underline text-sm"},[e.createTextVNode(e.toDisplayString(t.value)+" ",1),n[0]||(n[0]=e.createElementVNode("i",{class:"fas fa-external-link-alt ml-1 text-xs"},null,-1))],8,ro)]))}}),[["__scopeId","data-v-e6eb07a6"]]),co={class:"date-value"},mo={class:"text-sm text-gray-900"},po=D(e.defineComponent({__name:"DateValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{const o=l.item.value;if(o instanceof Date)return o.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"});if(typeof o=="string"){const n=new Date(o);if(!isNaN(n.getTime()))return n.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})}return String(o)});return(o,n)=>(e.openBlock(),e.createElementBlock("div",co,[e.createElementVNode("span",mo,e.toDisplayString(t.value),1)]))}}),[["__scopeId","data-v-b9600618"]]),go={class:"status-value"},fo={key:0,class:"mr-1"},ho=D(e.defineComponent({__name:"StatusValue",props:{item:{}},setup(r){const l=r,t=e.computed(()=>{switch(String(l.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"bg-green-100 text-green-800";case"inactive":case"неактивний":case"pending":case"очікує":return"bg-yellow-100 text-yellow-800";case"error":case"помилка":case"failed":case"неуспішно":return"bg-red-100 text-red-800";case"draft":case"чернетка":return"bg-gray-100 text-gray-800";default:return"bg-blue-100 text-blue-800"}}),o=e.computed(()=>{switch(String(l.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"fas fa-check-circle";case"inactive":case"неактивний":case"pending":case"очікує":return"fas fa-clock";case"error":case"помилка":case"failed":case"неуспішно":return"fas fa-exclamation-circle";case"draft":case"чернетка":return"fas fa-edit";default:return"fas fa-info-circle"}});return(n,g)=>(e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("span",{class:e.normalizeClass(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",t.value])},[o.value?(e.openBlock(),e.createElementBlock("span",fo,[e.createElementVNode("i",{class:e.normalizeClass(o.value)},null,2)])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(String(n.item.value)),1)],2)]))}}),[["__scopeId","data-v-c72e0b01"]]),yo={class:"custom-value"},ko={class:"text-sm text-gray-900"},bo=D(e.defineComponent({__name:"CustomValue",props:{item:{}},setup(r){return(l,t)=>(e.openBlock(),e.createElementBlock("div",yo,[e.renderSlot(l.$slots,"default",{item:l.item,value:l.item.value},()=>[e.createElementVNode("span",ko,e.toDisplayString(String(l.item.value)),1)],!0)]))}}),[["__scopeId","data-v-11a73810"]]),xo=["id"],uo={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},_o={key:1,class:"overflow-x-auto"},wo={class:"min-w-full divide-y divide-gray-200"},Eo={class:"bg-white divide-y divide-gray-200"},Bo={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Vo={class:"flex items-center gap-2"},No=["title"],$o={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},Co={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},Lo={class:"flex items-start gap-3"},Do={key:0,class:"flex-shrink-0"},Mo={class:"flex-1 min-w-0"},So={class:"flex items-center gap-2 mb-2"},To={class:"text-sm font-medium text-gray-900"},zo=["title"],Fo={key:3,class:"overflow-x-auto"},jo={class:"min-w-full divide-y divide-gray-200"},Io={class:"bg-white divide-y divide-gray-200"},Ao={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Ho={class:"flex items-center gap-2"},Oo=["title"],Po={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},J=D(e.defineComponent({__name:"DescriptionListWidget",props:{title:{},items:{},view:{},id:{},className:{},style:{}},setup(r){const l=t=>{switch(t.type){case"link":return io;case"date":return po;case"status":return ho;case"custom":return bo;default:return so}};return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["description-list-widget",t.className]),id:t.id,style:e.normalizeStyle(t.style)},[t.title?(e.openBlock(),e.createElementBlock("h3",uo,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.view==="table"?(e.openBlock(),e.createElementBlock("div",_o,[e.createElementVNode("table",wo,[e.createElementVNode("tbody",Eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.id||n.label},[e.createElementVNode("td",Bo,[e.createElementVNode("div",Vo,[n.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([n.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:n.tooltip},[...o[0]||(o[0]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)])],8,No)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",$o,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(n)),{item:n},null,8,["item"]))])]))),128))])])])):t.view==="grid"?(e.openBlock(),e.createElementBlock("div",Co,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("div",{key:n.id||n.label,class:"description-item-card bg-white border border-gray-200 rounded-lg p-4"},[e.createElementVNode("div",Lo,[n.icon?(e.openBlock(),e.createElementBlock("div",Do,[e.createElementVNode("i",{class:e.normalizeClass([n.icon,"text-gray-500 text-lg"])},null,2)])):e.createCommentVNode("",!0),e.createElementVNode("div",Mo,[e.createElementVNode("div",So,[e.createElementVNode("h4",To,e.toDisplayString(n.label),1),n.tooltip?(e.openBlock(),e.createElementBlock("span",{key:0,class:"text-gray-400 cursor-help",title:n.tooltip},[...o[1]||(o[1]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)])],8,zo)):e.createCommentVNode("",!0)]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(n)),{item:n},null,8,["item"]))])])]))),128))])):(e.openBlock(),e.createElementBlock("div",Fo,[e.createElementVNode("table",jo,[e.createElementVNode("tbody",Io,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.id||n.label},[e.createElementVNode("td",Ao,[e.createElementVNode("div",Ho,[n.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([n.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:n.tooltip},[...o[2]||(o[2]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)])],8,Oo)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",Po,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(n)),{item:n},null,8,["item"]))])]))),128))])])]))],14,xo))}}),[["__scopeId","data-v-36d43e50"]]),Wo={draw:{toolbar:{actions:{title:"Скасувати малювання",text:"Скасувати"},finish:{title:"Завершити малювання",text:"Завершити"},undo:{title:"Видалити останню точку",text:"Видалити останню"},buttons:{polyline:"Намалювати лінію",polygon:"Намалювати полігон",rectangle:"Намалювати прямокутник",circle:"Намалювати коло",marker:"Додати точку",circlemarker:"Додати маркер-коло"}},handlers:{circle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати коло",end:"Відпустіть кнопку миші, щоб завершити"},radius:"Радіус"},circlemarker:{tooltip:{start:"Клацніть на карту, щоб додати маркер-коло"}},marker:{tooltip:{start:"Клацніть на карту, щоб додати точку"}},polygon:{tooltip:{start:"Клацніть, щоб почати малювати полігон",cont:"Клацайте, щоб продовжити малювати полігон",end:"Клацніть першу точку, щоб завершити полігон"}},polyline:{error:"<strong>Помилка:</strong> лінія не може перетинатися сама з собою",tooltip:{start:"Клацніть, щоб почати малювати лінію",cont:"Клацайте, щоб продовжити малювати лінію",end:"Клацніть останню точку, щоб завершити лінію"}},rectangle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати прямокутник",end:"Відпустіть кнопку миші, щоб завершити"}},simpleshape:{tooltip:{end:"Відпустіть кнопку миші, щоб завершити"}}}},edit:{toolbar:{actions:{save:{title:"Зберегти зміни",text:"Зберегти"},cancel:{title:"Скасувати редагування",text:"Скасувати"},clearAll:{title:"Очистити всі шари",text:"Очистити все"}},buttons:{edit:"Редагувати шари",editDisabled:"Немає шарів для редагування",remove:"Видалити шари",removeDisabled:"Немає шарів для видалення"}},handlers:{edit:{tooltip:{text:"Перетягніть маркери, щоб редагувати шари",subtext:"Натисніть 'Скасувати', щоб повернутися"}},remove:{tooltip:{text:"Клацніть на шари, щоб видалити їх"}}}}};function Ro(r){return r?r.type==="FeatureCollection"||r.type==="Feature"?r:r.geom?{type:"Feature",geometry:{type:r.geom.type,coordinates:r.geom.coordinates},properties:{}}:r.type&&r.coordinates?{type:"Feature",geometry:r,properties:{}}:null:null}const Uo={key:1,class:"bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"},Go={class:"flex items-center justify-between p-2 border-b"},qo={class:"p-2 border-b"},Zo={class:"flex items-center"},Ko=["value"],Jo={class:"ml-2"},Xo={class:"p-2"},Qo={class:"flex items-center"},Yo={class:"flex items-center"},vo=["onUpdate:modelValue","onChange"],en={class:"ml-2"},R=e.defineComponent({__name:"MapWidget",props:{pattern:{},geom:{},id:{},tms:{}},setup(r){const l=e.getCurrentInstance(),t=r,o=e.ref(null);let n,g;const a=f(),h=e.ref(Object.keys(a)[0]);let m;const x=e.ref(!0),k=e.ref(!1),d=e.ref(!1),y=e.ref($());function $(){return t.tms?(Array.isArray(t.tms)?t.tms:t.tms?.split(",")).map((b,E)=>({url:t.pattern?t.pattern.replace("{{id}}",b):b,name:"Шар "+E,visible:!0,i:E})):[]}function u(){return new Promise((B,b)=>{if(window.L&&window.L.Draw)return B(0);const E=M=>{if(Array.from(document.styleSheets).some(F=>F?.href?.includes(M)))return;const T=document.createElement("link");T.rel="stylesheet",T.href=M,document.head.appendChild(T)},C=M=>new Promise((Q,T)=>{const F=Array.from(document.scripts).find(I=>I.src===M);if(F){F.addEventListener("load",()=>Q()),F.addEventListener("error",I=>T(I));return}const j=document.createElement("script");j.src=M,j.async=!0,j.onload=()=>Q(),j.onerror=I=>T(I),document.body.appendChild(j)});E("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"),E("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css"),C("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").then(()=>C("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js")).then(()=>B(0)).catch(b)})}let w=!1;e.onMounted(async()=>{await u(),L.drawLocal=Wo;const B=l?.appContext.config.globalProperties.$settings?.center||[50,30];n=L.map(o.value,{zoomControl:!1}).setView(B,10),n.on("mousemove",E=>{w||(n.invalidateSize(),w=!0)}),L.control.zoom({position:"bottomright"}).addTo(n),m=L.tileLayer(a[h.value].url,{maxZoom:19}).addTo(n),g=new L.FeatureGroup().addTo(n),y.value.length&&_(0);const b=Ro(t.geom);if(b){const E=[];L.geoJSON(b).eachLayer(C=>E.push(C)),E.length&&g.addLayer(E[0]),g.toGeoJSON(),s()}});function s(B=30){const b=g.getLayers();if(!b.length)return;const C=L.featureGroup(b).getBounds();C&&C.isValid()&&n.fitBounds(C,{padding:[B,B],maxZoom:16})}function c(B){m&&m.removeFrom(n);const b=a[B];m=L.tileLayer(b.url,b.options||{}).addTo(n),m.bringToBack(),h.value=B}function i(){c(h.value)}function p(){g&&(x.value?g.addTo(n):g.removeFrom(n))}function _(B){const b=y.value[B];b.layer||(b.layer=L.tileLayer(b.url,{maxZoom:19})),b.visible?b.layer.addTo(n):b.layer.removeFrom(n)}function f(){return l?.appContext.config.globalProperties.$settings?.basemaps?l?.appContext.config.globalProperties.$settings?.basemaps.map((B,b)=>Object.assign(B,{key:`b${b}`,preview:B.preview||B.url.replace("{z}/{x}/{y}.png","13/4790/2762.png")})).reduce((B,b)=>({...B,[b.key]:b}),{}):{topo100:{url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"},orto10:{url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"},osmb:{url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",preview:"https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"}}}return e.watch(k,()=>{setTimeout(()=>{n.invalidateSize()},50)}),(B,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value?"fixed inset-0 w-screen h-screen z-[9999] bg-white":"relative min-h-[300px] h-full pb-[3.25rem]")},[e.createElementVNode("div",{ref_key:"mapContainer",ref:o,class:"w-full h-full min-h-[300px]"},null,512),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,onClick:b[0]||(b[0]=E=>d.value=!0),class:"z-[500] bg-white absolute top-[10px] right-[10px] p-2 border rounded-lg cursor-pointer layers-button"}," Шари ")),d.value?(e.openBlock(),e.createElementBlock("div",Uo,[e.createElementVNode("div",Go,[b[6]||(b[6]=e.createElementVNode("div",null,"Шари",-1)),(e.openBlock(),e.createElementBlock("svg",{onClick:b[1]||(b[1]=E=>d.value=!1),xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"icon icon-tabler icons-tabler-outline icon-tabler-x w-4 h-4"},[...b[5]||(b[5]=[e.createElementVNode("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),e.createElementVNode("path",{d:"M18 6l-12 12"},null,-1),e.createElementVNode("path",{d:"M6 6l12 12"},null,-1)])]))]),e.createElementVNode("div",qo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(E,C)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("label",Zo,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"base-layer",value:C,"onUpdate:modelValue":b[2]||(b[2]=M=>h.value=M),onChange:i},null,40,Ko),[[e.vModelRadio,h.value]]),e.createElementVNode("span",Jo,e.toDisplayString(E.name||C),1)])]))),256))]),e.createElementVNode("div",Xo,[e.createElementVNode("label",Qo,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":b[3]||(b[3]=E=>x.value=E),onChange:p},null,544),[[e.vModelCheckbox,x.value]]),b[7]||(b[7]=e.createElementVNode("span",{class:"ml-2"}," Геометрія/Межі ",-1))]),t.tms?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y.value,E=>(e.openBlock(),e.createElementBlock("label",Yo,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":C=>E.visible=C,onChange:C=>_(E.i)},null,40,vo),[[e.vModelCheckbox,E.visible]]),e.createElementVNode("span",en,e.toDisplayString(E.name),1)]))),256)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["absolute z-[500] bg-white p-2 border rounded-lg cursor-pointer fullscreen-button",k.value?"bottom-[100px] right-[7px]":"bottom-[150px] right-[7px]"]),onClick:b[4]||(b[4]=E=>k.value=!k.value)},[...b[8]||(b[8]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 8V4h4M20 8V4h-4M4 16v4h4m12-4v4h-4"})],-1)])],2)],2))}}),tn={class:"flex justify-between items-center mb-[15px]"},on={class:"font-semibold text-[16px]"},nn={class:"overflow-x-auto"},ln={class:"min-w-full relative divide-y-2 divide-gray-200 bg-white min-w-full overflow-auto divide-y-2 divide-gray-200 bg-white text-[12px] text-gray-600"},sn={class:"text-left font-medium text-gray-700"},an={class:"py-2 min-w-[200px]"},rn={key:0,class:"py-2 min-w-[200px]"},cn={class:"divide-y divide-gray-200"},dn={class:"bg-white odd:bg-gray-50"},mn={class:"py-2 pr-5"},pn=["href"],gn={class:"py-2 pr-5 gap-2 inline-flex"},fn=["onClick"],hn=["onClick"],re=e.defineComponent({__name:"TableWidget",props:{name:{},label:{},component:{},slot:{},col:{},width:{},html:{},title:{},type:{},token:{},count:{},props:{},items:{}},setup(r){const l=e.getCurrentInstance(),t=e.ref([]),o=e.ref([]),n=r,g=e.ref([]),a=e.ref(""),h=e.ref("");async function m(){const s=await fetch("/api/data/"+n.token).then(c=>c.json());t.value=s.rows,o.value=s.columns,g.value=s.actions,a.value=s.form,h.value=s.addToken}const{$notify:x=console.log,$confirm:k,$form:d}=l?.appContext?.config?.globalProperties||{};async function y(s){await d({token:s.token}),m()}function $(){d({token:h.value})}function u(s){k({title:"Підтвердіть дію",type:"error",message:"Ви впевненні що бажаєте видалити даний рядок?",onConfirm:async()=>{const c=await fetch(`/api/table/${s.token}`,{method:"DELETE"});if(!c.ok){const{error:i,code:p}=await c.json();x({title:"Помилка",type:"warning",message:i});return}x({title:"Видаленно",message:"Успішно видалено"}),await m()}})}e.onMounted(async()=>{await m()});function w(s,c){return c.format?.toLowerCase()==="text"?s[c.name]:s[c.name+"_data"]??s[c.name+"_text"]??"-"}return(s,c)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",tn,[e.createElementVNode("div",on,e.toDisplayString(s.title),1),g.value.includes("add")&&h.value?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:$,class:"px-2 py-1 inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border border-transparent hover:text-white ring-offset-white bg-blue-100 text-blue-500 hover:bg-blue-500 focus:ring-blue-500"},"Додати")):e.createCommentVNode("",!0)]),e.createElementVNode("div",nn,[e.createElementVNode("table",ln,[e.createElementVNode("thead",sn,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,i=>(e.openBlock(),e.createElementBlock("th",an,e.toDisplayString(i.ua),1))),256)),g.value.includes("edit")?(e.openBlock(),e.createElementBlock("th",rn," Дії ")):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,i=>(e.openBlock(),e.createElementBlock("tr",dn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,p=>(e.openBlock(),e.createElementBlock("td",mn,[p.link?(e.openBlock(),e.createElementBlock("a",{key:0,href:p.link.replace("{{id}}",i.id),class:"font-medium cursor-pointer text-start text-wrap text-cyan-800 decoration-2 focus:outline-none focus:underline hover:text-cyan-700 hover:underline"},e.toDisplayString(w(i,p)),9,pn)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(w(i,p)),1)],64))]))),256)),e.createElementVNode("td",gn,[i.token?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:p=>y(i),class:"inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"},[...c[0]||(c[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12px",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",fill:"none",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"}),e.createElementVNode("polygon",{fill:"none",points:"12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8",stroke:"#000000","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"})],-1)])],8,fn)):e.createCommentVNode("",!0),i.token?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:p=>u(i),class:"inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"},[...c[1]||(c[1]=[e.createStaticVNode('<svg class="flex-shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="12px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17"></line></svg>',1)])],8,hn)):e.createCommentVNode("",!0)])]))),256))])])])]))}}),yn={class:"p-[20px]"},kn={class:"flex gap-[6px] mb-5"},bn={class:"vs-form-text relative bg-white rounded-lg flex-grow"},xn={class:"grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6"},un={class:"mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200"},_n={class:"space-y-8"},wn={key:0},En={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Bn=["onClick"],Vn={class:"md:col-span-2"},Nn={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},$n={class:"text-sm text-gray-500 dark:text-neutral-500"},Cn={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},Ln=["checked","onChange"],Dn={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Mn={class:"md:col-span-2"},Sn={class:"font-semibold text-gray-800 dark:text-neutral-200"},Tn=["onClick"],zn={class:"md:col-span-2"},Fn={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},jn={class:"text-sm text-gray-500 dark:text-neutral-500"},In={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},An=["checked","onChange"],U=e.defineComponent({__name:"GroupInterfaceWidget",props:{data:{},id:{}},setup(r){const l=r,t=e.ref(""),o=["view","add","edit","del"],n=e.ref({});e.onMounted(async()=>{const w=await(await fetch(`/api/access-group/${l.id}?tab=vs-group-interface`)).json();w.routes&&w.routes.forEach(s=>{n.value[s.path]=new Set(s.actions)})});const g=(u,w)=>n.value[u]?.has(w)??!1,a=(u,w)=>{n.value[u]||(n.value[u]=new Set),n.value[u].has(w)?n.value[u].delete(w):n.value[u].add(w)},h=(u,w)=>{u.forEach(s=>{s.path&&(n.value[s.path]||(n.value[s.path]=new Set),n.value[s.path].has(w)?n.value[s.path].delete(w):n.value[s.path].add(w))})},m=e.computed(()=>Object.entries(n.value).map(([u,w])=>({path:u,actions:Array.from(w)})).filter(u=>u.actions.length)),x=async()=>{await fetch(`/api/access-group/${l.id}?tab=vs-group-interface`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes:m.value})}),console.log("Saved",m.value),de.notify({title:"Success!",message:"Permissions saved."})},k=()=>{n.value={}},d=u=>{if(!t.value.trim())return u;const w=t.value.toLowerCase();return u.filter(s=>s.ua.toLowerCase().includes(w)||s.path&&s.path.toLowerCase().includes(w))},y=e.computed(()=>d(l.data.routers.filter(u=>!u.menu))),$=e.computed(()=>l.data.routers.filter(u=>u.menu).map(u=>({...u,menu:d(u.menu||[])})).filter(u=>u.menu&&u.menu.length>0));return(u,w)=>(e.openBlock(),e.createElementBlock("div",yn,[e.createElementVNode("div",kn,[e.createElementVNode("div",bn,[w[1]||(w[1]=e.createElementVNode("i",{class:"absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti"},null,-1)),e.withDirectives(e.createElementVNode("input",{type:"text",placeholder:"Пошук","onUpdate:modelValue":w[0]||(w[0]=s=>t.value=s),class:"bg-white h-[38px] text-sm py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 rounded-lg text-sm text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,512),[[e.vModelText,t.value]])]),e.createElementVNode("button",{onClick:k,class:"inline-flex items-center px-3 py-2 text-sm font-medium duration-300 bg-white border rounded-lg gap-x-2 hover:bg-gray-100"}," Скинути всі "),e.createElementVNode("button",{onClick:x,class:"inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white"}," Зберегти ")]),e.createElementVNode("div",xn,[w[2]||(w[2]=e.createElementVNode("div",{class:"self-center col-span-2"},[e.createElementVNode("h2",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Групи")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(s,c)=>e.createElementVNode("div",{class:"col-span-1 text-center",key:c},[e.createElementVNode("h3",un,e.toDisplayString(s),1)])),64))]),e.createElementVNode("div",_n,[y.value.length?(e.openBlock(),e.createElementBlock("div",wn,[e.createElementVNode("ul",En,[w[3]||(w[3]=e.createElementVNode("li",{class:"md:col-span-2"},[e.createElementVNode("h3",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Без категорії")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(s,c)=>e.createElementVNode("li",{key:c,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:i=>h(y.value,o[c])}," Toggle all ",8,Bn)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,(s,c)=>(e.openBlock(),e.createElementBlock("ul",{key:"uncat-"+c,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",Vn,[e.createElementVNode("p",Nn,e.toDisplayString(s.ua),1),e.createElementVNode("p",$n,e.toDisplayString(s.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(i,p)=>e.createElementVNode("li",{key:p,class:"col-span-1"},[e.createElementVNode("div",Cn,[e.createElementVNode("input",{type:"checkbox",checked:g(s.path,i),onChange:_=>a(s.path,i),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,Ln)])])),64))]))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,(s,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"space-y-5"},[e.createElementVNode("ul",Dn,[e.createElementVNode("li",Mn,[e.createElementVNode("h3",Sn,e.toDisplayString(s.ua),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(i,p)=>e.createElementVNode("li",{key:p,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:_=>h(s.menu,o[p])}," Toggle all ",8,Tn)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.menu,(i,p)=>(e.openBlock(),e.createElementBlock("ul",{key:p,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",zn,[e.createElementVNode("p",Fn,e.toDisplayString(i.ua),1),e.createElementVNode("p",jn,e.toDisplayString(i.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(_,f)=>e.createElementVNode("li",{key:f,class:"col-span-1"},[e.createElementVNode("div",In,[e.createElementVNode("input",{type:"checkbox",checked:g(i.path,_),onChange:B=>a(i.path,_),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,An)])])),64))]))),128))]))),128))])]))}}),ie={"vs-widget-map":R,"vs-widget-comments":H,"vs-widget-history":O,"vs-widget-gallery":W,"vs-widget-file":P,"vs-widget-list":J,"vs-widget-table":re,"vs-group-interface":U},Hn={key:0,class:"mb-4 pb-2 border-b border-gray-200"},On={class:"text-lg font-semibold text-gray-900"},Pn=["innerHTML"],Wn={key:0,class:"mb-4 pb-2 border-b border-gray-200"},Rn={class:"text-lg font-semibold text-gray-900"},Un=["innerHTML"],X=e.defineComponent({__name:"CardItem",props:{items:{},type:{},col:{},data:{},html:{},title:{},name:{},label:{},component:{},slot:{},id:{},className:{},style:{}},setup(r){const l=r;console.log(l.data);const t=e.computed(()=>l.col?{[`lg:col-span-${l.col}`]:!0}:{});function o(a){return ie[a]||a}const n=function(a={}){return a.props&&Object.entries(a.props).forEach(([h,m])=>{a[h]=l.data[m]}),a},g=e.computed(()=>{const a={};return l.col&&(a.col=l.col),a});return(a,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-full bg-gray-50 rounded-lg p-4 col-span-12",t.value])},[a.title?(e.openBlock(),e.createElementBlock("div",Hn,[e.createElementVNode("h3",On,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),a.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:a.html,class:"text-gray-900 leading-relaxed"},null,8,Pn)):a.type?.includes("tabs")?(e.openBlock(),e.createBlock(z,{key:2,view:a.type,panels:a.items,data:a.data},null,8,["view","panels","data"])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:3},e.renderList(a.items,m=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[m.title||m.label?(e.openBlock(),e.createElementBlock("div",Wn,[e.createElementVNode("h3",Rn,e.toDisplayString(m.title||m.label),1)])):e.createCommentVNode("",!0),m.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:m.html,class:"text-gray-900 leading-relaxed"},null,8,Un)):m.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o(m.component)),e.mergeProps({key:2,ref_for:!0},{geom:a.data.geom,id:a.data.id,...g.value,...n(m),data:a.data},{class:"w-full"}),null,16)):e.renderSlot(a.$slots,"default",{key:3})],64))),256))],2))}}),Gn={class:"grid grid-cols-12 gap-[20px]"},qn={key:0,class:"col-span-4"},Zn=["innerHTML"],Kn={key:0,class:"overflow-hidden w-full"},Jn={class:"flex border-b border-gray-200 bg-gray-50 relative"},Xn=["onClick"],Qn={class:"p-1"},Yn=["innerHTML"],vn={key:1,class:"flex w-full"},el={class:"flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative"},tl=["onClick"],ol={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"},nl={class:"flex-1 p-4"},ll=["innerHTML"],sl={key:2,class:"p-1 w-full"},al={class:"grid grid-cols-12 gap-4"},z=e.defineComponent({__name:"Card",props:{panels:{default:()=>[]},data:{default:()=>({})},view:{default:"plain"},classWrapper:{default:""},classPanel:{},normalizeTabs:{type:Boolean,default:!0},id:{},className:{},style:{}},setup(r){const l=r,t=e.ref(0),o=e.ref([]);function n(s){return ie[s]||s}function g(s){return s.forEach(c=>{c.type&&(c.view=c.type)}),o.value=s.filter(c=>c.type==="pin"),s.filter(c=>c.type!=="pin")}const a=e.computed(()=>l.panels&&l.panels.length>0?l.normalizeTabs?g(l.panels):l.panels:l.data&&Array.isArray(l.data)?l.data.filter(c=>c.type.includes("tabs"))[0]?.items||[]:[]),h=e.computed(()=>l.panels&&l.panels.length>0?l.normalizeTabs?g(l.panels):l.panels:l.data&&Array.isArray(l.data)?l.data:[]),m=e.computed(()=>({[`view-${l.view}`]:!0})),x=s=>{const c={...s};return l.data&&(c.data=l.data),c},k=e.ref([]),d=e.ref([]),y=e.ref([]);function $(s,c){s&&s instanceof HTMLElement&&(k.value[c]=s)}function u(){d.value=k.value.map(s=>s.offsetWidth),y.value=k.value.map(s=>s.offsetLeft)}let w=null;return e.onMounted(()=>{e.nextTick(()=>{u()}),w=new ResizeObserver(()=>u()),w.observe(document.body)}),e.onBeforeUnmount(()=>{w?.disconnect()}),e.watch(t,()=>{e.nextTick(()=>{u()})}),(s,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.classWrapper||m.value)},[e.createElementVNode("div",Gn,[o.value.length!==0?(e.openBlock(),e.createElementBlock("div",qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value[0].items,(i,p)=>(e.openBlock(),e.createElementBlock("div",{key:i.name||p,class:"w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"},[i.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.html,class:"text-gray-900 leading-relaxed"},null,8,Zn)):i.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component)),e.mergeProps({key:1,ref_for:!0},i.component==="Card"?i:x(i),{id:s.data.id,class:"w-full h-full"}),null,16,["id"])):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(o.value.length!==0?"col-span-8":"col-span-12")},[s.view==="tabs"?(e.openBlock(),e.createElementBlock("div",Kn,[e.createElementVNode("div",Jn,[d.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",style:e.normalizeStyle({width:d.value[t.value]+"px",left:y.value[t.value]+"px"})},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>(e.openBlock(),e.createElementBlock("button",{key:i.name||p,ref_for:!0,ref:_=>$(_,p),onClick:_=>t.value=p,class:e.normalizeClass(["relative px-4 py-3 text-sm font-medium transition-colors duration-300",t.value===p?"text-blue-600":"text-gray-600 hover:text-gray-800"])},e.toDisplayString(i.title||i.label||i.name||`Tab ${p+1}`),11,Xn))),128))]),e.createElementVNode("div",Qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:i.name||p,class:e.normalizeClass(["transition-all duration-300 ease-in-out",t.value===p?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",s.classPanel||"w-full border-gray-100 py-2"])},[i.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.html,class:"text-gray-900 leading-relaxed"},null,8,Yn)):s.$slots[`tab-${p}`]?e.renderSlot(s.$slots,`tab-${p}`,{key:1,item:i,data:s.data}):i.component||i.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component||i.name)),e.mergeProps({key:2,ref_for:!0},i.component==="Card"?i:x(i),{id:s.data.id,class:"w-full h-full"}),null,16,["id"])):e.renderSlot(s.$slots,i.slot||`tab-${p}`,{key:3,item:i,data:s.data})],2)),[[e.vShow,t.value===p]])),128))])])):s.view==="vertical-tabs"?(e.openBlock(),e.createElementBlock("div",vn,[e.createElementVNode("div",el,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>(e.openBlock(),e.createElementBlock("button",{key:i.name||p,onClick:_=>t.value=p,class:e.normalizeClass(["relative px-4 py-3 text-sm font-medium text-left transition-colors duration-300",t.value===p?"text-blue-600 bg-white":"text-gray-600 hover:text-gray-800 hover:bg-gray-100"])},[e.createTextVNode(e.toDisplayString(i.title||i.label||i.name||`Tab ${p+1}`)+" ",1),t.value===p?(e.openBlock(),e.createElementBlock("span",ol,[...c[0]||(c[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"currentColor",class:"remixicon text-blue-600 rounded-full bg-white shadow scale-90 opacity-100 transition ease-out"},[e.createElementVNode("path",{d:"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z"})],-1)])])):e.createCommentVNode("",!0)],10,tl))),128))]),e.createElementVNode("div",nl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(i,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:i.name||p,class:e.normalizeClass(["transition-all duration-300 ease-in-out",t.value===p?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",s.classPanel||"w-full border-gray-100 py-2"])},[i.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:i.html,class:"text-gray-900 leading-relaxed"},null,8,ll)):s.$slots[`tab-${p}`]?e.renderSlot(s.$slots,`tab-${p}`,{key:1,item:i,data:s.data}):i.component||i.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component||i.name)),e.mergeProps({key:2,ref_for:!0},i.component==="Card"?i:x(i),{id:s.data.id,class:"w-full h-full"}),null,16,["id"])):e.renderSlot(s.$slots,i.slot||`tab-${p}`,{key:3,item:i,data:s.data})],2)),[[e.vShow,t.value===p]])),128))])])):(e.openBlock(),e.createElementBlock("div",sl,[e.createElementVNode("div",al,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(i,p)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.name||p},[s.$slots[`panel-${p}`]?e.renderSlot(s.$slots,`panel-${p}`,{key:0,item:i,data:s.data}):i.items||i.html?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(X),e.mergeProps({key:1,ref_for:!0},x(i),{items:i.items,class:"w-full h-full"}),null,16,["items"])):i.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(i.component)),e.mergeProps({key:2,ref_for:!0},x(i),{class:"w-full h-full"}),null,16)):e.renderSlot(s.$slots,i.slot||`panel-${p}`,{key:3,item:i,data:s.data})],64))),128))])]))],2)])],2))}}),rl=["onClick"],ce=D(e.defineComponent({__name:"CopyNotification",setup(r,{expose:l}){const t=e.ref([]);let o=1;const n=()=>{if(t.value.length>=10){const h=t.value[0];clearTimeout(h.timer),t.value.shift()}const a={id:o++,timer:setTimeout(()=>{g(a.id)},1500)};t.value.push(a)},g=a=>{const h=t.value.findIndex(m=>m.id===a);if(h!==-1){const m=t.value[h];clearTimeout(m.timer),t.value.splice(h,1)}};return l({addNotification:n}),e.onUnmounted(()=>{t.value.forEach(a=>{clearTimeout(a.timer)})}),(a,h)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.TransitionGroup,{name:"notification",tag:"div",class:"fixed top-4 right-4 z-50 space-y-2"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"bg-green-500 text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-64 max-w-sm"},[e.createVNode(e.unref(ke),{class:"h-5 w-5 text-green-100 flex-shrink-0"}),h[0]||(h[0]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("p",{class:"font-medium text-sm"},"Ссылка скопирована!"),e.createElementVNode("p",{class:"text-xs text-green-100 opacity-90"},"Файл добавлен в буфер обмена")],-1)),e.createElementVNode("button",{onClick:x=>g(m.id),class:"text-green-100 hover:text-white transition-colors flex-shrink-0"},[e.createVNode(e.unref(Z),{class:"h-4 w-4"})],8,rl)]))),128))]),_:1})]))}}),[["__scopeId","data-v-55903525"]]);z.install=function(r){r.component("vs-widget-file",P),r.component("vs-widget-comments",H),r.component("vs-widget-history",O),r.component("vs-widget-gallery",W),r.component("vs-widget-map",R),r.component("vs-group-interface",U),r.component("CommentsWidget",H),r.component("HistoryWidget",O),r.component("GalleryWidget",W),r.component("FilesWidget",P),r.component("MapWidget",R),r.component("Card",z),r.component("CardItem",X),r.component("DescriptionListWidget",J),r.component("CopyNotification",ce),r.component("GroupInterfaceWidget",U)},N.Card=z,N.CardItem=X,N.CommentsWidget=H,N.CopyNotification=ce,N.DescriptionListWidget=J,N.FilesWidget=P,N.GalleryWidget=W,N.GroupInterfaceWidget=U,N.HistoryWidget=O,N.MapWidget=R,N.TableWidget=re,N.default=z,Object.defineProperties(N,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
@@ -1 +1 @@
1
- {"version":3,"file":"MapWidget.vue.d.ts","sourceRoot":"","sources":["../../../src/widgets/map/MapWidget.vue"],"names":[],"mappings":"AAwRA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;;AA+YD,wBAMG"}
1
+ {"version":3,"file":"MapWidget.vue.d.ts","sourceRoot":"","sources":["../../../src/widgets/map/MapWidget.vue"],"names":[],"mappings":"AA6QA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;;AAuYD,wBAMG"}
package/package.json CHANGED
@@ -1,58 +1,58 @@
1
- {
2
- "name": "@opengis/widgets",
3
- "private": false,
4
- "version": "0.0.21",
5
- "type": "module",
6
- "description": "A collection of independent widgets for comments, history, files, and gallery",
7
- "types": "./dist/index.d.ts",
8
- "main": "./dist/index.js",
9
- "files": [
10
- "dist"
11
- ],
12
- "scripts": {
13
- "dev": "vite",
14
- "build:ts": "vue-tsc -b && vite build",
15
- "type-check": "vue-tsc --noEmit -p tsconfig.app.json",
16
- "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.app.json",
17
- "build": "vue-tsc -b && vite build && npm run build:types",
18
- "build:app": "app=true vite build",
19
- "preview": "vite preview",
20
- "prepublishOnly": "bun run build"
21
- },
22
- "homepage": "https://widget.opengis.info/",
23
- "author": {
24
- "name": "OpenGIS",
25
- "url": "https://opengis.info/"
26
- },
27
- "keywords": [
28
- "widgets",
29
- "comments",
30
- "history",
31
- "files",
32
- "gallery",
33
- "vue",
34
- "components",
35
- "opengis"
36
- ],
37
- "license": "MIT",
38
- "dependencies": {},
39
- "devDependencies": {
40
- "@opengis/core": "^0.0.25",
41
- "@tsconfig/node22": "^22.0.2",
42
- "@types/node": "^24.2.0",
43
- "@vitejs/plugin-vue": "^6.0.0",
44
- "@vue/tsconfig": "^0.7.0",
45
- "autoprefixer": "^10.4.16",
46
- "lucide-vue-next": "^0.535.0",
47
- "postcss": "^8.4.31",
48
- "sass-embedded": "^1.92.1",
49
- "tailwindcss": "^3.4.0",
50
- "typescript": "~5.8.3",
51
- "vite": "^7.0.0",
52
- "vue": "^3.0.0",
53
- "vue-tsc": "^2.2.12"
54
- },
55
- "peerDependencies": {
56
- "vue": "^3.0.0"
57
- }
1
+ {
2
+ "name": "@opengis/widgets",
3
+ "private": false,
4
+ "version": "0.0.22",
5
+ "type": "module",
6
+ "description": "A collection of independent widgets for comments, history, files, and gallery",
7
+ "types": "./dist/index.d.ts",
8
+ "main": "./dist/index.js",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "dev": "vite",
14
+ "build:ts": "vue-tsc -b && vite build",
15
+ "type-check": "vue-tsc --noEmit -p tsconfig.app.json",
16
+ "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.app.json",
17
+ "build": "vue-tsc -b && vite build && npm run build:types",
18
+ "build:app": "app=true vite build",
19
+ "preview": "vite preview",
20
+ "prepublishOnly": "bun run build"
21
+ },
22
+ "homepage": "https://widget.opengis.info/",
23
+ "author": {
24
+ "name": "OpenGIS",
25
+ "url": "https://opengis.info/"
26
+ },
27
+ "keywords": [
28
+ "widgets",
29
+ "comments",
30
+ "history",
31
+ "files",
32
+ "gallery",
33
+ "vue",
34
+ "components",
35
+ "opengis"
36
+ ],
37
+ "license": "MIT",
38
+ "dependencies": {},
39
+ "devDependencies": {
40
+ "@opengis/core": "^0.0.25",
41
+ "@tsconfig/node22": "^22.0.2",
42
+ "@types/node": "^24.2.0",
43
+ "@vitejs/plugin-vue": "^6.0.0",
44
+ "@vue/tsconfig": "^0.7.0",
45
+ "autoprefixer": "^10.4.16",
46
+ "lucide-vue-next": "^0.535.0",
47
+ "postcss": "^8.4.31",
48
+ "sass-embedded": "^1.92.1",
49
+ "tailwindcss": "^3.4.0",
50
+ "typescript": "~5.8.3",
51
+ "vite": "^7.0.0",
52
+ "vue": "^3.0.0",
53
+ "vue-tsc": "^2.2.12"
54
+ },
55
+ "peerDependencies": {
56
+ "vue": "^3.0.0"
57
+ }
58
58
  }