@vuer-ai/vuer-uikit 0.0.75 → 0.0.76

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 (94) hide show
  1. package/dist/chunk-2DA6GE5K.mjs +184 -0
  2. package/dist/{chunk-VNYP2IVJ.cjs → chunk-AHNVEAOM.cjs} +2 -2
  3. package/dist/chunk-BWBBQCG2.mjs +217 -0
  4. package/dist/chunk-D4W2G6CY.cjs +494 -0
  5. package/dist/{chunk-2274XZ2C.cjs → chunk-E6D3BSYY.cjs} +6 -6
  6. package/dist/chunk-HTAFERCZ.mjs +1 -0
  7. package/dist/chunk-HVVT3D2T.mjs +1 -0
  8. package/dist/chunk-IMN6FIOY.cjs +187 -0
  9. package/dist/{chunk-P27TWGME.cjs → chunk-IQAZZPJD.cjs} +2 -2
  10. package/dist/chunk-KFPS5CCR.cjs +2 -0
  11. package/dist/{chunk-P5T6EVSQ.mjs → chunk-LBENVTO2.mjs} +1 -1
  12. package/dist/{chunk-NS2P4CPA.mjs → chunk-MMT74K7A.mjs} +5 -5
  13. package/dist/chunk-OEM5OJDP.mjs +489 -0
  14. package/dist/chunk-RM7E3WGH.cjs +71 -0
  15. package/dist/chunk-SYXRPCBO.cjs +220 -0
  16. package/dist/{chunk-IZFHHQ6S.mjs → chunk-TSHZODTT.mjs} +2 -2
  17. package/dist/chunk-VOTZLQ6J.cjs +2 -0
  18. package/dist/chunk-W4CDQ2RJ.mjs +69 -0
  19. package/dist/index.cjs +75 -50
  20. package/dist/index.d.cts +6 -2
  21. package/dist/index.d.ts +6 -2
  22. package/dist/index.mjs +21 -16
  23. package/dist/ui/UIKitBadge.cjs +5 -5
  24. package/dist/ui/UIKitBadge.mjs +1 -1
  25. package/dist/ui/index.cjs +75 -50
  26. package/dist/ui/index.d.cts +6 -2
  27. package/dist/ui/index.d.ts +6 -2
  28. package/dist/ui/index.mjs +21 -16
  29. package/dist/ui/inputs/index.cjs +15 -15
  30. package/dist/ui/inputs/index.mjs +3 -3
  31. package/dist/ui/inputs/number-inputs/index.cjs +15 -15
  32. package/dist/ui/inputs/number-inputs/index.mjs +3 -3
  33. package/dist/ui/layouts/index.cjs +6 -6
  34. package/dist/ui/layouts/index.mjs +2 -2
  35. package/dist/ui/{tree-view.cjs → simple-tree-view.cjs} +3 -3
  36. package/dist/ui/{tree-view.d.cts → simple-tree-view.d.cts} +1 -1
  37. package/dist/ui/{tree-view.d.ts → simple-tree-view.d.ts} +1 -1
  38. package/dist/ui/{tree-view.mjs → simple-tree-view.mjs} +1 -1
  39. package/dist/ui/timeline.cjs +3 -3
  40. package/dist/ui/timeline.d.cts +1 -1
  41. package/dist/ui/timeline.d.ts +1 -1
  42. package/dist/ui/timeline.mjs +2 -2
  43. package/dist/ui/tree-view/TreeSearchBar.cjs +22 -0
  44. package/dist/ui/tree-view/TreeSearchBar.d.cts +16 -0
  45. package/dist/ui/tree-view/TreeSearchBar.d.ts +16 -0
  46. package/dist/ui/tree-view/TreeSearchBar.mjs +13 -0
  47. package/dist/ui/tree-view/TreeView.cjs +24 -0
  48. package/dist/ui/tree-view/TreeView.d.cts +48 -0
  49. package/dist/ui/tree-view/TreeView.d.ts +48 -0
  50. package/dist/ui/tree-view/TreeView.mjs +11 -0
  51. package/dist/ui/tree-view/hooks.cjs +14 -0
  52. package/dist/ui/tree-view/hooks.d.cts +38 -0
  53. package/dist/ui/tree-view/hooks.d.ts +38 -0
  54. package/dist/ui/tree-view/hooks.mjs +1 -0
  55. package/dist/ui/tree-view/index.cjs +42 -0
  56. package/dist/ui/tree-view/index.d.cts +6 -0
  57. package/dist/ui/tree-view/index.d.ts +6 -0
  58. package/dist/ui/tree-view/index.mjs +17 -0
  59. package/dist/ui/tree-view/types.cjs +4 -0
  60. package/dist/ui/tree-view/types.d.cts +24 -0
  61. package/dist/ui/tree-view/types.d.ts +24 -0
  62. package/dist/ui/tree-view/types.mjs +1 -0
  63. package/dist/ui/tree-view-legacy.cjs +37 -0
  64. package/dist/ui/tree-view-legacy.d.cts +108 -0
  65. package/dist/ui/tree-view-legacy.d.ts +108 -0
  66. package/dist/ui/{tree-view-v2.mjs → tree-view-legacy.mjs} +1 -1
  67. package/dist/ui/waterfall/TimelineEvent.d.cts +1 -1
  68. package/dist/ui/waterfall/TimelineEvent.d.ts +1 -1
  69. package/dist/ui/waterfall/TimelineProcessBar.d.cts +1 -1
  70. package/dist/ui/waterfall/TimelineProcessBar.d.ts +1 -1
  71. package/dist/ui/waterfall/Wedges.d.cts +1 -1
  72. package/dist/ui/waterfall/Wedges.d.ts +1 -1
  73. package/dist/ui/waterfall/hooks/useTimelineState.d.cts +1 -2
  74. package/dist/ui/waterfall/hooks/useTimelineState.d.ts +1 -2
  75. package/dist/ui/waterfall/hooks/useViewport.d.cts +1 -2
  76. package/dist/ui/waterfall/hooks/useViewport.d.ts +1 -2
  77. package/dist/ui/waterfall/index.cjs +7 -7
  78. package/dist/ui/waterfall/index.d.cts +1 -1
  79. package/dist/ui/waterfall/index.d.ts +1 -1
  80. package/dist/ui/waterfall/index.mjs +6 -6
  81. package/dist/ui/waterfall/types.d.cts +1 -2
  82. package/dist/ui/waterfall/types.d.ts +1 -2
  83. package/package.json +1 -1
  84. package/dist/chunk-5432JOTN.mjs +0 -94
  85. package/dist/chunk-FD5AAGON.cjs +0 -487
  86. package/dist/chunk-ILGNKXK2.mjs +0 -485
  87. package/dist/chunk-Z5P6VCGR.cjs +0 -99
  88. package/dist/ui/tree-view-v2.cjs +0 -25
  89. package/dist/ui/tree-view-v2.d.cts +0 -43
  90. package/dist/ui/tree-view-v2.d.ts +0 -43
  91. /package/dist/{chunk-SUABRIFA.mjs → chunk-2SWBXWLK.mjs} +0 -0
  92. /package/dist/{chunk-XMUP5MIM.mjs → chunk-G3EIVAVR.mjs} +0 -0
  93. /package/dist/{chunk-OX2U5RAG.cjs → chunk-G5NT42YF.cjs} +0 -0
  94. /package/dist/{chunk-J5DLIKNB.cjs → chunk-X2A7TKER.cjs} +0 -0
@@ -1,487 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkLCCNBVKZ_cjs = require('./chunk-LCCNBVKZ.cjs');
4
- var chunkVBBJSIY7_cjs = require('./chunk-VBBJSIY7.cjs');
5
- var chunkYQCSEMRB_cjs = require('./chunk-YQCSEMRB.cjs');
6
- var chunkOHIB3TEN_cjs = require('./chunk-OHIB3TEN.cjs');
7
- var lucideReact = require('lucide-react');
8
- var react = require('react');
9
- var jsxRuntime = require('react/jsx-runtime');
10
-
11
- function TreeView({
12
- data,
13
- getIcon,
14
- onVisibleDataChange,
15
- onItemHover,
16
- className,
17
- hoveredId,
18
- isSelectable = false,
19
- selectedItemId,
20
- onSelectChange,
21
- isSearchable = true,
22
- alwaysShowExpand = false,
23
- useSyncScroll = false
24
- }) {
25
- const [expandedItems, setExpandedItems] = react.useState(() => {
26
- const initial = /* @__PURE__ */ new Set();
27
- data.forEach((item) => {
28
- if (item.isCollapsible) initial.add(item.id);
29
- });
30
- return initial;
31
- });
32
- const [searchQuery, setSearchQuery] = react.useState("");
33
- const [isCaseSensitive, setIsCaseSensitive] = react.useState(false);
34
- const [isRegex, setIsRegex] = react.useState(false);
35
- const [isRegexValid, setIsRegexValid] = react.useState(true);
36
- const toggleItem = (id) => {
37
- setExpandedItems((prev) => {
38
- const newSet = new Set(prev);
39
- if (newSet.has(id)) {
40
- newSet.delete(id);
41
- } else {
42
- newSet.add(id);
43
- }
44
- return newSet;
45
- });
46
- };
47
- const handleItemSelect = (id) => {
48
- if (isSelectable && onSelectChange) {
49
- onSelectChange(selectedItemId === id ? null : id);
50
- }
51
- };
52
- const hasDescendants = (itemId) => {
53
- return (childrenMap.get(itemId) || []).length > 0;
54
- };
55
- const childrenMap = react.useMemo(() => {
56
- const map = /* @__PURE__ */ new Map();
57
- data.forEach((item) => {
58
- if (!map.has(item.parentId)) {
59
- map.set(item.parentId, []);
60
- }
61
- map.get(item.parentId).push(item);
62
- });
63
- return map;
64
- }, [data]);
65
- const dataWithMeta = react.useMemo(() => {
66
- const dataMap = new Map(data.map((item) => [item.id, item]));
67
- const getAncestors = (item) => {
68
- const ancestors = [];
69
- let current = item.parentId;
70
- while (current) {
71
- const parent = dataMap.get(current);
72
- if (parent) {
73
- ancestors.unshift(parent);
74
- current = parent.parentId;
75
- } else {
76
- break;
77
- }
78
- }
79
- return ancestors;
80
- };
81
- const sortedData = [];
82
- const visited = /* @__PURE__ */ new Set();
83
- const traverseNode = (nodeId, depth = 0) => {
84
- const children = childrenMap.get(nodeId) || [];
85
- children.forEach((child) => {
86
- if (!visited.has(child.id)) {
87
- visited.add(child.id);
88
- sortedData.push(child);
89
- traverseNode(child.id, depth + 1);
90
- }
91
- });
92
- };
93
- traverseNode(null);
94
- return sortedData.map((item) => {
95
- const siblings = childrenMap.get(item.parentId) || [];
96
- const isLast = siblings.length > 0 && siblings[siblings.length - 1].id === item.id;
97
- const ancestors = getAncestors(item);
98
- const indent = ancestors.length;
99
- return { ...item, indent, isLast, ancestors };
100
- });
101
- }, [data, childrenMap]);
102
- const visibleData = react.useMemo(() => {
103
- const dataMap = new Map(data.map((item) => [item.id, item]));
104
- if (!searchQuery) {
105
- const isVisible = (item) => {
106
- return item.ancestors.every((ancestor) => expandedItems.has(ancestor.id));
107
- };
108
- return dataWithMeta.filter(isVisible);
109
- }
110
- const matchingAndAncestorIds = /* @__PURE__ */ new Set();
111
- let regex = null;
112
- if (isRegex) {
113
- try {
114
- regex = new RegExp(searchQuery, isCaseSensitive ? "" : "i");
115
- if (!isRegexValid) setIsRegexValid(true);
116
- } catch {
117
- if (isRegexValid) setIsRegexValid(false);
118
- return [];
119
- }
120
- }
121
- data.forEach((item) => {
122
- let labelMatches = false;
123
- if (regex) {
124
- labelMatches = regex.test(item.label);
125
- } else {
126
- const source = isCaseSensitive ? item.label : item.label.toLowerCase();
127
- const query = isCaseSensitive ? searchQuery : searchQuery.toLowerCase();
128
- labelMatches = source.includes(query);
129
- }
130
- if (labelMatches) {
131
- matchingAndAncestorIds.add(item.id);
132
- let current = item.parentId;
133
- while (current) {
134
- const parent = dataMap.get(current);
135
- if (parent) {
136
- matchingAndAncestorIds.add(parent.id);
137
- current = parent.parentId;
138
- } else {
139
- break;
140
- }
141
- }
142
- }
143
- });
144
- return dataWithMeta.filter((item) => matchingAndAncestorIds.has(item.id));
145
- }, [searchQuery, dataWithMeta, expandedItems, isCaseSensitive, isRegex, isRegexValid, data]);
146
- const searchResultsCount = react.useMemo(() => {
147
- if (!searchQuery || !isRegexValid) return 0;
148
- let count = 0;
149
- let regex = null;
150
- if (isRegex) {
151
- try {
152
- regex = new RegExp(searchQuery, isCaseSensitive ? "" : "i");
153
- } catch {
154
- return 0;
155
- }
156
- }
157
- data.forEach((item) => {
158
- let labelMatches = false;
159
- if (regex) {
160
- labelMatches = regex.test(item.label);
161
- } else {
162
- const source = isCaseSensitive ? item.label : item.label.toLowerCase();
163
- const query = isCaseSensitive ? searchQuery : searchQuery.toLowerCase();
164
- labelMatches = source.includes(query);
165
- }
166
- if (labelMatches) {
167
- count++;
168
- }
169
- });
170
- return count;
171
- }, [searchQuery, data, isCaseSensitive, isRegex, isRegexValid]);
172
- react.useEffect(() => {
173
- onVisibleDataChange?.(visibleData);
174
- }, [visibleData, onVisibleDataChange]);
175
- const renderLabel = (label) => {
176
- if (!searchQuery || !isRegexValid) {
177
- return label;
178
- }
179
- let regex;
180
- try {
181
- regex = new RegExp(`(${searchQuery})`, isCaseSensitive ? "g" : "gi");
182
- } catch {
183
- return label;
184
- }
185
- const parts = label.split(regex);
186
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: parts.map(
187
- (part, i) => i % 2 === 1 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-uk-xs bg-accent-warning", children: part }, i) : part
188
- ) });
189
- };
190
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkOHIB3TEN_cjs.cn("flex flex-col", className), children: [
191
- isSearchable && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "shrink-0", children: [
192
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 py-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
193
- chunkYQCSEMRB_cjs.InputRoot,
194
- {
195
- type: "text",
196
- placeholder: "Search...",
197
- size: "md",
198
- className: "flex-1",
199
- inputClassName: chunkOHIB3TEN_cjs.cn(
200
- !isRegexValid && "text-red-500"
201
- ),
202
- value: searchQuery,
203
- onChange: (e) => setSearchQuery(e.target.value),
204
- children: [
205
- /* @__PURE__ */ jsxRuntime.jsx(chunkYQCSEMRB_cjs.InputSlot, { side: "left", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "text-text-secondary size-4 stroke-1" }) }),
206
- /* @__PURE__ */ jsxRuntime.jsx(chunkYQCSEMRB_cjs.InputSlot, { side: "right", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLCCNBVKZ_cjs.TooltipProvider, { delayDuration: 200, children: [
207
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLCCNBVKZ_cjs.Tooltip, { children: [
208
- /* @__PURE__ */ jsxRuntime.jsx(chunkLCCNBVKZ_cjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
209
- "button",
210
- {
211
- onClick: () => setIsCaseSensitive((prev) => !prev),
212
- className: chunkOHIB3TEN_cjs.cn("rounded-uk-sm p-1 mr-1", isCaseSensitive && "bg-shadow-secondary"),
213
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CaseSensitive, { className: "size-4" })
214
- }
215
- ) }),
216
- /* @__PURE__ */ jsxRuntime.jsx(chunkLCCNBVKZ_cjs.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Case Sensitive" }) })
217
- ] }),
218
- /* @__PURE__ */ jsxRuntime.jsxs(chunkLCCNBVKZ_cjs.Tooltip, { children: [
219
- /* @__PURE__ */ jsxRuntime.jsx(chunkLCCNBVKZ_cjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
220
- "button",
221
- {
222
- onClick: () => setIsRegex((prev) => !prev),
223
- className: chunkOHIB3TEN_cjs.cn("rounded-uk-sm p-1", isRegex && "bg-shadow-secondary"),
224
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Regex, { className: "size-4" })
225
- }
226
- ) }),
227
- /* @__PURE__ */ jsxRuntime.jsx(chunkLCCNBVKZ_cjs.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Use Regular Expression" }) })
228
- ] })
229
- ] }) })
230
- ]
231
- }
232
- ) }),
233
- searchQuery && isRegexValid && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end px-2 pb-1", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-uk-xs text-text-secondary", children: [
234
- searchResultsCount,
235
- " result",
236
- searchResultsCount !== 1 ? "s" : ""
237
- ] }) })
238
- ] }),
239
- useSyncScroll ? /* @__PURE__ */ jsxRuntime.jsx(chunkVBBJSIY7_cjs.SyncScroll, { className: "scrollbar-track-transparent flex-1", children: visibleData.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
240
- "div",
241
- {
242
- className: chunkOHIB3TEN_cjs.cn(
243
- "group relative flex h-[32px] items-center",
244
- isSelectable && "rounded-uk-md",
245
- !item.disable && "cursor-pointer",
246
- hoveredId === item.id && !item.disable && "bg-bg-secondary",
247
- isSelectable && selectedItemId === item.id && "bg-brand-primary text-text-withbg"
248
- ),
249
- onMouseEnter: () => onItemHover?.(item.id),
250
- onMouseLeave: () => onItemHover?.(null),
251
- onClick: () => !item.disable && handleItemSelect(item.id),
252
- children: [
253
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 left-[-0.28rem] z-0 flex h-full items-center", children: [
254
- item.ancestors.map((ancestor, index) => {
255
- const parentIsLast = dataWithMeta.find((d) => d.id === ancestor.id)?.isLast;
256
- return /* @__PURE__ */ jsxRuntime.jsx(
257
- "div",
258
- {
259
- className: chunkOHIB3TEN_cjs.cn(
260
- "h-full w-[1.25rem]",
261
- parentIsLast ? "" : "border-l",
262
- "border-line-primary"
263
- )
264
- },
265
- index
266
- );
267
- }),
268
- item.indent > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-full w-[1.24rem]", children: [
269
- /* @__PURE__ */ jsxRuntime.jsx(
270
- "div",
271
- {
272
- className: chunkOHIB3TEN_cjs.cn(
273
- "absolute top-0 left-0 h-1/2 w-1/2 border-b border-l",
274
- item.isLast ? "rounded-bl-md" : "",
275
- "border-line-primary"
276
- )
277
- }
278
- ),
279
- !item.isLast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-line-primary absolute top-1/2 left-0 h-1/2 w-1/2 border-l" })
280
- ] })
281
- ] }),
282
- /* @__PURE__ */ jsxRuntime.jsxs(
283
- "div",
284
- {
285
- className: "text-uk-md z-10 flex w-full items-center justify-between gap-2 px-2 whitespace-nowrap",
286
- style: { paddingLeft: `${item.indent * 1.25 + 0.5}rem` },
287
- children: [
288
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
289
- alwaysShowExpand && hasDescendants(item.id) && !expandedItems.has(item.id) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
290
- /* @__PURE__ */ jsxRuntime.jsx(
291
- "button",
292
- {
293
- onClick: (e) => {
294
- e.stopPropagation();
295
- toggleItem(item.id);
296
- },
297
- className: "flex size-4 cursor-pointer items-center justify-center",
298
- children: /* @__PURE__ */ jsxRuntime.jsx(
299
- lucideReact.ChevronDown,
300
- {
301
- className: chunkOHIB3TEN_cjs.cn(
302
- "size-4 -rotate-90 transition-transform",
303
- item.disable && "text-icon-tertiary"
304
- )
305
- }
306
- )
307
- }
308
- ),
309
- /* @__PURE__ */ jsxRuntime.jsx(
310
- "div",
311
- {
312
- className: chunkOHIB3TEN_cjs.cn(
313
- "flex size-4 items-center justify-center",
314
- item.disable && "text-icon-tertiary"
315
- ),
316
- children: getIcon(item)
317
- }
318
- )
319
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex size-4 items-center justify-center", children: [
320
- item.isCollapsible && /* @__PURE__ */ jsxRuntime.jsx(
321
- "button",
322
- {
323
- onClick: (e) => {
324
- e.stopPropagation();
325
- toggleItem(item.id);
326
- },
327
- className: "absolute z-20 flex cursor-pointer items-center justify-center opacity-0 transition-opacity group-hover:opacity-100",
328
- children: /* @__PURE__ */ jsxRuntime.jsx(
329
- lucideReact.ChevronDown,
330
- {
331
- className: chunkOHIB3TEN_cjs.cn(
332
- "size-4 transition-transform",
333
- !expandedItems.has(item.id) && "-rotate-90",
334
- item.disable && "text-icon-tertiary"
335
- )
336
- }
337
- )
338
- }
339
- ),
340
- /* @__PURE__ */ jsxRuntime.jsx(
341
- "div",
342
- {
343
- className: chunkOHIB3TEN_cjs.cn(
344
- "cursor-pointer transition-opacity",
345
- item.isCollapsible && "group-hover:opacity-0",
346
- item.disable && "text-icon-tertiary"
347
- ),
348
- children: getIcon(item)
349
- }
350
- )
351
- ] }),
352
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkOHIB3TEN_cjs.cn("truncate", item.disable && "text-text-tertiary"), children: renderLabel(item.label) })
353
- ] }),
354
- item.actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", onClick: (e) => e.stopPropagation(), children: item.actions })
355
- ]
356
- }
357
- )
358
- ]
359
- },
360
- item.id
361
- )) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto", children: visibleData.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
362
- "div",
363
- {
364
- className: chunkOHIB3TEN_cjs.cn(
365
- "group relative flex h-[32px] items-center",
366
- isSelectable && "rounded-uk-md",
367
- !item.disable && "cursor-pointer",
368
- hoveredId === item.id && !item.disable && "bg-bg-secondary",
369
- isSelectable && selectedItemId === item.id && "bg-brand-primary text-text-withbg"
370
- ),
371
- onMouseEnter: () => onItemHover?.(item.id),
372
- onMouseLeave: () => onItemHover?.(null),
373
- onClick: () => !item.disable && handleItemSelect(item.id),
374
- children: [
375
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 left-[-0.28rem] z-0 flex h-full items-center", children: [
376
- item.ancestors.map((ancestor, index) => {
377
- const parentIsLast = dataWithMeta.find((d) => d.id === ancestor.id)?.isLast;
378
- return /* @__PURE__ */ jsxRuntime.jsx(
379
- "div",
380
- {
381
- className: chunkOHIB3TEN_cjs.cn(
382
- "h-full w-[1.25rem]",
383
- parentIsLast ? "" : "border-l",
384
- "border-line-primary"
385
- )
386
- },
387
- index
388
- );
389
- }),
390
- item.indent > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-full w-[1.24rem]", children: [
391
- /* @__PURE__ */ jsxRuntime.jsx(
392
- "div",
393
- {
394
- className: chunkOHIB3TEN_cjs.cn(
395
- "absolute top-0 left-0 h-1/2 w-1/2 border-b border-l",
396
- item.isLast ? "rounded-bl-md" : "",
397
- "border-line-primary"
398
- )
399
- }
400
- ),
401
- !item.isLast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-line-primary absolute top-1/2 left-0 h-1/2 w-1/2 border-l" })
402
- ] })
403
- ] }),
404
- /* @__PURE__ */ jsxRuntime.jsxs(
405
- "div",
406
- {
407
- className: "text-uk-md z-10 flex w-full items-center justify-between gap-2 px-2 whitespace-nowrap",
408
- style: { paddingLeft: `${item.indent * 1.25 + 0.5}rem` },
409
- children: [
410
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
411
- alwaysShowExpand && hasDescendants(item.id) && !expandedItems.has(item.id) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
412
- /* @__PURE__ */ jsxRuntime.jsx(
413
- "button",
414
- {
415
- onClick: (e) => {
416
- e.stopPropagation();
417
- toggleItem(item.id);
418
- },
419
- className: "flex size-4 cursor-pointer items-center justify-center",
420
- children: /* @__PURE__ */ jsxRuntime.jsx(
421
- lucideReact.ChevronDown,
422
- {
423
- className: chunkOHIB3TEN_cjs.cn(
424
- "size-4 -rotate-90 transition-transform",
425
- item.disable && "text-icon-tertiary"
426
- )
427
- }
428
- )
429
- }
430
- ),
431
- /* @__PURE__ */ jsxRuntime.jsx(
432
- "div",
433
- {
434
- className: chunkOHIB3TEN_cjs.cn(
435
- "flex size-4 items-center justify-center",
436
- item.disable && "text-icon-tertiary"
437
- ),
438
- children: getIcon(item)
439
- }
440
- )
441
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex size-4 items-center justify-center", children: [
442
- item.isCollapsible && /* @__PURE__ */ jsxRuntime.jsx(
443
- "button",
444
- {
445
- onClick: (e) => {
446
- e.stopPropagation();
447
- toggleItem(item.id);
448
- },
449
- className: "absolute z-20 flex cursor-pointer items-center justify-center opacity-0 transition-opacity group-hover:opacity-100",
450
- children: /* @__PURE__ */ jsxRuntime.jsx(
451
- lucideReact.ChevronDown,
452
- {
453
- className: chunkOHIB3TEN_cjs.cn(
454
- "size-4 transition-transform",
455
- !expandedItems.has(item.id) && "-rotate-90",
456
- item.disable && "text-icon-tertiary"
457
- )
458
- }
459
- )
460
- }
461
- ),
462
- /* @__PURE__ */ jsxRuntime.jsx(
463
- "div",
464
- {
465
- className: chunkOHIB3TEN_cjs.cn(
466
- "cursor-pointer transition-opacity",
467
- item.isCollapsible && "group-hover:opacity-0",
468
- item.disable && "text-icon-tertiary"
469
- ),
470
- children: getIcon(item)
471
- }
472
- )
473
- ] }),
474
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkOHIB3TEN_cjs.cn("truncate", item.disable && "text-text-tertiary"), children: renderLabel(item.label) })
475
- ] }),
476
- item.actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", onClick: (e) => e.stopPropagation(), children: item.actions })
477
- ]
478
- }
479
- )
480
- ]
481
- },
482
- item.id
483
- )) })
484
- ] });
485
- }
486
-
487
- exports.TreeView = TreeView;