yuyeon 0.3.0-rc.5 → 0.3.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/yuyeon.js +2833 -2781
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/text-ellipsis/YTextEllipsis.mjs +3 -0
- package/lib/components/text-ellipsis/YTextEllipsis.mjs.map +1 -1
- package/lib/components/tree-view/YTreeView.mjs +26 -142
- package/lib/components/tree-view/YTreeView.mjs.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.mjs +7 -5
- package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
- package/lib/components/tree-view/tree-view.mjs +179 -0
- package/lib/components/tree-view/tree-view.mjs.map +1 -0
- package/package.json +1 -1
- package/types/components/text-ellipsis/YTextEllipsis.d.ts +3 -0
- package/types/components/tree-view/YTreeView.d.ts +7 -7
- package/types/components/tree-view/YTreeViewNode.d.ts +11 -1
- package/types/components/tree-view/tree-view.d.ts +50 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTextEllipsis.mjs","names":["computed","ref","watch","useRender","useResizeObserver","defineComponent","YTextEllipsis","name","props","text","type","String","default","setup","resizeObservedRef","contentRect","isOverflow","containerWidth","value","width","title","startText","length","Math","round","substring","endText","neo","scrollWidth","offsetWidth","_createVNode","overflowed"],"sources":["../../../src/components/text-ellipsis/YTextEllipsis.tsx"],"sourcesContent":["import { computed, ref, watch } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { useResizeObserver } from '@/composables/resize-observer';\r\nimport { defineComponent } from '@/util/component';\r\n\r\nimport './YTextEllipsis.scss';\r\n\r\nexport const YTextEllipsis = defineComponent({\r\n name: 'YTextEllipsis',\r\n props: {\r\n text: {\r\n type: String,\r\n default: '',\r\n },\r\n },\r\n setup(props) {\r\n const { resizeObservedRef, contentRect } = useResizeObserver();\r\n\r\n const isOverflow = ref(false);\r\n\r\n const containerWidth = computed(() => {\r\n return contentRect.value?.width;\r\n });\r\n\r\n const title = computed(() => {\r\n return props.text;\r\n });\r\n\r\n const startText = computed(() => {\r\n if (isOverflow.value) {\r\n const length = Math.round(props.text.length * 0.5);\r\n return props.text.substring(0, length);\r\n }\r\n return props.text;\r\n });\r\n\r\n const endText = computed(() => {\r\n if (isOverflow.value) {\r\n const length = Math.round(props.text.length * 0.5);\r\n return props.text.substring(length, props.text.length);\r\n }\r\n return props.text;\r\n });\r\n\r\n watch(containerWidth, (neo) => {\r\n if (resizeObservedRef.value && neo != null) {\r\n isOverflow.value =\r\n resizeObservedRef.value.scrollWidth >\r\n resizeObservedRef.value.offsetWidth;\r\n }\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <span\r\n title={title.value}\r\n class={['y-text-ellipsis', { overflowed: isOverflow.value }]}\r\n >\r\n <span ref={resizeObservedRef} class=\"y-text-ellipsis__origin\">\r\n {props.text}\r\n </span>\r\n {isOverflow.value && (\r\n <span class=\"y-text-ellipsis__start\">{startText.value}</span>\r\n )}\r\n\r\n {isOverflow.value && (\r\n <span class=\"y-text-ellipsis__end\">{endText.value}</span>\r\n )}\r\n </span>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YTextEllipsis = InstanceType<typeof YTextEllipsis>;\r\n"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAElCC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,eAAe;AAExB;AAEA,OAAO,MAAMC,aAAa,GAAGD,eAAe,CAAC;EAC3CE,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX;EACF,CAAC;
|
|
1
|
+
{"version":3,"file":"YTextEllipsis.mjs","names":["computed","ref","watch","useRender","useResizeObserver","defineComponent","YTextEllipsis","name","props","text","type","String","default","position","setup","resizeObservedRef","contentRect","isOverflow","containerWidth","value","width","title","startText","length","Math","round","substring","endText","neo","scrollWidth","offsetWidth","_createVNode","overflowed"],"sources":["../../../src/components/text-ellipsis/YTextEllipsis.tsx"],"sourcesContent":["import { computed, ref, watch } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { useResizeObserver } from '@/composables/resize-observer';\r\nimport { defineComponent } from '@/util/component';\r\n\r\nimport './YTextEllipsis.scss';\r\n\r\nexport const YTextEllipsis = defineComponent({\r\n name: 'YTextEllipsis',\r\n props: {\r\n text: {\r\n type: String,\r\n default: '',\r\n },\r\n position: {\r\n type: String,\r\n }\r\n },\r\n setup(props) {\r\n const { resizeObservedRef, contentRect } = useResizeObserver();\r\n\r\n const isOverflow = ref(false);\r\n\r\n const containerWidth = computed(() => {\r\n return contentRect.value?.width;\r\n });\r\n\r\n const title = computed(() => {\r\n return props.text;\r\n });\r\n\r\n const startText = computed(() => {\r\n if (isOverflow.value) {\r\n const length = Math.round(props.text.length * 0.5);\r\n return props.text.substring(0, length);\r\n }\r\n return props.text;\r\n });\r\n\r\n const endText = computed(() => {\r\n if (isOverflow.value) {\r\n const length = Math.round(props.text.length * 0.5);\r\n return props.text.substring(length, props.text.length);\r\n }\r\n return props.text;\r\n });\r\n\r\n watch(containerWidth, (neo) => {\r\n if (resizeObservedRef.value && neo != null) {\r\n isOverflow.value =\r\n resizeObservedRef.value.scrollWidth >\r\n resizeObservedRef.value.offsetWidth;\r\n }\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <span\r\n title={title.value}\r\n class={['y-text-ellipsis', { overflowed: isOverflow.value }]}\r\n >\r\n <span ref={resizeObservedRef} class=\"y-text-ellipsis__origin\">\r\n {props.text}\r\n </span>\r\n {isOverflow.value && (\r\n <span class=\"y-text-ellipsis__start\">{startText.value}</span>\r\n )}\r\n\r\n {isOverflow.value && (\r\n <span class=\"y-text-ellipsis__end\">{endText.value}</span>\r\n )}\r\n </span>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YTextEllipsis = InstanceType<typeof YTextEllipsis>;\r\n"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAElCC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,eAAe;AAExB;AAEA,OAAO,MAAMC,aAAa,GAAGD,eAAe,CAAC;EAC3CE,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDC,QAAQ,EAAE;MACRH,IAAI,EAAEC;IACR;EACF,CAAC;EACDG,KAAKA,CAACN,KAAK,EAAE;IACX,MAAM;MAAEO,iBAAiB;MAAEC;IAAY,CAAC,GAAGZ,iBAAiB,CAAC,CAAC;IAE9D,MAAMa,UAAU,GAAGhB,GAAG,CAAC,KAAK,CAAC;IAE7B,MAAMiB,cAAc,GAAGlB,QAAQ,CAAC,MAAM;MACpC,OAAOgB,WAAW,CAACG,KAAK,EAAEC,KAAK;IACjC,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGrB,QAAQ,CAAC,MAAM;MAC3B,OAAOQ,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEF,MAAMa,SAAS,GAAGtB,QAAQ,CAAC,MAAM;MAC/B,IAAIiB,UAAU,CAACE,KAAK,EAAE;QACpB,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACjB,KAAK,CAACC,IAAI,CAACc,MAAM,GAAG,GAAG,CAAC;QAClD,OAAOf,KAAK,CAACC,IAAI,CAACiB,SAAS,CAAC,CAAC,EAAEH,MAAM,CAAC;MACxC;MACA,OAAOf,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEF,MAAMkB,OAAO,GAAG3B,QAAQ,CAAC,MAAM;MAC7B,IAAIiB,UAAU,CAACE,KAAK,EAAE;QACpB,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACjB,KAAK,CAACC,IAAI,CAACc,MAAM,GAAG,GAAG,CAAC;QAClD,OAAOf,KAAK,CAACC,IAAI,CAACiB,SAAS,CAACH,MAAM,EAAEf,KAAK,CAACC,IAAI,CAACc,MAAM,CAAC;MACxD;MACA,OAAOf,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEFP,KAAK,CAACgB,cAAc,EAAGU,GAAG,IAAK;MAC7B,IAAIb,iBAAiB,CAACI,KAAK,IAAIS,GAAG,IAAI,IAAI,EAAE;QAC1CX,UAAU,CAACE,KAAK,GACdJ,iBAAiB,CAACI,KAAK,CAACU,WAAW,GACnCd,iBAAiB,CAACI,KAAK,CAACW,WAAW;MACvC;IACF,CAAC,CAAC;IAEF3B,SAAS,CAAC,MAAM;MACd,OAAA4B,YAAA;QAAA,SAEWV,KAAK,CAACF,KAAK;QAAA,SACX,CAAC,iBAAiB,EAAE;UAAEa,UAAU,EAAEf,UAAU,CAACE;QAAM,CAAC;MAAC,IAAAY,YAAA;QAAA,OAEjDhB,iBAAiB;QAAA;MAAA,IACzBP,KAAK,CAACC,IAAI,IAEZQ,UAAU,CAACE,KAAK,IAAAY,YAAA;QAAA;MAAA,IACuBT,SAAS,CAACH,KAAK,EACtD,EAEAF,UAAU,CAACE,KAAK,IAAAY,YAAA;QAAA;MAAA,IACqBJ,OAAO,CAACR,KAAK,EAClD;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
|
-
import { computed, defineComponent, onMounted,
|
|
3
|
-
import {
|
|
2
|
+
import { computed, defineComponent, onMounted, ref, shallowRef, watch } from 'vue';
|
|
3
|
+
import { provideTreeView } from "./tree-view.mjs";
|
|
4
4
|
import { useRender } from "../../composables/component.mjs";
|
|
5
5
|
import { differenceBetween } from "../../util/array.mjs";
|
|
6
6
|
import { isColorValue } from "../../util/color/index.mjs";
|
|
@@ -54,17 +54,27 @@ export const YTreeView = defineComponent({
|
|
|
54
54
|
emit,
|
|
55
55
|
expose
|
|
56
56
|
} = _ref;
|
|
57
|
-
const nodes = ref({});
|
|
58
|
-
const expanded = useModelDuplex(props, 'expanded');
|
|
59
|
-
const active = useModelDuplex(props, 'active');
|
|
60
|
-
const selected = useModelDuplex(props, 'selected');
|
|
61
|
-
const expandedSet = ref(new Set());
|
|
62
|
-
const selectedSet = ref(new Set());
|
|
63
|
-
const activeSet = ref(new Set());
|
|
64
|
-
const excludedSet = ref(new Set());
|
|
65
57
|
const filterItemsFn = shallowRef(debounce(excludeItem, props.searchDebounceWait));
|
|
66
58
|
const expandedCache = ref([]);
|
|
67
|
-
const
|
|
59
|
+
const {
|
|
60
|
+
nodes,
|
|
61
|
+
expanded,
|
|
62
|
+
active,
|
|
63
|
+
selected,
|
|
64
|
+
expandedSet,
|
|
65
|
+
selectedSet,
|
|
66
|
+
activeSet,
|
|
67
|
+
searchLoading,
|
|
68
|
+
excludedSet,
|
|
69
|
+
issueVnodeState,
|
|
70
|
+
updateExpanded,
|
|
71
|
+
updateActive,
|
|
72
|
+
updateSelected,
|
|
73
|
+
emitExpanded,
|
|
74
|
+
emitActive,
|
|
75
|
+
emitSelected,
|
|
76
|
+
isExcluded
|
|
77
|
+
} = provideTreeView(props);
|
|
68
78
|
function excludeItem(items) {
|
|
69
79
|
let search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
70
80
|
let filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : filterTreeItem;
|
|
@@ -88,29 +98,12 @@ export const YTreeView = defineComponent({
|
|
|
88
98
|
searchLoading.value = false;
|
|
89
99
|
expand();
|
|
90
100
|
}
|
|
91
|
-
|
|
101
|
+
watch(() => props.search, () => {
|
|
92
102
|
searchLoading.value = true;
|
|
93
103
|
filterItemsFn.value(props.items, props.search, props.filter);
|
|
94
104
|
});
|
|
95
105
|
|
|
96
106
|
// Util Methods
|
|
97
|
-
function getDescendants(key) {
|
|
98
|
-
const descendants = [];
|
|
99
|
-
const {
|
|
100
|
-
childKeys
|
|
101
|
-
} = nodes.value[key];
|
|
102
|
-
descendants.push(...childKeys);
|
|
103
|
-
const remains = childKeys.slice();
|
|
104
|
-
while (remains.length > 0) {
|
|
105
|
-
const childKey = remains.splice(0, 1)[0];
|
|
106
|
-
const item = nodes.value[childKey];
|
|
107
|
-
if (item) {
|
|
108
|
-
descendants.push(...item.childKeys);
|
|
109
|
-
remains.push(...item.childKeys);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return descendants;
|
|
113
|
-
}
|
|
114
107
|
function getNodeKey(itemOrKey) {
|
|
115
108
|
return props.returnItem ? getObjectValueByPath(itemOrKey, props.itemKey) : itemOrKey;
|
|
116
109
|
}
|
|
@@ -125,10 +118,10 @@ export const YTreeView = defineComponent({
|
|
|
125
118
|
const exist = hasOwnProperty(nodes.value, key);
|
|
126
119
|
const existNode = exist ? nodes.value[key] : {
|
|
127
120
|
vnode: null,
|
|
128
|
-
selected: false,
|
|
121
|
+
selected: selected.value?.includes(key) ?? false,
|
|
129
122
|
indeterminate: false,
|
|
130
|
-
active: false,
|
|
131
|
-
expanded: false
|
|
123
|
+
active: active.value?.includes(key) ?? false,
|
|
124
|
+
expanded: expanded.value?.includes(key) ?? false
|
|
132
125
|
};
|
|
133
126
|
const node = {
|
|
134
127
|
vnode: existNode.vnode,
|
|
@@ -155,16 +148,6 @@ export const YTreeView = defineComponent({
|
|
|
155
148
|
issueVnodeState(key);
|
|
156
149
|
}
|
|
157
150
|
}
|
|
158
|
-
function updateExpanded(key, to) {
|
|
159
|
-
if (!(key in nodes.value)) return;
|
|
160
|
-
const node = nodes.value[key];
|
|
161
|
-
const children = getObjectValueByPath(node.item, props.itemChildren);
|
|
162
|
-
if (Array.isArray(children) && children.length > 0) {
|
|
163
|
-
to ? expandedSet.value.add(key) : expandedSet.value.delete(key);
|
|
164
|
-
node.expanded = to;
|
|
165
|
-
issueVnodeState(key);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
151
|
watch(expandedSet, neo => {
|
|
169
152
|
if (!props.search) {
|
|
170
153
|
expandedCache.value = [...neo];
|
|
@@ -183,75 +166,6 @@ export const YTreeView = defineComponent({
|
|
|
183
166
|
emitExpanded();
|
|
184
167
|
return expandedSet.value;
|
|
185
168
|
}
|
|
186
|
-
function updateActive(key, to, event) {
|
|
187
|
-
if (!(key in nodes.value)) return;
|
|
188
|
-
const node = nodes.value[key];
|
|
189
|
-
let inactiveKey = !to ? key : '';
|
|
190
|
-
if (!props.multipleActive) {
|
|
191
|
-
[inactiveKey] = [...activeSet.value];
|
|
192
|
-
}
|
|
193
|
-
if (to) {
|
|
194
|
-
activeSet.value.add(key);
|
|
195
|
-
node.active = true;
|
|
196
|
-
issueVnodeState(key);
|
|
197
|
-
} else {
|
|
198
|
-
if (props.requiredActive && activeSet.value.size === 1 && key === inactiveKey) {
|
|
199
|
-
issueVnodeState(key);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
if (inactiveKey && inactiveKey in nodes.value) {
|
|
204
|
-
activeSet.value.delete(inactiveKey);
|
|
205
|
-
nodes.value[inactiveKey].active = false;
|
|
206
|
-
issueVnodeState(inactiveKey);
|
|
207
|
-
}
|
|
208
|
-
if (props.activeSingleModifier && event?.getModifierState(props.activeSingleModifier)) {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (props.multipleActive && props.activeStrategy === 'cascade') {
|
|
212
|
-
for (const descendant of getDescendants(key)) {
|
|
213
|
-
if (descendant in nodes.value) {
|
|
214
|
-
to ? activeSet.value.add(descendant) : activeSet.value.delete(descendant);
|
|
215
|
-
nodes.value[descendant].active = to;
|
|
216
|
-
issueVnodeState(descendant);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
function updateSelected(key, to) {
|
|
222
|
-
if (!(key in nodes.value)) return;
|
|
223
|
-
const node = nodes.value[key];
|
|
224
|
-
if (to) {
|
|
225
|
-
selectedSet.value.add(key);
|
|
226
|
-
node.selected = true;
|
|
227
|
-
}
|
|
228
|
-
if (!to && key in nodes.value) {
|
|
229
|
-
selectedSet.value.delete(key);
|
|
230
|
-
nodes.value[key].selected = false;
|
|
231
|
-
issueVnodeState(key);
|
|
232
|
-
}
|
|
233
|
-
if (props.selectStrategy === 'cascade') {
|
|
234
|
-
for (const descendant of getDescendants(key)) {
|
|
235
|
-
if (descendant in nodes.value) {
|
|
236
|
-
to ? selectedSet.value.add(descendant) : selectedSet.value.delete(descendant);
|
|
237
|
-
nodes.value[descendant].selected = to;
|
|
238
|
-
issueVnodeState(descendant);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
function emitExpanded() {
|
|
244
|
-
const arr = [...expandedSet.value];
|
|
245
|
-
expanded.value = props.returnItem ? arr.map(key => nodes.value[key].item) : arr;
|
|
246
|
-
}
|
|
247
|
-
function emitActive() {
|
|
248
|
-
const arr = [...activeSet.value];
|
|
249
|
-
active.value = props.returnItem ? arr.map(key => nodes.value[key].item) : arr;
|
|
250
|
-
}
|
|
251
|
-
function emitSelected() {
|
|
252
|
-
const arr = [...selectedSet.value];
|
|
253
|
-
selected.value = props.returnItem ? arr.map(key => nodes.value[key].item) : arr;
|
|
254
|
-
}
|
|
255
169
|
function stateWatcher(value, stateSet, updater, emitter) {
|
|
256
170
|
const valuesOfKey = props.returnItem ? value.map(v => getObjectValueByPath(v, props.itemKey)) : value;
|
|
257
171
|
const old = [...stateSet.value];
|
|
@@ -298,39 +212,9 @@ export const YTreeView = defineComponent({
|
|
|
298
212
|
flush: 'sync'
|
|
299
213
|
});
|
|
300
214
|
|
|
301
|
-
// Search
|
|
302
|
-
function isExcluded(key) {
|
|
303
|
-
return !!props.search && excludedSet.value.has(key);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
215
|
// Provide & Issue
|
|
307
|
-
|
|
308
|
-
const node = nodes.value[key];
|
|
309
|
-
if (node && node.vnode) {
|
|
310
|
-
node.vnode.active = node.active;
|
|
311
|
-
node.vnode.selected = node.selected;
|
|
312
|
-
node.vnode.indeterminate = node.indeterminate;
|
|
313
|
-
node.vnode.expanded = node.expanded;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
function register(key, vnode) {
|
|
317
|
-
if (nodes.value[key]) {
|
|
318
|
-
nodes.value[key].vnode = vnode;
|
|
319
|
-
}
|
|
320
|
-
issueVnodeState(key);
|
|
321
|
-
}
|
|
216
|
+
|
|
322
217
|
updateNodes(props.items);
|
|
323
|
-
provide('tree-view', {
|
|
324
|
-
register,
|
|
325
|
-
updateExpanded,
|
|
326
|
-
updateActive,
|
|
327
|
-
updateSelected,
|
|
328
|
-
emitExpanded,
|
|
329
|
-
emitActive,
|
|
330
|
-
emitSelected,
|
|
331
|
-
isExcluded,
|
|
332
|
-
searchLoading
|
|
333
|
-
});
|
|
334
218
|
const renderLeaves = computed(() => {
|
|
335
219
|
return props.items.slice().filter(leaf => {
|
|
336
220
|
return !isExcluded(getObjectValueByPath(leaf, props.itemKey));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","chooseProps","debounce","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","remains","slice","childKey","splice","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","requiredActive","size","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","keys","nodeKey","neoKeys","k","oldSelected","oldActive","clear","flush","isExcluded","has","register","renderLeaves","leaf","classes","styles","color","activeColor","activeValue","selectedValue","_createVNode","_Fragment","_mergeProps","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\r\n type PropType,\r\n type Ref,\r\n type VNode,\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n provide,\r\n ref,\r\n shallowRef,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { CandidateKey } from '@/types';\r\nimport { differenceBetween } from '@/util/array';\r\nimport { isColorValue } from '@/util/color';\r\nimport { deepEqual, getObjectValueByPath, hasOwnProperty } from '@/util/common';\r\nimport { chooseProps } from '@/util/component';\r\nimport { debounce } from '@/util/debounce';\r\n\r\nimport { YProgressBar } from '../progress-bar';\r\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\r\nimport { NodeState, TreeviewFilterFn } from './types';\r\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\r\n\r\nimport './YTreeView.scss';\r\n\r\nconst treeViewNodeProps = pressYTreeViewNodeProps();\r\n\r\nexport const YTreeView = defineComponent({\r\n name: 'YTreeView',\r\n props: {\r\n expanded: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n active: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n multipleActive: Boolean,\r\n activeStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'independent',\r\n },\r\n selected: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n selectStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'leaf',\r\n },\r\n returnItem: Boolean,\r\n defaultExpand: [Boolean, String, Number],\r\n filter: Function as PropType<TreeviewFilterFn>,\r\n searchDebounceWait: {\r\n type: Number as PropType<number>,\r\n default: 700,\r\n },\r\n ...treeViewNodeProps,\r\n },\r\n emits: ['update:expanded', 'update:active', 'update:selected'],\r\n setup(props, { slots, emit, expose }) {\r\n const nodes = ref<Record<CandidateKey, any>>({});\r\n\r\n const expanded = useModelDuplex(props, 'expanded');\r\n const active = useModelDuplex(props, 'active');\r\n const selected = useModelDuplex(props, 'selected');\r\n\r\n const expandedSet = ref(new Set<CandidateKey>());\r\n const selectedSet = ref(new Set<CandidateKey>());\r\n const activeSet = ref(new Set<CandidateKey>());\r\n const excludedSet = ref(new Set<CandidateKey>());\r\n const filterItemsFn = shallowRef(\r\n debounce(excludeItem, props.searchDebounceWait),\r\n );\r\n const expandedCache = ref<CandidateKey[]>([]);\r\n const searchLoading = shallowRef(false);\r\n\r\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\r\n const excluded = new Set<CandidateKey>();\r\n if (!search) {\r\n searchLoading.value = false;\r\n excludedSet.value = excluded;\r\n const diff = differenceBetween(expandedCache.value, [\r\n ...expandedSet.value,\r\n ]);\r\n diff.forEach((key) => {\r\n updateExpanded(key, false);\r\n });\r\n expandedCache.value.forEach((key) => {\r\n updateExpanded(key, true);\r\n });\r\n return;\r\n }\r\n for (const item of items) {\r\n filterTreeItems(\r\n filter,\r\n item,\r\n search ?? '',\r\n props.itemKey,\r\n props.itemText,\r\n props.itemChildren as string,\r\n excluded,\r\n );\r\n }\r\n excludedSet.value = excluded;\r\n searchLoading.value = false;\r\n expand();\r\n }\r\n\r\n watchEffect(() => {\r\n searchLoading.value = true;\r\n filterItemsFn.value(props.items, props.search, props.filter);\r\n });\r\n\r\n // Util Methods\r\n function getDescendants(key: CandidateKey) {\r\n const descendants: CandidateKey[] = [];\r\n const { childKeys } = nodes.value[key];\r\n descendants.push(...childKeys);\r\n const remains: CandidateKey[] = childKeys.slice();\r\n\r\n while (remains.length > 0) {\r\n const childKey: CandidateKey = remains.splice(0, 1)[0];\r\n const item = nodes.value[childKey];\r\n if (item) {\r\n descendants.push(...item.childKeys);\r\n remains.push(...item.childKeys);\r\n }\r\n }\r\n\r\n return descendants;\r\n }\r\n\r\n function getNodeKey(itemOrKey: any) {\r\n return props.returnItem\r\n ? getObjectValueByPath(itemOrKey, props.itemKey)\r\n : itemOrKey;\r\n }\r\n\r\n // State Methods\r\n function updateNodes(\r\n items: any[],\r\n parentKey: CandidateKey | null = null,\r\n level = 0,\r\n ) {\r\n for (const item of items) {\r\n const key = getObjectValueByPath(item, props.itemKey);\r\n const children =\r\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\r\n const exist = hasOwnProperty(nodes.value, key);\r\n const existNode = exist\r\n ? nodes.value[key]\r\n : {\r\n vnode: null,\r\n selected: false,\r\n indeterminate: false,\r\n active: false,\r\n expanded: false,\r\n };\r\n const node: NodeState = {\r\n vnode: existNode.vnode,\r\n item,\r\n level,\r\n parentKey,\r\n childKeys: children.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n expanded: children.length > 0 && existNode.expanded,\r\n active: existNode.active,\r\n indeterminate: existNode.indeterminate,\r\n selected: existNode.selected,\r\n };\r\n\r\n updateNodes(children, key, level + 1);\r\n\r\n nodes.value[key] = node;\r\n if (nodes.value[key].expanded) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].selected) {\r\n selectedSet.value.add(key);\r\n }\r\n if (nodes.value[key].active) {\r\n activeSet.value.add(key);\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n function updateExpanded(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n const children = getObjectValueByPath(\r\n node.item,\r\n props.itemChildren as string,\r\n );\r\n if (Array.isArray(children) && children.length > 0) {\r\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\r\n node.expanded = to;\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n watch(\r\n expandedSet,\r\n (neo) => {\r\n if (!props.search) {\r\n expandedCache.value = [...neo];\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n function expand(until: boolean | string | number = true) {\r\n Object.entries(nodes.value).forEach(([key, node]) => {\r\n if (until === true || until >= node.level) {\r\n updateExpanded(key, true);\r\n }\r\n });\r\n emitExpanded();\r\n return expandedSet.value;\r\n }\r\n\r\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n let inactiveKey = !to ? key : '';\r\n if (!props.multipleActive) {\r\n [inactiveKey] = [...activeSet.value];\r\n }\r\n if (to) {\r\n activeSet.value.add(key);\r\n node.active = true;\r\n issueVnodeState(key);\r\n } else {\r\n if (\r\n props.requiredActive &&\r\n activeSet.value.size === 1 &&\r\n key === inactiveKey\r\n ) {\r\n issueVnodeState(key);\r\n return;\r\n }\r\n }\r\n if (inactiveKey && inactiveKey in nodes.value) {\r\n activeSet.value.delete(inactiveKey);\r\n nodes.value[inactiveKey].active = false;\r\n issueVnodeState(inactiveKey);\r\n }\r\n\r\n if (\r\n props.activeSingleModifier &&\r\n event?.getModifierState(props.activeSingleModifier)\r\n ) {\r\n return;\r\n }\r\n\r\n if (props.multipleActive && props.activeStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? activeSet.value.add(descendant)\r\n : activeSet.value.delete(descendant);\r\n nodes.value[descendant].active = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateSelected(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n\r\n if (to) {\r\n selectedSet.value.add(key);\r\n node.selected = true;\r\n }\r\n\r\n if (!to && key in nodes.value) {\r\n selectedSet.value.delete(key);\r\n nodes.value[key].selected = false;\r\n issueVnodeState(key);\r\n }\r\n\r\n if (props.selectStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? selectedSet.value.add(descendant)\r\n : selectedSet.value.delete(descendant);\r\n nodes.value[descendant].selected = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emitExpanded() {\r\n const arr = [...expandedSet.value];\r\n expanded.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitActive() {\r\n const arr = [...activeSet.value];\r\n active.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitSelected() {\r\n const arr = [...selectedSet.value];\r\n selected.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function stateWatcher(\r\n value: any[],\r\n stateSet: Ref<Set<CandidateKey>>,\r\n updater: (key: CandidateKey, to: boolean) => void,\r\n emitter: () => void,\r\n ) {\r\n const valuesOfKey = props.returnItem\r\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\r\n : value;\r\n const old = [...stateSet.value];\r\n if (deepEqual(old, valuesOfKey)) {\r\n return;\r\n }\r\n old.forEach((key) => updater(key, false));\r\n valuesOfKey.forEach((key) => updater(key, true));\r\n emitter();\r\n }\r\n\r\n watch(expanded, (neo) => {\r\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\r\n });\r\n\r\n watch(active, (neo) => {\r\n stateWatcher(neo, activeSet, updateActive, emitActive);\r\n });\r\n\r\n watch(selected, (neo) => {\r\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\r\n });\r\n\r\n watch(\r\n () => props.items,\r\n (neo: any[]) => {\r\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\r\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\r\n );\r\n const neoKeys = getKeys(\r\n neo,\r\n props.itemKey,\r\n props.itemChildren as string,\r\n );\r\n const diff = differenceBetween(oldKeys, neoKeys);\r\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\r\n return;\r\n }\r\n diff.forEach((k) => delete nodes.value[k]);\r\n\r\n // init\r\n const oldSelected = [...selectedSet.value];\r\n const oldActive = [...activeSet.value];\r\n selectedSet.value.clear();\r\n expandedSet.value.clear();\r\n activeSet.value.clear();\r\n updateNodes(neo);\r\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\r\n emitSelected();\r\n }\r\n if (!deepEqual(oldActive, [...activeSet.value])) {\r\n emitActive();\r\n }\r\n },\r\n { deep: true, flush: 'sync' },\r\n );\r\n\r\n // Search\r\n function isExcluded(key: CandidateKey) {\r\n return !!props.search && excludedSet.value.has(key);\r\n }\r\n\r\n // Provide & Issue\r\n function issueVnodeState(key: CandidateKey) {\r\n const node = nodes.value[key];\r\n if (node && node.vnode) {\r\n node.vnode.active = node.active;\r\n node.vnode.selected = node.selected;\r\n node.vnode.indeterminate = node.indeterminate;\r\n node.vnode.expanded = node.expanded;\r\n }\r\n }\r\n\r\n function register(key: CandidateKey, vnode: VNode) {\r\n if (nodes.value[key]) {\r\n nodes.value[key].vnode = vnode;\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n\r\n updateNodes(props.items);\r\n\r\n provide('tree-view', {\r\n register,\r\n updateExpanded,\r\n updateActive,\r\n updateSelected,\r\n emitExpanded,\r\n emitActive,\r\n emitSelected,\r\n isExcluded,\r\n searchLoading,\r\n });\r\n\r\n const renderLeaves = computed(() => {\r\n return props.items.slice().filter((leaf) => {\r\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view': true,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n let color = props.activeColor;\r\n if (props.activeColor && !isColorValue(props.activeColor)) {\r\n color = `var(--y-theme-${props.activeColor})`;\r\n }\r\n return {\r\n [`--y-tree-view__active-color`]: color,\r\n };\r\n });\r\n\r\n onMounted(() => {\r\n if (props.defaultExpand != null && props.defaultExpand !== false) {\r\n expandedCache.value = [...expand(props.defaultExpand)];\r\n } else {\r\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\r\n emitExpanded();\r\n }\r\n\r\n for (const activeValue of props.active.map(getNodeKey)) {\r\n updateActive(activeValue, true);\r\n }\r\n\r\n for (const selectedValue of props.selected.map(getNodeKey)) {\r\n updateSelected(selectedValue, true);\r\n }\r\n });\r\n\r\n expose({\r\n expand,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <div class={classes.value} style={styles.value} role=\"tree\">\r\n {searchLoading.value && <YProgressBar indeterminate />}\r\n {renderLeaves.value.length > 0 ? (\r\n renderLeaves.value.slice().map((leaf) => {\r\n return (\r\n <YTreeViewNode\r\n v-slots={slots}\r\n key={getObjectValueByPath(leaf, props.itemKey)}\r\n {...{\r\n ...chooseProps(props, treeViewNodeProps),\r\n item: leaf,\r\n level: 0,\r\n }}\r\n ></YTreeViewNode>\r\n );\r\n })\r\n ) : (\r\n <div class=\"y-tree-view__no-data\">\r\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n nodes,\r\n expandedSet,\r\n selectedSet,\r\n activeSet,\r\n excludedSet,\r\n searchLoading,\r\n expandedCache,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeView = InstanceType<typeof YTreeView>;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","ref","shallowRef","watch","provideTreeView","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","chooseProps","debounce","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","filterItemsFn","excludeItem","expandedCache","nodes","expandedSet","selectedSet","activeSet","searchLoading","excludedSet","issueVnodeState","updateExpanded","updateActive","updateSelected","emitExpanded","emitActive","emitSelected","isExcluded","items","search","arguments","length","undefined","excluded","Set","value","diff","forEach","key","item","itemKey","itemText","itemChildren","expand","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","includes","indeterminate","node","childKeys","map","child","add","neo","deep","until","Object","entries","_ref2","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","keys","nodeKey","neoKeys","k","oldSelected","oldActive","clear","flush","renderLeaves","slice","leaf","classes","styles","color","activeColor","activeValue","selectedValue","_createVNode","_Fragment","_mergeProps","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\n type PropType,\n type Ref,\n computed,\n defineComponent,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { provideTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { CandidateKey } from '@/types';\nimport { differenceBetween } from '@/util/array';\nimport { isColorValue } from '@/util/color';\nimport { deepEqual, getObjectValueByPath, hasOwnProperty } from '@/util/common';\nimport { chooseProps } from '@/util/component';\nimport { debounce } from '@/util/debounce';\n\nimport { YProgressBar } from '../progress-bar';\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\nimport { NodeState, TreeviewFilterFn } from './types';\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\n\nimport './YTreeView.scss';\n\nconst treeViewNodeProps = pressYTreeViewNodeProps();\n\nexport const YTreeView = defineComponent({\n name: 'YTreeView',\n props: {\n expanded: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n active: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n multipleActive: Boolean,\n activeStrategy: {\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\n default: 'independent',\n },\n selected: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n selectStrategy: {\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\n default: 'leaf',\n },\n returnItem: Boolean,\n defaultExpand: [Boolean, String, Number],\n filter: Function as PropType<TreeviewFilterFn>,\n searchDebounceWait: {\n type: Number as PropType<number>,\n default: 700,\n },\n ...treeViewNodeProps,\n },\n emits: ['update:expanded', 'update:active', 'update:selected'],\n setup(props, { slots, emit, expose }) {\n const filterItemsFn = shallowRef(\n debounce(excludeItem, props.searchDebounceWait),\n );\n const expandedCache = ref<CandidateKey[]>([]);\n\n const {\n nodes,\n expanded,\n active,\n selected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n isExcluded,\n } = provideTreeView(props);\n\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\n const excluded = new Set<CandidateKey>();\n if (!search) {\n searchLoading.value = false;\n excludedSet.value = excluded;\n const diff = differenceBetween(expandedCache.value, [\n ...expandedSet.value,\n ]);\n diff.forEach((key) => {\n updateExpanded(key, false);\n });\n expandedCache.value.forEach((key) => {\n updateExpanded(key, true);\n });\n return;\n }\n for (const item of items) {\n filterTreeItems(\n filter,\n item,\n search ?? '',\n props.itemKey,\n props.itemText,\n props.itemChildren as string,\n excluded,\n );\n }\n excludedSet.value = excluded;\n searchLoading.value = false;\n expand();\n }\n\n watch(\n () => props.search,\n () => {\n searchLoading.value = true;\n filterItemsFn.value(props.items, props.search, props.filter);\n },\n );\n\n // Util Methods\n function getNodeKey(itemOrKey: any) {\n return props.returnItem\n ? getObjectValueByPath(itemOrKey, props.itemKey)\n : itemOrKey;\n }\n\n // State Methods\n function updateNodes(\n items: any[],\n parentKey: CandidateKey | null = null,\n level = 0,\n ) {\n for (const item of items) {\n const key = getObjectValueByPath(item, props.itemKey);\n const children =\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\n const exist = hasOwnProperty(nodes.value, key);\n const existNode = exist\n ? nodes.value[key]\n : {\n vnode: null,\n selected: selected.value?.includes(key) ?? false,\n indeterminate: false,\n active: active.value?.includes(key) ?? false,\n expanded: expanded.value?.includes(key) ?? false,\n };\n const node: NodeState = {\n vnode: existNode.vnode,\n item,\n level,\n parentKey,\n childKeys: children.map((child: any) =>\n getObjectValueByPath(child, props.itemKey),\n ),\n expanded: children.length > 0 && existNode.expanded,\n active: existNode.active,\n indeterminate: existNode.indeterminate,\n selected: existNode.selected,\n };\n\n updateNodes(children, key, level + 1);\n\n nodes.value[key] = node;\n if (nodes.value[key].expanded) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].selected) {\n selectedSet.value.add(key);\n }\n if (nodes.value[key].active) {\n activeSet.value.add(key);\n }\n issueVnodeState(key);\n }\n }\n\n watch(\n expandedSet,\n (neo) => {\n if (!props.search) {\n expandedCache.value = [...neo];\n }\n },\n { deep: true },\n );\n\n function expand(until: boolean | string | number = true) {\n Object.entries(nodes.value).forEach(([key, node]) => {\n if (until === true || until >= node.level) {\n updateExpanded(key, true);\n }\n });\n emitExpanded();\n return expandedSet.value;\n }\n\n function stateWatcher(\n value: any[],\n stateSet: Ref<Set<CandidateKey>>,\n updater: (key: CandidateKey, to: boolean) => void,\n emitter: () => void,\n ) {\n const valuesOfKey = props.returnItem\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\n : value;\n const old = [...stateSet.value];\n if (deepEqual(old, valuesOfKey)) {\n return;\n }\n old.forEach((key) => updater(key, false));\n valuesOfKey.forEach((key) => updater(key, true));\n emitter();\n }\n\n watch(expanded, (neo) => {\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\n });\n\n watch(active, (neo) => {\n stateWatcher(neo, activeSet, updateActive, emitActive);\n });\n\n watch(selected, (neo) => {\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\n });\n\n watch(\n () => props.items,\n (neo: any[]) => {\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\n );\n const neoKeys = getKeys(\n neo,\n props.itemKey,\n props.itemChildren as string,\n );\n const diff = differenceBetween(oldKeys, neoKeys);\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\n return;\n }\n diff.forEach((k) => delete nodes.value[k]);\n\n // init\n const oldSelected = [...selectedSet.value];\n const oldActive = [...activeSet.value];\n selectedSet.value.clear();\n expandedSet.value.clear();\n activeSet.value.clear();\n updateNodes(neo);\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\n emitSelected();\n }\n if (!deepEqual(oldActive, [...activeSet.value])) {\n emitActive();\n }\n },\n { deep: true, flush: 'sync' },\n );\n\n // Provide & Issue\n\n updateNodes(props.items);\n\n const renderLeaves = computed(() => {\n return props.items.slice().filter((leaf) => {\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n const classes = computed(() => {\n return {\n 'y-tree-view': true,\n };\n });\n\n const styles = computed(() => {\n let color = props.activeColor;\n if (props.activeColor && !isColorValue(props.activeColor)) {\n color = `var(--y-theme-${props.activeColor})`;\n }\n return {\n [`--y-tree-view__active-color`]: color,\n };\n });\n\n onMounted(() => {\n if (props.defaultExpand != null && props.defaultExpand !== false) {\n expandedCache.value = [...expand(props.defaultExpand)];\n } else {\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\n emitExpanded();\n }\n\n for (const activeValue of props.active.map(getNodeKey)) {\n updateActive(activeValue, true);\n }\n\n for (const selectedValue of props.selected.map(getNodeKey)) {\n updateSelected(selectedValue, true);\n }\n });\n\n expose({\n expand,\n });\n\n useRender(() => {\n return (\n <>\n <div class={classes.value} style={styles.value} role=\"tree\">\n {searchLoading.value && <YProgressBar indeterminate />}\n {renderLeaves.value.length > 0 ? (\n renderLeaves.value.slice().map((leaf) => {\n return (\n <YTreeViewNode\n v-slots={slots}\n key={getObjectValueByPath(leaf, props.itemKey)}\n {...{\n ...chooseProps(props, treeViewNodeProps),\n item: leaf,\n level: 0,\n }}\n ></YTreeViewNode>\n );\n })\n ) : (\n <div class=\"y-tree-view__no-data\">\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\n </div>\n )}\n </div>\n </>\n );\n });\n\n return {\n nodes,\n expandedSet,\n selectedSet,\n activeSet,\n excludedSet,\n searchLoading,\n expandedCache,\n };\n },\n});\n\nexport type YTreeView = InstanceType<typeof YTreeView>;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
|
-
import { computed, getCurrentInstance,
|
|
2
|
+
import { computed, getCurrentInstance, mergeProps, onBeforeMount, ref, resolveComponent } from 'vue';
|
|
3
3
|
import { pressItemsPropsOptions } from "../../abstract/items.mjs";
|
|
4
|
+
import { useTreeView } from "./tree-view.mjs";
|
|
4
5
|
import { useRender } from "../../composables/component.mjs";
|
|
5
6
|
import { getObjectValueByPath } from "../../util/common.mjs";
|
|
6
7
|
import { defineComponent } from "../../util/component/index.mjs";
|
|
@@ -55,7 +56,7 @@ export const YTreeViewNode = defineComponent({
|
|
|
55
56
|
} = _ref;
|
|
56
57
|
const YTreeNode = resolveComponent('YTreeViewNode', true);
|
|
57
58
|
const vm = getCurrentInstance();
|
|
58
|
-
const treeView =
|
|
59
|
+
const treeView = useTreeView();
|
|
59
60
|
const container$ = ref();
|
|
60
61
|
const expanded = ref(false);
|
|
61
62
|
const active = ref(false);
|
|
@@ -225,15 +226,16 @@ export const YTreeViewNode = defineComponent({
|
|
|
225
226
|
const myKey = computed(() => {
|
|
226
227
|
return getObjectValueByPath(props.item, props.itemKey);
|
|
227
228
|
});
|
|
228
|
-
|
|
229
|
+
const nodeState = {
|
|
229
230
|
myKey,
|
|
230
231
|
expanded,
|
|
231
232
|
active,
|
|
232
233
|
selected,
|
|
233
234
|
immediate
|
|
234
|
-
}
|
|
235
|
+
};
|
|
236
|
+
expose(nodeState);
|
|
235
237
|
onBeforeMount(() => {
|
|
236
|
-
treeView?.register?.(myKey.value,
|
|
238
|
+
treeView?.register?.(myKey.value, nodeState);
|
|
237
239
|
});
|
|
238
240
|
return {
|
|
239
241
|
treeView,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeViewNode.mjs","names":["computed","getCurrentInstance","inject","mergeProps","onBeforeMount","ref","resolveComponent","pressItemsPropsOptions","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","vm","treeView","container$","expanded","active","selected","immediate","children","itemChildren","slice","imLeaf","value","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","onClick","e","to","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","_createVNode","leading","text","trailing","map","_mergeProps","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","register","exposed"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["import {\r\n type PropType,\r\n type SlotsType,\r\n type VNodeArrayChildren,\r\n computed,\r\n getCurrentInstance,\r\n inject,\r\n mergeProps,\r\n onBeforeMount,\r\n ref,\r\n resolveComponent,\r\n} from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '@/abstract/items';\r\nimport { useRender } from '@/composables/component';\r\nimport { getObjectValueByPath } from '@/util/common';\r\nimport { defineComponent } from '@/util/component';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { YButton } from '../button';\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YPlate } from '../plate';\r\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\r\nimport { YExpandVTransition } from '../transitions';\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n requiredActive: Boolean,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n onMouseenterContainer: Function,\r\n onMouseleaveContainer: Function,\r\n onMousemoveContainer: Function,\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n 'expand-icon': any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, expose }) {\r\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\r\n const vm = getCurrentInstance();\r\n const treeView = inject<any>('tree-view');\r\n const container$ = ref<HTMLElement>();\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const immediate = ref(false);\r\n\r\n const children = computed(() => {\r\n return (\r\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\r\n ).slice();\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n };\r\n });\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n const leaves = computed(() => {\r\n return children.value.filter((leaf: any) => {\r\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !selected.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n function onMouseenterContainer(e: MouseEvent) {\r\n props.onMouseenterContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMouseleaveContainer(e: MouseEvent) {\r\n props.onMouseleaveContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMousemoveContainer(e: MouseEvent) {\r\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\r\n }\r\n\r\n useRender(() => {\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n <div class={'y-tree-view-node__indent-spacer'}></div>,\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n class={classes.value}\r\n style={styles.value}\r\n role=\"treeitem\"\r\n data-level={props.level}\r\n >\r\n <div\r\n ref={container$}\r\n class={'y-tree-view-node__container'}\r\n onClick={(e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0\r\n }\r\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\r\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\r\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\r\n >\r\n <YPlate />\r\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\r\n {/* EXPAND */}\r\n {!imLeaf.value && leaves.value.length > 0 ? (\r\n <YButton\r\n class={'y-tree-view-node__expand-icon'}\r\n variation={'icon'}\r\n onClick={onClickExpand}\r\n >\r\n {slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <YIconExpand></YIconExpand>\r\n )}\r\n </YButton>\r\n ) : (\r\n <i class={'y-tree-view-node__no-expand-icon'}></i>\r\n )}\r\n {/* SELECT */}\r\n {props.enableSelect && (\r\n <div class={'y-tree-view-node__select'} onClick={onClickSelect}>\r\n <YIconCheckbox checked={selected.value}></YIconCheckbox>\r\n </div>\r\n )}\r\n {/* CONTENT */}\r\n <div class={'y-tree-view-node__content'}>\r\n {slots.leading && (\r\n <div class={'y-tree-view-node__leading'}>\r\n {slots.leading(slotProps.value)}\r\n </div>\r\n )}\r\n <div class={'y-tree-view-node__text'}>\r\n {slots.default ? (\r\n slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value,\r\n })\r\n ) : props.search && !searchLoading.value ? (\r\n <YTextHighlighter\r\n text={contentText.value}\r\n keyword={props.search}\r\n ></YTextHighlighter>\r\n ) : (\r\n contentText.value\r\n )}\r\n </div>\r\n {slots.trailing && (\r\n <div class={'y-tree-view-node__trailing'}>\r\n {slots.trailing(slotProps.value)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {/* CHILDREN */}\r\n {children.value.length > 0 && (\r\n <YExpandVTransition disabled={props.disableTransition}>\r\n {expanded.value && (\r\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\r\n {leaves.value.map((item: any) => {\r\n return (\r\n <YTreeNode\r\n {...mergeProps(props)}\r\n key={getObjectValueByPath(item, props.itemKey)}\r\n level={(props.level ?? 0) + 1}\r\n item={item}\r\n >\r\n {{\r\n default:\r\n slots.default &&\r\n ((...args: any[]) => slots.default?.(...args)),\r\n 'expand-icon':\r\n slots['expand-icon'] &&\r\n ((...args: any[]) =>\r\n slots['expand-icon']?.(...args)),\r\n leading:\r\n slots.leading &&\r\n ((...args: any[]) => slots.leading?.(...args)),\r\n trailing:\r\n slots.trailing &&\r\n ((...args: any[]) => slots.trailing?.(...args)),\r\n }}\r\n </YTreeNode>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </YExpandVTransition>\r\n )}\r\n </div>\r\n );\r\n });\r\n\r\n const myKey = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemKey);\r\n });\r\n\r\n expose({\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n immediate,\r\n });\r\n\r\n onBeforeMount(() => {\r\n treeView?.register?.(myKey.value, vm!.exposed);\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n immediate,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YTreeViewNode.mjs","names":["computed","getCurrentInstance","mergeProps","onBeforeMount","ref","resolveComponent","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","vm","treeView","container$","expanded","active","selected","immediate","children","itemChildren","slice","imLeaf","value","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","onClick","e","to","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","_createVNode","leading","text","trailing","map","_mergeProps","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n type VNodeArrayChildren,\n computed,\n getCurrentInstance,\n mergeProps,\n onBeforeMount,\n ref,\n resolveComponent,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '@/abstract/items';\nimport { useTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { getObjectValueByPath } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YIconCheckbox, YIconExpand } from '../icons';\nimport { YPlate } from '../plate';\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\nimport { YExpandVTransition } from '../transitions';\n\nexport const pressYTreeViewNodeProps = propsFactory(\n {\n search: String,\n disableTransition: Boolean,\n enableActive: Boolean,\n activeClass: [String, Array],\n activeSingleModifier: String,\n requiredActive: Boolean,\n activeColor: {\n type: String,\n default: 'primary',\n },\n enableSelect: Boolean,\n onMouseenterContainer: Function,\n onMouseleaveContainer: Function,\n onMousemoveContainer: Function,\n ...pressItemsPropsOptions({\n itemKey: 'id',\n }),\n },\n 'YTreeViewNode',\n);\n\nexport const YTreeViewNode = defineComponent({\n name: 'YTreeNode',\n components: {\n YButton,\n YIconExpand,\n YPlate,\n YIconCheckbox,\n },\n props: {\n item: {\n type: Object as PropType<any>,\n },\n level: {\n type: Number as PropType<number>,\n default: 0,\n },\n ...pressYTreeViewNodeProps(),\n },\n slots: Object as SlotsType<{\n default: any;\n 'expand-icon': any;\n leading: any;\n trailing: any;\n }>,\n setup(props, { slots, expose }) {\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\n const vm = getCurrentInstance();\n const treeView = useTreeView();\n const container$ = ref<HTMLElement>();\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\n\n const children = computed(() => {\n return (\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\n ).slice();\n });\n\n const imLeaf = computed(() => children.value.length < 1);\n\n const classes = computed(() => {\n return {\n 'y-tree-view-node': true,\n 'y-tree-view-node--leaf': imLeaf.value,\n 'y-tree-view-node--expanded': expanded.value,\n 'y-tree-view-node--active': active.value,\n };\n });\n\n const styles = computed(() => {\n return {\n '--tree-view-node--level': props.level,\n };\n });\n\n const contentText = computed(() => {\n return getObjectValueByPath(props.item, props.itemText) ?? '';\n });\n\n const slotProps = computed(() => {\n return {\n level: props.level,\n imLeaf: imLeaf.value,\n };\n });\n\n const searchLoading = computed(() => {\n return treeView.searchLoading.value;\n });\n\n const leaves = computed(() => {\n return children.value.filter((leaf: any) => {\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n function onClick(e: MouseEvent) {\n const to = !active.value;\n active.value = to;\n treeView.updateActive(myKey.value, to, e);\n treeView.emitActive();\n }\n\n function onClickExpand(e: MouseEvent) {\n e.stopPropagation();\n const to = !expanded.value;\n expanded.value = to;\n treeView.updateExpanded(myKey.value, to);\n treeView.emitExpanded();\n }\n\n function onClickSelect(e: MouseEvent) {\n e.stopPropagation();\n const to = !selected.value;\n selected.value = to;\n treeView.updateSelected(myKey.value, to);\n treeView.emitSelected();\n }\n\n function onMouseenterContainer(e: MouseEvent) {\n props.onMouseenterContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMouseleaveContainer(e: MouseEvent) {\n props.onMouseleaveContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMousemoveContainer(e: MouseEvent) {\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\n }\n\n useRender(() => {\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n <div class={'y-tree-view-node__indent-spacer'}></div>,\n );\n }\n\n return (\n <div\n class={classes.value}\n style={styles.value}\n role=\"treeitem\"\n data-level={props.level}\n >\n <div\n ref={container$}\n class={'y-tree-view-node__container'}\n onClick={(e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0\n }\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\n >\n <YPlate />\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\n {/* EXPAND */}\n {!imLeaf.value && leaves.value.length > 0 ? (\n <YButton\n class={'y-tree-view-node__expand-icon'}\n variation={'icon'}\n onClick={onClickExpand}\n >\n {slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <YIconExpand></YIconExpand>\n )}\n </YButton>\n ) : (\n <i class={'y-tree-view-node__no-expand-icon'}></i>\n )}\n {/* SELECT */}\n {props.enableSelect && (\n <div class={'y-tree-view-node__select'} onClick={onClickSelect}>\n <YIconCheckbox checked={selected.value}></YIconCheckbox>\n </div>\n )}\n {/* CONTENT */}\n <div class={'y-tree-view-node__content'}>\n {slots.leading && (\n <div class={'y-tree-view-node__leading'}>\n {slots.leading(slotProps.value)}\n </div>\n )}\n <div class={'y-tree-view-node__text'}>\n {slots.default ? (\n slots.default?.({\n text: contentText.value,\n item: props.item,\n ...slotProps.value,\n })\n ) : props.search && !searchLoading.value ? (\n <YTextHighlighter\n text={contentText.value}\n keyword={props.search}\n ></YTextHighlighter>\n ) : (\n contentText.value\n )}\n </div>\n {slots.trailing && (\n <div class={'y-tree-view-node__trailing'}>\n {slots.trailing(slotProps.value)}\n </div>\n )}\n </div>\n </div>\n {/* CHILDREN */}\n {children.value.length > 0 && (\n <YExpandVTransition disabled={props.disableTransition}>\n {expanded.value && (\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\n {leaves.value.map((item: any) => {\n return (\n <YTreeNode\n {...mergeProps(props)}\n key={getObjectValueByPath(item, props.itemKey)}\n level={(props.level ?? 0) + 1}\n item={item}\n >\n {{\n default:\n slots.default &&\n ((...args: any[]) => slots.default?.(...args)),\n 'expand-icon':\n slots['expand-icon'] &&\n ((...args: any[]) =>\n slots['expand-icon']?.(...args)),\n leading:\n slots.leading &&\n ((...args: any[]) => slots.leading?.(...args)),\n trailing:\n slots.trailing &&\n ((...args: any[]) => slots.trailing?.(...args)),\n }}\n </YTreeNode>\n );\n })}\n </div>\n )}\n </YExpandVTransition>\n )}\n </div>\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n const nodeState = {\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n\n expose(nodeState);\n\n onBeforeMount(() => {\n treeView?.register?.(myKey.value, nodeState);\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":"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"}
|