vlite3 1.4.32 → 1.4.34

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 (44) hide show
  1. package/README.md +7 -0
  2. package/components/Alert.vue.js +45 -40
  3. package/components/Barcode/Barcode.vue.js +34 -21
  4. package/components/CategoryManager/CategoryNode.vue.js +30 -30
  5. package/components/CategoryMenu/CategoryMenu.vue.js +9 -11
  6. package/components/Chart/GanttChart.vue.d.ts +5 -1
  7. package/components/Chart/GanttChart.vue.js +2 -2
  8. package/components/Chart/GanttChart.vue2.js +977 -812
  9. package/components/Chart/GanttChartConnectorRouting.d.ts +83 -0
  10. package/components/Chart/GanttChartConnectorRouting.js +405 -0
  11. package/components/Chart/GanttChartDependencyUtils.js +43 -47
  12. package/components/Chart/types.d.ts +16 -1
  13. package/components/ColorPicker/ColorIro.vue2.js +78 -64
  14. package/components/ColorPicker/ColorPicker.vue.d.ts +5 -0
  15. package/components/ColorPicker/ColorPicker.vue.js +110 -64
  16. package/components/ColorPicker/constants.d.ts +2 -0
  17. package/components/ColorPicker/constants.js +4 -0
  18. package/components/ColorPicker/index.d.ts +1 -0
  19. package/components/Dropdown/Dropdown.vue.js +100 -97
  20. package/components/ExportData/ExportData.vue.js +85 -63
  21. package/components/FilePreview/FilePreview.vue.js +31 -13
  22. package/components/Form/FormField.vue.js +9 -8
  23. package/components/ImportData/ImportStep1.vue.js +80 -75
  24. package/components/Kanban/Kanban.vue.d.ts +16 -2
  25. package/components/Kanban/Kanban.vue.js +2 -2
  26. package/components/Kanban/Kanban.vue2.js +150 -86
  27. package/components/Kanban/types.d.ts +37 -0
  28. package/components/QRCode/QRCode.vue.js +31 -26
  29. package/components/ToastNotification.vue.js +1 -1
  30. package/components/ToastNotification.vue2.js +3 -3
  31. package/components/index.d.ts +1 -1
  32. package/composables/useKeyStroke.d.ts +18 -0
  33. package/composables/useKeyStroke.js +103 -77
  34. package/composables/useTheme.js +1 -1
  35. package/directives/vScrollReveal.js +23 -18
  36. package/index.d.ts +1 -0
  37. package/index.js +235 -233
  38. package/package.json +11 -4
  39. package/style.css +1 -1
  40. package/utils/UtilsModuleInterop.d.ts +6 -0
  41. package/utils/UtilsModuleInterop.js +9 -0
  42. package/utils/environment.d.ts +29 -0
  43. package/utils/environment.js +4 -0
  44. package/utils/functions.js +14 -13
package/README.md CHANGED
@@ -20,6 +20,13 @@ yarn add vlite3
20
20
 
21
21
  ```
22
22
 
23
+ ### Server-side rendering
24
+
25
+ The package entry is safe to evaluate during Vue SSR. Browser-only export,
26
+ import, barcode, QR-code, and scroll-reveal runtimes are loaded lazily when
27
+ their client-side actions or lifecycle hooks run. SSR applications can import
28
+ VLite3 components normally without evaluating those dependencies on the server.
29
+
23
30
  ## 2. Tailwind CSS Setup (Tailwind v4)
24
31
 
25
32
  `vite.config.ts`
@@ -1,10 +1,10 @@
1
- import { defineComponent as V, ref as B, computed as t, useSlots as N, openBlock as r, createElementBlock as i, normalizeClass as l, renderSlot as p, createBlock as S, createCommentVNode as a, createElementVNode as v, toDisplayString as f, createTextVNode as T, createVNode as j } from "vue";
2
- import b from "./Icon.vue.js";
3
- import { $t as m } from "../utils/i18n.js";
4
- const D = ["role"], E = {
1
+ import { defineComponent as $, useSlots as S, ref as T, computed as t, openBlock as r, createElementBlock as i, normalizeClass as n, renderSlot as v, createBlock as D, createCommentVNode as a, createElementVNode as f, toDisplayString as b, unref as E, createTextVNode as z, createVNode as A } from "vue";
2
+ import m from "./Icon.vue.js";
3
+ import { $t as y } from "../utils/i18n.js";
4
+ const O = ["role"], R = {
5
5
  key: 1,
6
6
  class: "text-sm opacity-90 [&_p]:leading-relaxed"
7
- }, R = /* @__PURE__ */ V({
7
+ }, F = /* @__PURE__ */ $({
8
8
  __name: "Alert",
9
9
  props: {
10
10
  title: {},
@@ -18,71 +18,76 @@ const D = ["role"], E = {
18
18
  class: { default: "" }
19
19
  },
20
20
  emits: ["close"],
21
- setup(s, { emit: y }) {
22
- const e = s, x = y, u = B(!0), h = () => {
23
- u.value = !1, x("close");
24
- }, d = t(() => e.titleI18n ? m(e.titleI18n) : e.title), c = t(
25
- () => e.descriptionI18n ? m(e.descriptionI18n) : e.description
26
- ), k = t(() => ({
21
+ setup(s, { emit: x }) {
22
+ const e = s, h = x, c = S(), d = T(!0), k = () => {
23
+ d.value = !1, h("close");
24
+ }, g = t(() => e.titleI18n ? y(e.titleI18n) : e.title), u = t(() => e.descriptionI18n ? y(e.descriptionI18n) : e.description), w = t(() => ({
27
25
  danger: "bg-danger-subtle text-danger-subtle-fg border-danger-subtle-border/20",
28
26
  primary: "bg-primary-light text-primary-light-fg border-primary/10",
29
27
  success: "bg-success-subtle text-success-subtle-fg border-success-subtle-border/20",
30
28
  warning: "bg-warning-subtle text-warning-subtle-fg border-warning-subtle-border/20"
31
- })[e.variant]), w = t(() => ({
29
+ })[e.variant]), C = t(() => ({
32
30
  primary: "text-primary-light-fg!",
33
31
  success: "text-success-subtle-fg!",
34
32
  warning: "text-warning-subtle-fg!",
35
33
  danger: "text-danger-subtle-fg!"
36
- })[e.variant]), o = t(() => !c.value && !N().default), C = t(() => [
37
- "relative w-full rounded-lg border px-4 [&>svg]:absolute [&>svg]:left-4 [&>svg]:text-foreground",
38
- o.value ? "py-3" : "pt-4 pb-2",
39
- o.value ? "[&>svg]:top-1/2 [&>svg]:-translate-y-1/2" : "[&>svg]:top-4 top-4 [&>svg+div]:translate-y-[-3px]",
40
- k.value,
34
+ })[e.variant]), I = t(() => !!(e.icon || c.icon)), l = t(() => !u.value && !c.default), B = t(() => [
35
+ "relative w-full rounded-lg border px-4",
36
+ "[&>svg]:absolute [&>svg]:left-4 [&>svg]:text-foreground",
37
+ l.value ? "py-3" : "pt-4 pb-2",
38
+ l.value ? "[&>svg]:top-1/2 [&>svg]:-translate-y-1/2" : "[&>svg]:top-4 [&>svg+div]:translate-y-[-3px]",
39
+ w.value,
41
40
  e.class
42
- ].join(" ")), I = t(() => [
41
+ ]), V = t(() => [
43
42
  "font-medium leading-none tracking-tight text-inherit!",
44
- o.value ? "" : "mb-1"
45
- ].join(" ")), $ = t(() => e.role ? e.role : ["danger", "warning"].includes(e.variant) ? "alert" : "status");
46
- return (n, g) => u.value ? (r(), i("div", {
43
+ !l.value && "mb-1"
44
+ ]), N = t(() => e.role ? e.role : ["danger", "warning"].includes(e.variant) ? "alert" : "status");
45
+ return (o, p) => d.value ? (r(), i("div", {
47
46
  key: 0,
48
- class: l(C.value),
49
- role: $.value
47
+ class: n(B.value),
48
+ role: N.value
50
49
  }, [
51
- p(n.$slots, "icon", {}, () => [
52
- s.icon ? (r(), S(b, {
50
+ v(o.$slots, "icon", {}, () => [
51
+ s.icon ? (r(), D(m, {
53
52
  key: 0,
54
53
  icon: s.icon,
55
- class: l(["h-4 w-4", w.value])
54
+ class: n(["h-4 w-4", C.value])
56
55
  }, null, 8, ["icon", "class"])) : a("", !0)
57
56
  ]),
58
- v("div", {
59
- class: l({ "pl-7": s.icon || n.$slots.icon, "pr-6": s.closable })
57
+ f("div", {
58
+ class: n({
59
+ "pl-7": I.value,
60
+ "pr-6": s.closable
61
+ })
60
62
  }, [
61
- d.value ? (r(), i("h5", {
63
+ g.value ? (r(), i("h5", {
62
64
  key: 0,
63
- class: l(I.value)
64
- }, f(d.value), 3)) : a("", !0),
65
- c.value || n.$slots.default ? (r(), i("div", E, [
66
- p(n.$slots, "default", {}, () => [
67
- T(f(c.value), 1)
65
+ class: n(V.value)
66
+ }, b(g.value), 3)) : a("", !0),
67
+ u.value || E(c).default ? (r(), i("div", R, [
68
+ v(o.$slots, "default", {}, () => [
69
+ z(b(u.value), 1)
68
70
  ])
69
71
  ])) : a("", !0)
70
72
  ], 2),
71
73
  s.closable ? (r(), i("button", {
72
74
  key: 0,
73
75
  type: "button",
74
- onClick: h,
75
- class: l(["absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", [o.value ? "top-1/2 -translate-y-1/2" : "top-4"]])
76
+ class: n([
77
+ "absolute right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
78
+ l.value ? "top-1/2 -translate-y-1/2" : "top-4"
79
+ ]),
80
+ onClick: k
76
81
  }, [
77
- j(b, {
82
+ A(m, {
78
83
  icon: "lucide:x",
79
84
  class: "h-4 w-4"
80
85
  }),
81
- g[0] || (g[0] = v("span", { class: "sr-only" }, "Close", -1))
86
+ p[0] || (p[0] = f("span", { class: "sr-only" }, " Close ", -1))
82
87
  ], 2)) : a("", !0)
83
- ], 10, D)) : a("", !0);
88
+ ], 10, O)) : a("", !0);
84
89
  }
85
90
  });
86
91
  export {
87
- R as default
92
+ F as default
88
93
  };
@@ -1,10 +1,10 @@
1
- import { defineComponent as d, ref as s, onMounted as f, watch as m, openBlock as r, createElementBlock as l, toDisplayString as p, createCommentVNode as v, withDirectives as h, vShow as g } from "vue";
2
- import w from "jsbarcode";
3
- import { barcodesConstants as b } from "./types.js";
4
- const y = { class: "inline-flex justify-center items-center max-w-full flex-col gap-2" }, x = {
1
+ import { defineComponent as p, ref as f, onMounted as h, watch as g, openBlock as i, createElementBlock as u, toDisplayString as w, createCommentVNode as b, withDirectives as y, vShow as x } from "vue";
2
+ import { barcodesConstants as _ } from "./types.js";
3
+ import { resolveModuleRuntime as C } from "../../utils/UtilsModuleInterop.js";
4
+ const k = { class: "inline-flex justify-center items-center max-w-full flex-col gap-2" }, B = {
5
5
  key: 0,
6
6
  class: "text-sm text-destructive px-4 py-2 bg-destructive/10 rounded-md border border-destructive/20 text-center whitespace-normal overflow-wrap-anywhere"
7
- }, B = /* @__PURE__ */ d({
7
+ }, D = /* @__PURE__ */ p({
8
8
  __name: "Barcode",
9
9
  props: {
10
10
  value: {},
@@ -16,16 +16,26 @@ const y = { class: "inline-flex justify-center items-center max-w-full flex-col
16
16
  background: { default: "#ffffff" },
17
17
  margin: { default: 10 }
18
18
  },
19
- setup(u) {
20
- const e = u, o = s(null), a = s(""), n = () => {
21
- if (a.value = "", o.value && e.value) {
19
+ setup(m) {
20
+ const e = m, o = f(null), r = f("");
21
+ let a = 0;
22
+ const s = async () => {
23
+ const n = ++a;
24
+ if (r.value = "", o.value && e.value) {
22
25
  o.value.innerHTML = "";
23
26
  try {
24
- const t = b.find(
25
- (c) => c.value.toLowerCase() === e.format.toLowerCase()
26
- ), i = t ? t.value : e.format;
27
- w(o.value, e.value, {
28
- format: i,
27
+ const t = await import("jsbarcode");
28
+ if (n !== a || !o.value) return;
29
+ const c = C(
30
+ t,
31
+ (l) => typeof l == "function"
32
+ );
33
+ if (!c) throw new Error("The barcode runtime is unavailable.");
34
+ const d = _.find(
35
+ (l) => l.value.toLowerCase() === e.format.toLowerCase()
36
+ ), v = d ? d.value : e.format;
37
+ c(o.value, e.value, {
38
+ format: v,
29
39
  displayValue: e.displayValue,
30
40
  width: e.width,
31
41
  height: e.height,
@@ -35,25 +45,28 @@ const y = { class: "inline-flex justify-center items-center max-w-full flex-col
35
45
  margin: e.margin
36
46
  });
37
47
  } catch (t) {
38
- console.error("Failed to generate barcode:", t), a.value = typeof t == "string" ? t : t?.message || "Invalid barcode value for this format";
48
+ if (n !== a) return;
49
+ console.error("Failed to generate barcode:", t), r.value = typeof t == "string" ? t : t?.message || "Invalid barcode value for this format";
39
50
  }
40
51
  }
41
52
  };
42
- return f(() => {
43
- n();
44
- }), m(() => e, n, { deep: !0 }), (t, i) => (r(), l("div", y, [
45
- a.value ? (r(), l("div", x, p(a.value), 1)) : v("", !0),
46
- h((r(), l("svg", {
53
+ return h(() => {
54
+ s();
55
+ }), g(() => e, () => {
56
+ s();
57
+ }, { deep: !0 }), (n, t) => (i(), u("div", k, [
58
+ r.value ? (i(), u("div", B, w(r.value), 1)) : b("", !0),
59
+ y((i(), u("svg", {
47
60
  ref_key: "barcodeRef",
48
61
  ref: o,
49
62
  class: "w-full h-auto max-w-full",
50
63
  preserveAspectRatio: "xMidYMid meet"
51
64
  }, null, 512)), [
52
- [g, !a.value]
65
+ [x, !r.value]
53
66
  ])
54
67
  ]));
55
68
  }
56
69
  });
57
70
  export {
58
- B as default
71
+ D as default
59
72
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as A, inject as B, computed as g, resolveComponent as F, openBlock as a, createBlock as f, unref as l, withCtx as K, createElementBlock as d, Fragment as R, renderList as L, isMemoSame as O, createElementVNode as y, normalizeClass as u, createVNode as s, createCommentVNode as c, withDirectives as k, withModifiers as q, withKeys as w, vModelText as _, toDisplayString as Q, vShow as G } from "vue";
1
+ import { defineComponent as B, inject as F, computed as g, resolveComponent as K, openBlock as a, createBlock as f, unref as l, withCtx as P, createElementBlock as i, Fragment as R, renderList as L, isMemoSame as O, createElementVNode as y, normalizeClass as u, createVNode as s, createCommentVNode as c, withDirectives as k, withModifiers as q, withKeys as w, vModelText as _, toDisplayString as Q, vShow as G } from "vue";
2
2
  import { VueDraggable as H } from "vue-draggable-plus";
3
3
  import C from "../Icon.vue.js";
4
4
  import m from "../Button.vue.js";
@@ -15,7 +15,7 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
15
15
  }, le = {
16
16
  key: 1,
17
17
  class: "flex items-center gap-1.5 py-1.5 px-2 bg-background border border-border shadow-sm rounded-lg w-full mb-1.5"
18
- }, ne = ["placeholder"], ce = /* @__PURE__ */ A({
18
+ }, ne = ["placeholder"], ce = /* @__PURE__ */ B({
19
19
  __name: "CategoryNode",
20
20
  props: {
21
21
  modelValue: {},
@@ -23,24 +23,24 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
23
23
  },
24
24
  emits: ["update:modelValue", "change", "dragEnd"],
25
25
  setup(V, { emit: E }) {
26
- const S = V, p = E, t = B("categoryManager"), b = g({
26
+ const S = V, p = E, t = F("categoryManager"), b = g({
27
27
  get: () => S.modelValue,
28
- set: (i) => p("update:modelValue", i)
29
- }), D = (i, n) => {
30
- n.children = i, p("change");
31
- }, U = () => p("change"), N = (i) => {
32
- const n = i.item?.dataset?.id;
28
+ set: (d) => p("update:modelValue", d)
29
+ }), D = (d, n) => {
30
+ n.children = d, p("change");
31
+ }, U = () => p("change"), N = (d) => {
32
+ const n = d.item?.dataset?.id;
33
33
  n && p("dragEnd", n);
34
- }, v = g(() => t?.readonly.value || !1), r = g(() => t?.size.value || "md"), M = g(() => r.value === "sm" ? "p-1 md:p-1.5" : r.value === "lg" ? "p-2 md:p-2.5" : "py-1.5 px-2"), I = g(() => {
34
+ }, v = g(() => t?.readonly.value || !1), r = g(() => t?.size.value || "md"), M = g(() => r.value === "sm" ? "p-1 md:p-1.5" : r.value === "lg" ? "p-2 md:p-2.5" : "py-1.5 px-2"), T = g(() => {
35
35
  const n = S.level === 0 ? "font-semibold" : "font-medium";
36
36
  return r.value === "sm" ? `text-xs ${n} text-foreground` : r.value === "lg" ? `-text-fs-1 ${n} text-foreground` : `text-sm ${n} text-foreground`;
37
37
  }), h = g(() => r.value === "sm" ? "w-3.5 h-3.5" : r.value === "lg" ? "w-4.5 h-4.5" : "w-4 h-4"), j = {
38
- mounted: (i) => {
39
- setTimeout(() => i.focus(), 10);
38
+ mounted: (d) => {
39
+ setTimeout(() => d.focus(), 10);
40
40
  }
41
41
  };
42
- return (i, n) => {
43
- const P = F("CategoryNode", !0);
42
+ return (d, n) => {
43
+ const A = K("CategoryNode", !0);
44
44
  return a(), f(l(H), {
45
45
  modelValue: b.value,
46
46
  "onUpdate:modelValue": n[11] || (n[11] = (e) => b.value = e),
@@ -52,9 +52,9 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
52
52
  class: "min-h-[2px]",
53
53
  onEnd: N
54
54
  }, {
55
- default: K(() => [
56
- (a(!0), d(R, null, L(b.value, (e, oe, ae, x) => {
57
- const T = [
55
+ default: P(() => [
56
+ (a(!0), i(R, null, L(b.value, (e, oe, ae, x) => {
57
+ const I = [
58
58
  e.id,
59
59
  e.title,
60
60
  e.icon,
@@ -65,8 +65,8 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
65
65
  v.value,
66
66
  r.value
67
67
  ];
68
- if (x && x.key === e.id && O(x, T)) return x;
69
- const $ = (a(), d("div", {
68
+ if (x && x.key === e.id && O(x, I)) return x;
69
+ const $ = (a(), i("div", {
70
70
  key: e.id,
71
71
  "data-id": e.id,
72
72
  class: "mb-1.5 flex flex-col"
@@ -78,7 +78,7 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
78
78
  ])
79
79
  }, [
80
80
  y("div", J, [
81
- e.children && e.children.length > 0 ? (a(), d("button", {
81
+ e.children && e.children.length > 0 ? (a(), i("button", {
82
82
  key: 0,
83
83
  onClick: (o) => l(t)?.toggleExpand(e.id),
84
84
  class: u([
@@ -92,7 +92,7 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
92
92
  }, null, 8, ["icon", "class"])
93
93
  ], 10, W)) : c("", !0),
94
94
  y("div", X, [
95
- v.value ? c("", !0) : (a(), d("div", Y, [
95
+ v.value ? c("", !0) : (a(), i("div", Y, [
96
96
  s(C, {
97
97
  icon: "lucide:grip-vertical",
98
98
  class: u(h.value)
@@ -113,18 +113,18 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
113
113
  },
114
114
  position: "bottom-start",
115
115
  onOnSelect: (o) => {
116
- console.log("IconPicker value :>> ", o), e.icon = o, l(t)?.saveItem(e);
116
+ e.icon = o, l(t)?.saveItem(e);
117
117
  }
118
118
  }, null, 8, ["value", "btn-props", "onOnSelect"])),
119
- v.value ? (a(), d("span", {
119
+ v.value ? (a(), i("span", {
120
120
  key: 4,
121
- class: u(["truncate", I.value])
122
- }, Q(e.title), 3)) : k((a(), d("input", {
121
+ class: u(["truncate", T.value])
122
+ }, Q(e.title), 3)) : k((a(), i("input", {
123
123
  key: 3,
124
124
  "onUpdate:modelValue": (o) => e.title = o,
125
125
  class: u([
126
126
  "bg-transparent border-0 outline-none focus:ring-0 px-1 py-0.5 -ml-1 transition-colors w-full truncate cursor-text min-w-0 shadow-none caret-primary",
127
- I.value
127
+ T.value
128
128
  ]),
129
129
  placeholder: l(t)?.categoryTitlePlaceholderText.value || "Category title...",
130
130
  onChange: (o) => l(t)?.saveItem(e),
@@ -136,7 +136,7 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
136
136
  ])
137
137
  ])
138
138
  ]),
139
- v.value ? c("", !0) : (a(), d("div", ee, [
139
+ v.value ? c("", !0) : (a(), i("div", ee, [
140
140
  s(m, {
141
141
  variant: "ghost",
142
142
  size: "xs",
@@ -164,8 +164,8 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
164
164
  }, null, 8, ["title", "onClick"])
165
165
  ]))
166
166
  ], 2),
167
- e.children && e.children.length > 0 || l(t)?.inlineState.value.mode === "add-child" && l(t).inlineState.value.targetId === e.id ? k((a(), d("div", te, [
168
- e.children && e.children.length > 0 ? (a(), f(P, {
167
+ e.children && e.children.length > 0 || l(t)?.inlineState.value.mode === "add-child" && l(t).inlineState.value.targetId === e.id ? k((a(), i("div", te, [
168
+ e.children && e.children.length > 0 ? (a(), f(A, {
169
169
  key: 0,
170
170
  modelValue: e.children,
171
171
  "onUpdate:modelValue": (o) => D(o, e),
@@ -173,7 +173,7 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
173
173
  onChange: U,
174
174
  onDragEnd: n[2] || (n[2] = (o) => p("dragEnd", o))
175
175
  }, null, 8, ["modelValue", "onUpdate:modelValue", "level"])) : c("", !0),
176
- l(t)?.inlineState.value.mode === "add-child" && l(t).inlineState.value.targetId === e.id ? (a(), d("div", le, [
176
+ l(t)?.inlineState.value.mode === "add-child" && l(t).inlineState.value.targetId === e.id ? (a(), i("div", le, [
177
177
  s(z, {
178
178
  modelValue: l(t).inlineState.value.icon,
179
179
  "onUpdate:modelValue": n[3] || (n[3] = (o) => l(t).inlineState.value.icon = o),
@@ -217,7 +217,7 @@ const J = { class: "flex items-center gap-px overflow-hidden flex-1" }, W = ["on
217
217
  [G, l(t)?.expandedIds.value.has(e.id)]
218
218
  ]) : c("", !0)
219
219
  ], 8, ["data-id"]));
220
- return $.memo = T, $;
220
+ return $.memo = I, $;
221
221
  }, n, 9), 128))
222
222
  ]),
223
223
  _: 1
@@ -1,4 +1,4 @@
1
- import { defineComponent as C, computed as i, markRaw as u, inject as B, openBlock as m, createElementBlock as D, createBlock as f, unref as E, normalizeClass as h, resolveDynamicComponent as S } from "vue";
1
+ import { defineComponent as C, computed as o, markRaw as u, inject as B, openBlock as m, createElementBlock as D, createBlock as f, unref as E, normalizeClass as h, resolveDynamicComponent as S } from "vue";
2
2
  import v from "./CategoryMenuVariant1.vue.js";
3
3
  import k from "./CategoryMenuVariant2.vue.js";
4
4
  import { CATEGORY_MENU_ROUTE_PREFIX_KEY as R, buildCategoryRoute as A } from "./utils.js";
@@ -42,9 +42,7 @@ const L = {
42
42
  },
43
43
  emits: ["select"],
44
44
  setup(w, { emit: g }) {
45
- const e = w, n = g, l = i(() => e.rawData && e.rawData.length > 0 ? j(e.rawData) : e.items || []);
46
- console.log(l.value);
47
- const x = i(() => {
45
+ const e = w, n = g, i = o(() => e.rawData && e.rawData.length > 0 ? j(e.rawData) : e.items || []), x = o(() => {
48
46
  switch (e.variant) {
49
47
  case "tabs":
50
48
  return u(v);
@@ -53,13 +51,13 @@ const L = {
53
51
  default:
54
52
  return u(v);
55
53
  }
56
- }), o = B(
54
+ }), l = B(
57
55
  R,
58
56
  void 0
59
- ), s = i(() => {
60
- const a = typeof o == "object" && o && "value" in o ? o.value : o;
57
+ ), s = o(() => {
58
+ const a = typeof l == "object" && l && "value" in l ? l.value : l;
61
59
  return String(e.routePrefix || a || "");
62
- }), y = i(() => {
60
+ }), y = o(() => {
63
61
  if (e.variant !== "sidebar") return [];
64
62
  const a = (t, d = []) => {
65
63
  const c = t.children && t.children.length > 0 ? t.children.map((_) => a(_, [...d, t])) : void 0, p = !!c?.length;
@@ -73,7 +71,7 @@ const L = {
73
71
  // Parent nodes are expanders in tree/sidebar mode; leaves select/navigate.
74
72
  action: p ? void 0 : () => n("select", t)
75
73
  };
76
- }, r = l.value.map((t) => a(t));
74
+ }, r = i.value.map((t) => a(t));
77
75
  return e.showAllItem && r.unshift({
78
76
  id: "all",
79
77
  label: e.allItemLabel,
@@ -81,7 +79,7 @@ const L = {
81
79
  icon: e.showIcons ? "lucide:layout-grid" : void 0,
82
80
  action: () => n("select", { id: "all", title: e.allItemLabel })
83
81
  }), r;
84
- }), I = (a) => n("select", a), b = i(() => !l.value || l.value.length === 0);
82
+ }), I = (a) => n("select", a), b = o(() => !i.value || i.value.length === 0);
85
83
  return (a, r) => b.value ? (m(), D("div", L, " No categories to display. ")) : e.variant === "sidebar" ? (m(), f(E(P), {
86
84
  key: 1,
87
85
  items: y.value,
@@ -90,7 +88,7 @@ const L = {
90
88
  class: h(e.class)
91
89
  }, null, 8, ["items", "allow-multiple", "default-expanded", "class"])) : (m(), f(S(x.value), {
92
90
  key: 2,
93
- items: l.value,
91
+ items: i.value,
94
92
  "max-depth": e.maxDepth,
95
93
  "show-icons": e.showIcons,
96
94
  "show-all-item": e.showAllItem,
@@ -25,7 +25,11 @@ export interface GanttChartProps {
25
25
  * new dependency. Independent of `showDependencies`.
26
26
  */
27
27
  editableDependencies?: boolean;
28
- /** When moving a task, also shift all tasks that depend on it (recursively) */
28
+ /**
29
+ * When moving a task, dependents follow the bar as a visual preview only.
30
+ * Release still emits ONE root `task-update`; the parent owns the
31
+ * authoritative cascade and pushes final dates back via `tasks`.
32
+ */
29
33
  cascadeDependencies?: boolean;
30
34
  zoom?: boolean;
31
35
  }
@@ -1,7 +1,7 @@
1
1
  import t from "./GanttChart.vue2.js";
2
2
  /* empty css */
3
3
  import o from "../../_virtual/_plugin-vue_export-helper.js";
4
- const p = /* @__PURE__ */ o(t, [["__scopeId", "data-v-d83427d6"]]);
4
+ const m = /* @__PURE__ */ o(t, [["__scopeId", "data-v-94a48eeb"]]);
5
5
  export {
6
- p as default
6
+ m as default
7
7
  };