@opengis/widgets 0.0.29 → 0.0.31

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/README.md CHANGED
@@ -1,91 +1,91 @@
1
- # OpenGIS Widgets Library
2
-
3
- Library of independent widgets for OpenGIS systems with a universal Card wrapper. All widgets can be used separately or as part of a single interface through the Card component.
4
-
5
- ## Features
6
-
7
- ### Card Widget - Universal wrapper
8
-
9
- - **Two display modes**: Tab (tabs) and Plain (panels)
10
- - **Flexible size control** through `col` and `width` parameters
11
- - **Support for HTML content**, dynamic components and slots
12
- - **Adaptive grid** with support for 12-column system
13
-
14
- ### Available widgets
15
-
16
- - **CommentsWidget** - system comments with replies and likes
17
- - **HistoryWidget** - display of changes history
18
- - **FilesWidget** - file management with upload
19
- - **GalleryWidget** - gallery with adaptive grid
20
- - **DescriptionListWidget** - description lists with different data types
21
-
22
- ## Documentation
23
-
24
- Check out the documentation and live demo here: [Live Demo & Docs](https://widget.opengis.info)
25
-
26
-
27
- ## Install & Usage
28
-
29
- ### Install
30
-
31
- ```bash
32
- npm install @opengis/widgets
33
- ```
34
-
35
- ### Register the components
36
-
37
- ```ts
38
- import { createApp } from 'vue'
39
- import App from './App.vue'
40
- import { DescriptionList, DescriptionItem } from '@opengis/widgets'
41
-
42
- createApp(App).component('DescriptionList', DescriptionList).mount('#app')
43
- createApp(App).component('DescriptionItem', DescriptionItem).mount('#app')
44
- ```
45
-
46
- ### Usage
47
-
48
- ```vue
49
- <template>
50
- <Card :data="tabsData" view="tab">
51
- <template #tab-0>
52
- <CommentsWidget :comments="comments" @add-comment="handleAddComment" />
53
- </template>
54
- <template #tab-1>
55
- <HistoryWidget :items="historyItems" />
56
- </template>
57
- </Card>
58
- </template>
59
-
60
- <script setup>
61
- import { Card, CommentsWidget, HistoryWidget, FilesWidget, GalleryWidget } from '@opengis/widgets'
62
-
63
- const tabsData = [
64
- {
65
- "type": "tabs",
66
- "col": 12,
67
- "items": [
68
- { "name": "comments", "title": "Comments" },
69
- { "name": "history", "title": "History" }
70
- ]
71
- }
72
- ]
73
-
74
- const panelsData = [
75
- { name: "files", title: "Files", col: 6, width: 6 },
76
- { name: "gallery", title: "Gallery", col: 6, width: 6 }
77
- ]
78
- </script>
79
- ```
80
-
81
- ## Contributions
82
-
83
- 1. Fork project
84
- 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
85
- 3. Commit changes (`git commit -m 'Add amazing feature'`)
86
- 4. Push to branch (`git push origin feature/amazing-feature`)
87
- 5. Open Pull Request
88
-
89
- ## License
90
-
91
- This project is licensed under MIT License.
1
+ # OpenGIS Widgets Library
2
+
3
+ Library of independent widgets for OpenGIS systems with a universal Card wrapper. All widgets can be used separately or as part of a single interface through the Card component.
4
+
5
+ ## Features
6
+
7
+ ### Card Widget - Universal wrapper
8
+
9
+ - **Two display modes**: Tab (tabs) and Plain (panels)
10
+ - **Flexible size control** through `col` and `width` parameters
11
+ - **Support for HTML content**, dynamic components and slots
12
+ - **Adaptive grid** with support for 12-column system
13
+
14
+ ### Available widgets
15
+
16
+ - **CommentsWidget** - system comments with replies and likes
17
+ - **HistoryWidget** - display of changes history
18
+ - **FilesWidget** - file management with upload
19
+ - **GalleryWidget** - gallery with adaptive grid
20
+ - **DescriptionListWidget** - description lists with different data types
21
+
22
+ ## Documentation
23
+
24
+ Check out the documentation and live demo here: [Live Demo & Docs](https://widget.opengis.info)
25
+
26
+
27
+ ## Install & Usage
28
+
29
+ ### Install
30
+
31
+ ```bash
32
+ npm install @opengis/widgets
33
+ ```
34
+
35
+ ### Register the components
36
+
37
+ ```ts
38
+ import { createApp } from 'vue'
39
+ import App from './App.vue'
40
+ import { DescriptionList, DescriptionItem } from '@opengis/widgets'
41
+
42
+ createApp(App).component('DescriptionList', DescriptionList).mount('#app')
43
+ createApp(App).component('DescriptionItem', DescriptionItem).mount('#app')
44
+ ```
45
+
46
+ ### Usage
47
+
48
+ ```vue
49
+ <template>
50
+ <Card :data="tabsData" view="tab">
51
+ <template #tab-0>
52
+ <CommentsWidget :comments="comments" @add-comment="handleAddComment" />
53
+ </template>
54
+ <template #tab-1>
55
+ <HistoryWidget :items="historyItems" />
56
+ </template>
57
+ </Card>
58
+ </template>
59
+
60
+ <script setup>
61
+ import { Card, CommentsWidget, HistoryWidget, FilesWidget, GalleryWidget } from '@opengis/widgets'
62
+
63
+ const tabsData = [
64
+ {
65
+ "type": "tabs",
66
+ "col": 12,
67
+ "items": [
68
+ { "name": "comments", "title": "Comments" },
69
+ { "name": "history", "title": "History" }
70
+ ]
71
+ }
72
+ ]
73
+
74
+ const panelsData = [
75
+ { name: "files", title: "Files", col: 6, width: 6 },
76
+ { name: "gallery", title: "Gallery", col: 6, width: 6 }
77
+ ]
78
+ </script>
79
+ ```
80
+
81
+ ## Contributions
82
+
83
+ 1. Fork project
84
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
85
+ 3. Commit changes (`git commit -m 'Add amazing feature'`)
86
+ 4. Push to branch (`git push origin feature/amazing-feature`)
87
+ 5. Open Pull Request
88
+
89
+ ## License
90
+
91
+ This project is licensed under MIT License.
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .image-wrapper{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr 1fr 1fr;grid-column-gap:5px;grid-row-gap:3px;height:100%}.image0{height:100%;width:100%;grid-row-start:1;grid-column-start:1;grid-row-end:3;grid-column-end:3}.image1{grid-row-start:1;grid-column-start:3;grid-row-end:2;grid-column-end:4}.image2{grid-row-start:1;grid-column-start:4;grid-row-end:2;grid-column-end:5}.image3{grid-row-start:2;grid-column-start:3;grid-row-end:3;grid-column-end:4}.image4{grid-row-start:2;grid-column-start:4;grid-row-end:3;grid-column-end:5}.thumb-cover{position:absolute;inset:0;z-index:5;background-color:#00000080;color:#fff;display:flex;align-items:center;justify-content:center;font-size:36px}.text-value[data-v-34a76c89]{word-break:break-word}.link-value[data-v-932f028c]{word-break:break-all}.date-value[data-v-cd4df08e],.status-value[data-v-aea1f529],.custom-value[data-v-12c8b3f3]{word-break:break-word}.description-list-widget[data-v-106790ef]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.notification-enter-active[data-v-d1ac6329],.notification-leave-active[data-v-d1ac6329]{transition:all .3s ease}.notification-enter-from[data-v-d1ac6329],.notification-leave-to[data-v-d1ac6329]{opacity:0;transform:translate(100%)}.notification-move[data-v-d1ac6329]{transition:transform .3s ease}
1
+ .image-wrapper{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr 1fr 1fr;grid-column-gap:5px;grid-row-gap:3px;height:100%}.image0{height:100%;width:100%;grid-row-start:1;grid-column-start:1;grid-row-end:3;grid-column-end:3}.image1{grid-row-start:1;grid-column-start:3;grid-row-end:2;grid-column-end:4}.image2{grid-row-start:1;grid-column-start:4;grid-row-end:2;grid-column-end:5}.image3{grid-row-start:2;grid-column-start:3;grid-row-end:3;grid-column-end:4}.image4{grid-row-start:2;grid-column-start:4;grid-row-end:3;grid-column-end:5}.thumb-cover{position:absolute;inset:0;z-index:5;background-color:#00000080;color:#fff;display:flex;align-items:center;justify-content:center;font-size:36px}.text-value[data-v-c14550b7]{word-break:break-word}.link-value[data-v-e6eb07a6]{word-break:break-all}.date-value[data-v-b9600618],.status-value[data-v-c72e0b01],.custom-value[data-v-11a73810]{word-break:break-word}.description-list-widget[data-v-36d43e50]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.notification-enter-active[data-v-55903525],.notification-leave-active[data-v-55903525]{transition:all .3s ease}.notification-enter-from[data-v-55903525],.notification-leave-to[data-v-55903525]{opacity:0;transform:translate(100%)}.notification-move[data-v-55903525]{transition:transform .3s ease}
package/dist/index.js CHANGED
@@ -712,7 +712,7 @@ const Js = de("x", [
712
712
  se(J(Gs), { class: "h-3 w-3 text-gray-500" })
713
713
  ]),
714
714
  u("span", nr, F(o?.userName), 1),
715
- u("span", ir, F(o?.timestamp.toLocaleTimeString("ua-UA", { hour: "2-digit", minute: "2-digit" })), 1)
715
+ u("span", ir, F(o?.timestamp.toLocaleDateString("ua-UA", { day: "2-digit", month: "2-digit", year: "numeric" })) + " " + F(o?.timestamp.toLocaleTimeString("ua-UA", { hour: "2-digit", minute: "2-digit" })), 1)
716
716
  ]),
717
717
  u("div", or, [
718
718
  u("div", rr, [
@@ -1261,7 +1261,7 @@ const gr = { class: "space-y-0.5" }, yr = ["onClick"], vr = ["onClick"], br = {
1261
1261
  for (const [n, i] of t)
1262
1262
  s[n] = i;
1263
1263
  return s;
1264
- }, sa = /* @__PURE__ */ pt(ta, [["__scopeId", "data-v-34a76c89"]]), na = { class: "link-value" }, ia = ["href"], oa = /* @__PURE__ */ ae({
1264
+ }, sa = /* @__PURE__ */ pt(ta, [["__scopeId", "data-v-c14550b7"]]), na = { class: "link-value" }, ia = ["href"], oa = /* @__PURE__ */ ae({
1265
1265
  __name: "LinkValue",
1266
1266
  props: {
1267
1267
  item: {}
@@ -1288,7 +1288,7 @@ const gr = { class: "space-y-0.5" }, yr = ["onClick"], vr = ["onClick"], br = {
1288
1288
  ], 8, ia)
1289
1289
  ]));
1290
1290
  }
1291
- }), ra = /* @__PURE__ */ pt(oa, [["__scopeId", "data-v-932f028c"]]), aa = { class: "date-value" }, la = { class: "text-sm text-gray-900" }, ca = /* @__PURE__ */ ae({
1291
+ }), ra = /* @__PURE__ */ pt(oa, [["__scopeId", "data-v-e6eb07a6"]]), aa = { class: "date-value" }, la = { class: "text-sm text-gray-900" }, ca = /* @__PURE__ */ ae({
1292
1292
  __name: "DateValue",
1293
1293
  props: {
1294
1294
  item: {}
@@ -1321,7 +1321,7 @@ const gr = { class: "space-y-0.5" }, yr = ["onClick"], vr = ["onClick"], br = {
1321
1321
  u("span", la, F(s.value), 1)
1322
1322
  ]));
1323
1323
  }
1324
- }), ua = /* @__PURE__ */ pt(ca, [["__scopeId", "data-v-cd4df08e"]]), da = { class: "status-value" }, pa = {
1324
+ }), ua = /* @__PURE__ */ pt(ca, [["__scopeId", "data-v-b9600618"]]), da = { class: "status-value" }, pa = {
1325
1325
  key: 0,
1326
1326
  class: "mr-1"
1327
1327
  }, fa = /* @__PURE__ */ ae({
@@ -1390,7 +1390,7 @@ const gr = { class: "space-y-0.5" }, yr = ["onClick"], vr = ["onClick"], br = {
1390
1390
  ], 2)
1391
1391
  ]));
1392
1392
  }
1393
- }), ha = /* @__PURE__ */ pt(fa, [["__scopeId", "data-v-aea1f529"]]), ma = { class: "custom-value" }, ga = { class: "text-sm text-gray-900" }, ya = /* @__PURE__ */ ae({
1393
+ }), ha = /* @__PURE__ */ pt(fa, [["__scopeId", "data-v-c72e0b01"]]), ma = { class: "custom-value" }, ga = { class: "text-sm text-gray-900" }, ya = /* @__PURE__ */ ae({
1394
1394
  __name: "CustomValue",
1395
1395
  props: {
1396
1396
  item: {}
@@ -1405,7 +1405,7 @@ const gr = { class: "space-y-0.5" }, yr = ["onClick"], vr = ["onClick"], br = {
1405
1405
  ], !0)
1406
1406
  ]));
1407
1407
  }
1408
- }), va = /* @__PURE__ */ pt(ya, [["__scopeId", "data-v-12c8b3f3"]]), ba = ["id"], xa = {
1408
+ }), va = /* @__PURE__ */ pt(ya, [["__scopeId", "data-v-11a73810"]]), ba = ["id"], xa = {
1409
1409
  key: 0,
1410
1410
  class: "text-xl font-semibold text-gray-900 mb-4"
1411
1411
  }, ka = {
@@ -1536,7 +1536,7 @@ const gr = { class: "space-y-0.5" }, yr = ["onClick"], vr = ["onClick"], br = {
1536
1536
  ]))
1537
1537
  ], 14, ba));
1538
1538
  }
1539
- }), ii = /* @__PURE__ */ pt(za, [["__scopeId", "data-v-106790ef"]]), Ha = {
1539
+ }), ii = /* @__PURE__ */ pt(za, [["__scopeId", "data-v-36d43e50"]]), Ha = {
1540
1540
  draw: {
1541
1541
  toolbar: {
1542
1542
  actions: {
@@ -7592,7 +7592,7 @@ const zd = { class: "text-lg font-semibold text-gray-900" }, Hd = ["innerHTML"],
7592
7592
  })
7593
7593
  ]));
7594
7594
  }
7595
- }), cp = /* @__PURE__ */ pt(lp, [["__scopeId", "data-v-d1ac6329"]]);
7595
+ }), cp = /* @__PURE__ */ pt(lp, [["__scopeId", "data-v-55903525"]]);
7596
7596
  Us.install = function(e) {
7597
7597
  e.component("vs-widget-file", Ts), e.component("vs-widget-comments", Cs), e.component("vs-widget-history", $s), e.component("vs-widget-gallery", Os), e.component("vs-widget-map", Is), e.component("vs-group-interface", Hs), e.component("CommentsWidget", Cs), e.component("HistoryWidget", $s), e.component("GalleryWidget", Os), e.component("FilesWidget", Ts), e.component("MapWidget", Is), e.component("Card", Us), e.component("CardItem", Jt), e.component("DescriptionListWidget", ii), e.component("CopyNotification", cp), e.component("GroupInterfaceWidget", Hs);
7598
7598
  };
@@ -1,4 +1,4 @@
1
- (function(ee,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/core")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core"],e):(ee=typeof globalThis<"u"?globalThis:ee||self,e(ee.WidgetLib={},ee.Vue,ee.OpenGISCore))})(this,(function(ee,e,bo){"use strict";function ko(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(n,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return n.default=t,Object.freeze(n)}const Eo=ko(e);/**
1
+ (function(ee,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/core")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core"],e):(ee=typeof globalThis<"u"?globalThis:ee||self,e(ee.WidgetLib={},ee.Vue,ee.OpenGISCore))})(this,function(ee,e,bo){"use strict";function ko(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(n,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return n.default=t,Object.freeze(n)}const Eo=ko(e);/**
2
2
  * @license lucide-vue-next v0.535.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -128,7 +128,7 @@
128
128
  *
129
129
  * This source code is licensed under the ISC license.
130
130
  * See the LICENSE file in the root directory of this source tree.
131
- */const Zt=X("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),zo={class:"border-t pt-3 mt-4"},jo={class:"flex gap-2"},Ho={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Uo={class:"flex-1 space-y-2"},qo={class:"flex justify-between items-center"},Wo={class:"flex gap-2"},Ko=["disabled"],Qn=e.defineComponent({__name:"CommentInputZone",props:{isReply:{type:Boolean,required:!1,default:!1},isReplyModifiers:{}},emits:e.mergeModels(["sendComment"],["update:isReply"]),setup(t,{emit:n}){const s=e.useModel(t,"isReply"),o=e.ref(""),r=n,l=()=>{o.value.trim()&&(r("sendComment",o.value),o.value="")},i=a=>{(a.ctrlKey||a.metaKey)&&a.key==="Enter"&&(a.preventDefault(),l())};return(a,c)=>(e.openBlock(),e.createElementBlock("div",zo,[e.createElementVNode("div",jo,[e.createElementVNode("span",Ho,[e.createVNode(e.unref(Jt),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Uo,[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[0]||(c[0]=d=>o.value=d),onKeydown:i,placeholder:"Add a comment...",class:"w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"},null,544),[[e.vModelText,o.value]]),e.createElementVNode("div",qo,[c[4]||(c[4]=e.createElementVNode("span",{class:"text-xs text-gray-500 hidden sm:inline"},"Cmd+Enter to send",-1)),e.createElementVNode("div",Wo,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:c[1]||(c[1]=d=>s.value=!1)},[e.createVNode(e.unref(Zt),{class:"h-3 w-3"}),c[2]||(c[2]=e.createTextVNode(" Cancel ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!o.value.trim(),onClick:l},[e.createVNode(e.unref(Xn),{class:"h-3 w-3 mr-1"}),c[3]||(c[3]=e.createTextVNode(" Send ",-1))],8,Ko)])])])])]))}}),Go={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"},Jo=e.defineComponent({__name:"CommentDetails",props:{showMoreOptions:{type:Boolean,required:!0,default:!1},showMoreOptionsModifiers:{}},emits:e.mergeModels(["edit","delete"],["update:showMoreOptions"]),setup(t,{emit:n}){const s=n,o=e.useModel(t,"showMoreOptions"),r=e.ref(),l=e.ref(!0),i=async d=>{o.value&&r.value&&!r.value.contains(d.target)&&!l.value&&(o.value=!1),l.value=!1},a=()=>{o.value=!1,s("edit")},c=()=>{o.value=!1,s("delete")};return e.onMounted(()=>{document.addEventListener("click",i)}),e.onUnmounted(()=>{document.removeEventListener("click",i)}),(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:"absolute bg-white left-0 top-full transform min-w-max z-50",ref_key:"moreOptionsRef",ref:r},[e.createElementVNode("div",Go,[e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs hover:bg-gray-100 transition-colors duration-300",onClick:a},[e.createVNode(e.unref(Ro),{class:"h-3 w-3 mr-2"}),f[0]||(f[0]=e.createTextVNode(" Edit ",-1))]),e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs text-red-600 hover:bg-gray-100 transition-colors duration-300",onClick:c},[e.createVNode(e.unref(Gt),{class:"h-3 w-3 mr-2"}),f[1]||(f[1]=e.createTextVNode(" Delete ",-1))])])],512))}}),Zo={class:"space-y-2"},Yo={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Xo={class:"flex-1 min-w-0 space-y-1 relative"},Qo={class:"flex items-center gap-2"},Vo={class:"font-medium text-xs"},er={class:"text-xs text-gray-500"},tr={key:0,class:"text-xs text-gray-700 leading-relaxed"},nr={class:"flex justify-between text-xs"},sr={class:"flex items-center gap-2"},or={key:0,class:"flex gap-2"},rr=["disabled"],ir={key:0,class:"ml-8 space-y-1 border-l-2 border-gray-100 pl-3"},lr=e.defineComponent({__name:"CommentItem",props:{comment:{},isInside:{type:Boolean}},emits:["like","reply","edit","delete"],setup(t,{emit:n}){const s=n,o=t,r=e.ref(o.comment.text),l=e.ref("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"),i=e.ref("w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"),a=e.ref(!1),c=e.ref(!1),d=e.ref(!1),f=e.ref(!1),p=N=>{const C=new Date,A=Math.floor((C.getTime()-N.getTime())/(1e3*60*60));return A<1?`${Math.floor((C.getTime()-N.getTime())/6e4)}m`:A<24?`${A}h`:`${Math.floor(A/24)}d`},m=()=>{f.value=!f.value,f.value?s("like",o.comment.id,"add"):s("like",o.comment.id,"delete")},E=()=>{s("edit",o.comment.id,r.value),d.value=!1},w=(N,C)=>{s("like",N,C)},_=(N,C)=>{s("edit",N,C)};return(N,C)=>{const A=e.resolveComponent("CommentItem",!0);return e.openBlock(),e.createElementBlock("div",Zo,[e.createElementVNode("div",{class:e.normalizeClass(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative",d.value?"bg-gray-50":""])},[e.createElementVNode("span",Yo,[e.createVNode(e.unref(Jt),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Xo,[e.createElementVNode("div",Qo,[e.createElementVNode("span",Vo,e.toDisplayString(N.comment?.author),1),e.createElementVNode("span",er,e.toDisplayString(p(N.comment?.createdAt)),1)]),d.value?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:1,"onUpdate:modelValue":C[0]||(C[0]=B=>r.value=B),class:e.normalizeClass(d.value?i.value:l.value)},null,2)),[[e.vModelText,r.value]]):(e.openBlock(),e.createElementBlock("p",tr,e.toDisplayString(N.comment?.text),1)),e.createElementVNode("div",nr,[e.createElementVNode("div",sr,[e.createElementVNode("button",{class:e.normalizeClass(["flex items-center gap-1",f.value?"text-blue-600":"text-gray-500 hover:text-blue-600 transition-colors"]),onClick:C[1]||(C[1]=B=>m())},[e.createVNode(e.unref(Oo),{class:e.normalizeClass(["h-3 w-3",f.value?"fill-blue-600":""])},null,8,["class"]),e.createTextVNode(" "+e.toDisplayString(N.comment?.likes),1)],2),N.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"text-gray-500 hover:text-blue-600 transition-colors",onClick:C[2]||(C[2]=B=>c.value=!0)},[e.createVNode(e.unref(Mo),{class:"h-3 w-3"})])),e.createElementVNode("button",{class:"text-gray-400 hover:text-gray-600 transition-colors opacity-0 group-hover:opacity-100",type:"button",onClick:C[3]||(C[3]=B=>a.value=!0)},[e.createVNode(e.unref($o),{class:"h-3 w-3"})])]),d.value?(e.openBlock(),e.createElementBlock("div",or,[e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:C[4]||(C[4]=B=>d.value=!1)},[e.createVNode(e.unref(Zt),{class:"h-3 w-3"}),C[11]||(C[11]=e.createTextVNode(" Cancel ",-1))]),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!r.value.trim(),onClick:C[5]||(C[5]=B=>E())},[e.createVNode(e.unref(Xn),{class:"h-3 w-3 mr-1"}),C[12]||(C[12]=e.createTextVNode(" Send ",-1))],8,rr)])):e.createCommentVNode("",!0)])]),a.value?(e.openBlock(),e.createBlock(Jo,{key:0,showMoreOptions:a.value,"onUpdate:showMoreOptions":C[6]||(C[6]=B=>a.value=B),onEdit:C[7]||(C[7]=B=>d.value=!0),onDelete:C[8]||(C[8]=B=>N.$emit("delete",N.comment?.id)),comment:N.comment},null,8,["showMoreOptions","comment"])):e.createCommentVNode("",!0)],2),N.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ir,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.comment?.replies,B=>(e.openBlock(),e.createBlock(A,{key:B.id,comment:B,isInside:!0,onDelete:D=>N.$emit("delete",B.id),onLike:w,onEdit:_},null,8,["comment","onDelete"]))),128)),c.value&&!N.isInside?(e.openBlock(),e.createBlock(Qn,{key:0,onSendComment:C[9]||(C[9]=B=>N.$emit("reply",N.comment?.id,B)),isReply:c.value,"onUpdate:isReply":C[10]||(C[10]=B=>c.value=B)},null,8,["isReply"])):e.createCommentVNode("",!0)]))])}}}),ar=["id"],cr={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},yt=e.defineComponent({__name:"CommentsWidget",props:{title:{},comments:{},maxHeight:{},onAddComment:{type:Function},onReply:{type:Function},onLike:{type:Function},onDelete:{type:Function},onEdit:{type:Function},id:{},className:{},style:{}},emits:["add","reply","like","delete","edit"],setup(t,{emit:n}){const s=t,o=n,r=e.ref(s.comments??[]);async function l(){if(!s.id)return;const p=await fetch(`/api/widget/comment/${s.id}`).then(m=>m.json());r.value=p.rows.map(m=>({id:m.communication_id,author:m.username,text:m.body,createdAt:new Date(m.cdate)}))}r.value.length===0&&l();const i=async p=>{s.onAddComment?s.onAddComment(p):s.id&&(await fetch(`/api/widget/comment/${s.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:p})}),await l()),o("add",p)},a=(p,m)=>{s?.onLike?.(p,m),o("like",p,m)},c=(p,m)=>{s.onReply?.(p,m),o("reply",p,m)},d=async(p,m)=>{s.onEdit?s.onEdit(p,m):s.id&&(await fetch(`/api/widget/comment/${s.id}/${p}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:m})}),await l()),o("edit",p,m)},f=async p=>{s.onDelete?s.onDelete(p):s.id&&(await fetch(`/api/widget/comment/${s.id}/${p}`,{method:"DELETE"}),await l()),o("delete",p)};return(p,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mx-auto font-sans",p.className]),id:p.id,style:e.normalizeStyle(p.style)},[p.title?(e.openBlock(),e.createElementBlock("h3",cr,e.toDisplayString(p.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([p.maxHeight?"overflow-y-auto":"","space-y-3"]),style:e.normalizeStyle({maxHeight:p.maxHeight+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,E=>(e.openBlock(),e.createBlock(lr,{key:E.id,comment:E,onReply:c,onLike:a,onDelete:m[0]||(m[0]=w=>f(w)),onEdit:d},null,8,["comment"]))),128))],6),e.createVNode(Qn,{onSendComment:m[1]||(m[1]=E=>i(E))})],14,ar))}}),Vn=new Map([["file",{name:"File",color:"bg-green-100 text-green-700 border-green-200",icon:Ke}],["post",{name:"Post",color:"bg-blue-100 text-blue-700 border-blue-200",icon:Lo}],["user",{name:"User",color:"bg-purple-100 text-purple-700 border-purple-200",icon:Po}],["custom",{name:"Custom",color:"bg-gray-100 text-gray-700 border-gray-200",icon:Io}]]),dr={class:"mx-auto font-sans"},pr={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},fr={class:"relative"},mr={class:"space-y-3"},hr={class:"flex-1 min-w-0 pb-2"},ur={class:"flex items-center gap-1.5 mb-1 mt-0.5"},gr={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},yr={class:"font-medium text-xs"},vr={class:"text-xs text-gray-500"},br={class:"space-y-1"},kr={class:"text-xs text-gray-700"},Er={class:"capitalize mr-1"},Nr={key:0,class:"inline-flex items-center rounded-full border py-0.5 font-semibold transition-colors text-foreground text-xs h-4 px-1 capitalize"},xr={key:0,class:"flex items-center gap-1 text-xs"},wr={key:0,class:"bg-red-50 text-red-600 px-1.5 py-0.5 rounded text-xs border border-red-200"},_r={key:2,class:"bg-green-50 text-green-600 px-1.5 py-0.5 rounded text-xs border border-green-200"},vt=e.defineComponent({__name:"HistoryWidget",props:{data:{},title:{},maxHeight:{},id:{},className:{},style:{}},setup(t){const n=t,s=e.ref(Array.isArray(n.data)?n.data:[]);s.value.length===0&&n.id&&o();async function o(){const r=await fetch(`/api/widget/history/${n.id}`);if(!r.ok)return{data:[]};const l=await r.json();l.rows.forEach(i=>{i.timestamp=new Date(i.cdate),i.id=i.entity_id,i.entityType=i.entity_type,i.entityId=i.entity_id,i.action=i.change_type,i.userId=i.change_user_id,i.userName=i.username,i.timestamp=new Date(i.cdate),i.description=i.username,i.status=i.username}),s.value=l.rows}return(r,l)=>(e.openBlock(),e.createElementBlock("div",dr,[r.title?(e.openBlock(),e.createElementBlock("h3",pr,e.toDisplayString(r.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(r.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:r.maxHeight+"px"})},[e.createElementVNode("div",fr,[l[0]||(l[0]=e.createElementVNode("div",{class:"absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200"},null,-1)),e.createElementVNode("div",mr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,i=>(e.openBlock(),e.createElementBlock("div",{class:"relative flex items-start gap-2",key:i?.id},[e.createElementVNode("div",{class:e.normalizeClass(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${e.unref(Vn).get(i?.entityType)?.color}`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(Vn).get(i?.entityType)?.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",hr,[e.createElementVNode("div",ur,[e.createElementVNode("span",gr,[e.createVNode(e.unref(Jt),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("span",yr,e.toDisplayString(i?.userName),1),e.createElementVNode("span",vr,e.toDisplayString(i?.timestamp.toLocaleTimeString("ua-UA",{hour:"2-digit",minute:"2-digit"})),1)]),e.createElementVNode("div",br,[e.createElementVNode("div",kr,[e.createElementVNode("span",Er,e.toDisplayString(i?.action),1),i?.entityId?(e.openBlock(),e.createElementBlock("span",Nr,e.toDisplayString(i?.entityId),1)):e.createCommentVNode("",!0)]),i?.changes?.[i?.entityId]?(e.openBlock(),e.createElementBlock("div",xr,[i?.changes?.[i?.entityId]?.old?(e.openBlock(),e.createElementBlock("span",wr,e.toDisplayString(i?.changes?.[i?.entityId]?.old),1)):e.createCommentVNode("",!0),i?.changes?.[i?.entityId]?.old&&i?.changes?.[i?.entityId]?.new?(e.openBlock(),e.createBlock(e.unref(So),{key:1,class:"h-2 w-2 text-gray-400"})):e.createCommentVNode("",!0),i?.changes?.[i?.entityId]?.new?(e.openBlock(),e.createElementBlock("span",_r,e.toDisplayString(i?.changes?.[i?.entityId]?.new),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])]))),128))])])],6)]))}}),Cr={key:0,class:"text-xl font-semibold"},Sr={class:"flex gap-1"},Br={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"},$r=e.defineComponent({__name:"FileHeader",props:e.mergeModels({title:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["onAddFile"],["update:modelValue"]),setup(t){const n=e.useModel(t,"modelValue"),s={active:"bg-blue-100 text-black hover:bg-blue-100",inactive:"bg-white text-black hover:bg-blue-100"};return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",o.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[o.title?(e.openBlock(),e.createElementBlock("h3",Cr,e.toDisplayString(o.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Sr,[e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",n.value==="list"?s.active:s.inactive]),onClick:r[0]||(r[0]=l=>n.value="list")},[e.createVNode(e.unref(Ao),{class:"h-4 w-4"})],2),e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",n.value==="grid"?s.active:s.inactive]),onClick:r[1]||(r[1]=l=>n.value="grid")},[e.createVNode(e.unref(Do),{class:"h-4 w-4"})],2),e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:r[2]||(r[2]=l=>o.$emit("onAddFile",l))},null,32),e.createElementVNode("div",Br,[e.createVNode(e.unref(Yn),{class:"h-4 w-4"}),r[3]||(r[3]=e.createTextVNode(" Додати файл ",-1))])])])],2))}}),Yt={pdf:{color:"bg-red-100 text-red-700 border-red-200",icon:Ke,label:"PDF"},sketch:{color:"bg-gray-100 text-gray-700 border-gray-200",icon:To,label:"SKETCH"},mp4:{color:"bg-purple-100 text-purple-700 border-purple-200",icon:Fo,label:"VIDEO"},docx:{color:"bg-blue-100 text-blue-700 border-blue-200",icon:Ke,label:"DOC"},zip:{color:"bg-orange-100 text-orange-700 border-orange-200",icon:Co,label:"ARCHIVE"},png:{color:"bg-green-100 text-green-700 border-green-200",icon:Zn,label:"IMAGE"},jpg:{color:"bg-green-100 text-green-700 border-green-200",icon:Zn,label:"IMAGE"},xlsx:{color:"bg-emerald-100 text-emerald-700 border-emerald-200",icon:Ke,label:"EXCEL"},pptx:{color:"bg-amber-100 text-amber-700 border-amber-200",icon:Ke,label:"PPT"}};function es(t,n="en"){const s={month:"short",day:"numeric"};return new Intl.DateTimeFormat(n,s).format(t)}function ts(t){if(t===0)return"0 B";const n=1024,s=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(t)/Math.log(n));return`${parseFloat((t/Math.pow(n,o)).toFixed(1))} ${s[o]}`}const Tr={class:"space-y-0.5"},Dr=["onClick"],Or=["onClick"],Ir={class:"flex items-center gap-2"},Ar={class:"font-medium text-xs truncate hover:text-blue-600 cursor-pointer"},Mr={class:"hidden sm:block text-xs text-gray-500 w-16 text-right"},Lr={class:"hidden md:block text-xs text-gray-500 w-12 text-right"},Rr={class:"flex items-center gap-1"},Pr=["onClick"],Fr=["onClick"],zr=e.defineComponent({__name:"FileList",props:{files:{}},emits:["delete","download","openLightbox"],setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",Tr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.files,o=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",key:o.id,onClick:e.withModifiers(r=>n.$emit("openLightbox",o),["stop"])},[e.createElementVNode("div",{class:e.normalizeClass(["p-1 rounded",e.unref(Yt)[o?.ext]?.color||"bg-blue-100 text-blue-700 border-blue-200"])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(Yt)[o?.ext]?.icon||e.unref(Yt).pdf.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",{class:"flex-1 min-w-0",onClick:r=>n.$emit("openLightbox",o)},[e.createElementVNode("div",Ir,[e.createElementVNode("span",Ar,e.toDisplayString(o?.uploaded_name||o?.name),1)])],8,Or),e.createElementVNode("div",Mr,e.toDisplayString(e.unref(ts)(o.size)),1),e.createElementVNode("div",Lr,e.toDisplayString(e.unref(es)(o.createdAt)),1),e.createElementVNode("div",Rr,[e.createElementVNode("button",{onClick:e.withModifiers(r=>n.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity"},[e.createVNode(e.unref(Jn),{class:"h-3 w-3"})],8,Pr),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700",onClick:e.withModifiers(r=>n.$emit("delete",r,o?.file_id),["stop"])},[e.createVNode(e.unref(Gt),{class:"h-3 w-3"})],8,Fr)])],8,Dr))),128))]))}}),jr={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3"},Hr=["onClick"],Ur={class:"space-y-2"},qr={class:"flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden"},Wr=["src"],Kr={class:"space-y-1"},Gr=["title"],Jr={class:"text-xs text-gray-500 text-left"},Zr={class:"absolute top-2 right-1 flex items-center gap-1"},Yr=["onClick"],Xr=["onClick"],Qr=e.defineComponent({__name:"FileGrid",props:{files:{}},emits:["delete","download","openLightbox"],setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",jr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.files,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,onClick:e.withModifiers(r=>n.$emit("openLightbox",o),["stop"]),class:"group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"},[e.createElementVNode("div",Ur,[e.createElementVNode("div",qr,[o.ext==="png"||o.ext==="jpg"||o.ext==="jpeg"||o.ext==="gif"||o.ext==="svg"||o.ext==="webp"?(e.openBlock(),e.createElementBlock("img",{key:0,src:`/file/resize?filepath=${o?.file_path}&w=500`,alt:"file",class:"w-full h-full object-cover"},null,8,Wr)):(e.openBlock(),e.createBlock(e.unref(Ke),{key:1,class:"h-10 w-10 text-gray-500"}))]),e.createElementVNode("div",Kr,[e.createElementVNode("h3",{class:"font-medium text-xs leading-tight text-left",title:o.uploaded_name||o.name},e.toDisplayString(o.uploaded_name||o.name),9,Gr),e.createElementVNode("p",Jr,e.toDisplayString(e.unref(es)(o.createdAt))+", "+e.toDisplayString(e.unref(ts)(o.size)),1)])]),e.createElementVNode("div",Zr,[e.createElementVNode("button",{onClick:e.withModifiers(r=>n.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-50"},[e.createVNode(e.unref(Jn),{class:"h-3 w-3"})],8,Yr),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700 hover:bg-red-50",onClick:e.withModifiers(r=>n.$emit("delete",r,o?.file_id),["stop"])},[e.createVNode(e.unref(Gt),{class:"h-3 w-3"})],8,Xr)])],8,Hr))),128))]))}}),Vr={class:"mx-auto font-sans"},ei={key:1},bt=e.defineComponent({__name:"FilesWidget",props:{title:{},view:{},files:{default:()=>[]},maxHeight:{},onAddFile:{},id:{},className:{},style:{},onDelete:{}},emits:["delete","add","openLightbox"],setup(t,{emit:n}){const s=t,o=e.ref(!1),r=e.ref(null),l=e.ref(!1),i=e.ref(0),a=e.ref(s.files??[]),c=n;a.value.length===0&&C();const d=(D,S)=>{r.value=S,o.value=!0},f=()=>{r.value&&(w(r.value),r.value=null,o.value=!1)},p=e.computed(()=>Array.isArray(a.value)?a.value.map(D=>D?.file_path):[]),m=D=>{const S=p.value.findIndex(U=>U===D.file_path);S!==-1&&(l.value=!0,i.value=S)},E=D=>{s.onAddFile?s.onAddFile(D):A(D),c("add",D)},w=D=>{s.onDelete?s.onDelete(D):B(D),c("delete",D)},_=D=>{const S=document.createElement("a");S.setAttribute("download",D?.uploaded_name||D?.name),S.href=D?.file_path||D?.path,S.click()},N=e.ref("list");async function C(){if(!s.id)return;const D=await fetch(`/api/widget/file/${s.id}`).then(S=>S.json());D.rows.forEach(S=>{S.timestamp=new Date(S.cdate),S.id=S.entity_id,S.entityType=S.entity_type,S.entityId=S.entity_id,S.entityType=S.entity_type,S.action=S.change_type,S.userId=S.change_user_id,S.userName=S.username,S.timestamp=new Date(S.cdate),S.description=S.username,S.status=S.username}),a.value=D.rows}const A=async D=>{if(!(!D.target||!D.target.files||D.target.files.length===0))try{await Promise.all(Array.from(D.target.files).map(async S=>{const U=new FormData;U.append("file",S);const J=`/api/widget/file/${s.id}`,M=await fetch(J,{method:"POST",body:U});if(!M.ok)throw new Error(`HTTP error! status: ${M.status}`);return S})),await C()}catch(S){console.error("Помилка при завантаженні файлів:",S)}},B=async D=>{try{await fetch(`/api/widget/file/${s.id}/${D}`,{method:"DELETE"}),await C()}catch(S){console.error(S)}};return(D,S)=>{const U=e.resolveComponent("MessageBox"),J=e.resolveComponent("Lightbox");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Vr,[e.createVNode($r,{modelValue:N.value,"onUpdate:modelValue":S[0]||(S[0]=M=>N.value=M),title:s.title,onOnAddFile:S[1]||(S[1]=M=>E(M))},null,8,["modelValue","title"]),a.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(D.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:D.maxHeight+"px"})},[N.value==="list"?(e.openBlock(),e.createBlock(zr,{key:0,onDelete:d,onDownload:_,onOpenLightbox:S[2]||(S[2]=M=>m(M)),files:a.value},null,8,["files"])):e.createCommentVNode("",!0),N.value==="grid"?(e.openBlock(),e.createBlock(Qr,{key:1,onDelete:d,onDownload:_,onOpenLightbox:S[3]||(S[3]=M=>m(M)),files:a.value},null,8,["files"])):e.createCommentVNode("",!0)],6)):(e.openBlock(),e.createElementBlock("div",ei,S[6]||(S[6]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Файлів не знайдено")],-1)])))]),e.createVNode(U,{modelValue:o.value,"onUpdate:modelValue":S[4]||(S[4]=M=>o.value=M),onConfirm:f,title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати"},null,8,["modelValue"]),e.createVNode(J,{modelValue:l.value,"onUpdate:modelValue":S[5]||(S[5]=M=>l.value=M),images:p.value,"start-index":i.value},null,8,["modelValue","images","start-index"])],64)}}}),ti={key:0,class:"image-wrapper h-full max-h-[400px]",id:"lightbox-gallery"},ni=["onClick"],si={key:0,rel:"noreferrer",class:"relative block h-full w-full"},oi=["src"],ri={key:0,class:"thumb-cover"},ii=e.defineComponent({__name:"GalleryContent",props:{title:{},items:{},columns:{},maxHeight:{},onAddImage:{type:Function},onDelete:{type:Function},id:{},className:{},style:{}},emits:["delete"],setup(t,{emit:n}){const s=n,o=e.ref(!1),r=e.ref(0),l=t,i=e.computed(()=>Array.isArray(l.items)?l.items.map(c=>c?.file_path):[]),a=c=>{const d=i.value.findIndex(f=>f===c.file_path);d!==-1&&(o.value=!0,r.value=d)};return(c,d)=>{const f=e.resolveComponent("Lightbox");return c.items?.length>=1?(e.openBlock(),e.createElementBlock("div",ti,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.items,(p,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["h-full w-full image"+m,"cursor-pointer bg-teal-500 rounded-[3px]"]),key:m,onClick:e.withModifiers(E=>a(p),["stop"])},[m<5?(e.openBlock(),e.createElementBlock("div",si,[e.createElementVNode("img",{src:`/file/resize?filepath=${p?.file_path}&w=500`,alt:"alt",height:"auto",width:"100%",class:e.normalizeClass(["object-cover h-full w-full bg-gray-200 rounded-[3px]",m===0?"max-h-[411px]":"max-h-[calc((411px-3px)/2)]"])},null,10,oi),m===4&&c.items?.length>5?(e.openBlock(),e.createElementBlock("div",ri," +"+e.toDisplayString(c.items?.length-5),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,ni))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Math.max(0,5-c.items.length),p=>(e.openBlock(),e.createElementBlock("div",{key:"empty-"+p,class:e.normalizeClass(["h-full w-full image"+(c.items.length+p-1),"bg-gray-300 rounded-[3px]"])},null,2))),128)),e.createVNode(f,{modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=p=>o.value=p),images:i.value,"start-index":r.value,delete:"true",download:"true",onDelete:d[1]||(d[1]=p=>s("delete",p))},null,8,["modelValue","images","start-index"])])):e.createCommentVNode("",!0)}}}),li={key:0,class:"text-xl font-semibold"},ai={class:"flex gap-1"},ci={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"},di=e.defineComponent({__name:"widgetHeader",props:{title:{}},emits:["onAddImage"],setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",n.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[n.title?(e.openBlock(),e.createElementBlock("h3",li,e.toDisplayString(n.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ai,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:s[0]||(s[0]=o=>n.$emit("onAddImage",o))},null,32),e.createElementVNode("div",ci,[e.createVNode(e.unref(Yn),{class:"h-4 w-4"}),s[1]||(s[1]=e.createTextVNode(" Додати зображення ",-1))])])])],2))}}),pi={class:"w-full mx-auto font-sans",ref:"containerRef"},fi={key:1},kt=e.defineComponent({__name:"GalleryWidget",props:{title:{},items:{default:()=>[]},columns:{},maxHeight:{},onAddImage:{},onDelete:{},id:{},className:{},style:{}},emits:["delete","add","openLightbox"],setup(t,{emit:n}){const s=t,o=e.ref(s.items??[]),r=n;o.value.length===0&&c();const l=f=>{s.onAddImage?s.onAddImage(f):a(f),r("add",f)},i=f=>{const p=o.value.find(m=>m.file_path===f)?.file_id;p&&(s.onDelete?s.onDelete(p):d(p))},a=async f=>{if(!(!f.target||!f.target.files||f.target.files.length===0))try{await Promise.all(Array.from(f.target.files).map(async p=>{const m=new FormData;m.append("file",p);const E=`/api/widget/file/${s.id}`,w=await fetch(E,{method:"POST",body:m});if(!w.ok)throw new Error(`HTTP error! status: ${w.status}`);return p})),await c()}catch(p){console.error("Помилка при завантаженні файлів:",p)}};async function c(){if(!s.id)return;const f=await fetch(`/api/widget/file/${s.id}`).then(p=>p.json());o.value=f.rows}const d=async f=>{try{await fetch(`/api/widget/file/${s.id}/${f}`,{method:"DELETE"}),await c()}catch(p){console.error(p)}};return(f,p)=>(e.openBlock(),e.createElementBlock("div",pi,[e.createVNode(di,{title:f.title,onOnAddImage:p[0]||(p[0]=m=>l(m))},null,8,["title"]),o.value.length>0?(e.openBlock(),e.createBlock(ii,{key:0,items:o.value,onDelete:p[1]||(p[1]=m=>i(m))},null,8,["items"])):(e.openBlock(),e.createElementBlock("div",fi,p[2]||(p[2]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Зображень не знайдено")],-1)])))],512))}}),mi={class:"text-value"},hi={class:"text-sm text-gray-900"},ui=e.defineComponent({__name:"TextValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{const o=n.item.value;return typeof o=="boolean"?o?"Так":"Ні":o==null?"—":String(o)});return(o,r)=>(e.openBlock(),e.createElementBlock("div",mi,[e.createElementVNode("span",hi,e.toDisplayString(s.value),1)]))}}),Le=(t,n)=>{const s=t.__vccOpts||t;for(const[o,r]of n)s[o]=r;return s},gi=Le(ui,[["__scopeId","data-v-34a76c89"]]),yi={class:"link-value"},vi=["href"],bi=Le(e.defineComponent({__name:"LinkValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{const o=String(n.item.value);try{const r=new URL(o);return r.hostname+r.pathname}catch{return o}});return(o,r)=>(e.openBlock(),e.createElementBlock("div",yi,[e.createElementVNode("a",{href:String(o.item.value),target:"_blank",rel:"noopener noreferrer",class:"text-blue-600 hover:text-blue-800 underline text-sm"},[e.createTextVNode(e.toDisplayString(s.value)+" ",1),r[0]||(r[0]=e.createElementVNode("i",{class:"fas fa-external-link-alt ml-1 text-xs"},null,-1))],8,vi)]))}}),[["__scopeId","data-v-932f028c"]]),ki={class:"date-value"},Ei={class:"text-sm text-gray-900"},Ni=Le(e.defineComponent({__name:"DateValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{const o=n.item.value;if(o instanceof Date)return o.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"});if(typeof o=="string"){const r=new Date(o);if(!isNaN(r.getTime()))return r.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})}return String(o)});return(o,r)=>(e.openBlock(),e.createElementBlock("div",ki,[e.createElementVNode("span",Ei,e.toDisplayString(s.value),1)]))}}),[["__scopeId","data-v-cd4df08e"]]),xi={class:"status-value"},wi={key:0,class:"mr-1"},_i=Le(e.defineComponent({__name:"StatusValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{switch(String(n.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"bg-green-100 text-green-800";case"inactive":case"неактивний":case"pending":case"очікує":return"bg-yellow-100 text-yellow-800";case"error":case"помилка":case"failed":case"неуспішно":return"bg-red-100 text-red-800";case"draft":case"чернетка":return"bg-gray-100 text-gray-800";default:return"bg-blue-100 text-blue-800"}}),o=e.computed(()=>{switch(String(n.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"fas fa-check-circle";case"inactive":case"неактивний":case"pending":case"очікує":return"fas fa-clock";case"error":case"помилка":case"failed":case"неуспішно":return"fas fa-exclamation-circle";case"draft":case"чернетка":return"fas fa-edit";default:return"fas fa-info-circle"}});return(r,l)=>(e.openBlock(),e.createElementBlock("div",xi,[e.createElementVNode("span",{class:e.normalizeClass(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",s.value])},[o.value?(e.openBlock(),e.createElementBlock("span",wi,[e.createElementVNode("i",{class:e.normalizeClass(o.value)},null,2)])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(String(r.item.value)),1)],2)]))}}),[["__scopeId","data-v-aea1f529"]]),Ci={class:"custom-value"},Si={class:"text-sm text-gray-900"},Bi=Le(e.defineComponent({__name:"CustomValue",props:{item:{}},setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",Ci,[e.renderSlot(n.$slots,"default",{item:n.item,value:n.item.value},()=>[e.createElementVNode("span",Si,e.toDisplayString(String(n.item.value)),1)],!0)]))}}),[["__scopeId","data-v-12c8b3f3"]]),$i=["id"],Ti={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},Di={key:1,class:"overflow-x-auto"},Oi={class:"min-w-full divide-y divide-gray-200"},Ii={class:"bg-white divide-y divide-gray-200"},Ai={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Mi={class:"flex items-center gap-2"},Li=["title"],Ri={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},Pi={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},Fi={class:"flex items-start gap-3"},zi={key:0,class:"flex-shrink-0"},ji={class:"flex-1 min-w-0"},Hi={class:"flex items-center gap-2 mb-2"},Ui={class:"text-sm font-medium text-gray-900"},qi=["title"],Wi={key:3,class:"overflow-x-auto"},Ki={class:"min-w-full divide-y divide-gray-200"},Gi={class:"bg-white divide-y divide-gray-200"},Ji={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Zi={class:"flex items-center gap-2"},Yi=["title"],Xi={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},Xt=Le(e.defineComponent({__name:"DescriptionListWidget",props:{title:{},items:{},view:{},id:{},className:{},style:{}},setup(t){const n=s=>{switch(s.type){case"link":return bi;case"date":return Ni;case"status":return _i;case"custom":return Bi;default:return gi}};return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["description-list-widget",s.className]),id:s.id,style:e.normalizeStyle(s.style)},[s.title?(e.openBlock(),e.createElementBlock("h3",Ti,e.toDisplayString(s.title),1)):e.createCommentVNode("",!0),s.view==="table"?(e.openBlock(),e.createElementBlock("div",Di,[e.createElementVNode("table",Oi,[e.createElementVNode("tbody",Ii,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,r=>(e.openBlock(),e.createElementBlock("tr",{key:r.id||r.label},[e.createElementVNode("td",Ai,[e.createElementVNode("div",Mi,[r.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([r.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:r.tooltip},o[0]||(o[0]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,Li)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",Ri,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(r)),{item:r},null,8,["item"]))])]))),128))])])])):s.view==="grid"?(e.openBlock(),e.createElementBlock("div",Pi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id||r.label,class:"description-item-card bg-white border border-gray-200 rounded-lg p-4"},[e.createElementVNode("div",Fi,[r.icon?(e.openBlock(),e.createElementBlock("div",zi,[e.createElementVNode("i",{class:e.normalizeClass([r.icon,"text-gray-500 text-lg"])},null,2)])):e.createCommentVNode("",!0),e.createElementVNode("div",ji,[e.createElementVNode("div",Hi,[e.createElementVNode("h4",Ui,e.toDisplayString(r.label),1),r.tooltip?(e.openBlock(),e.createElementBlock("span",{key:0,class:"text-gray-400 cursor-help",title:r.tooltip},o[1]||(o[1]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,qi)):e.createCommentVNode("",!0)]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(r)),{item:r},null,8,["item"]))])])]))),128))])):(e.openBlock(),e.createElementBlock("div",Wi,[e.createElementVNode("table",Ki,[e.createElementVNode("tbody",Gi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,r=>(e.openBlock(),e.createElementBlock("tr",{key:r.id||r.label},[e.createElementVNode("td",Ji,[e.createElementVNode("div",Zi,[r.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([r.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:r.tooltip},o[2]||(o[2]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,Yi)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",Xi,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(r)),{item:r},null,8,["item"]))])]))),128))])])]))],14,$i))}}),[["__scopeId","data-v-106790ef"]]),Qi={draw:{toolbar:{actions:{title:"Скасувати малювання",text:"Скасувати"},finish:{title:"Завершити малювання",text:"Завершити"},undo:{title:"Видалити останню точку",text:"Видалити останню"},buttons:{polyline:"Намалювати лінію",polygon:"Намалювати полігон",rectangle:"Намалювати прямокутник",circle:"Намалювати коло",marker:"Додати точку",circlemarker:"Додати маркер-коло"}},handlers:{circle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати коло",end:"Відпустіть кнопку миші, щоб завершити"},radius:"Радіус"},circlemarker:{tooltip:{start:"Клацніть на карту, щоб додати маркер-коло"}},marker:{tooltip:{start:"Клацніть на карту, щоб додати точку"}},polygon:{tooltip:{start:"Клацніть, щоб почати малювати полігон",cont:"Клацайте, щоб продовжити малювати полігон",end:"Клацніть першу точку, щоб завершити полігон"}},polyline:{error:"<strong>Помилка:</strong> лінія не може перетинатися сама з собою",tooltip:{start:"Клацніть, щоб почати малювати лінію",cont:"Клацайте, щоб продовжити малювати лінію",end:"Клацніть останню точку, щоб завершити лінію"}},rectangle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати прямокутник",end:"Відпустіть кнопку миші, щоб завершити"}},simpleshape:{tooltip:{end:"Відпустіть кнопку миші, щоб завершити"}}}},edit:{toolbar:{actions:{save:{title:"Зберегти зміни",text:"Зберегти"},cancel:{title:"Скасувати редагування",text:"Скасувати"},clearAll:{title:"Очистити всі шари",text:"Очистити все"}},buttons:{edit:"Редагувати шари",editDisabled:"Немає шарів для редагування",remove:"Видалити шари",removeDisabled:"Немає шарів для видалення"}},handlers:{edit:{tooltip:{text:"Перетягніть маркери, щоб редагувати шари",subtext:"Натисніть 'Скасувати', щоб повернутися"}},remove:{tooltip:{text:"Клацніть на шари, щоб видалити їх"}}}}};function Vi(t){return t?t.type==="FeatureCollection"||t.type==="Feature"?t:t.geom?{type:"Feature",geometry:{type:t.geom.type,coordinates:t.geom.coordinates},properties:{}}:t.type&&t.coordinates?{type:"Feature",geometry:t,properties:{}}:null:null}const el={key:0,class:"absolute inset-0 z-[600] flex items-center justify-center pointer-events-none bg-black/20"},tl={class:"bg-black/70 text-white text-xs sm:text-sm px-4 py-2 rounded-md shadow"},nl={class:"bg-white/95 border border-gray-200 rounded-md shadow-xl px-3 py-2 max-w-[240px] text-[11px] sm:text-xs text-gray-900"},sl={class:"font-semibold truncate text-gray-900"},ol={class:"mt-1 space-y-0.5"},rl={class:"text-gray-500"},il={class:"text-gray-900 text-right break-all"},ll={key:3,class:"bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"},al={class:"flex items-center justify-between p-2 border-b"},cl={class:"p-2 border-b"},dl={class:"flex items-center"},pl=["value"],fl={class:"ml-2"},ml={class:"p-2"},hl={class:"flex items-center"},ul=["checked","onChange"],gl={class:"ml-2"},Et=e.defineComponent({__name:"MapWidget",props:{pattern:{},geom:{},id:{},tms:{},layers:{},title:{},height:{}},setup(t){function n(x){let g=x?.parent??null;for(;g;){const T=g.props?.view;if(T==="tabs"||T==="vertical-tabs")return!0;g=g.parent??null}return!1}const s=t,o=e.getCurrentInstance(),r=e.inject("vsCardTabsContext",!1),l=e.computed(()=>(typeof r=="boolean"?r:r.value)?!0:n(o)),i=o?.appContext.config.globalProperties?.$settings??{},a=(()=>{const x=Array.isArray(i.center)?i.center:[],g=Number(x[0]),T=Number(x[1]);return Number.isFinite(g)&&Number.isFinite(T)?[g,T]:[50,30]})(),c=o?.uid??Math.floor(Math.random()*1e4),d=e.ref(null);let f,p,m;const E=be(),w=e.ref(Object.keys(E)[0]),_=`base-layer-${c}`;let N;const C=e.ref(!0),A=e.ref(!1),B=e.ref(!1),D=e.ref(!1),S=e.ref("Використовуйте Ctrl + колесо миші для зміни масштабу");let U=null;const J=e.reactive({}),M=e.ref([]),L=e.computed(()=>M.value.map(x=>J[x]).filter(Boolean)),P=e.ref(null),z=e.computed(()=>P.value?.title||P.value?.layerId||""),h=e.computed(()=>P.value?Object.entries(P.value.properties??{}).filter(([x])=>typeof x=="string"&&x).slice(0,5).map(([x,g])=>({key:x,value:g==null?"—":String(g)})):[]),$=e.computed(()=>{if(!P.value)return;const x=12,g=P.value.point.x+x,T=P.value.point.y+x;return{left:`${g}px`,top:`${T}px`}}),k=e.computed(()=>{if(A.value)return"fixed inset-0 w-screen h-screen z-[9999] bg-white";const x=["relative","h-full"];return s.height||x.push("min-h-[300px]"),s.title&&!l.value&&x.push("pb-[3.25rem]"),x.join(" ")}),O=e.computed(()=>A.value||s.height==null?void 0:{height:typeof s.height=="number"?`${s.height}px`:String(s.height)}),G=e.computed(()=>{const x=["w-full","h-full"];return!s.height&&!A.value&&x.push("min-h-[300px]"),x.join(" ")});async function ve(){const x=I=>{if(!Array.from(document.styleSheets??[]).some(u=>u?.href?.includes(I))){const u=document.createElement("link");u.rel="stylesheet",u.href=I,document.head.appendChild(u)}};x("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"),x("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css");const g=I=>new Promise((W,u)=>{if(Array.from(document.scripts??[]).some(R=>R.src===I))return W();const b=document.createElement("script");b.src=I,b.async=!0,b.onload=()=>W(),b.onerror=R=>u(R),document.body.appendChild(b)});return await g("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").catch(()=>{}),await g("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js").catch(()=>{}),await g("https://unpkg.com/leaflet.vectorgrid@1.3.0/dist/Leaflet.VectorGrid.bundled.js").catch(()=>{}),window.L}function be(){const x=g=>g.map((T,I)=>{const W=typeof T?.key=="string"&&T.key?T.key:`b${I}`,u=qe(T?.url);return u?{...T,key:W,url:u}:null}).filter(T=>!!T).reduce((T,I)=>({...T,[I.key]:I}),{});return Array.isArray(i?.basemaps)&&i.basemaps.length?x(i.basemaps):x([{key:"topo100",url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png"},{key:"orto10",url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png"},{key:"osmb",url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png"}])}function qe(x){if(typeof x!="string"||!x.trim())return"";const g=x.trim();if(/^https?:\/\//i.test(g))return g;const T=window.location?.origin??"",I=g.replace(/^\/+/,"");return T?`${T}/${I}`:`/${I}`}function ke(x,g){return x?.id!=null?String(x.id):x?.url?`${x.url}-${g}`:`layer-${g}`}function xe(x){if(!x||typeof x!="object")return;const g={},T=y=>{if(typeof y=="string"){const v=y.trim().replace(/,+$/,"");return v?/^-?\d+(\.\d+)?$/.test(v)?Number(v):v:void 0}return y},I=()=>(g.colorSet||(g.colorSet={}),g.colorSet),W=(y,v)=>{if(y==null||typeof v!="string")return;const b=v.trim().replace(/,+$/,"");b&&(I()[String(y)]=b)},u=y=>{const v=["color","fill","hex","valueColor","value_color"].map(R=>y[R]).find(R=>typeof R=="string"&&R.trim());if(!v)return!1;const b=["value","key","id","code","status"].map(R=>y[R]).find(R=>R!=null&&R!=="");return b==null?!1:(W(b,v),!0)};return Object.entries(x).forEach(([y,v])=>{if(y==="colorSet"&&v!=null){Array.isArray(v)?v.forEach(R=>{R&&(typeof R=="object"&&u(R)||typeof R=="object"&&Object.entries(R).forEach(([q,re])=>W(q,typeof re=="string"?re:void 0)))}):typeof v=="object"&&(u(v)||Object.entries(v).forEach(([R,q])=>W(R,typeof q=="string"?q:void 0)));return}const b=T(v);if(b!==void 0){if(y==="border"){typeof b=="number"&&g.width==null?g.width=b:typeof b=="string"&&g.stroke==null&&(g.stroke=b);return}g[y]=b}}),g.colorSet&&!Object.keys(g.colorSet).length&&delete g.colorSet,Object.keys(g).length?g:void 0}function Ce(){if(Array.isArray(s.layers)&&s.layers.length)return s.layers.map((g,T)=>{if(!g)return null;const I=ke(g,T),W=g.url||(s.pattern&&I?s.pattern.replace("{{id}}",String(g.id??I)):"");return W?{...g,id:I,url:W,name:g.name||`Шар ${T+1}`,style:xe(g.style)}:null}).filter(g=>!!g?.url);const x=Array.isArray(s.tms)?s.tms:s.tms?.split(",");return x?x.map((g,T)=>{if(!g)return null;const I=typeof g=="string"?g.trim():`${g}`;if(!I)return null;const W=`legacy-${T}`,u=s.pattern?s.pattern.replace("{{id}}",I):I;return{id:W,name:`Шар ${T+1}`,url:u,visible:!0}}).filter(g=>!!g?.url):[]}function Fn(x){const g=(x?.url??"").trim();if(!g)return"";if(/^https?:\/\//i.test(g))return g;const T=window.location?.origin??"",I=g.replace(/^\/+/,"");return`${T}/${I}`}function Me(x){const g=x.style??{};return T=>{const I=g.colorAttr,W=g.colorSet??{},u=typeof I=="string"?W?.[T?.[I]]??g.color??"#3388ff":g.color??"#3388ff",y=g.stroke??u;return{weight:g.width??1,color:y,opacity:g.opacity??1,fill:g.type?g.type!=="polyline":!0,fillColor:u,fillOpacity:g.opacity??.5}}}function qt(x,g){if(!f||!g?.latlng)return;const T=f.latLngToContainerPoint(g.latlng),I=g.layer?.properties??g.properties??{};P.value={layerId:x.id,title:I?.name??x.name,properties:I,point:{x:T.x,y:T.y}}}function mt(x){x&&P.value?.layerId!==x||(P.value=null)}e.onMounted(async()=>{m=await ve(),m.drawLocal={...Qi};const x=typeof i?.zoom=="number"&&Number.isFinite(i.zoom)?i.zoom:10;f=m.map(d.value,{zoomControl:!1}).setView(a,x),m.control.zoom({position:"bottomright"}).addTo(f),N=m.tileLayer(E[w.value].url,{maxZoom:19}).addTo(f),p=new m.FeatureGroup().addTo(f),ht(),U=Kn();const g=Vi(s.geom);if(g){const T=[];m.geoJSON(g).eachLayer(I=>T.push(I)),T.length&&p.addLayer(T[0]),Wn()}if(d.value){const T=new ResizeObserver(()=>{f&&f.invalidateSize()});T.observe(d.value),e.onBeforeUnmount(()=>{T.disconnect()})}}),e.onBeforeUnmount(()=>{U?.(),zn()});function Wt(x){const g=(x?.service??"").toLowerCase();if(g)return g;const T=(x?.url??"").toLowerCase();return/\.(mvt|pbf|vtile|vmt)(\?|$)/.test(T)?"vtile":/service=wms|request=getmap|\/(wms|ows)(\?|$)/.test(T)?"wms":""}function Kt(x){const g=Wt(x),T=Fn(x),W={opacity:x?.style?.opacity??1,...x.options??{}},u=!!(x?.style&&Object.keys(x.style).length),y=x.sourceLayer||x.layer||x.service_layer||x.service_key||x.map_key||x.dataset?.layer||x.id;if(g==="vtile"){const v=m?.vectorGrid;if(v?.protobuf&&(u||!m?.maplibreGL)){const b=v.protobuf(T,{interactive:!0,maxNativeZoom:x.maxzoom??19,vectorTileLayerStyles:{[y??"default"]:Me(x),default:Me(x)}});return b.on?.("mouseover",R=>qt(x,R)),b.on?.("mousemove",R=>qt(x,R)),b.on?.("mouseout",()=>mt(x.id)),b}if(!u&&m?.maplibreGL&&window?.maplibregl){const b=T;return m.maplibreGL({style:b,interactive:!1,pane:"overlayPane"})}}if(g==="wms"&&m?.tileLayer?.wms){const v={...x.params??{}};return y&&!v.layers&&(v.layers=y),v.format==null&&(v.format="image/png"),v.transparent==null&&(v.transparent=!0),m.tileLayer.wms(T,{...v,...W})}return m.tileLayer(T,W)}function zn(){Object.values(J).forEach(x=>{x.layer&&f?.hasLayer(x.layer)&&f.removeLayer(x.layer),x.layer=null}),mt()}function jn(){f&&M.value.forEach(x=>{const g=J[x];g&&(g.visible?(g.layer||(g.layer=Kt(g.config)),g.layer&&!f.hasLayer(g.layer)&&g.layer.addTo(f)):g.layer&&f.hasLayer(g.layer)&&f.removeLayer(g.layer))})}function ht(){const x=Ce(),g=[],T=new Set;x.forEach((I,W)=>{const u=ke(I,W);g.push(u),T.add(u);const y=J[u];y&&y.config.url!==I.url&&(y.layer&&f?.hasLayer(y.layer)&&f.removeLayer(y.layer),y.layer=null);const v=y?.visible??I.visible??I.overlay!==!1;J[u]={id:u,config:{...I,id:u},visible:v,layer:y?.layer??null}}),Object.keys(J).forEach(I=>{if(!T.has(I)){const W=J[I];W?.layer&&f?.hasLayer(W.layer)&&f.removeLayer(W.layer),delete J[I]}}),M.value=g,f&&jn()}function Hn(x,g){const T=typeof g=="boolean"?g:g.target?.checked;if(T==null)return;const I=J[x];I&&(I.visible=T,I.visible?(I.layer||(I.layer=Kt(I.config)),I.layer&&!f.hasLayer(I.layer)&&I.layer.addTo(f)):I.layer&&f.hasLayer(I.layer)&&(f.removeLayer(I.layer),mt(x)))}function Se(x){N&&N.removeFrom(f);const g=E[x];N=m.tileLayer(g.url,g.options||{}).addTo(f),N.bringToBack(),w.value=x}function Un(){Se(w.value)}function qn(){C.value?p.addTo(f):p.removeFrom(f)}function Wn(x=30){const g=p.getLayers();if(!g.length)return;const I=m.featureGroup(g).getBounds();I&&I.isValid()&&f.fitBounds(I,{padding:[x,x],maxZoom:16})}function Kn(){if(!f||!d.value)return null;f.scrollWheelZoom.disable(),S.value="Використовуйте Ctrl + колесо миші для зміни масштабу";let x;const g=(I=1500)=>{D.value=!0,x&&clearTimeout(x),x=window.setTimeout(()=>D.value=!1,I)},T=I=>{if(!(I.ctrlKey||I.metaKey||I.shiftKey)){g(),f.scrollWheelZoom.disable();return}I.preventDefault(),I.stopPropagation(),f.scrollWheelZoom.enable(),D.value=!1,x&&clearTimeout(x),x=window.setTimeout(()=>f.scrollWheelZoom.disable(),200)};return d.value.addEventListener("wheel",T,{passive:!1}),()=>{f.scrollWheelZoom.enable(),d.value?.removeEventListener("wheel",T),x&&clearTimeout(x),D.value=!1}}return e.watch(A,()=>setTimeout(()=>f?.invalidateSize(),50)),e.watch(()=>s.layers,()=>ht(),{deep:!0}),e.watch(()=>[s.tms,s.pattern],()=>{s.layers?.length||ht()}),(x,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value),style:e.normalizeStyle(O.value)},[e.createElementVNode("div",{ref_key:"mapContainer",ref:d,class:e.normalizeClass(G.value)},null,2),D.value?(e.openBlock(),e.createElementBlock("div",el,[e.createElementVNode("div",tl,e.toDisplayString(S.value),1)])):e.createCommentVNode("",!0),h.value.length?(e.openBlock(),e.createElementBlock("div",{key:1,class:"absolute z-[550] pointer-events-none",style:e.normalizeStyle($.value)},[e.createElementVNode("div",nl,[e.createElementVNode("div",sl,e.toDisplayString(z.value),1),e.createElementVNode("dl",ol,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,T=>(e.openBlock(),e.createElementBlock("div",{key:`${T.key}-${T.value}`,class:"flex justify-between gap-2"},[e.createElementVNode("dt",rl,e.toDisplayString(T.key),1),e.createElementVNode("dd",il,e.toDisplayString(T.value),1)]))),128))])])],4)):e.createCommentVNode("",!0),B.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:2,onClick:g[0]||(g[0]=T=>B.value=!0),class:"z-[500] bg-white absolute top-[10px] right-[10px] p-2 border rounded-lg cursor-pointer layers-button"}," Шари ")),B.value?(e.openBlock(),e.createElementBlock("div",ll,[e.createElementVNode("div",al,[g[6]||(g[6]=e.createElementVNode("div",null,"Шари",-1)),(e.openBlock(),e.createElementBlock("svg",{onClick:g[1]||(g[1]=T=>B.value=!1),xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4"},g[5]||(g[5]=[e.createElementVNode("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),e.createElementVNode("path",{d:"M18 6l-12 12"},null,-1),e.createElementVNode("path",{d:"M6 6l12 12"},null,-1)])))]),e.createElementVNode("div",cl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E),(T,I)=>(e.openBlock(),e.createElementBlock("div",{key:`base-${I}`},[e.createElementVNode("label",dl,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:_,value:I,"onUpdate:modelValue":g[2]||(g[2]=W=>w.value=W),onChange:Un},null,40,pl),[[e.vModelRadio,w.value]]),e.createElementVNode("span",fl,e.toDisplayString(T.name||I),1)])]))),128))]),e.createElementVNode("div",ml,[e.createElementVNode("label",hl,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":g[3]||(g[3]=T=>C.value=T),onChange:qn},null,544),[[e.vModelCheckbox,C.value]]),g[7]||(g[7]=e.createElementVNode("span",{class:"ml-2"},"Геометрія/Межі",-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,T=>(e.openBlock(),e.createElementBlock("label",{class:"flex items-center",key:T.id},[e.createElementVNode("input",{type:"checkbox",checked:T.visible,onChange:I=>Hn(T.id,I)},null,40,ul),e.createElementVNode("span",gl,e.toDisplayString(T.config.name||T.id),1)]))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["absolute z-[500] bg-white p-2 border rounded-lg cursor-pointer fullscreen-button",A.value?"bottom-[100px] right-[7px]":"bottom-[150px] right-[7px]"]),onClick:g[4]||(g[4]=T=>A.value=!A.value)},g[8]||(g[8]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 8V4h4M20 8V4h-4M4 16v4h4m12-4v4h-4"})],-1)]),2)],6))}});/**
131
+ */const Zt=X("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),zo={class:"border-t pt-3 mt-4"},jo={class:"flex gap-2"},Ho={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Uo={class:"flex-1 space-y-2"},qo={class:"flex justify-between items-center"},Wo={class:"flex gap-2"},Ko=["disabled"],Qn=e.defineComponent({__name:"CommentInputZone",props:{isReply:{type:Boolean,required:!1,default:!1},isReplyModifiers:{}},emits:e.mergeModels(["sendComment"],["update:isReply"]),setup(t,{emit:n}){const s=e.useModel(t,"isReply"),o=e.ref(""),r=n,l=()=>{o.value.trim()&&(r("sendComment",o.value),o.value="")},i=a=>{(a.ctrlKey||a.metaKey)&&a.key==="Enter"&&(a.preventDefault(),l())};return(a,c)=>(e.openBlock(),e.createElementBlock("div",zo,[e.createElementVNode("div",jo,[e.createElementVNode("span",Ho,[e.createVNode(e.unref(Jt),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Uo,[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[0]||(c[0]=d=>o.value=d),onKeydown:i,placeholder:"Add a comment...",class:"w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"},null,544),[[e.vModelText,o.value]]),e.createElementVNode("div",qo,[c[4]||(c[4]=e.createElementVNode("span",{class:"text-xs text-gray-500 hidden sm:inline"},"Cmd+Enter to send",-1)),e.createElementVNode("div",Wo,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:c[1]||(c[1]=d=>s.value=!1)},[e.createVNode(e.unref(Zt),{class:"h-3 w-3"}),c[2]||(c[2]=e.createTextVNode(" Cancel ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!o.value.trim(),onClick:l},[e.createVNode(e.unref(Xn),{class:"h-3 w-3 mr-1"}),c[3]||(c[3]=e.createTextVNode(" Send ",-1))],8,Ko)])])])])]))}}),Go={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"},Jo=e.defineComponent({__name:"CommentDetails",props:{showMoreOptions:{type:Boolean,required:!0,default:!1},showMoreOptionsModifiers:{}},emits:e.mergeModels(["edit","delete"],["update:showMoreOptions"]),setup(t,{emit:n}){const s=n,o=e.useModel(t,"showMoreOptions"),r=e.ref(),l=e.ref(!0),i=async d=>{o.value&&r.value&&!r.value.contains(d.target)&&!l.value&&(o.value=!1),l.value=!1},a=()=>{o.value=!1,s("edit")},c=()=>{o.value=!1,s("delete")};return e.onMounted(()=>{document.addEventListener("click",i)}),e.onUnmounted(()=>{document.removeEventListener("click",i)}),(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:"absolute bg-white left-0 top-full transform min-w-max z-50",ref_key:"moreOptionsRef",ref:r},[e.createElementVNode("div",Go,[e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs hover:bg-gray-100 transition-colors duration-300",onClick:a},[e.createVNode(e.unref(Ro),{class:"h-3 w-3 mr-2"}),f[0]||(f[0]=e.createTextVNode(" Edit ",-1))]),e.createElementVNode("div",{class:"relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs text-red-600 hover:bg-gray-100 transition-colors duration-300",onClick:c},[e.createVNode(e.unref(Gt),{class:"h-3 w-3 mr-2"}),f[1]||(f[1]=e.createTextVNode(" Delete ",-1))])])],512))}}),Zo={class:"space-y-2"},Yo={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},Xo={class:"flex-1 min-w-0 space-y-1 relative"},Qo={class:"flex items-center gap-2"},Vo={class:"font-medium text-xs"},er={class:"text-xs text-gray-500"},tr={key:0,class:"text-xs text-gray-700 leading-relaxed"},nr={class:"flex justify-between text-xs"},sr={class:"flex items-center gap-2"},or={key:0,class:"flex gap-2"},rr=["disabled"],ir={key:0,class:"ml-8 space-y-1 border-l-2 border-gray-100 pl-3"},lr=e.defineComponent({__name:"CommentItem",props:{comment:{},isInside:{type:Boolean}},emits:["like","reply","edit","delete"],setup(t,{emit:n}){const s=n,o=t,r=e.ref(o.comment.text),l=e.ref("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"),i=e.ref("w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"),a=e.ref(!1),c=e.ref(!1),d=e.ref(!1),f=e.ref(!1),p=N=>{const C=new Date,A=Math.floor((C.getTime()-N.getTime())/(1e3*60*60));return A<1?`${Math.floor((C.getTime()-N.getTime())/6e4)}m`:A<24?`${A}h`:`${Math.floor(A/24)}d`},m=()=>{f.value=!f.value,f.value?s("like",o.comment.id,"add"):s("like",o.comment.id,"delete")},E=()=>{s("edit",o.comment.id,r.value),d.value=!1},w=(N,C)=>{s("like",N,C)},_=(N,C)=>{s("edit",N,C)};return(N,C)=>{const A=e.resolveComponent("CommentItem",!0);return e.openBlock(),e.createElementBlock("div",Zo,[e.createElementVNode("div",{class:e.normalizeClass(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative",d.value?"bg-gray-50":""])},[e.createElementVNode("span",Yo,[e.createVNode(e.unref(Jt),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("div",Xo,[e.createElementVNode("div",Qo,[e.createElementVNode("span",Vo,e.toDisplayString(N.comment?.author),1),e.createElementVNode("span",er,e.toDisplayString(p(N.comment?.createdAt)),1)]),d.value?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:1,"onUpdate:modelValue":C[0]||(C[0]=B=>r.value=B),class:e.normalizeClass(d.value?i.value:l.value)},null,2)),[[e.vModelText,r.value]]):(e.openBlock(),e.createElementBlock("p",tr,e.toDisplayString(N.comment?.text),1)),e.createElementVNode("div",nr,[e.createElementVNode("div",sr,[e.createElementVNode("button",{class:e.normalizeClass(["flex items-center gap-1",f.value?"text-blue-600":"text-gray-500 hover:text-blue-600 transition-colors"]),onClick:C[1]||(C[1]=B=>m())},[e.createVNode(e.unref(Oo),{class:e.normalizeClass(["h-3 w-3",f.value?"fill-blue-600":""])},null,8,["class"]),e.createTextVNode(" "+e.toDisplayString(N.comment?.likes),1)],2),N.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"text-gray-500 hover:text-blue-600 transition-colors",onClick:C[2]||(C[2]=B=>c.value=!0)},[e.createVNode(e.unref(Mo),{class:"h-3 w-3"})])),e.createElementVNode("button",{class:"text-gray-400 hover:text-gray-600 transition-colors opacity-0 group-hover:opacity-100",type:"button",onClick:C[3]||(C[3]=B=>a.value=!0)},[e.createVNode(e.unref($o),{class:"h-3 w-3"})])]),d.value?(e.openBlock(),e.createElementBlock("div",or,[e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",onClick:C[4]||(C[4]=B=>d.value=!1)},[e.createVNode(e.unref(Zt),{class:"h-3 w-3"}),C[11]||(C[11]=e.createTextVNode(" Cancel ",-1))]),e.createElementVNode("button",{class:"inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",disabled:!r.value.trim(),onClick:C[5]||(C[5]=B=>E())},[e.createVNode(e.unref(Xn),{class:"h-3 w-3 mr-1"}),C[12]||(C[12]=e.createTextVNode(" Send ",-1))],8,rr)])):e.createCommentVNode("",!0)])]),a.value?(e.openBlock(),e.createBlock(Jo,{key:0,showMoreOptions:a.value,"onUpdate:showMoreOptions":C[6]||(C[6]=B=>a.value=B),onEdit:C[7]||(C[7]=B=>d.value=!0),onDelete:C[8]||(C[8]=B=>N.$emit("delete",N.comment?.id)),comment:N.comment},null,8,["showMoreOptions","comment"])):e.createCommentVNode("",!0)],2),N.isInside?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ir,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.comment?.replies,B=>(e.openBlock(),e.createBlock(A,{key:B.id,comment:B,isInside:!0,onDelete:D=>N.$emit("delete",B.id),onLike:w,onEdit:_},null,8,["comment","onDelete"]))),128)),c.value&&!N.isInside?(e.openBlock(),e.createBlock(Qn,{key:0,onSendComment:C[9]||(C[9]=B=>N.$emit("reply",N.comment?.id,B)),isReply:c.value,"onUpdate:isReply":C[10]||(C[10]=B=>c.value=B)},null,8,["isReply"])):e.createCommentVNode("",!0)]))])}}}),ar=["id"],cr={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},yt=e.defineComponent({__name:"CommentsWidget",props:{title:{},comments:{},maxHeight:{},onAddComment:{type:Function},onReply:{type:Function},onLike:{type:Function},onDelete:{type:Function},onEdit:{type:Function},id:{},className:{},style:{}},emits:["add","reply","like","delete","edit"],setup(t,{emit:n}){const s=t,o=n,r=e.ref(s.comments??[]);async function l(){if(!s.id)return;const p=await fetch(`/api/widget/comment/${s.id}`).then(m=>m.json());r.value=p.rows.map(m=>({id:m.communication_id,author:m.username,text:m.body,createdAt:new Date(m.cdate)}))}r.value.length===0&&l();const i=async p=>{s.onAddComment?s.onAddComment(p):s.id&&(await fetch(`/api/widget/comment/${s.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:p})}),await l()),o("add",p)},a=(p,m)=>{s?.onLike?.(p,m),o("like",p,m)},c=(p,m)=>{s.onReply?.(p,m),o("reply",p,m)},d=async(p,m)=>{s.onEdit?s.onEdit(p,m):s.id&&(await fetch(`/api/widget/comment/${s.id}/${p}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({body:m})}),await l()),o("edit",p,m)},f=async p=>{s.onDelete?s.onDelete(p):s.id&&(await fetch(`/api/widget/comment/${s.id}/${p}`,{method:"DELETE"}),await l()),o("delete",p)};return(p,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mx-auto font-sans",p.className]),id:p.id,style:e.normalizeStyle(p.style)},[p.title?(e.openBlock(),e.createElementBlock("h3",cr,e.toDisplayString(p.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([p.maxHeight?"overflow-y-auto":"","space-y-3"]),style:e.normalizeStyle({maxHeight:p.maxHeight+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,E=>(e.openBlock(),e.createBlock(lr,{key:E.id,comment:E,onReply:c,onLike:a,onDelete:m[0]||(m[0]=w=>f(w)),onEdit:d},null,8,["comment"]))),128))],6),e.createVNode(Qn,{onSendComment:m[1]||(m[1]=E=>i(E))})],14,ar))}}),Vn=new Map([["file",{name:"File",color:"bg-green-100 text-green-700 border-green-200",icon:Ke}],["post",{name:"Post",color:"bg-blue-100 text-blue-700 border-blue-200",icon:Lo}],["user",{name:"User",color:"bg-purple-100 text-purple-700 border-purple-200",icon:Po}],["custom",{name:"Custom",color:"bg-gray-100 text-gray-700 border-gray-200",icon:Io}]]),dr={class:"mx-auto font-sans"},pr={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},fr={class:"relative"},mr={class:"space-y-3"},hr={class:"flex-1 min-w-0 pb-2"},ur={class:"flex items-center gap-1.5 mb-1 mt-0.5"},gr={class:"relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200"},yr={class:"font-medium text-xs"},vr={class:"text-xs text-gray-500"},br={class:"space-y-1"},kr={class:"text-xs text-gray-700"},Er={class:"capitalize mr-1"},Nr={key:0,class:"inline-flex items-center rounded-full border py-0.5 font-semibold transition-colors text-foreground text-xs h-4 px-1 capitalize"},xr={key:0,class:"flex items-center gap-1 text-xs"},wr={key:0,class:"bg-red-50 text-red-600 px-1.5 py-0.5 rounded text-xs border border-red-200"},_r={key:2,class:"bg-green-50 text-green-600 px-1.5 py-0.5 rounded text-xs border border-green-200"},vt=e.defineComponent({__name:"HistoryWidget",props:{data:{},title:{},maxHeight:{},id:{},className:{},style:{}},setup(t){const n=t,s=e.ref(Array.isArray(n.data)?n.data:[]);s.value.length===0&&n.id&&o();async function o(){const r=await fetch(`/api/widget/history/${n.id}`);if(!r.ok)return{data:[]};const l=await r.json();l.rows.forEach(i=>{i.timestamp=new Date(i.cdate),i.id=i.entity_id,i.entityType=i.entity_type,i.entityId=i.entity_id,i.action=i.change_type,i.userId=i.change_user_id,i.userName=i.username,i.timestamp=new Date(i.cdate),i.description=i.username,i.status=i.username}),s.value=l.rows}return(r,l)=>(e.openBlock(),e.createElementBlock("div",dr,[r.title?(e.openBlock(),e.createElementBlock("h3",pr,e.toDisplayString(r.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(r.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:r.maxHeight+"px"})},[e.createElementVNode("div",fr,[l[0]||(l[0]=e.createElementVNode("div",{class:"absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200"},null,-1)),e.createElementVNode("div",mr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,i=>(e.openBlock(),e.createElementBlock("div",{class:"relative flex items-start gap-2",key:i?.id},[e.createElementVNode("div",{class:e.normalizeClass(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${e.unref(Vn).get(i?.entityType)?.color}`)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(Vn).get(i?.entityType)?.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",hr,[e.createElementVNode("div",ur,[e.createElementVNode("span",gr,[e.createVNode(e.unref(Jt),{class:"h-3 w-3 text-gray-500"})]),e.createElementVNode("span",yr,e.toDisplayString(i?.userName),1),e.createElementVNode("span",vr,e.toDisplayString(i?.timestamp.toLocaleDateString("ua-UA",{day:"2-digit",month:"2-digit",year:"numeric"}))+" "+e.toDisplayString(i?.timestamp.toLocaleTimeString("ua-UA",{hour:"2-digit",minute:"2-digit"})),1)]),e.createElementVNode("div",br,[e.createElementVNode("div",kr,[e.createElementVNode("span",Er,e.toDisplayString(i?.action),1),i?.entityId?(e.openBlock(),e.createElementBlock("span",Nr,e.toDisplayString(i?.entityId),1)):e.createCommentVNode("",!0)]),i?.changes?.[i?.entityId]?(e.openBlock(),e.createElementBlock("div",xr,[i?.changes?.[i?.entityId]?.old?(e.openBlock(),e.createElementBlock("span",wr,e.toDisplayString(i?.changes?.[i?.entityId]?.old),1)):e.createCommentVNode("",!0),i?.changes?.[i?.entityId]?.old&&i?.changes?.[i?.entityId]?.new?(e.openBlock(),e.createBlock(e.unref(So),{key:1,class:"h-2 w-2 text-gray-400"})):e.createCommentVNode("",!0),i?.changes?.[i?.entityId]?.new?(e.openBlock(),e.createElementBlock("span",_r,e.toDisplayString(i?.changes?.[i?.entityId]?.new),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])]))),128))])])],6)]))}}),Cr={key:0,class:"text-xl font-semibold"},Sr={class:"flex gap-1"},Br={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"},$r=e.defineComponent({__name:"FileHeader",props:e.mergeModels({title:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["onAddFile"],["update:modelValue"]),setup(t){const n=e.useModel(t,"modelValue"),s={active:"bg-blue-100 text-black hover:bg-blue-100",inactive:"bg-white text-black hover:bg-blue-100"};return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",o.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[o.title?(e.openBlock(),e.createElementBlock("h3",Cr,e.toDisplayString(o.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Sr,[e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",n.value==="list"?s.active:s.inactive]),onClick:r[0]||(r[0]=l=>n.value="list")},[e.createVNode(e.unref(Ao),{class:"h-4 w-4"})],2),e.createElementVNode("button",{class:e.normalizeClass(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2",n.value==="grid"?s.active:s.inactive]),onClick:r[1]||(r[1]=l=>n.value="grid")},[e.createVNode(e.unref(Do),{class:"h-4 w-4"})],2),e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:r[2]||(r[2]=l=>o.$emit("onAddFile",l))},null,32),e.createElementVNode("div",Br,[e.createVNode(e.unref(Yn),{class:"h-4 w-4"}),r[3]||(r[3]=e.createTextVNode(" Додати файл ",-1))])])])],2))}}),Yt={pdf:{color:"bg-red-100 text-red-700 border-red-200",icon:Ke,label:"PDF"},sketch:{color:"bg-gray-100 text-gray-700 border-gray-200",icon:To,label:"SKETCH"},mp4:{color:"bg-purple-100 text-purple-700 border-purple-200",icon:Fo,label:"VIDEO"},docx:{color:"bg-blue-100 text-blue-700 border-blue-200",icon:Ke,label:"DOC"},zip:{color:"bg-orange-100 text-orange-700 border-orange-200",icon:Co,label:"ARCHIVE"},png:{color:"bg-green-100 text-green-700 border-green-200",icon:Zn,label:"IMAGE"},jpg:{color:"bg-green-100 text-green-700 border-green-200",icon:Zn,label:"IMAGE"},xlsx:{color:"bg-emerald-100 text-emerald-700 border-emerald-200",icon:Ke,label:"EXCEL"},pptx:{color:"bg-amber-100 text-amber-700 border-amber-200",icon:Ke,label:"PPT"}};function es(t,n="en"){const s={month:"short",day:"numeric"};return new Intl.DateTimeFormat(n,s).format(t)}function ts(t){if(t===0)return"0 B";const n=1024,s=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(t)/Math.log(n));return`${parseFloat((t/Math.pow(n,o)).toFixed(1))} ${s[o]}`}const Tr={class:"space-y-0.5"},Dr=["onClick"],Or=["onClick"],Ir={class:"flex items-center gap-2"},Ar={class:"font-medium text-xs truncate hover:text-blue-600 cursor-pointer"},Mr={class:"hidden sm:block text-xs text-gray-500 w-16 text-right"},Lr={class:"hidden md:block text-xs text-gray-500 w-12 text-right"},Rr={class:"flex items-center gap-1"},Pr=["onClick"],Fr=["onClick"],zr=e.defineComponent({__name:"FileList",props:{files:{}},emits:["delete","download","openLightbox"],setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",Tr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.files,o=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",key:o.id,onClick:e.withModifiers(r=>n.$emit("openLightbox",o),["stop"])},[e.createElementVNode("div",{class:e.normalizeClass(["p-1 rounded",e.unref(Yt)[o?.ext]?.color||"bg-blue-100 text-blue-700 border-blue-200"])},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(Yt)[o?.ext]?.icon||e.unref(Yt).pdf.icon),{class:"h-3 w-3"}))],2),e.createElementVNode("div",{class:"flex-1 min-w-0",onClick:r=>n.$emit("openLightbox",o)},[e.createElementVNode("div",Ir,[e.createElementVNode("span",Ar,e.toDisplayString(o?.uploaded_name||o?.name),1)])],8,Or),e.createElementVNode("div",Mr,e.toDisplayString(e.unref(ts)(o.size)),1),e.createElementVNode("div",Lr,e.toDisplayString(e.unref(es)(o.createdAt)),1),e.createElementVNode("div",Rr,[e.createElementVNode("button",{onClick:e.withModifiers(r=>n.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity"},[e.createVNode(e.unref(Jn),{class:"h-3 w-3"})],8,Pr),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700",onClick:e.withModifiers(r=>n.$emit("delete",r,o?.file_id),["stop"])},[e.createVNode(e.unref(Gt),{class:"h-3 w-3"})],8,Fr)])],8,Dr))),128))]))}}),jr={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3"},Hr=["onClick"],Ur={class:"space-y-2"},qr={class:"flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden"},Wr=["src"],Kr={class:"space-y-1"},Gr=["title"],Jr={class:"text-xs text-gray-500 text-left"},Zr={class:"absolute top-2 right-1 flex items-center gap-1"},Yr=["onClick"],Xr=["onClick"],Qr=e.defineComponent({__name:"FileGrid",props:{files:{}},emits:["delete","download","openLightbox"],setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",jr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.files,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,onClick:e.withModifiers(r=>n.$emit("openLightbox",o),["stop"]),class:"group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"},[e.createElementVNode("div",Ur,[e.createElementVNode("div",qr,[o.ext==="png"||o.ext==="jpg"||o.ext==="jpeg"||o.ext==="gif"||o.ext==="svg"||o.ext==="webp"?(e.openBlock(),e.createElementBlock("img",{key:0,src:`/file/resize?filepath=${o?.file_path}&w=500`,alt:"file",class:"w-full h-full object-cover"},null,8,Wr)):(e.openBlock(),e.createBlock(e.unref(Ke),{key:1,class:"h-10 w-10 text-gray-500"}))]),e.createElementVNode("div",Kr,[e.createElementVNode("h3",{class:"font-medium text-xs leading-tight text-left",title:o.uploaded_name||o.name},e.toDisplayString(o.uploaded_name||o.name),9,Gr),e.createElementVNode("p",Jr,e.toDisplayString(e.unref(es)(o.createdAt))+", "+e.toDisplayString(e.unref(ts)(o.size)),1)])]),e.createElementVNode("div",Zr,[e.createElementVNode("button",{onClick:e.withModifiers(r=>n.$emit("download",o),["stop"]),class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-50"},[e.createVNode(e.unref(Jn),{class:"h-3 w-3"})],8,Yr),e.createElementVNode("button",{class:"ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700 hover:bg-red-50",onClick:e.withModifiers(r=>n.$emit("delete",r,o?.file_id),["stop"])},[e.createVNode(e.unref(Gt),{class:"h-3 w-3"})],8,Xr)])],8,Hr))),128))]))}}),Vr={class:"mx-auto font-sans"},ei={key:1},bt=e.defineComponent({__name:"FilesWidget",props:{title:{},view:{},files:{default:()=>[]},maxHeight:{},onAddFile:{},id:{},className:{},style:{},onDelete:{}},emits:["delete","add","openLightbox"],setup(t,{emit:n}){const s=t,o=e.ref(!1),r=e.ref(null),l=e.ref(!1),i=e.ref(0),a=e.ref(s.files??[]),c=n;a.value.length===0&&C();const d=(D,S)=>{r.value=S,o.value=!0},f=()=>{r.value&&(w(r.value),r.value=null,o.value=!1)},p=e.computed(()=>Array.isArray(a.value)?a.value.map(D=>D?.file_path):[]),m=D=>{const S=p.value.findIndex(U=>U===D.file_path);S!==-1&&(l.value=!0,i.value=S)},E=D=>{s.onAddFile?s.onAddFile(D):A(D),c("add",D)},w=D=>{s.onDelete?s.onDelete(D):B(D),c("delete",D)},_=D=>{const S=document.createElement("a");S.setAttribute("download",D?.uploaded_name||D?.name),S.href=D?.file_path||D?.path,S.click()},N=e.ref("list");async function C(){if(!s.id)return;const D=await fetch(`/api/widget/file/${s.id}`).then(S=>S.json());D.rows.forEach(S=>{S.timestamp=new Date(S.cdate),S.id=S.entity_id,S.entityType=S.entity_type,S.entityId=S.entity_id,S.entityType=S.entity_type,S.action=S.change_type,S.userId=S.change_user_id,S.userName=S.username,S.timestamp=new Date(S.cdate),S.description=S.username,S.status=S.username}),a.value=D.rows}const A=async D=>{if(!(!D.target||!D.target.files||D.target.files.length===0))try{await Promise.all(Array.from(D.target.files).map(async S=>{const U=new FormData;U.append("file",S);const J=`/api/widget/file/${s.id}`,M=await fetch(J,{method:"POST",body:U});if(!M.ok)throw new Error(`HTTP error! status: ${M.status}`);return S})),await C()}catch(S){console.error("Помилка при завантаженні файлів:",S)}},B=async D=>{try{await fetch(`/api/widget/file/${s.id}/${D}`,{method:"DELETE"}),await C()}catch(S){console.error(S)}};return(D,S)=>{const U=e.resolveComponent("MessageBox"),J=e.resolveComponent("Lightbox");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Vr,[e.createVNode($r,{modelValue:N.value,"onUpdate:modelValue":S[0]||(S[0]=M=>N.value=M),title:s.title,onOnAddFile:S[1]||(S[1]=M=>E(M))},null,8,["modelValue","title"]),a.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(D.maxHeight?"overflow-y-auto":""),style:e.normalizeStyle({maxHeight:D.maxHeight+"px"})},[N.value==="list"?(e.openBlock(),e.createBlock(zr,{key:0,onDelete:d,onDownload:_,onOpenLightbox:S[2]||(S[2]=M=>m(M)),files:a.value},null,8,["files"])):e.createCommentVNode("",!0),N.value==="grid"?(e.openBlock(),e.createBlock(Qr,{key:1,onDelete:d,onDownload:_,onOpenLightbox:S[3]||(S[3]=M=>m(M)),files:a.value},null,8,["files"])):e.createCommentVNode("",!0)],6)):(e.openBlock(),e.createElementBlock("div",ei,S[6]||(S[6]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Файлів не знайдено")],-1)])))]),e.createVNode(U,{modelValue:o.value,"onUpdate:modelValue":S[4]||(S[4]=M=>o.value=M),onConfirm:f,title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати"},null,8,["modelValue"]),e.createVNode(J,{modelValue:l.value,"onUpdate:modelValue":S[5]||(S[5]=M=>l.value=M),images:p.value,"start-index":i.value},null,8,["modelValue","images","start-index"])],64)}}}),ti={key:0,class:"image-wrapper h-full max-h-[400px]",id:"lightbox-gallery"},ni=["onClick"],si={key:0,rel:"noreferrer",class:"relative block h-full w-full"},oi=["src"],ri={key:0,class:"thumb-cover"},ii=e.defineComponent({__name:"GalleryContent",props:{title:{},items:{},columns:{},maxHeight:{},onAddImage:{type:Function},onDelete:{type:Function},id:{},className:{},style:{}},emits:["delete"],setup(t,{emit:n}){const s=n,o=e.ref(!1),r=e.ref(0),l=t,i=e.computed(()=>Array.isArray(l.items)?l.items.map(c=>c?.file_path):[]),a=c=>{const d=i.value.findIndex(f=>f===c.file_path);d!==-1&&(o.value=!0,r.value=d)};return(c,d)=>{const f=e.resolveComponent("Lightbox");return c.items?.length>=1?(e.openBlock(),e.createElementBlock("div",ti,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.items,(p,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["h-full w-full image"+m,"cursor-pointer bg-teal-500 rounded-[3px]"]),key:m,onClick:e.withModifiers(E=>a(p),["stop"])},[m<5?(e.openBlock(),e.createElementBlock("div",si,[e.createElementVNode("img",{src:`/file/resize?filepath=${p?.file_path}&w=500`,alt:"alt",height:"auto",width:"100%",class:e.normalizeClass(["object-cover h-full w-full bg-gray-200 rounded-[3px]",m===0?"max-h-[411px]":"max-h-[calc((411px-3px)/2)]"])},null,10,oi),m===4&&c.items?.length>5?(e.openBlock(),e.createElementBlock("div",ri," +"+e.toDisplayString(c.items?.length-5),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,ni))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Math.max(0,5-c.items.length),p=>(e.openBlock(),e.createElementBlock("div",{key:"empty-"+p,class:e.normalizeClass(["h-full w-full image"+(c.items.length+p-1),"bg-gray-300 rounded-[3px]"])},null,2))),128)),e.createVNode(f,{modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=p=>o.value=p),images:i.value,"start-index":r.value,delete:"true",download:"true",onDelete:d[1]||(d[1]=p=>s("delete",p))},null,8,["modelValue","images","start-index"])])):e.createCommentVNode("",!0)}}}),li={key:0,class:"text-xl font-semibold"},ai={class:"flex gap-1"},ci={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"},di=e.defineComponent({__name:"widgetHeader",props:{title:{}},emits:["onAddImage"],setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col sm:flex-row gap-3 mb-4",n.title?"justify-between sm:items-center":"justify-end sm:items-center"])},[n.title?(e.openBlock(),e.createElementBlock("h3",li,e.toDisplayString(n.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ai,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:s[0]||(s[0]=o=>n.$emit("onAddImage",o))},null,32),e.createElementVNode("div",ci,[e.createVNode(e.unref(Yn),{class:"h-4 w-4"}),s[1]||(s[1]=e.createTextVNode(" Додати зображення ",-1))])])])],2))}}),pi={class:"w-full mx-auto font-sans",ref:"containerRef"},fi={key:1},kt=e.defineComponent({__name:"GalleryWidget",props:{title:{},items:{default:()=>[]},columns:{},maxHeight:{},onAddImage:{},onDelete:{},id:{},className:{},style:{}},emits:["delete","add","openLightbox"],setup(t,{emit:n}){const s=t,o=e.ref(s.items??[]),r=n;o.value.length===0&&c();const l=f=>{s.onAddImage?s.onAddImage(f):a(f),r("add",f)},i=f=>{const p=o.value.find(m=>m.file_path===f)?.file_id;p&&(s.onDelete?s.onDelete(p):d(p))},a=async f=>{if(!(!f.target||!f.target.files||f.target.files.length===0))try{await Promise.all(Array.from(f.target.files).map(async p=>{const m=new FormData;m.append("file",p);const E=`/api/widget/file/${s.id}`,w=await fetch(E,{method:"POST",body:m});if(!w.ok)throw new Error(`HTTP error! status: ${w.status}`);return p})),await c()}catch(p){console.error("Помилка при завантаженні файлів:",p)}};async function c(){if(!s.id)return;const f=await fetch(`/api/widget/file/${s.id}`).then(p=>p.json());o.value=f.rows}const d=async f=>{try{await fetch(`/api/widget/file/${s.id}/${f}`,{method:"DELETE"}),await c()}catch(p){console.error(p)}};return(f,p)=>(e.openBlock(),e.createElementBlock("div",pi,[e.createVNode(di,{title:f.title,onOnAddImage:p[0]||(p[0]=m=>l(m))},null,8,["title"]),o.value.length>0?(e.openBlock(),e.createBlock(ii,{key:0,items:o.value,onDelete:p[1]||(p[1]=m=>i(m))},null,8,["items"])):(e.openBlock(),e.createElementBlock("div",fi,p[2]||(p[2]=[e.createElementVNode("div",{class:"flex items-center justify-center h-full"},[e.createElementVNode("p",{class:"text-gray-500 leading-[3]"},"Зображень не знайдено")],-1)])))],512))}}),mi={class:"text-value"},hi={class:"text-sm text-gray-900"},ui=e.defineComponent({__name:"TextValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{const o=n.item.value;return typeof o=="boolean"?o?"Так":"Ні":o==null?"—":String(o)});return(o,r)=>(e.openBlock(),e.createElementBlock("div",mi,[e.createElementVNode("span",hi,e.toDisplayString(s.value),1)]))}}),Le=(t,n)=>{const s=t.__vccOpts||t;for(const[o,r]of n)s[o]=r;return s},gi=Le(ui,[["__scopeId","data-v-c14550b7"]]),yi={class:"link-value"},vi=["href"],bi=Le(e.defineComponent({__name:"LinkValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{const o=String(n.item.value);try{const r=new URL(o);return r.hostname+r.pathname}catch{return o}});return(o,r)=>(e.openBlock(),e.createElementBlock("div",yi,[e.createElementVNode("a",{href:String(o.item.value),target:"_blank",rel:"noopener noreferrer",class:"text-blue-600 hover:text-blue-800 underline text-sm"},[e.createTextVNode(e.toDisplayString(s.value)+" ",1),r[0]||(r[0]=e.createElementVNode("i",{class:"fas fa-external-link-alt ml-1 text-xs"},null,-1))],8,vi)]))}}),[["__scopeId","data-v-e6eb07a6"]]),ki={class:"date-value"},Ei={class:"text-sm text-gray-900"},Ni=Le(e.defineComponent({__name:"DateValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{const o=n.item.value;if(o instanceof Date)return o.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"});if(typeof o=="string"){const r=new Date(o);if(!isNaN(r.getTime()))return r.toLocaleDateString("uk-UA",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})}return String(o)});return(o,r)=>(e.openBlock(),e.createElementBlock("div",ki,[e.createElementVNode("span",Ei,e.toDisplayString(s.value),1)]))}}),[["__scopeId","data-v-b9600618"]]),xi={class:"status-value"},wi={key:0,class:"mr-1"},_i=Le(e.defineComponent({__name:"StatusValue",props:{item:{}},setup(t){const n=t,s=e.computed(()=>{switch(String(n.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"bg-green-100 text-green-800";case"inactive":case"неактивний":case"pending":case"очікує":return"bg-yellow-100 text-yellow-800";case"error":case"помилка":case"failed":case"неуспішно":return"bg-red-100 text-red-800";case"draft":case"чернетка":return"bg-gray-100 text-gray-800";default:return"bg-blue-100 text-blue-800"}}),o=e.computed(()=>{switch(String(n.item.value).toLowerCase()){case"active":case"активний":case"успішно":case"success":return"fas fa-check-circle";case"inactive":case"неактивний":case"pending":case"очікує":return"fas fa-clock";case"error":case"помилка":case"failed":case"неуспішно":return"fas fa-exclamation-circle";case"draft":case"чернетка":return"fas fa-edit";default:return"fas fa-info-circle"}});return(r,l)=>(e.openBlock(),e.createElementBlock("div",xi,[e.createElementVNode("span",{class:e.normalizeClass(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",s.value])},[o.value?(e.openBlock(),e.createElementBlock("span",wi,[e.createElementVNode("i",{class:e.normalizeClass(o.value)},null,2)])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(String(r.item.value)),1)],2)]))}}),[["__scopeId","data-v-c72e0b01"]]),Ci={class:"custom-value"},Si={class:"text-sm text-gray-900"},Bi=Le(e.defineComponent({__name:"CustomValue",props:{item:{}},setup(t){return(n,s)=>(e.openBlock(),e.createElementBlock("div",Ci,[e.renderSlot(n.$slots,"default",{item:n.item,value:n.item.value},()=>[e.createElementVNode("span",Si,e.toDisplayString(String(n.item.value)),1)],!0)]))}}),[["__scopeId","data-v-11a73810"]]),$i=["id"],Ti={key:0,class:"text-xl font-semibold text-gray-900 mb-4"},Di={key:1,class:"overflow-x-auto"},Oi={class:"min-w-full divide-y divide-gray-200"},Ii={class:"bg-white divide-y divide-gray-200"},Ai={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Mi={class:"flex items-center gap-2"},Li=["title"],Ri={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},Pi={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},Fi={class:"flex items-start gap-3"},zi={key:0,class:"flex-shrink-0"},ji={class:"flex-1 min-w-0"},Hi={class:"flex items-center gap-2 mb-2"},Ui={class:"text-sm font-medium text-gray-900"},qi=["title"],Wi={key:3,class:"overflow-x-auto"},Ki={class:"min-w-full divide-y divide-gray-200"},Gi={class:"bg-white divide-y divide-gray-200"},Ji={class:"px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"},Zi={class:"flex items-center gap-2"},Yi=["title"],Xi={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-500"},Xt=Le(e.defineComponent({__name:"DescriptionListWidget",props:{title:{},items:{},view:{},id:{},className:{},style:{}},setup(t){const n=s=>{switch(s.type){case"link":return bi;case"date":return Ni;case"status":return _i;case"custom":return Bi;default:return gi}};return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["description-list-widget",s.className]),id:s.id,style:e.normalizeStyle(s.style)},[s.title?(e.openBlock(),e.createElementBlock("h3",Ti,e.toDisplayString(s.title),1)):e.createCommentVNode("",!0),s.view==="table"?(e.openBlock(),e.createElementBlock("div",Di,[e.createElementVNode("table",Oi,[e.createElementVNode("tbody",Ii,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,r=>(e.openBlock(),e.createElementBlock("tr",{key:r.id||r.label},[e.createElementVNode("td",Ai,[e.createElementVNode("div",Mi,[r.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([r.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:r.tooltip},o[0]||(o[0]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,Li)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",Ri,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(r)),{item:r},null,8,["item"]))])]))),128))])])])):s.view==="grid"?(e.openBlock(),e.createElementBlock("div",Pi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id||r.label,class:"description-item-card bg-white border border-gray-200 rounded-lg p-4"},[e.createElementVNode("div",Fi,[r.icon?(e.openBlock(),e.createElementBlock("div",zi,[e.createElementVNode("i",{class:e.normalizeClass([r.icon,"text-gray-500 text-lg"])},null,2)])):e.createCommentVNode("",!0),e.createElementVNode("div",ji,[e.createElementVNode("div",Hi,[e.createElementVNode("h4",Ui,e.toDisplayString(r.label),1),r.tooltip?(e.openBlock(),e.createElementBlock("span",{key:0,class:"text-gray-400 cursor-help",title:r.tooltip},o[1]||(o[1]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,qi)):e.createCommentVNode("",!0)]),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(r)),{item:r},null,8,["item"]))])])]))),128))])):(e.openBlock(),e.createElementBlock("div",Wi,[e.createElementVNode("table",Ki,[e.createElementVNode("tbody",Gi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,r=>(e.openBlock(),e.createElementBlock("tr",{key:r.id||r.label},[e.createElementVNode("td",Ji,[e.createElementVNode("div",Zi,[r.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([r.icon,"text-gray-500"])},null,2)):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.tooltip?(e.openBlock(),e.createElementBlock("span",{key:1,class:"text-gray-400 cursor-help",title:r.tooltip},o[2]||(o[2]=[e.createElementVNode("i",{class:"fas fa-info-circle text-xs"},null,-1)]),8,Yi)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",Xi,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n(r)),{item:r},null,8,["item"]))])]))),128))])])]))],14,$i))}}),[["__scopeId","data-v-36d43e50"]]),Qi={draw:{toolbar:{actions:{title:"Скасувати малювання",text:"Скасувати"},finish:{title:"Завершити малювання",text:"Завершити"},undo:{title:"Видалити останню точку",text:"Видалити останню"},buttons:{polyline:"Намалювати лінію",polygon:"Намалювати полігон",rectangle:"Намалювати прямокутник",circle:"Намалювати коло",marker:"Додати точку",circlemarker:"Додати маркер-коло"}},handlers:{circle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати коло",end:"Відпустіть кнопку миші, щоб завершити"},radius:"Радіус"},circlemarker:{tooltip:{start:"Клацніть на карту, щоб додати маркер-коло"}},marker:{tooltip:{start:"Клацніть на карту, щоб додати точку"}},polygon:{tooltip:{start:"Клацніть, щоб почати малювати полігон",cont:"Клацайте, щоб продовжити малювати полігон",end:"Клацніть першу точку, щоб завершити полігон"}},polyline:{error:"<strong>Помилка:</strong> лінія не може перетинатися сама з собою",tooltip:{start:"Клацніть, щоб почати малювати лінію",cont:"Клацайте, щоб продовжити малювати лінію",end:"Клацніть останню точку, щоб завершити лінію"}},rectangle:{tooltip:{start:"Клацніть і тягніть, щоб намалювати прямокутник",end:"Відпустіть кнопку миші, щоб завершити"}},simpleshape:{tooltip:{end:"Відпустіть кнопку миші, щоб завершити"}}}},edit:{toolbar:{actions:{save:{title:"Зберегти зміни",text:"Зберегти"},cancel:{title:"Скасувати редагування",text:"Скасувати"},clearAll:{title:"Очистити всі шари",text:"Очистити все"}},buttons:{edit:"Редагувати шари",editDisabled:"Немає шарів для редагування",remove:"Видалити шари",removeDisabled:"Немає шарів для видалення"}},handlers:{edit:{tooltip:{text:"Перетягніть маркери, щоб редагувати шари",subtext:"Натисніть 'Скасувати', щоб повернутися"}},remove:{tooltip:{text:"Клацніть на шари, щоб видалити їх"}}}}};function Vi(t){return t?t.type==="FeatureCollection"||t.type==="Feature"?t:t.geom?{type:"Feature",geometry:{type:t.geom.type,coordinates:t.geom.coordinates},properties:{}}:t.type&&t.coordinates?{type:"Feature",geometry:t,properties:{}}:null:null}const el={key:0,class:"absolute inset-0 z-[600] flex items-center justify-center pointer-events-none bg-black/20"},tl={class:"bg-black/70 text-white text-xs sm:text-sm px-4 py-2 rounded-md shadow"},nl={class:"bg-white/95 border border-gray-200 rounded-md shadow-xl px-3 py-2 max-w-[240px] text-[11px] sm:text-xs text-gray-900"},sl={class:"font-semibold truncate text-gray-900"},ol={class:"mt-1 space-y-0.5"},rl={class:"text-gray-500"},il={class:"text-gray-900 text-right break-all"},ll={key:3,class:"bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"},al={class:"flex items-center justify-between p-2 border-b"},cl={class:"p-2 border-b"},dl={class:"flex items-center"},pl=["value"],fl={class:"ml-2"},ml={class:"p-2"},hl={class:"flex items-center"},ul=["checked","onChange"],gl={class:"ml-2"},Et=e.defineComponent({__name:"MapWidget",props:{pattern:{},geom:{},id:{},tms:{},layers:{},title:{},height:{}},setup(t){function n(x){let g=x?.parent??null;for(;g;){const T=g.props?.view;if(T==="tabs"||T==="vertical-tabs")return!0;g=g.parent??null}return!1}const s=t,o=e.getCurrentInstance(),r=e.inject("vsCardTabsContext",!1),l=e.computed(()=>(typeof r=="boolean"?r:r.value)?!0:n(o)),i=o?.appContext.config.globalProperties?.$settings??{},a=(()=>{const x=Array.isArray(i.center)?i.center:[],g=Number(x[0]),T=Number(x[1]);return Number.isFinite(g)&&Number.isFinite(T)?[g,T]:[50,30]})(),c=o?.uid??Math.floor(Math.random()*1e4),d=e.ref(null);let f,p,m;const E=be(),w=e.ref(Object.keys(E)[0]),_=`base-layer-${c}`;let N;const C=e.ref(!0),A=e.ref(!1),B=e.ref(!1),D=e.ref(!1),S=e.ref("Використовуйте Ctrl + колесо миші для зміни масштабу");let U=null;const J=e.reactive({}),M=e.ref([]),L=e.computed(()=>M.value.map(x=>J[x]).filter(Boolean)),P=e.ref(null),z=e.computed(()=>P.value?.title||P.value?.layerId||""),h=e.computed(()=>P.value?Object.entries(P.value.properties??{}).filter(([x])=>typeof x=="string"&&x).slice(0,5).map(([x,g])=>({key:x,value:g==null?"—":String(g)})):[]),$=e.computed(()=>{if(!P.value)return;const x=12,g=P.value.point.x+x,T=P.value.point.y+x;return{left:`${g}px`,top:`${T}px`}}),k=e.computed(()=>{if(A.value)return"fixed inset-0 w-screen h-screen z-[9999] bg-white";const x=["relative","h-full"];return s.height||x.push("min-h-[300px]"),s.title&&!l.value&&x.push("pb-[3.25rem]"),x.join(" ")}),O=e.computed(()=>A.value||s.height==null?void 0:{height:typeof s.height=="number"?`${s.height}px`:String(s.height)}),G=e.computed(()=>{const x=["w-full","h-full"];return!s.height&&!A.value&&x.push("min-h-[300px]"),x.join(" ")});async function ve(){const x=I=>{if(!Array.from(document.styleSheets??[]).some(u=>u?.href?.includes(I))){const u=document.createElement("link");u.rel="stylesheet",u.href=I,document.head.appendChild(u)}};x("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"),x("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css");const g=I=>new Promise((W,u)=>{if(Array.from(document.scripts??[]).some(R=>R.src===I))return W();const b=document.createElement("script");b.src=I,b.async=!0,b.onload=()=>W(),b.onerror=R=>u(R),document.body.appendChild(b)});return await g("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").catch(()=>{}),await g("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js").catch(()=>{}),await g("https://unpkg.com/leaflet.vectorgrid@1.3.0/dist/Leaflet.VectorGrid.bundled.js").catch(()=>{}),window.L}function be(){const x=g=>g.map((T,I)=>{const W=typeof T?.key=="string"&&T.key?T.key:`b${I}`,u=qe(T?.url);return u?{...T,key:W,url:u}:null}).filter(T=>!!T).reduce((T,I)=>({...T,[I.key]:I}),{});return Array.isArray(i?.basemaps)&&i.basemaps.length?x(i.basemaps):x([{key:"topo100",url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png"},{key:"orto10",url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png"},{key:"osmb",url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png"}])}function qe(x){if(typeof x!="string"||!x.trim())return"";const g=x.trim();if(/^https?:\/\//i.test(g))return g;const T=window.location?.origin??"",I=g.replace(/^\/+/,"");return T?`${T}/${I}`:`/${I}`}function ke(x,g){return x?.id!=null?String(x.id):x?.url?`${x.url}-${g}`:`layer-${g}`}function xe(x){if(!x||typeof x!="object")return;const g={},T=y=>{if(typeof y=="string"){const v=y.trim().replace(/,+$/,"");return v?/^-?\d+(\.\d+)?$/.test(v)?Number(v):v:void 0}return y},I=()=>(g.colorSet||(g.colorSet={}),g.colorSet),W=(y,v)=>{if(y==null||typeof v!="string")return;const b=v.trim().replace(/,+$/,"");b&&(I()[String(y)]=b)},u=y=>{const v=["color","fill","hex","valueColor","value_color"].map(R=>y[R]).find(R=>typeof R=="string"&&R.trim());if(!v)return!1;const b=["value","key","id","code","status"].map(R=>y[R]).find(R=>R!=null&&R!=="");return b==null?!1:(W(b,v),!0)};return Object.entries(x).forEach(([y,v])=>{if(y==="colorSet"&&v!=null){Array.isArray(v)?v.forEach(R=>{R&&(typeof R=="object"&&u(R)||typeof R=="object"&&Object.entries(R).forEach(([q,re])=>W(q,typeof re=="string"?re:void 0)))}):typeof v=="object"&&(u(v)||Object.entries(v).forEach(([R,q])=>W(R,typeof q=="string"?q:void 0)));return}const b=T(v);if(b!==void 0){if(y==="border"){typeof b=="number"&&g.width==null?g.width=b:typeof b=="string"&&g.stroke==null&&(g.stroke=b);return}g[y]=b}}),g.colorSet&&!Object.keys(g.colorSet).length&&delete g.colorSet,Object.keys(g).length?g:void 0}function Ce(){if(Array.isArray(s.layers)&&s.layers.length)return s.layers.map((g,T)=>{if(!g)return null;const I=ke(g,T),W=g.url||(s.pattern&&I?s.pattern.replace("{{id}}",String(g.id??I)):"");return W?{...g,id:I,url:W,name:g.name||`Шар ${T+1}`,style:xe(g.style)}:null}).filter(g=>!!g?.url);const x=Array.isArray(s.tms)?s.tms:s.tms?.split(",");return x?x.map((g,T)=>{if(!g)return null;const I=typeof g=="string"?g.trim():`${g}`;if(!I)return null;const W=`legacy-${T}`,u=s.pattern?s.pattern.replace("{{id}}",I):I;return{id:W,name:`Шар ${T+1}`,url:u,visible:!0}}).filter(g=>!!g?.url):[]}function Fn(x){const g=(x?.url??"").trim();if(!g)return"";if(/^https?:\/\//i.test(g))return g;const T=window.location?.origin??"",I=g.replace(/^\/+/,"");return`${T}/${I}`}function Me(x){const g=x.style??{};return T=>{const I=g.colorAttr,W=g.colorSet??{},u=typeof I=="string"?W?.[T?.[I]]??g.color??"#3388ff":g.color??"#3388ff",y=g.stroke??u;return{weight:g.width??1,color:y,opacity:g.opacity??1,fill:g.type?g.type!=="polyline":!0,fillColor:u,fillOpacity:g.opacity??.5}}}function qt(x,g){if(!f||!g?.latlng)return;const T=f.latLngToContainerPoint(g.latlng),I=g.layer?.properties??g.properties??{};P.value={layerId:x.id,title:I?.name??x.name,properties:I,point:{x:T.x,y:T.y}}}function mt(x){x&&P.value?.layerId!==x||(P.value=null)}e.onMounted(async()=>{m=await ve(),m.drawLocal={...Qi};const x=typeof i?.zoom=="number"&&Number.isFinite(i.zoom)?i.zoom:10;f=m.map(d.value,{zoomControl:!1}).setView(a,x),m.control.zoom({position:"bottomright"}).addTo(f),N=m.tileLayer(E[w.value].url,{maxZoom:19}).addTo(f),p=new m.FeatureGroup().addTo(f),ht(),U=Kn();const g=Vi(s.geom);if(g){const T=[];m.geoJSON(g).eachLayer(I=>T.push(I)),T.length&&p.addLayer(T[0]),Wn()}if(d.value){const T=new ResizeObserver(()=>{f&&f.invalidateSize()});T.observe(d.value),e.onBeforeUnmount(()=>{T.disconnect()})}}),e.onBeforeUnmount(()=>{U?.(),zn()});function Wt(x){const g=(x?.service??"").toLowerCase();if(g)return g;const T=(x?.url??"").toLowerCase();return/\.(mvt|pbf|vtile|vmt)(\?|$)/.test(T)?"vtile":/service=wms|request=getmap|\/(wms|ows)(\?|$)/.test(T)?"wms":""}function Kt(x){const g=Wt(x),T=Fn(x),W={opacity:x?.style?.opacity??1,...x.options??{}},u=!!(x?.style&&Object.keys(x.style).length),y=x.sourceLayer||x.layer||x.service_layer||x.service_key||x.map_key||x.dataset?.layer||x.id;if(g==="vtile"){const v=m?.vectorGrid;if(v?.protobuf&&(u||!m?.maplibreGL)){const b=v.protobuf(T,{interactive:!0,maxNativeZoom:x.maxzoom??19,vectorTileLayerStyles:{[y??"default"]:Me(x),default:Me(x)}});return b.on?.("mouseover",R=>qt(x,R)),b.on?.("mousemove",R=>qt(x,R)),b.on?.("mouseout",()=>mt(x.id)),b}if(!u&&m?.maplibreGL&&window?.maplibregl){const b=T;return m.maplibreGL({style:b,interactive:!1,pane:"overlayPane"})}}if(g==="wms"&&m?.tileLayer?.wms){const v={...x.params??{}};return y&&!v.layers&&(v.layers=y),v.format==null&&(v.format="image/png"),v.transparent==null&&(v.transparent=!0),m.tileLayer.wms(T,{...v,...W})}return m.tileLayer(T,W)}function zn(){Object.values(J).forEach(x=>{x.layer&&f?.hasLayer(x.layer)&&f.removeLayer(x.layer),x.layer=null}),mt()}function jn(){f&&M.value.forEach(x=>{const g=J[x];g&&(g.visible?(g.layer||(g.layer=Kt(g.config)),g.layer&&!f.hasLayer(g.layer)&&g.layer.addTo(f)):g.layer&&f.hasLayer(g.layer)&&f.removeLayer(g.layer))})}function ht(){const x=Ce(),g=[],T=new Set;x.forEach((I,W)=>{const u=ke(I,W);g.push(u),T.add(u);const y=J[u];y&&y.config.url!==I.url&&(y.layer&&f?.hasLayer(y.layer)&&f.removeLayer(y.layer),y.layer=null);const v=y?.visible??I.visible??I.overlay!==!1;J[u]={id:u,config:{...I,id:u},visible:v,layer:y?.layer??null}}),Object.keys(J).forEach(I=>{if(!T.has(I)){const W=J[I];W?.layer&&f?.hasLayer(W.layer)&&f.removeLayer(W.layer),delete J[I]}}),M.value=g,f&&jn()}function Hn(x,g){const T=typeof g=="boolean"?g:g.target?.checked;if(T==null)return;const I=J[x];I&&(I.visible=T,I.visible?(I.layer||(I.layer=Kt(I.config)),I.layer&&!f.hasLayer(I.layer)&&I.layer.addTo(f)):I.layer&&f.hasLayer(I.layer)&&(f.removeLayer(I.layer),mt(x)))}function Se(x){N&&N.removeFrom(f);const g=E[x];N=m.tileLayer(g.url,g.options||{}).addTo(f),N.bringToBack(),w.value=x}function Un(){Se(w.value)}function qn(){C.value?p.addTo(f):p.removeFrom(f)}function Wn(x=30){const g=p.getLayers();if(!g.length)return;const I=m.featureGroup(g).getBounds();I&&I.isValid()&&f.fitBounds(I,{padding:[x,x],maxZoom:16})}function Kn(){if(!f||!d.value)return null;f.scrollWheelZoom.disable(),S.value="Використовуйте Ctrl + колесо миші для зміни масштабу";let x;const g=(I=1500)=>{D.value=!0,x&&clearTimeout(x),x=window.setTimeout(()=>D.value=!1,I)},T=I=>{if(!(I.ctrlKey||I.metaKey||I.shiftKey)){g(),f.scrollWheelZoom.disable();return}I.preventDefault(),I.stopPropagation(),f.scrollWheelZoom.enable(),D.value=!1,x&&clearTimeout(x),x=window.setTimeout(()=>f.scrollWheelZoom.disable(),200)};return d.value.addEventListener("wheel",T,{passive:!1}),()=>{f.scrollWheelZoom.enable(),d.value?.removeEventListener("wheel",T),x&&clearTimeout(x),D.value=!1}}return e.watch(A,()=>setTimeout(()=>f?.invalidateSize(),50)),e.watch(()=>s.layers,()=>ht(),{deep:!0}),e.watch(()=>[s.tms,s.pattern],()=>{s.layers?.length||ht()}),(x,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value),style:e.normalizeStyle(O.value)},[e.createElementVNode("div",{ref_key:"mapContainer",ref:d,class:e.normalizeClass(G.value)},null,2),D.value?(e.openBlock(),e.createElementBlock("div",el,[e.createElementVNode("div",tl,e.toDisplayString(S.value),1)])):e.createCommentVNode("",!0),h.value.length?(e.openBlock(),e.createElementBlock("div",{key:1,class:"absolute z-[550] pointer-events-none",style:e.normalizeStyle($.value)},[e.createElementVNode("div",nl,[e.createElementVNode("div",sl,e.toDisplayString(z.value),1),e.createElementVNode("dl",ol,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,T=>(e.openBlock(),e.createElementBlock("div",{key:`${T.key}-${T.value}`,class:"flex justify-between gap-2"},[e.createElementVNode("dt",rl,e.toDisplayString(T.key),1),e.createElementVNode("dd",il,e.toDisplayString(T.value),1)]))),128))])])],4)):e.createCommentVNode("",!0),B.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:2,onClick:g[0]||(g[0]=T=>B.value=!0),class:"z-[500] bg-white absolute top-[10px] right-[10px] p-2 border rounded-lg cursor-pointer layers-button"}," Шари ")),B.value?(e.openBlock(),e.createElementBlock("div",ll,[e.createElementVNode("div",al,[g[6]||(g[6]=e.createElementVNode("div",null,"Шари",-1)),(e.openBlock(),e.createElementBlock("svg",{onClick:g[1]||(g[1]=T=>B.value=!1),xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-4 h-4"},g[5]||(g[5]=[e.createElementVNode("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),e.createElementVNode("path",{d:"M18 6l-12 12"},null,-1),e.createElementVNode("path",{d:"M6 6l12 12"},null,-1)])))]),e.createElementVNode("div",cl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E),(T,I)=>(e.openBlock(),e.createElementBlock("div",{key:`base-${I}`},[e.createElementVNode("label",dl,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:_,value:I,"onUpdate:modelValue":g[2]||(g[2]=W=>w.value=W),onChange:Un},null,40,pl),[[e.vModelRadio,w.value]]),e.createElementVNode("span",fl,e.toDisplayString(T.name||I),1)])]))),128))]),e.createElementVNode("div",ml,[e.createElementVNode("label",hl,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":g[3]||(g[3]=T=>C.value=T),onChange:qn},null,544),[[e.vModelCheckbox,C.value]]),g[7]||(g[7]=e.createElementVNode("span",{class:"ml-2"},"Геометрія/Межі",-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,T=>(e.openBlock(),e.createElementBlock("label",{class:"flex items-center",key:T.id},[e.createElementVNode("input",{type:"checkbox",checked:T.visible,onChange:I=>Hn(T.id,I)},null,40,ul),e.createElementVNode("span",gl,e.toDisplayString(T.config.name||T.id),1)]))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["absolute z-[500] bg-white p-2 border rounded-lg cursor-pointer fullscreen-button",A.value?"bottom-[100px] right-[7px]":"bottom-[150px] right-[7px]"]),onClick:g[4]||(g[4]=T=>A.value=!A.value)},g[8]||(g[8]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 8V4h4M20 8V4h-4M4 16v4h4m12-4v4h-4"})],-1)]),2)],6))}});/**
132
132
  * @vue/shared v3.5.18
133
133
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
134
134
  * @license MIT
@@ -148,4 +148,4 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
148
148
  * @vue/compiler-dom v3.5.18
149
149
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
150
150
  * @license MIT
151
- **/const Xs=Symbol(process.env.NODE_ENV!=="production"?"vModelRadio":""),Qs=Symbol(process.env.NODE_ENV!=="production"?"vModelCheckbox":""),Vs=Symbol(process.env.NODE_ENV!=="production"?"vModelText":""),eo=Symbol(process.env.NODE_ENV!=="production"?"vModelSelect":""),Ln=Symbol(process.env.NODE_ENV!=="production"?"vModelDynamic":""),to=Symbol(process.env.NODE_ENV!=="production"?"vOnModifiersGuard":""),no=Symbol(process.env.NODE_ENV!=="production"?"vOnKeysGuard":""),so=Symbol(process.env.NODE_ENV!=="production"?"vShow":""),Rn=Symbol(process.env.NODE_ENV!=="production"?"Transition":""),oo=Symbol(process.env.NODE_ENV!=="production"?"TransitionGroup":"");zl({[Xs]:"vModelRadio",[Qs]:"vModelCheckbox",[Vs]:"vModelText",[eo]:"vModelSelect",[Ln]:"vModelDynamic",[to]:"withModifiers",[no]:"withKeys",[so]:"vShow",[Rn]:"Transition",[oo]:"TransitionGroup"});let Qe;function gc(t,n=!1){return Qe||(Qe=document.createElement("div")),n?(Qe.innerHTML=`<div foo="${t.replace(/"/g,"&quot;")}">`,Qe.children[0].getAttribute("foo")):(Qe.innerHTML=t,Qe.textContent)}const yc={parseMode:"html",isVoidTag:Al,isNativeTag:t=>Dl(t)||Ol(t)||Il(t),isPreTag:t=>t==="pre",isIgnoreNewlineTag:t=>t==="pre"||t==="textarea",decodeEntities:gc,isBuiltInComponent:t=>{if(t==="Transition"||t==="transition")return Rn;if(t==="TransitionGroup"||t==="transition-group")return oo},getNamespace(t,n,s){let o=n?n.ns:s;if(n&&o===2)if(n.tag==="annotation-xml"){if(t==="svg")return 1;n.props.some(r=>r.type===6&&r.name==="encoding"&&r.value!=null&&(r.value.content==="text/html"||r.value.content==="application/xhtml+xml"))&&(o=0)}else/^m(?:[ions]|text)$/.test(n.tag)&&t!=="mglyph"&&t!=="malignmark"&&(o=0);else n&&o===1&&(n.tag==="foreignObject"||n.tag==="desc"||n.tag==="title")&&(o=0);if(o===0){if(t==="svg")return 1;if(t==="math")return 2}return o}},vc=t=>{t.type===1&&t.props.forEach((n,s)=>{n.type===6&&n.name==="style"&&n.value&&(t.props[s]={type:7,name:"bind",arg:F("style",!0,n.loc),exp:bc(n.value.content,n.loc),modifiers:[],loc:n.loc})})},bc=(t,n)=>{const s=Cl(t);return F(JSON.stringify(s),!1,n,3)};function ye(t,n){return K(t,n,process.env.NODE_ENV!=="production"?kc:void 0)}const kc={53:"v-html is missing expression.",54:"v-html will override element children.",55:"v-text is missing expression.",56:"v-text will override element children.",57:"v-model can only be used on <input>, <textarea> and <select> elements.",58:"v-model argument is not supported on plain elements.",59:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",60:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",61:"v-show is missing expression.",62:"<Transition> expects exactly one child element or component.",63:"Tags with side effect (<script> and <style>) are ignored in client component templates."},Ec=(t,n,s)=>{const{exp:o,loc:r}=t;return o||s.onError(ye(53,r)),n.children.length&&(s.onError(ye(54,r)),n.children.length=0),{props:[Q(F("innerHTML",!0,r),o||F("",!0))]}},Nc=(t,n,s)=>{const{exp:o,loc:r}=t;return o||s.onError(ye(55,r)),n.children.length&&(s.onError(ye(56,r)),n.children.length=0),{props:[Q(F("textContent",!0),o?he(o,s)>0?o:te(s.helperString(wt),[o],r):F("",!0))]}},xc=(t,n,s)=>{const o=Js(t,n,s);if(!o.props.length||n.tagType===1)return o;t.arg&&s.onError(ye(58,t.arg.loc));function r(){const a=ce(n,"bind");a&&Ie(a.arg,"value")&&s.onError(ye(60,a.loc))}const{tag:l}=n,i=s.isCustomElement(l);if(l==="input"||l==="textarea"||l==="select"||i){let a=Vs,c=!1;if(l==="input"||i){const d=lt(n,"type");if(d){if(d.type===7)a=Ln;else if(d.value)switch(d.value.content){case"radio":a=Xs;break;case"checkbox":a=Qs;break;case"file":c=!0,s.onError(ye(59,t.loc));break;default:process.env.NODE_ENV!=="production"&&r();break}}else Vl(n)?a=Ln:process.env.NODE_ENV!=="production"&&r()}else l==="select"?a=eo:process.env.NODE_ENV!=="production"&&r();c||(o.needRuntime=s.helper(a))}else s.onError(ye(57,t.loc));return o.props=o.props.filter(a=>!(a.key.type===4&&a.key.content==="modelValue")),o},wc=Ee("passive,once,capture"),_c=Ee("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Cc=Ee("left,right"),ro=Ee("onkeyup,onkeydown,onkeypress"),Sc=(t,n,s,o)=>{const r=[],l=[],i=[];for(let a=0;a<n.length;a++){const c=n[a].content;c==="native"&&Xe("COMPILER_V_ON_NATIVE",s,o)||wc(c)?i.push(c):Cc(c)?ae(t)?ro(t.content.toLowerCase())?r.push(c):l.push(c):(r.push(c),l.push(c)):_c(c)?l.push(c):r.push(c)}return{keyModifiers:r,nonKeyModifiers:l,eventOptionModifiers:i}},io=(t,n)=>ae(t)&&t.content.toLowerCase()==="onclick"?F(n,!0):t.type!==4?ge(["(",t,`) === "onClick" ? "${n}" : (`,t,")"]):t,Bc=(t,n,s)=>Ks(t,n,s,o=>{const{modifiers:r}=t;if(!r.length)return o;let{key:l,value:i}=o.props[0];const{keyModifiers:a,nonKeyModifiers:c,eventOptionModifiers:d}=Sc(l,r,s,t.loc);if(c.includes("right")&&(l=io(l,"onContextmenu")),c.includes("middle")&&(l=io(l,"onMouseup")),c.length&&(i=te(s.helper(to),[i,JSON.stringify(c)])),a.length&&(!ae(l)||ro(l.content.toLowerCase()))&&(i=te(s.helper(no),[i,JSON.stringify(a)])),d.length){const f=d.map(nn).join("");l=ae(l)?F(`${l.content}${f}`,!0):ge(["(",l,`) + "${f}"`])}return{props:[Q(l,i)]}}),$c=(t,n,s)=>{const{exp:o,loc:r}=t;return o||s.onError(ye(61,r)),{props:[],needRuntime:s.helper(so)}},Tc=(t,n)=>{if(t.type===1&&t.tagType===1&&n.isBuiltInComponent(t.tag)===Rn)return()=>{if(!t.children.length)return;lo(t)&&n.onError(ye(62,{start:t.children[0].loc.start,end:t.children[t.children.length-1].loc.end,source:""}));const o=t.children[0];if(o.type===1)for(const r of o.props)r.type===7&&r.name==="show"&&t.props.push({type:6,name:"persisted",nameLoc:t.loc,value:void 0,loc:t.loc})}};function lo(t){const n=t.children=t.children.filter(o=>o.type!==3&&!(o.type===2&&!o.content.trim())),s=n[0];return n.length!==1||s.type===11||s.type===9&&s.branches.some(lo)}const Dc=(t,n)=>{t.type===1&&t.tagType===0&&(t.tag==="script"||t.tag==="style")&&(process.env.NODE_ENV!=="production"&&n.onError(ye(63,t.loc)),n.removeNode())};function Oc(t,n){return t==="template"?!0:t in ao?ao[t].has(n):n in co?co[n].has(t):!(t in po&&po[t].has(n)||n in fo&&fo[n].has(t))}const Ve=new Set(["h1","h2","h3","h4","h5","h6"]),He=new Set([]),ao={head:new Set(["base","basefront","bgsound","link","meta","title","noscript","noframes","style","script","template"]),optgroup:new Set(["option"]),select:new Set(["optgroup","option","hr"]),table:new Set(["caption","colgroup","tbody","tfoot","thead"]),tr:new Set(["td","th"]),colgroup:new Set(["col"]),tbody:new Set(["tr"]),thead:new Set(["tr"]),tfoot:new Set(["tr"]),script:He,iframe:He,option:He,textarea:He,style:He,title:He},co={html:He,body:new Set(["html"]),head:new Set(["html"]),td:new Set(["tr"]),colgroup:new Set(["table"]),caption:new Set(["table"]),tbody:new Set(["table"]),tfoot:new Set(["table"]),col:new Set(["colgroup"]),th:new Set(["tr"]),thead:new Set(["table"]),tr:new Set(["tbody","thead","tfoot"]),dd:new Set(["dl","div"]),dt:new Set(["dl","div"]),figcaption:new Set(["figure"]),summary:new Set(["details"]),area:new Set(["map"])},po={p:new Set(["address","article","aside","blockquote","center","details","dialog","dir","div","dl","fieldset","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","menu","ol","p","pre","section","table","ul"]),svg:new Set(["b","blockquote","br","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","hr","i","img","li","menu","meta","ol","p","pre","ruby","s","small","span","strong","sub","sup","table","u","ul","var"])},fo={a:new Set(["a"]),button:new Set(["button"]),dd:new Set(["dd","dt"]),dt:new Set(["dd","dt"]),form:new Set(["form"]),li:new Set(["li"]),h1:Ve,h2:Ve,h3:Ve,h4:Ve,h5:Ve,h6:Ve},Ic=(t,n)=>{if(t.type===1&&t.tagType===0&&n.parent&&n.parent.type===1&&n.parent.tagType===0&&!Oc(n.parent.tag,t.tag)){const s=new SyntaxError(`<${t.tag}> cannot be child of <${n.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.`);s.loc=t.loc,n.onWarn(s)}},Ac=[vc,...process.env.NODE_ENV!=="production"?[Tc,Ic]:[]],Mc={cloak:uc,html:Ec,text:Nc,model:xc,on:Bc,show:$c};function Lc(t,n={}){return hc(t,$e({},yc,n,{nodeTransforms:[Dc,...Ac,...n.nodeTransforms||[]],directiveTransforms:$e({},Mc,n.directiveTransforms||{}),transformHoist:null}))}function Rc(t,n={}){const s=t.trim().startsWith("<")?t:`<span>${t}</span>`,{code:o}=Lc(s,{mode:"function"}),r=new Function("Vue",`${o}; return render;`)(Eo);return e.defineComponent({name:"DynamicFromString",props:n.props??{},emits:n.emits??[],setup(){return n.setup?.()??{}},render:r})}const Pn={};function Pc(t){return Pn[t]||(Pn[t]=Rc(t,{props:{row:{type:Object,default:void 0},value:{type:null,default:void 0},data:{type:Object,default:void 0},column:{type:Object,default:void 0}}})),Pn[t]}const Fc={class:"mt-4 flex flex-wrap items-center justify-between gap-3 text-sm text-gray-600"},zc={class:"flex items-center gap-2"},jc=["disabled"],Hc={class:"text-sm"},Uc=["disabled"],qc=e.defineComponent({__name:"TablePagination",props:{currentPage:{},totalPages:{},label:{}},setup(t){const n=t,s=e.computed(()=>n.currentPage<=1),o=e.computed(()=>n.currentPage>=n.totalPages);return(r,l)=>(e.openBlock(),e.createElementBlock("div",Fc,[e.createElementVNode("div",null,e.toDisplayString(r.label),1),e.createElementVNode("div",zc,[e.createElementVNode("button",{class:"rounded-md border border-gray-300 px-3 py-1 text-sm transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:text-gray-400",disabled:s.value,onClick:l[0]||(l[0]=i=>r.$emit("previous"))}," Назад ",8,jc),e.createElementVNode("span",Hc,"Сторінка "+e.toDisplayString(r.currentPage)+" з "+e.toDisplayString(r.totalPages),1),e.createElementVNode("button",{class:"rounded-md border border-gray-300 px-3 py-1 text-sm transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:text-gray-400",disabled:o.value,onClick:l[1]||(l[1]=i=>r.$emit("next"))}," Далі ",8,Uc)])]))}}),Wc={class:"relative inline-flex"},Kc=["aria-label"],Gc={class:"px-3 pb-2"},Jc={class:"px-3 pb-3 max-h-64 overflow-y-auto"},Zc=["onClick"],Yc={class:"truncate"},Xc={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Qc="inline-flex items-center justify-center size-8 rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-50",Vc=e.defineComponent({__name:"TableColumnSettings",props:{columns:{}},emits:["update:columns"],setup(t,{emit:n}){const s=t,o=n,r=e.useAttrs(),l=e.ref(!1),i=e.ref(""),a=e.ref([...s.columns]),c=e.ref(null),d=e.ref(null),f=e.ref(null),p=e.ref({top:0,left:0}),m=e.computed(()=>{if(!i.value)return a.value;const B=i.value.toLowerCase();return a.value.filter(D=>E(D).toLowerCase().includes(B))});e.watch(()=>s.columns,B=>{if(!B){a.value=[];return}const D=JSON.stringify(B),S=JSON.stringify(a.value);D!==S&&(a.value=[...B])},{deep:!0}),e.watch(a,B=>{o("update:columns",B)},{deep:!0});function E(B){return B.ua||B.label||B.name||"Колонка"}function w(B){const D=!B.hidden;D&&a.value.filter(S=>!S.hidden).length<=1||(B.hidden=D)}function _(){l.value=!l.value,l.value&&e.nextTick(()=>{f.value?.focus(),N()})}function N(){if(!c.value)return;const B=c.value.getBoundingClientRect();p.value={top:B.bottom+window.scrollY+6,left:B.left+window.scrollX-200}}function C(B){if(!l.value)return;const D=B.target;D&&(d.value?.contains(D)||c.value?.contains(D)||(l.value=!1))}function A(B){B.key==="Escape"&&(l.value=!1)}return e.onMounted(()=>{document.addEventListener("click",C,!0),document.addEventListener("keydown",A)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",C,!0),document.removeEventListener("keydown",A)}),(B,D)=>(e.openBlock(),e.createElementBlock("div",Wc,[e.createElementVNode("button",{ref_key:"buttonRef",ref:c,type:"button",onClick:_,class:e.normalizeClass([Qc,e.unref(r).class]),"aria-label":e.unref(r)["aria-label"]??"Налаштування колонок",title:"Налаштування колонок"},D[2]||(D[2]=[e.createStaticVNode('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-columns" height="18" width="18" aria-hidden="true"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 6h5.5"></path><path d="M4 10h5.5"></path><path d="M4 14h5.5"></path><path d="M4 18h5.5"></path><path d="M14.5 6h5.5"></path><path d="M14.5 10h5.5"></path><path d="M14.5 14h5.5"></path><path d="M14.5 18h5.5"></path></svg>',1)]),10,Kc),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"modalRef",ref:d,class:"fixed z-50 w-64 bg-white rounded-xl shadow-lg border border-gray-200 dark:bg-neutral-900 dark:border-neutral-700",style:e.normalizeStyle({top:`${p.value.top}px`,left:`${p.value.left}px`})},[D[5]||(D[5]=e.createElementVNode("div",{class:"flex items-center justify-between h-12 px-4 text-sm font-medium text-gray-800 dark:text-neutral-200"}," Налаштування колонок ",-1)),e.createElementVNode("div",Gc,[e.withDirectives(e.createElementVNode("input",{ref_key:"searchInput",ref:f,"onUpdate:modelValue":D[0]||(D[0]=S=>i.value=S),type:"text",class:"w-full rounded-md border border-gray-200 px-3 py-2 text-sm text-gray-800 placeholder:text-gray-500 focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500 dark:bg-neutral-800 dark:border-neutral-700 dark:text-neutral-200",placeholder:"Пошук колонок"},null,512),[[e.vModelText,i.value]])]),e.createElementVNode("div",Jc,[D[4]||(D[4]=e.createElementVNode("p",{class:"px-1 pb-2 text-xs text-gray-500 uppercase tracking-wide"},"Виберіть колонки",-1)),e.createElementVNode("ul",{class:"space-y-1",onClick:D[1]||(D[1]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,S=>(e.openBlock(),e.createElementBlock("li",{key:S.name,class:"flex items-center justify-between rounded-lg px-3 py-2 text-sm text-gray-800 hover:bg-gray-100 dark:text-neutral-200 dark:hover:bg-neutral-800 cursor-pointer",onClick:U=>w(S)},[e.createElementVNode("span",Yc,e.toDisplayString(E(S)),1),e.createElementVNode("span",{class:e.normalizeClass(["flex items-center justify-center size-4 rounded border border-gray-300 text-white",S.hidden?"bg-white text-transparent":"bg-blue-600 border-blue-600"])},[S.hidden?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("svg",Xc,D[3]||(D[3]=[e.createElementVNode("path",{d:"M20 6 9 17l-5-5"},null,-1)])))],2)],8,Zc))),128))])])],4)):e.createCommentVNode("",!0)]))]))}}),ed={class:"flex flex-col gap-4 mb-[15px]"},td={class:"flex flex-wrap justify-between items-center gap-4"},nd={class:"font-semibold text-[16px]"},sd={class:"flex flex-wrap items-center gap-4"},od={class:"relative"},rd={class:"ml-auto flex items-center gap-2"},id={class:"overflow-x-auto"},ld={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"},ad={class:"text-left font-medium text-gray-700"},cd={key:0,class:"py-2 pr-4 min-w-[80px] max-w-[120px] text-right"},dd={class:"divide-y divide-gray-200"},pd=["href"],fd={key:2},md={key:3},hd={key:0,class:"py-2 pr-4 text-right"},ud=["data-action-key"],gd=["onClick"],yd=["onClick"],vd={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},bd={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},kd={key:2,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Ed={key:3,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Nd={key:0},xd=["colspan"],mo=e.defineComponent({__name:"TableWidget",props:{name:{},label:{},component:{},path:{},slot:{},col:{},width:{},html:{},title:{},type:{},token:{},count:{},props:{},items:{}},setup(t){const n=e.getCurrentInstance(),s=e.ref([]),o=e.ref([]),r=new Map,l=t,i=e.ref([]),a=e.ref(""),c=e.ref(""),d=e.ref(""),f=e.ref(1),p=e.ref(10),m=e.ref(0),E=e.ref(0),w=e.ref("id"),_=e.ref("");let N=null,C=0;const A=e.ref(null);async function B(){const u=f.value,y=++C,v=new URLSearchParams,b=d.value.trim();b&&v.set("search",b),v.set("page",String(u)),v.set("limit",String(p.value));const R=`/api/data/${l.token}${v.toString()?`?${v.toString()}`:""}`;let q;try{const ut=await fetch(R);if(!ut.ok)throw new Error(`Request failed with status ${ut.status}`);q=await ut.json()}catch(ut){y===C&&(s.value=[],E.value=0,m.value=0),console.error("Failed to load table data",ut);return}if(y!==C)return;s.value=Array.isArray(q?.rows)?q.rows:[],o.value=z(q?.columns||[]),i.value=Array.isArray(q?.actions)?q.actions:[],a.value=q?.form,c.value=q?.addToken,w.value=typeof q?.pk=="string"&&q.pk?q.pk:w.value,typeof q?.form=="string"&&q.form&&(_.value=q.form.replace(/\.form$/,".table")),Se();const re=Number(q?.total??q?.count??q?.totalCount),Be=Number(q?.filtered??q?.filteredCount);m.value=Number.isFinite(re)&&re>0?re:s.value.length,E.value=Number.isFinite(Be)&&Be>0?Be:Math.max(s.value.length,m.value);const vo=Math.max(1,Math.ceil((E.value||s.value.length||1)/p.value));let We=u;typeof q?.page=="number"&&q.page>0&&(We=q.page),We>vo&&(We=vo),We<1&&(We=1);const hp=We!==u;if(f.value=We,hp&&E.value>0)return B()}const{$notify:D,$confirm:S,$form:U}=n?.appContext?.config?.globalProperties||{};async function J(u){await U({token:u.token}),B()}function M(){U({token:c.value})}function L(u){S({title:"Підтвердіть дію",type:"error",message:"Ви впевненні що бажаєте видалити даний рядок?",onConfirm:async()=>{const y=await fetch(`/api/table/${u.token}`,{method:"DELETE"});if(!y.ok){const{error:v}=await y.json();D({title:"Помилка",type:"warning",message:v});return}D({title:"Видаленно",message:"Успішно видалено"}),await B()}})}e.onMounted(async()=>{await B()});function P(u){return typeof u?.format=="string"?u.format.toLowerCase():""}function z(u){const y=new Map;o.value.forEach(b=>{b?.name&&y.set(b.name,!!b.hidden)});const v=u.map(b=>{const R=y.has(b.name)?y.get(b.name):!!b.hidden;return{...b,hidden:R}});return v.length&&!v.some(b=>!b.hidden)&&(v[0].hidden=!1),v}const h=e.computed(()=>{const u=o.value.filter(y=>!y.hidden);return u.length?u:o.value}),$=e.computed(()=>{const u=[],y=new Set;for(const v of i.value){if(typeof v=="string"){if(v==="view"){const b="row:view";y.has(b)||(u.push({key:b,type:"view",label:"Переглянути",scope:"row",handler:Kn}),y.add(b));continue}if(v==="edit"){const b="row:edit";y.has(b)||(u.push({key:b,type:"edit",label:"Редагувати",scope:"row",handler:Un}),y.add(b));continue}if(v==="delete"||v==="del"){const b="row:delete";y.has(b)||(u.push({key:b,type:"delete",label:"Видалити",scope:"row",handler:qn,variant:"danger"}),y.add(b));continue}if(v==="add"){const b="toolbar:add";y.has(b)||(u.push({key:b,type:"add",label:"Додати",scope:"toolbar"}),y.add(b))}continue}if(v&&typeof v=="object"){const b=String(v.name??v.type??"action"),R=String(v.label??v.title??b),q=v.scope==="toolbar"?"toolbar":"row",re=`${q}:${b}`;if(y.has(re))continue;y.add(re),u.push({key:re,type:b,label:R,scope:q,handler:q==="row"?Be=>Wn(v,Be):void 0,variant:v.variant==="danger"?"danger":"default",original:v})}}return u}),k=e.computed(()=>$.value.filter(u=>u.scope==="row"&&typeof u.handler=="function")),O=e.computed(()=>$.value.filter(u=>u.scope==="toolbar")),G=e.computed(()=>k.value.length>0),ve=e.computed(()=>O.value.some(u=>u.type==="add")),be=e.computed(()=>s.value),qe=e.computed(()=>{const u=E.value||be.value.length,y=Math.ceil(u/p.value);return y>0?y:1}),ke=e.computed(()=>{const u=be.value.length,y=E.value||u,v=m.value||y;return`Показано ${u} з ${y} (усього ${v})`});function xe(){f.value<qe.value&&(f.value+=1,B())}function Ce(){f.value>1&&(f.value-=1,B())}e.watch(o,u=>{u?.length&&(u.some(y=>!y.hidden)||(u[0].hidden=!1))},{deep:!0});function Fn(){N&&clearTimeout(N),Se(),N=setTimeout(()=>{f.value=1,B()},300)}function Me(u){const y=w.value||"id",v=u?.token??u?.[y]??u?.id;return v?String(v):""}function qt(u){const y=h.value[u],v=["py-2",...Wt(y)];u===0&&v.push("pl-4");const b=u===h.value.length-1&&!G.value;return v.push(b?"pr-4":"pr-5"),v.join(" ")}function mt(u,y){const v=["py-2",...Wt(y)];P(y)==="badge"&&v.push("center"),u===0&&v.push("pl-4");const b=u===h.value.length-1&&!G.value;return v.push(b?"pr-4":"pr-5"),v.join(" ")}function Wt(u){const y=[],v=re=>{if(re==null||re==="")return;const Be=Number(re);return Number.isFinite(Be)&&Be>0?`${Be}px`:String(re).replace(/\s+/g,"")},b=v(u?.width),R=v(u?.minWidth),q=v(u?.maxWidth);return b?(y.push(`min-w-[${b}]`,`max-w-[${b}]`),y):(y.push(`min-w-[${R??"100px"}]`),y.push(`max-w-[${q??"300px"}]`),y)}function Kt(u){if(!k.value.length)return!1;const y=w.value||"id";return!!(u?.token||u?.[y]||u?.id)}function zn(u){return A.value===Me(u)}function jn(u){const y=Me(u);y&&(A.value=A.value===y?null:y)}function ht(u,y){const v=Me(u);if(v){if(y){r.set(v,y);return}r.delete(v)}}function Hn(u){const y=Me(u),v=r.get(y);if(!v)return{};const b=v.getBoundingClientRect(),R=160;return{top:`${b.bottom+window.scrollY+8}px`,left:`${b.right+window.scrollX-R}px`,width:`${R}px`}}function Se(){A.value=null}function Un(u){Se(),J(u)}function qn(u){Se(),L(u)}function Wn(u,y){Se();const v=w.value||"id",b=u.isId?y?.[v]??y?.id:y?.token??y?.[v]??y?.id;if(!b){console.warn("Cannot execute action without identifier",u);return}if(u.form&&typeof U=="function"){U({token:u.form,payload:{id:b,row:y}});return}if(typeof u.api=="string"&&u.api){const R=u.api.endsWith("/")?u.api:`${u.api}/`;window.location.href=`${R}${b}`;return}y?.token&&typeof U=="function"&&U({token:y.token})}function Kn(u){Se();const y=_.value||(a.value?String(a.value).replace(/\.form$/,".table"):""),v=w.value||"id",b=u?.[v]??u?.id??u?.token;if(y&&b){const R=`/card/${y}/${b}`;window.location.href=R;return}if(u?.token&&typeof U=="function"){U({token:u.token,readonly:!0,mode:"view"});return}u?.token&&J(u)}function x(u){if(!A.value)return;const y=u.target;if(!y)return;const v=y.closest("[data-action-key]");v&&v.getAttribute("data-action-key")===A.value||Se()}e.onMounted(()=>{document.addEventListener("click",x,!0)}),e.onBeforeUnmount(()=>{N&&clearTimeout(N),document.removeEventListener("click",x,!0)});function g(u,y){const b=u?.[`${y.name}_text`];if(Array.isArray(b))return b.length?b.join(", "):"-";if(b!=null&&b!=="")return b;const R=u?.[y.name];return Array.isArray(R)?R.length?R.join(", "):"-":R??"-"}function T(u,y){const b=u?.[`${y.name}_data`];if(b&&typeof b=="object")return{text:b.text??b.label??b.name??b.title??"-",color:b.color,textColor:b.textColor};const R=u?.[`${y.name}_text`]??u?.[y.name];return{text:(Array.isArray(R)?R.join(", "):R)??"-"}}function I(u,y){const v=T(u,y);return v.color?{backgroundColor:v.color,color:v.textColor??"#ffffff"}:{}}function W(u,y){const v=P(y);if(v==="badge")return T(u,y).text;if(v==="select")return g(u,y);if(v==="slot")return"-";if(v==="text")return u?.[y.name]??"-";const b=u?.[`${y.name}_data`];return b!=null&&typeof b!="object"?b:u?.[`${y.name}_text`]??u?.[y.name]??"-"}return(u,y)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",ed,[e.createElementVNode("div",td,[e.createElementVNode("div",nd,e.toDisplayString(u.title),1)]),e.createElementVNode("div",sd,[e.createElementVNode("div",od,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[0]=v=>d.value=v),type:"text",class:"w-52 rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500",placeholder:"Пошук",onInput:Fn},null,544),[[e.vModelText,d.value]])]),e.createElementVNode("div",rd,[e.createVNode(Vc,{columns:o.value,"onUpdate:columns":y[1]||(y[1]=v=>o.value=v)},null,8,["columns"]),ve.value&&c.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:M,class:"inline-flex size-8 items-center justify-center rounded-lg bg-blue-500 text-white shadow-sm transition-colors hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",title:"Додати запис","aria-label":"Додати запис"},y[3]||(y[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"M12 5v14"})],-1)]))):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",id,[e.createElementVNode("table",ld,[e.createElementVNode("thead",ad,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(v,b)=>(e.openBlock(),e.createElementBlock("th",{key:v.name,class:e.normalizeClass(qt(b))},e.toDisplayString(v.ua),3))),128)),G.value?(e.openBlock(),e.createElementBlock("th",cd," Дії ")):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",dd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(be.value,v=>(e.openBlock(),e.createElementBlock("tr",{class:"bg-white odd:bg-gray-50",key:v.id??JSON.stringify(v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(b,R)=>(e.openBlock(),e.createElementBlock("td",{key:b.name,class:e.normalizeClass([mt(R,b),"truncate"])},[b.link?(e.openBlock(),e.createElementBlock("a",{key:0,href:b.link.replace("{{id}}",v.id),class:"font-medium cursor-pointer text-start text-wrap text-cyan-800 decoration-2 focus:outline-none focus:underline hover:text-cyan-700 hover:underline"},e.toDisplayString(W(v,b)),9,pd)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[P(b)==="slot"&&b.slot?.content?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(Pc)(b.slot.content)),{key:0,data:v,row:v,column:b,value:v?.[b.name]},null,8,["data","row","column","value"])):P(b)==="badge"?(e.openBlock(),e.createElementBlock("span",{key:1,class:"items-center px-2 py-1 rounded-full text-xs font-semibold text-center justify-center flex",style:e.normalizeStyle(I(v,b))},e.toDisplayString(T(v,b).text),5)):P(b)==="select"?(e.openBlock(),e.createElementBlock("span",fd,e.toDisplayString(g(v,b)),1)):(e.openBlock(),e.createElementBlock("span",md,e.toDisplayString(W(v,b)),1))],64))],2))),128)),G.value?(e.openBlock(),e.createElementBlock("td",hd,[Kt(v)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"relative inline-flex","data-action-key":Me(v),ref_for:!0,ref:b=>ht(v,b)},[e.createElementVNode("button",{type:"button",class:"inline-flex size-7 items-center justify-center rounded-md border border-gray-200 text-gray-500 transition-colors hover:bg-gray-50 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500",onClick:e.withModifiers(b=>jn(v),["stop"])},y[4]||(y[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"})],-1)]),8,gd),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[zn(v)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"fixed z-50 w-40 overflow-hidden rounded-lg border border-gray-200 bg-white py-1 shadow-lg",style:e.normalizeStyle(Hn(v)),onClick:y[2]||(y[2]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,b=>(e.openBlock(),e.createElementBlock("button",{key:b.type,type:"button",class:e.normalizeClass(["flex w-full items-center gap-2 px-4 py-2 text-sm transition-colors",b.variant==="danger"?"text-red-600 hover:bg-red-50":"text-gray-700 hover:bg-gray-50"]),onClick:R=>b.handler?.(v)},[b.type==="view"?(e.openBlock(),e.createElementBlock("svg",vd,y[5]||(y[5]=[e.createElementVNode("path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"12",r:"3"},null,-1)]))):b.type==="edit"?(e.openBlock(),e.createElementBlock("svg",bd,y[6]||(y[6]=[e.createElementVNode("path",{d:"M18 2a2.828 2.828 0 1 1 4 4L7 21l-4 1 1-4Z"},null,-1)]))):b.type==="delete"?(e.openBlock(),e.createElementBlock("svg",kd,y[7]||(y[7]=[e.createElementVNode("path",{d:"M3 6h18"},null,-1),e.createElementVNode("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"},null,-1),e.createElementVNode("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"},null,-1),e.createElementVNode("line",{x1:"10",x2:"10",y1:"11",y2:"17"},null,-1),e.createElementVNode("line",{x1:"14",x2:"14",y1:"11",y2:"17"},null,-1)]))):(e.openBlock(),e.createElementBlock("svg",Ed,y[8]||(y[8]=[e.createElementVNode("path",{d:"M12 8v8"},null,-1),e.createElementVNode("path",{d:"M8 12h8"},null,-1)]))),e.createTextVNode(" "+e.toDisplayString(b.label),1)],10,yd))),128))],4)):e.createCommentVNode("",!0)]))],8,ud)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))),128)),be.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("tr",Nd,[e.createElementVNode("td",{colspan:h.value.length+(G.value?1:0),class:"py-6 text-center text-gray-500"}," Немає записів для відображення ",8,xd)]))])])]),e.createVNode(qc,{"current-page":f.value,"total-pages":qe.value,label:ke.value,onPrevious:Ce,onNext:xe},null,8,["current-page","total-pages","label"])]))}}),wd={class:"p-[20px]"},_d={class:"flex gap-[6px] mb-5"},Cd={class:"vs-form-text relative bg-white rounded-lg flex-grow"},Sd={class:"grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6"},Bd={class:"mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200"},$d={class:"space-y-8"},Td={key:0},Dd={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Od=["onClick"],Id={class:"md:col-span-2"},Ad={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},Md={class:"text-sm text-gray-500 dark:text-neutral-500"},Ld={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},Rd=["checked","onChange"],Pd={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Fd={class:"md:col-span-2"},zd={class:"font-semibold text-gray-800 dark:text-neutral-200"},jd=["onClick"],Hd={class:"md:col-span-2"},Ud={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},qd={class:"text-sm text-gray-500 dark:text-neutral-500"},Wd={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},Kd=["checked","onChange"],Ht=e.defineComponent({__name:"GroupInterfaceWidget",props:{data:{},id:{}},setup(t){const n=t,s=e.ref(""),o=["view","add","edit","del"],r=e.ref({});e.onMounted(async()=>{const _=await(await fetch(`/api/access-group/${n.id}?tab=vs-group-interface`)).json();_.routes&&_.routes.forEach(N=>{r.value[N.path]=new Set(N.actions)})});const l=(w,_)=>r.value[w]?.has(_)??!1,i=(w,_)=>{r.value[w]||(r.value[w]=new Set),r.value[w].has(_)?r.value[w].delete(_):r.value[w].add(_)},a=(w,_)=>{w.forEach(N=>{N.path&&(r.value[N.path]||(r.value[N.path]=new Set),r.value[N.path].has(_)?r.value[N.path].delete(_):r.value[N.path].add(_))})},c=e.computed(()=>Object.entries(r.value).map(([w,_])=>({path:w,actions:Array.from(_)})).filter(w=>w.actions.length)),d=async()=>{await fetch(`/api/access-group/${n.id}?tab=vs-group-interface`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes:c.value})}),bo.notify({title:"Success!",message:"Permissions saved."})},f=()=>{r.value={}},p=w=>{if(!s.value.trim())return w;const _=s.value.toLowerCase();return w.filter(N=>N.ua.toLowerCase().includes(_)||N.path&&N.path.toLowerCase().includes(_))},m=e.computed(()=>p(n.data.routers.filter(w=>!w.menu))),E=e.computed(()=>n.data.routers.filter(w=>w.menu).map(w=>({...w,menu:p(w.menu||[])})).filter(w=>w.menu&&w.menu.length>0));return(w,_)=>(e.openBlock(),e.createElementBlock("div",wd,[e.createElementVNode("div",_d,[e.createElementVNode("div",Cd,[_[1]||(_[1]=e.createElementVNode("i",{class:"absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti"},null,-1)),e.withDirectives(e.createElementVNode("input",{type:"text",placeholder:"Пошук","onUpdate:modelValue":_[0]||(_[0]=N=>s.value=N),class:"bg-white h-[38px] text-sm py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 rounded-lg text-sm text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,512),[[e.vModelText,s.value]])]),e.createElementVNode("button",{onClick:f,class:"inline-flex items-center px-3 py-2 text-sm font-medium duration-300 bg-white border rounded-lg gap-x-2 hover:bg-gray-100"}," Скинути всі "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white"}," Зберегти ")]),e.createElementVNode("div",Sd,[_[2]||(_[2]=e.createElementVNode("div",{class:"self-center col-span-2"},[e.createElementVNode("h2",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Групи")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(N,C)=>e.createElementVNode("div",{class:"col-span-1 text-center",key:C},[e.createElementVNode("h3",Bd,e.toDisplayString(N),1)])),64))]),e.createElementVNode("div",$d,[m.value.length?(e.openBlock(),e.createElementBlock("div",Td,[e.createElementVNode("ul",Dd,[_[3]||(_[3]=e.createElementVNode("li",{class:"md:col-span-2"},[e.createElementVNode("h3",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Без категорії")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(N,C)=>e.createElementVNode("li",{key:C,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:A=>a(m.value,o[C])}," Toggle all ",8,Od)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(N,C)=>(e.openBlock(),e.createElementBlock("ul",{key:"uncat-"+C,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",Id,[e.createElementVNode("p",Ad,e.toDisplayString(N.ua),1),e.createElementVNode("p",Md,e.toDisplayString(N.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(A,B)=>e.createElementVNode("li",{key:B,class:"col-span-1"},[e.createElementVNode("div",Ld,[e.createElementVNode("input",{type:"checkbox",checked:l(N.path,A),onChange:D=>i(N.path,A),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,Rd)])])),64))]))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,(N,C)=>(e.openBlock(),e.createElementBlock("div",{key:C,class:"space-y-5"},[e.createElementVNode("ul",Pd,[e.createElementVNode("li",Fd,[e.createElementVNode("h3",zd,e.toDisplayString(N.ua),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(A,B)=>e.createElementVNode("li",{key:B,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:D=>a(N.menu,o[B])}," Toggle all ",8,jd)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.menu,(A,B)=>(e.openBlock(),e.createElementBlock("ul",{key:B,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",Hd,[e.createElementVNode("p",Ud,e.toDisplayString(A.ua),1),e.createElementVNode("p",qd,e.toDisplayString(A.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(D,S)=>e.createElementVNode("li",{key:S,class:"col-span-1"},[e.createElementVNode("div",Wd,[e.createElementVNode("input",{type:"checkbox",checked:l(A.path,D),onChange:U=>i(A.path,D),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,Kd)])])),64))]))),128))]))),128))])]))}}),Ue={"vs-widget-map":Et,"vs-widget-comments":yt,"vs-widget-history":vt,"vs-widget-gallery":kt,"vs-widget-file":bt,"vs-widget-list":Xt,"vs-widget-table":mo,"vs-group-interface":Ht};function ho(t){if(t==null)return null;const n=Number(t);return Number.isFinite(n)?Math.max(1,Math.min(12,Math.floor(n))):null}function uo(t){const n={...t};return Array.isArray(t.items)&&(n.items=t.items.map(s=>uo(s))),n}function Gd(t,n=12){if(!t.length)return;const s=[],o=[];t.forEach(c=>{const d=ho(c.col);d?(c.col=d,s.push({item:c,span:d})):o.push(c)});const r=s.reduce((c,d)=>c+d.span,0);let l=n-r;if(o.length===0)return;l<=0&&(l=n);const i=Math.max(1,Math.floor(l/o.length));let a=Math.max(0,l-i*o.length);o.forEach(c=>{let d=i;a>0&&(d+=1,a-=1),c.col=Math.max(1,Math.min(12,d))})}function Ut(t,n=12){if(!Array.isArray(t)||!t.length)return[];const s=t.map(o=>uo(o));return s.forEach(o=>{Array.isArray(o.items)&&o.items.length&&(o.items=Ut(o.items,12))}),Gd(s,n),s}function go(t){const n=ho(t);return n?n>=12?["md:col-span-12","lg:col-span-12"]:[`md:col-span-${n}`,`lg:col-span-${n}`]:[]}const Jd={class:"text-lg font-semibold text-gray-900"},Zd=["innerHTML"],Yd={key:0,class:"grid grid-cols-12 gap-4"},Xd={key:0,class:"mb-4 pb-2 border-b border-gray-200"},Qd={class:"text-lg font-semibold text-gray-900"},Vd=["innerHTML"],pt=e.defineComponent({__name:"CardItem",props:{items:{},type:{},col:{},data:{},html:{},title:{},hideTitle:{type:Boolean},styling:{},name:{},label:{},component:{},slot:{},id:{},className:{},style:{}},setup(t){const n=t,s=e.computed(()=>{if(!n.col)return{};const d=Math.max(1,Math.min(12,Number(n.col)));return{[`md:col-span-${d}`]:!0,[`lg:col-span-${d}`]:!0}}),o=e.computed(()=>Ut(n.items));function r(d){const f=["col-span-12"],p=go(d.col);return p.length&&f.push(...p),f}function l(d){return Ue[d]||d}function i(d,f){if(!d||typeof f!="string"||!f)return{found:!1,value:void 0};const p=f.split(".");let m=d;for(const E of p){if(m==null||typeof m!="object"&&!Array.isArray(m))return{found:!1,value:void 0};if(!(E in m))return{found:!1,value:void 0};m=m[E]}return{found:!0,value:m}}const a=function(d={}){const f={...d};return Object.entries(f).forEach(([p,m])=>{if(p!=="props"&&typeof m=="string"){const E=i(n.data,m);E.found&&(f[p]=E.value)}}),d.props&&typeof d.props=="object"&&Object.entries(d.props).forEach(([p,m])=>{if(typeof m=="string"){const E=i(n.data,m);f[p]=E.found?E.value:m}else f[p]=m}),delete f.props,f},c=e.computed(()=>{const d={};return n.col&&(d.col=n.col),d});return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([[s.value,d.styling?.classItem],"w-full bg-gray-50 rounded-lg p-4 col-span-12"])},[!d.hideTitle&&d.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["mb-4 pb-2 border-b border-gray-200",d.styling?.classItemTitle])},[e.createElementVNode("h3",Jd,e.toDisplayString(d.title),1)],2)):e.createCommentVNode("",!0),d.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:d.html,class:"text-gray-900 leading-relaxed"},null,8,Zd)):d.type?.includes("tabs")?(e.openBlock(),e.createBlock(ft,{key:2,view:d.type,panels:d.items,data:d.data,styling:d.styling},null,8,["view","panels","data","styling"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[o.value.length?(e.openBlock(),e.createElementBlock("div",Yd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(p,m)=>(e.openBlock(),e.createElementBlock("div",{key:p.name||p.component||m,class:e.normalizeClass(r(p))},[p.title||p.label?(e.openBlock(),e.createElementBlock("div",Xd,[e.createElementVNode("h3",Qd,e.toDisplayString(p.title||p.label),1)])):e.createCommentVNode("",!0),p.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:p.html,class:"text-gray-900 leading-relaxed"},null,8,Vd)):p.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(p.component)),e.mergeProps({key:2,ref_for:!0},{geom:d.data.geom,id:d.data.id,...c.value,...a(p),data:d.data},{class:"w-full"}),null,16)):e.renderSlot(d.$slots,"default",{key:3})],2))),128))])):e.createCommentVNode("",!0)],64))],2))}}),ep={class:"grid grid-cols-12 gap-[20px]"},tp={key:0,class:"col-span-4"},np=["innerHTML"],sp=["onClick"],op=["innerHTML"],rp={key:1,class:"flex w-full"},ip={class:"flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative"},lp=["onClick"],ap={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"},cp={class:"flex-1 p-4"},dp=["innerHTML"],pp={class:"grid grid-cols-12 gap-4"},fp={key:3,class:"w-full h-full"},ft=e.defineComponent({__name:"Card",props:{panels:{default:()=>[]},data:{default:()=>({})},view:{default:"plain"},styling:{},classWrapper:{default:""},classPanel:{},normalizeTabs:{type:Boolean,default:!0},backgroundClass:{},tabContentWrapperClass:{},tabPanelClass:{},id:{},className:{},style:{}},setup(t){const n=t;function s(){const h=typeof window<"u"?window:globalThis,$="__vsCardAnonymousCounter__",k=h[$]??0;return h[$]=k+1,k===0?"tab":`tab${k}`}const o=e.ref(0),r=e.ref([]);let l=!1;const i=e.ref(n.id??s());e.watch(()=>n.id,h=>{h&&(i.value=h)});const a=new Map,c=e.computed(()=>n.view==="tabs"||n.view==="vertical-tabs");e.provide("vsCardTabsContext",c);function d(h,$){const k=$?.path;return k?(a.has(k)||a.set(k,e.defineAsyncComponent(()=>import(k))),a.get(k)):typeof h=="string"&&Ue[h]?Ue[h]:$?.component&&Ue[$.component]?Ue[$.component]:$?.name&&Ue[$.name]?Ue[$.name]:h}function f(h){return h.forEach($=>{$.type&&($.view=$.type)}),r.value=h.filter($=>$.type==="pin"),h.filter($=>$.type!=="pin")}const p=e.computed(()=>{let h;return n.panels&&n.panels.length>0?h=n.normalizeTabs?f(n.panels):n.panels:n.data&&Array.isArray(n.data)&&(h=n.data.filter(k=>k.type.includes("tabs"))[0]?.items),Ut(h,12)}),m=e.computed(()=>i.value),E=e.computed(()=>{let h;return n.panels&&n.panels.length>0?h=n.normalizeTabs?f(n.panels):n.panels:n.data&&Array.isArray(n.data)&&(h=n.data),Ut(h,12)}),w=e.computed(()=>({[`view-${n.view}`]:!0}));function _(h,$){if(!h||typeof $!="string"||!$)return{found:!1,value:void 0};const k=$.split(".");let O=h;for(const G of k){if(O==null||typeof O!="object"&&!Array.isArray(O))return{found:!1,value:void 0};if(!(G in O))return{found:!1,value:void 0};O=O[G]}return{found:!0,value:O}}const N=h=>{const $={...h};return Object.entries($).forEach(([k,O])=>{if(k!=="props"&&typeof O=="string"){const G=_(n.data,O);G.found&&($[k]=G.value)}}),h.props&&typeof h.props=="object"&&Object.entries(h.props).forEach(([k,O])=>{if(typeof O=="string"){const G=_(n.data,O);$[k]=G.found?G.value:O}else $[k]=O}),delete $.props,n.data&&($.data=n.data),$};function C(h){const $=["col-span-12"],k=go(h.col);return k.length&&$.push(...k),$}const A=e.ref([]),B=e.ref([]),D=e.ref([]);function S(h,$){h&&h instanceof HTMLElement&&(A.value[$]=h)}function U(){B.value=A.value.map(h=>h.offsetWidth),D.value=A.value.map(h=>h.offsetLeft)}function J(){if(typeof window>"u")return null;const h=m.value;if(!h)return null;const k=new URL(window.location.href).searchParams.get(h);if(k===null)return null;const O=Number.parseInt(k,10);return Number.isNaN(O)?null:O}function M(h){if(typeof window>"u")return;const $=m.value;if(!$)return;const k=new URL(window.location.href);h<=0?k.searchParams.delete($):k.searchParams.set($,String(h));const O=window.history.state??{};window.history.replaceState(O,document.title,k)}function L(){if(l)return;const h=J();if(h===null||!p.value.length)return;const $=Math.min(Math.max(h,0),p.value.length-1);$!==h&&M($),$!==o.value&&(o.value=$),l=!0}function P(){l=!1,L()}let z=null;return e.onMounted(()=>{e.nextTick(()=>{L(),U()}),typeof window<"u"&&window.addEventListener("popstate",P),z=new ResizeObserver(()=>U()),z.observe(document.body)}),e.onBeforeUnmount(()=>{z?.disconnect(),typeof window<"u"&&window.removeEventListener("popstate",P)}),e.watch(o,h=>{e.nextTick(()=>{U()}),M(h)}),e.watch(p,()=>{l=!1,L()}),(h,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(h.classWrapper||w.value)},[e.createElementVNode("div",ep,[r.value.length!==0?(e.openBlock(),e.createElementBlock("div",tp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value[0].items,(k,O)=>(e.openBlock(),e.createElementBlock("div",{key:k.name||O,class:"w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"},[k.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:k.html,class:"text-gray-900 leading-relaxed"},null,8,np)):k.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component,k)),e.mergeProps({key:1,ref_for:!0},k.component==="Card"?k:N(k),{id:h.data.id,class:["w-full h-full",h.styling?.classItem]}),null,16,["id","class"])):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(r.value.length!==0?"col-span-8":"col-span-12")},[h.view==="tabs"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["overflow-hidden w-full",h.styling?.classTabWrapper])},[e.createElementVNode("div",{class:e.normalizeClass(["flex border-b border-gray-200 bg-gray-50 relative gap-4 my-6",h.styling?.classTabHeader])},[B.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",style:e.normalizeStyle({width:B.value[o.value]+"px",left:D.value[o.value]+"px"})},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>(e.openBlock(),e.createElementBlock("button",{key:k.name||O,ref_for:!0,ref:G=>S(G,O),onClick:G=>o.value=O,class:e.normalizeClass(["px-1 py-2 text-sm font-medium transition-colors",o.value===O?"text-blue-600 border-blue-600 border-b-2 ":"text-gray-600 hover:text-gray-800"])},e.toDisplayString(k.title||k.label||k.name||`Tab ${O+1}`),11,sp))),128))],2),e.createElementVNode("div",{class:e.normalizeClass([h.styling?.classTabContent,"p-1"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:k.name||O,class:e.normalizeClass(["transition-all duration-300 ease-in-out",o.value===O?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",h.classPanel||"w-full border-gray-100"])},[k.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:k.html,class:"text-gray-900 leading-relaxed"},null,8,op)):h.$slots[`tab-${O}`]?e.renderSlot(h.$slots,`tab-${O}`,{key:1,item:k,data:h.data}):k.items?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(pt),e.mergeProps({key:2,ref_for:!0},N(k),{items:k.items,"hide-title":!0,class:["w-full h-full",h.styling?.classItem],styling:h.styling}),null,16,["items","class","styling"])):k.component||k.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component||k.name,k)),e.mergeProps({key:3,ref_for:!0},k.component==="Card"?k:N(k),{styling:h.styling,id:h.data.id,class:["w-full h-full",h.styling?.classItem]}),null,16,["styling","id","class"])):e.renderSlot(h.$slots,k.slot||`tab-${O}`,{key:4,item:k,data:h.data})],2)),[[e.vShow,o.value===O]])),128))],2)],2)):h.view==="vertical-tabs"?(e.openBlock(),e.createElementBlock("div",rp,[e.createElementVNode("div",ip,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>(e.openBlock(),e.createElementBlock("button",{key:k.name||O,onClick:G=>o.value=O,class:e.normalizeClass(["relative px-1 py-4 text-sm font-medium text-left transition-colors duration-300",o.value===O?"text-blue-600 bg-white":"text-gray-600 hover:text-gray-800 hover:bg-gray-100"])},[e.createTextVNode(e.toDisplayString(k.title||k.label||k.name||`Tab ${O+1}`)+" ",1),o.value===O?(e.openBlock(),e.createElementBlock("span",ap,$[0]||($[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"currentColor",class:"remixicon text-blue-600 rounded-full bg-white shadow scale-90 opacity-100 transition ease-out"},[e.createElementVNode("path",{d:"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z"})],-1)]))):e.createCommentVNode("",!0)],10,lp))),128))]),e.createElementVNode("div",cp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:k.name||O,class:e.normalizeClass(["transition-all duration-300 ease-in-out",o.value===O?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",h.classPanel||"w-full border-gray-100 py-2"])},[k.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:k.html,class:"text-gray-900 leading-relaxed"},null,8,dp)):h.$slots[`tab-${O}`]?e.renderSlot(h.$slots,`tab-${O}`,{key:1,item:k,data:h.data}):k.items?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(pt),e.mergeProps({key:2,ref_for:!0},N(k),{items:k.items,"hide-title":!0,class:["w-full h-full",h.styling?.classItem],styling:h.styling}),null,16,["items","class","styling"])):k.component||k.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component||k.name,k)),e.mergeProps({key:3,ref_for:!0},k.component==="Card"?k:N(k),{id:h.data.id,class:["w-full h-full",h.styling?.classItem]}),null,16,["id","class"])):e.renderSlot(h.$slots,k.slot||`tab-${O}`,{key:4,item:k,data:h.data})],2)),[[e.vShow,o.value===O]])),128))])])):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(h.styling?.classPlain||"p-1 w-full")},[e.createElementVNode("div",pp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,(k,O)=>(e.openBlock(),e.createElementBlock("div",{key:k.name||k.component||O,class:e.normalizeClass(C(k))},[h.$slots[`panel-${O}`]?e.renderSlot(h.$slots,`panel-${O}`,{key:0,item:k,data:h.data}):k.items||k.html?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(pt),e.mergeProps({key:1,ref_for:!0},N(k),{items:k.items||[],class:["w-full h-full",h.styling?.classItem],styling:h.styling}),null,16,["items","class","styling"])):k.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component,k)),e.mergeProps({key:2,ref_for:!0},N(k),{class:["w-full h-full",[h.styling?.classItem]],styling:h.styling}),null,16,["class","styling"])):(e.openBlock(),e.createElementBlock("div",fp,[e.renderSlot(h.$slots,k.slot||`panel-${O}`,{item:k,data:h.data})]))],2))),128))])],2))],2)])],2))}}),mp=["onClick"],yo=Le(e.defineComponent({__name:"CopyNotification",setup(t,{expose:n}){const s=e.ref([]);let o=1;const r=()=>{if(s.value.length>=10){const a=s.value[0];clearTimeout(a.timer),s.value.shift()}const i={id:o++,timer:setTimeout(()=>{l(i.id)},1500)};s.value.push(i)},l=i=>{const a=s.value.findIndex(c=>c.id===i);if(a!==-1){const c=s.value[a];clearTimeout(c.timer),s.value.splice(a,1)}};return n({addNotification:r}),e.onUnmounted(()=>{s.value.forEach(i=>{clearTimeout(i.timer)})}),(i,a)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.TransitionGroup,{name:"notification",tag:"div",class:"fixed top-4 right-4 z-50 space-y-2"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,c=>(e.openBlock(),e.createElementBlock("div",{key:c.id,class:"bg-green-500 text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-64 max-w-sm"},[e.createVNode(e.unref(Bo),{class:"h-5 w-5 text-green-100 flex-shrink-0"}),a[0]||(a[0]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("p",{class:"font-medium text-sm"},"Ссылка скопирована!"),e.createElementVNode("p",{class:"text-xs text-green-100 opacity-90"},"Файл добавлен в буфер обмена")],-1)),e.createElementVNode("button",{onClick:d=>l(c.id),class:"text-green-100 hover:text-white transition-colors flex-shrink-0"},[e.createVNode(e.unref(Zt),{class:"h-4 w-4"})],8,mp)]))),128))]),_:1})]))}}),[["__scopeId","data-v-d1ac6329"]]);ft.install=function(t){t.component("vs-widget-file",bt),t.component("vs-widget-comments",yt),t.component("vs-widget-history",vt),t.component("vs-widget-gallery",kt),t.component("vs-widget-map",Et),t.component("vs-group-interface",Ht),t.component("CommentsWidget",yt),t.component("HistoryWidget",vt),t.component("GalleryWidget",kt),t.component("FilesWidget",bt),t.component("MapWidget",Et),t.component("Card",ft),t.component("CardItem",pt),t.component("DescriptionListWidget",Xt),t.component("CopyNotification",yo),t.component("GroupInterfaceWidget",Ht)},ee.Card=ft,ee.CardItem=pt,ee.CommentsWidget=yt,ee.CopyNotification=yo,ee.DescriptionListWidget=Xt,ee.FilesWidget=bt,ee.GalleryWidget=kt,ee.GroupInterfaceWidget=Ht,ee.HistoryWidget=vt,ee.MapWidget=Et,ee.TableWidget=mo,ee.default=ft,Object.defineProperties(ee,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
151
+ **/const Xs=Symbol(process.env.NODE_ENV!=="production"?"vModelRadio":""),Qs=Symbol(process.env.NODE_ENV!=="production"?"vModelCheckbox":""),Vs=Symbol(process.env.NODE_ENV!=="production"?"vModelText":""),eo=Symbol(process.env.NODE_ENV!=="production"?"vModelSelect":""),Ln=Symbol(process.env.NODE_ENV!=="production"?"vModelDynamic":""),to=Symbol(process.env.NODE_ENV!=="production"?"vOnModifiersGuard":""),no=Symbol(process.env.NODE_ENV!=="production"?"vOnKeysGuard":""),so=Symbol(process.env.NODE_ENV!=="production"?"vShow":""),Rn=Symbol(process.env.NODE_ENV!=="production"?"Transition":""),oo=Symbol(process.env.NODE_ENV!=="production"?"TransitionGroup":"");zl({[Xs]:"vModelRadio",[Qs]:"vModelCheckbox",[Vs]:"vModelText",[eo]:"vModelSelect",[Ln]:"vModelDynamic",[to]:"withModifiers",[no]:"withKeys",[so]:"vShow",[Rn]:"Transition",[oo]:"TransitionGroup"});let Qe;function gc(t,n=!1){return Qe||(Qe=document.createElement("div")),n?(Qe.innerHTML=`<div foo="${t.replace(/"/g,"&quot;")}">`,Qe.children[0].getAttribute("foo")):(Qe.innerHTML=t,Qe.textContent)}const yc={parseMode:"html",isVoidTag:Al,isNativeTag:t=>Dl(t)||Ol(t)||Il(t),isPreTag:t=>t==="pre",isIgnoreNewlineTag:t=>t==="pre"||t==="textarea",decodeEntities:gc,isBuiltInComponent:t=>{if(t==="Transition"||t==="transition")return Rn;if(t==="TransitionGroup"||t==="transition-group")return oo},getNamespace(t,n,s){let o=n?n.ns:s;if(n&&o===2)if(n.tag==="annotation-xml"){if(t==="svg")return 1;n.props.some(r=>r.type===6&&r.name==="encoding"&&r.value!=null&&(r.value.content==="text/html"||r.value.content==="application/xhtml+xml"))&&(o=0)}else/^m(?:[ions]|text)$/.test(n.tag)&&t!=="mglyph"&&t!=="malignmark"&&(o=0);else n&&o===1&&(n.tag==="foreignObject"||n.tag==="desc"||n.tag==="title")&&(o=0);if(o===0){if(t==="svg")return 1;if(t==="math")return 2}return o}},vc=t=>{t.type===1&&t.props.forEach((n,s)=>{n.type===6&&n.name==="style"&&n.value&&(t.props[s]={type:7,name:"bind",arg:F("style",!0,n.loc),exp:bc(n.value.content,n.loc),modifiers:[],loc:n.loc})})},bc=(t,n)=>{const s=Cl(t);return F(JSON.stringify(s),!1,n,3)};function ye(t,n){return K(t,n,process.env.NODE_ENV!=="production"?kc:void 0)}const kc={53:"v-html is missing expression.",54:"v-html will override element children.",55:"v-text is missing expression.",56:"v-text will override element children.",57:"v-model can only be used on <input>, <textarea> and <select> elements.",58:"v-model argument is not supported on plain elements.",59:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",60:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",61:"v-show is missing expression.",62:"<Transition> expects exactly one child element or component.",63:"Tags with side effect (<script> and <style>) are ignored in client component templates."},Ec=(t,n,s)=>{const{exp:o,loc:r}=t;return o||s.onError(ye(53,r)),n.children.length&&(s.onError(ye(54,r)),n.children.length=0),{props:[Q(F("innerHTML",!0,r),o||F("",!0))]}},Nc=(t,n,s)=>{const{exp:o,loc:r}=t;return o||s.onError(ye(55,r)),n.children.length&&(s.onError(ye(56,r)),n.children.length=0),{props:[Q(F("textContent",!0),o?he(o,s)>0?o:te(s.helperString(wt),[o],r):F("",!0))]}},xc=(t,n,s)=>{const o=Js(t,n,s);if(!o.props.length||n.tagType===1)return o;t.arg&&s.onError(ye(58,t.arg.loc));function r(){const a=ce(n,"bind");a&&Ie(a.arg,"value")&&s.onError(ye(60,a.loc))}const{tag:l}=n,i=s.isCustomElement(l);if(l==="input"||l==="textarea"||l==="select"||i){let a=Vs,c=!1;if(l==="input"||i){const d=lt(n,"type");if(d){if(d.type===7)a=Ln;else if(d.value)switch(d.value.content){case"radio":a=Xs;break;case"checkbox":a=Qs;break;case"file":c=!0,s.onError(ye(59,t.loc));break;default:process.env.NODE_ENV!=="production"&&r();break}}else Vl(n)?a=Ln:process.env.NODE_ENV!=="production"&&r()}else l==="select"?a=eo:process.env.NODE_ENV!=="production"&&r();c||(o.needRuntime=s.helper(a))}else s.onError(ye(57,t.loc));return o.props=o.props.filter(a=>!(a.key.type===4&&a.key.content==="modelValue")),o},wc=Ee("passive,once,capture"),_c=Ee("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Cc=Ee("left,right"),ro=Ee("onkeyup,onkeydown,onkeypress"),Sc=(t,n,s,o)=>{const r=[],l=[],i=[];for(let a=0;a<n.length;a++){const c=n[a].content;c==="native"&&Xe("COMPILER_V_ON_NATIVE",s,o)||wc(c)?i.push(c):Cc(c)?ae(t)?ro(t.content.toLowerCase())?r.push(c):l.push(c):(r.push(c),l.push(c)):_c(c)?l.push(c):r.push(c)}return{keyModifiers:r,nonKeyModifiers:l,eventOptionModifiers:i}},io=(t,n)=>ae(t)&&t.content.toLowerCase()==="onclick"?F(n,!0):t.type!==4?ge(["(",t,`) === "onClick" ? "${n}" : (`,t,")"]):t,Bc=(t,n,s)=>Ks(t,n,s,o=>{const{modifiers:r}=t;if(!r.length)return o;let{key:l,value:i}=o.props[0];const{keyModifiers:a,nonKeyModifiers:c,eventOptionModifiers:d}=Sc(l,r,s,t.loc);if(c.includes("right")&&(l=io(l,"onContextmenu")),c.includes("middle")&&(l=io(l,"onMouseup")),c.length&&(i=te(s.helper(to),[i,JSON.stringify(c)])),a.length&&(!ae(l)||ro(l.content.toLowerCase()))&&(i=te(s.helper(no),[i,JSON.stringify(a)])),d.length){const f=d.map(nn).join("");l=ae(l)?F(`${l.content}${f}`,!0):ge(["(",l,`) + "${f}"`])}return{props:[Q(l,i)]}}),$c=(t,n,s)=>{const{exp:o,loc:r}=t;return o||s.onError(ye(61,r)),{props:[],needRuntime:s.helper(so)}},Tc=(t,n)=>{if(t.type===1&&t.tagType===1&&n.isBuiltInComponent(t.tag)===Rn)return()=>{if(!t.children.length)return;lo(t)&&n.onError(ye(62,{start:t.children[0].loc.start,end:t.children[t.children.length-1].loc.end,source:""}));const o=t.children[0];if(o.type===1)for(const r of o.props)r.type===7&&r.name==="show"&&t.props.push({type:6,name:"persisted",nameLoc:t.loc,value:void 0,loc:t.loc})}};function lo(t){const n=t.children=t.children.filter(o=>o.type!==3&&!(o.type===2&&!o.content.trim())),s=n[0];return n.length!==1||s.type===11||s.type===9&&s.branches.some(lo)}const Dc=(t,n)=>{t.type===1&&t.tagType===0&&(t.tag==="script"||t.tag==="style")&&(process.env.NODE_ENV!=="production"&&n.onError(ye(63,t.loc)),n.removeNode())};function Oc(t,n){return t==="template"?!0:t in ao?ao[t].has(n):n in co?co[n].has(t):!(t in po&&po[t].has(n)||n in fo&&fo[n].has(t))}const Ve=new Set(["h1","h2","h3","h4","h5","h6"]),He=new Set([]),ao={head:new Set(["base","basefront","bgsound","link","meta","title","noscript","noframes","style","script","template"]),optgroup:new Set(["option"]),select:new Set(["optgroup","option","hr"]),table:new Set(["caption","colgroup","tbody","tfoot","thead"]),tr:new Set(["td","th"]),colgroup:new Set(["col"]),tbody:new Set(["tr"]),thead:new Set(["tr"]),tfoot:new Set(["tr"]),script:He,iframe:He,option:He,textarea:He,style:He,title:He},co={html:He,body:new Set(["html"]),head:new Set(["html"]),td:new Set(["tr"]),colgroup:new Set(["table"]),caption:new Set(["table"]),tbody:new Set(["table"]),tfoot:new Set(["table"]),col:new Set(["colgroup"]),th:new Set(["tr"]),thead:new Set(["table"]),tr:new Set(["tbody","thead","tfoot"]),dd:new Set(["dl","div"]),dt:new Set(["dl","div"]),figcaption:new Set(["figure"]),summary:new Set(["details"]),area:new Set(["map"])},po={p:new Set(["address","article","aside","blockquote","center","details","dialog","dir","div","dl","fieldset","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","menu","ol","p","pre","section","table","ul"]),svg:new Set(["b","blockquote","br","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","hr","i","img","li","menu","meta","ol","p","pre","ruby","s","small","span","strong","sub","sup","table","u","ul","var"])},fo={a:new Set(["a"]),button:new Set(["button"]),dd:new Set(["dd","dt"]),dt:new Set(["dd","dt"]),form:new Set(["form"]),li:new Set(["li"]),h1:Ve,h2:Ve,h3:Ve,h4:Ve,h5:Ve,h6:Ve},Ic=(t,n)=>{if(t.type===1&&t.tagType===0&&n.parent&&n.parent.type===1&&n.parent.tagType===0&&!Oc(n.parent.tag,t.tag)){const s=new SyntaxError(`<${t.tag}> cannot be child of <${n.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.`);s.loc=t.loc,n.onWarn(s)}},Ac=[vc,...process.env.NODE_ENV!=="production"?[Tc,Ic]:[]],Mc={cloak:uc,html:Ec,text:Nc,model:xc,on:Bc,show:$c};function Lc(t,n={}){return hc(t,$e({},yc,n,{nodeTransforms:[Dc,...Ac,...n.nodeTransforms||[]],directiveTransforms:$e({},Mc,n.directiveTransforms||{}),transformHoist:null}))}function Rc(t,n={}){const s=t.trim().startsWith("<")?t:`<span>${t}</span>`,{code:o}=Lc(s,{mode:"function"}),r=new Function("Vue",`${o}; return render;`)(Eo);return e.defineComponent({name:"DynamicFromString",props:n.props??{},emits:n.emits??[],setup(){return n.setup?.()??{}},render:r})}const Pn={};function Pc(t){return Pn[t]||(Pn[t]=Rc(t,{props:{row:{type:Object,default:void 0},value:{type:null,default:void 0},data:{type:Object,default:void 0},column:{type:Object,default:void 0}}})),Pn[t]}const Fc={class:"mt-4 flex flex-wrap items-center justify-between gap-3 text-sm text-gray-600"},zc={class:"flex items-center gap-2"},jc=["disabled"],Hc={class:"text-sm"},Uc=["disabled"],qc=e.defineComponent({__name:"TablePagination",props:{currentPage:{},totalPages:{},label:{}},setup(t){const n=t,s=e.computed(()=>n.currentPage<=1),o=e.computed(()=>n.currentPage>=n.totalPages);return(r,l)=>(e.openBlock(),e.createElementBlock("div",Fc,[e.createElementVNode("div",null,e.toDisplayString(r.label),1),e.createElementVNode("div",zc,[e.createElementVNode("button",{class:"rounded-md border border-gray-300 px-3 py-1 text-sm transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:text-gray-400",disabled:s.value,onClick:l[0]||(l[0]=i=>r.$emit("previous"))}," Назад ",8,jc),e.createElementVNode("span",Hc,"Сторінка "+e.toDisplayString(r.currentPage)+" з "+e.toDisplayString(r.totalPages),1),e.createElementVNode("button",{class:"rounded-md border border-gray-300 px-3 py-1 text-sm transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:text-gray-400",disabled:o.value,onClick:l[1]||(l[1]=i=>r.$emit("next"))}," Далі ",8,Uc)])]))}}),Wc={class:"relative inline-flex"},Kc=["aria-label"],Gc={class:"px-3 pb-2"},Jc={class:"px-3 pb-3 max-h-64 overflow-y-auto"},Zc=["onClick"],Yc={class:"truncate"},Xc={key:0,xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Qc="inline-flex items-center justify-center size-8 rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-50",Vc=e.defineComponent({__name:"TableColumnSettings",props:{columns:{}},emits:["update:columns"],setup(t,{emit:n}){const s=t,o=n,r=e.useAttrs(),l=e.ref(!1),i=e.ref(""),a=e.ref([...s.columns]),c=e.ref(null),d=e.ref(null),f=e.ref(null),p=e.ref({top:0,left:0}),m=e.computed(()=>{if(!i.value)return a.value;const B=i.value.toLowerCase();return a.value.filter(D=>E(D).toLowerCase().includes(B))});e.watch(()=>s.columns,B=>{if(!B){a.value=[];return}const D=JSON.stringify(B),S=JSON.stringify(a.value);D!==S&&(a.value=[...B])},{deep:!0}),e.watch(a,B=>{o("update:columns",B)},{deep:!0});function E(B){return B.ua||B.label||B.name||"Колонка"}function w(B){const D=!B.hidden;D&&a.value.filter(S=>!S.hidden).length<=1||(B.hidden=D)}function _(){l.value=!l.value,l.value&&e.nextTick(()=>{f.value?.focus(),N()})}function N(){if(!c.value)return;const B=c.value.getBoundingClientRect();p.value={top:B.bottom+window.scrollY+6,left:B.left+window.scrollX-200}}function C(B){if(!l.value)return;const D=B.target;D&&(d.value?.contains(D)||c.value?.contains(D)||(l.value=!1))}function A(B){B.key==="Escape"&&(l.value=!1)}return e.onMounted(()=>{document.addEventListener("click",C,!0),document.addEventListener("keydown",A)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",C,!0),document.removeEventListener("keydown",A)}),(B,D)=>(e.openBlock(),e.createElementBlock("div",Wc,[e.createElementVNode("button",{ref_key:"buttonRef",ref:c,type:"button",onClick:_,class:e.normalizeClass([Qc,e.unref(r).class]),"aria-label":e.unref(r)["aria-label"]??"Налаштування колонок",title:"Налаштування колонок"},D[2]||(D[2]=[e.createStaticVNode('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-columns" height="18" width="18" aria-hidden="true"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 6h5.5"></path><path d="M4 10h5.5"></path><path d="M4 14h5.5"></path><path d="M4 18h5.5"></path><path d="M14.5 6h5.5"></path><path d="M14.5 10h5.5"></path><path d="M14.5 14h5.5"></path><path d="M14.5 18h5.5"></path></svg>',1)]),10,Kc),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"modalRef",ref:d,class:"fixed z-50 w-64 bg-white rounded-xl shadow-lg border border-gray-200 dark:bg-neutral-900 dark:border-neutral-700",style:e.normalizeStyle({top:`${p.value.top}px`,left:`${p.value.left}px`})},[D[5]||(D[5]=e.createElementVNode("div",{class:"flex items-center justify-between h-12 px-4 text-sm font-medium text-gray-800 dark:text-neutral-200"}," Налаштування колонок ",-1)),e.createElementVNode("div",Gc,[e.withDirectives(e.createElementVNode("input",{ref_key:"searchInput",ref:f,"onUpdate:modelValue":D[0]||(D[0]=S=>i.value=S),type:"text",class:"w-full rounded-md border border-gray-200 px-3 py-2 text-sm text-gray-800 placeholder:text-gray-500 focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500 dark:bg-neutral-800 dark:border-neutral-700 dark:text-neutral-200",placeholder:"Пошук колонок"},null,512),[[e.vModelText,i.value]])]),e.createElementVNode("div",Jc,[D[4]||(D[4]=e.createElementVNode("p",{class:"px-1 pb-2 text-xs text-gray-500 uppercase tracking-wide"},"Виберіть колонки",-1)),e.createElementVNode("ul",{class:"space-y-1",onClick:D[1]||(D[1]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,S=>(e.openBlock(),e.createElementBlock("li",{key:S.name,class:"flex items-center justify-between rounded-lg px-3 py-2 text-sm text-gray-800 hover:bg-gray-100 dark:text-neutral-200 dark:hover:bg-neutral-800 cursor-pointer",onClick:U=>w(S)},[e.createElementVNode("span",Yc,e.toDisplayString(E(S)),1),e.createElementVNode("span",{class:e.normalizeClass(["flex items-center justify-center size-4 rounded border border-gray-300 text-white",S.hidden?"bg-white text-transparent":"bg-blue-600 border-blue-600"])},[S.hidden?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("svg",Xc,D[3]||(D[3]=[e.createElementVNode("path",{d:"M20 6 9 17l-5-5"},null,-1)])))],2)],8,Zc))),128))])])],4)):e.createCommentVNode("",!0)]))]))}}),ed={class:"flex flex-col gap-4 mb-[15px]"},td={class:"flex flex-wrap justify-between items-center gap-4"},nd={class:"font-semibold text-[16px]"},sd={class:"flex flex-wrap items-center gap-4"},od={class:"relative"},rd={class:"ml-auto flex items-center gap-2"},id={class:"overflow-x-auto"},ld={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"},ad={class:"text-left font-medium text-gray-700"},cd={key:0,class:"py-2 pr-4 min-w-[80px] max-w-[120px] text-right"},dd={class:"divide-y divide-gray-200"},pd=["href"],fd={key:2},md={key:3},hd={key:0,class:"py-2 pr-4 text-right"},ud=["data-action-key"],gd=["onClick"],yd=["onClick"],vd={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},bd={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},kd={key:2,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Ed={key:3,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Nd={key:0},xd=["colspan"],mo=e.defineComponent({__name:"TableWidget",props:{name:{},label:{},component:{},path:{},slot:{},col:{},width:{},html:{},title:{},type:{},token:{},count:{},props:{},items:{}},setup(t){const n=e.getCurrentInstance(),s=e.ref([]),o=e.ref([]),r=new Map,l=t,i=e.ref([]),a=e.ref(""),c=e.ref(""),d=e.ref(""),f=e.ref(1),p=e.ref(10),m=e.ref(0),E=e.ref(0),w=e.ref("id"),_=e.ref("");let N=null,C=0;const A=e.ref(null);async function B(){const u=f.value,y=++C,v=new URLSearchParams,b=d.value.trim();b&&v.set("search",b),v.set("page",String(u)),v.set("limit",String(p.value));const R=`/api/data/${l.token}${v.toString()?`?${v.toString()}`:""}`;let q;try{const ut=await fetch(R);if(!ut.ok)throw new Error(`Request failed with status ${ut.status}`);q=await ut.json()}catch(ut){y===C&&(s.value=[],E.value=0,m.value=0),console.error("Failed to load table data",ut);return}if(y!==C)return;s.value=Array.isArray(q?.rows)?q.rows:[],o.value=z(q?.columns||[]),i.value=Array.isArray(q?.actions)?q.actions:[],a.value=q?.form,c.value=q?.addToken,w.value=typeof q?.pk=="string"&&q.pk?q.pk:w.value,typeof q?.form=="string"&&q.form&&(_.value=q.form.replace(/\.form$/,".table")),Se();const re=Number(q?.total??q?.count??q?.totalCount),Be=Number(q?.filtered??q?.filteredCount);m.value=Number.isFinite(re)&&re>0?re:s.value.length,E.value=Number.isFinite(Be)&&Be>0?Be:Math.max(s.value.length,m.value);const vo=Math.max(1,Math.ceil((E.value||s.value.length||1)/p.value));let We=u;typeof q?.page=="number"&&q.page>0&&(We=q.page),We>vo&&(We=vo),We<1&&(We=1);const hp=We!==u;if(f.value=We,hp&&E.value>0)return B()}const{$notify:D,$confirm:S,$form:U}=n?.appContext?.config?.globalProperties||{};async function J(u){await U({token:u.token}),B()}function M(){U({token:c.value})}function L(u){S({title:"Підтвердіть дію",type:"error",message:"Ви впевненні що бажаєте видалити даний рядок?",onConfirm:async()=>{const y=await fetch(`/api/table/${u.token}`,{method:"DELETE"});if(!y.ok){const{error:v}=await y.json();D({title:"Помилка",type:"warning",message:v});return}D({title:"Видаленно",message:"Успішно видалено"}),await B()}})}e.onMounted(async()=>{await B()});function P(u){return typeof u?.format=="string"?u.format.toLowerCase():""}function z(u){const y=new Map;o.value.forEach(b=>{b?.name&&y.set(b.name,!!b.hidden)});const v=u.map(b=>{const R=y.has(b.name)?y.get(b.name):!!b.hidden;return{...b,hidden:R}});return v.length&&!v.some(b=>!b.hidden)&&(v[0].hidden=!1),v}const h=e.computed(()=>{const u=o.value.filter(y=>!y.hidden);return u.length?u:o.value}),$=e.computed(()=>{const u=[],y=new Set;for(const v of i.value){if(typeof v=="string"){if(v==="view"){const b="row:view";y.has(b)||(u.push({key:b,type:"view",label:"Переглянути",scope:"row",handler:Kn}),y.add(b));continue}if(v==="edit"){const b="row:edit";y.has(b)||(u.push({key:b,type:"edit",label:"Редагувати",scope:"row",handler:Un}),y.add(b));continue}if(v==="delete"||v==="del"){const b="row:delete";y.has(b)||(u.push({key:b,type:"delete",label:"Видалити",scope:"row",handler:qn,variant:"danger"}),y.add(b));continue}if(v==="add"){const b="toolbar:add";y.has(b)||(u.push({key:b,type:"add",label:"Додати",scope:"toolbar"}),y.add(b))}continue}if(v&&typeof v=="object"){const b=String(v.name??v.type??"action"),R=String(v.label??v.title??b),q=v.scope==="toolbar"?"toolbar":"row",re=`${q}:${b}`;if(y.has(re))continue;y.add(re),u.push({key:re,type:b,label:R,scope:q,handler:q==="row"?Be=>Wn(v,Be):void 0,variant:v.variant==="danger"?"danger":"default",original:v})}}return u}),k=e.computed(()=>$.value.filter(u=>u.scope==="row"&&typeof u.handler=="function")),O=e.computed(()=>$.value.filter(u=>u.scope==="toolbar")),G=e.computed(()=>k.value.length>0),ve=e.computed(()=>O.value.some(u=>u.type==="add")),be=e.computed(()=>s.value),qe=e.computed(()=>{const u=E.value||be.value.length,y=Math.ceil(u/p.value);return y>0?y:1}),ke=e.computed(()=>{const u=be.value.length,y=E.value||u,v=m.value||y;return`Показано ${u} з ${y} (усього ${v})`});function xe(){f.value<qe.value&&(f.value+=1,B())}function Ce(){f.value>1&&(f.value-=1,B())}e.watch(o,u=>{u?.length&&(u.some(y=>!y.hidden)||(u[0].hidden=!1))},{deep:!0});function Fn(){N&&clearTimeout(N),Se(),N=setTimeout(()=>{f.value=1,B()},300)}function Me(u){const y=w.value||"id",v=u?.token??u?.[y]??u?.id;return v?String(v):""}function qt(u){const y=h.value[u],v=["py-2",...Wt(y)];u===0&&v.push("pl-4");const b=u===h.value.length-1&&!G.value;return v.push(b?"pr-4":"pr-5"),v.join(" ")}function mt(u,y){const v=["py-2",...Wt(y)];P(y)==="badge"&&v.push("center"),u===0&&v.push("pl-4");const b=u===h.value.length-1&&!G.value;return v.push(b?"pr-4":"pr-5"),v.join(" ")}function Wt(u){const y=[],v=re=>{if(re==null||re==="")return;const Be=Number(re);return Number.isFinite(Be)&&Be>0?`${Be}px`:String(re).replace(/\s+/g,"")},b=v(u?.width),R=v(u?.minWidth),q=v(u?.maxWidth);return b?(y.push(`min-w-[${b}]`,`max-w-[${b}]`),y):(y.push(`min-w-[${R??"100px"}]`),y.push(`max-w-[${q??"300px"}]`),y)}function Kt(u){if(!k.value.length)return!1;const y=w.value||"id";return!!(u?.token||u?.[y]||u?.id)}function zn(u){return A.value===Me(u)}function jn(u){const y=Me(u);y&&(A.value=A.value===y?null:y)}function ht(u,y){const v=Me(u);if(v){if(y){r.set(v,y);return}r.delete(v)}}function Hn(u){const y=Me(u),v=r.get(y);if(!v)return{};const b=v.getBoundingClientRect(),R=160;return{top:`${b.bottom+window.scrollY+8}px`,left:`${b.right+window.scrollX-R}px`,width:`${R}px`}}function Se(){A.value=null}function Un(u){Se(),J(u)}function qn(u){Se(),L(u)}function Wn(u,y){Se();const v=w.value||"id",b=u.isId?y?.[v]??y?.id:y?.token??y?.[v]??y?.id;if(!b){console.warn("Cannot execute action without identifier",u);return}if(u.form&&typeof U=="function"){U({token:u.form,payload:{id:b,row:y}});return}if(typeof u.api=="string"&&u.api){const R=u.api.endsWith("/")?u.api:`${u.api}/`;window.location.href=`${R}${b}`;return}y?.token&&typeof U=="function"&&U({token:y.token})}function Kn(u){Se();const y=_.value||(a.value?String(a.value).replace(/\.form$/,".table"):""),v=w.value||"id",b=u?.[v]??u?.id??u?.token;if(y&&b){const R=`/card/${y}/${b}`;window.location.href=R;return}if(u?.token&&typeof U=="function"){U({token:u.token,readonly:!0,mode:"view"});return}u?.token&&J(u)}function x(u){if(!A.value)return;const y=u.target;if(!y)return;const v=y.closest("[data-action-key]");v&&v.getAttribute("data-action-key")===A.value||Se()}e.onMounted(()=>{document.addEventListener("click",x,!0)}),e.onBeforeUnmount(()=>{N&&clearTimeout(N),document.removeEventListener("click",x,!0)});function g(u,y){const b=u?.[`${y.name}_text`];if(Array.isArray(b))return b.length?b.join(", "):"-";if(b!=null&&b!=="")return b;const R=u?.[y.name];return Array.isArray(R)?R.length?R.join(", "):"-":R??"-"}function T(u,y){const b=u?.[`${y.name}_data`];if(b&&typeof b=="object")return{text:b.text??b.label??b.name??b.title??"-",color:b.color,textColor:b.textColor};const R=u?.[`${y.name}_text`]??u?.[y.name];return{text:(Array.isArray(R)?R.join(", "):R)??"-"}}function I(u,y){const v=T(u,y);return v.color?{backgroundColor:v.color,color:v.textColor??"#ffffff"}:{}}function W(u,y){const v=P(y);if(v==="badge")return T(u,y).text;if(v==="select")return g(u,y);if(v==="slot")return"-";if(v==="text")return u?.[y.name]??"-";const b=u?.[`${y.name}_data`];return b!=null&&typeof b!="object"?b:u?.[`${y.name}_text`]??u?.[y.name]??"-"}return(u,y)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",ed,[e.createElementVNode("div",td,[e.createElementVNode("div",nd,e.toDisplayString(u.title),1)]),e.createElementVNode("div",sd,[e.createElementVNode("div",od,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[0]=v=>d.value=v),type:"text",class:"w-52 rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500",placeholder:"Пошук",onInput:Fn},null,544),[[e.vModelText,d.value]])]),e.createElementVNode("div",rd,[e.createVNode(Vc,{columns:o.value,"onUpdate:columns":y[1]||(y[1]=v=>o.value=v)},null,8,["columns"]),ve.value&&c.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:M,class:"inline-flex size-8 items-center justify-center rounded-lg bg-blue-500 text-white shadow-sm transition-colors hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",title:"Додати запис","aria-label":"Додати запис"},y[3]||(y[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M5 12h14"}),e.createElementVNode("path",{d:"M12 5v14"})],-1)]))):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",id,[e.createElementVNode("table",ld,[e.createElementVNode("thead",ad,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(v,b)=>(e.openBlock(),e.createElementBlock("th",{key:v.name,class:e.normalizeClass(qt(b))},e.toDisplayString(v.ua),3))),128)),G.value?(e.openBlock(),e.createElementBlock("th",cd," Дії ")):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",dd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(be.value,v=>(e.openBlock(),e.createElementBlock("tr",{class:"bg-white odd:bg-gray-50",key:v.id??JSON.stringify(v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(b,R)=>(e.openBlock(),e.createElementBlock("td",{key:b.name,class:e.normalizeClass([mt(R,b),"truncate"])},[b.link?(e.openBlock(),e.createElementBlock("a",{key:0,href:b.link.replace("{{id}}",v.id),class:"font-medium cursor-pointer text-start text-wrap text-cyan-800 decoration-2 focus:outline-none focus:underline hover:text-cyan-700 hover:underline"},e.toDisplayString(W(v,b)),9,pd)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[P(b)==="slot"&&b.slot?.content?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(Pc)(b.slot.content)),{key:0,data:v,row:v,column:b,value:v?.[b.name]},null,8,["data","row","column","value"])):P(b)==="badge"?(e.openBlock(),e.createElementBlock("span",{key:1,class:"items-center px-2 py-1 rounded-full text-xs font-semibold text-center justify-center flex",style:e.normalizeStyle(I(v,b))},e.toDisplayString(T(v,b).text),5)):P(b)==="select"?(e.openBlock(),e.createElementBlock("span",fd,e.toDisplayString(g(v,b)),1)):(e.openBlock(),e.createElementBlock("span",md,e.toDisplayString(W(v,b)),1))],64))],2))),128)),G.value?(e.openBlock(),e.createElementBlock("td",hd,[Kt(v)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"relative inline-flex","data-action-key":Me(v),ref_for:!0,ref:b=>ht(v,b)},[e.createElementVNode("button",{type:"button",class:"inline-flex size-7 items-center justify-center rounded-md border border-gray-200 text-gray-500 transition-colors hover:bg-gray-50 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500",onClick:e.withModifiers(b=>jn(v),["stop"])},y[4]||(y[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"5",r:"1"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1"})],-1)]),8,gd),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[zn(v)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"fixed z-50 w-40 overflow-hidden rounded-lg border border-gray-200 bg-white py-1 shadow-lg",style:e.normalizeStyle(Hn(v)),onClick:y[2]||(y[2]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,b=>(e.openBlock(),e.createElementBlock("button",{key:b.type,type:"button",class:e.normalizeClass(["flex w-full items-center gap-2 px-4 py-2 text-sm transition-colors",b.variant==="danger"?"text-red-600 hover:bg-red-50":"text-gray-700 hover:bg-gray-50"]),onClick:R=>b.handler?.(v)},[b.type==="view"?(e.openBlock(),e.createElementBlock("svg",vd,y[5]||(y[5]=[e.createElementVNode("path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"},null,-1),e.createElementVNode("circle",{cx:"12",cy:"12",r:"3"},null,-1)]))):b.type==="edit"?(e.openBlock(),e.createElementBlock("svg",bd,y[6]||(y[6]=[e.createElementVNode("path",{d:"M18 2a2.828 2.828 0 1 1 4 4L7 21l-4 1 1-4Z"},null,-1)]))):b.type==="delete"?(e.openBlock(),e.createElementBlock("svg",kd,y[7]||(y[7]=[e.createElementVNode("path",{d:"M3 6h18"},null,-1),e.createElementVNode("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"},null,-1),e.createElementVNode("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"},null,-1),e.createElementVNode("line",{x1:"10",x2:"10",y1:"11",y2:"17"},null,-1),e.createElementVNode("line",{x1:"14",x2:"14",y1:"11",y2:"17"},null,-1)]))):(e.openBlock(),e.createElementBlock("svg",Ed,y[8]||(y[8]=[e.createElementVNode("path",{d:"M12 8v8"},null,-1),e.createElementVNode("path",{d:"M8 12h8"},null,-1)]))),e.createTextVNode(" "+e.toDisplayString(b.label),1)],10,yd))),128))],4)):e.createCommentVNode("",!0)]))],8,ud)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))),128)),be.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("tr",Nd,[e.createElementVNode("td",{colspan:h.value.length+(G.value?1:0),class:"py-6 text-center text-gray-500"}," Немає записів для відображення ",8,xd)]))])])]),e.createVNode(qc,{"current-page":f.value,"total-pages":qe.value,label:ke.value,onPrevious:Ce,onNext:xe},null,8,["current-page","total-pages","label"])]))}}),wd={class:"p-[20px]"},_d={class:"flex gap-[6px] mb-5"},Cd={class:"vs-form-text relative bg-white rounded-lg flex-grow"},Sd={class:"grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6"},Bd={class:"mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200"},$d={class:"space-y-8"},Td={key:0},Dd={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Od=["onClick"],Id={class:"md:col-span-2"},Ad={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},Md={class:"text-sm text-gray-500 dark:text-neutral-500"},Ld={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},Rd=["checked","onChange"],Pd={class:"grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6"},Fd={class:"md:col-span-2"},zd={class:"font-semibold text-gray-800 dark:text-neutral-200"},jd=["onClick"],Hd={class:"md:col-span-2"},Ud={class:"text-sm font-medium text-gray-800 dark:text-neutral-200"},qd={class:"text-sm text-gray-500 dark:text-neutral-500"},Wd={class:"grid items-center grid-cols-2 md:block text-end md:text-center"},Kd=["checked","onChange"],Ht=e.defineComponent({__name:"GroupInterfaceWidget",props:{data:{},id:{}},setup(t){const n=t,s=e.ref(""),o=["view","add","edit","del"],r=e.ref({});e.onMounted(async()=>{const _=await(await fetch(`/api/access-group/${n.id}?tab=vs-group-interface`)).json();_.routes&&_.routes.forEach(N=>{r.value[N.path]=new Set(N.actions)})});const l=(w,_)=>r.value[w]?.has(_)??!1,i=(w,_)=>{r.value[w]||(r.value[w]=new Set),r.value[w].has(_)?r.value[w].delete(_):r.value[w].add(_)},a=(w,_)=>{w.forEach(N=>{N.path&&(r.value[N.path]||(r.value[N.path]=new Set),r.value[N.path].has(_)?r.value[N.path].delete(_):r.value[N.path].add(_))})},c=e.computed(()=>Object.entries(r.value).map(([w,_])=>({path:w,actions:Array.from(_)})).filter(w=>w.actions.length)),d=async()=>{await fetch(`/api/access-group/${n.id}?tab=vs-group-interface`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes:c.value})}),bo.notify({title:"Success!",message:"Permissions saved."})},f=()=>{r.value={}},p=w=>{if(!s.value.trim())return w;const _=s.value.toLowerCase();return w.filter(N=>N.ua.toLowerCase().includes(_)||N.path&&N.path.toLowerCase().includes(_))},m=e.computed(()=>p(n.data.routers.filter(w=>!w.menu))),E=e.computed(()=>n.data.routers.filter(w=>w.menu).map(w=>({...w,menu:p(w.menu||[])})).filter(w=>w.menu&&w.menu.length>0));return(w,_)=>(e.openBlock(),e.createElementBlock("div",wd,[e.createElementVNode("div",_d,[e.createElementVNode("div",Cd,[_[1]||(_[1]=e.createElementVNode("i",{class:"absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti"},null,-1)),e.withDirectives(e.createElementVNode("input",{type:"text",placeholder:"Пошук","onUpdate:modelValue":_[0]||(_[0]=N=>s.value=N),class:"bg-white h-[38px] text-sm py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 rounded-lg text-sm text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,512),[[e.vModelText,s.value]])]),e.createElementVNode("button",{onClick:f,class:"inline-flex items-center px-3 py-2 text-sm font-medium duration-300 bg-white border rounded-lg gap-x-2 hover:bg-gray-100"}," Скинути всі "),e.createElementVNode("button",{onClick:d,class:"inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white"}," Зберегти ")]),e.createElementVNode("div",Sd,[_[2]||(_[2]=e.createElementVNode("div",{class:"self-center col-span-2"},[e.createElementVNode("h2",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Групи")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(N,C)=>e.createElementVNode("div",{class:"col-span-1 text-center",key:C},[e.createElementVNode("h3",Bd,e.toDisplayString(N),1)])),64))]),e.createElementVNode("div",$d,[m.value.length?(e.openBlock(),e.createElementBlock("div",Td,[e.createElementVNode("ul",Dd,[_[3]||(_[3]=e.createElementVNode("li",{class:"md:col-span-2"},[e.createElementVNode("h3",{class:"font-semibold text-gray-800 dark:text-neutral-200"},"Без категорії")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(N,C)=>e.createElementVNode("li",{key:C,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:A=>a(m.value,o[C])}," Toggle all ",8,Od)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(N,C)=>(e.openBlock(),e.createElementBlock("ul",{key:"uncat-"+C,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",Id,[e.createElementVNode("p",Ad,e.toDisplayString(N.ua),1),e.createElementVNode("p",Md,e.toDisplayString(N.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(A,B)=>e.createElementVNode("li",{key:B,class:"col-span-1"},[e.createElementVNode("div",Ld,[e.createElementVNode("input",{type:"checkbox",checked:l(N.path,A),onChange:D=>i(N.path,A),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,Rd)])])),64))]))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,(N,C)=>(e.openBlock(),e.createElementBlock("div",{key:C,class:"space-y-5"},[e.createElementVNode("ul",Pd,[e.createElementVNode("li",Fd,[e.createElementVNode("h3",zd,e.toDisplayString(N.ua),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(A,B)=>e.createElementVNode("li",{key:B,class:"md:block md:col-span-1 md:text-center"},[e.createElementVNode("button",{type:"button",class:"text-xs font-medium text-blue-600 decoration-2 hover:underline",onClick:D=>a(N.menu,o[B])}," Toggle all ",8,jd)])),64))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.menu,(A,B)=>(e.openBlock(),e.createElementBlock("ul",{key:B,class:"grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"},[e.createElementVNode("li",Hd,[e.createElementVNode("p",Ud,e.toDisplayString(A.ua),1),e.createElementVNode("p",qd,e.toDisplayString(A.path),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,(D,S)=>e.createElementVNode("li",{key:S,class:"col-span-1"},[e.createElementVNode("div",Wd,[e.createElementVNode("input",{type:"checkbox",checked:l(A.path,D),onChange:U=>i(A.path,D),class:"text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"},null,40,Kd)])])),64))]))),128))]))),128))])]))}}),Ue={"vs-widget-map":Et,"vs-widget-comments":yt,"vs-widget-history":vt,"vs-widget-gallery":kt,"vs-widget-file":bt,"vs-widget-list":Xt,"vs-widget-table":mo,"vs-group-interface":Ht};function ho(t){if(t==null)return null;const n=Number(t);return Number.isFinite(n)?Math.max(1,Math.min(12,Math.floor(n))):null}function uo(t){const n={...t};return Array.isArray(t.items)&&(n.items=t.items.map(s=>uo(s))),n}function Gd(t,n=12){if(!t.length)return;const s=[],o=[];t.forEach(c=>{const d=ho(c.col);d?(c.col=d,s.push({item:c,span:d})):o.push(c)});const r=s.reduce((c,d)=>c+d.span,0);let l=n-r;if(o.length===0)return;l<=0&&(l=n);const i=Math.max(1,Math.floor(l/o.length));let a=Math.max(0,l-i*o.length);o.forEach(c=>{let d=i;a>0&&(d+=1,a-=1),c.col=Math.max(1,Math.min(12,d))})}function Ut(t,n=12){if(!Array.isArray(t)||!t.length)return[];const s=t.map(o=>uo(o));return s.forEach(o=>{Array.isArray(o.items)&&o.items.length&&(o.items=Ut(o.items,12))}),Gd(s,n),s}function go(t){const n=ho(t);return n?n>=12?["md:col-span-12","lg:col-span-12"]:[`md:col-span-${n}`,`lg:col-span-${n}`]:[]}const Jd={class:"text-lg font-semibold text-gray-900"},Zd=["innerHTML"],Yd={key:0,class:"grid grid-cols-12 gap-4"},Xd={key:0,class:"mb-4 pb-2 border-b border-gray-200"},Qd={class:"text-lg font-semibold text-gray-900"},Vd=["innerHTML"],pt=e.defineComponent({__name:"CardItem",props:{items:{},type:{},col:{},data:{},html:{},title:{},hideTitle:{type:Boolean},styling:{},name:{},label:{},component:{},slot:{},id:{},className:{},style:{}},setup(t){const n=t,s=e.computed(()=>{if(!n.col)return{};const d=Math.max(1,Math.min(12,Number(n.col)));return{[`md:col-span-${d}`]:!0,[`lg:col-span-${d}`]:!0}}),o=e.computed(()=>Ut(n.items));function r(d){const f=["col-span-12"],p=go(d.col);return p.length&&f.push(...p),f}function l(d){return Ue[d]||d}function i(d,f){if(!d||typeof f!="string"||!f)return{found:!1,value:void 0};const p=f.split(".");let m=d;for(const E of p){if(m==null||typeof m!="object"&&!Array.isArray(m))return{found:!1,value:void 0};if(!(E in m))return{found:!1,value:void 0};m=m[E]}return{found:!0,value:m}}const a=function(d={}){const f={...d};return Object.entries(f).forEach(([p,m])=>{if(p!=="props"&&typeof m=="string"){const E=i(n.data,m);E.found&&(f[p]=E.value)}}),d.props&&typeof d.props=="object"&&Object.entries(d.props).forEach(([p,m])=>{if(typeof m=="string"){const E=i(n.data,m);f[p]=E.found?E.value:m}else f[p]=m}),delete f.props,f},c=e.computed(()=>{const d={};return n.col&&(d.col=n.col),d});return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([[s.value,d.styling?.classItem],"w-full bg-gray-50 rounded-lg p-4 col-span-12"])},[!d.hideTitle&&d.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["mb-4 pb-2 border-b border-gray-200",d.styling?.classItemTitle])},[e.createElementVNode("h3",Jd,e.toDisplayString(d.title),1)],2)):e.createCommentVNode("",!0),d.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:d.html,class:"text-gray-900 leading-relaxed"},null,8,Zd)):d.type?.includes("tabs")?(e.openBlock(),e.createBlock(ft,{key:2,view:d.type,panels:d.items,data:d.data,styling:d.styling},null,8,["view","panels","data","styling"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[o.value.length?(e.openBlock(),e.createElementBlock("div",Yd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(p,m)=>(e.openBlock(),e.createElementBlock("div",{key:p.name||p.component||m,class:e.normalizeClass(r(p))},[p.title||p.label?(e.openBlock(),e.createElementBlock("div",Xd,[e.createElementVNode("h3",Qd,e.toDisplayString(p.title||p.label),1)])):e.createCommentVNode("",!0),p.html?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:p.html,class:"text-gray-900 leading-relaxed"},null,8,Vd)):p.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(p.component)),e.mergeProps({key:2,ref_for:!0},{geom:d.data.geom,id:d.data.id,...c.value,...a(p),data:d.data},{class:"w-full"}),null,16)):e.renderSlot(d.$slots,"default",{key:3})],2))),128))])):e.createCommentVNode("",!0)],64))],2))}}),ep={class:"grid grid-cols-12 gap-[20px]"},tp={key:0,class:"col-span-4"},np=["innerHTML"],sp=["onClick"],op=["innerHTML"],rp={key:1,class:"flex w-full"},ip={class:"flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative"},lp=["onClick"],ap={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"},cp={class:"flex-1 p-4"},dp=["innerHTML"],pp={class:"grid grid-cols-12 gap-4"},fp={key:3,class:"w-full h-full"},ft=e.defineComponent({__name:"Card",props:{panels:{default:()=>[]},data:{default:()=>({})},view:{default:"plain"},styling:{},classWrapper:{default:""},classPanel:{},normalizeTabs:{type:Boolean,default:!0},backgroundClass:{},tabContentWrapperClass:{},tabPanelClass:{},id:{},className:{},style:{}},setup(t){const n=t;function s(){const h=typeof window<"u"?window:globalThis,$="__vsCardAnonymousCounter__",k=h[$]??0;return h[$]=k+1,k===0?"tab":`tab${k}`}const o=e.ref(0),r=e.ref([]);let l=!1;const i=e.ref(n.id??s());e.watch(()=>n.id,h=>{h&&(i.value=h)});const a=new Map,c=e.computed(()=>n.view==="tabs"||n.view==="vertical-tabs");e.provide("vsCardTabsContext",c);function d(h,$){const k=$?.path;return k?(a.has(k)||a.set(k,e.defineAsyncComponent(()=>import(k))),a.get(k)):typeof h=="string"&&Ue[h]?Ue[h]:$?.component&&Ue[$.component]?Ue[$.component]:$?.name&&Ue[$.name]?Ue[$.name]:h}function f(h){return h.forEach($=>{$.type&&($.view=$.type)}),r.value=h.filter($=>$.type==="pin"),h.filter($=>$.type!=="pin")}const p=e.computed(()=>{let h;return n.panels&&n.panels.length>0?h=n.normalizeTabs?f(n.panels):n.panels:n.data&&Array.isArray(n.data)&&(h=n.data.filter(k=>k.type.includes("tabs"))[0]?.items),Ut(h,12)}),m=e.computed(()=>i.value),E=e.computed(()=>{let h;return n.panels&&n.panels.length>0?h=n.normalizeTabs?f(n.panels):n.panels:n.data&&Array.isArray(n.data)&&(h=n.data),Ut(h,12)}),w=e.computed(()=>({[`view-${n.view}`]:!0}));function _(h,$){if(!h||typeof $!="string"||!$)return{found:!1,value:void 0};const k=$.split(".");let O=h;for(const G of k){if(O==null||typeof O!="object"&&!Array.isArray(O))return{found:!1,value:void 0};if(!(G in O))return{found:!1,value:void 0};O=O[G]}return{found:!0,value:O}}const N=h=>{const $={...h};return Object.entries($).forEach(([k,O])=>{if(k!=="props"&&typeof O=="string"){const G=_(n.data,O);G.found&&($[k]=G.value)}}),h.props&&typeof h.props=="object"&&Object.entries(h.props).forEach(([k,O])=>{if(typeof O=="string"){const G=_(n.data,O);$[k]=G.found?G.value:O}else $[k]=O}),delete $.props,n.data&&($.data=n.data),$};function C(h){const $=["col-span-12"],k=go(h.col);return k.length&&$.push(...k),$}const A=e.ref([]),B=e.ref([]),D=e.ref([]);function S(h,$){h&&h instanceof HTMLElement&&(A.value[$]=h)}function U(){B.value=A.value.map(h=>h.offsetWidth),D.value=A.value.map(h=>h.offsetLeft)}function J(){if(typeof window>"u")return null;const h=m.value;if(!h)return null;const k=new URL(window.location.href).searchParams.get(h);if(k===null)return null;const O=Number.parseInt(k,10);return Number.isNaN(O)?null:O}function M(h){if(typeof window>"u")return;const $=m.value;if(!$)return;const k=new URL(window.location.href);h<=0?k.searchParams.delete($):k.searchParams.set($,String(h));const O=window.history.state??{};window.history.replaceState(O,document.title,k)}function L(){if(l)return;const h=J();if(h===null||!p.value.length)return;const $=Math.min(Math.max(h,0),p.value.length-1);$!==h&&M($),$!==o.value&&(o.value=$),l=!0}function P(){l=!1,L()}let z=null;return e.onMounted(()=>{e.nextTick(()=>{L(),U()}),typeof window<"u"&&window.addEventListener("popstate",P),z=new ResizeObserver(()=>U()),z.observe(document.body)}),e.onBeforeUnmount(()=>{z?.disconnect(),typeof window<"u"&&window.removeEventListener("popstate",P)}),e.watch(o,h=>{e.nextTick(()=>{U()}),M(h)}),e.watch(p,()=>{l=!1,L()}),(h,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(h.classWrapper||w.value)},[e.createElementVNode("div",ep,[r.value.length!==0?(e.openBlock(),e.createElementBlock("div",tp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value[0].items,(k,O)=>(e.openBlock(),e.createElementBlock("div",{key:k.name||O,class:"w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"},[k.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:k.html,class:"text-gray-900 leading-relaxed"},null,8,np)):k.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component,k)),e.mergeProps({key:1,ref_for:!0},k.component==="Card"?k:N(k),{id:h.data.id,class:["w-full h-full",h.styling?.classItem]}),null,16,["id","class"])):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(r.value.length!==0?"col-span-8":"col-span-12")},[h.view==="tabs"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["overflow-hidden w-full",h.styling?.classTabWrapper])},[e.createElementVNode("div",{class:e.normalizeClass(["flex border-b border-gray-200 bg-gray-50 relative gap-4 my-6",h.styling?.classTabHeader])},[B.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",style:e.normalizeStyle({width:B.value[o.value]+"px",left:D.value[o.value]+"px"})},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>(e.openBlock(),e.createElementBlock("button",{key:k.name||O,ref_for:!0,ref:G=>S(G,O),onClick:G=>o.value=O,class:e.normalizeClass(["px-1 py-2 text-sm font-medium transition-colors",o.value===O?"text-blue-600 border-blue-600 border-b-2 ":"text-gray-600 hover:text-gray-800"])},e.toDisplayString(k.title||k.label||k.name||`Tab ${O+1}`),11,sp))),128))],2),e.createElementVNode("div",{class:e.normalizeClass([h.styling?.classTabContent,"p-1"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:k.name||O,class:e.normalizeClass(["transition-all duration-300 ease-in-out",o.value===O?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",h.classPanel||"w-full border-gray-100"])},[k.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:k.html,class:"text-gray-900 leading-relaxed"},null,8,op)):h.$slots[`tab-${O}`]?e.renderSlot(h.$slots,`tab-${O}`,{key:1,item:k,data:h.data}):k.items?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(pt),e.mergeProps({key:2,ref_for:!0},N(k),{items:k.items,"hide-title":!0,class:["w-full h-full",h.styling?.classItem],styling:h.styling}),null,16,["items","class","styling"])):k.component||k.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component||k.name,k)),e.mergeProps({key:3,ref_for:!0},k.component==="Card"?k:N(k),{styling:h.styling,id:h.data.id,class:["w-full h-full",h.styling?.classItem]}),null,16,["styling","id","class"])):e.renderSlot(h.$slots,k.slot||`tab-${O}`,{key:4,item:k,data:h.data})],2)),[[e.vShow,o.value===O]])),128))],2)],2)):h.view==="vertical-tabs"?(e.openBlock(),e.createElementBlock("div",rp,[e.createElementVNode("div",ip,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>(e.openBlock(),e.createElementBlock("button",{key:k.name||O,onClick:G=>o.value=O,class:e.normalizeClass(["relative px-1 py-4 text-sm font-medium text-left transition-colors duration-300",o.value===O?"text-blue-600 bg-white":"text-gray-600 hover:text-gray-800 hover:bg-gray-100"])},[e.createTextVNode(e.toDisplayString(k.title||k.label||k.name||`Tab ${O+1}`)+" ",1),o.value===O?(e.openBlock(),e.createElementBlock("span",ap,$[0]||($[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"currentColor",class:"remixicon text-blue-600 rounded-full bg-white shadow scale-90 opacity-100 transition ease-out"},[e.createElementVNode("path",{d:"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z"})],-1)]))):e.createCommentVNode("",!0)],10,lp))),128))]),e.createElementVNode("div",cp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(k,O)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:k.name||O,class:e.normalizeClass(["transition-all duration-300 ease-in-out",o.value===O?"opacity-100 translate-y-0":"opacity-0 -translate-y-2",h.classPanel||"w-full border-gray-100 py-2"])},[k.html?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:k.html,class:"text-gray-900 leading-relaxed"},null,8,dp)):h.$slots[`tab-${O}`]?e.renderSlot(h.$slots,`tab-${O}`,{key:1,item:k,data:h.data}):k.items?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(pt),e.mergeProps({key:2,ref_for:!0},N(k),{items:k.items,"hide-title":!0,class:["w-full h-full",h.styling?.classItem],styling:h.styling}),null,16,["items","class","styling"])):k.component||k.name?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component||k.name,k)),e.mergeProps({key:3,ref_for:!0},k.component==="Card"?k:N(k),{id:h.data.id,class:["w-full h-full",h.styling?.classItem]}),null,16,["id","class"])):e.renderSlot(h.$slots,k.slot||`tab-${O}`,{key:4,item:k,data:h.data})],2)),[[e.vShow,o.value===O]])),128))])])):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(h.styling?.classPlain||"p-1 w-full")},[e.createElementVNode("div",pp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,(k,O)=>(e.openBlock(),e.createElementBlock("div",{key:k.name||k.component||O,class:e.normalizeClass(C(k))},[h.$slots[`panel-${O}`]?e.renderSlot(h.$slots,`panel-${O}`,{key:0,item:k,data:h.data}):k.items||k.html?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(pt),e.mergeProps({key:1,ref_for:!0},N(k),{items:k.items||[],class:["w-full h-full",h.styling?.classItem],styling:h.styling}),null,16,["items","class","styling"])):k.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d(k.component,k)),e.mergeProps({key:2,ref_for:!0},N(k),{class:["w-full h-full",[h.styling?.classItem]],styling:h.styling}),null,16,["class","styling"])):(e.openBlock(),e.createElementBlock("div",fp,[e.renderSlot(h.$slots,k.slot||`panel-${O}`,{item:k,data:h.data})]))],2))),128))])],2))],2)])],2))}}),mp=["onClick"],yo=Le(e.defineComponent({__name:"CopyNotification",setup(t,{expose:n}){const s=e.ref([]);let o=1;const r=()=>{if(s.value.length>=10){const a=s.value[0];clearTimeout(a.timer),s.value.shift()}const i={id:o++,timer:setTimeout(()=>{l(i.id)},1500)};s.value.push(i)},l=i=>{const a=s.value.findIndex(c=>c.id===i);if(a!==-1){const c=s.value[a];clearTimeout(c.timer),s.value.splice(a,1)}};return n({addNotification:r}),e.onUnmounted(()=>{s.value.forEach(i=>{clearTimeout(i.timer)})}),(i,a)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.TransitionGroup,{name:"notification",tag:"div",class:"fixed top-4 right-4 z-50 space-y-2"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,c=>(e.openBlock(),e.createElementBlock("div",{key:c.id,class:"bg-green-500 text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-64 max-w-sm"},[e.createVNode(e.unref(Bo),{class:"h-5 w-5 text-green-100 flex-shrink-0"}),a[0]||(a[0]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("p",{class:"font-medium text-sm"},"Ссылка скопирована!"),e.createElementVNode("p",{class:"text-xs text-green-100 opacity-90"},"Файл добавлен в буфер обмена")],-1)),e.createElementVNode("button",{onClick:d=>l(c.id),class:"text-green-100 hover:text-white transition-colors flex-shrink-0"},[e.createVNode(e.unref(Zt),{class:"h-4 w-4"})],8,mp)]))),128))]),_:1})]))}}),[["__scopeId","data-v-55903525"]]);ft.install=function(t){t.component("vs-widget-file",bt),t.component("vs-widget-comments",yt),t.component("vs-widget-history",vt),t.component("vs-widget-gallery",kt),t.component("vs-widget-map",Et),t.component("vs-group-interface",Ht),t.component("CommentsWidget",yt),t.component("HistoryWidget",vt),t.component("GalleryWidget",kt),t.component("FilesWidget",bt),t.component("MapWidget",Et),t.component("Card",ft),t.component("CardItem",pt),t.component("DescriptionListWidget",Xt),t.component("CopyNotification",yo),t.component("GroupInterfaceWidget",Ht)},ee.Card=ft,ee.CardItem=pt,ee.CommentsWidget=yt,ee.CopyNotification=yo,ee.DescriptionListWidget=Xt,ee.FilesWidget=bt,ee.GalleryWidget=kt,ee.GroupInterfaceWidget=Ht,ee.HistoryWidget=vt,ee.MapWidget=Et,ee.TableWidget=mo,ee.default=ft,Object.defineProperties(ee,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryWidget.vue.d.ts","sourceRoot":"","sources":["../../../src/widgets/history/HistoryWidget.vue"],"names":[],"mappings":"AA8FE,OAAO,EAAc,kBAAkB,EAAC,MAAM,aAAa,CAAA;;AAyQ7D,wBAMG"}
1
+ {"version":3,"file":"HistoryWidget.vue.d.ts","sourceRoot":"","sources":["../../../src/widgets/history/HistoryWidget.vue"],"names":[],"mappings":"AA8FE,OAAO,EAAc,kBAAkB,EAAC,MAAM,aAAa,CAAA;;AA0Q7D,wBAMG"}
package/package.json CHANGED
@@ -1,58 +1,58 @@
1
- {
2
- "name": "@opengis/widgets",
3
- "private": false,
4
- "version": "0.0.29",
5
- "type": "module",
6
- "description": "A collection of independent widgets for comments, history, files, and gallery",
7
- "types": "./dist/index.d.ts",
8
- "main": "./dist/index.js",
9
- "files": [
10
- "dist"
11
- ],
12
- "scripts": {
13
- "dev": "vite",
14
- "build:ts": "vue-tsc -b && vite build",
15
- "type-check": "vue-tsc --noEmit -p tsconfig.app.json",
16
- "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.app.json",
17
- "build": "vue-tsc -b && vite build && npm run build:types",
18
- "build:app": "app=true vite build",
19
- "preview": "vite preview",
20
- "prepublishOnly": "bun run build"
21
- },
22
- "homepage": "https://widget.opengis.info/",
23
- "author": {
24
- "name": "OpenGIS",
25
- "url": "https://opengis.info/"
26
- },
27
- "keywords": [
28
- "widgets",
29
- "comments",
30
- "history",
31
- "files",
32
- "gallery",
33
- "vue",
34
- "components",
35
- "opengis"
36
- ],
37
- "license": "MIT",
38
- "dependencies": {},
39
- "devDependencies": {
40
- "@opengis/core": "^0.0.25",
41
- "@tsconfig/node22": "^22.0.2",
42
- "@types/node": "^24.2.0",
43
- "@vitejs/plugin-vue": "^6.0.0",
44
- "@vue/tsconfig": "^0.7.0",
45
- "autoprefixer": "^10.4.16",
46
- "lucide-vue-next": "^0.535.0",
47
- "postcss": "^8.4.31",
48
- "sass-embedded": "^1.92.1",
49
- "tailwindcss": "^3.4.0",
50
- "typescript": "~5.8.3",
51
- "vite": "^7.0.0",
52
- "vue": "^3.0.0",
53
- "vue-tsc": "^2.2.12"
54
- },
55
- "peerDependencies": {
56
- "vue": "^3.0.0"
57
- }
58
- }
1
+ {
2
+ "name": "@opengis/widgets",
3
+ "private": false,
4
+ "version": "0.0.31",
5
+ "type": "module",
6
+ "description": "A collection of independent widgets for comments, history, files, and gallery",
7
+ "types": "./dist/index.d.ts",
8
+ "main": "./dist/index.js",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "dev": "vite",
14
+ "build:ts": "vue-tsc -b && vite build",
15
+ "type-check": "vue-tsc --noEmit -p tsconfig.app.json",
16
+ "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.app.json",
17
+ "build": "vue-tsc -b && vite build && npm run build:types",
18
+ "build:app": "app=true vite build",
19
+ "preview": "vite preview",
20
+ "prepublishOnly": "bun run build"
21
+ },
22
+ "homepage": "https://widget.opengis.info/",
23
+ "author": {
24
+ "name": "OpenGIS",
25
+ "url": "https://opengis.info/"
26
+ },
27
+ "keywords": [
28
+ "widgets",
29
+ "comments",
30
+ "history",
31
+ "files",
32
+ "gallery",
33
+ "vue",
34
+ "components",
35
+ "opengis"
36
+ ],
37
+ "license": "MIT",
38
+ "dependencies": {},
39
+ "devDependencies": {
40
+ "@opengis/core": "^0.0.25",
41
+ "@tsconfig/node22": "^22.0.2",
42
+ "@types/node": "^24.2.0",
43
+ "@vitejs/plugin-vue": "^6.0.0",
44
+ "@vue/tsconfig": "^0.7.0",
45
+ "autoprefixer": "^10.4.16",
46
+ "lucide-vue-next": "^0.535.0",
47
+ "postcss": "^8.4.31",
48
+ "sass-embedded": "^1.92.1",
49
+ "tailwindcss": "^3.4.0",
50
+ "typescript": "~5.8.3",
51
+ "vite": "^7.0.0",
52
+ "vue": "^3.0.0",
53
+ "vue-tsc": "^2.2.12"
54
+ },
55
+ "peerDependencies": {
56
+ "vue": "^3.0.0"
57
+ }
58
+ }