@bagelink/vue 0.0.1145 → 0.0.1151

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.
Files changed (53) hide show
  1. package/dist/components/DataPreview.vue.d.ts +12 -35
  2. package/dist/components/DataPreview.vue.d.ts.map +1 -1
  3. package/dist/components/DataTable/DataTable.vue.d.ts +1 -1
  4. package/dist/components/DataTable/DataTable.vue.d.ts.map +1 -1
  5. package/dist/components/DataTable/useTableData.d.ts +10 -2
  6. package/dist/components/DataTable/useTableData.d.ts.map +1 -1
  7. package/dist/components/Draggable/Draggable.vue.d.ts +45 -0
  8. package/dist/components/Draggable/Draggable.vue.d.ts.map +1 -0
  9. package/dist/components/Draggable/index.d.ts +5 -0
  10. package/dist/components/Draggable/index.d.ts.map +1 -0
  11. package/dist/components/Draggable/useDraggable.d.ts +31 -0
  12. package/dist/components/Draggable/useDraggable.d.ts.map +1 -0
  13. package/dist/components/Draggable/vDraggable.d.ts +4 -0
  14. package/dist/components/Draggable/vDraggable.d.ts.map +1 -0
  15. package/dist/components/ListView.vue.d.ts.map +1 -1
  16. package/dist/components/form/BagelForm.vue.d.ts.map +1 -1
  17. package/dist/components/form/FieldArray.vue.d.ts.map +1 -1
  18. package/dist/components/form/index.d.ts +0 -1
  19. package/dist/components/form/index.d.ts.map +1 -1
  20. package/dist/components/form/inputs/FileUpload.vue.d.ts +3 -0
  21. package/dist/components/form/inputs/FileUpload.vue.d.ts.map +1 -1
  22. package/dist/components/form/inputs/NumberInput.vue.d.ts.map +1 -1
  23. package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts +3 -0
  24. package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts.map +1 -1
  25. package/dist/components/index.d.ts +2 -0
  26. package/dist/components/index.d.ts.map +1 -1
  27. package/dist/composables/useSchemaField.d.ts +15 -0
  28. package/dist/composables/useSchemaField.d.ts.map +1 -0
  29. package/dist/index.cjs +1256 -802
  30. package/dist/index.mjs +1258 -804
  31. package/dist/style.css +272 -285
  32. package/package.json +1 -1
  33. package/src/components/DataPreview.vue +45 -116
  34. package/src/components/DataTable/DataTable.vue +18 -12
  35. package/src/components/DataTable/useTableData.ts +50 -16
  36. package/src/components/Draggable/Draggable.vue +64 -0
  37. package/src/components/Draggable/index.ts +4 -0
  38. package/src/components/Draggable/useDraggable.ts +632 -0
  39. package/src/components/Draggable/vDraggable.ts +17 -0
  40. package/src/components/ListView.vue +6 -2
  41. package/src/components/Pill.vue +1 -1
  42. package/src/components/form/BagelForm.vue +16 -101
  43. package/src/components/form/FieldArray.vue +45 -17
  44. package/src/components/form/index.ts +0 -1
  45. package/src/components/form/inputs/FileUpload.vue +10 -6
  46. package/src/components/form/inputs/NumberInput.vue +3 -1
  47. package/src/components/form/inputs/RichText/index.vue +1 -1
  48. package/src/components/form/inputs/Upload/UploadInput.vue +12 -7
  49. package/src/components/index.ts +5 -1
  50. package/src/composables/useSchemaField.ts +193 -0
  51. package/src/styles/text.css +15 -11
  52. package/src/components/form/BglField.vue +0 -132
  53. package/src/components/form/BglForm.vue +0 -157
package/dist/index.cjs CHANGED
@@ -61,8 +61,8 @@ const _sfc_main$17 = /* @__PURE__ */ vue.defineComponent({
61
61
  };
62
62
  }
63
63
  });
64
- const _hoisted_1$X = ["aria-expanded", "aria-controls"];
65
- const _hoisted_2$E = { class: "accordion-label" };
64
+ const _hoisted_1$W = ["aria-expanded", "aria-controls"];
65
+ const _hoisted_2$D = { class: "accordion-label" };
66
66
  const _hoisted_3$u = ["id", "aria-hidden"];
67
67
  const _sfc_main$16 = /* @__PURE__ */ vue.defineComponent({
68
68
  __name: "AccordionItem",
@@ -127,18 +127,18 @@ const _sfc_main$16 = /* @__PURE__ */ vue.defineComponent({
127
127
  key: 0,
128
128
  class: vue.normalizeClass(["accordion-icon", [_ctx.iconClass, { open: vue.unref(isOpen) && _ctx.iconType === "expand_more" }]])
129
129
  }, [
130
- vue.createVNode(vue.unref(_sfc_main$p), { icon: computedIcon.value }, null, 8, ["icon"])
130
+ vue.createVNode(vue.unref(_sfc_main$q), { icon: computedIcon.value }, null, 8, ["icon"])
131
131
  ], 2)) : vue.createCommentVNode("", true),
132
132
  vue.renderSlot(_ctx.$slots, "head", {}, () => [
133
- vue.createElementVNode("span", _hoisted_2$E, vue.toDisplayString(_ctx.label), 1)
133
+ vue.createElementVNode("span", _hoisted_2$D, vue.toDisplayString(_ctx.label), 1)
134
134
  ], true),
135
135
  iconPosition.value === "end" ? (vue.openBlock(), vue.createElementBlock("span", {
136
136
  key: 1,
137
137
  class: vue.normalizeClass(["accordion-icon", [_ctx.iconClass, { open: vue.unref(isOpen) && _ctx.iconType === "expand_more" }]])
138
138
  }, [
139
- vue.createVNode(vue.unref(_sfc_main$p), { icon: computedIcon.value }, null, 8, ["icon"])
139
+ vue.createVNode(vue.unref(_sfc_main$q), { icon: computedIcon.value }, null, 8, ["icon"])
140
140
  ], 2)) : vue.createCommentVNode("", true)
141
- ], 8, _hoisted_1$X),
141
+ ], 8, _hoisted_1$W),
142
142
  vue.createVNode(vue.Transition, { name: "expand" }, {
143
143
  default: vue.withCtx(() => [
144
144
  vue.unref(isOpen) ? (vue.openBlock(), vue.createElementBlock("div", {
@@ -164,7 +164,7 @@ const _export_sfc = (sfc, props2) => {
164
164
  return target;
165
165
  };
166
166
  const AccordionItem = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["__scopeId", "data-v-3334f637"]]);
167
- const _hoisted_1$W = { class: "relative" };
167
+ const _hoisted_1$V = { class: "relative" };
168
168
  const _sfc_main$15 = /* @__PURE__ */ vue.defineComponent({
169
169
  __name: "AddressSearch",
170
170
  emits: ["addressSelected"],
@@ -187,8 +187,8 @@ const _sfc_main$15 = /* @__PURE__ */ vue.defineComponent({
187
187
  (_a2 = suggestion.value) == null ? void 0 : _a2.show();
188
188
  }
189
189
  return (_ctx, _cache) => {
190
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$W, [
191
- vue.createVNode(vue.unref(_sfc_main$V), {
190
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$V, [
191
+ vue.createVNode(vue.unref(_sfc_main$U), {
192
192
  ref_key: "suggestion",
193
193
  ref: suggestion,
194
194
  noAutoFocus: true,
@@ -203,7 +203,7 @@ const _sfc_main$15 = /* @__PURE__ */ vue.defineComponent({
203
203
  }, null, 8, ["modelValue"])
204
204
  ]),
205
205
  default: vue.withCtx(() => [
206
- vue.createVNode(vue.unref(ListView), { class: "-mt-2 hm-300px" }, {
206
+ vue.createVNode(vue.unref(_sfc_main$e), { class: "-mt-2 hm-300px" }, {
207
207
  default: vue.withCtx(() => [
208
208
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(searchResults), (result2, index2) => {
209
209
  return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$f), {
@@ -223,7 +223,7 @@ const _sfc_main$15 = /* @__PURE__ */ vue.defineComponent({
223
223
  };
224
224
  }
225
225
  });
226
- const _hoisted_1$V = {
226
+ const _hoisted_1$U = {
227
227
  key: 1,
228
228
  class: "bgl_btn-flex"
229
229
  };
@@ -293,8 +293,8 @@ const _sfc_main$14 = /* @__PURE__ */ vue.defineComponent({
293
293
  key: 0,
294
294
  class: "h-100p",
295
295
  size: "15"
296
- })) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$V, [
297
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
296
+ })) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$U, [
297
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
298
298
  key: 0,
299
299
  icon: _ctx.icon,
300
300
  class: "transition-400"
@@ -303,7 +303,7 @@ const _sfc_main$14 = /* @__PURE__ */ vue.defineComponent({
303
303
  !vue.unref(slots).default && _ctx.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
304
304
  vue.createTextVNode(vue.toDisplayString(_ctx.value), 1)
305
305
  ], 64)) : vue.createCommentVNode("", true),
306
- _ctx.iconEnd ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
306
+ _ctx.iconEnd ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
307
307
  key: 2,
308
308
  icon: _ctx.iconEnd,
309
309
  class: "transition-400"
@@ -318,8 +318,8 @@ const _sfc_main$14 = /* @__PURE__ */ vue.defineComponent({
318
318
  }
319
319
  });
320
320
  const Btn = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["__scopeId", "data-v-7b18a02c"]]);
321
- const _hoisted_1$U = ["dismissable"];
322
- const _hoisted_2$D = { class: "m-0" };
321
+ const _hoisted_1$T = ["dismissable"];
322
+ const _hoisted_2$C = { class: "m-0" };
323
323
  const _sfc_main$13 = /* @__PURE__ */ vue.defineComponent({
324
324
  __name: "Alert",
325
325
  props: {
@@ -341,14 +341,14 @@ const _sfc_main$13 = /* @__PURE__ */ vue.defineComponent({
341
341
  class: vue.normalizeClass(["alert", [_ctx.type]]),
342
342
  dismissable: _ctx.dismissable
343
343
  }, [
344
- _ctx.icon !== "none" ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
344
+ _ctx.icon !== "none" ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
345
345
  key: 0,
346
346
  class: "alert_icon",
347
347
  icon: _ctx.icon || _ctx.type,
348
348
  size: 2,
349
349
  color: color2[_ctx.type]
350
350
  }, null, 8, ["icon", "color"])) : vue.createCommentVNode("", true),
351
- vue.createElementVNode("p", _hoisted_2$D, vue.toDisplayString(_ctx.message), 1),
351
+ vue.createElementVNode("p", _hoisted_2$C, vue.toDisplayString(_ctx.message), 1),
352
352
  vue.createVNode(Btn, {
353
353
  flat: "",
354
354
  thin: "",
@@ -356,12 +356,12 @@ const _sfc_main$13 = /* @__PURE__ */ vue.defineComponent({
356
356
  icon: "close",
357
357
  onClick: _cache[0] || (_cache[0] = ($event) => isDismissed.value = true)
358
358
  })
359
- ], 10, _hoisted_1$U)) : vue.createCommentVNode("", true);
359
+ ], 10, _hoisted_1$T)) : vue.createCommentVNode("", true);
360
360
  };
361
361
  }
362
362
  });
363
363
  const Alert = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["__scopeId", "data-v-064bdd20"]]);
364
- const _hoisted_1$T = ["src", "alt"];
364
+ const _hoisted_1$S = ["src", "alt"];
365
365
  const _sfc_main$12 = /* @__PURE__ */ vue.defineComponent({
366
366
  __name: "Avatar",
367
367
  props: {
@@ -380,7 +380,7 @@ const _sfc_main$12 = /* @__PURE__ */ vue.defineComponent({
380
380
  key: 0,
381
381
  src: _ctx.src,
382
382
  alt: _ctx.name
383
- }, null, 8, _hoisted_1$T)) : (vue.openBlock(), vue.createElementBlock("p", {
383
+ }, null, 8, _hoisted_1$S)) : (vue.openBlock(), vue.createElementBlock("p", {
384
384
  key: 1,
385
385
  style: vue.normalizeStyle({ "line-height": `${_ctx.size}px`, "font-size": `calc(1.5rem * ${_ctx.size} / 50)` })
386
386
  }, vue.toDisplayString((_ctx.fallback || vue.unref(initials)(_ctx.name || "")).toUpperCase()), 5))
@@ -403,13 +403,13 @@ const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
403
403
  return vue.openBlock(), vue.createElementBlock("div", {
404
404
  class: vue.normalizeClass(["pill", [_ctx.color]])
405
405
  }, [
406
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
406
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
407
407
  key: 0,
408
408
  class: "inline",
409
409
  icon: _ctx.icon
410
410
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
411
411
  vue.createTextVNode(" " + vue.toDisplayString(_ctx.text) + " ", 1),
412
- _ctx.iconEnd ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
412
+ _ctx.iconEnd ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
413
413
  key: 1,
414
414
  class: "inline",
415
415
  icon: _ctx.iconEnd
@@ -419,7 +419,7 @@ const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({
419
419
  }
420
420
  });
421
421
  const Badge = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["__scopeId", "data-v-689f051f"]]);
422
- const _hoisted_1$S = { key: 1 };
422
+ const _hoisted_1$R = { key: 1 };
423
423
  const _sfc_main$10 = /* @__PURE__ */ vue.defineComponent({
424
424
  __name: "BglComponent",
425
425
  props: {
@@ -440,16 +440,16 @@ const _sfc_main$10 = /* @__PURE__ */ vue.defineComponent({
440
440
  return TextInput;
441
441
  }
442
442
  if (props2.field.$el === "number") return NumberInput;
443
- if (props2.field.$el === "array") return _sfc_main$P;
443
+ if (props2.field.$el === "array") return _sfc_main$Q;
444
444
  if (props2.field.$el === "select") return SelectInput;
445
445
  if (props2.field.$el === "toggle") return ToggleInput;
446
446
  if (props2.field.$el === "check") return CheckInput;
447
447
  if (props2.field.$el === "richtext") return RichText;
448
448
  if (props2.field.$el === "upload") return UploadInput;
449
449
  if (props2.field.$el === "file") return FileUpload;
450
- if (props2.field.$el === "date") return _sfc_main$K;
450
+ if (props2.field.$el === "date") return _sfc_main$L;
451
451
  if (props2.field.$el === "tabs") return TabsNav;
452
- if (props2.field.$el === "form") return _sfc_main$S;
452
+ if (props2.field.$el === "form") return _sfc_main$R;
453
453
  return props2.field.$el ?? "div";
454
454
  });
455
455
  function getFieldData(path) {
@@ -566,7 +566,7 @@ const _sfc_main$10 = /* @__PURE__ */ vue.defineComponent({
566
566
  id: [props2.id, child.id].filter(Boolean).join("."),
567
567
  field: child,
568
568
  "parent-path": props2.id
569
- }, null, 8, ["id", "field", "parent-path"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$S, vue.toDisplayString(child), 1))
569
+ }, null, 8, ["id", "field", "parent-path"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$R, vue.toDisplayString(child), 1))
570
570
  ], 64);
571
571
  }), 128))
572
572
  ], 64))
@@ -576,8 +576,8 @@ const _sfc_main$10 = /* @__PURE__ */ vue.defineComponent({
576
576
  };
577
577
  }
578
578
  });
579
- const _hoisted_1$R = ["src"];
580
- const _hoisted_2$C = ["autoplay", "muted", "loop", "controls", "playsinline"];
579
+ const _hoisted_1$Q = ["src"];
580
+ const _hoisted_2$B = ["autoplay", "muted", "loop", "controls", "playsinline"];
581
581
  const _hoisted_3$t = ["src", "type"];
582
582
  const _sfc_main$$ = /* @__PURE__ */ vue.defineComponent({
583
583
  __name: "BglVideo",
@@ -656,7 +656,7 @@ const _sfc_main$$ = /* @__PURE__ */ vue.defineComponent({
656
656
  allowfullscreen: "",
657
657
  title: "Video",
658
658
  allow: "autoplay"
659
- }, null, 12, _hoisted_1$R)) : _ctx.src ? (vue.openBlock(), vue.createElementBlock("video", {
659
+ }, null, 12, _hoisted_1$Q)) : _ctx.src ? (vue.openBlock(), vue.createElementBlock("video", {
660
660
  key: 1,
661
661
  ref_key: "video",
662
662
  ref: video,
@@ -671,13 +671,13 @@ const _sfc_main$$ = /* @__PURE__ */ vue.defineComponent({
671
671
  src: _ctx.src,
672
672
  type: `video/${videoFormat.value}`
673
673
  }, null, 8, _hoisted_3$t)
674
- ], 12, _hoisted_2$C)) : vue.createCommentVNode("", true)
674
+ ], 12, _hoisted_2$B)) : vue.createCommentVNode("", true)
675
675
  ], 2);
676
676
  };
677
677
  }
678
678
  });
679
679
  const BglVideo = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["__scopeId", "data-v-006552f6"]]);
680
- const _hoisted_1$Q = {
680
+ const _hoisted_1$P = {
681
681
  key: 0,
682
682
  class: "card_label"
683
683
  };
@@ -710,7 +710,7 @@ const _sfc_main$_ = /* @__PURE__ */ vue.defineComponent({
710
710
  }])
711
711
  }, {
712
712
  default: vue.withCtx(() => [
713
- _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$Q, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true),
713
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$P, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true),
714
714
  vue.renderSlot(_ctx.$slots, "default")
715
715
  ]),
716
716
  _: 3
@@ -720,13 +720,13 @@ const _sfc_main$_ = /* @__PURE__ */ vue.defineComponent({
720
720
  };
721
721
  }
722
722
  });
723
- const _hoisted_1$P = ["dir"];
724
- const _hoisted_2$B = {
723
+ const _hoisted_1$O = ["dir"];
724
+ const _hoisted_2$A = {
725
725
  key: 0,
726
726
  class: "dots"
727
727
  };
728
728
  const _hoisted_3$s = ["onClick"];
729
- const _hoisted_4$j = { class: "Handlers" };
729
+ const _hoisted_4$i = { class: "Handlers" };
730
730
  const GAP_PERCENT = 1;
731
731
  const VELOCITY_SAMPLE_DURATION = 100;
732
732
  const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
@@ -1149,7 +1149,7 @@ const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
1149
1149
  }, [
1150
1150
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1151
1151
  ], 38),
1152
- props2.dots && vue.unref(slideCount) > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$B, [
1152
+ props2.dots && vue.unref(slideCount) > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$A, [
1153
1153
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(slideCount), (i2) => {
1154
1154
  return vue.openBlock(), vue.createElementBlock("span", {
1155
1155
  key: i2,
@@ -1158,7 +1158,7 @@ const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
1158
1158
  }, null, 10, _hoisted_3$s);
1159
1159
  }), 128))
1160
1160
  ])) : vue.createCommentVNode("", true),
1161
- vue.createElementVNode("div", _hoisted_4$j, [
1161
+ vue.createElementVNode("div", _hoisted_4$i, [
1162
1162
  vue.createElementVNode("span", { onClick: prev }, [
1163
1163
  vue.renderSlot(_ctx.$slots, "prev", {
1164
1164
  index: vue.unref(activeSlideIndex),
@@ -1172,7 +1172,7 @@ const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
1172
1172
  }, void 0, true)
1173
1173
  ])
1174
1174
  ])
1175
- ], 14, _hoisted_1$P);
1175
+ ], 14, _hoisted_1$O);
1176
1176
  };
1177
1177
  }
1178
1178
  });
@@ -5500,21 +5500,21 @@ function styleInject(css2, ref) {
5500
5500
  return;
5501
5501
  }
5502
5502
  var head = document.head || document.getElementsByTagName("head")[0];
5503
- var style = document.createElement("style");
5504
- style.type = "text/css";
5503
+ var style2 = document.createElement("style");
5504
+ style2.type = "text/css";
5505
5505
  if (insertAt === "top") {
5506
5506
  if (head.firstChild) {
5507
- head.insertBefore(style, head.firstChild);
5507
+ head.insertBefore(style2, head.firstChild);
5508
5508
  } else {
5509
- head.appendChild(style);
5509
+ head.appendChild(style2);
5510
5510
  }
5511
5511
  } else {
5512
- head.appendChild(style);
5512
+ head.appendChild(style2);
5513
5513
  }
5514
- if (style.styleSheet) {
5515
- style.styleSheet.cssText = css2;
5514
+ if (style2.styleSheet) {
5515
+ style2.styleSheet.cssText = css2;
5516
5516
  } else {
5517
- style.appendChild(document.createTextNode(css2));
5517
+ style2.appendChild(document.createTextNode(css2));
5518
5518
  }
5519
5519
  }
5520
5520
  var css_248z$1 = "\n.chart {\n position: relative;\n}\n";
@@ -5688,8 +5688,8 @@ var script$9 = vue.defineComponent({
5688
5688
  }
5689
5689
  function computeDotStyle(active) {
5690
5690
  const dotStyle = props2.dotStyle;
5691
- const style = getStyle.value();
5692
- return Object.assign({ r: active ? 5 : 3, stroke: style.stroke, strokeWidth: style.strokeWidth, fill: "white" }, dotStyle);
5691
+ const style2 = getStyle.value();
5692
+ return Object.assign({ r: active ? 5 : 3, stroke: style2.stroke, strokeWidth: style2.strokeWidth, fill: "white" }, dotStyle);
5693
5693
  }
5694
5694
  const getStyle = vue.computed(() => {
5695
5695
  if (is$1(Function, props2.lineStyle)) {
@@ -5892,11 +5892,11 @@ var script$7 = vue.defineComponent({
5892
5892
  const getStyle = vue.computed(() => {
5893
5893
  return () => Object.assign({ colors: ["#4daf4a", "#377eb8", "#ff7f00", "#984ea3", "#e41a1c"], innerRadius: 2, cornerRadius: 0, padAngle: 0.01 }, props2.pieStyle);
5894
5894
  });
5895
- const style = getStyle.value();
5895
+ const style2 = getStyle.value();
5896
5896
  const arcs = vue.ref([]);
5897
5897
  const colors = ordinal(getStyle.value().colors);
5898
5898
  const arcGen = () => {
5899
- return arc().outerRadius(size2.value).innerRadius(style.innerRadius).cornerRadius(style.cornerRadius).padAngle(style.padAngle);
5899
+ return arc().outerRadius(size2.value).innerRadius(style2.innerRadius).cornerRadius(style2.cornerRadius).padAngle(style2.padAngle);
5900
5900
  };
5901
5901
  const transform = vue.ref(`translate(${size2.value + chart.canvas.x}, ${size2.value + chart.canvas.y})`);
5902
5902
  let pieSort;
@@ -6087,7 +6087,7 @@ const _hoisted_4$2$1 = {
6087
6087
  };
6088
6088
  const _hoisted_5$2$1 = ["x1", "y1", "x2", "y2"];
6089
6089
  const _hoisted_6$2$1 = ["x1", "y1", "x2", "y2"];
6090
- const _hoisted_7$a = ["x1", "y1", "x2", "y2"];
6090
+ const _hoisted_7$9 = ["x1", "y1", "x2", "y2"];
6091
6091
  function render$5(_ctx, _cache, $props, $setup, $data, $options) {
6092
6092
  return _ctx.data.length ? (vue.openBlock(), vue.createElementBlock("g", {
6093
6093
  key: 0,
@@ -6143,7 +6143,7 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
6143
6143
  y1: _ctx.canvas.y,
6144
6144
  x2: _ctx.canvas.width - 1,
6145
6145
  y2: _ctx.canvas.height
6146
- }, null, 8, _hoisted_7$a)
6146
+ }, null, 8, _hoisted_7$9)
6147
6147
  ])
6148
6148
  ], 8, _hoisted_1$4$1)) : vue.createCommentVNode("v-if", true);
6149
6149
  }
@@ -6179,7 +6179,7 @@ var script$4 = vue.defineComponent({
6179
6179
  const isRight = vue.computed(() => {
6180
6180
  return position.value.x >= canvas.value.width / 4 * 3;
6181
6181
  });
6182
- const style = vue.computed(() => {
6182
+ const style2 = vue.computed(() => {
6183
6183
  if (direction.value === "vertical") {
6184
6184
  return {
6185
6185
  top: position.value.y - 0.5 + "px",
@@ -6235,7 +6235,7 @@ var script$4 = vue.defineComponent({
6235
6235
  direction.value = chart.config.direction;
6236
6236
  canvas.value = chart.canvas;
6237
6237
  });
6238
- return { el, show, canvas, direction, style, styleContent, position, items, isRight };
6238
+ return { el, show, canvas, direction, style: style2, styleContent, position, items, isRight };
6239
6239
  }
6240
6240
  });
6241
6241
  const _hoisted_1$3$1 = { key: 0 };
@@ -6975,16 +6975,16 @@ var script$1 = vue.defineComponent({
6975
6975
  }
6976
6976
  const toKebabCase = (data3) => mapKeys(kebabize, data3);
6977
6977
  const getStyle = (r2) => {
6978
- const style = {
6978
+ const style2 = {
6979
6979
  stroke: r2.color,
6980
6980
  strokeWidth: 5,
6981
6981
  fill: r2.color,
6982
6982
  fillOpacity: 0.9
6983
6983
  };
6984
6984
  if (props2.rcStyle && typeof props2.rcStyle === "function") {
6985
- return Object.assign(Object.assign({}, style), props2.rcStyle(r2));
6985
+ return Object.assign(Object.assign({}, style2), props2.rcStyle(r2));
6986
6986
  }
6987
- return style;
6987
+ return style2;
6988
6988
  };
6989
6989
  function onMouseOver(i2) {
6990
6990
  selected.value = i2;
@@ -7011,9 +7011,9 @@ const _hoisted_1$1$1 = {
7011
7011
  };
7012
7012
  const _hoisted_2$1$1 = ["width", "height", "viewBox"];
7013
7013
  const _hoisted_3$r = { class: "layer-rectangles" };
7014
- const _hoisted_4$i = ["transform", "onMouseover"];
7015
- const _hoisted_5$h = ["width", "height"];
7016
- const _hoisted_6$e = {
7014
+ const _hoisted_4$h = ["transform", "onMouseover"];
7015
+ const _hoisted_5$g = ["width", "height"];
7016
+ const _hoisted_6$d = {
7017
7017
  x: 0 + 10,
7018
7018
  y: 0 + 20,
7019
7019
  "font-size": `15px`,
@@ -7049,21 +7049,21 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
7049
7049
  y: 0,
7050
7050
  width: r2.width,
7051
7051
  height: r2.height
7052
- }), null, 16, _hoisted_5$h),
7052
+ }), null, 16, _hoisted_5$g),
7053
7053
  vue.renderSlot(_ctx.$slots, "text", {
7054
7054
  r: r2,
7055
7055
  selected: _ctx.selected === i2
7056
7056
  }, () => [
7057
7057
  vue.createElementVNode(
7058
7058
  "text",
7059
- _hoisted_6$e,
7059
+ _hoisted_6$d,
7060
7060
  vue.toDisplayString(r2.data.name),
7061
7061
  1
7062
7062
  /* TEXT */
7063
7063
  )
7064
7064
  ])
7065
7065
  ])
7066
- ], 42, _hoisted_4$i);
7066
+ ], 42, _hoisted_4$h);
7067
7067
  }),
7068
7068
  128
7069
7069
  /* KEYED_FRAGMENT */
@@ -7120,19 +7120,19 @@ var script = vue.defineComponent({
7120
7120
  return { bar, canvas, direction, mouse };
7121
7121
  }
7122
7122
  });
7123
- const _hoisted_1$O = {
7123
+ const _hoisted_1$N = {
7124
7124
  key: 0,
7125
7125
  class: "layer-hover-bar"
7126
7126
  };
7127
- const _hoisted_2$A = ["x", "y", "width", "height"];
7127
+ const _hoisted_2$z = ["x", "y", "width", "height"];
7128
7128
  function render(_ctx, _cache, $props, $setup, $data, $options) {
7129
- return _ctx.mouse.hover ? (vue.openBlock(), vue.createElementBlock("g", _hoisted_1$O, [
7129
+ return _ctx.mouse.hover ? (vue.openBlock(), vue.createElementBlock("g", _hoisted_1$N, [
7130
7130
  vue.createElementVNode("rect", vue.mergeProps({ class: "hover-bar" }, _ctx.barStyle, {
7131
7131
  x: _ctx.bar.x,
7132
7132
  y: _ctx.bar.y,
7133
7133
  width: _ctx.bar.width > 0 ? _ctx.bar.width : 0,
7134
7134
  height: _ctx.bar.height > 0 ? _ctx.bar.height : 0
7135
- }), null, 16, _hoisted_2$A)
7135
+ }), null, 16, _hoisted_2$z)
7136
7136
  ])) : vue.createCommentVNode("v-if", true);
7137
7137
  }
7138
7138
  script.render = render;
@@ -7278,107 +7278,125 @@ const _sfc_main$Y = /* @__PURE__ */ vue.defineComponent({
7278
7278
  };
7279
7279
  }
7280
7280
  });
7281
- const _hoisted_1$N = {
7282
- key: 0,
7283
- class: "data"
7284
- };
7285
- const _hoisted_2$z = {
7286
- key: 0,
7287
- class: "data-row m_py-05"
7288
- };
7289
- const _hoisted_3$q = { class: "key" };
7290
- const _hoisted_4$h = { class: "m-0" };
7291
- const _hoisted_5$g = { key: 1 };
7292
- const _hoisted_6$d = {
7293
- key: 0,
7294
- class: "data-row"
7295
- };
7296
- const _hoisted_7$9 = { class: "key" };
7297
- const _hoisted_8$6 = { class: "m-0" };
7298
- const _hoisted_9$5 = {
7299
- key: 0,
7300
- class: "m-0"
7301
- };
7302
- const _sfc_main$X = /* @__PURE__ */ vue.defineComponent({
7303
- __name: "DataPreview",
7304
- props: /* @__PURE__ */ vue.mergeModels({
7305
- showFields: {},
7306
- schema: {},
7307
- title: {},
7308
- excludeUnset: { type: Boolean }
7309
- }, {
7310
- "data": { default: {} },
7311
- "dataModifiers": {}
7312
- }),
7313
- emits: ["update:data"],
7314
- setup(__props) {
7315
- const props2 = __props;
7316
- const itemData = vue.useModel(__props, "data");
7317
- function dataTransform(dataValue) {
7318
- if (!dataValue) return dataValue;
7319
- if (Array.isArray(dataValue)) return dataValue.map(dataTransform);
7320
- if (typeof dataValue === "object") {
7321
- Object.keys(dataValue).forEach((key) => {
7322
- dataValue[key] = dataTransform(dataValue[key]);
7323
- });
7324
- }
7325
- if (isDate(dataValue)) {
7326
- const date2 = new Date(dataValue);
7327
- return date2.toDateString();
7281
+ const SLOT_VALUE_COMPONENTS$1 = /* @__PURE__ */ new Set(["div", "span", "p"]);
7282
+ const SRC_VALUE_COMPONENTS$1 = /* @__PURE__ */ new Set(["img", "iframe"]);
7283
+ function useSchemaField(options) {
7284
+ const { mode = "form", getRowData, onUpdate } = options;
7285
+ function getComponent(field) {
7286
+ var _a2;
7287
+ const componentMap = {
7288
+ text: TextInput,
7289
+ textarea: TextInput,
7290
+ number: NumberInput,
7291
+ array: _sfc_main$Q,
7292
+ select: SelectInput,
7293
+ toggle: ToggleInput,
7294
+ check: CheckInput,
7295
+ richtext: RichText,
7296
+ upload: UploadInput,
7297
+ file: FileUpload,
7298
+ date: _sfc_main$L,
7299
+ tabs: TabsNav,
7300
+ form: _sfc_main$R
7301
+ };
7302
+ if (field.$el === "textarea" && !((_a2 = field.attrs) == null ? void 0 : _a2.multiline)) {
7303
+ field.attrs = { ...field.attrs, multiline: true };
7304
+ }
7305
+ return typeof field.$el === "object" ? field.$el : componentMap[field.$el] ?? field.$el ?? "div";
7306
+ }
7307
+ function renderField(field, slots) {
7308
+ const Component = getComponent(field);
7309
+ if (!Component) return null;
7310
+ const rowData = (getRowData == null ? void 0 : getRowData()) || {};
7311
+ const {
7312
+ $el,
7313
+ children: children2,
7314
+ options: options2,
7315
+ attrs,
7316
+ class: fieldClass,
7317
+ id,
7318
+ transform,
7319
+ slots: fieldSlots,
7320
+ required: required2,
7321
+ label,
7322
+ placeholder,
7323
+ disabled,
7324
+ ...fieldProps
7325
+ } = field;
7326
+ const currentValue = field.id ? rowData[field.id] : void 0;
7327
+ const transformedValue = transform ? transform(currentValue, rowData) : currentValue;
7328
+ const boundFieldProps = bindAttrs(fieldProps, currentValue, rowData);
7329
+ const isSlotValueComponent = typeof Component === "string" && SLOT_VALUE_COMPONENTS$1.has(Component);
7330
+ const isSrcValueComponent = typeof Component === "string" && SRC_VALUE_COMPONENTS$1.has(Component);
7331
+ const props2 = {
7332
+ ...boundFieldProps,
7333
+ required: required2,
7334
+ label,
7335
+ placeholder,
7336
+ disabled
7337
+ };
7338
+ if (mode === "form") {
7339
+ props2.modelValue = currentValue;
7340
+ props2["onUpdate:modelValue"] = (value) => {
7341
+ onUpdate == null ? void 0 : onUpdate(field, value);
7342
+ };
7343
+ } else {
7344
+ if (isSlotValueComponent) ;
7345
+ else if (isSrcValueComponent) {
7346
+ props2.src = transformedValue;
7347
+ } else {
7348
+ props2.modelValue = transformedValue;
7328
7349
  }
7329
- return dataValue;
7330
7350
  }
7331
- function isUnset(value) {
7332
- if (!props2.excludeUnset) return false;
7333
- return value === void 0 || value === null || value === "" || value.length === 0;
7351
+ Object.keys(props2).forEach((key) => props2[key] === void 0 && delete props2[key]);
7352
+ if (field.options) {
7353
+ props2.options = typeof field.options === "function" ? field.options(currentValue, rowData) : field.options;
7334
7354
  }
7335
- const computedSchema = vue.computed(() => getFallbackSchema([itemData.value], props2.showFields));
7336
- return (_ctx, _cache) => {
7337
- var _a2;
7338
- return __props.data ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$N, [
7339
- _ctx.title ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$4), {
7340
- key: 0,
7341
- label: _ctx.title
7342
- }, null, 8, ["label"])) : vue.createCommentVNode("", true),
7343
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.schema, (field) => {
7344
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
7345
- key: field.id
7346
- }, [
7347
- vue.unref(iffer)(field, itemData.value) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$z, [
7348
- vue.createElementVNode("div", _hoisted_3$q, [
7349
- vue.createElementVNode("p", _hoisted_4$h, vue.toDisplayString((field == null ? void 0 : field.label) || vue.unref(keyToLabel)(field.id)), 1)
7350
- ]),
7351
- vue.createVNode(vue.unref(_sfc_main$Q), {
7352
- modelValue: itemData.value,
7353
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => itemData.value = $event),
7354
- label: "",
7355
- style: { "width": "min-content", "min-width": "140px" },
7356
- field
7357
- }, null, 8, ["modelValue", "field"])
7358
- ])) : vue.createCommentVNode("", true)
7359
- ], 64);
7360
- }), 128)),
7361
- !((_a2 = _ctx.schema) == null ? void 0 : _a2.length) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$g, [
7362
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(computedSchema.value, ({ id, label }) => {
7363
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: id }, [
7364
- !isUnset(itemData.value[id]) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$d, [
7365
- vue.createElementVNode("div", _hoisted_7$9, [
7366
- vue.createElementVNode("p", _hoisted_8$6, vue.toDisplayString(label), 1)
7367
- ]),
7368
- vue.createElementVNode("div", null, [
7369
- id ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9$5, vue.toDisplayString(dataTransform(itemData.value[id])), 1)) : vue.createCommentVNode("", true)
7370
- ])
7371
- ])) : vue.createCommentVNode("", true)
7372
- ], 64);
7373
- }), 128))
7374
- ])) : vue.createCommentVNode("", true),
7375
- vue.renderSlot(_ctx.$slots, "footer", {}, void 0, true)
7376
- ])) : vue.createCommentVNode("", true);
7377
- };
7355
+ if (field.attrs) {
7356
+ const boundAttrs = bindAttrs(field.attrs, currentValue, rowData);
7357
+ Object.entries(boundAttrs).forEach(([key, value]) => {
7358
+ if (typeof value === "function") {
7359
+ props2[key] = value(currentValue, rowData);
7360
+ } else {
7361
+ props2[key] = value;
7362
+ }
7363
+ });
7364
+ }
7365
+ props2.class = classify(currentValue, rowData, fieldClass, props2.class);
7366
+ const componentSlots = {};
7367
+ if (children2 == null ? void 0 : children2.length) {
7368
+ componentSlots.default = () => children2.map((child) => {
7369
+ if (typeof child === "string") return child;
7370
+ return renderField(child, slots);
7371
+ });
7372
+ }
7373
+ if (isSlotValueComponent && transformedValue !== void 0) {
7374
+ componentSlots.default = () => (transformedValue == null ? void 0 : transformedValue.toString()) || "";
7375
+ }
7376
+ if (fieldSlots) {
7377
+ Object.entries(fieldSlots).forEach(([name, slot]) => {
7378
+ componentSlots[name] = typeof slot === "function" ? () => slot(currentValue, rowData) : () => slot;
7379
+ });
7380
+ }
7381
+ const slotContent = field.id && (slots == null ? void 0 : slots[field.id]) ? slots[field.id]({ row: rowData, field }) : void 0;
7382
+ if (mode === "preview") {
7383
+ return vue.h("div", { class: "preview-field" }, [
7384
+ vue.h("div", { class: "field-label" }, field.label || keyToLabel(field.id || "")),
7385
+ vue.h("div", { class: "field-value" }, [
7386
+ slotContent || (typeof field.$el === "object" ? vue.h(Component, props2, componentSlots) : (transformedValue == null ? void 0 : transformedValue.toString()) || "")
7387
+ ])
7388
+ ]);
7389
+ }
7390
+ return slotContent || vue.h(Component, props2, componentSlots);
7378
7391
  }
7379
- });
7380
- const DataPreview = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["__scopeId", "data-v-6c27f163"]]);
7392
+ return {
7393
+ renderField,
7394
+ getComponent
7395
+ };
7396
+ }
7381
7397
  const NON_DIGIT_REGEX = /[^\d.-]/g;
7398
+ const SLOT_VALUE_COMPONENTS = /* @__PURE__ */ new Set(["div", "span", "p"]);
7399
+ const SRC_VALUE_COMPONENTS = /* @__PURE__ */ new Set(["img", "iframe"]);
7382
7400
  function useTableData(options) {
7383
7401
  const sortField = vue.ref("");
7384
7402
  const sortDirection = vue.ref("ASC");
@@ -7388,41 +7406,50 @@ function useTableData(options) {
7388
7406
  data: options.data.value
7389
7407
  }));
7390
7408
  function transform(rowData) {
7391
- var _a2;
7392
7409
  const transformed = { ...rowData };
7393
7410
  const schemaFields = computedSchema.value.filter((f2) => f2.id);
7394
7411
  for (const field of schemaFields) {
7395
- const fieldData = rowData[`${field.id}`];
7396
- const newFieldVal = (_a2 = field.transform) == null ? void 0 : _a2.call(field, fieldData, rowData);
7397
- transformed[`_transformed_${field.id}`] = newFieldVal;
7412
+ const fieldId = field.id;
7413
+ const fieldData = rowData[fieldId];
7414
+ const transformKey = `_transformed_${String(fieldId)}`;
7415
+ const slotKey = `_slot_${String(fieldId)}`;
7416
+ const srcKey = `_src_${String(fieldId)}`;
7417
+ const originalKey = `_original_${String(fieldId)}`;
7418
+ transformed[originalKey] = fieldData;
7419
+ const isSlotValueComponent = typeof field.$el === "string" && SLOT_VALUE_COMPONENTS.has(field.$el);
7420
+ const isSrcValueComponent = typeof field.$el === "string" && SRC_VALUE_COMPONENTS.has(field.$el);
7421
+ transformed[slotKey] = isSlotValueComponent;
7422
+ transformed[srcKey] = isSrcValueComponent;
7423
+ if (field.transform) {
7424
+ const newFieldVal = field.transform(fieldData, rowData);
7425
+ transformed[transformKey] = newFieldVal;
7426
+ } else {
7427
+ transformed[transformKey] = fieldData;
7428
+ }
7398
7429
  }
7399
7430
  return transformed;
7400
7431
  }
7401
- const computedSortField = vue.computed(() => `_transformed_${sortField.value}`);
7432
+ const computedSortField = vue.computed(() => sortField.value ? `_transformed_${sortField.value}` : "");
7402
7433
  const computedData = vue.computed(() => {
7403
7434
  const currentData = options.data.value;
7404
7435
  if (!sortField.value || options.useServerSort === true) {
7405
7436
  return currentData.map(transform);
7406
7437
  }
7407
7438
  return currentData.map(transform).sort((a2, z2) => {
7408
- let aValue = a2[computedSortField.value] ?? a2[sortField.value] ?? "";
7409
- let bValue = z2[computedSortField.value] ?? z2[sortField.value] ?? "";
7439
+ const aValue = a2[computedSortField.value] ?? "";
7440
+ const bValue = z2[computedSortField.value] ?? "";
7410
7441
  if (isDate(aValue) && isDate(bValue)) {
7411
- aValue = new Date(aValue).getTime();
7412
- bValue = new Date(bValue).getTime();
7442
+ return sortDirection.value === "ASC" ? new Date(aValue).getTime() - new Date(bValue).getTime() : new Date(bValue).getTime() - new Date(aValue).getTime();
7413
7443
  }
7414
7444
  const numAValue = Number.parseInt(`${aValue}`.replaceAll(NON_DIGIT_REGEX, ""), 10);
7415
7445
  const numBValue = Number.parseInt(`${bValue}`.replaceAll(NON_DIGIT_REGEX, ""), 10);
7416
7446
  if (!Number.isNaN(numAValue) && !Number.isNaN(numBValue)) {
7417
- if (sortDirection.value === "ASC") return numAValue - numBValue;
7418
- return numBValue - numAValue;
7447
+ return sortDirection.value === "ASC" ? numAValue - numBValue : numBValue - numAValue;
7419
7448
  }
7420
7449
  if (typeof aValue === "string") {
7421
- if (sortDirection.value === "ASC") return aValue.localeCompare(bValue);
7422
- return bValue.localeCompare(aValue);
7450
+ return sortDirection.value === "ASC" ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue);
7423
7451
  }
7424
- if (sortDirection.value === "ASC") return aValue < bValue ? -1 : 1;
7425
- return aValue < bValue ? 1 : -1;
7452
+ return sortDirection.value === "ASC" ? aValue < bValue ? -1 : 1 : aValue < bValue ? 1 : -1;
7426
7453
  });
7427
7454
  });
7428
7455
  function toggleSort(fieldname) {
@@ -7448,6 +7475,47 @@ function useTableData(options) {
7448
7475
  toggleSort
7449
7476
  };
7450
7477
  }
7478
+ const _hoisted_1$M = { class: "data-preview" };
7479
+ const _sfc_main$X = /* @__PURE__ */ vue.defineComponent({
7480
+ __name: "DataPreview",
7481
+ props: {
7482
+ data: {},
7483
+ schema: { type: Function },
7484
+ showFields: {},
7485
+ useServerSort: { type: Boolean },
7486
+ selectable: { type: Boolean },
7487
+ onLastItemVisible: { type: Function }
7488
+ },
7489
+ setup(__props) {
7490
+ const props2 = __props;
7491
+ const slots = vue.useSlots();
7492
+ const data2 = vue.computed(() => Array.isArray(props2.data) ? props2.data : [props2.data]);
7493
+ const {
7494
+ computedSchema,
7495
+ computedData
7496
+ } = useTableData({
7497
+ data: data2,
7498
+ schema: props2.schema,
7499
+ showFields: props2.showFields,
7500
+ useServerSort: false
7501
+ });
7502
+ const firstItem = vue.computed(() => computedData.value[0] || {});
7503
+ const { renderField } = useSchemaField({
7504
+ mode: "preview",
7505
+ getRowData: () => firstItem.value
7506
+ });
7507
+ return (_ctx, _cache) => {
7508
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$M, [
7509
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(computedSchema), (field) => {
7510
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(renderField)(field, vue.unref(slots))), {
7511
+ key: field.id
7512
+ });
7513
+ }), 128))
7514
+ ]);
7515
+ };
7516
+ }
7517
+ });
7518
+ const DataPreview = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["__scopeId", "data-v-ad78731b"]]);
7451
7519
  function useTableSelection(options) {
7452
7520
  const allSelectorEl = vue.ref();
7453
7521
  const computedSelectedItems = vue.computed(() => options.selectedItems.value);
@@ -8076,12 +8144,12 @@ function useTableVirtualization(options) {
8076
8144
  registerLastItemObserver
8077
8145
  };
8078
8146
  }
8079
- const _hoisted_1$M = {
8147
+ const _hoisted_1$L = {
8080
8148
  key: 0,
8081
8149
  class: "loading-table-wrapper z-99 h-100 w-100 absolute inset"
8082
8150
  };
8083
8151
  const _hoisted_2$y = { class: "infinite-wrapper" };
8084
- const _hoisted_3$p = { class: "row first-row" };
8152
+ const _hoisted_3$q = { class: "row first-row" };
8085
8153
  const _hoisted_4$g = { key: 0 };
8086
8154
  const _hoisted_5$f = ["onClick"];
8087
8155
  const _hoisted_6$c = { class: "flex" };
@@ -8111,7 +8179,7 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8111
8179
  emits: /* @__PURE__ */ vue.mergeModels(["update:selectedItems", "orderBy", "select", "lastItemVisible"], ["update:loading", "update:itemHeight", "update:selectedItems"]),
8112
8180
  setup(__props, { emit: __emit }) {
8113
8181
  vue.useCssVars((_ctx) => ({
8114
- "15d141b2": vue.unref(computedItemHeight)
8182
+ "0984904d": vue.unref(computedItemHeight)
8115
8183
  }));
8116
8184
  const props2 = __props;
8117
8185
  const emit2 = __emit;
@@ -8126,6 +8194,7 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8126
8194
  }
8127
8195
  );
8128
8196
  const data2 = vue.computed(() => props2.data);
8197
+ vue.ref("");
8129
8198
  const {
8130
8199
  computedSchema,
8131
8200
  computedData,
@@ -8171,6 +8240,13 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8171
8240
  (_a2 = props2.onLastItemVisible) == null ? void 0 : _a2.call(props2);
8172
8241
  }
8173
8242
  });
8243
+ function renderFieldForRow(field, row) {
8244
+ const { renderField } = useSchemaField({
8245
+ mode: "table",
8246
+ getRowData: () => row
8247
+ });
8248
+ return renderField(field, slots);
8249
+ }
8174
8250
  const computedItemHeight = vue.computed(() => `${itemHeight.value}px`);
8175
8251
  vue.watch(
8176
8252
  () => loading.value,
@@ -8197,11 +8273,11 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8197
8273
  return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ class: "table-list-wrap h-100" }, vue.unref(containerProps), {
8198
8274
  class: { "loading-table": loading.value }
8199
8275
  }), [
8200
- loading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$M, _cache[4] || (_cache[4] = [
8276
+ loading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$L, _cache[4] || (_cache[4] = [
8201
8277
  vue.createElementVNode("div", { class: "loading-table-animation absolute oval" }, null, -1)
8202
8278
  ]))) : (vue.openBlock(), vue.createElementBlock("div", vue.normalizeProps(vue.mergeProps({ key: 1 }, vue.unref(wrapperProps))), [
8203
8279
  vue.createElementVNode("table", _hoisted_2$y, [
8204
- vue.createElementVNode("thead", _hoisted_3$p, [
8280
+ vue.createElementVNode("thead", _hoisted_3$q, [
8205
8281
  vue.unref(isSelectable) ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_4$g, [
8206
8282
  vue.createElementVNode("input", {
8207
8283
  ref_key: "allSelectorEl",
@@ -8224,7 +8300,7 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8224
8300
  vue.createElementVNode("div", {
8225
8301
  class: vue.normalizeClass(["list-arrows", { sorted: vue.unref(sortField) === field.id }])
8226
8302
  }, [
8227
- vue.createVNode(vue.unref(_sfc_main$p), {
8303
+ vue.createVNode(vue.unref(_sfc_main$q), {
8228
8304
  class: vue.normalizeClass({ desc: vue.unref(sortDirection) === "DESC" }),
8229
8305
  icon: "keyboard_arrow_up"
8230
8306
  }, null, 8, ["class"])
@@ -8264,13 +8340,7 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8264
8340
  row,
8265
8341
  field
8266
8342
  }, void 0, true) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$4, [
8267
- vue.createVNode(vue.unref(_sfc_main$10), {
8268
- id: field.id,
8269
- class: "embedded-field",
8270
- field,
8271
- modelValue: row,
8272
- label: ""
8273
- }, null, 8, ["id", "field", "modelValue"])
8343
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderFieldForRow(field, row))))
8274
8344
  ]))
8275
8345
  ]);
8276
8346
  }), 128))
@@ -8289,7 +8359,539 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
8289
8359
  };
8290
8360
  }
8291
8361
  });
8292
- const DataTable = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["__scopeId", "data-v-cf461a0e"]]);
8362
+ const DataTable = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["__scopeId", "data-v-18572328"]]);
8363
+ function useDraggable(options = {}) {
8364
+ const isDragging = vue.ref(false);
8365
+ const dragElement = vue.ref(null);
8366
+ const ghostElement = vue.ref(null);
8367
+ const dropIndicator = vue.ref(null);
8368
+ const dropTarget = vue.ref(null);
8369
+ const defaultOptions2 = {
8370
+ animation: 150,
8371
+ mode: "line",
8372
+ ghostClass: "draggable-ghost",
8373
+ dragClass: "draggable-dragging",
8374
+ dropIndicatorClass: "draggable-drop-indicator",
8375
+ ...options
8376
+ };
8377
+ let startX = 0;
8378
+ let startY = 0;
8379
+ let initialX = 0;
8380
+ let initialY = 0;
8381
+ let shiftAmount = 0;
8382
+ let cleanupFn;
8383
+ let scrollRAF = null;
8384
+ let lastDropIndex = -1;
8385
+ let lastUpdateTime = 0;
8386
+ const UPDATE_THRESHOLD = 150;
8387
+ const POSITION_CACHE = /* @__PURE__ */ new Map();
8388
+ function createGhost(el) {
8389
+ const ghost = el.cloneNode(true);
8390
+ const rect = el.getBoundingClientRect();
8391
+ ghost.style.position = "fixed";
8392
+ ghost.style.margin = "0";
8393
+ ghost.style.top = `${rect.top}px`;
8394
+ ghost.style.left = `${rect.left}px`;
8395
+ ghost.style.width = `${rect.width}px`;
8396
+ ghost.style.height = `${rect.height}px`;
8397
+ ghost.style.transform = "translate3d(0, 0, 0)";
8398
+ ghost.style.pointerEvents = "none";
8399
+ ghost.style.zIndex = "9999";
8400
+ ghost.style.cursor = "grabbing";
8401
+ ghost.style.willChange = "transform";
8402
+ ghost.classList.add(defaultOptions2.ghostClass);
8403
+ document.body.appendChild(ghost);
8404
+ return ghost;
8405
+ }
8406
+ function createDropIndicator(el) {
8407
+ const line2 = document.createElement("div");
8408
+ line2.classList.add(defaultOptions2.dropIndicatorClass);
8409
+ line2.style.position = "fixed";
8410
+ line2.style.pointerEvents = "none";
8411
+ line2.style.zIndex = "9999";
8412
+ line2.style.height = "2px";
8413
+ line2.style.background = "var(--primary-color, #0066ff)";
8414
+ line2.style.boxShadow = "0 0 4px rgba(0, 102, 255, 0.5)";
8415
+ line2.style.transition = "all 0.15s ease";
8416
+ line2.style.display = "none";
8417
+ const dot = document.createElement("div");
8418
+ dot.style.position = "absolute";
8419
+ dot.style.left = "-4px";
8420
+ dot.style.top = "-3px";
8421
+ dot.style.width = "8px";
8422
+ dot.style.height = "8px";
8423
+ dot.style.borderRadius = "50%";
8424
+ dot.style.background = "var(--primary-color, #0066ff)";
8425
+ line2.appendChild(dot);
8426
+ document.body.appendChild(line2);
8427
+ return line2;
8428
+ }
8429
+ function updateDropIndicator(target, isAfter2) {
8430
+ if (!dropIndicator.value) return;
8431
+ const rect = target.getBoundingClientRect();
8432
+ dropIndicator.value.style.display = "block";
8433
+ dropIndicator.value.style.width = `${rect.width}px`;
8434
+ dropIndicator.value.style.left = `${rect.left}px`;
8435
+ if (isAfter2) {
8436
+ dropIndicator.value.style.top = `${rect.bottom}px`;
8437
+ } else {
8438
+ dropIndicator.value.style.top = `${rect.top}px`;
8439
+ }
8440
+ }
8441
+ function findDraggableParent(element) {
8442
+ let current = element;
8443
+ while (current && (!("__drag_group" in current) || current.dataset.draggable === "false")) {
8444
+ current = current.parentElement;
8445
+ }
8446
+ return current;
8447
+ }
8448
+ function handleGhostMode(dragEl2) {
8449
+ dragEl2.style.opacity = "0.4";
8450
+ dragEl2.style.transform = "scale(0.95)";
8451
+ return dragEl2.offsetHeight;
8452
+ }
8453
+ function handleLineMode(dragEl2) {
8454
+ dragEl2.style.opacity = "0.5";
8455
+ return 2;
8456
+ }
8457
+ function cacheElementPositions(draggedList) {
8458
+ POSITION_CACHE.clear();
8459
+ draggedList.forEach((el, index2) => {
8460
+ const rect = el.getBoundingClientRect();
8461
+ POSITION_CACHE.set(index2, {
8462
+ top: rect.top,
8463
+ bottom: rect.bottom
8464
+ });
8465
+ });
8466
+ }
8467
+ function calculateDropIndex(e, draggedList, dragIndex, newDropTarget) {
8468
+ const now = Date.now();
8469
+ if (now - lastUpdateTime < UPDATE_THRESHOLD) {
8470
+ return lastDropIndex !== -1 ? lastDropIndex : dragIndex;
8471
+ }
8472
+ if (POSITION_CACHE.size === 0) {
8473
+ cacheElementPositions(draggedList);
8474
+ }
8475
+ const mouseY = e.clientY;
8476
+ const targetIndex = draggedList.indexOf(newDropTarget);
8477
+ const targetPos = POSITION_CACHE.get(targetIndex);
8478
+ if (!targetPos) return dragIndex;
8479
+ const elementHeight = targetPos.bottom - targetPos.top;
8480
+ const relativeY = mouseY - targetPos.top;
8481
+ const upperSticky = elementHeight * 0.3;
8482
+ const lowerSticky = elementHeight * 0.7;
8483
+ let dropIndex = targetIndex;
8484
+ if (targetIndex === dragIndex) {
8485
+ if (relativeY > lowerSticky) dropIndex += 1;
8486
+ } else if (targetIndex === lastDropIndex) {
8487
+ if (targetIndex > dragIndex) {
8488
+ if (relativeY < upperSticky) dropIndex = targetIndex;
8489
+ else dropIndex = targetIndex + 1;
8490
+ } else {
8491
+ if (relativeY > lowerSticky) dropIndex = targetIndex + 1;
8492
+ else dropIndex = targetIndex;
8493
+ }
8494
+ } else {
8495
+ if (relativeY > elementHeight * 0.6) dropIndex += 1;
8496
+ }
8497
+ lastDropIndex = dropIndex;
8498
+ lastUpdateTime = now;
8499
+ return dropIndex;
8500
+ }
8501
+ function cleanup() {
8502
+ document.removeEventListener("mousemove", onDragMove);
8503
+ document.removeEventListener("mouseup", onDragEnd);
8504
+ document.removeEventListener("keydown", onKeyDown);
8505
+ document.removeEventListener("touchmove", onTouchMove);
8506
+ document.removeEventListener("touchend", onTouchEnd);
8507
+ document.removeEventListener("touchcancel", onTouchEnd);
8508
+ window.removeEventListener("blur", cleanup);
8509
+ if (ghostElement.value) {
8510
+ ghostElement.value.style.opacity = "0";
8511
+ ghostElement.value.style.transform += " scale(0.8)";
8512
+ setTimeout(() => {
8513
+ var _a2, _b;
8514
+ (_b = (_a2 = ghostElement.value) == null ? void 0 : _a2.parentNode) == null ? void 0 : _b.removeChild(ghostElement.value);
8515
+ ghostElement.value = null;
8516
+ }, 150);
8517
+ }
8518
+ if (dropIndicator.value) {
8519
+ dropIndicator.value.style.opacity = "0";
8520
+ setTimeout(() => {
8521
+ var _a2, _b;
8522
+ (_b = (_a2 = dropIndicator.value) == null ? void 0 : _a2.parentNode) == null ? void 0 : _b.removeChild(dropIndicator.value);
8523
+ dropIndicator.value = null;
8524
+ }, 150);
8525
+ }
8526
+ if (dragElement.value) {
8527
+ const list = dragElement.value.__drag_list;
8528
+ list == null ? void 0 : list.forEach((el) => {
8529
+ el.style.transition = "";
8530
+ el.style.transform = "";
8531
+ el.style.opacity = "";
8532
+ });
8533
+ dragElement.value.classList.remove(defaultOptions2.dragClass);
8534
+ dragElement.value = null;
8535
+ }
8536
+ isDragging.value = false;
8537
+ dropTarget.value = null;
8538
+ document.body.style.userSelect = "";
8539
+ document.body.style.webkitUserSelect = "";
8540
+ document.body.style.cursor = "";
8541
+ if (scrollRAF) {
8542
+ cancelAnimationFrame(scrollRAF);
8543
+ scrollRAF = null;
8544
+ }
8545
+ lastDropIndex = -1;
8546
+ lastUpdateTime = 0;
8547
+ POSITION_CACHE.clear();
8548
+ }
8549
+ function onKeyDown(e) {
8550
+ if (e.key === "Escape" && isDragging.value) {
8551
+ cleanup();
8552
+ }
8553
+ }
8554
+ function onDragStart(e) {
8555
+ var _a2;
8556
+ if (defaultOptions2.disabled) return;
8557
+ if (e.button !== 0) return;
8558
+ if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
8559
+ const dragEl2 = findDraggableParent(e.target);
8560
+ if (!dragEl2 || dragEl2.dataset.draggable === "false") return;
8561
+ if (defaultOptions2.handle) {
8562
+ const handleEl = e.target.closest(defaultOptions2.handle);
8563
+ if (!handleEl || !dragEl2.contains(handleEl)) return;
8564
+ }
8565
+ e.preventDefault();
8566
+ isDragging.value = true;
8567
+ dragElement.value = dragEl2;
8568
+ startX = e.clientX;
8569
+ startY = e.clientY;
8570
+ const rect = dragEl2.getBoundingClientRect();
8571
+ initialX = rect.left;
8572
+ initialY = rect.top;
8573
+ ghostElement.value = createGhost(dragEl2);
8574
+ if (ghostElement.value) {
8575
+ ghostElement.value.style.left = `${initialX}px`;
8576
+ ghostElement.value.style.top = `${initialY}px`;
8577
+ }
8578
+ if (defaultOptions2.mode === "line") {
8579
+ dropIndicator.value = createDropIndicator();
8580
+ }
8581
+ dragEl2.classList.add(defaultOptions2.dragClass);
8582
+ shiftAmount = defaultOptions2.mode === "ghost" ? handleGhostMode(dragEl2) : handleLineMode(dragEl2);
8583
+ (_a2 = defaultOptions2.onStart) == null ? void 0 : _a2.call(defaultOptions2, e);
8584
+ document.body.style.userSelect = "none";
8585
+ document.body.style.webkitUserSelect = "none";
8586
+ document.body.style.cursor = "grabbing";
8587
+ window.addEventListener("blur", cleanup);
8588
+ document.addEventListener("mousemove", onDragMove);
8589
+ document.addEventListener("mouseup", onDragEnd);
8590
+ document.addEventListener("keydown", onKeyDown);
8591
+ }
8592
+ function findScrollParent(element) {
8593
+ let parent = element.parentElement;
8594
+ while (parent) {
8595
+ const { overflow, overflowY } = window.getComputedStyle(parent);
8596
+ if (/auto|scroll/.test(overflow + overflowY)) {
8597
+ return parent;
8598
+ }
8599
+ parent = parent.parentElement;
8600
+ }
8601
+ return document.scrollingElement || document.documentElement || document.body;
8602
+ }
8603
+ function autoScroll2(e) {
8604
+ if (!dragElement.value) return;
8605
+ if (scrollRAF) cancelAnimationFrame(scrollRAF);
8606
+ scrollRAF = requestAnimationFrame(() => {
8607
+ const scrollParent = findScrollParent(dragElement.value);
8608
+ const rect = scrollParent.getBoundingClientRect();
8609
+ const margin = 50;
8610
+ const speed = Math.min(20, rect.height * 0.1);
8611
+ const { scrollTop } = scrollParent;
8612
+ const maxScroll = scrollParent.scrollHeight - scrollParent.clientHeight;
8613
+ if (e.clientY - rect.top < margin) {
8614
+ const newScroll = Math.max(0, scrollTop - speed);
8615
+ scrollParent.scrollTop = newScroll;
8616
+ } else if (rect.bottom - e.clientY < margin) {
8617
+ const newScroll = Math.min(maxScroll, scrollTop + speed);
8618
+ scrollParent.scrollTop = newScroll;
8619
+ }
8620
+ });
8621
+ }
8622
+ function onDragMove(e) {
8623
+ if (!isDragging.value || !dragElement.value) return;
8624
+ if (ghostElement.value) {
8625
+ const dx = e.clientX - startX;
8626
+ const dy = e.clientY - startY;
8627
+ ghostElement.value.style.transform = `translate3d(${dx}px, ${dy}px, 0)`;
8628
+ }
8629
+ const list = dragElement.value.__drag_list;
8630
+ const draggedList = list.filter((el) => el.dataset.draggable !== "false");
8631
+ const dragIndex = draggedList.indexOf(dragElement.value);
8632
+ const elementAtPoint = document.elementFromPoint(e.clientX, e.clientY);
8633
+ const newDropTarget = findDraggableParent(elementAtPoint);
8634
+ if (!newDropTarget || newDropTarget.__drag_group !== dragElement.value.__drag_group) {
8635
+ if (dropIndicator.value) {
8636
+ dropIndicator.value.style.display = "none";
8637
+ }
8638
+ return;
8639
+ }
8640
+ const dropIndex = calculateDropIndex(e, draggedList, dragIndex, newDropTarget);
8641
+ if (dropTarget.value !== newDropTarget || dropTarget.value.__intended_index !== dropIndex) {
8642
+ dropTarget.value = newDropTarget;
8643
+ dropTarget.value.__intended_index = dropIndex;
8644
+ if (dropIndicator.value && defaultOptions2.mode === "line") {
8645
+ const isAfter2 = dropIndex > dragIndex;
8646
+ updateDropIndicator(newDropTarget, isAfter2);
8647
+ }
8648
+ const shift2 = shiftAmount;
8649
+ draggedList.forEach((el) => {
8650
+ el.style.transition = `transform ${defaultOptions2.animation}ms cubic-bezier(0.2, 0, 0, 1)`;
8651
+ el.style.transform = "translate3d(0, 0, 0)";
8652
+ if (el === dragElement.value) {
8653
+ if (defaultOptions2.mode === "ghost") {
8654
+ const offset2 = (dropIndex - dragIndex) * shift2;
8655
+ el.style.transform = `translate3d(0, ${offset2}px, 0)`;
8656
+ }
8657
+ } else {
8658
+ const currentIndex = draggedList.indexOf(el);
8659
+ if (dragIndex < dropIndex) {
8660
+ if (currentIndex > dragIndex && currentIndex <= dropIndex) {
8661
+ el.style.transform = `translate3d(0, -${shift2}px, 0)`;
8662
+ }
8663
+ } else if (dragIndex > dropIndex) {
8664
+ if (currentIndex >= dropIndex && currentIndex < dragIndex) {
8665
+ el.style.transform = `translate3d(0, ${shift2}px, 0)`;
8666
+ }
8667
+ }
8668
+ }
8669
+ });
8670
+ }
8671
+ autoScroll2(e);
8672
+ }
8673
+ function onDragEnd(e) {
8674
+ var _a2;
8675
+ if (!isDragging.value || !dragElement.value || !dropTarget.value) {
8676
+ cleanup();
8677
+ return;
8678
+ }
8679
+ const list = dragElement.value.__drag_list;
8680
+ if (!list || !list.length) {
8681
+ cleanup();
8682
+ return;
8683
+ }
8684
+ const draggedList = list.filter((el) => el.dataset.draggable !== "false");
8685
+ const actualDragIndex = draggedList.indexOf(dragElement.value);
8686
+ const actualDropIndex = dropTarget.value.__intended_index;
8687
+ if (actualDragIndex !== -1 && actualDropIndex !== -1) {
8688
+ list.forEach((el) => {
8689
+ el.style.transition = "none";
8690
+ el.style.transform = "";
8691
+ });
8692
+ void document.body.offsetHeight;
8693
+ const dragEvent = new MouseEvent("mouseup", e);
8694
+ dragEvent.oldIndex = actualDragIndex;
8695
+ dragEvent.newIndex = actualDropIndex;
8696
+ dragEvent.item = dragElement.value.__drag_data;
8697
+ (_a2 = defaultOptions2.onEnd) == null ? void 0 : _a2.call(defaultOptions2, dragEvent);
8698
+ }
8699
+ cleanup();
8700
+ }
8701
+ function onTouchStart(e) {
8702
+ var _a2;
8703
+ if (defaultOptions2.disabled || !e.target) return;
8704
+ const touch = e.touches[0];
8705
+ if (!touch) return;
8706
+ const target = e.target;
8707
+ const draggableParent = findDraggableParent(target);
8708
+ if (!draggableParent) return;
8709
+ const { handle } = defaultOptions2;
8710
+ if (handle && !target.closest(handle)) return;
8711
+ e.preventDefault();
8712
+ isDragging.value = true;
8713
+ dragElement.value = draggableParent;
8714
+ startX = touch.clientX;
8715
+ startY = touch.clientY;
8716
+ const rect = draggableParent.getBoundingClientRect();
8717
+ initialX = rect.left;
8718
+ initialY = rect.top;
8719
+ ghostElement.value = createGhost(draggableParent);
8720
+ if (ghostElement.value) {
8721
+ ghostElement.value.style.left = `${initialX}px`;
8722
+ ghostElement.value.style.top = `${initialY}px`;
8723
+ }
8724
+ if (defaultOptions2.mode === "line") {
8725
+ dropIndicator.value = createDropIndicator();
8726
+ }
8727
+ dragElement.value.classList.add(defaultOptions2.dragClass);
8728
+ shiftAmount = defaultOptions2.mode === "ghost" ? handleGhostMode(dragElement.value) : handleLineMode(dragElement.value);
8729
+ (_a2 = defaultOptions2.onStart) == null ? void 0 : _a2.call(defaultOptions2, e);
8730
+ document.body.style.userSelect = "none";
8731
+ document.body.style.webkitUserSelect = "none";
8732
+ document.body.style.cursor = "grabbing";
8733
+ window.addEventListener("blur", cleanup);
8734
+ document.addEventListener("touchmove", onTouchMove, { passive: false });
8735
+ document.addEventListener("touchend", onTouchEnd);
8736
+ document.addEventListener("touchcancel", onTouchEnd);
8737
+ }
8738
+ function onTouchMove(e) {
8739
+ e.preventDefault();
8740
+ const touch = e.touches[0];
8741
+ if (!touch) return;
8742
+ const mouseEvent = {
8743
+ clientX: touch.clientX,
8744
+ clientY: touch.clientY,
8745
+ target: document.elementFromPoint(touch.clientX, touch.clientY)
8746
+ };
8747
+ onDragMove(mouseEvent);
8748
+ autoScroll2(mouseEvent);
8749
+ }
8750
+ function onTouchEnd(e) {
8751
+ const touch = e.changedTouches[0];
8752
+ if (!touch) return;
8753
+ const mouseEvent = {
8754
+ clientX: touch.clientX,
8755
+ clientY: touch.clientY,
8756
+ target: document.elementFromPoint(touch.clientX, touch.clientY)
8757
+ };
8758
+ onDragEnd(mouseEvent);
8759
+ document.removeEventListener("touchmove", onTouchMove);
8760
+ document.removeEventListener("touchend", onTouchEnd);
8761
+ document.removeEventListener("touchcancel", onTouchEnd);
8762
+ }
8763
+ function initDraggableContainer(container) {
8764
+ cleanupFn == null ? void 0 : cleanupFn();
8765
+ isDragging.value = false;
8766
+ dragElement.value = null;
8767
+ ghostElement.value = null;
8768
+ dropIndicator.value = null;
8769
+ dropTarget.value = null;
8770
+ const elements = Array.from(container.children);
8771
+ elements.forEach((el) => {
8772
+ delete el.__drag_group;
8773
+ delete el.__drag_index;
8774
+ delete el.__drag_list;
8775
+ });
8776
+ let currentIndex = 0;
8777
+ elements.forEach((el, index2) => {
8778
+ if (el.dataset.draggable !== "false") {
8779
+ el.style.userSelect = "none";
8780
+ el.style.webkitUserSelect = "none";
8781
+ el.__drag_group = options.group;
8782
+ el.__drag_index = currentIndex++;
8783
+ el.__drag_list = elements.filter((e) => e.dataset.draggable !== "false");
8784
+ if (options.items) {
8785
+ el.__drag_data = options.items[index2];
8786
+ }
8787
+ el.addEventListener("mousedown", onDragStart);
8788
+ el.addEventListener("touchstart", onTouchStart);
8789
+ }
8790
+ });
8791
+ cleanupFn = () => {
8792
+ elements.forEach((el) => {
8793
+ el.removeEventListener("mousedown", onDragStart);
8794
+ el.removeEventListener("touchstart", onTouchStart);
8795
+ delete el.__drag_group;
8796
+ delete el.__drag_index;
8797
+ delete el.__drag_list;
8798
+ });
8799
+ cleanup();
8800
+ };
8801
+ }
8802
+ vue.onUnmounted(() => {
8803
+ cleanupFn == null ? void 0 : cleanupFn();
8804
+ });
8805
+ return {
8806
+ isDragging,
8807
+ dragElement,
8808
+ initDraggableContainer
8809
+ };
8810
+ }
8811
+ const style = document.createElement("style");
8812
+ style.textContent = `
8813
+ .draggable-ghost {
8814
+ opacity: 0.5;
8815
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
8816
+ transition: transform 0.1s;
8817
+
8818
+ }
8819
+ `;
8820
+ document.head.appendChild(style);
8821
+ const _sfc_main$V = /* @__PURE__ */ vue.defineComponent({
8822
+ __name: "Draggable",
8823
+ props: {
8824
+ modelValue: {},
8825
+ group: {},
8826
+ handle: {},
8827
+ mode: { default: "line" },
8828
+ disabled: { type: Boolean, default: false }
8829
+ },
8830
+ emits: ["update:modelValue", "start", "end"],
8831
+ setup(__props, { emit: __emit }) {
8832
+ const props2 = __props;
8833
+ const emit2 = __emit;
8834
+ const dragContainer = vue.ref();
8835
+ const { initDraggableContainer } = useDraggable({
8836
+ group: props2.group,
8837
+ handle: props2.handle,
8838
+ mode: props2.mode,
8839
+ disabled: props2.disabled,
8840
+ items: props2.modelValue,
8841
+ onStart: (event) => {
8842
+ emit2("start", event);
8843
+ },
8844
+ onEnd: (event) => {
8845
+ const newList = [...props2.modelValue];
8846
+ const [removed] = newList.splice(event.oldIndex, 1);
8847
+ newList.splice(event.newIndex, 0, removed);
8848
+ emit2("update:modelValue", newList);
8849
+ emit2("end", event);
8850
+ vue.nextTick(() => {
8851
+ if (dragContainer.value) {
8852
+ initDraggableContainer(dragContainer.value);
8853
+ }
8854
+ });
8855
+ }
8856
+ });
8857
+ vue.watch(() => props2.modelValue, () => {
8858
+ if (dragContainer.value) {
8859
+ initDraggableContainer(dragContainer.value);
8860
+ }
8861
+ }, { deep: true });
8862
+ vue.onMounted(() => {
8863
+ if (dragContainer.value) {
8864
+ initDraggableContainer(dragContainer.value);
8865
+ }
8866
+ });
8867
+ return (_ctx, _cache) => {
8868
+ return vue.openBlock(), vue.createElementBlock("div", {
8869
+ ref_key: "dragContainer",
8870
+ ref: dragContainer
8871
+ }, [
8872
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.modelValue, (item, index2) => {
8873
+ return vue.renderSlot(_ctx.$slots, "default", {
8874
+ key: index2,
8875
+ item,
8876
+ index: index2
8877
+ });
8878
+ }), 128))
8879
+ ], 512);
8880
+ };
8881
+ }
8882
+ });
8883
+ const vDraggable = {
8884
+ mounted(el, binding) {
8885
+ const { initDraggableContainer } = useDraggable(binding.value || {});
8886
+ initDraggableContainer(el);
8887
+ },
8888
+ updated(el, binding) {
8889
+ if (binding.value !== binding.oldValue) {
8890
+ const { initDraggableContainer } = useDraggable(binding.value || {});
8891
+ initDraggableContainer(el);
8892
+ }
8893
+ }
8894
+ };
8293
8895
  const sides = ["top", "right", "bottom", "left"];
8294
8896
  const alignments = ["start", "end"];
8295
8897
  const placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
@@ -10836,7 +11438,7 @@ const Gt$1 = {
10836
11438
  install: Ct$1,
10837
11439
  options: h
10838
11440
  };
10839
- const _sfc_main$V = /* @__PURE__ */ vue.defineComponent({
11441
+ const _sfc_main$U = /* @__PURE__ */ vue.defineComponent({
10840
11442
  __name: "Dropdown",
10841
11443
  props: /* @__PURE__ */ vue.mergeModels({
10842
11444
  value: {},
@@ -10914,9 +11516,9 @@ const _sfc_main$V = /* @__PURE__ */ vue.defineComponent({
10914
11516
  };
10915
11517
  }
10916
11518
  });
10917
- const _hoisted_1$L = { class: "px-1 pt-025 pb-1" };
11519
+ const _hoisted_1$K = { class: "px-1 pt-025 pb-1" };
10918
11520
  const _hoisted_2$x = { class: "ms-1" };
10919
- const _sfc_main$U = /* @__PURE__ */ vue.defineComponent({
11521
+ const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
10920
11522
  __name: "FieldSetVue",
10921
11523
  props: {
10922
11524
  label: {},
@@ -10924,15 +11526,15 @@ const _sfc_main$U = /* @__PURE__ */ vue.defineComponent({
10924
11526
  },
10925
11527
  setup(__props) {
10926
11528
  return (_ctx, _cache) => {
10927
- return vue.openBlock(), vue.createElementBlock("fieldset", _hoisted_1$L, [
11529
+ return vue.openBlock(), vue.createElementBlock("fieldset", _hoisted_1$K, [
10928
11530
  vue.createElementVNode("legend", _hoisted_2$x, vue.toDisplayString(_ctx.legend || _ctx.label), 1),
10929
11531
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
10930
11532
  ]);
10931
11533
  };
10932
11534
  }
10933
11535
  });
10934
- const FieldSetVue = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["__scopeId", "data-v-f7e758e5"]]);
10935
- const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
11536
+ const FieldSetVue = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__scopeId", "data-v-f7e758e5"]]);
11537
+ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
10936
11538
  __name: "Flag",
10937
11539
  props: {
10938
11540
  country: {},
@@ -10962,8 +11564,8 @@ const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
10962
11564
  };
10963
11565
  }
10964
11566
  });
10965
- const Flag = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__scopeId", "data-v-f99f1900"]]);
10966
- const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
11567
+ const Flag = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["__scopeId", "data-v-f99f1900"]]);
11568
+ const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
10967
11569
  __name: "BagelForm",
10968
11570
  props: {
10969
11571
  modelValue: { default: () => ({}) },
@@ -10988,28 +11590,6 @@ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
10988
11590
  const initial = JSON.stringify(initialFormData.value);
10989
11591
  return current !== initial;
10990
11592
  });
10991
- function getComponent(field) {
10992
- var _a2;
10993
- const componentMap = {
10994
- text: TextInput,
10995
- textarea: TextInput,
10996
- number: NumberInput,
10997
- array: _sfc_main$P,
10998
- select: SelectInput,
10999
- toggle: ToggleInput,
11000
- check: CheckInput,
11001
- richtext: RichText,
11002
- upload: UploadInput,
11003
- file: FileUpload,
11004
- date: _sfc_main$K,
11005
- tabs: TabsNav,
11006
- bglform: _sfc_main$S
11007
- };
11008
- if (field.$el === "textarea" && !((_a2 = field.attrs) == null ? void 0 : _a2.multiline)) {
11009
- field.attrs = { ...field.attrs, multiline: true };
11010
- }
11011
- return componentMap[field.$el] ?? field.$el ?? "div";
11012
- }
11013
11593
  function updateFormData(fieldId, value) {
11014
11594
  formData.value = {
11015
11595
  ...formData.value,
@@ -11021,61 +11601,6 @@ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
11021
11601
  emit2("submit", formData.value);
11022
11602
  initialFormData.value = { ...formData.value };
11023
11603
  }
11024
- function renderSchemaField(field) {
11025
- var _a2;
11026
- const Component = getComponent(field);
11027
- if (!Component) return null;
11028
- if (!shouldRenderField(field)) return null;
11029
- const {
11030
- $el,
11031
- vIf,
11032
- "v-if": vIf2,
11033
- children: children2,
11034
- options,
11035
- attrs,
11036
- class: fieldClass,
11037
- id,
11038
- onUpdate,
11039
- // Common form field props that need special handling
11040
- required: required2,
11041
- label,
11042
- placeholder,
11043
- disabled,
11044
- ...fieldProps
11045
- } = field;
11046
- const currentValue = field.id ? formData.value[field.id] : void 0;
11047
- const props22 = {
11048
- ...fieldProps,
11049
- required: required2,
11050
- label,
11051
- placeholder,
11052
- disabled,
11053
- "modelValue": currentValue,
11054
- "onUpdate:modelValue": (value) => {
11055
- var _a3;
11056
- if (!field.id) return;
11057
- updateFormData(field.id, value);
11058
- (_a3 = field.onUpdate) == null ? void 0 : _a3.call(field, value, formData.value);
11059
- }
11060
- };
11061
- Object.keys(props22).forEach((key) => props22[key] === void 0 && delete props22[key]);
11062
- if (field.options) {
11063
- props22.options = typeof field.options === "function" ? field.options(formData.value[field.id], formData.value) : field.options;
11064
- }
11065
- if (field.attrs) {
11066
- Object.entries(field.attrs).forEach(([key, value]) => {
11067
- props22[key] = typeof value === "function" ? value(formData.value[field.id], formData.value) : value;
11068
- });
11069
- }
11070
- if (field.class) {
11071
- props22.class = typeof field.class === "function" ? field.class(formData.value[field.id], formData.value) : field.class;
11072
- }
11073
- const slots = ((_a2 = field.children) == null ? void 0 : _a2.length) ? {
11074
- default: () => field.children.map((child) => typeof child === "string" ? child : renderSchemaField(child)).filter(Boolean),
11075
- ...field.slots
11076
- } : field.slots;
11077
- return vue.h(Component, props22, slots);
11078
- }
11079
11604
  function shouldRenderField(field) {
11080
11605
  const condition = field.vIf ?? field["v-if"];
11081
11606
  if (condition === void 0) return true;
@@ -11085,6 +11610,20 @@ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
11085
11610
  if (!form.value) return false;
11086
11611
  return form.value.reportValidity();
11087
11612
  }
11613
+ const { renderField } = useSchemaField({
11614
+ mode: "form",
11615
+ getRowData: () => formData.value,
11616
+ onUpdate: (field, value) => {
11617
+ var _a2;
11618
+ if (!field.id) return;
11619
+ updateFormData(field.id, value);
11620
+ (_a2 = field.onUpdate) == null ? void 0 : _a2.call(field, value, formData.value);
11621
+ }
11622
+ });
11623
+ function renderSchemaField(field) {
11624
+ if (!shouldRenderField(field)) return null;
11625
+ return renderField(field);
11626
+ }
11088
11627
  __expose({ form: form.value, isDirty: isDirty.value, validateForm });
11089
11628
  return (_ctx, _cache) => {
11090
11629
  return vue.openBlock(), vue.createElementBlock("form", {
@@ -11106,282 +11645,13 @@ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
11106
11645
  };
11107
11646
  }
11108
11647
  });
11109
- const state$1 = vue.reactive(/* @__PURE__ */ new Map());
11110
- function useTabs(group) {
11111
- if (!state$1.has(group)) {
11112
- state$1.set(group, vue.reactive({ currentTab: void 0 }));
11113
- }
11114
- const currentTab = vue.computed({
11115
- get: () => state$1.get(group).currentTab,
11116
- set: (val) => {
11117
- state$1.get(group).currentTab = val;
11118
- }
11119
- });
11120
- return { currentTab };
11121
- }
11122
- const _hoisted_1$K = ["onClick"];
11123
- const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
11124
- __name: "TabsNav",
11125
- props: {
11126
- title: {},
11127
- tabs: {},
11128
- modelValue: {},
11129
- sideTabs: { type: Boolean },
11130
- group: {},
11131
- flat: { type: Boolean },
11132
- vertical: { type: Boolean }
11133
- },
11134
- emits: ["update:modelValue"],
11135
- setup(__props, { emit: __emit }) {
11136
- const props2 = __props;
11137
- const emit2 = __emit;
11138
- const { currentTab } = useTabs(props2.group);
11139
- currentTab.value = props2.modelValue || typeof props2.tabs[0] === "string" ? props2.tabs[0] : props2.tabs[0].id;
11140
- const tabsWrap = vue.ref(void 0);
11141
- const tabs = vue.ref([]);
11142
- function updateIndicator() {
11143
- const activeTab = tabs.value.find((tab) => tab.classList.contains("active"));
11144
- if (activeTab && tabsWrap.value) {
11145
- const { offsetLeft, offsetWidth } = activeTab;
11146
- tabsWrap.value.style.setProperty("--indicator-left", `${offsetLeft}px`);
11147
- if (tabsWrap.value) {
11148
- tabsWrap.value.style.setProperty("--indicator-width", `${offsetWidth}px`);
11149
- }
11150
- }
11151
- }
11152
- function selectTab(tab) {
11153
- currentTab.value = typeof tab === "string" ? tab : tab.id;
11154
- emit2("update:modelValue", currentTab.value);
11155
- vue.nextTick(() => {
11156
- updateIndicator();
11157
- });
11158
- }
11159
- function isActive(tab) {
11160
- if (typeof tab === "string") return currentTab.value === tab;
11161
- return currentTab.value === tab.id;
11162
- }
11163
- function tabLabel(tab) {
11164
- if (typeof tab === "string") return tab;
11165
- return tab.label;
11166
- }
11167
- vue.watch(
11168
- () => props2.modelValue,
11169
- (value) => {
11170
- if (value && !isActive(value)) currentTab.value = value;
11171
- vue.nextTick(() => {
11172
- updateIndicator();
11173
- });
11174
- },
11175
- { immediate: true }
11176
- );
11177
- vue.onMounted(() => {
11178
- var _a2;
11179
- tabs.value = Array.from(((_a2 = tabsWrap.value) == null ? void 0 : _a2.querySelectorAll(".bgl_tab")) || []);
11180
- updateIndicator();
11181
- window.addEventListener("resize", updateIndicator);
11182
- });
11183
- vue.onBeforeUnmount(() => {
11184
- window.removeEventListener("resize", updateIndicator);
11185
- });
11186
- return (_ctx, _cache) => {
11187
- return vue.openBlock(), vue.createElementBlock("div", {
11188
- ref_key: "tabsWrap",
11189
- ref: tabsWrap,
11190
- class: vue.normalizeClass(["grid auto-flow-columns relative fit-content bgl_tabs_wrap overflow-hidden", { "bgl_flat-tabs": _ctx.flat, "bgl_vertical-tabs": _ctx.vertical }])
11191
- }, [
11192
- vue.renderSlot(_ctx.$slots, "tabs", vue.normalizeProps(vue.guardReactiveProps({ selectTab, isActive, tabLabel, tabs: tabs.value })), () => [
11193
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(props2.tabs, (tab, i2) => {
11194
- return vue.openBlock(), vue.createElementBlock("button", {
11195
- key: i2,
11196
- type: "button",
11197
- class: vue.normalizeClass([{ active: isActive(tab) }, "bgl_tab relative z-1"]),
11198
- onClick: ($event) => selectTab(tab)
11199
- }, [
11200
- typeof tab !== "string" && tab.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
11201
- key: 0,
11202
- icon: tab.icon
11203
- }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
11204
- vue.createTextVNode(" " + vue.toDisplayString(tabLabel(tab)), 1)
11205
- ], 10, _hoisted_1$K);
11206
- }), 128))
11207
- ], true)
11208
- ], 2);
11209
- };
11210
- }
11211
- });
11212
- const TabsNav = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__scopeId", "data-v-e680c2a4"]]);
11213
- const FORM_STATE_KEY = Symbol("bagelFormState");
11214
- function safeClone(obj) {
11215
- if (obj === null || typeof obj !== "object") return obj;
11216
- const seen = /* @__PURE__ */ new WeakSet();
11217
- return JSON.parse(JSON.stringify(obj, (key, value) => {
11218
- if (typeof value === "object" && value !== null) {
11219
- if (seen.has(value)) {
11220
- return void 0;
11221
- }
11222
- seen.add(value);
11223
- }
11224
- return value;
11225
- }));
11226
- }
11227
- function provideBagelFormState(initialData) {
11228
- const data2 = vue.ref(initialData);
11229
- const isDirty = vue.ref(false);
11230
- const getFieldData = (path) => {
11231
- if (!path) return "";
11232
- const keys4 = path.split(/[.[]/);
11233
- let current = data2.value;
11234
- for (let i2 = 0; i2 < keys4.length; i2++) {
11235
- const key = keys4[i2];
11236
- if (!current || typeof current !== "object" || !(key in current)) {
11237
- return "";
11238
- }
11239
- current = current[key];
11240
- }
11241
- return current ?? "";
11242
- };
11243
- const updateField = (path, value) => {
11244
- const keys4 = path.split(/[.[]/);
11245
- if (typeof data2.value !== "object" || data2.value === null) {
11246
- data2.value = {};
11247
- }
11248
- let current = data2.value;
11249
- for (let i2 = 0; i2 < keys4.length - 1; i2++) {
11250
- const key = keys4[i2];
11251
- if (!(key in current) || typeof current[key] !== "object" || current[key] === null) {
11252
- current[key] = {};
11253
- }
11254
- current = current[key];
11255
- }
11256
- const safeValue = safeClone(value);
11257
- current[keys4[keys4.length - 1]] = safeValue;
11258
- isDirty.value = true;
11259
- };
11260
- const state2 = {
11261
- data: data2,
11262
- getFieldData,
11263
- updateField,
11264
- isDirty
11265
- };
11266
- vue.provide(FORM_STATE_KEY, state2);
11267
- return state2;
11268
- }
11269
- function useBagelFormState() {
11270
- const state2 = vue.inject(FORM_STATE_KEY);
11271
- if (!state2) throw new Error("BagelFormState must be provided");
11272
- return state2;
11273
- }
11274
- const _hoisted_1$J = { key: 1 };
11275
- const _sfc_main$Q = /* @__PURE__ */ vue.defineComponent({
11276
- __name: "BglField",
11277
- props: {
11278
- field: {},
11279
- fieldID: {},
11280
- modelValue: {},
11281
- parentPath: {}
11282
- },
11283
- emits: ["update:modelValue"],
11284
- setup(__props, { emit: __emit }) {
11285
- const props2 = __props;
11286
- const emit2 = __emit;
11287
- const formState = vue.inject(FORM_STATE_KEY) ?? provideBagelFormState(props2.modelValue);
11288
- const customAttrs = vue.ref({});
11289
- const is4 = vue.computed(() => {
11290
- if (props2.field.$el === "text") return TextInput;
11291
- if (props2.field.$el === "textarea") {
11292
- customAttrs.value.multiline = true;
11293
- return TextInput;
11294
- }
11295
- if (props2.field.$el === "number") return NumberInput;
11296
- if (props2.field.$el === "array") return _sfc_main$P;
11297
- if (props2.field.$el === "select") return SelectInput;
11298
- if (props2.field.$el === "toggle") return ToggleInput;
11299
- if (props2.field.$el === "check") return CheckInput;
11300
- if (props2.field.$el === "richtext") return RichText;
11301
- if (props2.field.$el === "upload") return UploadInput;
11302
- if (props2.field.$el === "file") return FileUpload;
11303
- if (props2.field.$el === "date") return _sfc_main$K;
11304
- if (props2.field.$el === "tabs") return TabsNav;
11305
- if (props2.field.$el === "bglform") return _sfc_main$S;
11306
- return props2.field.$el ?? "div";
11307
- });
11308
- const fieldData = vue.computed({
11309
- get: () => {
11310
- if (!props2.fieldID) return props2.field.defaultValue ?? (props2.field.$el === "form" ? {} : "");
11311
- const value = formState.getFieldData(props2.fieldID);
11312
- if (props2.field.$el === "form" && !value) return {};
11313
- return value ?? "";
11314
- },
11315
- set: (val) => {
11316
- if (!props2.fieldID) return;
11317
- const currentValue = formState.getFieldData(props2.fieldID);
11318
- if (JSON.stringify(val) === JSON.stringify(currentValue)) return;
11319
- emit2("update:modelValue", val);
11320
- if (props2.field.onUpdate) {
11321
- props2.field.onUpdate(val, currentValue);
11322
- }
11323
- formState.updateField(props2.fieldID, val);
11324
- }
11325
- });
11326
- const vIf = vue.computed(() => {
11327
- if (props2.field["v-if"] === void 0 && props2.field.vIf === void 0) return true;
11328
- if (typeof props2.field["v-if"] === "boolean" || typeof props2.field.vIf === "boolean") return props2.field["v-if"];
11329
- if (typeof props2.field["v-if"] === "string" || typeof props2.field.vIf === "string") return true;
11330
- if (typeof props2.field["v-if"] === "function") return props2.field["v-if"](fieldData.value, formState.data.value);
11331
- if (typeof props2.field.vIf === "function") return props2.field.vIf(fieldData.value, formState.data.value);
11332
- return true;
11333
- });
11334
- const computedOptions = vue.computed(
11335
- () => bindAttrs({ options: props2.field.options }, fieldData.value, formState.data.value).options
11336
- );
11337
- const computedAttrs = vue.computed(() => {
11338
- const attrs = { ...customAttrs.value, ...props2.field.attrs };
11339
- return bindAttrs(attrs, fieldData.value, formState.data.value);
11340
- });
11341
- const computedClass = vue.computed(
11342
- () => {
11343
- var _a2;
11344
- return classify(fieldData.value, formState.data.value, props2.field.class, (_a2 = props2.field.attrs) == null ? void 0 : _a2.class);
11345
- }
11346
- );
11347
- return (_ctx, _cache) => {
11348
- const _component_BglField = vue.resolveComponent("BglField", true);
11349
- return vIf.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(is4.value), vue.mergeProps({ key: 0 }, computedAttrs.value, {
11350
- modelValue: fieldData.value,
11351
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => fieldData.value = $event),
11352
- fieldID: props2.fieldID,
11353
- required: _ctx.field.required,
11354
- class: computedClass.value,
11355
- label: _ctx.field.label,
11356
- placeholder: _ctx.field.placeholder || _ctx.field.label,
11357
- defaultValue: _ctx.field.defaultValue,
11358
- disabled: _ctx.field.disabled,
11359
- options: computedOptions.value,
11360
- helptext: _ctx.field.helptext
11361
- }), {
11362
- default: vue.withCtx(() => [
11363
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.field.children, (child, ii) => {
11364
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: ii }, [
11365
- typeof child !== "string" ? (vue.openBlock(), vue.createBlock(_component_BglField, {
11366
- key: 0,
11367
- fieldID: [props2.fieldID, child.id].filter(Boolean).join("."),
11368
- field: child,
11369
- "parent-path": props2.fieldID
11370
- }, null, 8, ["fieldID", "field", "parent-path"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$J, vue.toDisplayString(child), 1))
11371
- ], 64);
11372
- }), 128))
11373
- ]),
11374
- _: 1
11375
- }, 16, ["modelValue", "fieldID", "required", "class", "label", "placeholder", "defaultValue", "disabled", "options", "helptext"])) : vue.createCommentVNode("", true);
11376
- };
11377
- }
11378
- });
11379
- const _hoisted_1$I = { class: "label mb-05" };
11648
+ const _hoisted_1$J = { class: "label mb-05" };
11380
11649
  const _hoisted_2$w = {
11381
11650
  key: 0,
11382
- class: "-ms-05 ps-05 border-start"
11651
+ class: "ps-025 border-start"
11383
11652
  };
11384
- const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
11653
+ const _hoisted_3$p = { class: "bg-gray-80 -my-05 px-025 pt-065 txt-center" };
11654
+ const _sfc_main$Q = /* @__PURE__ */ vue.defineComponent({
11385
11655
  __name: "FieldArray",
11386
11656
  props: {
11387
11657
  el: { default: "div" },
@@ -11434,33 +11704,45 @@ const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
11434
11704
  $el: props2.el
11435
11705
  })
11436
11706
  );
11707
+ const { renderField } = useSchemaField({
11708
+ mode: "form",
11709
+ getRowData: () => data2.value,
11710
+ onUpdate: (field, value) => {
11711
+ if (!field.id) return;
11712
+ const index2 = Number.parseInt(field.id);
11713
+ if (Number.isNaN(index2)) return;
11714
+ data2.value[index2] = value;
11715
+ emitValue();
11716
+ }
11717
+ });
11437
11718
  return (_ctx, _cache) => {
11438
11719
  return vue.openBlock(), vue.createElementBlock("div", {
11439
11720
  class: vue.normalizeClass(props2.class)
11440
11721
  }, [
11441
- vue.createElementVNode("p", _hoisted_1$I, vue.toDisplayString(_ctx.label), 1),
11722
+ vue.createElementVNode("p", _hoisted_1$J, vue.toDisplayString(_ctx.label), 1),
11442
11723
  _ctx.schema ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$w, [
11443
11724
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(data2.value, (_2, i2) => {
11444
11725
  return vue.openBlock(), vue.createElementBlock("div", {
11445
11726
  key: i2,
11446
11727
  outline: "",
11447
11728
  thin: "",
11448
- class: "mb-05 itemBox transition p-05"
11729
+ class: "mb-05 itemBox transition ps-05 pb-025 pt-025 radius-05 gap-05 overflow-hidden"
11449
11730
  }, [
11450
- vue.createVNode(vue.unref(_sfc_main$S), {
11731
+ vue.createVNode(vue.unref(_sfc_main$R), {
11451
11732
  modelValue: data2.value[i2],
11452
11733
  "onUpdate:modelValue": [($event) => data2.value[i2] = $event, emitValue],
11453
11734
  schema: _ctx.schema
11454
11735
  }, null, 8, ["modelValue", "onUpdate:modelValue", "schema"]),
11455
- props2.delete ? (vue.openBlock(), vue.createBlock(vue.unref(Btn), {
11456
- key: 0,
11457
- icon: "delete",
11458
- value: "Delete",
11459
- class: "txt10 opacity-7 color-red",
11460
- thin: "",
11461
- flat: "",
11462
- onClick: ($event) => deleteItem(i2)
11463
- }, null, 8, ["onClick"])) : vue.createCommentVNode("", true)
11736
+ vue.createElementVNode("div", _hoisted_3$p, [
11737
+ props2.delete ? (vue.openBlock(), vue.createBlock(vue.unref(Btn), {
11738
+ key: 0,
11739
+ icon: "delete",
11740
+ class: "txt10 opacity-7",
11741
+ thin: "",
11742
+ flat: "",
11743
+ onClick: ($event) => deleteItem(i2)
11744
+ }, null, 8, ["onClick"])) : vue.createCommentVNode("", true)
11745
+ ])
11464
11746
  ]);
11465
11747
  }), 128)),
11466
11748
  _ctx.add ? (vue.openBlock(), vue.createBlock(vue.unref(Btn), {
@@ -11472,24 +11754,22 @@ const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
11472
11754
  onClick: addItem
11473
11755
  }, {
11474
11756
  default: vue.withCtx(() => [
11475
- vue.createElementVNode("p", null, "Add " + vue.toDisplayString(_ctx.label), 1)
11757
+ vue.createElementVNode("p", null, vue.toDisplayString(_ctx.label), 1)
11476
11758
  ]),
11477
11759
  _: 1
11478
11760
  })) : vue.createCommentVNode("", true)
11479
11761
  ])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(data2.value, (_2, i2) => {
11480
- return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$Q), {
11762
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(renderField)({ ...computedField.value, id: String(i2) })), {
11481
11763
  key: i2,
11482
- modelValue: data2.value[i2],
11483
- "onUpdate:modelValue": [($event) => data2.value[i2] = $event, emitValue],
11484
- field: computedField.value
11485
- }, null, 8, ["modelValue", "onUpdate:modelValue", "field"]);
11764
+ "onUpdate:modelValue": emitValue
11765
+ });
11486
11766
  }), 128))
11487
11767
  ], 2);
11488
11768
  };
11489
11769
  }
11490
11770
  });
11491
- const _hoisted_1$H = { class: "primary-checkbox" };
11492
- const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
11771
+ const _hoisted_1$I = { class: "primary-checkbox" };
11772
+ const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
11493
11773
  __name: "Checkbox",
11494
11774
  props: {
11495
11775
  "modelValue": { type: Boolean, ...{ default: false } },
@@ -11499,7 +11779,7 @@ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
11499
11779
  setup(__props) {
11500
11780
  const val = vue.useModel(__props, "modelValue");
11501
11781
  return (_ctx, _cache) => {
11502
- return vue.openBlock(), vue.createElementBlock("label", _hoisted_1$H, [
11782
+ return vue.openBlock(), vue.createElementBlock("label", _hoisted_1$I, [
11503
11783
  vue.renderSlot(_ctx.$slots, "label", {}, void 0, true),
11504
11784
  vue.withDirectives(vue.createElementVNode("input", {
11505
11785
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => val.value = $event),
@@ -11511,11 +11791,11 @@ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
11511
11791
  };
11512
11792
  }
11513
11793
  });
11514
- const Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-73f1d9ad"]]);
11515
- const _hoisted_1$G = ["title"];
11794
+ const Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["__scopeId", "data-v-73f1d9ad"]]);
11795
+ const _hoisted_1$H = ["title"];
11516
11796
  const _hoisted_2$v = ["id", "value", "required"];
11517
11797
  const _hoisted_3$o = ["for"];
11518
- const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
11798
+ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
11519
11799
  __name: "CheckInput",
11520
11800
  props: /* @__PURE__ */ vue.mergeModels({
11521
11801
  label: {},
@@ -11557,12 +11837,12 @@ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
11557
11837
  vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
11558
11838
  ], true)
11559
11839
  ], 8, _hoisted_3$o)
11560
- ], 10, _hoisted_1$G);
11840
+ ], 10, _hoisted_1$H);
11561
11841
  };
11562
11842
  }
11563
11843
  });
11564
- const CheckInput = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-03ed2982"]]);
11565
- const _hoisted_1$F = { class: "mb-05" };
11844
+ const CheckInput = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-03ed2982"]]);
11845
+ const _hoisted_1$G = { class: "mb-05" };
11566
11846
  const _hoisted_2$u = {
11567
11847
  key: 0,
11568
11848
  class: "label txt-start"
@@ -11574,7 +11854,7 @@ const _hoisted_3$n = {
11574
11854
  const _hoisted_4$f = { class: "overflow-hidden absolute inset-0 p-0 m-0 h-100 codeText" };
11575
11855
  const _hoisted_5$e = ["innerHTML"];
11576
11856
  const _hoisted_6$b = ["onKeydown"];
11577
- const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
11857
+ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
11578
11858
  __name: "Index",
11579
11859
  props: {
11580
11860
  language: {},
@@ -11656,7 +11936,7 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
11656
11936
  }
11657
11937
  }, { immediate: true });
11658
11938
  return (_ctx, _cache) => {
11659
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [
11939
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G, [
11660
11940
  _ctx.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_2$u, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true),
11661
11941
  vue.unref(loaded) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$n, [
11662
11942
  vue.createElementVNode("div", {
@@ -11692,10 +11972,10 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
11692
11972
  };
11693
11973
  }
11694
11974
  });
11695
- const CodeEditor = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-1fbc9b61"]]);
11696
- const _hoisted_1$E = ["title"];
11975
+ const CodeEditor = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-1fbc9b61"]]);
11976
+ const _hoisted_1$F = ["title"];
11697
11977
  const _hoisted_2$t = ["id", "placeholder", "required"];
11698
- const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
11978
+ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
11699
11979
  __name: "ColorPicker",
11700
11980
  props: {
11701
11981
  label: {},
@@ -11737,7 +12017,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
11737
12017
  [vue.vModelText, inputVal.value]
11738
12018
  ])
11739
12019
  ])
11740
- ], 10, _hoisted_1$E)) : vue.createCommentVNode("", true);
12020
+ ], 10, _hoisted_1$F)) : vue.createCommentVNode("", true);
11741
12021
  };
11742
12022
  }
11743
12023
  });
@@ -20295,9 +20575,9 @@ const eo = ({
20295
20575
  Object.entries(go).forEach(([e, t]) => {
20296
20576
  e !== "default" && (Hn[e] = t);
20297
20577
  });
20298
- const _hoisted_1$D = ["title"];
20578
+ const _hoisted_1$E = ["title"];
20299
20579
  const _hoisted_2$s = { key: 0 };
20300
- const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
20580
+ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
20301
20581
  __name: "DateInput",
20302
20582
  props: {
20303
20583
  required: { type: Boolean },
@@ -20355,11 +20635,11 @@ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
20355
20635
  "minutes-grid-increment": _ctx.minutesGridIncrement,
20356
20636
  "start-time": { hours: 8, minutes: 0 }
20357
20637
  }), null, 16, ["modelValue", "required", "enable-time-picker", "allowed-dates", "time-picker-inline", "minutes-increment", "minutes-grid-increment"])
20358
- ], 10, _hoisted_1$D);
20638
+ ], 10, _hoisted_1$E);
20359
20639
  };
20360
20640
  }
20361
20641
  });
20362
- const _hoisted_1$C = ["title"];
20642
+ const _hoisted_1$D = ["title"];
20363
20643
  const _hoisted_2$r = { key: 0 };
20364
20644
  const _hoisted_3$m = {
20365
20645
  key: 0,
@@ -20387,13 +20667,13 @@ const _hoisted_15$2 = {
20387
20667
  class: "year-grid grid gap-05 p-0"
20388
20668
  };
20389
20669
  const _hoisted_16$2 = ["disabled", "onClick"];
20390
- const _hoisted_17 = {
20670
+ const _hoisted_17$2 = {
20391
20671
  key: 0,
20392
20672
  class: "time-picker flex column gap-1 w-120px"
20393
20673
  };
20394
20674
  const _hoisted_18 = { class: "flex gap-025" };
20395
20675
  const _hoisted_19 = { class: "txt-center opacity-6 txt14" };
20396
- const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
20676
+ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
20397
20677
  __name: "DatePick",
20398
20678
  props: {
20399
20679
  required: { type: Boolean },
@@ -20675,7 +20955,7 @@ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
20675
20955
  }), 128))
20676
20956
  ]))
20677
20957
  ]),
20678
- _ctx.enableTime && vue.unref(currentView) === "days" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17, [
20958
+ _ctx.enableTime && vue.unref(currentView) === "days" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17$2, [
20679
20959
  vue.createElementVNode("div", _hoisted_18, [
20680
20960
  vue.createVNode(vue.unref(NumberInput), {
20681
20961
  center: "",
@@ -20730,12 +21010,12 @@ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
20730
21010
  ]),
20731
21011
  _: 1
20732
21012
  }, 8, ["shown"])
20733
- ], 10, _hoisted_1$C);
21013
+ ], 10, _hoisted_1$D);
20734
21014
  };
20735
21015
  }
20736
21016
  });
20737
- const DatePick = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-8de3f3c6"]]);
20738
- const _hoisted_1$B = { class: "datetime-wrap" };
21017
+ const DatePick = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-8de3f3c6"]]);
21018
+ const _hoisted_1$C = { class: "datetime-wrap" };
20739
21019
  const _hoisted_2$q = { class: "date-wrap" };
20740
21020
  const _hoisted_3$l = {
20741
21021
  key: 0,
@@ -20743,7 +21023,7 @@ const _hoisted_3$l = {
20743
21023
  };
20744
21024
  const _hoisted_4$d = ["id", "name", "value"];
20745
21025
  const _hoisted_5$c = ["for"];
20746
- const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
21026
+ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
20747
21027
  __name: "DatePicker",
20748
21028
  props: {
20749
21029
  label: {},
@@ -20771,7 +21051,7 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
20771
21051
  return `${hour}:${minute}`;
20772
21052
  });
20773
21053
  return (_ctx, _cache) => {
20774
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, [
21054
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, [
20775
21055
  vue.createElementVNode("div", _hoisted_2$q, [
20776
21056
  vue.createVNode(vue.unref(Hn), vue.mergeProps({
20777
21057
  modelValue: selectedDate.value,
@@ -20812,7 +21092,7 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
20812
21092
  };
20813
21093
  }
20814
21094
  });
20815
- const _hoisted_1$A = { class: "bagel-input" };
21095
+ const _hoisted_1$B = { class: "bagel-input" };
20816
21096
  const _hoisted_2$p = {
20817
21097
  key: 0,
20818
21098
  placeholder: "required",
@@ -20823,7 +21103,7 @@ const _hoisted_2$p = {
20823
21103
  const _hoisted_3$k = { class: "m-05 flex opacity-7 z-99" };
20824
21104
  const _hoisted_4$c = { class: "ellipsis-1 word-break-all h-20 m-0 color-black" };
20825
21105
  const _hoisted_5$b = { class: "flex gap-025 rounded pe-1 ps-05 py-025 bg-gray-80 -my-1" };
20826
- const _hoisted_6$9 = { class: "ellipsis-1 word-break-all h-20 m-0 color-black txt18" };
21106
+ const _hoisted_6$9 = { class: "ellipsis-1 word-break-all h-20 m-0 color-black txt16" };
20827
21107
  const _hoisted_7$6 = {
20828
21108
  key: 1,
20829
21109
  class: "txt-gray txt-12"
@@ -20852,7 +21132,8 @@ const _hoisted_15$1 = {
20852
21132
  class: "progress"
20853
21133
  };
20854
21134
  const _hoisted_16$1 = { class: "p-1 flex column hover fileUploadPlaceHolder justify-content-center mb-05" };
20855
- const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21135
+ const _hoisted_17$1 = { class: "pretty balance" };
21136
+ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
20856
21137
  __name: "FileUpload",
20857
21138
  props: /* @__PURE__ */ vue.mergeModels({
20858
21139
  label: {},
@@ -20868,7 +21149,10 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
20868
21149
  theme: { default: "dropzone" },
20869
21150
  accept: { default: "*" },
20870
21151
  required: { type: Boolean },
20871
- disabled: { type: Boolean }
21152
+ disabled: { type: Boolean },
21153
+ dropPlaceholder: {},
21154
+ noFilePlaceholder: {},
21155
+ btnPlaceholder: {}
20872
21156
  }, {
20873
21157
  "modelValue": {
20874
21158
  default: () => []
@@ -21024,7 +21308,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21024
21308
  return (_ctx, _cache) => {
21025
21309
  const _directive_tooltip = vue.resolveDirective("tooltip");
21026
21310
  const _directive_lightbox = vue.resolveDirective("lightbox");
21027
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$A, [
21311
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$B, [
21028
21312
  vue.createElementVNode("label", null, vue.toDisplayString(_ctx.label), 1),
21029
21313
  _ctx.required && !storageFiles.value.length ? (vue.openBlock(), vue.createElementBlock("input", _hoisted_2$p)) : vue.createCommentVNode("", true),
21030
21314
  _ctx.theme === "basic" ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$_), {
@@ -21040,13 +21324,9 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21040
21324
  class: "px-1-5",
21041
21325
  icon: "upload",
21042
21326
  outline: "",
21327
+ value: _ctx.btnPlaceholder || "Upload",
21043
21328
  onClick: browse
21044
- }, {
21045
- default: vue.withCtx(() => _cache[2] || (_cache[2] = [
21046
- vue.createTextVNode(" Upload ")
21047
- ])),
21048
- _: 1
21049
- })) : vue.createCommentVNode("", true),
21329
+ }, null, 8, ["value"])) : vue.createCommentVNode("", true),
21050
21330
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(storageFiles.value, (file) => {
21051
21331
  return vue.openBlock(), vue.createElementBlock("div", {
21052
21332
  key: file.id,
@@ -21087,7 +21367,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21087
21367
  [_directive_lightbox, { src: file.url, download: true }]
21088
21368
  ]),
21089
21369
  vue.createElementVNode("div", _hoisted_5$b, [
21090
- vue.createVNode(vue.unref(_sfc_main$p), {
21370
+ vue.createVNode(vue.unref(_sfc_main$q), {
21091
21371
  icon: "draft",
21092
21372
  size: 1.5
21093
21373
  }),
@@ -21107,7 +21387,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21107
21387
  ])
21108
21388
  ]);
21109
21389
  }), 128)),
21110
- !storageFiles.value.length && !fileQueue.value.length ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$6, " No file selected ")) : vue.createCommentVNode("", true)
21390
+ !storageFiles.value.length && !fileQueue.value.length ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$6, vue.toDisplayString(_ctx.noFilePlaceholder || "No file selected"), 1)) : vue.createCommentVNode("", true)
21111
21391
  ]),
21112
21392
  _: 1
21113
21393
  })) : (vue.openBlock(), vue.createElementBlock("div", {
@@ -21138,7 +21418,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21138
21418
  class: "multi-preview",
21139
21419
  src: file.url,
21140
21420
  alt: ""
21141
- }, null, 8, ["src"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
21421
+ }, null, 8, ["src"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
21142
21422
  key: 1,
21143
21423
  icon: "draft",
21144
21424
  class: "multi-preview"
@@ -21168,7 +21448,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21168
21448
  src: fileToUrl(fileQ.file),
21169
21449
  alt: ""
21170
21450
  }, null, 8, ["width", "src"])) : vue.createCommentVNode("", true)
21171
- ], 64)) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
21451
+ ], 64)) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
21172
21452
  key: 1,
21173
21453
  icon: "draft",
21174
21454
  class: "multi-preview"
@@ -21179,7 +21459,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21179
21459
  style: vue.normalizeStyle([`--p:${fileQ.progress}`, { "--b": "2px" }])
21180
21460
  }, [
21181
21461
  fileQ.progress < 100 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_11$2, vue.toDisplayString(`${fileQ.progress.toFixed(0)}`), 1)) : vue.createCommentVNode("", true),
21182
- vue.createVNode(vue.unref(_sfc_main$p), {
21462
+ vue.createVNode(vue.unref(_sfc_main$q), {
21183
21463
  class: "success",
21184
21464
  icon: "check"
21185
21465
  })
@@ -21231,7 +21511,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21231
21511
  }, null, 8, ["src"]), [
21232
21512
  [_directive_lightbox, { src: file.url, download: true }]
21233
21513
  ])
21234
- ])) : vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
21514
+ ])) : vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
21235
21515
  key: 1,
21236
21516
  size: 4,
21237
21517
  weight: "2",
@@ -21252,7 +21532,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21252
21532
  style: vue.normalizeStyle([`--p:${fileQ.progress}`, { "--b": "2px" }])
21253
21533
  }, [
21254
21534
  fileQ.progress < 100 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_15$1, vue.toDisplayString(`${fileQ.progress.toFixed(0)}`), 1)) : vue.createCommentVNode("", true),
21255
- vue.createVNode(vue.unref(_sfc_main$p), {
21535
+ vue.createVNode(vue.unref(_sfc_main$q), {
21256
21536
  class: "success",
21257
21537
  icon: "check"
21258
21538
  })
@@ -21276,8 +21556,8 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21276
21556
  browse
21277
21557
  }, () => [
21278
21558
  vue.createElementVNode("p", _hoisted_16$1, [
21279
- vue.createVNode(vue.unref(_sfc_main$p), { icon: "upload_2" }),
21280
- _cache[3] || (_cache[3] = vue.createTextVNode(" Drop files here or click to upload "))
21559
+ vue.createVNode(vue.unref(_sfc_main$q), { icon: "upload_2" }),
21560
+ vue.createElementVNode("span", _hoisted_17$1, vue.toDisplayString(_ctx.dropPlaceholder || "Drag and Drop files here or click to upload"), 1)
21281
21561
  ])
21282
21562
  ], true) : vue.createCommentVNode("", true)
21283
21563
  ], 38))
@@ -21285,11 +21565,11 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21285
21565
  };
21286
21566
  }
21287
21567
  });
21288
- const FileUpload = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-9d12086d"]]);
21289
- const _hoisted_1$z = ["title"];
21568
+ const FileUpload = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-9939a5fb"]]);
21569
+ const _hoisted_1$A = ["title"];
21290
21570
  const _hoisted_2$o = { key: 0 };
21291
21571
  const _hoisted_3$j = ["value", "placeholder"];
21292
- const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
21572
+ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
21293
21573
  __name: "JSONInput",
21294
21574
  props: {
21295
21575
  description: { default: "" },
@@ -21321,19 +21601,19 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
21321
21601
  placeholder: _ctx.placeholder,
21322
21602
  onInput: handleInput
21323
21603
  }, null, 42, _hoisted_3$j)
21324
- ], 10, _hoisted_1$z);
21604
+ ], 10, _hoisted_1$A);
21325
21605
  };
21326
21606
  }
21327
21607
  });
21328
- const JSONInput = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-1cbaeab2"]]);
21329
- const _hoisted_1$y = ["for"];
21608
+ const JSONInput = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-1cbaeab2"]]);
21609
+ const _hoisted_1$z = ["for"];
21330
21610
  const _hoisted_2$n = ["id", "placeholder", "disabled", "required", "readonly", "onKeydown"];
21331
21611
  const _hoisted_3$i = { key: 1 };
21332
21612
  const _hoisted_4$b = {
21333
21613
  key: 5,
21334
21614
  class: "flex column spinner"
21335
21615
  };
21336
- const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
21616
+ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
21337
21617
  __name: "NumberInput",
21338
21618
  props: {
21339
21619
  modelValue: {},
@@ -21402,7 +21682,7 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
21402
21682
  }])
21403
21683
  }, [
21404
21684
  vue.createElementVNode("div", { for: _ctx.id }, [
21405
- vue.createTextVNode(vue.toDisplayString(_ctx.label) + " ", 1),
21685
+ vue.createElementVNode("label", null, vue.toDisplayString(_ctx.label), 1),
21406
21686
  vue.createElementVNode("div", {
21407
21687
  class: vue.normalizeClass(["gap-025", { "column flex": _ctx.layout === "vertical", "flex": _ctx.layout === "horizontal" }])
21408
21688
  }, [
@@ -21451,12 +21731,12 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
21451
21731
  ]
21452
21732
  ]),
21453
21733
  _ctx.helptext ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_3$i, vue.toDisplayString(_ctx.helptext), 1)) : vue.createCommentVNode("", true),
21454
- _ctx.iconStart ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
21734
+ _ctx.iconStart ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
21455
21735
  key: 2,
21456
21736
  class: "iconStart",
21457
21737
  icon: _ctx.iconStart
21458
21738
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
21459
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
21739
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
21460
21740
  key: 3,
21461
21741
  icon: _ctx.icon
21462
21742
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -21489,14 +21769,14 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
21489
21769
  }, null, 8, ["disabled"])
21490
21770
  ])) : vue.createCommentVNode("", true)
21491
21771
  ], 2)
21492
- ], 8, _hoisted_1$y)
21772
+ ], 8, _hoisted_1$z)
21493
21773
  ], 2);
21494
21774
  };
21495
21775
  }
21496
21776
  });
21497
- const NumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-cacbf10f"]]);
21498
- const _hoisted_1$x = ["value", "autofocus", "onKeydown", "onPaste"];
21499
- const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
21777
+ const NumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-8ae5f930"]]);
21778
+ const _hoisted_1$y = ["value", "autofocus", "onKeydown", "onPaste"];
21779
+ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
21500
21780
  __name: "OTP",
21501
21781
  props: {
21502
21782
  digitCount: {},
@@ -21594,16 +21874,16 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
21594
21874
  oninput: "this.value = this.value.slice(0, 1);",
21595
21875
  onKeydown: ($event) => handleKeyDown($event, ind),
21596
21876
  onPaste: ($event) => handlePaste($event, ind)
21597
- }, null, 40, _hoisted_1$x);
21877
+ }, null, 40, _hoisted_1$y);
21598
21878
  }), 128))
21599
21879
  ], 512);
21600
21880
  };
21601
21881
  }
21602
21882
  });
21603
- const OTP = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-5c22c199"]]);
21604
- const _hoisted_1$w = { class: "relative" };
21883
+ const OTP = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-5c22c199"]]);
21884
+ const _hoisted_1$x = { class: "relative" };
21605
21885
  const _hoisted_2$m = { class: "m-password position-bottom-end flex column justify-content-center" };
21606
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
21886
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
21607
21887
  __name: "PasswordInput",
21608
21888
  props: /* @__PURE__ */ vue.mergeModels({
21609
21889
  id: {},
@@ -21644,7 +21924,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
21644
21924
  );
21645
21925
  const inputType = vue.computed(() => showPwd.value ? "text" : "password");
21646
21926
  return (_ctx, _cache) => {
21647
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
21927
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
21648
21928
  vue.createVNode(vue.unref(TextInput), vue.mergeProps({
21649
21929
  modelValue: password.value,
21650
21930
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => password.value = $event)
@@ -21665,7 +21945,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
21665
21945
  };
21666
21946
  }
21667
21947
  });
21668
- const _hoisted_1$v = ["for"];
21948
+ const _hoisted_1$w = ["for"];
21669
21949
  const _hoisted_2$l = ["id", "name", "value", "required"];
21670
21950
  const _hoisted_3$h = { class: "flex w-100 gap-1 flex-wrap m_gap-05 m_gap-row-025" };
21671
21951
  const _hoisted_4$a = ["src", "alt"];
@@ -21678,7 +21958,7 @@ const _hoisted_7$5 = {
21678
21958
  key: 1,
21679
21959
  class: "txt-gray txt-12 m-0"
21680
21960
  };
21681
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
21961
+ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
21682
21962
  __name: "RadioGroup",
21683
21963
  props: /* @__PURE__ */ vue.mergeModels({
21684
21964
  groupName: {},
@@ -21733,19 +22013,19 @@ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
21733
22013
  icon: "delete",
21734
22014
  onClick: ($event) => _ctx.$emit("delete", opt)
21735
22015
  }, null, 8, ["onClick"])) : vue.createCommentVNode("", true)
21736
- ], 8, _hoisted_1$v);
22016
+ ], 8, _hoisted_1$w);
21737
22017
  }), 128))
21738
22018
  ]);
21739
22019
  };
21740
22020
  }
21741
22021
  });
21742
- const RadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-3c77be46"]]);
21743
- const _hoisted_1$u = { class: "bagel-input" };
22022
+ const RadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-3c77be46"]]);
22023
+ const _hoisted_1$v = { class: "bagel-input" };
21744
22024
  const _hoisted_2$k = { class: "pb-025" };
21745
22025
  const _hoisted_3$g = { class: "flex gap-05 flex-wrap" };
21746
22026
  const _hoisted_4$9 = ["id", "name", "value", "checked"];
21747
22027
  const _hoisted_5$9 = ["for"];
21748
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
22028
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
21749
22029
  __name: "RadioPillsInput",
21750
22030
  props: {
21751
22031
  options: {},
@@ -21786,7 +22066,7 @@ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
21786
22066
  selectedValue.value = props2.modelValue;
21787
22067
  });
21788
22068
  return (_ctx, _cache) => {
21789
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
22069
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
21790
22070
  vue.createElementVNode("label", _hoisted_2$k, vue.toDisplayString(_ctx.label), 1),
21791
22071
  vue.createElementVNode("div", _hoisted_3$g, [
21792
22072
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (option2, index2) => {
@@ -21812,8 +22092,8 @@ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
21812
22092
  };
21813
22093
  }
21814
22094
  });
21815
- const RadioPillsInput = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-cf892d71"]]);
21816
- const _hoisted_1$t = ["dir"];
22095
+ const RadioPillsInput = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-cf892d71"]]);
22096
+ const _hoisted_1$u = ["dir"];
21817
22097
  const _hoisted_2$j = {
21818
22098
  key: 0,
21819
22099
  class: "label"
@@ -21823,7 +22103,7 @@ const _hoisted_4$8 = ["id", "value", "min", "max", "step", "required", "disabled
21823
22103
  const _hoisted_5$8 = ["value", "min", "max", "step", "required", "disabled"];
21824
22104
  const _hoisted_6$7 = { class: "track absolute pointer-events-none overflow-hidden round" };
21825
22105
  const _hoisted_7$4 = { class: "txt-center txt-14 user-select-none range-slider-txt flex space-between opacity-4 mx-05" };
21826
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
22106
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
21827
22107
  __name: "RangeInput",
21828
22108
  props: {
21829
22109
  modelValue: {},
@@ -21983,11 +22263,11 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
21983
22263
  vue.createElementVNode("span", null, vue.toDisplayString(vue.unref(formatValue)(vue.unref(max2))), 1)
21984
22264
  ], true)
21985
22265
  ])
21986
- ], 8, _hoisted_1$t);
22266
+ ], 8, _hoisted_1$u);
21987
22267
  };
21988
22268
  }
21989
22269
  });
21990
- const RangeInput = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-25d991e5"]]);
22270
+ const RangeInput = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-25d991e5"]]);
21991
22271
  const tableTools = [
21992
22272
  "mergeCells",
21993
22273
  "splitCells",
@@ -22077,12 +22357,12 @@ const toolbarOptions = [
22077
22357
  { name: "separator" },
22078
22358
  { name: "fullScreen", label: "Full Screen", icon: "fullscreen", class: "ms-auto" }
22079
22359
  ];
22080
- const _hoisted_1$s = { class: "grid grid-wrap p-05" };
22360
+ const _hoisted_1$t = { class: "grid grid-wrap p-05" };
22081
22361
  const _hoisted_2$i = ["onMousemove", "onClick"];
22082
22362
  const _hoisted_3$e = { class: "txt-center txt-12 color-gray" };
22083
22363
  const fb = 1;
22084
22364
  const base = 5;
22085
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
22365
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
22086
22366
  __name: "gridBox",
22087
22367
  emits: ["select"],
22088
22368
  setup(__props, { emit: __emit }) {
@@ -22098,7 +22378,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
22098
22378
  return hoveredCol.value > base - 1 ? enlarge : base;
22099
22379
  });
22100
22380
  return (_ctx, _cache) => {
22101
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
22381
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
22102
22382
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(rowSize.value, (row) => {
22103
22383
  return vue.openBlock(), vue.createElementBlock("div", {
22104
22384
  key: `row-${row}`,
@@ -22134,12 +22414,12 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
22134
22414
  };
22135
22415
  }
22136
22416
  });
22137
- const GridBox = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-4548b70f"]]);
22138
- const _hoisted_1$r = {
22417
+ const GridBox = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-4548b70f"]]);
22418
+ const _hoisted_1$s = {
22139
22419
  class: "toolbar flex gap-025 pb-05 flex-wrap",
22140
22420
  role: "toolbar"
22141
22421
  };
22142
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
22422
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
22143
22423
  __name: "EditorToolbar",
22144
22424
  props: {
22145
22425
  config: { default: defaultToolbarConfig },
@@ -22154,10 +22434,10 @@ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
22154
22434
  }
22155
22435
  return (_ctx, _cache) => {
22156
22436
  const _directive_tooltip = vue.resolveDirective("tooltip");
22157
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
22437
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
22158
22438
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.config.map(configToOption).filter(Boolean), (action, index2) => {
22159
22439
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: index2 }, [
22160
- action.name === "insertTable" ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$V), {
22440
+ action.name === "insertTable" ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$U), {
22161
22441
  key: 0,
22162
22442
  placement: "bottom-start",
22163
22443
  thin: "",
@@ -22197,7 +22477,7 @@ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
22197
22477
  };
22198
22478
  }
22199
22479
  });
22200
- const EditorToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-bcd681b9"]]);
22480
+ const EditorToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-bcd681b9"]]);
22201
22481
  function createCommandExecutor(state2, commands) {
22202
22482
  return {
22203
22483
  execute(command, value) {
@@ -22218,7 +22498,7 @@ function createCommandExecutor(state2, commands) {
22218
22498
  }
22219
22499
  };
22220
22500
  }
22221
- function isStyleActive(style, doc) {
22501
+ function isStyleActive(style2, doc) {
22222
22502
  const selection = doc.getSelection();
22223
22503
  if (!selection || !selection.rangeCount) return false;
22224
22504
  const range2 = selection.getRangeAt(0);
@@ -22235,7 +22515,7 @@ function isStyleActive(style, doc) {
22235
22515
  italic: ["em", "i"],
22236
22516
  underline: ["u"]
22237
22517
  };
22238
- return checkParent(parent, styleTags[style] ?? [style]);
22518
+ return checkParent(parent, styleTags[style2] ?? [style2]);
22239
22519
  }
22240
22520
  function analyzeSelection(doc, range2) {
22241
22521
  const container = range2.commonAncestorContainer;
@@ -22789,9 +23069,9 @@ function useEditor() {
22789
23069
  "ol",
22790
23070
  "li"
22791
23071
  ];
22792
- styleTypes.forEach((style) => {
22793
- if (state2.doc && isStyleActive(style, state2.doc)) {
22794
- styles.add(style);
23072
+ styleTypes.forEach((style2) => {
23073
+ if (state2.doc && isStyleActive(style2, state2.doc)) {
23074
+ styles.add(style2);
22795
23075
  }
22796
23076
  });
22797
23077
  state2.selectedStyles = styles;
@@ -23117,13 +23397,13 @@ function useEditorKeyboard(doc, handleToolbarAction) {
23117
23397
  }
23118
23398
  });
23119
23399
  }
23120
- const _hoisted_1$q = { class: "bagel-input" };
23400
+ const _hoisted_1$r = { class: "bagel-input" };
23121
23401
  const _hoisted_2$h = { class: "content-area radius-05" };
23122
23402
  const _hoisted_3$d = {
23123
23403
  key: 1,
23124
23404
  class: "flex"
23125
23405
  };
23126
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
23406
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
23127
23407
  __name: "index",
23128
23408
  props: {
23129
23409
  modelValue: {},
@@ -23152,9 +23432,9 @@ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
23152
23432
  doc.designMode = "on";
23153
23433
  doc.body.contentEditable = "true";
23154
23434
  doc.body.dir = hasRTL.value ? "rtl" : "ltr";
23155
- const style = doc.createElement("style");
23156
- style.textContent = (await Promise.resolve().then(() => require("./editor-B3mMCQSg.cjs"))).default;
23157
- doc.head.appendChild(style);
23435
+ const style2 = doc.createElement("style");
23436
+ style2.textContent = (await Promise.resolve().then(() => require("./editor-B3mMCQSg.cjs"))).default;
23437
+ doc.head.appendChild(style2);
23158
23438
  editor.init(doc);
23159
23439
  useEditorKeyboard(doc, commands.execute);
23160
23440
  if (!doc.body.firstElementChild) {
@@ -23200,10 +23480,10 @@ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
23200
23480
  });
23201
23481
  return (_ctx, _cache) => {
23202
23482
  var _a2, _b;
23203
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
23483
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
23204
23484
  vue.createElementVNode("label", null, vue.toDisplayString(_ctx.label), 1),
23205
23485
  vue.createElementVNode("div", {
23206
- class: vue.normalizeClass(["rich-text-editor rounded pt-05 px-05 pb-075 mb-05", { "fullscreen-mode": vue.unref(editor).state.isFullscreen }])
23486
+ class: vue.normalizeClass(["rich-text-editor rounded pt-05 px-05 pb-075", { "fullscreen-mode": vue.unref(editor).state.isFullscreen }])
23207
23487
  }, [
23208
23488
  vue.unref(editor).state.hasInit ? (vue.openBlock(), vue.createBlock(EditorToolbar, {
23209
23489
  key: 0,
@@ -23278,8 +23558,8 @@ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
23278
23558
  };
23279
23559
  }
23280
23560
  });
23281
- const RichText = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-59d7c73f"]]);
23282
- const _hoisted_1$p = { class: "flex gap-05" };
23561
+ const RichText = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-08117333"]]);
23562
+ const _hoisted_1$q = { class: "flex gap-05" };
23283
23563
  const _hoisted_2$g = ["disabled"];
23284
23564
  const _hoisted_3$c = { key: 1 };
23285
23565
  const _hoisted_4$7 = {
@@ -23289,7 +23569,7 @@ const _hoisted_4$7 = {
23289
23569
  const _hoisted_5$7 = ["value"];
23290
23570
  const _hoisted_6$6 = ["aria-selected", "onClick", "onKeydown"];
23291
23571
  const _hoisted_7$3 = { class: "block" };
23292
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23572
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
23293
23573
  __name: "SelectInput",
23294
23574
  props: {
23295
23575
  options: {},
@@ -23465,7 +23745,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23465
23745
  }
23466
23746
  });
23467
23747
  return (_ctx, _cache) => {
23468
- return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$V), {
23748
+ return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$U), {
23469
23749
  ref_key: "dropdown",
23470
23750
  ref: dropdown,
23471
23751
  shown: vue.unref(open),
@@ -23477,7 +23757,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23477
23757
  trigger: vue.withCtx(() => [
23478
23758
  vue.createElementVNode("label", null, [
23479
23759
  vue.createTextVNode(vue.toDisplayString(_ctx.label) + " ", 1),
23480
- vue.createElementVNode("div", _hoisted_1$p, [
23760
+ vue.createElementVNode("div", _hoisted_1$q, [
23481
23761
  _ctx.searchable && vue.unref(open) ? (vue.openBlock(), vue.createBlock(vue.unref(TextInput), {
23482
23762
  key: 0,
23483
23763
  ref_key: "searchInput",
@@ -23504,7 +23784,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23504
23784
  _cache[6] || (_cache[6] = vue.withKeys(vue.withModifiers(($event) => navigate("up"), ["prevent"]), ["up"]))
23505
23785
  ]
23506
23786
  }, [
23507
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
23787
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
23508
23788
  key: 0,
23509
23789
  icon: _ctx.icon
23510
23790
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -23521,7 +23801,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23521
23801
  })
23522
23802
  })
23523
23803
  ])) : vue.createCommentVNode("", true),
23524
- !_ctx.disabled ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), vue.mergeProps({
23804
+ !_ctx.disabled ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), vue.mergeProps({
23525
23805
  key: 3,
23526
23806
  thin: ""
23527
23807
  }, { icon: vue.unref(open) ? "unfold_less" : "unfold_more" }), null, 16)) : vue.createCommentVNode("", true)
@@ -23569,12 +23849,12 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23569
23849
  ]
23570
23850
  }, [
23571
23851
  _ctx.multiselect ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
23572
- isSelected(option2) ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
23852
+ isSelected(option2) ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
23573
23853
  key: 0,
23574
23854
  size: 1.1,
23575
23855
  icon: "select_check_box"
23576
23856
  })) : vue.createCommentVNode("", true),
23577
- !isSelected(option2) ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
23857
+ !isSelected(option2) ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
23578
23858
  key: 1,
23579
23859
  class: "opacity-3",
23580
23860
  icon: "check_box_outline_blank",
@@ -23595,7 +23875,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
23595
23875
  };
23596
23876
  }
23597
23877
  });
23598
- const SelectInput = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-70535216"]]);
23878
+ const SelectInput = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-70535216"]]);
23599
23879
  /*!
23600
23880
  * Signature Pad v5.0.4 | https://github.com/szimek/signature_pad
23601
23881
  * (c) 2024 Szymon Nowak | Released under the MIT license
@@ -24192,7 +24472,7 @@ class SignaturePad extends SignatureEventTarget {
24192
24472
  return svg.outerHTML;
24193
24473
  }
24194
24474
  }
24195
- const _hoisted_1$o = ["disabled"];
24475
+ const _hoisted_1$p = ["disabled"];
24196
24476
  const _hoisted_2$f = {
24197
24477
  key: 1,
24198
24478
  placeholder: "required",
@@ -24200,7 +24480,7 @@ const _hoisted_2$f = {
24200
24480
  required: "",
24201
24481
  class: "pixel"
24202
24482
  };
24203
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
24483
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
24204
24484
  __name: "SignaturePad",
24205
24485
  props: /* @__PURE__ */ vue.mergeModels({
24206
24486
  sigOption: {},
@@ -24353,7 +24633,7 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
24353
24633
  ref: vCanvas,
24354
24634
  class: "canvas",
24355
24635
  disabled: _ctx.disabled
24356
- }, null, 8, _hoisted_1$o),
24636
+ }, null, 8, _hoisted_1$p),
24357
24637
  _ctx.required && vue.unref(_isEmpty) ? (vue.openBlock(), vue.createElementBlock("input", _hoisted_2$f)) : vue.createCommentVNode("", true)
24358
24638
  ], 34);
24359
24639
  };
@@ -24534,8 +24814,8 @@ function toggleClass(el, name, state2) {
24534
24814
  }
24535
24815
  }
24536
24816
  function css(el, prop3, val) {
24537
- var style = el && el.style;
24538
- if (style) {
24817
+ var style2 = el && el.style;
24818
+ if (style2) {
24539
24819
  if (val === void 0) {
24540
24820
  if (document.defaultView && document.defaultView.getComputedStyle) {
24541
24821
  val = document.defaultView.getComputedStyle(el, "");
@@ -24544,10 +24824,10 @@ function css(el, prop3, val) {
24544
24824
  }
24545
24825
  return prop3 === void 0 ? val : val[prop3];
24546
24826
  } else {
24547
- if (!(prop3 in style) && prop3.indexOf("webkit") === -1) {
24827
+ if (!(prop3 in style2) && prop3.indexOf("webkit") === -1) {
24548
24828
  prop3 = "-webkit-" + prop3;
24549
24829
  }
24550
- style[prop3] = val + (typeof val === "string" ? "" : "px");
24830
+ style2[prop3] = val + (typeof val === "string" ? "" : "px");
24551
24831
  }
24552
24832
  }
24553
24833
  }
@@ -26838,13 +27118,13 @@ const VueDraggableNext = vue.defineComponent({
26838
27118
  }
26839
27119
  }
26840
27120
  });
26841
- const _hoisted_1$n = ["title"];
27121
+ const _hoisted_1$o = ["title"];
26842
27122
  const _hoisted_2$e = { class: "bagel-input" };
26843
27123
  const _hoisted_3$b = { class: "table-side-scroll" };
26844
27124
  const _hoisted_4$6 = { class: "table-header" };
26845
27125
  const _hoisted_5$6 = { class: "table-reorder" };
26846
27126
  const _hoisted_6$5 = { class: "table-action" };
26847
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
27127
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
26848
27128
  __name: "TableField",
26849
27129
  props: {
26850
27130
  description: { default: "" },
@@ -26941,7 +27221,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
26941
27221
  class: "flex table-row"
26942
27222
  }, [
26943
27223
  vue.createElementVNode("div", _hoisted_5$6, [
26944
- vue.createVNode(vue.unref(_sfc_main$p), { icon: "more_vert" })
27224
+ vue.createVNode(vue.unref(_sfc_main$q), { icon: "more_vert" })
26945
27225
  ]),
26946
27226
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList((_a3 = vue.unref(entityMeta)) == null ? void 0 : _a3.fields, (field) => {
26947
27227
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -26958,7 +27238,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
26958
27238
  ], 2);
26959
27239
  }), 128)),
26960
27240
  vue.createElementVNode("div", _hoisted_6$5, [
26961
- vue.createVNode(vue.unref(_sfc_main$p), {
27241
+ vue.createVNode(vue.unref(_sfc_main$q), {
26962
27242
  icon: "delete",
26963
27243
  onClick: ($event) => removeRow(index2)
26964
27244
  }, null, 8, ["onClick"])
@@ -26984,11 +27264,11 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
26984
27264
  ])),
26985
27265
  _: 1
26986
27266
  })
26987
- ], 8, _hoisted_1$n);
27267
+ ], 8, _hoisted_1$o);
26988
27268
  };
26989
27269
  }
26990
27270
  });
26991
- const TableField = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-e9632f79"]]);
27271
+ const TableField = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-e9632f79"]]);
26992
27272
  function bind(fn2, thisArg) {
26993
27273
  return function wrap() {
26994
27274
  return fn2.apply(thisArg, arguments);
@@ -31435,13 +31715,13 @@ function parsePhoneNumber$1() {
31435
31715
  function parsePhoneNumber() {
31436
31716
  return withMetadataArgument(parsePhoneNumber$1, arguments);
31437
31717
  }
31438
- const _hoisted_1$m = ["aria-expanded"];
31718
+ const _hoisted_1$n = ["aria-expanded"];
31439
31719
  const _hoisted_2$d = { class: "p-075 tel-countryp-dropdown" };
31440
31720
  const _hoisted_3$a = ["aria-selected", "onClick", "onMousemove"];
31441
31721
  const _hoisted_4$5 = { class: "tel-country" };
31442
31722
  const _hoisted_5$5 = { key: 1 };
31443
31723
  const _hoisted_6$4 = ["id", "required", "placeholder", "disabled", "autocomplete", "pattern", "minlength", "maxlength", "name", "readonly", "tabindex", "aria-describedby"];
31444
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
31724
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
31445
31725
  __name: "TelInput",
31446
31726
  props: /* @__PURE__ */ vue.mergeModels({
31447
31727
  label: {},
@@ -31703,7 +31983,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
31703
31983
  vue.withKeys(reset, ["tab"])
31704
31984
  ]
31705
31985
  }, [
31706
- !computedDropDownOptions.value.hide ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$V), {
31986
+ !computedDropDownOptions.value.hide ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$U), {
31707
31987
  key: 0,
31708
31988
  ref_key: "phoneDropdown",
31709
31989
  ref: phoneDropdown,
@@ -31716,7 +31996,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
31716
31996
  class: "flex gap-05",
31717
31997
  onClick: _cache[0] || (_cache[0] = ($event) => vue.isRef(open) ? open.value = true : open = true)
31718
31998
  }, [
31719
- vue.createVNode(vue.unref(_sfc_main$p), {
31999
+ vue.createVNode(vue.unref(_sfc_main$q), {
31720
32000
  icon: vue.unref(open) ? "collapse_all" : "expand_all"
31721
32001
  }, null, 8, ["icon"]),
31722
32002
  computedDropDownOptions.value.showFlags && vue.unref(activeCountryCode) ? (vue.openBlock(), vue.createBlock(vue.unref(Flag), {
@@ -31790,19 +32070,19 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
31790
32070
  }, null, 44, _hoisted_6$4), [
31791
32071
  [vue.vModelText, phone.value]
31792
32072
  ])
31793
- ], 40, _hoisted_1$m)
32073
+ ], 40, _hoisted_1$n)
31794
32074
  ])
31795
32075
  ], 2);
31796
32076
  };
31797
32077
  }
31798
32078
  });
31799
- const TelInput = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-492fcc54"]]);
31800
- const _hoisted_1$l = ["title"];
32079
+ const TelInput = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-492fcc54"]]);
32080
+ const _hoisted_1$m = ["title"];
31801
32081
  const _hoisted_2$c = ["for"];
31802
32082
  const _hoisted_3$9 = ["id", "title", "autocomplete", "type", "placeholder", "disabled", "required", "pattern"];
31803
32083
  const _hoisted_4$4 = ["id", "title", "type", "rows", "placeholder", "disabled", "required", "pattern"];
31804
32084
  const _hoisted_5$4 = { key: 2 };
31805
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
32085
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
31806
32086
  __name: "TextInput",
31807
32087
  props: {
31808
32088
  id: {},
@@ -31928,25 +32208,25 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
31928
32208
  [vue.vModelText, vue.unref(inputVal)]
31929
32209
  ]),
31930
32210
  _ctx.helptext ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_5$4, vue.toDisplayString(_ctx.helptext), 1)) : vue.createCommentVNode("", true),
31931
- _ctx.iconStart ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
32211
+ _ctx.iconStart ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
31932
32212
  key: 3,
31933
32213
  class: "iconStart",
31934
32214
  icon: _ctx.iconStart
31935
32215
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
31936
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
32216
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
31937
32217
  key: 4,
31938
32218
  icon: _ctx.icon
31939
32219
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
31940
32220
  ], 8, _hoisted_2$c)
31941
- ], 10, _hoisted_1$l);
32221
+ ], 10, _hoisted_1$m);
31942
32222
  };
31943
32223
  }
31944
32224
  });
31945
- const TextInput = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-cc17f96e"]]);
31946
- const _hoisted_1$k = ["title"];
32225
+ const TextInput = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-cc17f96e"]]);
32226
+ const _hoisted_1$l = ["title"];
31947
32227
  const _hoisted_2$b = ["id", "required"];
31948
32228
  const _hoisted_3$8 = ["for"];
31949
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
32229
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
31950
32230
  __name: "ToggleInput",
31951
32231
  props: /* @__PURE__ */ vue.mergeModels({
31952
32232
  label: {},
@@ -31990,11 +32270,11 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
31990
32270
  vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
31991
32271
  ], true)
31992
32272
  ], 8, _hoisted_3$8)
31993
- ], 10, _hoisted_1$k);
32273
+ ], 10, _hoisted_1$l);
31994
32274
  };
31995
32275
  }
31996
32276
  });
31997
- const ToggleInput = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-ebe691ee"]]);
32277
+ const ToggleInput = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-ebe691ee"]]);
31998
32278
  const files = {
31999
32279
  setBaseUrl: (baseUrl) => {
32000
32280
  if (!baseUrl) return;
@@ -32020,7 +32300,7 @@ const files = {
32020
32300
  });
32021
32301
  }
32022
32302
  };
32023
- const _hoisted_1$j = { class: "bagel-input" };
32303
+ const _hoisted_1$k = { class: "bagel-input" };
32024
32304
  const _hoisted_2$a = { key: 0 };
32025
32305
  const _hoisted_3$7 = {
32026
32306
  key: 1,
@@ -32031,7 +32311,7 @@ const _hoisted_3$7 = {
32031
32311
  };
32032
32312
  const _hoisted_4$3 = { class: "m-05 flex opacity-7 z-99" };
32033
32313
  const _hoisted_5$3 = { class: "flex gap-025 rounded pe-1 ps-05 py-025 bg-gray-80 -my-1" };
32034
- const _hoisted_6$3 = { class: "ellipsis-1 word-break-all h-20 m-0 color-black txt18" };
32314
+ const _hoisted_6$3 = { class: "ellipsis-1 word-break-all h-20 m-0 color-black txt16" };
32035
32315
  const _hoisted_7$2 = {
32036
32316
  key: 1,
32037
32317
  class: "txt-gray txt-12"
@@ -32060,7 +32340,8 @@ const _hoisted_15 = {
32060
32340
  class: "progress"
32061
32341
  };
32062
32342
  const _hoisted_16 = { class: "p-1 flex column hover fileUploadPlaceHolder justify-content-center mb-05" };
32063
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32343
+ const _hoisted_17 = { class: "pretty balance" };
32344
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
32064
32345
  __name: "UploadInput",
32065
32346
  props: {
32066
32347
  label: {},
@@ -32075,7 +32356,10 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32075
32356
  accept: { default: "*" },
32076
32357
  required: { type: Boolean },
32077
32358
  disabled: { type: Boolean },
32078
- baseURL: {}
32359
+ baseURL: {},
32360
+ dropPlaceholder: {},
32361
+ noFilePlaceholder: {},
32362
+ btnPlaceholder: {}
32079
32363
  },
32080
32364
  emits: ["update:modelValue", "addFileStart"],
32081
32365
  setup(__props, { emit: __emit }) {
@@ -32168,7 +32452,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32168
32452
  return (_ctx, _cache) => {
32169
32453
  const _directive_tooltip = vue.resolveDirective("tooltip");
32170
32454
  const _directive_lightbox = vue.resolveDirective("lightbox");
32171
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
32455
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
32172
32456
  _ctx.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_2$a, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true),
32173
32457
  _ctx.required && !pathKeys.value.length ? (vue.openBlock(), vue.createElementBlock("input", _hoisted_3$7)) : vue.createCommentVNode("", true),
32174
32458
  _ctx.theme === "basic" ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$_), {
@@ -32184,13 +32468,9 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32184
32468
  class: "px-1-5",
32185
32469
  icon: "upload",
32186
32470
  outline: "",
32471
+ value: _ctx.btnPlaceholder || "Upload",
32187
32472
  onClick: browse
32188
- }, {
32189
- default: vue.withCtx(() => _cache[3] || (_cache[3] = [
32190
- vue.createTextVNode(" Upload ")
32191
- ])),
32192
- _: 1
32193
- })) : vue.createCommentVNode("", true),
32473
+ }, null, 8, ["value"])) : vue.createCommentVNode("", true),
32194
32474
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(pathKeys.value, (path_key) => {
32195
32475
  return vue.openBlock(), vue.createElementBlock("div", {
32196
32476
  key: path_key,
@@ -32221,7 +32501,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32221
32501
  download: path_key.split("/").pop()
32222
32502
  }, null, 8, ["href", "download"]),
32223
32503
  vue.createElementVNode("div", _hoisted_5$3, [
32224
- vue.createVNode(vue.unref(_sfc_main$p), {
32504
+ vue.createVNode(vue.unref(_sfc_main$q), {
32225
32505
  icon: "draft",
32226
32506
  size: 1.5
32227
32507
  }),
@@ -32234,7 +32514,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32234
32514
  ])
32235
32515
  ]);
32236
32516
  }), 128)),
32237
- !pathKeys.value.length && !fileQueue.value.length ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, " No file selected ")) : vue.createCommentVNode("", true)
32517
+ !pathKeys.value.length && !fileQueue.value.length ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, vue.toDisplayString(_ctx.noFilePlaceholder || "No file selected"), 1)) : vue.createCommentVNode("", true)
32238
32518
  ]),
32239
32519
  _: 1
32240
32520
  })) : (vue.openBlock(), vue.createElementBlock("div", {
@@ -32264,7 +32544,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32264
32544
  key: 0,
32265
32545
  pathKey: path_key,
32266
32546
  class: "multi-preview"
32267
- }, null, 8, ["pathKey"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
32547
+ }, null, 8, ["pathKey"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
32268
32548
  key: 1,
32269
32549
  icon: "description",
32270
32550
  class: "multi-preview"
@@ -32291,7 +32571,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32291
32571
  class: "multi-preview",
32292
32572
  src: fileToUrl(file.file),
32293
32573
  alt: ""
32294
- }, null, 8, ["src"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
32574
+ }, null, 8, ["src"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
32295
32575
  key: 1,
32296
32576
  icon: "description",
32297
32577
  class: "multi-preview"
@@ -32302,7 +32582,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32302
32582
  style: vue.normalizeStyle([{ "--p": file.progress }, { "--b": "2px" }])
32303
32583
  }, [
32304
32584
  file.progress < 100 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_11$1, vue.toDisplayString(file.progress.toFixed(0)), 1)) : vue.createCommentVNode("", true),
32305
- vue.createVNode(vue.unref(_sfc_main$p), {
32585
+ vue.createVNode(vue.unref(_sfc_main$q), {
32306
32586
  class: "success",
32307
32587
  icon: "check_circle"
32308
32588
  })
@@ -32350,7 +32630,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32350
32630
  }, null, 8, ["pathKey"]), [
32351
32631
  [_directive_lightbox, { src: pathToUrl(path_key), download: true }]
32352
32632
  ])
32353
- ])) : vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
32633
+ ])) : vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
32354
32634
  key: 1,
32355
32635
  size: 4,
32356
32636
  weight: "2",
@@ -32371,7 +32651,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32371
32651
  style: vue.normalizeStyle([{ "--p": file.progress }, { "--b": "2px" }])
32372
32652
  }, [
32373
32653
  file.progress < 100 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_15, vue.toDisplayString(file.progress.toFixed(0)), 1)) : vue.createCommentVNode("", true),
32374
- vue.createVNode(vue.unref(_sfc_main$p), {
32654
+ vue.createVNode(vue.unref(_sfc_main$q), {
32375
32655
  class: "success",
32376
32656
  icon: "check_circle"
32377
32657
  })
@@ -32395,8 +32675,8 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32395
32675
  browse
32396
32676
  }, () => [
32397
32677
  vue.createElementVNode("p", _hoisted_16, [
32398
- vue.createVNode(vue.unref(_sfc_main$p), { icon: "upload_2" }),
32399
- _cache[4] || (_cache[4] = vue.createTextVNode(" Drop files here or click to upload "))
32678
+ vue.createVNode(vue.unref(_sfc_main$q), { icon: "upload_2" }),
32679
+ vue.createElementVNode("span", _hoisted_17, vue.toDisplayString(_ctx.dropPlaceholder || "Drag and Drop files here or click to upload"), 1)
32400
32680
  ])
32401
32681
  ], true) : vue.createCommentVNode("", true)
32402
32682
  ], 38))
@@ -32404,7 +32684,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
32404
32684
  };
32405
32685
  }
32406
32686
  });
32407
- const UploadInput = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-33f11d1f"]]);
32687
+ const UploadInput = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-d65d0a87"]]);
32408
32688
  const FONT_AWESOME_ICONS = [
32409
32689
  "trash-can",
32410
32690
  "message",
@@ -36830,7 +37110,7 @@ const MATERIAL_ICONS = [
36830
37110
  "zoom_out",
36831
37111
  "zoom_out_map"
36832
37112
  ];
36833
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
37113
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
36834
37114
  __name: "Icon",
36835
37115
  props: {
36836
37116
  icon: {},
@@ -36861,8 +37141,8 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
36861
37141
  };
36862
37142
  }
36863
37143
  });
36864
- const _hoisted_1$i = ["src", "title", "width", "height", "marginwidth", "marginheight", "csp", "scrolling", "srcset"];
36865
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
37144
+ const _hoisted_1$j = ["src", "title", "width", "height", "marginwidth", "marginheight", "csp", "scrolling", "srcset"];
37145
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
36866
37146
  __name: "IframeVue",
36867
37147
  props: {
36868
37148
  src: {},
@@ -36921,14 +37201,14 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
36921
37201
  scrolling: _ctx.scrolling,
36922
37202
  srcset: _ctx.srcset,
36923
37203
  onLoad: _cache[0] || (_cache[0] = ($event) => emit2("load", $event))
36924
- }, null, 40, _hoisted_1$i);
37204
+ }, null, 40, _hoisted_1$j);
36925
37205
  };
36926
37206
  }
36927
37207
  });
36928
- const _hoisted_1$h = { key: 0 };
37208
+ const _hoisted_1$i = { key: 0 };
36929
37209
  const _hoisted_2$9 = ["src", "alt", "width", "height"];
36930
37210
  const _hoisted_3$6 = ["src", "alt", "width", "height"];
36931
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
37211
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
36932
37212
  __name: "Image",
36933
37213
  props: {
36934
37214
  src: {},
@@ -37010,7 +37290,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
37010
37290
  }
37011
37291
  vue.watch(() => [props2.src, props2.pathKey], loadImage, { immediate: true });
37012
37292
  return (_ctx, _cache) => {
37013
- return _ctx.caption ? (vue.openBlock(), vue.createElementBlock("figcaption", _hoisted_1$h, [
37293
+ return _ctx.caption ? (vue.openBlock(), vue.createElementBlock("figcaption", _hoisted_1$i, [
37014
37294
  vue.unref(imageSrc) ? (vue.openBlock(), vue.createElementBlock("img", vue.mergeProps({
37015
37295
  key: 0,
37016
37296
  src: vue.unref(imageSrc)
@@ -37039,7 +37319,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
37039
37319
  height: vue.unref(normalizeDimension)(_ctx.height)
37040
37320
  })
37041
37321
  }, [
37042
- vue.createVNode(vue.unref(_sfc_main$p), { name: "broken_image" })
37322
+ vue.createVNode(vue.unref(_sfc_main$q), { name: "broken_image" })
37043
37323
  ], 4)) : (vue.openBlock(), vue.createBlock(vue.unref(Skeleton), {
37044
37324
  key: 3,
37045
37325
  class: "img-web-kit",
@@ -37049,9 +37329,9 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
37049
37329
  };
37050
37330
  }
37051
37331
  });
37052
- const Image$1 = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-6f277b5b"]]);
37053
- const _hoisted_1$g = { class: "m-0 pb-025 txt14 line-height-1 w60 menu-text" };
37054
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
37332
+ const Image$1 = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-6f277b5b"]]);
37333
+ const _hoisted_1$h = { class: "m-0 pb-025 txt14 line-height-1 w60 menu-text" };
37334
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
37055
37335
  __name: "BottomMenu",
37056
37336
  props: {
37057
37337
  navLinks: {}
@@ -37069,12 +37349,12 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
37069
37349
  onClick: nav.onClick
37070
37350
  }, {
37071
37351
  default: vue.withCtx(() => [
37072
- vue.createVNode(vue.unref(_sfc_main$p), {
37352
+ vue.createVNode(vue.unref(_sfc_main$q), {
37073
37353
  icon: nav.icon,
37074
37354
  size: 1.4,
37075
37355
  class: "m-0 line-height-14"
37076
37356
  }, null, 8, ["icon"]),
37077
- vue.createElementVNode("p", _hoisted_1$g, vue.toDisplayString(nav.label), 1)
37357
+ vue.createElementVNode("p", _hoisted_1$h, vue.toDisplayString(nav.label), 1)
37078
37358
  ]),
37079
37359
  _: 2
37080
37360
  }, 1032, ["to", "onClick"]);
@@ -37086,8 +37366,8 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
37086
37366
  };
37087
37367
  }
37088
37368
  });
37089
- const BottomMenu = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-fe3a895e"]]);
37090
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
37369
+ const BottomMenu = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-fe3a895e"]]);
37370
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
37091
37371
  __name: "Layout",
37092
37372
  props: {
37093
37373
  gap: { default: 1 },
@@ -37128,9 +37408,9 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
37128
37408
  };
37129
37409
  }
37130
37410
  });
37131
- const Layout = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-1814129a"]]);
37132
- const _hoisted_1$f = { key: 0 };
37133
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
37411
+ const Layout = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-1814129a"]]);
37412
+ const _hoisted_1$g = { key: 0 };
37413
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
37134
37414
  __name: "SidebarMenu",
37135
37415
  props: {
37136
37416
  navLinks: {},
@@ -37171,13 +37451,13 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
37171
37451
  class: "nav-button px-075 me-auto w-100"
37172
37452
  }, {
37173
37453
  default: vue.withCtx(() => [
37174
- vue.createVNode(vue.unref(_sfc_main$p), {
37454
+ vue.createVNode(vue.unref(_sfc_main$q), {
37175
37455
  icon: nav.icon,
37176
37456
  size: 1.4
37177
37457
  }, null, 8, ["icon"]),
37178
37458
  vue.createVNode(vue.Transition, { name: "showP" }, {
37179
37459
  default: vue.withCtx(() => [
37180
- _ctx.open ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_1$f, vue.toDisplayString(nav.label), 1)) : vue.createCommentVNode("", true)
37460
+ _ctx.open ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_1$g, vue.toDisplayString(nav.label), 1)) : vue.createCommentVNode("", true)
37181
37461
  ]),
37182
37462
  _: 2
37183
37463
  }, 1024)
@@ -37204,8 +37484,8 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
37204
37484
  };
37205
37485
  }
37206
37486
  });
37207
- const SidebarMenu = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-ac02125e"]]);
37208
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
37487
+ const SidebarMenu = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-ac02125e"]]);
37488
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
37209
37489
  __name: "Skeleton",
37210
37490
  props: {
37211
37491
  count: { default: 1 },
@@ -37236,11 +37516,11 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
37236
37516
  };
37237
37517
  }
37238
37518
  });
37239
- const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-4da8c0d1"]]);
37240
- const _hoisted_1$e = { class: "bgl_card tabs-top" };
37519
+ const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-4da8c0d1"]]);
37520
+ const _hoisted_1$f = { class: "bgl_card tabs-top" };
37241
37521
  const _hoisted_2$8 = { class: "tabs grid auto-flow-columns fit-content" };
37242
37522
  const _hoisted_3$5 = ["onClick"];
37243
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
37523
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
37244
37524
  __name: "TabbedLayout",
37245
37525
  props: {
37246
37526
  title: {},
@@ -37273,7 +37553,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
37273
37553
  return vue.openBlock(), vue.createElementBlock("div", {
37274
37554
  class: vue.normalizeClass(["h-100 grid list-view gap-1", { "side-tabs": _ctx.sideTabs }])
37275
37555
  }, [
37276
- vue.createElementVNode("div", _hoisted_1$e, [
37556
+ vue.createElementVNode("div", _hoisted_1$f, [
37277
37557
  vue.renderSlot(_ctx.$slots, "top-section", {}, void 0, true),
37278
37558
  vue.createElementVNode("div", _hoisted_2$8, [
37279
37559
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.tabs, (tab) => {
@@ -37300,9 +37580,22 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
37300
37580
  };
37301
37581
  }
37302
37582
  });
37303
- const TabbedLayout = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-915732c1"]]);
37304
- const _hoisted_1$d = { key: 0 };
37305
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
37583
+ const TabbedLayout = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-915732c1"]]);
37584
+ const state$1 = vue.reactive(/* @__PURE__ */ new Map());
37585
+ function useTabs(group) {
37586
+ if (!state$1.has(group)) {
37587
+ state$1.set(group, vue.reactive({ currentTab: void 0 }));
37588
+ }
37589
+ const currentTab = vue.computed({
37590
+ get: () => state$1.get(group).currentTab,
37591
+ set: (val) => {
37592
+ state$1.get(group).currentTab = val;
37593
+ }
37594
+ });
37595
+ return { currentTab };
37596
+ }
37597
+ const _hoisted_1$e = { key: 0 };
37598
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
37306
37599
  __name: "Tabs",
37307
37600
  props: {
37308
37601
  tabs: {},
@@ -37344,14 +37637,14 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
37344
37637
  group: vue.unref(group),
37345
37638
  class: "mb-05"
37346
37639
  }, null, 8, ["modelValue", "flat", "tabs", "group"]),
37347
- vue.unref(currentTab) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
37640
+ vue.unref(currentTab) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
37348
37641
  vue.unref(slots)[vue.unref(currentTab)] ? vue.renderSlot(_ctx.$slots, vue.unref(currentTab), { key: 0 }) : vue.unref(currentTab) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(tabComponent)), { key: 1 })) : vue.createCommentVNode("", true)
37349
37642
  ])) : vue.createCommentVNode("", true)
37350
37643
  ], 64);
37351
37644
  };
37352
37645
  }
37353
37646
  });
37354
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
37647
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
37355
37648
  __name: "TabsBody",
37356
37649
  props: {
37357
37650
  group: {}
@@ -37364,6 +37657,97 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
37364
37657
  };
37365
37658
  }
37366
37659
  });
37660
+ const _hoisted_1$d = ["onClick"];
37661
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
37662
+ __name: "TabsNav",
37663
+ props: {
37664
+ title: {},
37665
+ tabs: {},
37666
+ modelValue: {},
37667
+ sideTabs: { type: Boolean },
37668
+ group: {},
37669
+ flat: { type: Boolean },
37670
+ vertical: { type: Boolean }
37671
+ },
37672
+ emits: ["update:modelValue"],
37673
+ setup(__props, { emit: __emit }) {
37674
+ const props2 = __props;
37675
+ const emit2 = __emit;
37676
+ const { currentTab } = useTabs(props2.group);
37677
+ currentTab.value = props2.modelValue || typeof props2.tabs[0] === "string" ? props2.tabs[0] : props2.tabs[0].id;
37678
+ const tabsWrap = vue.ref(void 0);
37679
+ const tabs = vue.ref([]);
37680
+ function updateIndicator() {
37681
+ const activeTab = tabs.value.find((tab) => tab.classList.contains("active"));
37682
+ if (activeTab && tabsWrap.value) {
37683
+ const { offsetLeft, offsetWidth } = activeTab;
37684
+ tabsWrap.value.style.setProperty("--indicator-left", `${offsetLeft}px`);
37685
+ if (tabsWrap.value) {
37686
+ tabsWrap.value.style.setProperty("--indicator-width", `${offsetWidth}px`);
37687
+ }
37688
+ }
37689
+ }
37690
+ function selectTab(tab) {
37691
+ currentTab.value = typeof tab === "string" ? tab : tab.id;
37692
+ emit2("update:modelValue", currentTab.value);
37693
+ vue.nextTick(() => {
37694
+ updateIndicator();
37695
+ });
37696
+ }
37697
+ function isActive(tab) {
37698
+ if (typeof tab === "string") return currentTab.value === tab;
37699
+ return currentTab.value === tab.id;
37700
+ }
37701
+ function tabLabel(tab) {
37702
+ if (typeof tab === "string") return tab;
37703
+ return tab.label;
37704
+ }
37705
+ vue.watch(
37706
+ () => props2.modelValue,
37707
+ (value) => {
37708
+ if (value && !isActive(value)) currentTab.value = value;
37709
+ vue.nextTick(() => {
37710
+ updateIndicator();
37711
+ });
37712
+ },
37713
+ { immediate: true }
37714
+ );
37715
+ vue.onMounted(() => {
37716
+ var _a2;
37717
+ tabs.value = Array.from(((_a2 = tabsWrap.value) == null ? void 0 : _a2.querySelectorAll(".bgl_tab")) || []);
37718
+ updateIndicator();
37719
+ window.addEventListener("resize", updateIndicator);
37720
+ });
37721
+ vue.onBeforeUnmount(() => {
37722
+ window.removeEventListener("resize", updateIndicator);
37723
+ });
37724
+ return (_ctx, _cache) => {
37725
+ return vue.openBlock(), vue.createElementBlock("div", {
37726
+ ref_key: "tabsWrap",
37727
+ ref: tabsWrap,
37728
+ class: vue.normalizeClass(["grid auto-flow-columns relative fit-content bgl_tabs_wrap overflow-hidden", { "bgl_flat-tabs": _ctx.flat, "bgl_vertical-tabs": _ctx.vertical }])
37729
+ }, [
37730
+ vue.renderSlot(_ctx.$slots, "tabs", vue.normalizeProps(vue.guardReactiveProps({ selectTab, isActive, tabLabel, tabs: tabs.value })), () => [
37731
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(props2.tabs, (tab, i2) => {
37732
+ return vue.openBlock(), vue.createElementBlock("button", {
37733
+ key: i2,
37734
+ type: "button",
37735
+ class: vue.normalizeClass([{ active: isActive(tab) }, "bgl_tab relative z-1"]),
37736
+ onClick: ($event) => selectTab(tab)
37737
+ }, [
37738
+ typeof tab !== "string" && tab.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
37739
+ key: 0,
37740
+ icon: tab.icon
37741
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
37742
+ vue.createTextVNode(" " + vue.toDisplayString(tabLabel(tab)), 1)
37743
+ ], 10, _hoisted_1$d);
37744
+ }), 128))
37745
+ ], true)
37746
+ ], 2);
37747
+ };
37748
+ }
37749
+ });
37750
+ const TabsNav = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-e680c2a4"]]);
37367
37751
  const _hoisted_1$c = { class: "no-margin ellipsis line-height-14 pb-025" };
37368
37752
  const _hoisted_2$7 = { class: "txt12 no-margin txt-gray ellipsis" };
37369
37753
  const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
@@ -37393,7 +37777,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
37393
37777
  src: _ctx.src,
37394
37778
  size: 40
37395
37779
  }, null, 8, ["name", "src"])) : vue.createCommentVNode("", true),
37396
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
37780
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
37397
37781
  key: 1,
37398
37782
  size: "1.2",
37399
37783
  class: "color-primary",
@@ -37415,21 +37799,28 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
37415
37799
  };
37416
37800
  }
37417
37801
  });
37418
- const _sfc_main$e = {};
37419
37802
  const _hoisted_1$b = { class: "list-wrap bgl_card thin grid overflow-hidden h-100 pt-0 pb-05 px-0 m_pb-0" };
37420
- const _hoisted_2$6 = { class: "p-1" };
37803
+ const _hoisted_2$6 = {
37804
+ key: 0,
37805
+ class: "p-1"
37806
+ };
37421
37807
  const _hoisted_3$4 = { class: "list-content auto-flow-rows align-items-start overflow-y h-100" };
37422
- function _sfc_render$3(_ctx, _cache) {
37423
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
37424
- vue.createElementVNode("div", _hoisted_2$6, [
37425
- vue.renderSlot(_ctx.$slots, "header")
37426
- ]),
37427
- vue.createElementVNode("div", _hoisted_3$4, [
37428
- vue.renderSlot(_ctx.$slots, "default")
37429
- ])
37430
- ]);
37431
- }
37432
- const ListView = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$3]]);
37808
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
37809
+ __name: "ListView",
37810
+ setup(__props) {
37811
+ const slots = vue.useSlots();
37812
+ return (_ctx, _cache) => {
37813
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
37814
+ vue.unref(slots).header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
37815
+ vue.renderSlot(_ctx.$slots, "header")
37816
+ ])) : vue.createCommentVNode("", true),
37817
+ vue.createElementVNode("div", _hoisted_3$4, [
37818
+ vue.renderSlot(_ctx.$slots, "default")
37819
+ ])
37820
+ ]);
37821
+ };
37822
+ }
37823
+ });
37433
37824
  const _hoisted_1$a = { class: "flex-center" };
37434
37825
  const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
37435
37826
  __name: "Loading",
@@ -37846,7 +38237,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
37846
38237
  "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => emit2("update:visible", $event))
37847
38238
  }, vue.createSlots({
37848
38239
  default: vue.withCtx(() => [
37849
- _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$S), {
38240
+ _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$R), {
37850
38241
  key: 0,
37851
38242
  ref_key: "form",
37852
38243
  ref: form,
@@ -37942,7 +38333,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
37942
38333
  onClick: toggleMenu,
37943
38334
  onKeypress: vue.withKeys(toggleMenu, ["enter"])
37944
38335
  }, [
37945
- vue.createVNode(vue.unref(_sfc_main$p), {
38336
+ vue.createVNode(vue.unref(_sfc_main$q), {
37946
38337
  icon: "chevron_right",
37947
38338
  class: "top-arrow"
37948
38339
  })
@@ -37961,7 +38352,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
37961
38352
  }
37962
38353
  }, {
37963
38354
  default: vue.withCtx(() => [
37964
- vue.createVNode(vue.unref(_sfc_main$p), {
38355
+ vue.createVNode(vue.unref(_sfc_main$q), {
37965
38356
  icon: link.icon
37966
38357
  }, null, 8, ["icon"]),
37967
38358
  vue.createElementVNode("div", _hoisted_4$2, vue.toDisplayString(link.label), 1)
@@ -37983,7 +38374,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
37983
38374
  }
37984
38375
  }, {
37985
38376
  default: vue.withCtx(() => [
37986
- vue.createVNode(vue.unref(_sfc_main$p), {
38377
+ vue.createVNode(vue.unref(_sfc_main$q), {
37987
38378
  icon: link.icon
37988
38379
  }, null, 8, ["icon"]),
37989
38380
  vue.createElementVNode("div", _hoisted_6$2, vue.toDisplayString(link.label), 1)
@@ -38060,8 +38451,8 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
38060
38451
  },
38061
38452
  setup(__props) {
38062
38453
  vue.useCssVars((_ctx) => ({
38063
- "3a60c2df": computedBackgroundColor.value,
38064
- "69137cfa": cumputedTextColor.value
38454
+ "2a89394f": computedBackgroundColor.value,
38455
+ "369cf12c": cumputedTextColor.value
38065
38456
  }));
38066
38457
  const props2 = __props;
38067
38458
  const slots = vue.useSlots();
@@ -38128,15 +38519,15 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
38128
38519
  }, _ctx.btn), null, 16)
38129
38520
  ])) : vue.createCommentVNode("", true)
38130
38521
  ])),
38131
- _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
38522
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
38132
38523
  key: 2,
38133
38524
  icon: _ctx.icon
38134
38525
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
38135
38526
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
38136
- !vue.unref(slots).default && _ctx.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 3 }, [
38527
+ !vue.unref(slots).default ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 3 }, [
38137
38528
  vue.createTextVNode(vue.toDisplayString(_ctx.value || _ctx.modelValue), 1)
38138
38529
  ], 64)) : vue.createCommentVNode("", true),
38139
- _ctx.iconEnd ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
38530
+ _ctx.iconEnd ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
38140
38531
  key: 4,
38141
38532
  icon: _ctx.iconEnd
38142
38533
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -38154,7 +38545,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
38154
38545
  };
38155
38546
  }
38156
38547
  });
38157
- const Pill = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-47a928b4"]]);
38548
+ const Pill = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-2ca4d3a1"]]);
38158
38549
  const _sfc_main$5 = {};
38159
38550
  function _sfc_render$2(_ctx, _cache) {
38160
38551
  const _component_router_view = vue.resolveComponent("router-view");
@@ -38646,6 +39037,67 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
38646
39037
  }
38647
39038
  });
38648
39039
  const Zoomer = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-379819e1"]]);
39040
+ const FORM_STATE_KEY = Symbol("bagelFormState");
39041
+ function safeClone(obj) {
39042
+ if (obj === null || typeof obj !== "object") return obj;
39043
+ const seen = /* @__PURE__ */ new WeakSet();
39044
+ return JSON.parse(JSON.stringify(obj, (key, value) => {
39045
+ if (typeof value === "object" && value !== null) {
39046
+ if (seen.has(value)) {
39047
+ return void 0;
39048
+ }
39049
+ seen.add(value);
39050
+ }
39051
+ return value;
39052
+ }));
39053
+ }
39054
+ function provideBagelFormState(initialData) {
39055
+ const data2 = vue.ref(initialData);
39056
+ const isDirty = vue.ref(false);
39057
+ const getFieldData = (path) => {
39058
+ if (!path) return "";
39059
+ const keys4 = path.split(/[.[]/);
39060
+ let current = data2.value;
39061
+ for (let i2 = 0; i2 < keys4.length; i2++) {
39062
+ const key = keys4[i2];
39063
+ if (!current || typeof current !== "object" || !(key in current)) {
39064
+ return "";
39065
+ }
39066
+ current = current[key];
39067
+ }
39068
+ return current ?? "";
39069
+ };
39070
+ const updateField = (path, value) => {
39071
+ const keys4 = path.split(/[.[]/);
39072
+ if (typeof data2.value !== "object" || data2.value === null) {
39073
+ data2.value = {};
39074
+ }
39075
+ let current = data2.value;
39076
+ for (let i2 = 0; i2 < keys4.length - 1; i2++) {
39077
+ const key = keys4[i2];
39078
+ if (!(key in current) || typeof current[key] !== "object" || current[key] === null) {
39079
+ current[key] = {};
39080
+ }
39081
+ current = current[key];
39082
+ }
39083
+ const safeValue = safeClone(value);
39084
+ current[keys4[keys4.length - 1]] = safeValue;
39085
+ isDirty.value = true;
39086
+ };
39087
+ const state2 = {
39088
+ data: data2,
39089
+ getFieldData,
39090
+ updateField,
39091
+ isDirty
39092
+ };
39093
+ vue.provide(FORM_STATE_KEY, state2);
39094
+ return state2;
39095
+ }
39096
+ function useBagelFormState() {
39097
+ const state2 = vue.inject(FORM_STATE_KEY);
39098
+ if (!state2) throw new Error("BagelFormState must be provided");
39099
+ return state2;
39100
+ }
38649
39101
  function useBglSchema({ schema, showFields, data: data2 } = {}) {
38650
39102
  let _schema = schema;
38651
39103
  if (typeof _schema === "function") {
@@ -39112,13 +39564,13 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
39112
39564
  title: item == null ? void 0 : item.name,
39113
39565
  class: "vw90"
39114
39566
  }, null, 8, _hoisted_5)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
39115
- vue.createVNode(vue.unref(_sfc_main$p), {
39567
+ vue.createVNode(vue.unref(_sfc_main$q), {
39116
39568
  class: "m-0 m_none",
39117
39569
  icon: "draft",
39118
39570
  size: 10,
39119
39571
  weight: "12"
39120
39572
  }),
39121
- vue.createVNode(vue.unref(_sfc_main$p), {
39573
+ vue.createVNode(vue.unref(_sfc_main$q), {
39122
39574
  class: "m-0 none m_block m_-mb-1",
39123
39575
  icon: "draft",
39124
39576
  size: 4,
@@ -39157,7 +39609,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
39157
39609
  src: item.src,
39158
39610
  alt: "",
39159
39611
  onClick: ($event) => selectItem(index2)
39160
- }, null, 8, ["src", "class", "onClick"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$p), {
39612
+ }, null, 8, ["src", "class", "onClick"])) : (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$q), {
39161
39613
  key: 1,
39162
39614
  class: vue.normalizeClass(["thumbnail object-fit-cover hover opacity-5 ed flex bg-popup justify-content-center align-items-center flex-shrink-0", { active: vue.unref(currentIndex) === index2 }]),
39163
39615
  icon: "description",
@@ -40296,11 +40748,10 @@ exports.AddressSearch = _sfc_main$15;
40296
40748
  exports.Alert = Alert;
40297
40749
  exports.Avatar = Avatar;
40298
40750
  exports.Badge = Badge;
40299
- exports.BagelForm = _sfc_main$S;
40751
+ exports.BagelForm = _sfc_main$R;
40300
40752
  exports.BagelVue = BagelVue;
40301
40753
  exports.BglComponent = _sfc_main$10;
40302
- exports.BglField = _sfc_main$Q;
40303
- exports.BglForm = _sfc_main$S;
40754
+ exports.BglForm = _sfc_main$R;
40304
40755
  exports.BglVideo = BglVideo;
40305
40756
  exports.BottomMenu = BottomMenu;
40306
40757
  exports.Btn = Btn;
@@ -40309,28 +40760,29 @@ exports.Carousel = Carousel;
40309
40760
  exports.CheckInput = CheckInput;
40310
40761
  exports.Checkbox = Checkbox;
40311
40762
  exports.CodeEditor = CodeEditor;
40312
- exports.ColorPicker = _sfc_main$L;
40763
+ exports.ColorPicker = _sfc_main$M;
40313
40764
  exports.DataPreview = DataPreview;
40314
40765
  exports.DataTable = DataTable;
40315
- exports.DateInput = _sfc_main$K;
40766
+ exports.DateInput = _sfc_main$L;
40316
40767
  exports.DatePick = DatePick;
40317
- exports.DatePicker = _sfc_main$I;
40318
- exports.Dropdown = _sfc_main$V;
40768
+ exports.DatePicker = _sfc_main$J;
40769
+ exports.Draggable = _sfc_main$V;
40770
+ exports.Dropdown = _sfc_main$U;
40319
40771
  exports.FORM_STATE_KEY = FORM_STATE_KEY;
40320
- exports.FieldArray = _sfc_main$P;
40772
+ exports.FieldArray = _sfc_main$Q;
40321
40773
  exports.FieldSetVue = FieldSetVue;
40322
40774
  exports.FileUpload = FileUpload;
40323
40775
  exports.Flag = Flag;
40324
40776
  exports.IMAGE_FORMATS = IMAGE_FORMATS;
40325
40777
  exports.IMAGE_FORMATS_REGEXP = IMAGE_FORMATS_REGEXP;
40326
- exports.Icon = _sfc_main$p;
40327
- exports.IframeVue = _sfc_main$o;
40778
+ exports.Icon = _sfc_main$q;
40779
+ exports.IframeVue = _sfc_main$p;
40328
40780
  exports.Image = Image$1;
40329
40781
  exports.JSONInput = JSONInput;
40330
40782
  exports.Layout = Layout;
40331
40783
  exports.Lineart = _sfc_main$Y;
40332
40784
  exports.ListItem = _sfc_main$f;
40333
- exports.ListView = ListView;
40785
+ exports.ListView = _sfc_main$e;
40334
40786
  exports.Loading = Loading;
40335
40787
  exports.MapEmbed = _sfc_main$c;
40336
40788
  exports.Modal = _sfc_main$b;
@@ -40341,7 +40793,7 @@ exports.NavBar = NavBar;
40341
40793
  exports.NumberInput = NumberInput;
40342
40794
  exports.OTP = OTP;
40343
40795
  exports.PageTitle = _sfc_main$7;
40344
- exports.PasswordInput = _sfc_main$D;
40796
+ exports.PasswordInput = _sfc_main$E;
40345
40797
  exports.Pill = Pill;
40346
40798
  exports.RadioGroup = RadioGroup;
40347
40799
  exports.RadioPillsInput = RadioPillsInput;
@@ -40350,13 +40802,13 @@ exports.RichText = RichText;
40350
40802
  exports.RouterWrapper = RouterWrapper;
40351
40803
  exports.SelectInput = SelectInput;
40352
40804
  exports.SidebarMenu = SidebarMenu;
40353
- exports.SignaturePad = _sfc_main$v;
40805
+ exports.SignaturePad = _sfc_main$w;
40354
40806
  exports.Skeleton = Skeleton;
40355
40807
  exports.TabbedLayout = TabbedLayout;
40356
40808
  exports.TableField = TableField;
40357
40809
  exports.TableSchema = DataTable;
40358
- exports.Tabs = _sfc_main$h;
40359
- exports.TabsBody = _sfc_main$g;
40810
+ exports.Tabs = _sfc_main$i;
40811
+ exports.TabsBody = _sfc_main$h;
40360
40812
  exports.TabsNav = TabsNav;
40361
40813
  exports.TelInput = TelInput;
40362
40814
  exports.TextInput = TextInput;
@@ -40396,8 +40848,10 @@ exports.useBagel = useBagel;
40396
40848
  exports.useBagelFormState = useBagelFormState;
40397
40849
  exports.useBglSchema = useBglSchema;
40398
40850
  exports.useDebounceFn = useDebounceFn;
40851
+ exports.useDraggable = useDraggable;
40399
40852
  exports.useEscape = useEscape;
40400
40853
  exports.useI18nT = useI18nT;
40401
40854
  exports.useLang = useLang;
40402
40855
  exports.useLocalStorage = useLocalStorage;
40403
40856
  exports.useModal = useModal;
40857
+ exports.vDraggable = vDraggable;