vlite3 1.4.37 → 1.4.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Badge.vue.js +5 -5
- package/components/Badge.vue3.js +5 -0
- package/components/CategoryManager/CategoryManager.vue2.js +5 -4
- package/components/Chip/Chip.vue.js +21 -21
- package/components/Chip/Chip.vue3.js +5 -0
- package/components/ColorPicker/ColorIro.vue3.js +2 -2
- package/components/ColorPicker/ColorPicker.vue.js +2 -2
- package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
- package/components/CommandPalette/{CommandPaletteItem.vue2.js → CommandPaletteItem.vue.js} +1 -1
- package/components/Comment/CommentItem.vue2.js +3 -2
- package/components/DataTable/DataTable.vue.d.ts +1 -0
- package/components/DataTable/DataTable.vue.js +204 -203
- package/components/DataTable/DataTableRow.vue.js +54 -51
- package/components/DataTable/types.d.ts +5 -0
- package/components/DataTable/useDataTableTree.d.ts +4 -3
- package/components/DataTable/useDataTableTree.js +102 -92
- package/components/FileTree/FileTree.vue.d.ts +3 -1
- package/components/FileTree/FileTree.vue.js +1 -1
- package/components/FileTree/FileTree.vue2.js +157 -116
- package/components/FileTree/FileTreeNode.vue.d.ts +9 -5
- package/components/FileTree/FileTreeNode.vue.js +147 -189
- package/components/Form/{AccordionView.vue2.js → AccordionView.vue.js} +1 -1
- package/components/Form/Form.vue2.js +45 -43
- package/components/Form/index.vue2.js +1 -1
- package/components/ImportData/ImportData.vue.js +4 -2
- package/components/Invoice/InvoiceVariant1.vue.js +3 -2
- package/components/Invoice/InvoiceVariant2.vue.js +3 -2
- package/components/Invoice/InvoiceVariant3.vue.js +3 -2
- package/components/Invoice/InvoiceVariant4.vue.js +3 -2
- package/components/MultiSelect/MultiSelect.vue.js +3 -2
- package/components/NavbarCommandPalette.vue.js +1 -1
- package/components/PricingPlan/PricingPlanItem.vue.js +10 -9
- package/components/Screen/ScreenFilter.vue.js +20 -19
- package/components/StatusChip/StatusChip.vue.js +8 -7
- package/components/StatusChip/StatusChip.vue3.js +5 -0
- package/components/Timeline/TimelineItem.vue.js +3 -2
- package/components/TreeConnectors/TreeConnectors.vue.d.ts +1 -1
- package/components/TreeConnectors/TreeConnectors.vue.js +26 -17
- package/components/TreeConnectors/geometry.d.ts +29 -3
- package/components/TreeConnectors/geometry.js +128 -46
- package/components/TreeConnectors/index.d.ts +1 -1
- package/index.js +473 -470
- package/package.json +1 -1
- package/style.css +15 -1
- package/components/Badge.vue2.js +0 -4
- package/components/Chip/Chip.vue2.js +0 -4
- package/components/StatusChip/StatusChip.vue2.js +0 -4
- /package/components/ColorPicker/{ColorIro.vue2.js → ColorIro.vue.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as B, ref as M, computed as d, openBlock as o, createBlock as n, withCtx as
|
|
1
|
+
import { defineComponent as B, ref as M, computed as d, openBlock as o, createBlock as n, withCtx as i, createElementVNode as l, createVNode as a, unref as w, toDisplayString as v, withModifiers as F, setBlockTracking as C, createElementBlock as S } from "vue";
|
|
2
2
|
import f from "../Button.vue.js";
|
|
3
3
|
import j from "../Modal.vue.js";
|
|
4
4
|
import z from "../Dropdown/Dropdown.vue.js";
|
|
@@ -11,16 +11,17 @@ import O from "../Form/Form.vue.js";
|
|
|
11
11
|
/* empty css */
|
|
12
12
|
import "vue-draggable-plus";
|
|
13
13
|
/* empty css */
|
|
14
|
+
/* empty css */
|
|
14
15
|
import "v-datepicker-lite";
|
|
15
16
|
import "v-datepicker-lite/style.css";
|
|
16
17
|
/* empty css */
|
|
17
18
|
import "@jaames/iro";
|
|
18
19
|
import "@vueuse/core";
|
|
19
|
-
/* empty css
|
|
20
|
+
/* empty css */
|
|
20
21
|
import "iconify-icon-picker";
|
|
21
22
|
import "iconify-icon-picker/style.css";
|
|
22
23
|
/* empty css */
|
|
23
|
-
/* empty css
|
|
24
|
+
/* empty css */
|
|
24
25
|
/* empty css */
|
|
25
26
|
/* empty css */
|
|
26
27
|
/* empty css */
|
|
@@ -31,7 +32,7 @@ import "../../core/config.js";
|
|
|
31
32
|
const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }, A = { style: { "will-change": "transform", contain: "layout style" } }, E = {
|
|
32
33
|
class: "pt-2 px-2 min-w-[295px]",
|
|
33
34
|
style: { "will-change": "transform", contain: "layout style" }
|
|
34
|
-
},
|
|
35
|
+
}, de = /* @__PURE__ */ B({
|
|
35
36
|
__name: "ScreenFilter",
|
|
36
37
|
props: {
|
|
37
38
|
schema: {},
|
|
@@ -39,8 +40,8 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
39
40
|
type: { default: "modal" }
|
|
40
41
|
},
|
|
41
42
|
emits: ["update:modelValue", "change"],
|
|
42
|
-
setup(
|
|
43
|
-
const m =
|
|
43
|
+
setup(s, { emit: $ }) {
|
|
44
|
+
const m = s, c = $, r = M(!1), p = d(() => m.modelValue ? Object.keys(m.modelValue).filter(
|
|
44
45
|
(e) => m.modelValue[e] !== "" && m.modelValue[e] !== null && m.modelValue[e] !== void 0
|
|
45
46
|
).length : 0), x = (e) => {
|
|
46
47
|
c("update:modelValue", e.values), c("change", e.values), r.value = !1;
|
|
@@ -56,21 +57,21 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
56
57
|
const e = y("vlite.screen.filter");
|
|
57
58
|
return e !== "vlite.screen.filter" ? e : "Filter";
|
|
58
59
|
});
|
|
59
|
-
return (e, t) =>
|
|
60
|
+
return (e, t) => s.type === "modal" ? (o(), n(j, {
|
|
60
61
|
key: 0,
|
|
61
62
|
title: g.value,
|
|
62
63
|
show: r.value,
|
|
63
64
|
"onUpdate:show": t[3] || (t[3] = (u) => r.value = u),
|
|
64
65
|
"max-width": "sm:max-w-md"
|
|
65
66
|
}, {
|
|
66
|
-
trigger:
|
|
67
|
+
trigger: i(() => [
|
|
67
68
|
p.value > 0 ? (o(), n(f, {
|
|
68
69
|
key: 0,
|
|
69
70
|
variant: "secondary",
|
|
70
71
|
class: "flex items-center gap-1.5 pl-3 pr-1.5 shrink-0",
|
|
71
72
|
onClick: t[0] || (t[0] = (u) => r.value = !0)
|
|
72
73
|
}, {
|
|
73
|
-
default:
|
|
74
|
+
default: i(() => [
|
|
74
75
|
a(h, {
|
|
75
76
|
icon: "ci:filter",
|
|
76
77
|
class: "w-4 h-4"
|
|
@@ -96,7 +97,7 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
96
97
|
asIcon: "",
|
|
97
98
|
class: "shrink-0 h-9! w-9!"
|
|
98
99
|
}, {
|
|
99
|
-
default:
|
|
100
|
+
default: i(() => [
|
|
100
101
|
l("div", N, [
|
|
101
102
|
t[1] || (C(-1, !0), (t[1] = (o(), S("svg", {
|
|
102
103
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -118,11 +119,11 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
118
119
|
_: 1
|
|
119
120
|
}, 8, ["title"]))
|
|
120
121
|
]),
|
|
121
|
-
default:
|
|
122
|
+
default: i(() => [
|
|
122
123
|
l("div", A, [
|
|
123
124
|
a(w(O), {
|
|
124
|
-
schema:
|
|
125
|
-
values:
|
|
125
|
+
schema: s.schema,
|
|
126
|
+
values: s.modelValue,
|
|
126
127
|
"submit-text": b.value,
|
|
127
128
|
onOnSubmit: x
|
|
128
129
|
}, null, 8, ["schema", "values", "submit-text"])
|
|
@@ -139,14 +140,14 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
139
140
|
"class-name": "pb-0! always-scroll",
|
|
140
141
|
class: "w-auto"
|
|
141
142
|
}, {
|
|
142
|
-
trigger:
|
|
143
|
+
trigger: i(() => [
|
|
143
144
|
p.value > 0 ? (o(), n(f, {
|
|
144
145
|
key: 0,
|
|
145
146
|
variant: "secondary",
|
|
146
147
|
class: "flex items-center gap-1.5 pl-3 pr-1.5 shrink-0 bg-gray-150! hover:bg-gray-100!",
|
|
147
148
|
style: { "pointer-events": "auto" }
|
|
148
149
|
}, {
|
|
149
|
-
default:
|
|
150
|
+
default: i(() => [
|
|
150
151
|
a(h, {
|
|
151
152
|
icon: "ci:filter",
|
|
152
153
|
class: "w-4 h-4"
|
|
@@ -172,11 +173,11 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
172
173
|
class: "shrink-0 h-9! w-9!"
|
|
173
174
|
}, null, 8, ["title"]))
|
|
174
175
|
]),
|
|
175
|
-
default:
|
|
176
|
+
default: i(() => [
|
|
176
177
|
l("div", E, [
|
|
177
178
|
a(w(O), {
|
|
178
|
-
schema:
|
|
179
|
-
values:
|
|
179
|
+
schema: s.schema,
|
|
180
|
+
values: s.modelValue,
|
|
180
181
|
"submit-text": b.value,
|
|
181
182
|
className: "gap-3!",
|
|
182
183
|
"footer-class": "mt-0.5! translate-y-0.5 pb-4.5! border-0! border-transparent! rounded-none!",
|
|
@@ -194,5 +195,5 @@ const N = { class: "text-gray-800! h-4! w-4! flex items-center justify-center" }
|
|
|
194
195
|
}
|
|
195
196
|
});
|
|
196
197
|
export {
|
|
197
|
-
|
|
198
|
+
de as default
|
|
198
199
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { defineComponent as u, computed as
|
|
1
|
+
import { defineComponent as u, computed as l, openBlock as c, createBlock as f, unref as p, normalizeClass as m } from "vue";
|
|
2
2
|
import d from "../Chip/Chip.vue.js";
|
|
3
|
+
/* empty css */
|
|
3
4
|
import { resolveStatus as v } from "./status-map.js";
|
|
4
5
|
import { $t as b } from "../../utils/i18n.js";
|
|
5
|
-
import { useVLiteConfig as
|
|
6
|
+
import { useVLiteConfig as h } from "../../core/config.js";
|
|
6
7
|
const S = /* @__PURE__ */ u({
|
|
7
8
|
__name: "StatusChip",
|
|
8
9
|
props: {
|
|
@@ -13,14 +14,14 @@ const S = /* @__PURE__ */ u({
|
|
|
13
14
|
size: { default: "small" },
|
|
14
15
|
class: { default: "" }
|
|
15
16
|
},
|
|
16
|
-
setup(
|
|
17
|
-
const e =
|
|
18
|
-
return (o,
|
|
17
|
+
setup(a) {
|
|
18
|
+
const e = a, s = h(), n = l(() => s?.components?.statusChip), i = l(() => e.hideIcon !== null ? e.hideIcon : n.value?.hideIcon ?? !1), t = l(() => v(e.status, n.value?.customStatuses)), r = l(() => e.labelI18n ? b(e.labelI18n) : t.value.label ? t.value.label : e.label ? e.label : e.status.replace(/[_\-]+/g, " ").replace(/\b\w/g, (o) => o.toUpperCase()));
|
|
19
|
+
return (o, I) => (c(), f(p(d), {
|
|
19
20
|
text: r.value,
|
|
20
21
|
variant: t.value.variant,
|
|
21
22
|
icon: i.value ? void 0 : t.value.icon,
|
|
22
|
-
size:
|
|
23
|
-
class: m(e.class)
|
|
23
|
+
size: a.size,
|
|
24
|
+
class: m(["status-chip", "scrollbar-hide", e.class].filter(Boolean).join(" "))
|
|
24
25
|
}, null, 8, ["text", "variant", "icon", "size", "class"]));
|
|
25
26
|
}
|
|
26
27
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defineComponent as P, computed as b, openBlock as n, createElementBlock as l, normalizeClass as o, createElementVNode as i, createVNode as y, createCommentVNode as c, renderSlot as a, toDisplayString as d, createBlock as g, resolveDynamicComponent as I, normalizeProps as $, mergeProps as L } from "vue";
|
|
2
2
|
import h from "./TimelineIndicator.vue.js";
|
|
3
3
|
import B from "../StatusChip/StatusChip.vue.js";
|
|
4
|
+
/* empty css */
|
|
4
5
|
import { $t as r } from "../../utils/i18n.js";
|
|
5
6
|
const C = { class: "flex flex-col items-center shrink-0 mr-4 w-9" }, T = { class: "flex flex-col gap-1" }, V = { class: "flex justify-between items-start gap-4" }, D = { class: "text-sm font-semibold text-foreground leading-none" }, N = {
|
|
6
7
|
key: 0,
|
|
@@ -18,7 +19,7 @@ const C = { class: "flex flex-col items-center shrink-0 mr-4 w-9" }, T = { class
|
|
|
18
19
|
key: 0,
|
|
19
20
|
class: "hidden sm:block flex-1 h-0.5 bg-border ml-2",
|
|
20
21
|
"aria-hidden": "true"
|
|
21
|
-
},
|
|
22
|
+
}, O = /* @__PURE__ */ P({
|
|
22
23
|
__name: "TimelineItem",
|
|
23
24
|
props: {
|
|
24
25
|
step: {},
|
|
@@ -152,5 +153,5 @@ const C = { class: "flex flex-col items-center shrink-0 mr-4 w-9" }, T = { class
|
|
|
152
153
|
}
|
|
153
154
|
});
|
|
154
155
|
export {
|
|
155
|
-
|
|
156
|
+
O as default
|
|
156
157
|
};
|
|
@@ -19,8 +19,8 @@ interface Props extends TreeConnectorInput {
|
|
|
19
19
|
bleedY?: boolean;
|
|
20
20
|
}
|
|
21
21
|
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
22
|
-
ancestorLastFlags: boolean[];
|
|
23
22
|
hasToggle: boolean;
|
|
23
|
+
ancestorLastFlags: boolean[];
|
|
24
24
|
lineClass: string;
|
|
25
25
|
bleedY: boolean;
|
|
26
26
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { buildTreeConnectorSegments as
|
|
3
|
-
const
|
|
1
|
+
import { defineComponent as m, computed as u, openBlock as s, createElementBlock as l, normalizeClass as i, Fragment as c, renderList as f, isMemoSame as g, normalizeStyle as S } from "vue";
|
|
2
|
+
import { EMPTY_ANCESTOR_LAST_FLAGS as b, buildTreeConnectorSegments as y } from "./geometry.js";
|
|
3
|
+
const x = /* @__PURE__ */ m({
|
|
4
4
|
__name: "TreeConnectors",
|
|
5
5
|
props: {
|
|
6
6
|
lineClass: { default: "bg-muted-foreground/35 dark:bg-muted-foreground/25!" },
|
|
7
7
|
bleedY: { type: Boolean, default: !1 },
|
|
8
8
|
depth: {},
|
|
9
9
|
isLastSibling: { type: Boolean },
|
|
10
|
-
ancestorLastFlags: { default: () =>
|
|
10
|
+
ancestorLastFlags: { default: () => b },
|
|
11
11
|
hasToggle: { type: Boolean, default: !1 },
|
|
12
12
|
indent: {},
|
|
13
13
|
toggleSize: {},
|
|
14
14
|
baseInset: {},
|
|
15
|
-
contentGap: {}
|
|
15
|
+
contentGap: {},
|
|
16
|
+
leafHasSpacer: { type: Boolean },
|
|
17
|
+
leafInset: {}
|
|
16
18
|
},
|
|
17
|
-
setup(
|
|
18
|
-
const e =
|
|
19
|
-
() =>
|
|
19
|
+
setup(n) {
|
|
20
|
+
const e = n, p = u(
|
|
21
|
+
() => y({
|
|
20
22
|
depth: e.depth,
|
|
21
23
|
isLastSibling: e.isLastSibling,
|
|
22
24
|
ancestorLastFlags: e.ancestorLastFlags,
|
|
@@ -24,21 +26,28 @@ const h = /* @__PURE__ */ r({
|
|
|
24
26
|
indent: e.indent,
|
|
25
27
|
toggleSize: e.toggleSize,
|
|
26
28
|
baseInset: e.baseInset,
|
|
27
|
-
contentGap: e.contentGap
|
|
29
|
+
contentGap: e.contentGap,
|
|
30
|
+
leafHasSpacer: e.leafHasSpacer,
|
|
31
|
+
leafInset: e.leafInset
|
|
28
32
|
})
|
|
29
33
|
);
|
|
30
|
-
return (
|
|
31
|
-
class:
|
|
34
|
+
return (L, d) => (s(), l("span", {
|
|
35
|
+
class: i(["tree-connectors pointer-events-none absolute inset-x-0", n.bleedY ? "-inset-y-px z-[1]" : "inset-y-0 overflow-hidden"]),
|
|
32
36
|
"aria-hidden": "true"
|
|
33
37
|
}, [
|
|
34
|
-
(s(!0),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
(s(!0), l(c, null, f(p.value, (t, C, T, a) => {
|
|
39
|
+
const o = [t, n.lineClass];
|
|
40
|
+
if (a && a.key === t.key && g(a, o)) return a;
|
|
41
|
+
const r = (s(), l("span", {
|
|
42
|
+
key: t.key,
|
|
43
|
+
class: i(["absolute", [t.orientation === "vertical" ? "w-px" : "h-px", n.lineClass]]),
|
|
44
|
+
style: S(t.style)
|
|
45
|
+
}, null, 6));
|
|
46
|
+
return r.memo = o, r;
|
|
47
|
+
}, d, 0), 128))
|
|
39
48
|
], 2));
|
|
40
49
|
}
|
|
41
50
|
});
|
|
42
51
|
export {
|
|
43
|
-
|
|
52
|
+
x as default
|
|
44
53
|
};
|
|
@@ -2,11 +2,16 @@ import { CSSProperties } from 'vue';
|
|
|
2
2
|
/** Horizontal indent (px) added per depth level. Mirrors DataTable's `treeIndent`. */
|
|
3
3
|
export declare const DEFAULT_TREE_INDENT = 20;
|
|
4
4
|
/** Width (px) of the expand/collapse toggle. Rails are centred on it. */
|
|
5
|
-
export declare const DEFAULT_TOGGLE_SIZE =
|
|
5
|
+
export declare const DEFAULT_TOGGLE_SIZE = 20;
|
|
6
6
|
/** Default leading space (px) before the depth-0 toggle (keeps it off the edge). */
|
|
7
|
-
export declare const DEFAULT_TREE_LEADING =
|
|
7
|
+
export declare const DEFAULT_TREE_LEADING = 10;
|
|
8
8
|
/** Default gap (px) between the toggle and the row content (icon/label). */
|
|
9
|
-
export declare const DEFAULT_TREE_CONTENT_GAP =
|
|
9
|
+
export declare const DEFAULT_TREE_CONTENT_GAP = 10;
|
|
10
|
+
/**
|
|
11
|
+
* Default extra left inset (px) for leaf rows that don't reserve a toggle slot,
|
|
12
|
+
* so their icon isn't flush against the table's left edge.
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_TREE_LEAF_INSET = 5;
|
|
10
15
|
export type TreeConnectorOrientation = 'vertical' | 'horizontal';
|
|
11
16
|
export type TreeConnectorRole = 'trunk' | 'elbow' | 'branch';
|
|
12
17
|
/** Inline styles for a connector segment (Vue `:style` / CSSProperties-compatible). */
|
|
@@ -48,11 +53,29 @@ export interface TreeConnectorInput {
|
|
|
48
53
|
* as the content is pushed right.
|
|
49
54
|
*/
|
|
50
55
|
contentGap?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Whether leaf rows keep an empty toggle-sized spacer before their content.
|
|
58
|
+
* `true` (default): the branch reaches into that spacer toward the icon.
|
|
59
|
+
* `false`: the leaf icon is left-aligned into the toggle slot, so the branch
|
|
60
|
+
* stops just before it — exactly like an expandable row's chevron.
|
|
61
|
+
*/
|
|
62
|
+
leafHasSpacer?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Extra left inset (px) applied to a leaf row's icon when it doesn't reserve a
|
|
65
|
+
* toggle slot (`leafHasSpacer: false`). The branch extends to match, so leaf
|
|
66
|
+
* icons keep breathing room from the table edge without losing their connector.
|
|
67
|
+
*/
|
|
68
|
+
leafInset?: number;
|
|
51
69
|
}
|
|
52
70
|
/** Horizontal centre (px) of the vertical rail for a given tree depth. */
|
|
53
71
|
export declare function railX(level: number, indent: number, toggleSize: number): number;
|
|
54
72
|
/** @deprecated Renamed to {@link railX}. Kept as an alias for compatibility. */
|
|
55
73
|
export declare const guideX: typeof railX;
|
|
74
|
+
/** Shared empty flags array — stable reference for root rows / v-memo. */
|
|
75
|
+
export declare const EMPTY_ANCESTOR_LAST_FLAGS: readonly boolean[];
|
|
76
|
+
export declare function stabilizeAncestorLastFlags(flags: readonly boolean[]): boolean[];
|
|
77
|
+
/** Append one flag onto a (preferably already-stable) ancestor list, with caching. */
|
|
78
|
+
export declare function appendAncestorLastFlag(flags: readonly boolean[], isLastSibling: boolean): boolean[];
|
|
56
79
|
/**
|
|
57
80
|
* Compute every connector segment for a single tree row.
|
|
58
81
|
*
|
|
@@ -60,5 +83,8 @@ export declare const guideX: typeof railX;
|
|
|
60
83
|
* node on the row's own path at depth `k + 1` still has a following sibling —
|
|
61
84
|
* i.e. `ancestorLastFlags[k + 1] === false`. That single rule keeps vertical
|
|
62
85
|
* lines running through descendants and stops them exactly at the final child.
|
|
86
|
+
*
|
|
87
|
+
* Results are cached by geometry inputs so identical tree shapes reuse the same
|
|
88
|
+
* `markRaw` segment objects (helps v-memo / avoids proxy churn).
|
|
63
89
|
*/
|
|
64
90
|
export declare function buildTreeConnectorSegments(input: TreeConnectorInput): TreeConnectorSegment[];
|
|
@@ -1,55 +1,137 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { markRaw as c } from "vue";
|
|
2
|
+
const I = 20, C = 20, w = 10, H = 10, O = 5, i = 0.5, N = 2, y = 5, G = 512;
|
|
3
|
+
function R(n, e, o) {
|
|
4
|
+
return n * e + o / 2;
|
|
4
5
|
}
|
|
5
|
-
const
|
|
6
|
-
function
|
|
6
|
+
const f = (n) => `${n}px`, k = Object.freeze([]), S = /* @__PURE__ */ new Map();
|
|
7
|
+
function x(n) {
|
|
8
|
+
if (!n.length) return k;
|
|
9
|
+
let e = "";
|
|
10
|
+
for (let a = 0; a < n.length; a++)
|
|
11
|
+
e += n[a] ? "1" : "0";
|
|
12
|
+
const o = S.get(e);
|
|
13
|
+
if (o) return o;
|
|
14
|
+
const s = c(n.slice());
|
|
15
|
+
return S.set(e, s), s;
|
|
16
|
+
}
|
|
17
|
+
function v(n, e) {
|
|
18
|
+
return x([...n, e]);
|
|
19
|
+
}
|
|
20
|
+
const E = /* @__PURE__ */ new Map();
|
|
21
|
+
function D(n) {
|
|
22
|
+
const {
|
|
23
|
+
depth: e,
|
|
24
|
+
isLastSibling: o,
|
|
25
|
+
hasToggle: s,
|
|
26
|
+
indent: a,
|
|
27
|
+
toggleSize: r,
|
|
28
|
+
baseInset: h,
|
|
29
|
+
contentGap: l,
|
|
30
|
+
leafHasSpacer: g,
|
|
31
|
+
leafInset: p,
|
|
32
|
+
flagsKey: u
|
|
33
|
+
} = n;
|
|
34
|
+
return [
|
|
35
|
+
e,
|
|
36
|
+
o ? 1 : 0,
|
|
37
|
+
s ? 1 : 0,
|
|
38
|
+
a,
|
|
39
|
+
r,
|
|
40
|
+
h,
|
|
41
|
+
l,
|
|
42
|
+
g ? 1 : 0,
|
|
43
|
+
p,
|
|
44
|
+
u
|
|
45
|
+
].join("|");
|
|
46
|
+
}
|
|
47
|
+
function M(n, e) {
|
|
48
|
+
if (E.size >= G) {
|
|
49
|
+
const s = E.keys().next().value;
|
|
50
|
+
s !== void 0 && E.delete(s);
|
|
51
|
+
}
|
|
52
|
+
const o = c(e);
|
|
53
|
+
return E.set(n, o), o;
|
|
54
|
+
}
|
|
55
|
+
function U(n) {
|
|
7
56
|
const {
|
|
8
57
|
depth: e,
|
|
9
|
-
isLastSibling:
|
|
10
|
-
ancestorLastFlags:
|
|
11
|
-
hasToggle:
|
|
12
|
-
indent:
|
|
13
|
-
toggleSize:
|
|
14
|
-
baseInset:
|
|
15
|
-
contentGap:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
58
|
+
isLastSibling: o,
|
|
59
|
+
ancestorLastFlags: s,
|
|
60
|
+
hasToggle: a = !1,
|
|
61
|
+
indent: r = I,
|
|
62
|
+
toggleSize: h = C,
|
|
63
|
+
baseInset: l = 0,
|
|
64
|
+
contentGap: g = 0,
|
|
65
|
+
leafHasSpacer: p = !0,
|
|
66
|
+
leafInset: u = 0
|
|
67
|
+
} = n;
|
|
68
|
+
if (!Number.isFinite(e) || e < 0) return [];
|
|
69
|
+
let b = "";
|
|
70
|
+
for (let t = 0; t < s.length; t++)
|
|
71
|
+
b += s[t] ? "1" : "0";
|
|
72
|
+
const d = D({
|
|
73
|
+
depth: e,
|
|
74
|
+
isLastSibling: o,
|
|
75
|
+
hasToggle: a,
|
|
76
|
+
indent: r,
|
|
77
|
+
toggleSize: h,
|
|
78
|
+
baseInset: l,
|
|
79
|
+
contentGap: g,
|
|
80
|
+
leafHasSpacer: p,
|
|
81
|
+
leafInset: u,
|
|
82
|
+
flagsKey: b
|
|
83
|
+
}), m = E.get(d);
|
|
84
|
+
if (m) return m;
|
|
85
|
+
const T = [], _ = (t) => l + R(t, r, h);
|
|
19
86
|
for (let t = 0; t <= e - 2; t++)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
87
|
+
s[t + 1] === !1 && T.push(
|
|
88
|
+
c({
|
|
89
|
+
key: `trunk-${t}`,
|
|
90
|
+
orientation: "vertical",
|
|
91
|
+
role: "trunk",
|
|
92
|
+
style: c({ left: f(_(t) - i), top: "0", bottom: "0" })
|
|
93
|
+
})
|
|
94
|
+
);
|
|
26
95
|
if (e >= 1) {
|
|
27
|
-
const t =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
96
|
+
const t = _(e - 1);
|
|
97
|
+
T.push(
|
|
98
|
+
c({
|
|
99
|
+
key: `elbow-${e}`,
|
|
100
|
+
orientation: "vertical",
|
|
101
|
+
role: "elbow",
|
|
102
|
+
style: c(
|
|
103
|
+
o ? { left: f(t - i), top: "0", height: "50%" } : { left: f(t - i), top: "0", bottom: "0" }
|
|
104
|
+
)
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
const A = l + e * r;
|
|
108
|
+
let L;
|
|
109
|
+
a ? L = A - N : p ? L = _(e) + g : L = A + u - N;
|
|
110
|
+
const F = Math.max(t + y, L);
|
|
111
|
+
T.push(
|
|
112
|
+
c({
|
|
113
|
+
key: `branch-${e}`,
|
|
114
|
+
orientation: "horizontal",
|
|
115
|
+
role: "branch",
|
|
116
|
+
style: c({
|
|
117
|
+
left: f(t - i),
|
|
118
|
+
top: `calc(50% - ${i}px)`,
|
|
119
|
+
width: f(Math.max(0, F - t))
|
|
120
|
+
})
|
|
121
|
+
})
|
|
122
|
+
);
|
|
45
123
|
}
|
|
46
|
-
return
|
|
124
|
+
return M(d, T);
|
|
47
125
|
}
|
|
48
126
|
export {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
127
|
+
C as DEFAULT_TOGGLE_SIZE,
|
|
128
|
+
H as DEFAULT_TREE_CONTENT_GAP,
|
|
129
|
+
I as DEFAULT_TREE_INDENT,
|
|
130
|
+
w as DEFAULT_TREE_LEADING,
|
|
131
|
+
O as DEFAULT_TREE_LEAF_INSET,
|
|
132
|
+
k as EMPTY_ANCESTOR_LAST_FLAGS,
|
|
133
|
+
v as appendAncestorLastFlag,
|
|
134
|
+
U as buildTreeConnectorSegments,
|
|
135
|
+
R as railX,
|
|
136
|
+
x as stabilizeAncestorLastFlags
|
|
55
137
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { default as TreeConnectors } from './TreeConnectors.vue';
|
|
2
|
-
export { buildTreeConnectorSegments, railX, guideX, DEFAULT_TREE_INDENT, DEFAULT_TOGGLE_SIZE, DEFAULT_TREE_LEADING, DEFAULT_TREE_CONTENT_GAP, } from './geometry';
|
|
2
|
+
export { buildTreeConnectorSegments, railX, guideX, stabilizeAncestorLastFlags, appendAncestorLastFlag, EMPTY_ANCESTOR_LAST_FLAGS, DEFAULT_TREE_INDENT, DEFAULT_TOGGLE_SIZE, DEFAULT_TREE_LEADING, DEFAULT_TREE_CONTENT_GAP, DEFAULT_TREE_LEAF_INSET, } from './geometry';
|
|
3
3
|
export type { TreeConnectorInput, TreeConnectorSegment, TreeConnectorStyle, TreeConnectorOrientation, TreeConnectorRole, } from './geometry';
|