@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 +1 -1
- package/dist/index.js +119 -119
- package/dist/index.umd.cjs +1 -1
- package/dist/widgets/map/MapWidget.vue.d.ts.map +1 -1
- package/package.json +57 -57
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}.
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
}),
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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" },
|
|
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 = (
|
|
1684
|
-
if (Array.from(document.styleSheets).some((Y) => Y?.href?.includes(
|
|
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 =
|
|
1687
|
-
}, N = (
|
|
1688
|
-
const Y = Array.from(document.scripts).find((te) => te.src ===
|
|
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 =
|
|
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
|
|
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] = (
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
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",
|
|
1906
|
-
e("div",
|
|
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",
|
|
1914
|
-
e("table",
|
|
1915
|
-
e("thead",
|
|
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",
|
|
1918
|
-
h.value.includes("edit") ? (t(), a("th",
|
|
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",
|
|
1922
|
-
(t(!0), a(j, null, A(s.value, (c) => (t(), a("tr",
|
|
1923
|
-
(t(!0), a(j, null, A(n.value, (g) => (t(), a("td",
|
|
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,
|
|
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",
|
|
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,
|
|
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,
|
|
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
|
-
}),
|
|
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",
|
|
2034
|
-
e("div",
|
|
2035
|
-
e("div",
|
|
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",
|
|
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",
|
|
2063
|
+
e("h3", lo, _(i), 1)
|
|
2064
2064
|
])), 64))
|
|
2065
2065
|
]),
|
|
2066
|
-
e("div",
|
|
2067
|
-
v.value.length ? (t(), a("div",
|
|
2068
|
-
e("ul",
|
|
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,
|
|
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",
|
|
2088
|
-
e("p",
|
|
2089
|
-
e("p",
|
|
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",
|
|
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,
|
|
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",
|
|
2111
|
-
e("li",
|
|
2112
|
-
e("h3",
|
|
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,
|
|
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",
|
|
2130
|
-
e("p",
|
|
2131
|
-
e("p",
|
|
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",
|
|
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,
|
|
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":
|
|
2158
|
+
"vs-widget-table": to,
|
|
2159
2159
|
"vs-group-interface": ge
|
|
2160
|
-
},
|
|
2160
|
+
}, Mo = {
|
|
2161
2161
|
key: 0,
|
|
2162
2162
|
class: "mb-4 pb-2 border-b border-gray-200"
|
|
2163
|
-
},
|
|
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
|
-
},
|
|
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",
|
|
2204
|
-
e("h3",
|
|
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,
|
|
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",
|
|
2217
|
-
e("h3",
|
|
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,
|
|
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
|
-
}),
|
|
2230
|
+
}), zo = { class: "grid grid-cols-12 gap-[20px]" }, Ao = {
|
|
2231
2231
|
key: 0,
|
|
2232
2232
|
class: "col-span-4"
|
|
2233
|
-
},
|
|
2233
|
+
}, Vo = ["innerHTML"], Eo = {
|
|
2234
2234
|
key: 0,
|
|
2235
2235
|
class: "overflow-hidden w-full"
|
|
2236
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
2242
|
+
}, Ro = { class: "flex-1 p-4" }, Uo = ["innerHTML"], Go = {
|
|
2243
2243
|
key: 2,
|
|
2244
2244
|
class: "p-1 w-full"
|
|
2245
|
-
},
|
|
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",
|
|
2295
|
-
n.value.length !== 0 ? (t(), a("div",
|
|
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,
|
|
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",
|
|
2317
|
-
e("div",
|
|
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,
|
|
2335
|
+
}, _(c.title || c.label || c.name || `Tab ${g + 1}`), 11, So))), 128))
|
|
2336
2336
|
]),
|
|
2337
|
-
e("div",
|
|
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,
|
|
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",
|
|
2370
|
-
e("div",
|
|
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",
|
|
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,
|
|
2391
|
+
])])) : C("", !0)
|
|
2392
|
+
], 10, No))), 128))
|
|
2393
2393
|
]),
|
|
2394
|
-
e("div",
|
|
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,
|
|
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",
|
|
2427
|
-
e("div",
|
|
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
|
-
}),
|
|
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,
|
|
2507
|
+
], 8, Zo)
|
|
2508
2508
|
]))), 128))
|
|
2509
2509
|
]),
|
|
2510
2510
|
_: 1
|
|
2511
2511
|
})
|
|
2512
2512
|
]));
|
|
2513
2513
|
}
|
|
2514
|
-
}),
|
|
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",
|
|
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
|
-
|
|
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
|
-
|
|
2529
|
+
to as TableWidget,
|
|
2530
2530
|
he as default
|
|
2531
2531
|
};
|
package/dist/index.umd.cjs
CHANGED
|
@@ -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":"
|
|
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.
|
|
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
|
}
|