@opengis/widgets 0.0.16 → 0.0.18

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.js CHANGED
@@ -1,24 +1,24 @@
1
- import { h as ne, defineComponent as j, mergeModels as ee, useModel as ce, ref as $, createElementBlock as a, openBlock as s, createElementVNode as t, createVNode as M, unref as C, withDirectives as P, vModelText as xe, createCommentVNode as k, createTextVNode as E, onMounted as ue, onUnmounted as ke, resolveComponent as te, normalizeClass as D, createBlock as z, toDisplayString as _, Fragment as I, renderList as H, normalizeStyle as Q, resolveDynamicComponent as N, withModifiers as R, computed as S, renderSlot as q, vModelRadio as se, vModelCheckbox as he, getCurrentInstance as Ve, createStaticVNode as Ae, mergeProps as X, vShow as ze, Teleport as He, TransitionGroup as Ee, withCtx as Fe } from "vue";
1
+ import { h as le, defineComponent as V, mergeModels as se, useModel as ge, ref as M, createElementBlock as a, openBlock as t, createElementVNode as e, createVNode as z, unref as D, withDirectives as R, vModelText as he, createCommentVNode as $, createTextVNode as O, onMounted as ee, onUnmounted as Ce, resolveComponent as ne, normalizeClass as I, createBlock as H, toDisplayString as _, Fragment as T, renderList as j, normalizeStyle as J, resolveDynamicComponent as B, withModifiers as U, computed as N, renderSlot as W, getCurrentInstance as Le, vModelRadio as He, vModelCheckbox as be, createStaticVNode as Se, mergeProps as K, nextTick as xe, onBeforeUnmount as Fe, watch as Oe, vShow as ke, Teleport as Ne, TransitionGroup as Pe, withCtx as Be } from "vue";
2
2
  /**
3
3
  * @license lucide-vue-next v0.535.0 - ISC
4
4
  *
5
5
  * This source code is licensed under the ISC license.
6
6
  * See the LICENSE file in the root directory of this source tree.
7
7
  */
8
- const fe = (r) => r.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), Se = (r) => r.replace(
8
+ const _e = (c) => c.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), We = (c) => c.replace(
9
9
  /^([A-Z])|[\s-_]+(\w)/g,
10
- (i, o, e) => e ? e.toUpperCase() : o.toLowerCase()
11
- ), Oe = (r) => {
12
- const i = Se(r);
13
- return i.charAt(0).toUpperCase() + i.slice(1);
14
- }, Be = (...r) => r.filter((i, o, e) => !!i && i.trim() !== "" && e.indexOf(i) === o).join(" ").trim();
10
+ (l, s, n) => n ? n.toUpperCase() : s.toLowerCase()
11
+ ), Re = (c) => {
12
+ const l = We(c);
13
+ return l.charAt(0).toUpperCase() + l.slice(1);
14
+ }, Ue = (...c) => c.filter((l, s, n) => !!l && l.trim() !== "" && n.indexOf(l) === s).join(" ").trim();
15
15
  /**
16
16
  * @license lucide-vue-next v0.535.0 - ISC
17
17
  *
18
18
  * This source code is licensed under the ISC license.
19
19
  * See the LICENSE file in the root directory of this source tree.
20
20
  */
21
- var Y = {
21
+ var te = {
22
22
  xmlns: "http://www.w3.org/2000/svg",
23
23
  width: 24,
24
24
  height: 24,
@@ -35,21 +35,21 @@ var Y = {
35
35
  * This source code is licensed under the ISC license.
36
36
  * See the LICENSE file in the root directory of this source tree.
37
37
  */
38
- const Ne = ({ size: r, strokeWidth: i = 2, absoluteStrokeWidth: o, color: e, iconNode: n, name: b, class: l, ...v }, { slots: u }) => ne(
38
+ const Ge = ({ size: c, strokeWidth: l = 2, absoluteStrokeWidth: s, color: n, iconNode: o, name: f, class: r, ...v }, { slots: g }) => le(
39
39
  "svg",
40
40
  {
41
- ...Y,
42
- width: r || Y.width,
43
- height: r || Y.height,
44
- stroke: e || Y.stroke,
45
- "stroke-width": o ? Number(i) * 24 / Number(r) : i,
46
- class: Be(
41
+ ...te,
42
+ width: c || te.width,
43
+ height: c || te.height,
44
+ stroke: n || te.stroke,
45
+ "stroke-width": s ? Number(l) * 24 / Number(c) : l,
46
+ class: Ue(
47
47
  "lucide",
48
- ...b ? [`lucide-${fe(Oe(b))}-icon`, `lucide-${fe(b)}`] : ["lucide-icon"]
48
+ ...f ? [`lucide-${_e(Re(f))}-icon`, `lucide-${_e(f)}`] : ["lucide-icon"]
49
49
  ),
50
50
  ...v
51
51
  },
52
- [...n.map((p) => ne(...p)), ...u.default ? [u.default()] : []]
52
+ [...o.map((k) => le(...k)), ...g.default ? [g.default()] : []]
53
53
  );
54
54
  /**
55
55
  * @license lucide-vue-next v0.535.0 - ISC
@@ -57,14 +57,14 @@ const Ne = ({ size: r, strokeWidth: i = 2, absoluteStrokeWidth: o, color: e, ico
57
57
  * This source code is licensed under the ISC license.
58
58
  * See the LICENSE file in the root directory of this source tree.
59
59
  */
60
- const V = (r, i) => (o, { slots: e }) => ne(
61
- Ne,
60
+ const S = (c, l) => (s, { slots: n }) => le(
61
+ Ge,
62
62
  {
63
- ...o,
64
- iconNode: i,
65
- name: r
63
+ ...s,
64
+ iconNode: l,
65
+ name: c
66
66
  },
67
- e
67
+ n
68
68
  );
69
69
  /**
70
70
  * @license lucide-vue-next v0.535.0 - ISC
@@ -72,7 +72,7 @@ const V = (r, i) => (o, { slots: e }) => ne(
72
72
  * This source code is licensed under the ISC license.
73
73
  * See the LICENSE file in the root directory of this source tree.
74
74
  */
75
- const Pe = V("archive", [
75
+ const qe = S("archive", [
76
76
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
77
77
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
78
78
  ["path", { d: "M10 12h4", key: "a56b0p" }]
@@ -83,7 +83,7 @@ const Pe = V("archive", [
83
83
  * This source code is licensed under the ISC license.
84
84
  * See the LICENSE file in the root directory of this source tree.
85
85
  */
86
- const Ue = V("arrow-right", [
86
+ const Ke = S("arrow-right", [
87
87
  ["path", { d: "M5 12h14", key: "1ays0h" }],
88
88
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
89
89
  ]);
@@ -93,7 +93,7 @@ const Ue = V("arrow-right", [
93
93
  * This source code is licensed under the ISC license.
94
94
  * See the LICENSE file in the root directory of this source tree.
95
95
  */
96
- const Re = V("circle-check-big", [
96
+ const Ze = S("circle-check-big", [
97
97
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
98
98
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
99
99
  ]);
@@ -103,7 +103,7 @@ const Re = V("circle-check-big", [
103
103
  * This source code is licensed under the ISC license.
104
104
  * See the LICENSE file in the root directory of this source tree.
105
105
  */
106
- const _e = V("download", [
106
+ const Me = S("download", [
107
107
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
108
108
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
109
109
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
@@ -114,7 +114,7 @@ const _e = V("download", [
114
114
  * This source code is licensed under the ISC license.
115
115
  * See the LICENSE file in the root directory of this source tree.
116
116
  */
117
- const We = V("ellipsis", [
117
+ const Je = S("ellipsis", [
118
118
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
119
119
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
120
120
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
@@ -125,7 +125,7 @@ const We = V("ellipsis", [
125
125
  * This source code is licensed under the ISC license.
126
126
  * See the LICENSE file in the root directory of this source tree.
127
127
  */
128
- const G = V("file-text", [
128
+ const Z = S("file-text", [
129
129
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
130
130
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
131
131
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
@@ -138,7 +138,7 @@ const G = V("file-text", [
138
138
  * This source code is licensed under the ISC license.
139
139
  * See the LICENSE file in the root directory of this source tree.
140
140
  */
141
- const qe = V("file", [
141
+ const Xe = S("file", [
142
142
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
143
143
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
144
144
  ]);
@@ -148,7 +148,7 @@ const qe = V("file", [
148
148
  * This source code is licensed under the ISC license.
149
149
  * See the LICENSE file in the root directory of this source tree.
150
150
  */
151
- const Ge = V("grid-3x3", [
151
+ const Qe = S("grid-3x3", [
152
152
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
153
153
  ["path", { d: "M3 9h18", key: "1pudct" }],
154
154
  ["path", { d: "M3 15h18", key: "5xshup" }],
@@ -161,7 +161,7 @@ const Ge = V("grid-3x3", [
161
161
  * This source code is licensed under the ISC license.
162
162
  * See the LICENSE file in the root directory of this source tree.
163
163
  */
164
- const Ke = V("heart", [
164
+ const Ye = S("heart", [
165
165
  [
166
166
  "path",
167
167
  {
@@ -176,7 +176,7 @@ const Ke = V("heart", [
176
176
  * This source code is licensed under the ISC license.
177
177
  * See the LICENSE file in the root directory of this source tree.
178
178
  */
179
- const Ze = V("history", [
179
+ const et = S("history", [
180
180
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
181
181
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
182
182
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
@@ -187,7 +187,7 @@ const Ze = V("history", [
187
187
  * This source code is licensed under the ISC license.
188
188
  * See the LICENSE file in the root directory of this source tree.
189
189
  */
190
- const ye = V("image", [
190
+ const we = S("image", [
191
191
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
192
192
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
193
193
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
@@ -198,7 +198,7 @@ const ye = V("image", [
198
198
  * This source code is licensed under the ISC license.
199
199
  * See the LICENSE file in the root directory of this source tree.
200
200
  */
201
- const Je = V("list", [
201
+ const tt = S("list", [
202
202
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
203
203
  ["path", { d: "M3 18h.01", key: "1tta3j" }],
204
204
  ["path", { d: "M3 6h.01", key: "1rqtza" }],
@@ -212,7 +212,7 @@ const Je = V("list", [
212
212
  * This source code is licensed under the ISC license.
213
213
  * See the LICENSE file in the root directory of this source tree.
214
214
  */
215
- const we = V("plus", [
215
+ const Te = S("plus", [
216
216
  ["path", { d: "M5 12h14", key: "1ays0h" }],
217
217
  ["path", { d: "M12 5v14", key: "s699le" }]
218
218
  ]);
@@ -222,7 +222,7 @@ const we = V("plus", [
222
222
  * This source code is licensed under the ISC license.
223
223
  * See the LICENSE file in the root directory of this source tree.
224
224
  */
225
- const Xe = V("reply", [
225
+ const st = S("reply", [
226
226
  ["path", { d: "M20 18v-2a4 4 0 0 0-4-4H4", key: "5vmcpk" }],
227
227
  ["path", { d: "m9 17-5-5 5-5", key: "nvlc11" }]
228
228
  ]);
@@ -232,7 +232,7 @@ const Xe = V("reply", [
232
232
  * This source code is licensed under the ISC license.
233
233
  * See the LICENSE file in the root directory of this source tree.
234
234
  */
235
- const $e = V("send", [
235
+ const De = S("send", [
236
236
  [
237
237
  "path",
238
238
  {
@@ -248,7 +248,7 @@ const $e = V("send", [
248
248
  * This source code is licensed under the ISC license.
249
249
  * See the LICENSE file in the root directory of this source tree.
250
250
  */
251
- const Qe = V("sheet", [
251
+ const nt = S("sheet", [
252
252
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
253
253
  ["line", { x1: "3", x2: "21", y1: "9", y2: "9", key: "1vqk6q" }],
254
254
  ["line", { x1: "3", x2: "21", y1: "15", y2: "15", key: "o2sbyz" }],
@@ -261,7 +261,7 @@ const Qe = V("sheet", [
261
261
  * This source code is licensed under the ISC license.
262
262
  * See the LICENSE file in the root directory of this source tree.
263
263
  */
264
- const Ye = V("square-pen", [
264
+ const ot = S("square-pen", [
265
265
  ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
266
266
  [
267
267
  "path",
@@ -277,7 +277,7 @@ const Ye = V("square-pen", [
277
277
  * This source code is licensed under the ISC license.
278
278
  * See the LICENSE file in the root directory of this source tree.
279
279
  */
280
- const pe = V("trash-2", [
280
+ const fe = S("trash-2", [
281
281
  ["path", { d: "M10 11v6", key: "nco0om" }],
282
282
  ["path", { d: "M14 11v6", key: "outv1u" }],
283
283
  ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
@@ -290,7 +290,7 @@ const pe = V("trash-2", [
290
290
  * This source code is licensed under the ISC license.
291
291
  * See the LICENSE file in the root directory of this source tree.
292
292
  */
293
- const et = V("user-check", [
293
+ const at = S("user-check", [
294
294
  ["path", { d: "m16 11 2 2 4-4", key: "9rsbq5" }],
295
295
  ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
296
296
  ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
@@ -301,7 +301,7 @@ const et = V("user-check", [
301
301
  * This source code is licensed under the ISC license.
302
302
  * See the LICENSE file in the root directory of this source tree.
303
303
  */
304
- const me = V("user", [
304
+ const ye = S("user", [
305
305
  ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
306
306
  ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
307
307
  ]);
@@ -311,7 +311,7 @@ const me = V("user", [
311
311
  * This source code is licensed under the ISC license.
312
312
  * See the LICENSE file in the root directory of this source tree.
313
313
  */
314
- const tt = V("video", [
314
+ const lt = S("video", [
315
315
  [
316
316
  "path",
317
317
  {
@@ -327,234 +327,234 @@ const tt = V("video", [
327
327
  * This source code is licensed under the ISC license.
328
328
  * See the LICENSE file in the root directory of this source tree.
329
329
  */
330
- const ge = V("x", [
330
+ const ve = S("x", [
331
331
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
332
332
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
333
- ]), st = { class: "border-t pt-3 mt-4" }, ot = { class: "flex gap-2" }, nt = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, it = { class: "flex-1 space-y-2" }, lt = { class: "flex justify-between items-center" }, at = { class: "flex gap-2" }, rt = ["disabled"], Ce = /* @__PURE__ */ j({
333
+ ]), it = { class: "border-t pt-3 mt-4" }, rt = { class: "flex gap-2" }, dt = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, ct = { class: "flex-1 space-y-2" }, ut = { class: "flex justify-between items-center" }, pt = { class: "flex gap-2" }, mt = ["disabled"], je = /* @__PURE__ */ V({
334
334
  __name: "CommentInputZone",
335
335
  props: {
336
336
  isReply: { type: Boolean, required: !1, default: !1 },
337
337
  isReplyModifiers: {}
338
338
  },
339
- emits: /* @__PURE__ */ ee(["sendComment"], ["update:isReply"]),
340
- setup(r, { emit: i }) {
341
- const o = ce(r, "isReply"), e = $(""), n = i, b = () => {
342
- e.value.trim() && (n("sendComment", e.value), e.value = "");
343
- }, l = (v) => {
344
- (v.ctrlKey || v.metaKey) && v.key === "Enter" && (v.preventDefault(), b());
339
+ emits: /* @__PURE__ */ se(["sendComment"], ["update:isReply"]),
340
+ setup(c, { emit: l }) {
341
+ const s = ge(c, "isReply"), n = M(""), o = l, f = () => {
342
+ n.value.trim() && (o("sendComment", n.value), n.value = "");
343
+ }, r = (v) => {
344
+ (v.ctrlKey || v.metaKey) && v.key === "Enter" && (v.preventDefault(), f());
345
345
  };
346
- return (v, u) => (s(), a("div", st, [
347
- t("div", ot, [
348
- t("span", nt, [
349
- M(C(me), { class: "h-3 w-3 text-gray-500" })
346
+ return (v, g) => (t(), a("div", it, [
347
+ e("div", rt, [
348
+ e("span", dt, [
349
+ z(D(ye), { class: "h-3 w-3 text-gray-500" })
350
350
  ]),
351
- t("div", it, [
352
- P(t("textarea", {
353
- "onUpdate:modelValue": u[0] || (u[0] = (p) => e.value = p),
354
- onKeydown: l,
351
+ e("div", ct, [
352
+ R(e("textarea", {
353
+ "onUpdate:modelValue": g[0] || (g[0] = (k) => n.value = k),
354
+ onKeydown: r,
355
355
  placeholder: "Add a comment...",
356
356
  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"
357
357
  }, null, 544), [
358
- [xe, e.value]
358
+ [he, n.value]
359
359
  ]),
360
- t("div", lt, [
361
- u[4] || (u[4] = t("span", { class: "text-xs text-gray-500 hidden sm:inline" }, "Cmd+Enter to send", -1)),
362
- t("div", at, [
363
- o.value ? (s(), a("button", {
360
+ e("div", ut, [
361
+ g[4] || (g[4] = e("span", { class: "text-xs text-gray-500 hidden sm:inline" }, "Cmd+Enter to send", -1)),
362
+ e("div", pt, [
363
+ s.value ? (t(), a("button", {
364
364
  key: 0,
365
365
  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",
366
- onClick: u[1] || (u[1] = (p) => o.value = !1)
366
+ onClick: g[1] || (g[1] = (k) => s.value = !1)
367
367
  }, [
368
- M(C(ge), { class: "h-3 w-3" }),
369
- u[2] || (u[2] = E(" Cancel ", -1))
370
- ])) : k("", !0),
371
- t("button", {
368
+ z(D(ve), { class: "h-3 w-3" }),
369
+ g[2] || (g[2] = O(" Cancel ", -1))
370
+ ])) : $("", !0),
371
+ e("button", {
372
372
  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",
373
- disabled: !e.value.trim(),
374
- onClick: b
373
+ disabled: !n.value.trim(),
374
+ onClick: f
375
375
  }, [
376
- M(C($e), { class: "h-3 w-3 mr-1" }),
377
- u[3] || (u[3] = E(" Send ", -1))
378
- ], 8, rt)
376
+ z(D(De), { class: "h-3 w-3 mr-1" }),
377
+ g[3] || (g[3] = O(" Send ", -1))
378
+ ], 8, mt)
379
379
  ])
380
380
  ])
381
381
  ])
382
382
  ])
383
383
  ]));
384
384
  }
385
- }), dt = { 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" }, ct = /* @__PURE__ */ j({
385
+ }), gt = { 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" }, ht = /* @__PURE__ */ V({
386
386
  __name: "CommentDetails",
387
387
  props: {
388
388
  showMoreOptions: { type: Boolean, required: !0, default: !1 },
389
389
  showMoreOptionsModifiers: {}
390
390
  },
391
- emits: /* @__PURE__ */ ee(["edit", "delete"], ["update:showMoreOptions"]),
392
- setup(r, { emit: i }) {
393
- const o = i, e = ce(r, "showMoreOptions"), n = $(), b = $(!0), l = async (p) => {
394
- e.value && n.value && !n.value.contains(p.target) && !b.value && (e.value = !1), b.value = !1;
391
+ emits: /* @__PURE__ */ se(["edit", "delete"], ["update:showMoreOptions"]),
392
+ setup(c, { emit: l }) {
393
+ const s = l, n = ge(c, "showMoreOptions"), o = M(), f = M(!0), r = async (k) => {
394
+ n.value && o.value && !o.value.contains(k.target) && !f.value && (n.value = !1), f.value = !1;
395
395
  }, v = () => {
396
- e.value = !1, o("edit");
397
- }, u = () => {
398
- e.value = !1, o("delete");
396
+ n.value = !1, s("edit");
397
+ }, g = () => {
398
+ n.value = !1, s("delete");
399
399
  };
400
- return ue(() => {
401
- document.addEventListener("click", l);
402
- }), ke(() => {
403
- document.removeEventListener("click", l);
404
- }), (p, d) => (s(), a("div", {
400
+ return ee(() => {
401
+ document.addEventListener("click", r);
402
+ }), Ce(() => {
403
+ document.removeEventListener("click", r);
404
+ }), (k, x) => (t(), a("div", {
405
405
  class: "absolute bg-white left-0 top-full transform min-w-max z-50",
406
406
  ref_key: "moreOptionsRef",
407
- ref: n
407
+ ref: o
408
408
  }, [
409
- t("div", dt, [
410
- t("div", {
409
+ e("div", gt, [
410
+ e("div", {
411
411
  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",
412
412
  onClick: v
413
413
  }, [
414
- M(C(Ye), { class: "h-3 w-3 mr-2" }),
415
- d[0] || (d[0] = E(" Edit ", -1))
414
+ z(D(ot), { class: "h-3 w-3 mr-2" }),
415
+ x[0] || (x[0] = O(" Edit ", -1))
416
416
  ]),
417
- t("div", {
417
+ e("div", {
418
418
  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",
419
- onClick: u
419
+ onClick: g
420
420
  }, [
421
- M(C(pe), { class: "h-3 w-3 mr-2" }),
422
- d[1] || (d[1] = E(" Delete ", -1))
421
+ z(D(fe), { class: "h-3 w-3 mr-2" }),
422
+ x[1] || (x[1] = O(" Delete ", -1))
423
423
  ])
424
424
  ])
425
425
  ], 512));
426
426
  }
427
- }), ut = { class: "space-y-2" }, pt = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, mt = { class: "flex-1 min-w-0 space-y-1 relative" }, gt = { class: "flex items-center gap-2" }, ht = { class: "font-medium text-xs" }, ft = { class: "text-xs text-gray-500" }, yt = {
427
+ }), ft = { class: "space-y-2" }, yt = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, vt = { class: "flex-1 min-w-0 space-y-1 relative" }, bt = { class: "flex items-center gap-2" }, xt = { class: "font-medium text-xs" }, kt = { class: "text-xs text-gray-500" }, _t = {
428
428
  key: 0,
429
429
  class: "text-xs text-gray-700 leading-relaxed"
430
- }, vt = { class: "flex justify-between text-xs" }, bt = { class: "flex items-center gap-2" }, xt = {
430
+ }, wt = { class: "flex justify-between text-xs" }, $t = { class: "flex items-center gap-2" }, Ct = {
431
431
  key: 0,
432
432
  class: "flex gap-2"
433
- }, kt = ["disabled"], _t = {
433
+ }, Lt = ["disabled"], Mt = {
434
434
  key: 0,
435
435
  class: "ml-8 space-y-1 border-l-2 border-gray-100 pl-3"
436
- }, wt = /* @__PURE__ */ j({
436
+ }, Tt = /* @__PURE__ */ V({
437
437
  __name: "CommentItem",
438
438
  props: {
439
439
  comment: {},
440
440
  isInside: { type: Boolean }
441
441
  },
442
442
  emits: ["like", "reply", "edit", "delete"],
443
- setup(r, { emit: i }) {
444
- const o = i, e = r, n = $(e.comment.text), b = $("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"), l = $("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"), v = $(!1), u = $(!1), p = $(!1), d = $(!1), y = (x) => {
445
- const h = /* @__PURE__ */ new Date(), w = Math.floor(
446
- (h.getTime() - x.getTime()) / (1e3 * 60 * 60)
443
+ setup(c, { emit: l }) {
444
+ const s = l, n = c, o = M(n.comment.text), f = M("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"), r = M("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"), v = M(!1), g = M(!1), k = M(!1), x = M(!1), m = (i) => {
445
+ const p = /* @__PURE__ */ new Date(), u = Math.floor(
446
+ (p.getTime() - i.getTime()) / (1e3 * 60 * 60)
447
447
  );
448
- return w < 1 ? `${Math.floor(
449
- (h.getTime() - x.getTime()) / 6e4
450
- )}m` : w < 24 ? `${w}h` : `${Math.floor(w / 24)}d`;
451
- }, m = () => {
452
- d.value = !d.value, d.value ? o("like", e.comment.id, "add") : o("like", e.comment.id, "delete");
453
- }, T = () => {
454
- o("edit", e.comment.id, n.value), p.value = !1;
455
- }, O = (x, h) => {
456
- o("like", x, h);
457
- }, B = (x, h) => {
458
- o("edit", x, h);
448
+ return u < 1 ? `${Math.floor(
449
+ (p.getTime() - i.getTime()) / 6e4
450
+ )}m` : u < 24 ? `${u}h` : `${Math.floor(u / 24)}d`;
451
+ }, b = () => {
452
+ x.value = !x.value, x.value ? s("like", n.comment.id, "add") : s("like", n.comment.id, "delete");
453
+ }, F = () => {
454
+ s("edit", n.comment.id, o.value), k.value = !1;
455
+ }, w = (i, p) => {
456
+ s("like", i, p);
457
+ }, C = (i, p) => {
458
+ s("edit", i, p);
459
459
  };
460
- return (x, h) => {
461
- const w = te("CommentItem", !0);
462
- return s(), a("div", ut, [
463
- t("div", {
464
- class: D(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative", p.value ? "bg-gray-50" : ""])
460
+ return (i, p) => {
461
+ const u = ne("CommentItem", !0);
462
+ return t(), a("div", ft, [
463
+ e("div", {
464
+ class: I(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative", k.value ? "bg-gray-50" : ""])
465
465
  }, [
466
- t("span", pt, [
467
- M(C(me), { class: "h-3 w-3 text-gray-500" })
466
+ e("span", yt, [
467
+ z(D(ye), { class: "h-3 w-3 text-gray-500" })
468
468
  ]),
469
- t("div", mt, [
470
- t("div", gt, [
471
- t("span", ht, _(x.comment?.author), 1),
472
- t("span", ft, _(y(x.comment?.createdAt)), 1)
469
+ e("div", vt, [
470
+ e("div", bt, [
471
+ e("span", xt, _(i.comment?.author), 1),
472
+ e("span", kt, _(m(i.comment?.createdAt)), 1)
473
473
  ]),
474
- p.value ? P((s(), a("textarea", {
474
+ k.value ? R((t(), a("textarea", {
475
475
  key: 1,
476
- "onUpdate:modelValue": h[0] || (h[0] = (c) => n.value = c),
477
- class: D(p.value ? l.value : b.value)
476
+ "onUpdate:modelValue": p[0] || (p[0] = (h) => o.value = h),
477
+ class: I(k.value ? r.value : f.value)
478
478
  }, null, 2)), [
479
- [xe, n.value]
480
- ]) : (s(), a("p", yt, _(x.comment?.text), 1)),
481
- t("div", vt, [
482
- t("div", bt, [
483
- t("button", {
484
- class: D(["flex items-center gap-1", d.value ? "text-blue-600" : "text-gray-500 hover:text-blue-600 transition-colors"]),
485
- onClick: h[1] || (h[1] = (c) => m())
479
+ [he, o.value]
480
+ ]) : (t(), a("p", _t, _(i.comment?.text), 1)),
481
+ e("div", wt, [
482
+ e("div", $t, [
483
+ e("button", {
484
+ class: I(["flex items-center gap-1", x.value ? "text-blue-600" : "text-gray-500 hover:text-blue-600 transition-colors"]),
485
+ onClick: p[1] || (p[1] = (h) => b())
486
486
  }, [
487
- M(C(Ke), {
488
- class: D(["h-3 w-3", d.value ? "fill-blue-600" : ""])
487
+ z(D(Ye), {
488
+ class: I(["h-3 w-3", x.value ? "fill-blue-600" : ""])
489
489
  }, null, 8, ["class"]),
490
- E(" " + _(x.comment?.likes), 1)
490
+ O(" " + _(i.comment?.likes), 1)
491
491
  ], 2),
492
- x.isInside ? k("", !0) : (s(), a("button", {
492
+ i.isInside ? $("", !0) : (t(), a("button", {
493
493
  key: 0,
494
494
  class: "text-gray-500 hover:text-blue-600 transition-colors",
495
- onClick: h[2] || (h[2] = (c) => u.value = !0)
495
+ onClick: p[2] || (p[2] = (h) => g.value = !0)
496
496
  }, [
497
- M(C(Xe), { class: "h-3 w-3" })
497
+ z(D(st), { class: "h-3 w-3" })
498
498
  ])),
499
- t("button", {
499
+ e("button", {
500
500
  class: "text-gray-400 hover:text-gray-600 transition-colors opacity-0 group-hover:opacity-100",
501
501
  type: "button",
502
- onClick: h[3] || (h[3] = (c) => v.value = !0)
502
+ onClick: p[3] || (p[3] = (h) => v.value = !0)
503
503
  }, [
504
- M(C(We), { class: "h-3 w-3" })
504
+ z(D(Je), { class: "h-3 w-3" })
505
505
  ])
506
506
  ]),
507
- p.value ? (s(), a("div", xt, [
508
- t("button", {
507
+ k.value ? (t(), a("div", Ct, [
508
+ e("button", {
509
509
  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",
510
- onClick: h[4] || (h[4] = (c) => p.value = !1)
510
+ onClick: p[4] || (p[4] = (h) => k.value = !1)
511
511
  }, [
512
- M(C(ge), { class: "h-3 w-3" }),
513
- h[11] || (h[11] = E(" Cancel ", -1))
512
+ z(D(ve), { class: "h-3 w-3" }),
513
+ p[11] || (p[11] = O(" Cancel ", -1))
514
514
  ]),
515
- t("button", {
515
+ e("button", {
516
516
  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",
517
- disabled: !n.value.trim(),
518
- onClick: h[5] || (h[5] = (c) => T())
517
+ disabled: !o.value.trim(),
518
+ onClick: p[5] || (p[5] = (h) => F())
519
519
  }, [
520
- M(C($e), { class: "h-3 w-3 mr-1" }),
521
- h[12] || (h[12] = E(" Send ", -1))
522
- ], 8, kt)
523
- ])) : k("", !0)
520
+ z(D(De), { class: "h-3 w-3 mr-1" }),
521
+ p[12] || (p[12] = O(" Send ", -1))
522
+ ], 8, Lt)
523
+ ])) : $("", !0)
524
524
  ])
525
525
  ]),
526
- v.value ? (s(), z(ct, {
526
+ v.value ? (t(), H(ht, {
527
527
  key: 0,
528
528
  showMoreOptions: v.value,
529
- "onUpdate:showMoreOptions": h[6] || (h[6] = (c) => v.value = c),
530
- onEdit: h[7] || (h[7] = (c) => p.value = !0),
531
- onDelete: h[8] || (h[8] = (c) => x.$emit("delete", x.comment?.id)),
532
- comment: x.comment
533
- }, null, 8, ["showMoreOptions", "comment"])) : k("", !0)
529
+ "onUpdate:showMoreOptions": p[6] || (p[6] = (h) => v.value = h),
530
+ onEdit: p[7] || (p[7] = (h) => k.value = !0),
531
+ onDelete: p[8] || (p[8] = (h) => i.$emit("delete", i.comment?.id)),
532
+ comment: i.comment
533
+ }, null, 8, ["showMoreOptions", "comment"])) : $("", !0)
534
534
  ], 2),
535
- x.isInside ? k("", !0) : (s(), a("div", _t, [
536
- (s(!0), a(I, null, H(x.comment?.replies, (c) => (s(), z(w, {
537
- key: c.id,
538
- comment: c,
535
+ i.isInside ? $("", !0) : (t(), a("div", Mt, [
536
+ (t(!0), a(T, null, j(i.comment?.replies, (h) => (t(), H(u, {
537
+ key: h.id,
538
+ comment: h,
539
539
  isInside: !0,
540
- onDelete: (f) => x.$emit("delete", c.id),
541
- onLike: O,
542
- onEdit: B
540
+ onDelete: (y) => i.$emit("delete", h.id),
541
+ onLike: w,
542
+ onEdit: C
543
543
  }, null, 8, ["comment", "onDelete"]))), 128)),
544
- u.value && !x.isInside ? (s(), z(Ce, {
544
+ g.value && !i.isInside ? (t(), H(je, {
545
545
  key: 0,
546
- onSendComment: h[9] || (h[9] = (c) => x.$emit("reply", x.comment?.id, c)),
547
- isReply: u.value,
548
- "onUpdate:isReply": h[10] || (h[10] = (c) => u.value = c)
549
- }, null, 8, ["isReply"])) : k("", !0)
546
+ onSendComment: p[9] || (p[9] = (h) => i.$emit("reply", i.comment?.id, h)),
547
+ isReply: g.value,
548
+ "onUpdate:isReply": p[10] || (p[10] = (h) => g.value = h)
549
+ }, null, 8, ["isReply"])) : $("", !0)
550
550
  ]))
551
551
  ]);
552
552
  };
553
553
  }
554
- }), $t = ["id"], Ct = {
554
+ }), Dt = ["id"], jt = {
555
555
  key: 0,
556
556
  class: "text-xl font-semibold text-gray-900 mb-4"
557
- }, ie = /* @__PURE__ */ j({
557
+ }, ie = /* @__PURE__ */ V({
558
558
  __name: "CommentsWidget",
559
559
  props: {
560
560
  title: {},
@@ -570,79 +570,101 @@ const ge = V("x", [
570
570
  style: {}
571
571
  },
572
572
  emits: ["add", "reply", "like", "delete", "edit"],
573
- setup(r, { emit: i }) {
574
- const o = r, e = i, n = (p) => {
575
- o?.onAddComment?.(p), e("add", p);
576
- }, b = (p, d) => {
577
- o?.onLike?.(p, d), e("like", p, d);
578
- }, l = (p, d) => {
579
- o.onReply?.(p, d), e("reply", p, d);
580
- }, v = (p, d) => {
581
- o.onEdit?.(p, d), e("edit", p, d);
582
- }, u = (p) => {
583
- o.onDelete?.(p), e("delete", p);
573
+ setup(c, { emit: l }) {
574
+ const s = c, n = l, o = M(s.comments ?? []);
575
+ async function f() {
576
+ if (!s.id) return;
577
+ const m = await fetch(`/api/widget/comment/${s.id}`).then((b) => b.json());
578
+ o.value = m.rows.map((b) => ({
579
+ id: b.communication_id,
580
+ author: b.username,
581
+ text: b.body,
582
+ createdAt: new Date(b.cdate)
583
+ }));
584
+ }
585
+ o.value.length === 0 && f();
586
+ const r = async (m) => {
587
+ s.onAddComment ? s.onAddComment(m) : s.id && (await fetch(`/api/widget/comment/${s.id}`, {
588
+ method: "POST",
589
+ headers: { "Content-Type": "application/json" },
590
+ body: JSON.stringify({ body: m })
591
+ }), await f()), n("add", m);
592
+ }, v = (m, b) => {
593
+ s?.onLike?.(m, b), n("like", m, b);
594
+ }, g = (m, b) => {
595
+ s.onReply?.(m, b), n("reply", m, b);
596
+ }, k = async (m, b) => {
597
+ s.onEdit ? s.onEdit(m, b) : s.id && (await fetch(`/api/widget/comment/${s.id}/${m}`, {
598
+ method: "POST",
599
+ headers: { "Content-Type": "application/json" },
600
+ body: JSON.stringify({ body: b })
601
+ }), await f()), n("edit", m, b);
602
+ }, x = async (m) => {
603
+ s.onDelete ? s.onDelete(m) : s.id && (await fetch(`/api/widget/comment/${s.id}/${m}`, {
604
+ method: "DELETE"
605
+ }), await f()), n("delete", m);
584
606
  };
585
- return (p, d) => (s(), a("div", {
586
- class: D(["mx-auto font-sans", p.className]),
587
- id: p.id,
588
- style: Q(p.style)
607
+ return (m, b) => (t(), a("div", {
608
+ class: I(["mx-auto font-sans", m.className]),
609
+ id: m.id,
610
+ style: J(m.style)
589
611
  }, [
590
- p.title ? (s(), a("h3", Ct, _(p.title), 1)) : k("", !0),
591
- t("div", {
592
- class: D([p.maxHeight ? "overflow-y-auto" : "", "space-y-3"]),
593
- style: Q({ maxHeight: p.maxHeight + "px" })
612
+ m.title ? (t(), a("h3", jt, _(m.title), 1)) : $("", !0),
613
+ e("div", {
614
+ class: I([m.maxHeight ? "overflow-y-auto" : "", "space-y-3"]),
615
+ style: J({ maxHeight: m.maxHeight + "px" })
594
616
  }, [
595
- (s(!0), a(I, null, H(p.comments, (y) => (s(), z(wt, {
596
- key: y.id,
597
- comment: y,
598
- onReply: l,
599
- onLike: b,
600
- onDelete: d[0] || (d[0] = (m) => u(m)),
601
- onEdit: v
617
+ (t(!0), a(T, null, j(o.value, (F) => (t(), H(Tt, {
618
+ key: F.id,
619
+ comment: F,
620
+ onReply: g,
621
+ onLike: v,
622
+ onDelete: b[0] || (b[0] = (w) => x(w)),
623
+ onEdit: k
602
624
  }, null, 8, ["comment"]))), 128))
603
625
  ], 6),
604
- M(Ce, {
605
- onSendComment: d[1] || (d[1] = (y) => n(y))
626
+ z(je, {
627
+ onSendComment: b[1] || (b[1] = (F) => r(F))
606
628
  })
607
- ], 14, $t));
629
+ ], 14, Dt));
608
630
  }
609
- }), ve = /* @__PURE__ */ new Map([
631
+ }), $e = /* @__PURE__ */ new Map([
610
632
  ["file", {
611
633
  name: "File",
612
634
  color: "bg-green-100 text-green-700 border-green-200",
613
- icon: G
635
+ icon: Z
614
636
  }],
615
637
  ["post", {
616
638
  name: "Post",
617
639
  color: "bg-blue-100 text-blue-700 border-blue-200",
618
- icon: Qe
640
+ icon: nt
619
641
  }],
620
642
  ["user", {
621
643
  name: "User",
622
644
  color: "bg-purple-100 text-purple-700 border-purple-200",
623
- icon: et
645
+ icon: at
624
646
  }],
625
647
  ["custom", {
626
648
  name: "Custom",
627
649
  color: "bg-gray-100 text-gray-700 border-gray-200",
628
- icon: Ze
650
+ icon: et
629
651
  }]
630
- ]), Mt = { class: "mx-auto font-sans" }, Lt = {
652
+ ]), It = { class: "mx-auto font-sans" }, At = {
631
653
  key: 0,
632
654
  class: "text-xl font-semibold text-gray-900 mb-4"
633
- }, Tt = { class: "relative" }, Dt = { class: "space-y-3" }, It = { class: "flex-1 min-w-0 pb-2" }, jt = { class: "flex items-center gap-1.5 mb-1 mt-0.5" }, Vt = { 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" }, zt = { class: "text-xs text-gray-500" }, Ht = { class: "space-y-1" }, Et = { class: "text-xs text-gray-700" }, Ft = { class: "capitalize mr-1" }, St = {
655
+ }, zt = { class: "relative" }, Vt = { class: "space-y-3" }, Et = { class: "flex-1 min-w-0 pb-2" }, Ht = { 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" }, Ft = { class: "font-medium text-xs" }, Ot = { class: "text-xs text-gray-500" }, Nt = { class: "space-y-1" }, Pt = { class: "text-xs text-gray-700" }, Bt = { class: "capitalize mr-1" }, Wt = {
634
656
  key: 0,
635
657
  class: "inline-flex items-center rounded-full border py-0.5 font-semibold transition-colors text-foreground text-xs h-4 px-1 capitalize"
636
- }, Ot = {
658
+ }, Rt = {
637
659
  key: 0,
638
660
  class: "flex items-center gap-1 text-xs"
639
- }, Bt = {
661
+ }, Ut = {
640
662
  key: 0,
641
663
  class: "bg-red-50 text-red-600 px-1.5 py-0.5 rounded text-xs border border-red-200"
642
- }, Nt = {
664
+ }, Gt = {
643
665
  key: 2,
644
666
  class: "bg-green-50 text-green-600 px-1.5 py-0.5 rounded text-xs border border-green-200"
645
- }, le = /* @__PURE__ */ j({
667
+ }, re = /* @__PURE__ */ V({
646
668
  __name: "HistoryWidget",
647
669
  props: {
648
670
  data: {},
@@ -652,57 +674,57 @@ const ge = V("x", [
652
674
  className: {},
653
675
  style: {}
654
676
  },
655
- setup(r) {
656
- const i = r, o = $(Array.isArray(i.data) ? i.data : []);
657
- o.value.length === 0 && i.id && e();
658
- async function e() {
659
- const n = await fetch(`/api/widget/history/${i.id}`);
660
- if (!n.ok)
677
+ setup(c) {
678
+ const l = c, s = M(Array.isArray(l.data) ? l.data : []);
679
+ s.value.length === 0 && l.id && n();
680
+ async function n() {
681
+ const o = await fetch(`/api/widget/history/${l.id}`);
682
+ if (!o.ok)
661
683
  return { data: [] };
662
- const b = await n.json();
663
- b.rows.forEach((l) => {
664
- l.timestamp = new Date(l.cdate), l.id = l.entity_id, l.entityType = l.entity_type, l.entityId = l.entity_id, l.action = l.change_type, l.userId = l.change_user_id, l.userName = l.username, l.timestamp = new Date(l.cdate), l.description = l.username, l.status = l.username;
665
- }), o.value = b.rows;
684
+ const f = await o.json();
685
+ f.rows.forEach((r) => {
686
+ r.timestamp = new Date(r.cdate), r.id = r.entity_id, r.entityType = r.entity_type, r.entityId = r.entity_id, r.action = r.change_type, r.userId = r.change_user_id, r.userName = r.username, r.timestamp = new Date(r.cdate), r.description = r.username, r.status = r.username;
687
+ }), s.value = f.rows;
666
688
  }
667
- return (n, b) => (s(), a("div", Mt, [
668
- n.title ? (s(), a("h3", Lt, _(n.title), 1)) : k("", !0),
669
- t("div", {
670
- class: D(n.maxHeight ? "overflow-y-auto" : ""),
671
- style: Q({ maxHeight: n.maxHeight + "px" })
689
+ return (o, f) => (t(), a("div", It, [
690
+ o.title ? (t(), a("h3", At, _(o.title), 1)) : $("", !0),
691
+ e("div", {
692
+ class: I(o.maxHeight ? "overflow-y-auto" : ""),
693
+ style: J({ maxHeight: o.maxHeight + "px" })
672
694
  }, [
673
- t("div", Tt, [
674
- b[0] || (b[0] = t("div", { class: "absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200" }, null, -1)),
675
- t("div", Dt, [
676
- (s(!0), a(I, null, H(o.value, (l) => (s(), a("div", {
695
+ e("div", zt, [
696
+ f[0] || (f[0] = e("div", { class: "absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200" }, null, -1)),
697
+ e("div", Vt, [
698
+ (t(!0), a(T, null, j(s.value, (r) => (t(), a("div", {
677
699
  class: "relative flex items-start gap-2",
678
- key: l?.id
700
+ key: r?.id
679
701
  }, [
680
- t("div", {
681
- class: D(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${C(ve).get(l?.entityType)?.color}`)
702
+ e("div", {
703
+ class: I(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${D($e).get(r?.entityType)?.color}`)
682
704
  }, [
683
- (s(), z(N(C(ve).get(l?.entityType)?.icon), { class: "h-3 w-3" }))
705
+ (t(), H(B(D($e).get(r?.entityType)?.icon), { class: "h-3 w-3" }))
684
706
  ], 2),
685
- t("div", It, [
686
- t("div", jt, [
687
- t("span", Vt, [
688
- M(C(me), { class: "h-3 w-3 text-gray-500" })
707
+ e("div", Et, [
708
+ e("div", Ht, [
709
+ e("span", St, [
710
+ z(D(ye), { class: "h-3 w-3 text-gray-500" })
689
711
  ]),
690
- t("span", At, _(l?.userName), 1),
691
- t("span", zt, _(l?.timestamp.toLocaleTimeString("ua-UA", { hour: "2-digit", minute: "2-digit" })), 1)
712
+ e("span", Ft, _(r?.userName), 1),
713
+ e("span", Ot, _(r?.timestamp.toLocaleTimeString("ua-UA", { hour: "2-digit", minute: "2-digit" })), 1)
692
714
  ]),
693
- t("div", Ht, [
694
- t("div", Et, [
695
- t("span", Ft, _(l?.action), 1),
696
- l?.entityId ? (s(), a("span", St, _(l?.entityId), 1)) : k("", !0)
715
+ e("div", Nt, [
716
+ e("div", Pt, [
717
+ e("span", Bt, _(r?.action), 1),
718
+ r?.entityId ? (t(), a("span", Wt, _(r?.entityId), 1)) : $("", !0)
697
719
  ]),
698
- l?.changes?.[l?.entityId] ? (s(), a("div", Ot, [
699
- l?.changes?.[l?.entityId]?.old ? (s(), a("span", Bt, _(l?.changes?.[l?.entityId]?.old), 1)) : k("", !0),
700
- l?.changes?.[l?.entityId]?.old && l?.changes?.[l?.entityId]?.new ? (s(), z(C(Ue), {
720
+ r?.changes?.[r?.entityId] ? (t(), a("div", Rt, [
721
+ r?.changes?.[r?.entityId]?.old ? (t(), a("span", Ut, _(r?.changes?.[r?.entityId]?.old), 1)) : $("", !0),
722
+ r?.changes?.[r?.entityId]?.old && r?.changes?.[r?.entityId]?.new ? (t(), H(D(Ke), {
701
723
  key: 1,
702
724
  class: "h-2 w-2 text-gray-400"
703
- })) : k("", !0),
704
- l?.changes?.[l?.entityId]?.new ? (s(), a("span", Nt, _(l?.changes?.[l?.entityId]?.new), 1)) : k("", !0)
705
- ])) : k("", !0)
725
+ })) : $("", !0),
726
+ r?.changes?.[r?.entityId]?.new ? (t(), a("span", Gt, _(r?.changes?.[r?.entityId]?.new), 1)) : $("", !0)
727
+ ])) : $("", !0)
706
728
  ])
707
729
  ])
708
730
  ]))), 128))
@@ -711,209 +733,209 @@ const ge = V("x", [
711
733
  ], 6)
712
734
  ]));
713
735
  }
714
- }), Pt = {
736
+ }), qt = {
715
737
  key: 0,
716
738
  class: "text-xl font-semibold"
717
- }, Ut = { class: "flex gap-1" }, Rt = { 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" }, Wt = /* @__PURE__ */ j({
739
+ }, Kt = { class: "flex gap-1" }, Zt = { 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" }, Jt = /* @__PURE__ */ V({
718
740
  __name: "FileHeader",
719
- props: /* @__PURE__ */ ee({
741
+ props: /* @__PURE__ */ se({
720
742
  title: {}
721
743
  }, {
722
744
  modelValue: {},
723
745
  modelModifiers: {}
724
746
  }),
725
- emits: /* @__PURE__ */ ee(["onAddFile"], ["update:modelValue"]),
726
- setup(r) {
727
- const i = ce(r, "modelValue"), o = {
747
+ emits: /* @__PURE__ */ se(["onAddFile"], ["update:modelValue"]),
748
+ setup(c) {
749
+ const l = ge(c, "modelValue"), s = {
728
750
  active: "bg-blue-100 text-black hover:bg-blue-100",
729
751
  inactive: "bg-white text-black hover:bg-blue-100"
730
752
  };
731
- return (e, n) => (s(), a("div", {
732
- class: D(["flex flex-col sm:flex-row gap-3 mb-4", e.title ? "justify-between sm:items-center" : "justify-end sm:items-center"])
753
+ return (n, o) => (t(), a("div", {
754
+ class: I(["flex flex-col sm:flex-row gap-3 mb-4", n.title ? "justify-between sm:items-center" : "justify-end sm:items-center"])
733
755
  }, [
734
- e.title ? (s(), a("h3", Pt, _(e.title), 1)) : k("", !0),
735
- t("div", Ut, [
736
- t("button", {
737
- class: D(["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", i.value === "list" ? o.active : o.inactive]),
738
- onClick: n[0] || (n[0] = (b) => i.value = "list")
756
+ n.title ? (t(), a("h3", qt, _(n.title), 1)) : $("", !0),
757
+ e("div", Kt, [
758
+ e("button", {
759
+ class: I(["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" ? s.active : s.inactive]),
760
+ onClick: o[0] || (o[0] = (f) => l.value = "list")
739
761
  }, [
740
- M(C(Je), { class: "h-4 w-4" })
762
+ z(D(tt), { class: "h-4 w-4" })
741
763
  ], 2),
742
- t("button", {
743
- class: D(["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", i.value === "grid" ? o.active : o.inactive]),
744
- onClick: n[1] || (n[1] = (b) => i.value = "grid")
764
+ e("button", {
765
+ class: I(["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" ? s.active : s.inactive]),
766
+ onClick: o[1] || (o[1] = (f) => l.value = "grid")
745
767
  }, [
746
- M(C(Ge), { class: "h-4 w-4" })
768
+ z(D(Qe), { class: "h-4 w-4" })
747
769
  ], 2),
748
- t("label", null, [
749
- t("input", {
770
+ e("label", null, [
771
+ e("input", {
750
772
  type: "file",
751
773
  class: "hidden",
752
- onChange: n[2] || (n[2] = (b) => e.$emit("onAddFile", b))
774
+ onChange: o[2] || (o[2] = (f) => n.$emit("onAddFile", f))
753
775
  }, null, 32),
754
- t("div", Rt, [
755
- M(C(we), { class: "h-4 w-4" }),
756
- n[3] || (n[3] = E(" Додати файл ", -1))
776
+ e("div", Zt, [
777
+ z(D(Te), { class: "h-4 w-4" }),
778
+ o[3] || (o[3] = O(" Додати файл ", -1))
757
779
  ])
758
780
  ])
759
781
  ])
760
782
  ], 2));
761
783
  }
762
- }), oe = {
784
+ }), ae = {
763
785
  pdf: {
764
786
  color: "bg-red-100 text-red-700 border-red-200",
765
- icon: G,
787
+ icon: Z,
766
788
  label: "PDF"
767
789
  },
768
790
  sketch: {
769
791
  color: "bg-gray-100 text-gray-700 border-gray-200",
770
- icon: qe,
792
+ icon: Xe,
771
793
  label: "SKETCH"
772
794
  },
773
795
  mp4: {
774
796
  color: "bg-purple-100 text-purple-700 border-purple-200",
775
- icon: tt,
797
+ icon: lt,
776
798
  label: "VIDEO"
777
799
  },
778
800
  docx: {
779
801
  color: "bg-blue-100 text-blue-700 border-blue-200",
780
- icon: G,
802
+ icon: Z,
781
803
  label: "DOC"
782
804
  },
783
805
  zip: {
784
806
  color: "bg-orange-100 text-orange-700 border-orange-200",
785
- icon: Pe,
807
+ icon: qe,
786
808
  label: "ARCHIVE"
787
809
  },
788
810
  png: {
789
811
  color: "bg-green-100 text-green-700 border-green-200",
790
- icon: ye,
812
+ icon: we,
791
813
  label: "IMAGE"
792
814
  },
793
815
  jpg: {
794
816
  color: "bg-green-100 text-green-700 border-green-200",
795
- icon: ye,
817
+ icon: we,
796
818
  label: "IMAGE"
797
819
  },
798
820
  xlsx: {
799
821
  color: "bg-emerald-100 text-emerald-700 border-emerald-200",
800
- icon: G,
822
+ icon: Z,
801
823
  label: "EXCEL"
802
824
  },
803
825
  pptx: {
804
826
  color: "bg-amber-100 text-amber-700 border-amber-200",
805
- icon: G,
827
+ icon: Z,
806
828
  label: "PPT"
807
829
  }
808
830
  };
809
- function Me(r, i = "en") {
810
- const o = {
831
+ function Ie(c, l = "en") {
832
+ const s = {
811
833
  month: "short",
812
834
  day: "numeric"
813
835
  };
814
- return new Intl.DateTimeFormat(i, o).format(r);
836
+ return new Intl.DateTimeFormat(l, s).format(c);
815
837
  }
816
- function Le(r) {
817
- if (r === 0) return "0 B";
818
- const i = 1024, o = ["B", "KB", "MB", "GB", "TB"], e = Math.floor(Math.log(r) / Math.log(i));
819
- return `${parseFloat((r / Math.pow(i, e)).toFixed(1))} ${o[e]}`;
838
+ function Ae(c) {
839
+ if (c === 0) return "0 B";
840
+ const l = 1024, s = ["B", "KB", "MB", "GB", "TB"], n = Math.floor(Math.log(c) / Math.log(l));
841
+ return `${parseFloat((c / Math.pow(l, n)).toFixed(1))} ${s[n]}`;
820
842
  }
821
- const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = { class: "flex items-center gap-2" }, Jt = { class: "font-medium text-xs truncate hover:text-blue-600 cursor-pointer" }, Xt = { class: "hidden sm:block text-xs text-gray-500 w-16 text-right" }, Qt = { class: "hidden md:block text-xs text-gray-500 w-12 text-right" }, Yt = { class: "flex items-center gap-1" }, es = ["onClick"], ts = ["onClick"], Te = /* @__PURE__ */ j({
843
+ const Xt = { class: "space-y-0.5" }, Qt = ["onClick"], Yt = ["onClick"], es = { class: "flex items-center gap-2" }, ts = { class: "font-medium text-xs truncate hover:text-blue-600 cursor-pointer" }, ss = { class: "hidden sm:block text-xs text-gray-500 w-16 text-right" }, ns = { class: "hidden md:block text-xs text-gray-500 w-12 text-right" }, os = { class: "flex items-center gap-1" }, as = ["onClick"], ls = ["onClick"], is = /* @__PURE__ */ V({
822
844
  __name: "FileList",
823
845
  props: {
824
846
  files: {}
825
847
  },
826
848
  emits: ["delete", "download", "openLightbox"],
827
- setup(r) {
828
- return (i, o) => (s(), a("div", qt, [
829
- (s(!0), a(I, null, H(i.files, (e) => (s(), a("div", {
849
+ setup(c) {
850
+ return (l, s) => (t(), a("div", Xt, [
851
+ (t(!0), a(T, null, j(l.files, (n) => (t(), a("div", {
830
852
  class: "flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",
831
- key: e.id,
832
- onClick: R((n) => i.$emit("openLightbox", e), ["stop"])
853
+ key: n.id,
854
+ onClick: U((o) => l.$emit("openLightbox", n), ["stop"])
833
855
  }, [
834
- t("div", {
835
- class: D(["p-1 rounded", C(oe)[e?.ext]?.color || "bg-blue-100 text-blue-700 border-blue-200"])
856
+ e("div", {
857
+ class: I(["p-1 rounded", D(ae)[n?.ext]?.color || "bg-blue-100 text-blue-700 border-blue-200"])
836
858
  }, [
837
- (s(), z(N(C(oe)[e?.ext]?.icon || C(oe).pdf.icon), { class: "h-3 w-3" }))
859
+ (t(), H(B(D(ae)[n?.ext]?.icon || D(ae).pdf.icon), { class: "h-3 w-3" }))
838
860
  ], 2),
839
- t("div", {
861
+ e("div", {
840
862
  class: "flex-1 min-w-0",
841
- onClick: (n) => i.$emit("openLightbox", e)
863
+ onClick: (o) => l.$emit("openLightbox", n)
842
864
  }, [
843
- t("div", Zt, [
844
- t("span", Jt, _(e?.uploaded_name || e?.name), 1)
865
+ e("div", es, [
866
+ e("span", ts, _(n?.uploaded_name || n?.name), 1)
845
867
  ])
846
- ], 8, Kt),
847
- t("div", Xt, _(C(Le)(e.size)), 1),
848
- t("div", Qt, _(C(Me)(e.createdAt)), 1),
849
- t("div", Yt, [
850
- t("button", {
851
- onClick: R((n) => i.$emit("download", e), ["stop"]),
868
+ ], 8, Yt),
869
+ e("div", ss, _(D(Ae)(n.size)), 1),
870
+ e("div", ns, _(D(Ie)(n.createdAt)), 1),
871
+ e("div", os, [
872
+ e("button", {
873
+ onClick: U((o) => l.$emit("download", n), ["stop"]),
852
874
  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"
853
875
  }, [
854
- M(C(_e), { class: "h-3 w-3" })
855
- ], 8, es),
856
- t("button", {
876
+ z(D(Me), { class: "h-3 w-3" })
877
+ ], 8, as),
878
+ e("button", {
857
879
  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",
858
- onClick: R((n) => i.$emit("delete", n, e?.file_id), ["stop"])
880
+ onClick: U((o) => l.$emit("delete", o, n?.file_id), ["stop"])
859
881
  }, [
860
- M(C(pe), { class: "h-3 w-3" })
861
- ], 8, ts)
882
+ z(D(fe), { class: "h-3 w-3" })
883
+ ], 8, ls)
862
884
  ])
863
- ], 8, Gt))), 128))
885
+ ], 8, Qt))), 128))
864
886
  ]));
865
887
  }
866
- }), ss = { class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3" }, os = ["onClick"], ns = { class: "space-y-2" }, is = { class: "flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden" }, ls = ["src"], as = { class: "space-y-1" }, rs = ["title"], ds = { class: "text-xs text-gray-500 text-left" }, cs = { class: "absolute top-2 right-1 flex items-center gap-1" }, us = ["onClick"], ps = ["onClick"], ms = /* @__PURE__ */ j({
888
+ }), rs = { class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3" }, ds = ["onClick"], cs = { class: "space-y-2" }, us = { class: "flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden" }, ps = ["src"], ms = { class: "space-y-1" }, gs = ["title"], hs = { class: "text-xs text-gray-500 text-left" }, fs = { class: "absolute top-2 right-1 flex items-center gap-1" }, ys = ["onClick"], vs = ["onClick"], bs = /* @__PURE__ */ V({
867
889
  __name: "FileGrid",
868
890
  props: {
869
891
  files: {}
870
892
  },
871
893
  emits: ["delete", "download", "openLightbox"],
872
- setup(r) {
873
- return (i, o) => (s(), a("div", ss, [
874
- (s(!0), a(I, null, H(i.files, (e) => (s(), a("div", {
875
- key: e.id,
876
- onClick: R((n) => i.$emit("openLightbox", e), ["stop"]),
894
+ setup(c) {
895
+ return (l, s) => (t(), a("div", rs, [
896
+ (t(!0), a(T, null, j(l.files, (n) => (t(), a("div", {
897
+ key: n.id,
898
+ onClick: U((o) => l.$emit("openLightbox", n), ["stop"]),
877
899
  class: "group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"
878
900
  }, [
879
- t("div", ns, [
880
- t("div", is, [
881
- e.ext === "png" || e.ext === "jpg" || e.ext === "jpeg" || e.ext === "gif" || e.ext === "svg" || e.ext === "webp" ? (s(), a("img", {
901
+ e("div", cs, [
902
+ e("div", us, [
903
+ n.ext === "png" || n.ext === "jpg" || n.ext === "jpeg" || n.ext === "gif" || n.ext === "svg" || n.ext === "webp" ? (t(), a("img", {
882
904
  key: 0,
883
- src: `/file/resize?filepath=${e?.file_path}&w=500`,
905
+ src: `/file/resize?filepath=${n?.file_path}&w=500`,
884
906
  alt: "file",
885
907
  class: "w-full h-full object-cover"
886
- }, null, 8, ls)) : (s(), z(C(G), {
908
+ }, null, 8, ps)) : (t(), H(D(Z), {
887
909
  key: 1,
888
910
  class: "h-10 w-10 text-gray-500"
889
911
  }))
890
912
  ]),
891
- t("div", as, [
892
- t("h3", {
913
+ e("div", ms, [
914
+ e("h3", {
893
915
  class: "font-medium text-xs leading-tight text-left",
894
- title: e.uploaded_name || e.name
895
- }, _(e.uploaded_name || e.name), 9, rs),
896
- t("p", ds, _(C(Me)(e.createdAt)) + ", " + _(C(Le)(e.size)), 1)
916
+ title: n.uploaded_name || n.name
917
+ }, _(n.uploaded_name || n.name), 9, gs),
918
+ e("p", hs, _(D(Ie)(n.createdAt)) + ", " + _(D(Ae)(n.size)), 1)
897
919
  ])
898
920
  ]),
899
- t("div", cs, [
900
- t("button", {
901
- onClick: R((n) => i.$emit("download", e), ["stop"]),
921
+ e("div", fs, [
922
+ e("button", {
923
+ onClick: U((o) => l.$emit("download", n), ["stop"]),
902
924
  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"
903
925
  }, [
904
- M(C(_e), { class: "h-3 w-3" })
905
- ], 8, us),
906
- t("button", {
926
+ z(D(Me), { class: "h-3 w-3" })
927
+ ], 8, ys),
928
+ e("button", {
907
929
  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",
908
- onClick: R((n) => i.$emit("delete", n, e?.file_id), ["stop"])
930
+ onClick: U((o) => l.$emit("delete", o, n?.file_id), ["stop"])
909
931
  }, [
910
- M(C(pe), { class: "h-3 w-3" })
911
- ], 8, ps)
932
+ z(D(fe), { class: "h-3 w-3" })
933
+ ], 8, vs)
912
934
  ])
913
- ], 8, os))), 128))
935
+ ], 8, ds))), 128))
914
936
  ]));
915
937
  }
916
- }), gs = { class: "mx-auto font-sans" }, hs = { key: 1 }, be = /* @__PURE__ */ j({
938
+ }), xs = { class: "mx-auto font-sans" }, ks = { key: 1 }, de = /* @__PURE__ */ V({
917
939
  __name: "FilesWidget",
918
940
  props: {
919
941
  title: {},
@@ -927,128 +949,128 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
927
949
  onDelete: {}
928
950
  },
929
951
  emits: ["delete", "add", "openLightbox"],
930
- setup(r, { emit: i }) {
931
- const o = r, e = $(!1), n = $(null), b = $(!1), l = $(0), v = $(o.files ?? []), u = i;
932
- v.value.length === 0 && h();
933
- const p = (f, g) => {
934
- n.value = g, e.value = !0;
935
- }, d = () => {
936
- n.value && (O(n.value), n.value = null, e.value = !1);
937
- }, y = S(() => Array.isArray(v.value) ? v.value.map((f) => f?.file_path) : []), m = (f) => {
938
- const g = y.value.findIndex((F) => F === f.file_path);
939
- g !== -1 && (b.value = !0, l.value = g);
940
- }, T = (f) => {
941
- o.onAddFile ? o.onAddFile(f) : w(f), u("add", f);
942
- }, O = (f) => {
943
- o.onDelete ? o.onDelete(f) : c(f), u("delete", f);
944
- }, B = (f) => {
945
- const g = document.createElement("a");
946
- g.setAttribute("download", f?.uploaded_name || f?.name), g.href = f?.file_path || f?.path, g.click();
947
- }, x = $("list");
948
- async function h() {
949
- if (!o.id)
952
+ setup(c, { emit: l }) {
953
+ const s = c, n = M(!1), o = M(null), f = M(!1), r = M(0), v = M(s.files ?? []), g = l;
954
+ v.value.length === 0 && p();
955
+ const k = (y, d) => {
956
+ o.value = d, n.value = !0;
957
+ }, x = () => {
958
+ o.value && (w(o.value), o.value = null, n.value = !1);
959
+ }, m = N(() => Array.isArray(v.value) ? v.value.map((y) => y?.file_path) : []), b = (y) => {
960
+ const d = m.value.findIndex((A) => A === y.file_path);
961
+ d !== -1 && (f.value = !0, r.value = d);
962
+ }, F = (y) => {
963
+ s.onAddFile ? s.onAddFile(y) : u(y), g("add", y);
964
+ }, w = (y) => {
965
+ s.onDelete ? s.onDelete(y) : h(y), g("delete", y);
966
+ }, C = (y) => {
967
+ const d = document.createElement("a");
968
+ d.setAttribute("download", y?.uploaded_name || y?.name), d.href = y?.file_path || y?.path, d.click();
969
+ }, i = M("list");
970
+ async function p() {
971
+ if (!s.id)
950
972
  return;
951
- const f = await fetch(`/api/widget/file/${o.id}`).then((g) => g.json());
952
- f.rows.forEach((g) => {
953
- g.timestamp = new Date(g.cdate), g.id = g.entity_id, g.entityType = g.entity_type, g.entityId = g.entity_id, g.entityType = g.entity_type, g.action = g.change_type, g.userId = g.change_user_id, g.userName = g.username, g.timestamp = new Date(g.cdate), g.description = g.username, g.status = g.username;
954
- }), v.value = f.rows;
973
+ const y = await fetch(`/api/widget/file/${s.id}`).then((d) => d.json());
974
+ y.rows.forEach((d) => {
975
+ d.timestamp = new Date(d.cdate), d.id = d.entity_id, d.entityType = d.entity_type, d.entityId = d.entity_id, d.entityType = d.entity_type, d.action = d.change_type, d.userId = d.change_user_id, d.userName = d.username, d.timestamp = new Date(d.cdate), d.description = d.username, d.status = d.username;
976
+ }), v.value = y.rows;
955
977
  }
956
- const w = async (f) => {
957
- if (!(!f.target || !f.target.files || f.target.files.length === 0))
978
+ const u = async (y) => {
979
+ if (!(!y.target || !y.target.files || y.target.files.length === 0))
958
980
  try {
959
981
  await Promise.all(
960
- Array.from(f.target.files).map(async (g) => {
961
- const F = new FormData();
962
- F.append("file", g);
963
- const U = `/api/widget/file/${o.id}`, A = await fetch(U, {
982
+ Array.from(y.target.files).map(async (d) => {
983
+ const A = new FormData();
984
+ A.append("file", d);
985
+ const P = `/api/widget/file/${s.id}`, E = await fetch(P, {
964
986
  method: "POST",
965
- body: F
987
+ body: A
966
988
  });
967
- if (!A.ok)
968
- throw new Error(`HTTP error! status: ${A.status}`);
969
- return g;
989
+ if (!E.ok)
990
+ throw new Error(`HTTP error! status: ${E.status}`);
991
+ return d;
970
992
  })
971
- ), await h();
972
- } catch (g) {
973
- console.error("Помилка при завантаженні файлів:", g);
993
+ ), await p();
994
+ } catch (d) {
995
+ console.error("Помилка при завантаженні файлів:", d);
974
996
  }
975
- }, c = async (f) => {
997
+ }, h = async (y) => {
976
998
  try {
977
999
  await fetch(
978
- `/api/widget/file/${o.id}/${f}`,
1000
+ `/api/widget/file/${s.id}/${y}`,
979
1001
  {
980
1002
  method: "DELETE"
981
1003
  }
982
- ), await h();
983
- } catch (g) {
984
- console.error(g);
1004
+ ), await p();
1005
+ } catch (d) {
1006
+ console.error(d);
985
1007
  }
986
1008
  };
987
- return (f, g) => {
988
- const F = te("MessageBox"), U = te("Lightbox");
989
- return s(), a(I, null, [
990
- t("div", gs, [
991
- M(Wt, {
992
- modelValue: x.value,
993
- "onUpdate:modelValue": g[0] || (g[0] = (A) => x.value = A),
994
- title: o.title,
995
- onOnAddFile: g[1] || (g[1] = (A) => T(A))
1009
+ return (y, d) => {
1010
+ const A = ne("MessageBox"), P = ne("Lightbox");
1011
+ return t(), a(T, null, [
1012
+ e("div", xs, [
1013
+ z(Jt, {
1014
+ modelValue: i.value,
1015
+ "onUpdate:modelValue": d[0] || (d[0] = (E) => i.value = E),
1016
+ title: s.title,
1017
+ onOnAddFile: d[1] || (d[1] = (E) => F(E))
996
1018
  }, null, 8, ["modelValue", "title"]),
997
- v.value.length > 0 ? (s(), a("div", {
1019
+ v.value.length > 0 ? (t(), a("div", {
998
1020
  key: 0,
999
- class: D(f.maxHeight ? "overflow-y-auto" : ""),
1000
- style: Q({ maxHeight: f.maxHeight + "px" })
1021
+ class: I(y.maxHeight ? "overflow-y-auto" : ""),
1022
+ style: J({ maxHeight: y.maxHeight + "px" })
1001
1023
  }, [
1002
- x.value === "list" ? (s(), z(Te, {
1024
+ i.value === "list" ? (t(), H(is, {
1003
1025
  key: 0,
1004
- onDelete: p,
1005
- onDownload: B,
1006
- onOpenLightbox: g[2] || (g[2] = (A) => m(A)),
1026
+ onDelete: k,
1027
+ onDownload: C,
1028
+ onOpenLightbox: d[2] || (d[2] = (E) => b(E)),
1007
1029
  files: v.value
1008
- }, null, 8, ["files"])) : k("", !0),
1009
- x.value === "grid" ? (s(), z(ms, {
1030
+ }, null, 8, ["files"])) : $("", !0),
1031
+ i.value === "grid" ? (t(), H(bs, {
1010
1032
  key: 1,
1011
- onDelete: p,
1012
- onDownload: B,
1013
- onOpenLightbox: g[3] || (g[3] = (A) => m(A)),
1033
+ onDelete: k,
1034
+ onDownload: C,
1035
+ onOpenLightbox: d[3] || (d[3] = (E) => b(E)),
1014
1036
  files: v.value
1015
- }, null, 8, ["files"])) : k("", !0)
1016
- ], 6)) : (s(), a("div", hs, g[6] || (g[6] = [
1017
- t("div", { class: "flex items-center justify-center h-full" }, [
1018
- t("p", { class: "text-gray-500 leading-[3]" }, "Файлів не знайдено")
1037
+ }, null, 8, ["files"])) : $("", !0)
1038
+ ], 6)) : (t(), a("div", ks, d[6] || (d[6] = [
1039
+ e("div", { class: "flex items-center justify-center h-full" }, [
1040
+ e("p", { class: "text-gray-500 leading-[3]" }, "Файлів не знайдено")
1019
1041
  ], -1)
1020
1042
  ])))
1021
1043
  ]),
1022
- M(F, {
1023
- modelValue: e.value,
1024
- "onUpdate:modelValue": g[4] || (g[4] = (A) => e.value = A),
1025
- onConfirm: d,
1044
+ z(A, {
1045
+ modelValue: n.value,
1046
+ "onUpdate:modelValue": d[4] || (d[4] = (E) => n.value = E),
1047
+ onConfirm: x,
1026
1048
  title: "Ви впевнені?",
1027
1049
  message: "Ви впевнені, що хочете видалити цей файл?",
1028
1050
  confirmButtonText: "Так, я впевнена/ий",
1029
1051
  cancelButtonText: "Скасувати"
1030
1052
  }, null, 8, ["modelValue"]),
1031
- M(U, {
1032
- modelValue: b.value,
1033
- "onUpdate:modelValue": g[5] || (g[5] = (A) => b.value = A),
1034
- images: y.value,
1035
- "start-index": l.value
1053
+ z(P, {
1054
+ modelValue: f.value,
1055
+ "onUpdate:modelValue": d[5] || (d[5] = (E) => f.value = E),
1056
+ images: m.value,
1057
+ "start-index": r.value
1036
1058
  }, null, 8, ["modelValue", "images", "start-index"])
1037
1059
  ], 64);
1038
1060
  };
1039
1061
  }
1040
- }), fs = {
1062
+ }), _s = {
1041
1063
  key: 0,
1042
1064
  class: "image-wrapper h-full max-h-[400px]",
1043
1065
  id: "lightbox-gallery"
1044
- }, ys = ["onClick"], vs = {
1066
+ }, ws = ["onClick"], $s = {
1045
1067
  key: 0,
1046
1068
  rel: "noreferrer",
1047
1069
  class: "relative block h-full w-full"
1048
- }, bs = ["src"], xs = {
1070
+ }, Cs = ["src"], Ls = {
1049
1071
  key: 0,
1050
1072
  class: "thumb-cover"
1051
- }, ks = /* @__PURE__ */ j({
1073
+ }, Ms = /* @__PURE__ */ V({
1052
1074
  __name: "GalleryContent",
1053
1075
  props: {
1054
1076
  title: {},
@@ -1062,86 +1084,86 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1062
1084
  style: {}
1063
1085
  },
1064
1086
  emits: ["delete"],
1065
- setup(r, { emit: i }) {
1066
- const o = i, e = $(!1), n = $(0), b = r, l = S(
1067
- () => Array.isArray(b.items) ? b.items.map((u) => u?.file_path) : []
1068
- ), v = (u) => {
1069
- const p = l.value.findIndex(
1070
- (d) => d === u.file_path
1087
+ setup(c, { emit: l }) {
1088
+ const s = l, n = M(!1), o = M(0), f = c, r = N(
1089
+ () => Array.isArray(f.items) ? f.items.map((g) => g?.file_path) : []
1090
+ ), v = (g) => {
1091
+ const k = r.value.findIndex(
1092
+ (x) => x === g.file_path
1071
1093
  );
1072
- p !== -1 && (e.value = !0, n.value = p);
1094
+ k !== -1 && (n.value = !0, o.value = k);
1073
1095
  };
1074
- return (u, p) => {
1075
- const d = te("Lightbox");
1076
- return u.items?.length >= 1 ? (s(), a("div", fs, [
1077
- (s(!0), a(I, null, H(u.items, (y, m) => (s(), a("div", {
1078
- class: D(["h-full w-full image" + m, "cursor-pointer bg-teal-500 rounded-[3px]"]),
1079
- key: m,
1080
- onClick: R((T) => v(y), ["stop"])
1096
+ return (g, k) => {
1097
+ const x = ne("Lightbox");
1098
+ return g.items?.length >= 1 ? (t(), a("div", _s, [
1099
+ (t(!0), a(T, null, j(g.items, (m, b) => (t(), a("div", {
1100
+ class: I(["h-full w-full image" + b, "cursor-pointer bg-teal-500 rounded-[3px]"]),
1101
+ key: b,
1102
+ onClick: U((F) => v(m), ["stop"])
1081
1103
  }, [
1082
- m < 5 ? (s(), a("div", vs, [
1083
- t("img", {
1084
- src: `/file/resize?filepath=${y?.file_path}&w=500`,
1104
+ b < 5 ? (t(), a("div", $s, [
1105
+ e("img", {
1106
+ src: `/file/resize?filepath=${m?.file_path}&w=500`,
1085
1107
  alt: "alt",
1086
1108
  height: "auto",
1087
1109
  width: "100%",
1088
- class: D([
1110
+ class: I([
1089
1111
  "object-cover h-full w-full bg-gray-200 rounded-[3px]",
1090
- m === 0 ? "max-h-[411px]" : "max-h-[calc((411px-3px)/2)]"
1112
+ b === 0 ? "max-h-[411px]" : "max-h-[calc((411px-3px)/2)]"
1091
1113
  ])
1092
- }, null, 10, bs),
1093
- m === 4 && u.items?.length > 5 ? (s(), a("div", xs, " +" + _(u.items?.length - 5), 1)) : k("", !0)
1094
- ])) : k("", !0)
1095
- ], 10, ys))), 128)),
1096
- (s(!0), a(I, null, H(Math.max(0, 5 - u.items.length), (y) => (s(), a("div", {
1097
- key: "empty-" + y,
1098
- class: D(["h-full w-full image" + (u.items.length + y - 1), "bg-gray-300 rounded-[3px]"])
1114
+ }, null, 10, Cs),
1115
+ b === 4 && g.items?.length > 5 ? (t(), a("div", Ls, " +" + _(g.items?.length - 5), 1)) : $("", !0)
1116
+ ])) : $("", !0)
1117
+ ], 10, ws))), 128)),
1118
+ (t(!0), a(T, null, j(Math.max(0, 5 - g.items.length), (m) => (t(), a("div", {
1119
+ key: "empty-" + m,
1120
+ class: I(["h-full w-full image" + (g.items.length + m - 1), "bg-gray-300 rounded-[3px]"])
1099
1121
  }, null, 2))), 128)),
1100
- M(d, {
1101
- modelValue: e.value,
1102
- "onUpdate:modelValue": p[0] || (p[0] = (y) => e.value = y),
1103
- images: l.value,
1104
- "start-index": n.value,
1122
+ z(x, {
1123
+ modelValue: n.value,
1124
+ "onUpdate:modelValue": k[0] || (k[0] = (m) => n.value = m),
1125
+ images: r.value,
1126
+ "start-index": o.value,
1105
1127
  delete: "true",
1106
1128
  download: "true",
1107
- onDelete: p[1] || (p[1] = (y) => o("delete", y))
1129
+ onDelete: k[1] || (k[1] = (m) => s("delete", m))
1108
1130
  }, null, 8, ["modelValue", "images", "start-index"])
1109
- ])) : k("", !0);
1131
+ ])) : $("", !0);
1110
1132
  };
1111
1133
  }
1112
- }), _s = {
1134
+ }), Ts = {
1113
1135
  key: 0,
1114
1136
  class: "text-xl font-semibold"
1115
- }, ws = { class: "flex gap-1" }, $s = { 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" }, Cs = /* @__PURE__ */ j({
1137
+ }, Ds = { class: "flex gap-1" }, js = { 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" }, Is = /* @__PURE__ */ V({
1116
1138
  __name: "widgetHeader",
1117
1139
  props: {
1118
1140
  title: {}
1119
1141
  },
1120
1142
  emits: ["onAddImage"],
1121
- setup(r) {
1122
- return (i, o) => (s(), a("div", {
1123
- class: D(["flex flex-col sm:flex-row gap-3 mb-4", i.title ? "justify-between sm:items-center" : "justify-end sm:items-center"])
1143
+ setup(c) {
1144
+ return (l, s) => (t(), a("div", {
1145
+ class: I(["flex flex-col sm:flex-row gap-3 mb-4", l.title ? "justify-between sm:items-center" : "justify-end sm:items-center"])
1124
1146
  }, [
1125
- i.title ? (s(), a("h3", _s, _(i.title), 1)) : k("", !0),
1126
- t("div", ws, [
1127
- t("label", null, [
1128
- t("input", {
1147
+ l.title ? (t(), a("h3", Ts, _(l.title), 1)) : $("", !0),
1148
+ e("div", Ds, [
1149
+ e("label", null, [
1150
+ e("input", {
1129
1151
  type: "file",
1130
1152
  class: "hidden",
1131
- onChange: o[0] || (o[0] = (e) => i.$emit("onAddImage", e))
1153
+ onChange: s[0] || (s[0] = (n) => l.$emit("onAddImage", n))
1132
1154
  }, null, 32),
1133
- t("div", $s, [
1134
- M(C(we), { class: "h-4 w-4" }),
1135
- o[1] || (o[1] = E(" Додати зображення ", -1))
1155
+ e("div", js, [
1156
+ z(D(Te), { class: "h-4 w-4" }),
1157
+ s[1] || (s[1] = O(" Додати зображення ", -1))
1136
1158
  ])
1137
1159
  ])
1138
1160
  ])
1139
1161
  ], 2));
1140
1162
  }
1141
- }), Ms = {
1163
+ }), As = {
1142
1164
  class: "w-full mx-auto font-sans",
1143
1165
  ref: "containerRef"
1144
- }, Ls = { key: 1 }, ae = /* @__PURE__ */ j({
1166
+ }, zs = { key: 1 }, ce = /* @__PURE__ */ V({
1145
1167
  __name: "GalleryWidget",
1146
1168
  props: {
1147
1169
  title: {},
@@ -1155,135 +1177,135 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1155
1177
  style: {}
1156
1178
  },
1157
1179
  emits: ["delete", "add", "openLightbox"],
1158
- setup(r, { emit: i }) {
1159
- const o = r, e = $(o.items ?? []), n = i;
1160
- e.value.length === 0 && u();
1161
- const b = (d) => {
1162
- o.onAddImage ? o.onAddImage(d) : v(d), n("add", d);
1163
- }, l = (d) => {
1164
- const y = e.value.find(
1165
- (m) => m.file_path === d
1180
+ setup(c, { emit: l }) {
1181
+ const s = c, n = M(s.items ?? []), o = l;
1182
+ n.value.length === 0 && g();
1183
+ const f = (x) => {
1184
+ s.onAddImage ? s.onAddImage(x) : v(x), o("add", x);
1185
+ }, r = (x) => {
1186
+ const m = n.value.find(
1187
+ (b) => b.file_path === x
1166
1188
  )?.file_id;
1167
- y && (o.onDelete ? o.onDelete(y) : p(y));
1168
- }, v = async (d) => {
1169
- if (!(!d.target || !d.target.files || d.target.files.length === 0))
1189
+ m && (s.onDelete ? s.onDelete(m) : k(m));
1190
+ }, v = async (x) => {
1191
+ if (!(!x.target || !x.target.files || x.target.files.length === 0))
1170
1192
  try {
1171
1193
  await Promise.all(
1172
- Array.from(d.target.files).map(async (y) => {
1173
- const m = new FormData();
1174
- m.append("file", y);
1175
- const T = `/api/widget/file/${o.id}`, O = await fetch(T, {
1194
+ Array.from(x.target.files).map(async (m) => {
1195
+ const b = new FormData();
1196
+ b.append("file", m);
1197
+ const F = `/api/widget/file/${s.id}`, w = await fetch(F, {
1176
1198
  method: "POST",
1177
- body: m
1199
+ body: b
1178
1200
  });
1179
- if (!O.ok)
1180
- throw new Error(`HTTP error! status: ${O.status}`);
1181
- return y;
1201
+ if (!w.ok)
1202
+ throw new Error(`HTTP error! status: ${w.status}`);
1203
+ return m;
1182
1204
  })
1183
- ), await u();
1184
- } catch (y) {
1185
- console.error("Помилка при завантаженні файлів:", y);
1205
+ ), await g();
1206
+ } catch (m) {
1207
+ console.error("Помилка при завантаженні файлів:", m);
1186
1208
  }
1187
1209
  };
1188
- async function u() {
1189
- if (!o.id)
1210
+ async function g() {
1211
+ if (!s.id)
1190
1212
  return;
1191
- const d = await fetch(`/api/widget/file/${o.id}`).then(
1192
- (y) => y.json()
1213
+ const x = await fetch(`/api/widget/file/${s.id}`).then(
1214
+ (m) => m.json()
1193
1215
  );
1194
- e.value = d.rows;
1216
+ n.value = x.rows;
1195
1217
  }
1196
- const p = async (d) => {
1218
+ const k = async (x) => {
1197
1219
  try {
1198
- await fetch(`/api/widget/file/${o.id}/${d}`, {
1220
+ await fetch(`/api/widget/file/${s.id}/${x}`, {
1199
1221
  method: "DELETE"
1200
- }), await u();
1201
- } catch (y) {
1202
- console.error(y);
1222
+ }), await g();
1223
+ } catch (m) {
1224
+ console.error(m);
1203
1225
  }
1204
1226
  };
1205
- return (d, y) => (s(), a("div", Ms, [
1206
- M(Cs, {
1207
- title: d.title,
1208
- onOnAddImage: y[0] || (y[0] = (m) => b(m))
1227
+ return (x, m) => (t(), a("div", As, [
1228
+ z(Is, {
1229
+ title: x.title,
1230
+ onOnAddImage: m[0] || (m[0] = (b) => f(b))
1209
1231
  }, null, 8, ["title"]),
1210
- e.value.length > 0 ? (s(), z(ks, {
1232
+ n.value.length > 0 ? (t(), H(Ms, {
1211
1233
  key: 0,
1212
- items: e.value,
1213
- onDelete: y[1] || (y[1] = (m) => l(m))
1214
- }, null, 8, ["items"])) : (s(), a("div", Ls, y[2] || (y[2] = [
1215
- t("div", { class: "flex items-center justify-center h-full" }, [
1216
- t("p", { class: "text-gray-500 leading-[3]" }, "Зображень не знайдено")
1234
+ items: n.value,
1235
+ onDelete: m[1] || (m[1] = (b) => r(b))
1236
+ }, null, 8, ["items"])) : (t(), a("div", zs, m[2] || (m[2] = [
1237
+ e("div", { class: "flex items-center justify-center h-full" }, [
1238
+ e("p", { class: "text-gray-500 leading-[3]" }, "Зображень не знайдено")
1217
1239
  ], -1)
1218
1240
  ])))
1219
1241
  ], 512));
1220
1242
  }
1221
- }), Ts = { class: "text-value" }, Ds = { class: "text-sm text-gray-900" }, Is = /* @__PURE__ */ j({
1243
+ }), Vs = { class: "text-value" }, Es = { class: "text-sm text-gray-900" }, Hs = /* @__PURE__ */ V({
1222
1244
  __name: "TextValue",
1223
1245
  props: {
1224
1246
  item: {}
1225
1247
  },
1226
- setup(r) {
1227
- const i = r, o = S(() => {
1228
- const e = i.item.value;
1229
- return typeof e == "boolean" ? e ? "Так" : "Ні" : e == null ? "—" : String(e);
1248
+ setup(c) {
1249
+ const l = c, s = N(() => {
1250
+ const n = l.item.value;
1251
+ return typeof n == "boolean" ? n ? "Так" : "Ні" : n == null ? "—" : String(n);
1230
1252
  });
1231
- return (e, n) => (s(), a("div", Ts, [
1232
- t("span", Ds, _(o.value), 1)
1253
+ return (n, o) => (t(), a("div", Vs, [
1254
+ e("span", Es, _(s.value), 1)
1233
1255
  ]));
1234
1256
  }
1235
- }), W = (r, i) => {
1236
- const o = r.__vccOpts || r;
1237
- for (const [e, n] of i)
1238
- o[e] = n;
1239
- return o;
1240
- }, js = /* @__PURE__ */ W(Is, [["__scopeId", "data-v-c14550b7"]]), Vs = { class: "link-value" }, As = ["href"], zs = /* @__PURE__ */ j({
1257
+ }), G = (c, l) => {
1258
+ const s = c.__vccOpts || c;
1259
+ for (const [n, o] of l)
1260
+ s[n] = o;
1261
+ return s;
1262
+ }, Ss = /* @__PURE__ */ G(Hs, [["__scopeId", "data-v-c14550b7"]]), Fs = { class: "link-value" }, Os = ["href"], Ns = /* @__PURE__ */ V({
1241
1263
  __name: "LinkValue",
1242
1264
  props: {
1243
1265
  item: {}
1244
1266
  },
1245
- setup(r) {
1246
- const i = r, o = S(() => {
1247
- const e = String(i.item.value);
1267
+ setup(c) {
1268
+ const l = c, s = N(() => {
1269
+ const n = String(l.item.value);
1248
1270
  try {
1249
- const n = new URL(e);
1250
- return n.hostname + n.pathname;
1271
+ const o = new URL(n);
1272
+ return o.hostname + o.pathname;
1251
1273
  } catch {
1252
- return e;
1274
+ return n;
1253
1275
  }
1254
1276
  });
1255
- return (e, n) => (s(), a("div", Vs, [
1256
- t("a", {
1257
- href: String(e.item.value),
1277
+ return (n, o) => (t(), a("div", Fs, [
1278
+ e("a", {
1279
+ href: String(n.item.value),
1258
1280
  target: "_blank",
1259
1281
  rel: "noopener noreferrer",
1260
1282
  class: "text-blue-600 hover:text-blue-800 underline text-sm"
1261
1283
  }, [
1262
- E(_(o.value) + " ", 1),
1263
- n[0] || (n[0] = t("i", { class: "fas fa-external-link-alt ml-1 text-xs" }, null, -1))
1264
- ], 8, As)
1284
+ O(_(s.value) + " ", 1),
1285
+ o[0] || (o[0] = e("i", { class: "fas fa-external-link-alt ml-1 text-xs" }, null, -1))
1286
+ ], 8, Os)
1265
1287
  ]));
1266
1288
  }
1267
- }), Hs = /* @__PURE__ */ W(zs, [["__scopeId", "data-v-e6eb07a6"]]), Es = { class: "date-value" }, Fs = { class: "text-sm text-gray-900" }, Ss = /* @__PURE__ */ j({
1289
+ }), Ps = /* @__PURE__ */ G(Ns, [["__scopeId", "data-v-e6eb07a6"]]), Bs = { class: "date-value" }, Ws = { class: "text-sm text-gray-900" }, Rs = /* @__PURE__ */ V({
1268
1290
  __name: "DateValue",
1269
1291
  props: {
1270
1292
  item: {}
1271
1293
  },
1272
- setup(r) {
1273
- const i = r, o = S(() => {
1274
- const e = i.item.value;
1275
- if (e instanceof Date)
1276
- return e.toLocaleDateString("uk-UA", {
1294
+ setup(c) {
1295
+ const l = c, s = N(() => {
1296
+ const n = l.item.value;
1297
+ if (n instanceof Date)
1298
+ return n.toLocaleDateString("uk-UA", {
1277
1299
  year: "numeric",
1278
1300
  month: "long",
1279
1301
  day: "numeric",
1280
1302
  hour: "2-digit",
1281
1303
  minute: "2-digit"
1282
1304
  });
1283
- if (typeof e == "string") {
1284
- const n = new Date(e);
1285
- if (!isNaN(n.getTime()))
1286
- return n.toLocaleDateString("uk-UA", {
1305
+ if (typeof n == "string") {
1306
+ const o = new Date(n);
1307
+ if (!isNaN(o.getTime()))
1308
+ return o.toLocaleDateString("uk-UA", {
1287
1309
  year: "numeric",
1288
1310
  month: "long",
1289
1311
  day: "numeric",
@@ -1291,23 +1313,23 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1291
1313
  minute: "2-digit"
1292
1314
  });
1293
1315
  }
1294
- return String(e);
1316
+ return String(n);
1295
1317
  });
1296
- return (e, n) => (s(), a("div", Es, [
1297
- t("span", Fs, _(o.value), 1)
1318
+ return (n, o) => (t(), a("div", Bs, [
1319
+ e("span", Ws, _(s.value), 1)
1298
1320
  ]));
1299
1321
  }
1300
- }), Os = /* @__PURE__ */ W(Ss, [["__scopeId", "data-v-b9600618"]]), Bs = { class: "status-value" }, Ns = {
1322
+ }), Us = /* @__PURE__ */ G(Rs, [["__scopeId", "data-v-b9600618"]]), Gs = { class: "status-value" }, qs = {
1301
1323
  key: 0,
1302
1324
  class: "mr-1"
1303
- }, Ps = /* @__PURE__ */ j({
1325
+ }, Ks = /* @__PURE__ */ V({
1304
1326
  __name: "StatusValue",
1305
1327
  props: {
1306
1328
  item: {}
1307
1329
  },
1308
- setup(r) {
1309
- const i = r, o = S(() => {
1310
- switch (String(i.item.value).toLowerCase()) {
1330
+ setup(c) {
1331
+ const l = c, s = N(() => {
1332
+ switch (String(l.item.value).toLowerCase()) {
1311
1333
  case "active":
1312
1334
  case "активний":
1313
1335
  case "успішно":
@@ -1329,8 +1351,8 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1329
1351
  default:
1330
1352
  return "bg-blue-100 text-blue-800";
1331
1353
  }
1332
- }), e = S(() => {
1333
- switch (String(i.item.value).toLowerCase()) {
1354
+ }), n = N(() => {
1355
+ switch (String(l.item.value).toLowerCase()) {
1334
1356
  case "active":
1335
1357
  case "активний":
1336
1358
  case "успішно":
@@ -1353,50 +1375,50 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1353
1375
  return "fas fa-info-circle";
1354
1376
  }
1355
1377
  });
1356
- return (n, b) => (s(), a("div", Bs, [
1357
- t("span", {
1358
- class: D(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium", o.value])
1378
+ return (o, f) => (t(), a("div", Gs, [
1379
+ e("span", {
1380
+ class: I(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium", s.value])
1359
1381
  }, [
1360
- e.value ? (s(), a("span", Ns, [
1361
- t("i", {
1362
- class: D(e.value)
1382
+ n.value ? (t(), a("span", qs, [
1383
+ e("i", {
1384
+ class: I(n.value)
1363
1385
  }, null, 2)
1364
- ])) : k("", !0),
1365
- E(" " + _(String(n.item.value)), 1)
1386
+ ])) : $("", !0),
1387
+ O(" " + _(String(o.item.value)), 1)
1366
1388
  ], 2)
1367
1389
  ]));
1368
1390
  }
1369
- }), Us = /* @__PURE__ */ W(Ps, [["__scopeId", "data-v-c72e0b01"]]), Rs = { class: "custom-value" }, Ws = { class: "text-sm text-gray-900" }, qs = /* @__PURE__ */ j({
1391
+ }), Zs = /* @__PURE__ */ G(Ks, [["__scopeId", "data-v-c72e0b01"]]), Js = { class: "custom-value" }, Xs = { class: "text-sm text-gray-900" }, Qs = /* @__PURE__ */ V({
1370
1392
  __name: "CustomValue",
1371
1393
  props: {
1372
1394
  item: {}
1373
1395
  },
1374
- setup(r) {
1375
- return (i, o) => (s(), a("div", Rs, [
1376
- q(i.$slots, "default", {
1377
- item: i.item,
1378
- value: i.item.value
1396
+ setup(c) {
1397
+ return (l, s) => (t(), a("div", Js, [
1398
+ W(l.$slots, "default", {
1399
+ item: l.item,
1400
+ value: l.item.value
1379
1401
  }, () => [
1380
- t("span", Ws, _(String(i.item.value)), 1)
1402
+ e("span", Xs, _(String(l.item.value)), 1)
1381
1403
  ], !0)
1382
1404
  ]));
1383
1405
  }
1384
- }), Gs = /* @__PURE__ */ W(qs, [["__scopeId", "data-v-11a73810"]]), Ks = ["id"], Zs = {
1406
+ }), Ys = /* @__PURE__ */ G(Qs, [["__scopeId", "data-v-11a73810"]]), en = ["id"], tn = {
1385
1407
  key: 0,
1386
1408
  class: "text-xl font-semibold text-gray-900 mb-4"
1387
- }, Js = {
1409
+ }, sn = {
1388
1410
  key: 1,
1389
1411
  class: "overflow-x-auto"
1390
- }, Xs = { class: "min-w-full divide-y divide-gray-200" }, Qs = { class: "bg-white divide-y divide-gray-200" }, Ys = { class: "px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900" }, eo = { class: "flex items-center gap-2" }, to = ["title"], so = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, oo = {
1412
+ }, nn = { class: "min-w-full divide-y divide-gray-200" }, on = { class: "bg-white divide-y divide-gray-200" }, an = { class: "px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900" }, ln = { class: "flex items-center gap-2" }, rn = ["title"], dn = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, cn = {
1391
1413
  key: 2,
1392
1414
  class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"
1393
- }, no = { class: "flex items-start gap-3" }, io = {
1415
+ }, un = { class: "flex items-start gap-3" }, pn = {
1394
1416
  key: 0,
1395
1417
  class: "flex-shrink-0"
1396
- }, lo = { class: "flex-1 min-w-0" }, ao = { class: "flex items-center gap-2 mb-2" }, ro = { class: "text-sm font-medium text-gray-900" }, co = ["title"], uo = {
1418
+ }, mn = { class: "flex-1 min-w-0" }, gn = { class: "flex items-center gap-2 mb-2" }, hn = { class: "text-sm font-medium text-gray-900" }, fn = ["title"], yn = {
1397
1419
  key: 3,
1398
1420
  class: "overflow-x-auto"
1399
- }, po = { class: "min-w-full divide-y divide-gray-200" }, mo = { class: "bg-white divide-y divide-gray-200" }, go = { class: "px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900" }, ho = { class: "flex items-center gap-2" }, fo = ["title"], yo = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, vo = /* @__PURE__ */ j({
1421
+ }, vn = { class: "min-w-full divide-y divide-gray-200" }, bn = { class: "bg-white divide-y divide-gray-200" }, xn = { class: "px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900" }, kn = { class: "flex items-center gap-2" }, _n = ["title"], wn = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, $n = /* @__PURE__ */ V({
1400
1422
  __name: "DescriptionListWidget",
1401
1423
  props: {
1402
1424
  title: {},
@@ -1406,113 +1428,113 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1406
1428
  className: {},
1407
1429
  style: {}
1408
1430
  },
1409
- setup(r) {
1410
- const i = (o) => {
1411
- switch (o.type) {
1431
+ setup(c) {
1432
+ const l = (s) => {
1433
+ switch (s.type) {
1412
1434
  case "link":
1413
- return Hs;
1435
+ return Ps;
1414
1436
  case "date":
1415
- return Os;
1416
- case "status":
1417
1437
  return Us;
1438
+ case "status":
1439
+ return Zs;
1418
1440
  case "custom":
1419
- return Gs;
1441
+ return Ys;
1420
1442
  default:
1421
- return js;
1443
+ return Ss;
1422
1444
  }
1423
1445
  };
1424
- return (o, e) => (s(), a("div", {
1425
- class: D(["description-list-widget", o.className]),
1426
- id: o.id,
1427
- style: Q(o.style)
1446
+ return (s, n) => (t(), a("div", {
1447
+ class: I(["description-list-widget", s.className]),
1448
+ id: s.id,
1449
+ style: J(s.style)
1428
1450
  }, [
1429
- o.title ? (s(), a("h3", Zs, _(o.title), 1)) : k("", !0),
1430
- o.view === "table" ? (s(), a("div", Js, [
1431
- t("table", Xs, [
1432
- t("tbody", Qs, [
1433
- (s(!0), a(I, null, H(o.items, (n) => (s(), a("tr", {
1434
- key: n.id || n.label
1451
+ s.title ? (t(), a("h3", tn, _(s.title), 1)) : $("", !0),
1452
+ s.view === "table" ? (t(), a("div", sn, [
1453
+ e("table", nn, [
1454
+ e("tbody", on, [
1455
+ (t(!0), a(T, null, j(s.items, (o) => (t(), a("tr", {
1456
+ key: o.id || o.label
1435
1457
  }, [
1436
- t("td", Ys, [
1437
- t("div", eo, [
1438
- n.icon ? (s(), a("i", {
1458
+ e("td", an, [
1459
+ e("div", ln, [
1460
+ o.icon ? (t(), a("i", {
1439
1461
  key: 0,
1440
- class: D([n.icon, "text-gray-500"])
1441
- }, null, 2)) : k("", !0),
1442
- E(" " + _(n.label) + " ", 1),
1443
- n.tooltip ? (s(), a("span", {
1462
+ class: I([o.icon, "text-gray-500"])
1463
+ }, null, 2)) : $("", !0),
1464
+ O(" " + _(o.label) + " ", 1),
1465
+ o.tooltip ? (t(), a("span", {
1444
1466
  key: 1,
1445
1467
  class: "text-gray-400 cursor-help",
1446
- title: n.tooltip
1447
- }, e[0] || (e[0] = [
1448
- t("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1449
- ]), 8, to)) : k("", !0)
1468
+ title: o.tooltip
1469
+ }, n[0] || (n[0] = [
1470
+ e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1471
+ ]), 8, rn)) : $("", !0)
1450
1472
  ])
1451
1473
  ]),
1452
- t("td", so, [
1453
- (s(), z(N(i(n)), { item: n }, null, 8, ["item"]))
1474
+ e("td", dn, [
1475
+ (t(), H(B(l(o)), { item: o }, null, 8, ["item"]))
1454
1476
  ])
1455
1477
  ]))), 128))
1456
1478
  ])
1457
1479
  ])
1458
- ])) : o.view === "grid" ? (s(), a("div", oo, [
1459
- (s(!0), a(I, null, H(o.items, (n) => (s(), a("div", {
1460
- key: n.id || n.label,
1480
+ ])) : s.view === "grid" ? (t(), a("div", cn, [
1481
+ (t(!0), a(T, null, j(s.items, (o) => (t(), a("div", {
1482
+ key: o.id || o.label,
1461
1483
  class: "description-item-card bg-white border border-gray-200 rounded-lg p-4"
1462
1484
  }, [
1463
- t("div", no, [
1464
- n.icon ? (s(), a("div", io, [
1465
- t("i", {
1466
- class: D([n.icon, "text-gray-500 text-lg"])
1485
+ e("div", un, [
1486
+ o.icon ? (t(), a("div", pn, [
1487
+ e("i", {
1488
+ class: I([o.icon, "text-gray-500 text-lg"])
1467
1489
  }, null, 2)
1468
- ])) : k("", !0),
1469
- t("div", lo, [
1470
- t("div", ao, [
1471
- t("h4", ro, _(n.label), 1),
1472
- n.tooltip ? (s(), a("span", {
1490
+ ])) : $("", !0),
1491
+ e("div", mn, [
1492
+ e("div", gn, [
1493
+ e("h4", hn, _(o.label), 1),
1494
+ o.tooltip ? (t(), a("span", {
1473
1495
  key: 0,
1474
1496
  class: "text-gray-400 cursor-help",
1475
- title: n.tooltip
1476
- }, e[1] || (e[1] = [
1477
- t("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1478
- ]), 8, co)) : k("", !0)
1497
+ title: o.tooltip
1498
+ }, n[1] || (n[1] = [
1499
+ e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1500
+ ]), 8, fn)) : $("", !0)
1479
1501
  ]),
1480
- (s(), z(N(i(n)), { item: n }, null, 8, ["item"]))
1502
+ (t(), H(B(l(o)), { item: o }, null, 8, ["item"]))
1481
1503
  ])
1482
1504
  ])
1483
1505
  ]))), 128))
1484
- ])) : (s(), a("div", uo, [
1485
- t("table", po, [
1486
- t("tbody", mo, [
1487
- (s(!0), a(I, null, H(o.items, (n) => (s(), a("tr", {
1488
- key: n.id || n.label
1506
+ ])) : (t(), a("div", yn, [
1507
+ e("table", vn, [
1508
+ e("tbody", bn, [
1509
+ (t(!0), a(T, null, j(s.items, (o) => (t(), a("tr", {
1510
+ key: o.id || o.label
1489
1511
  }, [
1490
- t("td", go, [
1491
- t("div", ho, [
1492
- n.icon ? (s(), a("i", {
1512
+ e("td", xn, [
1513
+ e("div", kn, [
1514
+ o.icon ? (t(), a("i", {
1493
1515
  key: 0,
1494
- class: D([n.icon, "text-gray-500"])
1495
- }, null, 2)) : k("", !0),
1496
- E(" " + _(n.label) + " ", 1),
1497
- n.tooltip ? (s(), a("span", {
1516
+ class: I([o.icon, "text-gray-500"])
1517
+ }, null, 2)) : $("", !0),
1518
+ O(" " + _(o.label) + " ", 1),
1519
+ o.tooltip ? (t(), a("span", {
1498
1520
  key: 1,
1499
1521
  class: "text-gray-400 cursor-help",
1500
- title: n.tooltip
1501
- }, e[2] || (e[2] = [
1502
- t("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1503
- ]), 8, fo)) : k("", !0)
1522
+ title: o.tooltip
1523
+ }, n[2] || (n[2] = [
1524
+ e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
1525
+ ]), 8, _n)) : $("", !0)
1504
1526
  ])
1505
1527
  ]),
1506
- t("td", yo, [
1507
- (s(), z(N(i(n)), { item: n }, null, 8, ["item"]))
1528
+ e("td", wn, [
1529
+ (t(), H(B(l(o)), { item: o }, null, 8, ["item"]))
1508
1530
  ])
1509
1531
  ]))), 128))
1510
1532
  ])
1511
1533
  ])
1512
1534
  ]))
1513
- ], 14, Ks));
1535
+ ], 14, en));
1514
1536
  }
1515
- }), De = /* @__PURE__ */ W(vo, [["__scopeId", "data-v-36d43e50"]]), bo = {
1537
+ }), ze = /* @__PURE__ */ G($n, [["__scopeId", "data-v-36d43e50"]]), Cn = {
1516
1538
  draw: {
1517
1539
  toolbar: {
1518
1540
  actions: {
@@ -1620,24 +1642,24 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
1620
1642
  }
1621
1643
  }
1622
1644
  };
1623
- function xo(r) {
1624
- return r ? r.type === "FeatureCollection" || r.type === "Feature" ? r : r.geom ? {
1645
+ function Ln(c) {
1646
+ return c ? c.type === "FeatureCollection" || c.type === "Feature" ? c : c.geom ? {
1625
1647
  type: "Feature",
1626
1648
  geometry: {
1627
- type: r.geom.type,
1628
- coordinates: r.geom.coordinates
1649
+ type: c.geom.type,
1650
+ coordinates: c.geom.coordinates
1629
1651
  },
1630
1652
  properties: {}
1631
- } : r.type && r.coordinates ? {
1653
+ } : c.type && c.coordinates ? {
1632
1654
  type: "Feature",
1633
- geometry: r,
1655
+ geometry: c,
1634
1656
  properties: {}
1635
1657
  } : null : null;
1636
1658
  }
1637
- const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1659
+ const Mn = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, Tn = {
1638
1660
  key: 1,
1639
1661
  class: "bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"
1640
- }, wo = { class: "flex items-center justify-between p-2 border-b" }, $o = { class: "p-2 border-b" }, Co = { class: "flex items-center" }, Mo = { class: "flex items-center" }, Lo = { class: "flex items-center" }, To = { class: "p-2" }, Do = { class: "flex items-center" }, Io = { class: "flex items-center" }, jo = ["onUpdate:modelValue", "onChange"], Vo = { class: "ml-2" }, re = /* @__PURE__ */ j({
1662
+ }, Dn = { class: "flex items-center justify-between p-2 border-b" }, jn = { class: "p-2 border-b" }, In = { class: "flex items-center" }, An = ["value"], zn = { class: "ml-2" }, Vn = { class: "p-2" }, En = { class: "flex items-center" }, Hn = { class: "flex items-center" }, Sn = ["onUpdate:modelValue", "onChange"], Fn = { class: "ml-2" }, ue = /* @__PURE__ */ V({
1641
1663
  __name: "MapWidget",
1642
1664
  props: {
1643
1665
  pattern: {},
@@ -1645,89 +1667,94 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1645
1667
  id: {},
1646
1668
  tms: {}
1647
1669
  },
1648
- setup(r) {
1649
- const i = r, o = $(null);
1650
- let e, n;
1651
- const b = {
1652
- topo100: {
1653
- url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png"
1654
- },
1655
- orto10: {
1656
- url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png"
1657
- },
1658
- osmb: {
1659
- url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png"
1660
- }
1661
- }, l = $("topo100");
1662
- let v;
1663
- const u = $(!0), p = $(!1), d = $(y());
1664
- function y() {
1665
- return i.tms ? (Array.isArray(i.tms) ? i.tms : i.tms?.split(",")).map((c, f) => ({ url: i.pattern ? i.pattern.replace("{{id}}", c) : c, name: "Шар " + f, visible: !0, i: f })) : [];
1670
+ setup(c) {
1671
+ const l = Le(), s = c, n = M(null);
1672
+ let o, f;
1673
+ const r = h(), v = M(Object.keys(r)[0]);
1674
+ let g;
1675
+ const k = M(!0), x = M(!1), m = M(b());
1676
+ function b() {
1677
+ return s.tms ? (Array.isArray(s.tms) ? s.tms : s.tms?.split(",")).map((d, A) => ({ url: s.pattern ? s.pattern.replace("{{id}}", d) : d, name: "Шар " + A, visible: !0, i: A })) : [];
1666
1678
  }
1667
- function m() {
1668
- return new Promise((w, c) => {
1669
- if (window.L && window.L.Draw) return w(0);
1670
- const f = (F) => {
1671
- if (Array.from(document.styleSheets).some((K) => K?.href?.includes(F))) return;
1672
- const A = document.createElement("link");
1673
- A.rel = "stylesheet", A.href = F, document.head.appendChild(A);
1674
- }, g = (F) => new Promise((U, A) => {
1675
- const K = Array.from(document.scripts).find((J) => J.src === F);
1676
- if (K) {
1677
- K.addEventListener("load", () => U()), K.addEventListener("error", (J) => A(J));
1679
+ function F() {
1680
+ return new Promise((y, d) => {
1681
+ if (window.L && window.L.Draw) return y(0);
1682
+ const A = (E) => {
1683
+ if (Array.from(document.styleSheets).some((X) => X?.href?.includes(E))) return;
1684
+ const q = document.createElement("link");
1685
+ q.rel = "stylesheet", q.href = E, document.head.appendChild(q);
1686
+ }, P = (E) => new Promise((oe, q) => {
1687
+ const X = Array.from(document.scripts).find((Y) => Y.src === E);
1688
+ if (X) {
1689
+ X.addEventListener("load", () => oe()), X.addEventListener("error", (Y) => q(Y));
1678
1690
  return;
1679
1691
  }
1680
- const Z = document.createElement("script");
1681
- Z.src = F, Z.async = !0, Z.onload = () => U(), Z.onerror = (J) => A(J), document.body.appendChild(Z);
1692
+ const Q = document.createElement("script");
1693
+ Q.src = E, Q.async = !0, Q.onload = () => oe(), Q.onerror = (Y) => q(Y), document.body.appendChild(Q);
1682
1694
  });
1683
- f("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"), f("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css"), g("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").then(() => g("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js")).then(() => w(0)).catch(c);
1695
+ A("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"), A("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css"), P("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").then(() => P("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js")).then(() => y(0)).catch(d);
1684
1696
  });
1685
1697
  }
1686
- ue(async () => {
1687
- await m(), L.drawLocal = bo, e = L.map(o.value, { zoomControl: !1 }).setView([50, 30], 10), L.control.zoom({ position: "bottomright" }).addTo(e), v = L.tileLayer(b.topo100.url, { maxZoom: 19 }).addTo(e), l.value = "topo100", n = new L.FeatureGroup().addTo(e), d.value.length && h(0);
1688
- const w = xo(i.geom);
1689
- if (w) {
1690
- const c = [];
1691
- L.geoJSON(w).eachLayer((f) => c.push(f)), c.length && n.addLayer(c[0]), n.toGeoJSON(), T();
1698
+ let w = !1;
1699
+ ee(async () => {
1700
+ await F(), L.drawLocal = Cn;
1701
+ const y = l?.appContext.config.globalProperties.$settings?.center || [50, 30];
1702
+ o = L.map(n.value, { zoomControl: !1 }).setView(y, 10), o.on("mousemove", (A) => {
1703
+ w || (o.invalidateSize(), w = !0);
1704
+ }), L.control.zoom({ position: "bottomright" }).addTo(o), g = L.tileLayer(r[v.value].url, { maxZoom: 19 }).addTo(o), v.value = "topo100", f = new L.FeatureGroup().addTo(o), m.value.length && u(0);
1705
+ const d = Ln(s.geom);
1706
+ if (d) {
1707
+ const A = [];
1708
+ L.geoJSON(d).eachLayer((P) => A.push(P)), A.length && f.addLayer(A[0]), f.toGeoJSON();
1692
1709
  }
1693
1710
  });
1694
- function T(w = 30) {
1695
- const c = n.getLayers();
1696
- if (!c.length) return;
1697
- const g = L.featureGroup(c).getBounds();
1698
- g && g.isValid() && e.fitBounds(g, { padding: [w, w] });
1711
+ function C(y) {
1712
+ g && g.removeFrom(o);
1713
+ const d = r[y];
1714
+ g = L.tileLayer(d.url, d.options || {}).addTo(o), v.value = y;
1699
1715
  }
1700
- function O(w) {
1701
- v && v.removeFrom(e);
1702
- const c = b[w];
1703
- v = L.tileLayer(c.url, c.options || {}).addTo(e), l.value = w;
1716
+ function i() {
1717
+ C(v.value);
1704
1718
  }
1705
- function B() {
1706
- O(l.value);
1719
+ function p() {
1720
+ f && (k.value ? f.addTo(o) : f.removeFrom(o));
1707
1721
  }
1708
- function x() {
1709
- n && (u.value ? n.addTo(e) : n.removeFrom(e));
1722
+ function u(y) {
1723
+ const d = m.value[y];
1724
+ d.layer || (d.layer = L.tileLayer(d.url, { maxZoom: 19 })), d.visible ? d.layer.addTo(o) : d.layer.removeFrom(o);
1710
1725
  }
1711
- function h(w) {
1712
- const c = d.value[w];
1713
- c.layer || (c.layer = L.tileLayer(c.url, { maxZoom: 19 })), c.visible ? c.layer.addTo(e) : c.layer.removeFrom(e);
1726
+ function h() {
1727
+ return l?.appContext.config.globalProperties.$settings?.basemaps ? l?.appContext.config.globalProperties.$settings?.basemaps.map((y, d) => Object.assign(y, { key: `b${d}`, preview: y.preview || y.url.replace("{z}/{x}/{y}.png", "13/4790/2762.png") })).reduce((y, d) => ({ ...y, [d.key]: d }), {}) : {
1728
+ topo100: {
1729
+ url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
1730
+ preview: "https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"
1731
+ },
1732
+ orto10: {
1733
+ url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",
1734
+ preview: "https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"
1735
+ },
1736
+ osmb: {
1737
+ url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",
1738
+ preview: "https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"
1739
+ }
1740
+ };
1714
1741
  }
1715
- return (w, c) => (s(), a("div", ko, [
1716
- t("div", {
1742
+ return (y, d) => (t(), a("div", Mn, [
1743
+ e("div", {
1717
1744
  ref_key: "mapContainer",
1718
- ref: o,
1745
+ ref: n,
1719
1746
  class: "w-full h-full min-h-[300px]"
1720
1747
  }, null, 512),
1721
- p.value ? k("", !0) : (s(), a("div", {
1748
+ x.value ? $("", !0) : (t(), a("div", {
1722
1749
  key: 0,
1723
- onClick: c[0] || (c[0] = (f) => p.value = !0),
1750
+ onClick: d[0] || (d[0] = (A) => x.value = !0),
1724
1751
  class: "z-[500] bg-white absolute top-[10px] right-[10px] p-2 border rounded-lg cursor-pointer"
1725
1752
  }, " Шари ")),
1726
- p.value ? (s(), a("div", _o, [
1727
- t("div", wo, [
1728
- c[7] || (c[7] = t("div", null, "Шари", -1)),
1729
- (s(), a("svg", {
1730
- onClick: c[1] || (c[1] = (f) => p.value = !1),
1753
+ x.value ? (t(), a("div", Tn, [
1754
+ e("div", Dn, [
1755
+ d[5] || (d[5] = e("div", null, "Шари", -1)),
1756
+ (t(), a("svg", {
1757
+ onClick: d[1] || (d[1] = (A) => x.value = !1),
1731
1758
  xmlns: "http://www.w3.org/2000/svg",
1732
1759
  viewBox: "0 0 24 24",
1733
1760
  fill: "none",
@@ -1736,89 +1763,61 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1736
1763
  "stroke-linecap": "round",
1737
1764
  "stroke-linejoin": "round",
1738
1765
  class: "icon icon-tabler icons-tabler-outline icon-tabler-x w-4 h-4"
1739
- }, c[6] || (c[6] = [
1740
- t("path", {
1766
+ }, d[4] || (d[4] = [
1767
+ e("path", {
1741
1768
  stroke: "none",
1742
1769
  d: "M0 0h24v24H0z",
1743
1770
  fill: "none"
1744
1771
  }, null, -1),
1745
- t("path", { d: "M18 6l-12 12" }, null, -1),
1746
- t("path", { d: "M6 6l12 12" }, null, -1)
1772
+ e("path", { d: "M18 6l-12 12" }, null, -1),
1773
+ e("path", { d: "M6 6l12 12" }, null, -1)
1747
1774
  ])))
1748
1775
  ]),
1749
- t("div", $o, [
1750
- t("div", null, [
1751
- t("label", Co, [
1752
- P(t("input", {
1753
- type: "radio",
1754
- name: "base-layer",
1755
- value: "topo100",
1756
- "onUpdate:modelValue": c[2] || (c[2] = (f) => l.value = f),
1757
- onChange: B
1758
- }, null, 544), [
1759
- [se, l.value]
1760
- ]),
1761
- c[8] || (c[8] = t("span", { class: "ml-2" }, "Карта України", -1))
1762
- ])
1763
- ]),
1764
- t("div", null, [
1765
- t("label", Mo, [
1766
- P(t("input", {
1767
- type: "radio",
1768
- name: "base-layer",
1769
- value: "orto10",
1770
- "onUpdate:modelValue": c[3] || (c[3] = (f) => l.value = f),
1771
- onChange: B
1772
- }, null, 544), [
1773
- [se, l.value]
1774
- ]),
1775
- c[9] || (c[9] = t("span", { class: "ml-2" }, "Ortophoto 1:10К", -1))
1776
- ])
1777
- ]),
1778
- t("div", null, [
1779
- t("label", Lo, [
1780
- P(t("input", {
1776
+ e("div", jn, [
1777
+ (t(!0), a(T, null, j(D(r), (A, P) => (t(), a("div", null, [
1778
+ e("label", In, [
1779
+ R(e("input", {
1781
1780
  type: "radio",
1782
1781
  name: "base-layer",
1783
- value: "osmb",
1784
- "onUpdate:modelValue": c[4] || (c[4] = (f) => l.value = f),
1785
- onChange: B
1786
- }, null, 544), [
1787
- [se, l.value]
1782
+ value: P,
1783
+ "onUpdate:modelValue": d[2] || (d[2] = (E) => v.value = E),
1784
+ onChange: i
1785
+ }, null, 40, An), [
1786
+ [He, v.value]
1788
1787
  ]),
1789
- c[10] || (c[10] = t("span", { class: "ml-2" }, "Open Street Map", -1))
1788
+ e("span", zn, _(A.name || P), 1)
1790
1789
  ])
1791
- ])
1790
+ ]))), 256))
1792
1791
  ]),
1793
- t("div", To, [
1794
- t("label", Do, [
1795
- P(t("input", {
1792
+ e("div", Vn, [
1793
+ e("label", En, [
1794
+ R(e("input", {
1796
1795
  type: "checkbox",
1797
- "onUpdate:modelValue": c[5] || (c[5] = (f) => u.value = f),
1798
- onChange: x
1796
+ "onUpdate:modelValue": d[3] || (d[3] = (A) => k.value = A),
1797
+ onChange: p
1799
1798
  }, null, 544), [
1800
- [he, u.value]
1799
+ [be, k.value]
1801
1800
  ]),
1802
- c[11] || (c[11] = t("span", { class: "ml-2" }, " Геометрія/Межі ", -1))
1801
+ d[6] || (d[6] = e("span", { class: "ml-2" }, " Геометрія/Межі ", -1))
1803
1802
  ]),
1804
- i.tms ? (s(!0), a(I, { key: 0 }, H(d.value, (f) => (s(), a("label", Io, [
1805
- P(t("input", {
1803
+ s.tms ? (t(!0), a(T, { key: 0 }, j(m.value, (A) => (t(), a("label", Hn, [
1804
+ R(e("input", {
1806
1805
  type: "checkbox",
1807
- "onUpdate:modelValue": (g) => f.visible = g,
1808
- onChange: (g) => h(f.i)
1809
- }, null, 40, jo), [
1810
- [he, f.visible]
1806
+ "onUpdate:modelValue": (P) => A.visible = P,
1807
+ onChange: (P) => u(A.i)
1808
+ }, null, 40, Sn), [
1809
+ [be, A.visible]
1811
1810
  ]),
1812
- t("span", Vo, _(f.name), 1)
1813
- ]))), 256)) : k("", !0)
1811
+ e("span", Fn, _(A.name), 1)
1812
+ ]))), 256)) : $("", !0)
1814
1813
  ])
1815
- ])) : k("", !0)
1814
+ ])) : $("", !0)
1816
1815
  ]));
1817
1816
  }
1818
- }), Ao = { class: "flex justify-between items-center mb-[15px]" }, zo = { class: "font-semibold text-[16px]" }, Ho = { class: "overflow-x-auto" }, Eo = { 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" }, Fo = { class: "text-left font-medium text-gray-700" }, So = { class: "py-2 min-w-[200px]" }, Oo = {
1817
+ }), On = { class: "flex justify-between items-center mb-[15px]" }, Nn = { class: "font-semibold text-[16px]" }, Pn = { class: "overflow-x-auto" }, Bn = { 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" }, Wn = { class: "text-left font-medium text-gray-700" }, Rn = { class: "py-2 min-w-[200px]" }, Un = {
1819
1818
  key: 0,
1820
1819
  class: "py-2 min-w-[200px]"
1821
- }, Bo = { class: "divide-y divide-gray-200" }, No = { class: "bg-white odd:bg-gray-50" }, Po = { class: "py-2 pr-5" }, Uo = ["href"], Ro = { class: "py-2 pr-5 gap-2 inline-flex" }, Wo = ["onClick"], qo = ["onClick"], Go = /* @__PURE__ */ j({
1820
+ }, Gn = { class: "divide-y divide-gray-200" }, qn = { class: "bg-white odd:bg-gray-50" }, Kn = { class: "py-2 pr-5" }, Zn = ["href"], Jn = { class: "py-2 pr-5 gap-2 inline-flex" }, Xn = ["onClick"], Qn = ["onClick"], Yn = /* @__PURE__ */ V({
1822
1821
  __name: "TableWidget",
1823
1822
  props: {
1824
1823
  name: {},
@@ -1835,76 +1834,76 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1835
1834
  props: {},
1836
1835
  items: {}
1837
1836
  },
1838
- setup(r) {
1839
- const i = Ve(), o = $([]), e = $([]), n = r, b = $([]), l = $(""), v = $("");
1840
- async function u() {
1841
- const x = await fetch("/api/data/" + n.token).then((h) => h.json());
1842
- o.value = x.rows, e.value = x.columns, b.value = x.actions, l.value = x.form, v.value = x.addToken;
1837
+ setup(c) {
1838
+ const l = Le(), s = M([]), n = M([]), o = c, f = M([]), r = M(""), v = M("");
1839
+ async function g() {
1840
+ const i = await fetch("/api/data/" + o.token).then((p) => p.json());
1841
+ s.value = i.rows, n.value = i.columns, f.value = i.actions, r.value = i.form, v.value = i.addToken;
1843
1842
  }
1844
- const { $notify: p = console.log, $confirm: d, $form: y } = i?.appContext?.config?.globalProperties || {};
1845
- async function m(x) {
1846
- await y({ token: x.token }), u();
1843
+ const { $notify: k = console.log, $confirm: x, $form: m } = l?.appContext?.config?.globalProperties || {};
1844
+ async function b(i) {
1845
+ await m({ token: i.token }), g();
1847
1846
  }
1848
- function T() {
1849
- y({ token: v.value });
1847
+ function F() {
1848
+ m({ token: v.value });
1850
1849
  }
1851
- function O(x) {
1852
- d({
1850
+ function w(i) {
1851
+ x({
1853
1852
  title: "Підтвердіть дію",
1854
1853
  type: "error",
1855
1854
  message: "Ви впевненні що бажаєте видалити даний рядок?",
1856
1855
  onConfirm: async () => {
1857
- const h = await fetch(`/api/table/${x.token}`, { method: "DELETE" });
1858
- if (!h.ok) {
1859
- const { error: w, code: c } = await h.json();
1860
- p({ title: "Помилка", type: "warning", message: w });
1856
+ const p = await fetch(`/api/table/${i.token}`, { method: "DELETE" });
1857
+ if (!p.ok) {
1858
+ const { error: u, code: h } = await p.json();
1859
+ k({ title: "Помилка", type: "warning", message: u });
1861
1860
  return;
1862
1861
  }
1863
- p({ title: "Видаленно", message: "Успішно видалено" }), await u();
1862
+ k({ title: "Видаленно", message: "Успішно видалено" }), await g();
1864
1863
  }
1865
1864
  });
1866
1865
  }
1867
- ue(async () => {
1868
- await u();
1866
+ ee(async () => {
1867
+ await g();
1869
1868
  });
1870
- function B(x, h) {
1871
- return h.format?.toLowerCase() === "text" ? x[h.name] : x[h.name + "_data"] ?? x[h.name + "_text"] ?? "-";
1869
+ function C(i, p) {
1870
+ return p.format?.toLowerCase() === "text" ? i[p.name] : i[p.name + "_data"] ?? i[p.name + "_text"] ?? "-";
1872
1871
  }
1873
- return (x, h) => (s(), a("div", null, [
1874
- t("div", Ao, [
1875
- t("div", zo, _(x.title), 1),
1876
- b.value.includes("add") && v.value ? (s(), a("button", {
1872
+ return (i, p) => (t(), a("div", null, [
1873
+ e("div", On, [
1874
+ e("div", Nn, _(i.title), 1),
1875
+ f.value.includes("add") && v.value ? (t(), a("button", {
1877
1876
  key: 0,
1878
- onClick: T,
1877
+ onClick: F,
1879
1878
  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"
1880
- }, "Додати")) : k("", !0)
1879
+ }, "Додати")) : $("", !0)
1881
1880
  ]),
1882
- t("div", Ho, [
1883
- t("table", Eo, [
1884
- t("thead", Fo, [
1885
- t("tr", null, [
1886
- (s(!0), a(I, null, H(e.value, (w) => (s(), a("th", So, _(w.ua), 1))), 256)),
1887
- b.value.includes("edit") ? (s(), a("th", Oo, " Дії ")) : k("", !0)
1881
+ e("div", Pn, [
1882
+ e("table", Bn, [
1883
+ e("thead", Wn, [
1884
+ e("tr", null, [
1885
+ (t(!0), a(T, null, j(n.value, (u) => (t(), a("th", Rn, _(u.ua), 1))), 256)),
1886
+ f.value.includes("edit") ? (t(), a("th", Un, " Дії ")) : $("", !0)
1888
1887
  ])
1889
1888
  ]),
1890
- t("tbody", Bo, [
1891
- (s(!0), a(I, null, H(o.value, (w) => (s(), a("tr", No, [
1892
- (s(!0), a(I, null, H(e.value, (c) => (s(), a("td", Po, [
1893
- c.link ? (s(), a("a", {
1889
+ e("tbody", Gn, [
1890
+ (t(!0), a(T, null, j(s.value, (u) => (t(), a("tr", qn, [
1891
+ (t(!0), a(T, null, j(n.value, (h) => (t(), a("td", Kn, [
1892
+ h.link ? (t(), a("a", {
1894
1893
  key: 0,
1895
- href: c.link.replace("{{id}}", w.id),
1894
+ href: h.link.replace("{{id}}", u.id),
1896
1895
  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"
1897
- }, _(B(w, c)), 9, Uo)) : (s(), a(I, { key: 1 }, [
1898
- E(_(B(w, c)), 1)
1896
+ }, _(C(u, h)), 9, Zn)) : (t(), a(T, { key: 1 }, [
1897
+ O(_(C(u, h)), 1)
1899
1898
  ], 64))
1900
1899
  ]))), 256)),
1901
- t("td", Ro, [
1902
- w.token ? (s(), a("button", {
1900
+ e("td", Jn, [
1901
+ u.token ? (t(), a("button", {
1903
1902
  key: 0,
1904
- onClick: (c) => m(w),
1903
+ onClick: (h) => b(u),
1905
1904
  class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
1906
- }, h[0] || (h[0] = [
1907
- t("svg", {
1905
+ }, p[0] || (p[0] = [
1906
+ e("svg", {
1908
1907
  xmlns: "http://www.w3.org/2000/svg",
1909
1908
  width: "12px",
1910
1909
  height: "24",
@@ -1915,7 +1914,7 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1915
1914
  "stroke-linecap": "round",
1916
1915
  "stroke-linejoin": "round"
1917
1916
  }, [
1918
- t("path", {
1917
+ e("path", {
1919
1918
  d: "M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",
1920
1919
  fill: "none",
1921
1920
  stroke: "#000000",
@@ -1923,7 +1922,7 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1923
1922
  "stroke-linejoin": "round",
1924
1923
  "stroke-width": "2"
1925
1924
  }),
1926
- t("polygon", {
1925
+ e("polygon", {
1927
1926
  fill: "none",
1928
1927
  points: "12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8",
1929
1928
  stroke: "#000000",
@@ -1932,14 +1931,14 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1932
1931
  "stroke-width": "2"
1933
1932
  })
1934
1933
  ], -1)
1935
- ]), 8, Wo)) : k("", !0),
1936
- w.token ? (s(), a("button", {
1934
+ ]), 8, Xn)) : $("", !0),
1935
+ u.token ? (t(), a("button", {
1937
1936
  key: 1,
1938
- onClick: (c) => O(w),
1937
+ onClick: (h) => w(u),
1939
1938
  class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
1940
- }, h[1] || (h[1] = [
1941
- Ae('<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)
1942
- ]), 8, qo)) : k("", !0)
1939
+ }, p[1] || (p[1] = [
1940
+ Se('<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)
1941
+ ]), 8, Qn)) : $("", !0)
1943
1942
  ])
1944
1943
  ]))), 256))
1945
1944
  ])
@@ -1947,21 +1946,192 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1947
1946
  ])
1948
1947
  ]));
1949
1948
  }
1950
- }), Ie = {
1951
- "vs-widget-map": re,
1949
+ }), eo = { class: "p-[20px]" }, to = { class: "flex gap-[6px] mb-5" }, so = { class: "vs-form-text relative bg-white rounded-lg flex-grow" }, no = { class: "grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6" }, oo = { class: "mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200" }, ao = { class: "space-y-8" }, lo = { key: 0 }, io = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, ro = ["onClick"], co = { class: "md:col-span-2" }, uo = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, po = { class: "text-sm text-gray-500 dark:text-neutral-500" }, mo = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, go = ["checked", "onChange"], ho = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, fo = { class: "md:col-span-2" }, yo = { class: "font-semibold text-gray-800 dark:text-neutral-200" }, vo = ["onClick"], bo = { class: "md:col-span-2" }, xo = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, ko = { 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" }, wo = ["checked", "onChange"], pe = /* @__PURE__ */ V({
1950
+ __name: "GroupInterfaceWidget",
1951
+ props: {
1952
+ data: {},
1953
+ id: {}
1954
+ },
1955
+ setup(c) {
1956
+ const l = c, s = M(""), n = ["view", "add", "edit", "del"], o = M({});
1957
+ ee(async () => {
1958
+ const C = await (await fetch(
1959
+ `/api/access-group/${l.id}?tab=vs-group-interface`
1960
+ )).json();
1961
+ C.routes && C.routes.forEach((i) => {
1962
+ o.value[i.path] = new Set(i.actions);
1963
+ });
1964
+ });
1965
+ const f = (w, C) => o.value[w]?.has(C) ?? !1, r = (w, C) => {
1966
+ o.value[w] || (o.value[w] = /* @__PURE__ */ new Set()), o.value[w].has(C) ? o.value[w].delete(C) : o.value[w].add(C);
1967
+ }, v = (w, C) => {
1968
+ w.forEach((i) => {
1969
+ i.path && (o.value[i.path] || (o.value[i.path] = /* @__PURE__ */ new Set()), o.value[i.path].has(C) ? o.value[i.path].delete(C) : o.value[i.path].add(C));
1970
+ });
1971
+ }, g = N(
1972
+ () => Object.entries(o.value).map(([w, C]) => ({
1973
+ path: w,
1974
+ actions: Array.from(C)
1975
+ }))
1976
+ ), k = async () => {
1977
+ await fetch(
1978
+ `/api/access-group/${l.id}?tab=vs-group-interface`,
1979
+ {
1980
+ method: "POST",
1981
+ headers: { "Content-Type": "application/json" },
1982
+ body: JSON.stringify({ routes: g.value })
1983
+ }
1984
+ ), console.log("Saved", g.value);
1985
+ }, x = () => {
1986
+ o.value = {};
1987
+ }, m = (w) => {
1988
+ if (!s.value.trim()) return w;
1989
+ const C = s.value.toLowerCase();
1990
+ return w.filter(
1991
+ (i) => i.ua.toLowerCase().includes(C) || i.path && i.path.toLowerCase().includes(C)
1992
+ );
1993
+ }, b = N(
1994
+ () => m(l.data.routers.filter((w) => !w.menu))
1995
+ ), F = N(
1996
+ () => l.data.routers.filter((w) => w.menu).map((w) => ({
1997
+ ...w,
1998
+ menu: m(w.menu || [])
1999
+ })).filter((w) => w.menu && w.menu.length > 0)
2000
+ );
2001
+ return (w, C) => (t(), a("div", eo, [
2002
+ e("div", to, [
2003
+ e("div", so, [
2004
+ C[1] || (C[1] = e("i", { class: "absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti" }, null, -1)),
2005
+ R(e("input", {
2006
+ type: "text",
2007
+ placeholder: "Пошук",
2008
+ "onUpdate:modelValue": C[0] || (C[0] = (i) => s.value = i),
2009
+ 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"
2010
+ }, null, 512), [
2011
+ [he, s.value]
2012
+ ])
2013
+ ]),
2014
+ e("button", {
2015
+ onClick: x,
2016
+ 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"
2017
+ }, " Скинути всі "),
2018
+ e("button", {
2019
+ onClick: k,
2020
+ 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"
2021
+ }, " Зберегти ")
2022
+ ]),
2023
+ e("div", no, [
2024
+ C[2] || (C[2] = e("div", { class: "self-center col-span-2" }, [
2025
+ e("h2", { class: "font-semibold text-gray-800 dark:text-neutral-200" }, "Групи")
2026
+ ], -1)),
2027
+ (t(), a(T, null, j(n, (i, p) => e("div", {
2028
+ class: "col-span-1 text-center",
2029
+ key: p
2030
+ }, [
2031
+ e("h3", oo, _(i), 1)
2032
+ ])), 64))
2033
+ ]),
2034
+ e("div", ao, [
2035
+ b.value.length ? (t(), a("div", lo, [
2036
+ e("ul", io, [
2037
+ C[3] || (C[3] = e("li", { class: "md:col-span-2" }, [
2038
+ e("h3", { class: "font-semibold text-gray-800 dark:text-neutral-200" }, "Без категорії")
2039
+ ], -1)),
2040
+ (t(), a(T, null, j(n, (i, p) => e("li", {
2041
+ key: p,
2042
+ class: "md:block md:col-span-1 md:text-center"
2043
+ }, [
2044
+ e("button", {
2045
+ type: "button",
2046
+ class: "text-xs font-medium text-blue-600 decoration-2 hover:underline",
2047
+ onClick: (u) => v(b.value, n[p])
2048
+ }, " Toggle all ", 8, ro)
2049
+ ])), 64))
2050
+ ]),
2051
+ (t(!0), a(T, null, j(b.value, (i, p) => (t(), a("ul", {
2052
+ key: "uncat-" + p,
2053
+ class: "grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"
2054
+ }, [
2055
+ e("li", co, [
2056
+ e("p", uo, _(i.ua), 1),
2057
+ e("p", po, _(i.path), 1)
2058
+ ]),
2059
+ (t(), a(T, null, j(n, (u, h) => e("li", {
2060
+ key: h,
2061
+ class: "col-span-1"
2062
+ }, [
2063
+ e("div", mo, [
2064
+ e("input", {
2065
+ type: "checkbox",
2066
+ checked: f(i.path, u),
2067
+ onChange: (y) => r(i.path, u),
2068
+ class: "text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"
2069
+ }, null, 40, go)
2070
+ ])
2071
+ ])), 64))
2072
+ ]))), 128))
2073
+ ])) : $("", !0),
2074
+ (t(!0), a(T, null, j(F.value, (i, p) => (t(), a("div", {
2075
+ key: p,
2076
+ class: "space-y-5"
2077
+ }, [
2078
+ e("ul", ho, [
2079
+ e("li", fo, [
2080
+ e("h3", yo, _(i.ua), 1)
2081
+ ]),
2082
+ (t(), a(T, null, j(n, (u, h) => e("li", {
2083
+ key: h,
2084
+ class: "md:block md:col-span-1 md:text-center"
2085
+ }, [
2086
+ e("button", {
2087
+ type: "button",
2088
+ class: "text-xs font-medium text-blue-600 decoration-2 hover:underline",
2089
+ onClick: (y) => v(i.menu, n[h])
2090
+ }, " Toggle all ", 8, vo)
2091
+ ])), 64))
2092
+ ]),
2093
+ (t(!0), a(T, null, j(i.menu, (u, h) => (t(), a("ul", {
2094
+ key: h,
2095
+ class: "grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"
2096
+ }, [
2097
+ e("li", bo, [
2098
+ e("p", xo, _(u.ua), 1),
2099
+ e("p", ko, _(u.path), 1)
2100
+ ]),
2101
+ (t(), a(T, null, j(n, (y, d) => e("li", {
2102
+ key: d,
2103
+ class: "col-span-1"
2104
+ }, [
2105
+ e("div", _o, [
2106
+ e("input", {
2107
+ type: "checkbox",
2108
+ checked: f(u.path, y),
2109
+ onChange: (A) => r(u.path, y),
2110
+ class: "text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"
2111
+ }, null, 40, wo)
2112
+ ])
2113
+ ])), 64))
2114
+ ]))), 128))
2115
+ ]))), 128))
2116
+ ])
2117
+ ]));
2118
+ }
2119
+ }), Ve = {
2120
+ "vs-widget-map": ue,
1952
2121
  "vs-widget-comments": ie,
1953
- "vs-widget-history": le,
1954
- "vs-widget-gallery": ae,
1955
- "vs-widget-file": Te,
1956
- "vs-widget-list": De,
1957
- "vs-widget-table": Go
1958
- }, Ko = {
2122
+ "vs-widget-history": re,
2123
+ "vs-widget-gallery": ce,
2124
+ "vs-widget-file": de,
2125
+ "vs-widget-list": ze,
2126
+ "vs-widget-table": Yn,
2127
+ "vs-group-interface": pe
2128
+ }, $o = {
1959
2129
  key: 0,
1960
2130
  class: "mb-4 pb-2 border-b border-gray-200"
1961
- }, Zo = { class: "text-lg font-semibold text-gray-900" }, Jo = ["innerHTML"], Xo = {
2131
+ }, Co = { class: "text-lg font-semibold text-gray-900" }, Lo = ["innerHTML"], Mo = {
1962
2132
  key: 0,
1963
2133
  class: "mb-4 pb-2 border-b border-gray-200"
1964
- }, Qo = { class: "text-lg font-semibold text-gray-900" }, Yo = ["innerHTML"], je = /* @__PURE__ */ j({
2134
+ }, To = { class: "text-lg font-semibold text-gray-900" }, Do = ["innerHTML"], Ee = /* @__PURE__ */ V({
1965
2135
  __name: "CardItem",
1966
2136
  props: {
1967
2137
  items: {},
@@ -1978,61 +2148,69 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
1978
2148
  className: {},
1979
2149
  style: {}
1980
2150
  },
1981
- setup(r) {
1982
- const i = r, o = S(() => i.col ? {
1983
- [`lg:col-span-${i.col}`]: !0
2151
+ setup(c) {
2152
+ const l = c;
2153
+ console.log(l.data);
2154
+ const s = N(() => l.col ? {
2155
+ [`lg:col-span-${l.col}`]: !0
1984
2156
  } : {});
1985
- function e(l) {
1986
- return Ie[l] || l;
2157
+ function n(r) {
2158
+ return Ve[r] || r;
1987
2159
  }
1988
- const n = function(l = {}) {
1989
- return l.props && Object.entries(l.props).forEach(([v, u]) => {
1990
- l[v] = i.data[u];
1991
- }), l;
1992
- }, b = S(() => {
1993
- const l = {};
1994
- return l.col && (l.col = l.col), l;
2160
+ const o = function(r = {}) {
2161
+ return r.props && Object.entries(r.props).forEach(([v, g]) => {
2162
+ r[v] = l.data[g];
2163
+ }), r;
2164
+ }, f = N(() => {
2165
+ const r = {};
2166
+ return l.col && (r.col = l.col), r;
1995
2167
  });
1996
- return (l, v) => (s(), a("div", {
1997
- class: D(["w-full bg-gray-50 rounded-lg p-4 col-span-12", o.value])
2168
+ return (r, v) => (t(), a("div", {
2169
+ class: I(["w-full bg-gray-50 rounded-lg p-4 col-span-12", s.value])
1998
2170
  }, [
1999
- l.title ? (s(), a("div", Ko, [
2000
- t("h3", Zo, _(l.title), 1)
2001
- ])) : k("", !0),
2002
- l.html ? (s(), a("div", {
2171
+ r.title ? (t(), a("div", $o, [
2172
+ e("h3", Co, _(r.title), 1)
2173
+ ])) : $("", !0),
2174
+ r.html ? (t(), a("div", {
2003
2175
  key: 1,
2004
- innerHTML: l.html,
2005
- class: "text-gray-900 leading-relaxed [&>h1]:font-semibold [&>h1]:text-gray-900 [&>h1]:mb-2 [&>h2]:font-semibold [&>h2]:text-gray-900 [&>h2]:mb-2 [&>h3]:font-semibold [&>h3]:text-gray-900 [&>h3]:mb-2 [&>h4]:font-semibold [&>h4]:text-gray-900 [&>h4]:mb-2 [&>h5]:font-semibold [&>h5]:text-gray-900 [&>h5]:mb-2 [&>h6]:font-semibold [&>h6]:text-gray-900 [&>h6]:mb-2 [&>p]:mb-3 [&>ul]:mb-3 [&>ul]:pl-5 [&>ol]:mb-3 [&>ol]:pl-5 [&>li]:mb-1"
2006
- }, null, 8, Jo)) : l.type?.includes("tabs") ? (s(), z(de, {
2176
+ innerHTML: r.html,
2177
+ class: "text-gray-900 leading-relaxed"
2178
+ }, null, 8, Lo)) : r.type?.includes("tabs") ? (t(), H(me, {
2007
2179
  key: 2,
2008
- view: "tab",
2009
- panels: l.items,
2010
- data: l.data
2011
- }, null, 8, ["panels", "data"])) : (s(!0), a(I, { key: 3 }, H(l.items, (u) => (s(), a(I, null, [
2012
- u.title || u.label ? (s(), a("div", Xo, [
2013
- t("h3", Qo, _(u.title || u.label), 1)
2014
- ])) : k("", !0),
2015
- u.html ? (s(), a("div", {
2180
+ view: r.type,
2181
+ panels: r.items,
2182
+ data: r.data
2183
+ }, null, 8, ["view", "panels", "data"])) : (t(!0), a(T, { key: 3 }, j(r.items, (g) => (t(), a(T, null, [
2184
+ g.title || g.label ? (t(), a("div", Mo, [
2185
+ e("h3", To, _(g.title || g.label), 1)
2186
+ ])) : $("", !0),
2187
+ g.html ? (t(), a("div", {
2016
2188
  key: 1,
2017
- innerHTML: u.html,
2018
- class: "text-gray-900 leading-relaxed [&>h1]:font-semibold [&>h1]:text-gray-900 [&>h1]:mb-2 [&>h2]:font-semibold [&>h2]:text-gray-900 [&>h2]:mb-2 [&>h3]:font-semibold [&>h3]:text-gray-900 [&>h3]:mb-2 [&>h4]:font-semibold [&>h4]:text-gray-900 [&>h4]:mb-2 [&>h5]:font-semibold [&>h5]:text-gray-900 [&>h5]:mb-2 [&>h6]:font-semibold [&>h6]:text-gray-900 [&>h6]:mb-2 [&>p]:mb-3 [&>ul]:mb-3 [&>ul]:pl-5 [&>ol]:mb-3 [&>ol]:pl-5 [&>li]:mb-1"
2019
- }, null, 8, Yo)) : u.component ? (s(), z(N(e(u.component)), X({
2189
+ innerHTML: g.html,
2190
+ class: "text-gray-900 leading-relaxed"
2191
+ }, null, 8, Do)) : g.component ? (t(), H(B(n(g.component)), K({
2020
2192
  key: 2,
2021
2193
  ref_for: !0
2022
- }, { geom: l.data.geom, id: l.data.id, ...b.value, ...n(u), data: l.data }, { class: "w-full" }), null, 16)) : q(l.$slots, "default", { key: 3 })
2194
+ }, { geom: r.data.geom, id: r.data.id, ...f.value, ...o(g), data: r.data }, { class: "w-full" }), null, 16)) : W(r.$slots, "default", { key: 3 })
2023
2195
  ], 64))), 256))
2024
2196
  ], 2));
2025
2197
  }
2026
- }), en = { class: "md:flex gap-[20px]" }, tn = {
2198
+ }), jo = { class: "grid grid-cols-12 gap-[20px]" }, Io = {
2027
2199
  key: 0,
2028
2200
  class: "col-span-4"
2029
- }, sn = ["innerHTML"], on = {
2030
- key: 1,
2201
+ }, Ao = ["innerHTML"], zo = {
2202
+ key: 0,
2031
2203
  class: "overflow-hidden w-full"
2032
- }, nn = { class: "flex border-b border-gray-200 bg-gray-50" }, ln = ["onClick"], an = { class: "p-1" }, rn = ["innerHTML"], dn = {
2204
+ }, Vo = { class: "flex border-b border-gray-200 bg-gray-50 relative" }, Eo = ["onClick"], Ho = { class: "p-1" }, So = ["innerHTML"], Fo = {
2205
+ key: 1,
2206
+ class: "flex w-full"
2207
+ }, Oo = { class: "flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative" }, No = ["onClick"], Po = {
2208
+ key: 0,
2209
+ class: "absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"
2210
+ }, Bo = { class: "flex-1 p-4" }, Wo = ["innerHTML"], Ro = {
2033
2211
  key: 2,
2034
2212
  class: "p-1 w-full"
2035
- }, cn = { class: "grid grid-cols-12 gap-4" }, de = /* @__PURE__ */ j({
2213
+ }, Uo = { class: "grid grid-cols-12 gap-4" }, me = /* @__PURE__ */ V({
2036
2214
  __name: "Card",
2037
2215
  props: {
2038
2216
  panels: { default: () => [] },
@@ -2045,185 +2223,277 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
2045
2223
  className: {},
2046
2224
  style: {}
2047
2225
  },
2048
- setup(r) {
2049
- const i = r, o = $(0), e = $([]);
2050
- function n(d) {
2051
- return Ie[d] || d;
2226
+ setup(c) {
2227
+ const l = c, s = M(0), n = M([]);
2228
+ function o(i) {
2229
+ return Ve[i] || i;
2052
2230
  }
2053
- function b(d) {
2054
- return e.value = d.filter((y) => y.type === "pin"), d.filter((y) => y.type !== "pin");
2231
+ function f(i) {
2232
+ return i.forEach((p) => {
2233
+ p.type && (p.view = p.type);
2234
+ }), n.value = i.filter((p) => p.type === "pin"), i.filter((p) => p.type !== "pin");
2055
2235
  }
2056
- const l = S(() => i.panels && i.panels.length > 0 ? i.normalizeTabs ? b(i.panels) : i.panels : i.data && Array.isArray(i.data) ? i.data.filter((y) => y.type === "tabs")[0]?.items || [] : []), v = S(() => i.panels && i.panels.length > 0 ? i.normalizeTabs ? b(i.panels) : i.panels : i.data && Array.isArray(i.data) ? i.data : []), u = S(() => ({
2057
- [`view-${i.view}`]: !0
2058
- })), p = (d) => {
2059
- const y = { ...d };
2060
- return i.data && (y.data = i.data), y;
2061
- };
2062
- return (d, y) => (s(), a("div", {
2063
- class: D(d.classWrapper || u.value)
2236
+ const r = N(() => l.panels && l.panels.length > 0 ? l.normalizeTabs ? f(l.panels) : l.panels : l.data && Array.isArray(l.data) ? l.data.filter((p) => p.type.includes("tabs"))[0]?.items || [] : []), v = N(() => l.panels && l.panels.length > 0 ? l.normalizeTabs ? f(l.panels) : l.panels : l.data && Array.isArray(l.data) ? l.data : []), g = N(() => ({
2237
+ [`view-${l.view}`]: !0
2238
+ })), k = (i) => {
2239
+ const p = { ...i };
2240
+ return l.data && (p.data = l.data), p;
2241
+ }, x = M([]), m = M([]), b = M([]);
2242
+ function F(i, p) {
2243
+ i && i instanceof HTMLElement && (x.value[p] = i);
2244
+ }
2245
+ function w() {
2246
+ m.value = x.value.map((i) => i.offsetWidth), b.value = x.value.map((i) => i.offsetLeft);
2247
+ }
2248
+ let C = null;
2249
+ return ee(() => {
2250
+ xe(() => {
2251
+ w();
2252
+ }), C = new ResizeObserver(() => w()), C.observe(document.body);
2253
+ }), Fe(() => {
2254
+ C?.disconnect();
2255
+ }), Oe(s, () => {
2256
+ xe(() => {
2257
+ w();
2258
+ });
2259
+ }), (i, p) => (t(), a("div", {
2260
+ class: I(i.classWrapper || g.value)
2064
2261
  }, [
2065
- t("div", en, [
2066
- e.value.length !== 0 ? (s(), a("div", tn, [
2067
- (s(!0), a(I, null, H(e.value[0].items, (m, T) => (s(), a("div", {
2068
- key: m.name || T,
2069
- class: "w-full bg-gray-50 rounded-lg p-4 col-span-12 w-full m-1 mb-3"
2262
+ e("div", jo, [
2263
+ n.value.length !== 0 ? (t(), a("div", Io, [
2264
+ (t(!0), a(T, null, j(n.value[0].items, (u, h) => (t(), a("div", {
2265
+ key: u.name || h,
2266
+ class: "w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"
2070
2267
  }, [
2071
- m.html ? (s(), a("div", {
2268
+ u.html ? (t(), a("div", {
2072
2269
  key: 0,
2073
- innerHTML: m.html,
2270
+ innerHTML: u.html,
2074
2271
  class: "text-gray-900 leading-relaxed"
2075
- }, null, 8, sn)) : m.component ? (s(), z(N(n(m.component)), X({
2272
+ }, null, 8, Ao)) : u.component ? (t(), H(B(o(u.component)), K({
2076
2273
  key: 1,
2077
2274
  ref_for: !0
2078
- }, m.component === "Card" ? m : p(m), {
2079
- id: d.data.id,
2275
+ }, u.component === "Card" ? u : k(u), {
2276
+ id: i.data.id,
2080
2277
  class: "w-full h-full"
2081
- }), null, 16, ["id"])) : k("", !0)
2278
+ }), null, 16, ["id"])) : $("", !0)
2082
2279
  ]))), 128))
2083
- ])) : k("", !0),
2084
- d.view === "tab" ? (s(), a("div", on, [
2085
- t("div", nn, [
2086
- (s(!0), a(I, null, H(l.value, (m, T) => (s(), a("button", {
2087
- key: m.name || T,
2088
- onClick: (O) => o.value = T,
2089
- class: D([
2090
- "px-4 py-3 text-sm font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-100 transition-colors",
2091
- { "text-blue-600 bg-white border-b-2 border-blue-600": o.value === T }
2092
- ])
2093
- }, _(m.title || m.label || m.name || `Tab ${T + 1}`), 11, ln))), 128))
2094
- ]),
2095
- t("div", an, [
2096
- (s(!0), a(I, null, H(l.value, (m, T) => P((s(), a("div", {
2097
- key: m.name || T,
2098
- class: D([
2099
- d.classPanel || "w-full border-gray-100 py-2",
2100
- `col-span-${m.col || 12}`
2101
- ])
2102
- }, [
2103
- m.html ? (s(), a("div", {
2104
- key: 0,
2105
- innerHTML: m.html,
2106
- class: "text-gray-900 leading-relaxed"
2107
- }, null, 8, rn)) : d.$slots[`tab-${T}`] ? q(d.$slots, `tab-${T}`, {
2108
- key: 1,
2109
- item: m,
2110
- data: d.data
2111
- }) : m.component || m.name ? (s(), z(N(n(m.component || m.name)), X({
2112
- key: 2,
2113
- ref_for: !0
2114
- }, m.component === "Card" ? m : p(m), {
2115
- id: d.data.id,
2116
- class: "w-full h-full"
2117
- }), null, 16, ["id"])) : q(d.$slots, m.slot || `tab-${T}`, {
2118
- key: 3,
2119
- item: m,
2120
- data: d.data
2121
- })
2122
- ], 2)), [
2123
- [ze, o.value === T]
2124
- ])), 128))
2125
- ])
2126
- ])) : (s(), a("div", dn, [
2127
- t("div", cn, [
2128
- (s(!0), a(I, null, H(v.value, (m, T) => (s(), a(I, {
2129
- key: m.name || T
2130
- }, [
2131
- d.$slots[`panel-${T}`] ? q(d.$slots, `panel-${T}`, {
2280
+ ])) : $("", !0),
2281
+ e("div", {
2282
+ class: I(n.value.length !== 0 ? "col-span-8" : "col-span-12")
2283
+ }, [
2284
+ i.view === "tabs" ? (t(), a("div", zo, [
2285
+ e("div", Vo, [
2286
+ m.value.length ? (t(), a("div", {
2132
2287
  key: 0,
2133
- item: m,
2134
- data: d.data
2135
- }) : m.items || m.html ? (s(), z(N(je), X({
2136
- key: 1,
2137
- ref_for: !0
2138
- }, p(m), {
2139
- items: m.items,
2140
- class: "w-full h-full"
2141
- }), null, 16, ["items"])) : m.component ? (s(), z(N(n(m.component)), X({
2142
- key: 2,
2143
- ref_for: !0
2144
- }, p(m), { class: "w-full h-full" }), null, 16)) : q(d.$slots, m.slot || `panel-${T}`, {
2145
- key: 3,
2146
- item: m,
2147
- data: d.data
2148
- })
2149
- ], 64))), 128))
2150
- ])
2151
- ]))
2288
+ class: "absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",
2289
+ style: J({
2290
+ width: m.value[s.value] + "px",
2291
+ left: b.value[s.value] + "px"
2292
+ })
2293
+ }, null, 4)) : $("", !0),
2294
+ (t(!0), a(T, null, j(r.value, (u, h) => (t(), a("button", {
2295
+ key: u.name || h,
2296
+ ref_for: !0,
2297
+ ref: (y) => F(y, h),
2298
+ onClick: (y) => s.value = h,
2299
+ class: I([
2300
+ "relative px-4 py-3 text-sm font-medium transition-colors duration-300",
2301
+ s.value === h ? "text-blue-600" : "text-gray-600 hover:text-gray-800"
2302
+ ])
2303
+ }, _(u.title || u.label || u.name || `Tab ${h + 1}`), 11, Eo))), 128))
2304
+ ]),
2305
+ e("div", Ho, [
2306
+ (t(!0), a(T, null, j(r.value, (u, h) => R((t(), a("div", {
2307
+ key: u.name || h,
2308
+ class: I([
2309
+ "transition-all duration-300 ease-in-out",
2310
+ s.value === h ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-2",
2311
+ i.classPanel || "w-full border-gray-100 py-2"
2312
+ ])
2313
+ }, [
2314
+ u.html ? (t(), a("div", {
2315
+ key: 0,
2316
+ innerHTML: u.html,
2317
+ class: "text-gray-900 leading-relaxed"
2318
+ }, null, 8, So)) : i.$slots[`tab-${h}`] ? W(i.$slots, `tab-${h}`, {
2319
+ key: 1,
2320
+ item: u,
2321
+ data: i.data
2322
+ }) : u.component || u.name ? (t(), H(B(o(u.component || u.name)), K({
2323
+ key: 2,
2324
+ ref_for: !0
2325
+ }, u.component === "Card" ? u : k(u), {
2326
+ id: i.data.id,
2327
+ class: "w-full h-full"
2328
+ }), null, 16, ["id"])) : W(i.$slots, u.slot || `tab-${h}`, {
2329
+ key: 3,
2330
+ item: u,
2331
+ data: i.data
2332
+ })
2333
+ ], 2)), [
2334
+ [ke, s.value === h]
2335
+ ])), 128))
2336
+ ])
2337
+ ])) : i.view === "vertical-tabs" ? (t(), a("div", Fo, [
2338
+ e("div", Oo, [
2339
+ (t(!0), a(T, null, j(r.value, (u, h) => (t(), a("button", {
2340
+ key: u.name || h,
2341
+ onClick: (y) => s.value = h,
2342
+ class: I([
2343
+ "relative px-4 py-3 text-sm font-medium text-left transition-colors duration-300",
2344
+ s.value === h ? "text-blue-600 bg-white" : "text-gray-600 hover:text-gray-800 hover:bg-gray-100"
2345
+ ])
2346
+ }, [
2347
+ O(_(u.title || u.label || u.name || `Tab ${h + 1}`) + " ", 1),
2348
+ s.value === h ? (t(), a("span", Po, p[0] || (p[0] = [
2349
+ e("svg", {
2350
+ viewBox: "0 0 24 24",
2351
+ xmlns: "http://www.w3.org/2000/svg",
2352
+ width: "20",
2353
+ height: "20",
2354
+ fill: "currentColor",
2355
+ class: "remixicon text-blue-600 rounded-full bg-white shadow scale-90 opacity-100 transition ease-out"
2356
+ }, [
2357
+ 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" })
2358
+ ], -1)
2359
+ ]))) : $("", !0)
2360
+ ], 10, No))), 128))
2361
+ ]),
2362
+ e("div", Bo, [
2363
+ (t(!0), a(T, null, j(r.value, (u, h) => R((t(), a("div", {
2364
+ key: u.name || h,
2365
+ class: I([
2366
+ "transition-all duration-300 ease-in-out",
2367
+ s.value === h ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-2",
2368
+ i.classPanel || "w-full border-gray-100 py-2"
2369
+ ])
2370
+ }, [
2371
+ u.html ? (t(), a("div", {
2372
+ key: 0,
2373
+ innerHTML: u.html,
2374
+ class: "text-gray-900 leading-relaxed"
2375
+ }, null, 8, Wo)) : i.$slots[`tab-${h}`] ? W(i.$slots, `tab-${h}`, {
2376
+ key: 1,
2377
+ item: u,
2378
+ data: i.data
2379
+ }) : u.component || u.name ? (t(), H(B(o(u.component || u.name)), K({
2380
+ key: 2,
2381
+ ref_for: !0
2382
+ }, u.component === "Card" ? u : k(u), {
2383
+ id: i.data.id,
2384
+ class: "w-full h-full"
2385
+ }), null, 16, ["id"])) : W(i.$slots, u.slot || `tab-${h}`, {
2386
+ key: 3,
2387
+ item: u,
2388
+ data: i.data
2389
+ })
2390
+ ], 2)), [
2391
+ [ke, s.value === h]
2392
+ ])), 128))
2393
+ ])
2394
+ ])) : (t(), a("div", Ro, [
2395
+ e("div", Uo, [
2396
+ (t(!0), a(T, null, j(v.value, (u, h) => (t(), a(T, {
2397
+ key: u.name || h
2398
+ }, [
2399
+ i.$slots[`panel-${h}`] ? W(i.$slots, `panel-${h}`, {
2400
+ key: 0,
2401
+ item: u,
2402
+ data: i.data
2403
+ }) : u.items || u.html ? (t(), H(B(Ee), K({
2404
+ key: 1,
2405
+ ref_for: !0
2406
+ }, k(u), {
2407
+ items: u.items,
2408
+ class: "w-full h-full"
2409
+ }), null, 16, ["items"])) : u.component ? (t(), H(B(o(u.component)), K({
2410
+ key: 2,
2411
+ ref_for: !0
2412
+ }, k(u), { class: "w-full h-full" }), null, 16)) : W(i.$slots, u.slot || `panel-${h}`, {
2413
+ key: 3,
2414
+ item: u,
2415
+ data: i.data
2416
+ })
2417
+ ], 64))), 128))
2418
+ ])
2419
+ ]))
2420
+ ], 2)
2152
2421
  ])
2153
2422
  ], 2));
2154
2423
  }
2155
- }), un = ["onClick"], pn = /* @__PURE__ */ j({
2424
+ }), Go = ["onClick"], qo = /* @__PURE__ */ V({
2156
2425
  __name: "CopyNotification",
2157
- setup(r, { expose: i }) {
2158
- const o = $([]);
2159
- let e = 1;
2160
- const n = () => {
2161
- if (o.value.length >= 10) {
2162
- const v = o.value[0];
2163
- clearTimeout(v.timer), o.value.shift();
2426
+ setup(c, { expose: l }) {
2427
+ const s = M([]);
2428
+ let n = 1;
2429
+ const o = () => {
2430
+ if (s.value.length >= 10) {
2431
+ const v = s.value[0];
2432
+ clearTimeout(v.timer), s.value.shift();
2164
2433
  }
2165
- const l = {
2166
- id: e++,
2434
+ const r = {
2435
+ id: n++,
2167
2436
  timer: setTimeout(() => {
2168
- b(l.id);
2437
+ f(r.id);
2169
2438
  }, 1500)
2170
2439
  };
2171
- o.value.push(l);
2172
- }, b = (l) => {
2173
- const v = o.value.findIndex((u) => u.id === l);
2440
+ s.value.push(r);
2441
+ }, f = (r) => {
2442
+ const v = s.value.findIndex((g) => g.id === r);
2174
2443
  if (v !== -1) {
2175
- const u = o.value[v];
2176
- clearTimeout(u.timer), o.value.splice(v, 1);
2444
+ const g = s.value[v];
2445
+ clearTimeout(g.timer), s.value.splice(v, 1);
2177
2446
  }
2178
2447
  };
2179
- return i({
2180
- addNotification: n
2181
- }), ke(() => {
2182
- o.value.forEach((l) => {
2183
- clearTimeout(l.timer);
2448
+ return l({
2449
+ addNotification: o
2450
+ }), Ce(() => {
2451
+ s.value.forEach((r) => {
2452
+ clearTimeout(r.timer);
2184
2453
  });
2185
- }), (l, v) => (s(), z(He, { to: "body" }, [
2186
- M(Ee, {
2454
+ }), (r, v) => (t(), H(Ne, { to: "body" }, [
2455
+ z(Pe, {
2187
2456
  name: "notification",
2188
2457
  tag: "div",
2189
2458
  class: "fixed top-4 right-4 z-50 space-y-2"
2190
2459
  }, {
2191
- default: Fe(() => [
2192
- (s(!0), a(I, null, H(o.value, (u) => (s(), a("div", {
2193
- key: u.id,
2460
+ default: Be(() => [
2461
+ (t(!0), a(T, null, j(s.value, (g) => (t(), a("div", {
2462
+ key: g.id,
2194
2463
  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"
2195
2464
  }, [
2196
- M(C(Re), { class: "h-5 w-5 text-green-100 flex-shrink-0" }),
2197
- v[0] || (v[0] = t("div", { class: "flex-1" }, [
2198
- t("p", { class: "font-medium text-sm" }, "Ссылка скопирована!"),
2199
- t("p", { class: "text-xs text-green-100 opacity-90" }, "Файл добавлен в буфер обмена")
2465
+ z(D(Ze), { class: "h-5 w-5 text-green-100 flex-shrink-0" }),
2466
+ v[0] || (v[0] = e("div", { class: "flex-1" }, [
2467
+ e("p", { class: "font-medium text-sm" }, "Ссылка скопирована!"),
2468
+ e("p", { class: "text-xs text-green-100 opacity-90" }, "Файл добавлен в буфер обмена")
2200
2469
  ], -1)),
2201
- t("button", {
2202
- onClick: (p) => b(u.id),
2470
+ e("button", {
2471
+ onClick: (k) => f(g.id),
2203
2472
  class: "text-green-100 hover:text-white transition-colors flex-shrink-0"
2204
2473
  }, [
2205
- M(C(ge), { class: "h-4 w-4" })
2206
- ], 8, un)
2474
+ z(D(ve), { class: "h-4 w-4" })
2475
+ ], 8, Go)
2207
2476
  ]))), 128))
2208
2477
  ]),
2209
2478
  _: 1
2210
2479
  })
2211
2480
  ]));
2212
2481
  }
2213
- }), mn = /* @__PURE__ */ W(pn, [["__scopeId", "data-v-55903525"]]);
2214
- de.install = function(r) {
2215
- r.component("vs-widget-file", be), r.component("vs-widget-comments", ie), r.component("vs-widget-history", le), r.component("vs-widget-gallery", ae), r.component("vs-widget-map", re), r.component("CommentsWidget", ie), r.component("HistoryWidget", le), r.component("GalleryWidget", ae), r.component("FilesWidget", be), r.component("MapWidget", re), r.component("Card", de), r.component("CardItem", je), r.component("DescriptionListWidget", De), r.component("CopyNotification", mn);
2482
+ }), Ko = /* @__PURE__ */ G(qo, [["__scopeId", "data-v-55903525"]]);
2483
+ me.install = function(c) {
2484
+ c.component("vs-widget-file", de), c.component("vs-widget-comments", ie), c.component("vs-widget-history", re), c.component("vs-widget-gallery", ce), c.component("vs-widget-map", ue), c.component("vs-group-interface", pe), c.component("CommentsWidget", ie), c.component("HistoryWidget", re), c.component("GalleryWidget", ce), c.component("FilesWidget", de), c.component("MapWidget", ue), c.component("Card", me), c.component("CardItem", Ee), c.component("DescriptionListWidget", ze), c.component("CopyNotification", Ko), c.component("GroupInterfaceWidget", pe);
2216
2485
  };
2217
2486
  export {
2218
- de as Card,
2219
- je as CardItem,
2487
+ me as Card,
2488
+ Ee as CardItem,
2220
2489
  ie as CommentsWidget,
2221
- mn as CopyNotification,
2222
- De as DescriptionListWidget,
2223
- be as FilesWidget,
2224
- ae as GalleryWidget,
2225
- le as HistoryWidget,
2226
- re as MapWidget,
2227
- Go as TableWidget,
2228
- de as default
2490
+ Ko as CopyNotification,
2491
+ ze as DescriptionListWidget,
2492
+ de as FilesWidget,
2493
+ ce as GalleryWidget,
2494
+ pe as GroupInterfaceWidget,
2495
+ re as HistoryWidget,
2496
+ ue as MapWidget,
2497
+ Yn as TableWidget,
2498
+ me as default
2229
2499
  };