@vuer-ai/vuer-uikit 0.0.98 → 0.0.100

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 (78) hide show
  1. package/dist/SyncScroll/SyncScroll.cjs +9 -9
  2. package/dist/SyncScroll/SyncScroll.mjs +2 -2
  3. package/dist/SyncScroll/index.cjs +9 -9
  4. package/dist/SyncScroll/index.mjs +2 -2
  5. package/dist/chunk-AIYM5PFP.cjs +66 -0
  6. package/dist/chunk-OWEYAVGT.mjs +62 -0
  7. package/dist/{chunk-7GWDO25E.cjs → chunk-XBTBTLID.cjs} +2 -2
  8. package/dist/{chunk-TTYSYGVE.mjs → chunk-XGXWOY3U.mjs} +2 -2
  9. package/dist/dial/DialPanel.cjs +23 -22
  10. package/dist/dial/DialPanel.mjs +22 -21
  11. package/dist/dial/index.cjs +39 -38
  12. package/dist/dial/index.mjs +22 -21
  13. package/dist/dial/wrapped-inputs/ControlledInputs.cjs +26 -25
  14. package/dist/dial/wrapped-inputs/ControlledInputs.mjs +22 -21
  15. package/dist/dial/wrapped-inputs/DialInputs.cjs +33 -32
  16. package/dist/dial/wrapped-inputs/DialInputs.mjs +22 -21
  17. package/dist/dial/wrapped-inputs/DialVectorInput.cjs +23 -22
  18. package/dist/dial/wrapped-inputs/DialVectorInput.mjs +22 -21
  19. package/dist/dial/wrapped-inputs/index.cjs +38 -37
  20. package/dist/dial/wrapped-inputs/index.mjs +22 -21
  21. package/dist/highlight-cursor/cursor-provider.cjs +3 -3
  22. package/dist/highlight-cursor/cursor-provider.mjs +2 -2
  23. package/dist/highlight-cursor/enhanced-components.cjs +1 -1
  24. package/dist/highlight-cursor/enhanced-components.mjs +1 -1
  25. package/dist/highlight-cursor/index.cjs +3 -3
  26. package/dist/highlight-cursor/index.mjs +2 -2
  27. package/dist/index.cjs +151 -138
  28. package/dist/index.css +7 -1
  29. package/dist/index.d.cts +1 -0
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.mjs +22 -21
  32. package/dist/ui/DialBadge.cjs +28 -0
  33. package/dist/ui/DialBadge.d.cts +33 -0
  34. package/dist/ui/DialBadge.d.ts +33 -0
  35. package/dist/ui/DialBadge.mjs +11 -0
  36. package/dist/ui/UIKitBadge.cjs +5 -5
  37. package/dist/ui/UIKitBadge.mjs +1 -1
  38. package/dist/ui/badge.d.cts +1 -1
  39. package/dist/ui/badge.d.ts +1 -1
  40. package/dist/ui/index.cjs +77 -64
  41. package/dist/ui/index.d.cts +1 -0
  42. package/dist/ui/index.d.ts +1 -0
  43. package/dist/ui/index.mjs +18 -17
  44. package/dist/ui/inputs/index.cjs +15 -15
  45. package/dist/ui/inputs/index.mjs +3 -3
  46. package/dist/ui/inputs/input.d.cts +1 -1
  47. package/dist/ui/inputs/input.d.ts +1 -1
  48. package/dist/ui/inputs/number-inputs/index.cjs +10 -10
  49. package/dist/ui/inputs/number-inputs/index.mjs +2 -2
  50. package/dist/ui/select.d.cts +1 -1
  51. package/dist/ui/select.d.ts +1 -1
  52. package/dist/ui/textarea.d.cts +1 -1
  53. package/dist/ui/textarea.d.ts +1 -1
  54. package/dist/ui/tree-view-legacy.cjs +8 -8
  55. package/dist/ui/tree-view-legacy.mjs +4 -4
  56. package/dist/ui/waterfall/index.cjs +6 -6
  57. package/dist/ui/waterfall/index.mjs +5 -5
  58. package/package.json +2 -7
  59. package/src/ui/DialBadge.tsx +97 -0
  60. package/src/ui/index.ts +1 -0
  61. package/cli/dial-cli.js +0 -833
  62. package/dist/chunk-4KWGGESI.cjs +0 -494
  63. package/dist/chunk-A5LCX2UQ.cjs +0 -208
  64. package/dist/chunk-BEJIZ56L.mjs +0 -300
  65. package/dist/chunk-C7VGRU3O.mjs +0 -283
  66. package/dist/chunk-O66RESRR.cjs +0 -285
  67. package/dist/chunk-VA3PEYFM.mjs +0 -489
  68. package/dist/chunk-VBBJSIY7.cjs +0 -308
  69. package/dist/chunk-WWGF6TBZ.mjs +0 -206
  70. package/dist/chunk-ZGN4UEJR.cjs +0 -679
  71. package/dist/chunk-ZQLRMOUW.mjs +0 -661
  72. package/src/cli/dial-cli.ts +0 -1133
  73. package/dist/{chunk-XMUP5MIM.mjs → chunk-G3EIVAVR.mjs} +0 -0
  74. package/dist/{chunk-7IS37C3P.cjs → chunk-K4I4YU6N.cjs} +1 -1
  75. package/dist/{chunk-OX2U5RAG.cjs → chunk-KFPS5CCR.cjs} +0 -0
  76. package/dist/{chunk-2OZK5DY5.mjs → chunk-KXKEZ3MH.mjs} +1 -1
  77. package/dist/{chunk-LJMNHTTG.cjs → chunk-OEI7NCF6.cjs} +4 -4
  78. package/dist/{chunk-W4JCKCW7.mjs → chunk-QHPFLC2O.mjs} +4 -4
@@ -1,494 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk2CZEFXEW_cjs = require('./chunk-2CZEFXEW.cjs');
4
- var chunkVBBJSIY7_cjs = require('./chunk-VBBJSIY7.cjs');
5
- var chunk3UEVUYFQ_cjs = require('./chunk-3UEVUYFQ.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
- // External search state props
25
- searchQuery: externalSearchQuery,
26
- onSearchQueryChange: externalOnSearchQueryChange,
27
- isCaseSensitive: externalIsCaseSensitive,
28
- onIsCaseSensitiveChange: externalOnIsCaseSensitiveChange,
29
- isRegex: externalIsRegex,
30
- onIsRegexChange: externalOnIsRegexChange
31
- }) {
32
- const [expandedItems, setExpandedItems] = react.useState(() => {
33
- const initial = /* @__PURE__ */ new Set();
34
- data.forEach((item) => {
35
- if (item.isCollapsible) initial.add(item.id);
36
- });
37
- return initial;
38
- });
39
- const [internalSearchQuery, setInternalSearchQuery] = react.useState("");
40
- const [internalIsCaseSensitive, setInternalIsCaseSensitive] = react.useState(false);
41
- const [internalIsRegex, setInternalIsRegex] = react.useState(false);
42
- const [isRegexValid, setIsRegexValid] = react.useState(true);
43
- const searchQuery = externalSearchQuery ?? internalSearchQuery;
44
- const setSearchQuery = externalOnSearchQueryChange ?? setInternalSearchQuery;
45
- const isCaseSensitive = externalIsCaseSensitive ?? internalIsCaseSensitive;
46
- const isRegex = externalIsRegex ?? internalIsRegex;
47
- const setIsCaseSensitive = (value) => {
48
- if (externalOnIsCaseSensitiveChange) {
49
- externalOnIsCaseSensitiveChange(value);
50
- } else {
51
- setInternalIsCaseSensitive(value);
52
- }
53
- };
54
- const setIsRegex = (value) => {
55
- if (externalOnIsRegexChange) {
56
- externalOnIsRegexChange(value);
57
- } else {
58
- setInternalIsRegex(value);
59
- }
60
- };
61
- const toggleItem = (id) => {
62
- setExpandedItems((prev) => {
63
- const newSet = new Set(prev);
64
- if (newSet.has(id)) {
65
- newSet.delete(id);
66
- } else {
67
- newSet.add(id);
68
- }
69
- return newSet;
70
- });
71
- };
72
- const handleItemSelect = (id) => {
73
- if (isSelectable && onSelectChange) {
74
- onSelectChange(selectedItemId === id ? null : id);
75
- }
76
- };
77
- const hasDescendants = (itemId) => {
78
- return (childrenMap.get(itemId) || []).length > 0;
79
- };
80
- const childrenMap = react.useMemo(() => {
81
- const map = /* @__PURE__ */ new Map();
82
- data.forEach((item) => {
83
- if (!map.has(item.parentId)) {
84
- map.set(item.parentId, []);
85
- }
86
- map.get(item.parentId).push(item);
87
- });
88
- return map;
89
- }, [data]);
90
- const dataWithMeta = react.useMemo(() => {
91
- const dataMap = new Map(data.map((item) => [item.id, item]));
92
- const getAncestors = (item) => {
93
- const ancestors = [];
94
- let current = item.parentId;
95
- while (current) {
96
- const parent = dataMap.get(current);
97
- if (parent) {
98
- ancestors.unshift(parent);
99
- current = parent.parentId;
100
- } else {
101
- break;
102
- }
103
- }
104
- return ancestors;
105
- };
106
- const sortedData = [];
107
- const visited = /* @__PURE__ */ new Set();
108
- const traverseNode = (nodeId, depth = 0) => {
109
- const children = childrenMap.get(nodeId) || [];
110
- children.forEach((child) => {
111
- if (!visited.has(child.id)) {
112
- visited.add(child.id);
113
- sortedData.push(child);
114
- traverseNode(child.id, depth + 1);
115
- }
116
- });
117
- };
118
- traverseNode(null);
119
- return sortedData.map((item) => {
120
- const siblings = childrenMap.get(item.parentId) || [];
121
- const isLast = siblings.length > 0 && siblings[siblings.length - 1].id === item.id;
122
- const ancestors = getAncestors(item);
123
- const indent = ancestors.length;
124
- return { ...item, indent, isLast, ancestors };
125
- });
126
- }, [data, childrenMap]);
127
- const visibleData = react.useMemo(() => {
128
- const dataMap = new Map(data.map((item) => [item.id, item]));
129
- if (!searchQuery) {
130
- const isVisible = (item) => {
131
- return item.ancestors.every((ancestor) => expandedItems.has(ancestor.id));
132
- };
133
- return dataWithMeta.filter(isVisible);
134
- }
135
- const matchingAndAncestorIds = /* @__PURE__ */ new Set();
136
- let regex = null;
137
- if (isRegex) {
138
- try {
139
- regex = new RegExp(searchQuery, isCaseSensitive ? "" : "i");
140
- if (!isRegexValid) setIsRegexValid(true);
141
- } catch {
142
- if (isRegexValid) setIsRegexValid(false);
143
- return [];
144
- }
145
- }
146
- data.forEach((item) => {
147
- let labelMatches = false;
148
- if (regex) {
149
- labelMatches = regex.test(item.label);
150
- } else {
151
- const source = isCaseSensitive ? item.label : item.label.toLowerCase();
152
- const query = isCaseSensitive ? searchQuery : searchQuery.toLowerCase();
153
- labelMatches = source.includes(query);
154
- }
155
- if (labelMatches) {
156
- matchingAndAncestorIds.add(item.id);
157
- let current = item.parentId;
158
- while (current) {
159
- const parent = dataMap.get(current);
160
- if (parent) {
161
- matchingAndAncestorIds.add(parent.id);
162
- current = parent.parentId;
163
- } else {
164
- break;
165
- }
166
- }
167
- }
168
- });
169
- return dataWithMeta.filter((item) => matchingAndAncestorIds.has(item.id));
170
- }, [searchQuery, dataWithMeta, expandedItems, isCaseSensitive, isRegex, isRegexValid, data]);
171
- const searchResultsCount = react.useMemo(() => {
172
- if (!searchQuery || !isRegexValid) return 0;
173
- let count = 0;
174
- let regex = null;
175
- if (isRegex) {
176
- try {
177
- regex = new RegExp(searchQuery, isCaseSensitive ? "" : "i");
178
- } catch {
179
- return 0;
180
- }
181
- }
182
- data.forEach((item) => {
183
- let labelMatches = false;
184
- if (regex) {
185
- labelMatches = regex.test(item.label);
186
- } else {
187
- const source = isCaseSensitive ? item.label : item.label.toLowerCase();
188
- const query = isCaseSensitive ? searchQuery : searchQuery.toLowerCase();
189
- labelMatches = source.includes(query);
190
- }
191
- if (labelMatches) {
192
- count++;
193
- }
194
- });
195
- return count;
196
- }, [searchQuery, data, isCaseSensitive, isRegex, isRegexValid]);
197
- react.useEffect(() => {
198
- onVisibleDataChange?.(visibleData);
199
- }, [visibleData, onVisibleDataChange]);
200
- const renderLabel = (label) => {
201
- if (!searchQuery || !isRegexValid) {
202
- return label;
203
- }
204
- let regex;
205
- try {
206
- regex = new RegExp(`(${searchQuery})`, isCaseSensitive ? "g" : "gi");
207
- } catch {
208
- return label;
209
- }
210
- const parts = label.split(regex);
211
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: parts.map(
212
- (part, i) => i % 2 === 1 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-uk-xs bg-accent-warning", children: part }, i) : part
213
- ) });
214
- };
215
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkOHIB3TEN_cjs.cn("flex flex-col", className), children: [
216
- isSearchable && /* @__PURE__ */ jsxRuntime.jsx(
217
- TreeSearchBar,
218
- {
219
- searchQuery,
220
- setSearchQuery,
221
- isCaseSensitive,
222
- setIsCaseSensitive,
223
- isRegex,
224
- setIsRegex,
225
- isRegexValid,
226
- searchResultsCount
227
- }
228
- ),
229
- /* @__PURE__ */ jsxRuntime.jsx(
230
- TreeEntries,
231
- {
232
- visibleData,
233
- hoveredId,
234
- onItemHover,
235
- isSelectable,
236
- selectedItemId,
237
- handleItemSelect,
238
- expandedItems,
239
- toggleItem,
240
- alwaysShowExpand,
241
- hasDescendants,
242
- getIcon,
243
- renderLabel,
244
- dataWithMeta,
245
- useSyncScroll
246
- }
247
- )
248
- ] });
249
- }
250
- function TreeSearchBar({
251
- searchQuery,
252
- setSearchQuery,
253
- isCaseSensitive,
254
- setIsCaseSensitive,
255
- isRegex,
256
- setIsRegex,
257
- isRegexValid,
258
- searchResultsCount
259
- }) {
260
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "shrink-0", children: [
261
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 py-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
262
- chunk3UEVUYFQ_cjs.InputRoot,
263
- {
264
- type: "text",
265
- placeholder: "Search...",
266
- size: "md",
267
- className: "flex-1",
268
- inputClassName: chunkOHIB3TEN_cjs.cn(!isRegexValid && "text-red-500"),
269
- value: searchQuery,
270
- onChange: (e) => setSearchQuery(e.target.value),
271
- children: [
272
- /* @__PURE__ */ jsxRuntime.jsx(chunk3UEVUYFQ_cjs.InputSlot, { side: "left", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "text-text-secondary size-4 stroke-1" }) }),
273
- /* @__PURE__ */ jsxRuntime.jsx(chunk3UEVUYFQ_cjs.InputSlot, { side: "right", children: /* @__PURE__ */ jsxRuntime.jsxs(chunk2CZEFXEW_cjs.TooltipProvider, { delayDuration: 200, children: [
274
- /* @__PURE__ */ jsxRuntime.jsxs(chunk2CZEFXEW_cjs.Tooltip, { children: [
275
- /* @__PURE__ */ jsxRuntime.jsx(chunk2CZEFXEW_cjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
276
- "button",
277
- {
278
- onClick: () => setIsCaseSensitive((prev) => !prev),
279
- className: chunkOHIB3TEN_cjs.cn(
280
- "rounded-uk-sm mr-1 p-1",
281
- isCaseSensitive ? "bg-shadow-secondary" : ""
282
- ),
283
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CaseSensitive, { className: "size-4" })
284
- }
285
- ) }),
286
- /* @__PURE__ */ jsxRuntime.jsx(chunk2CZEFXEW_cjs.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Case Sensitive" }) })
287
- ] }),
288
- /* @__PURE__ */ jsxRuntime.jsxs(chunk2CZEFXEW_cjs.Tooltip, { children: [
289
- /* @__PURE__ */ jsxRuntime.jsx(chunk2CZEFXEW_cjs.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
290
- "button",
291
- {
292
- onClick: () => setIsRegex((prev) => !prev),
293
- className: chunkOHIB3TEN_cjs.cn("rounded-uk-sm p-1", isRegex && "bg-shadow-secondary"),
294
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Regex, { className: "size-4" })
295
- }
296
- ) }),
297
- /* @__PURE__ */ jsxRuntime.jsx(chunk2CZEFXEW_cjs.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Use Regular Expression" }) })
298
- ] })
299
- ] }) })
300
- ]
301
- }
302
- ) }),
303
- 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: [
304
- searchResultsCount,
305
- " result",
306
- searchResultsCount !== 1 ? "s" : ""
307
- ] }) })
308
- ] });
309
- }
310
- function TreeEntryItem({
311
- item,
312
- hoveredId,
313
- onItemHover,
314
- isSelectable,
315
- selectedItemId,
316
- handleItemSelect,
317
- expandedItems,
318
- toggleItem,
319
- alwaysShowExpand,
320
- hasDescendants,
321
- getIcon,
322
- renderLabel,
323
- dataWithMeta
324
- }) {
325
- return /* @__PURE__ */ jsxRuntime.jsxs(
326
- "div",
327
- {
328
- className: chunkOHIB3TEN_cjs.cn(
329
- "group relative flex h-[32px] items-center",
330
- isSelectable && "rounded-uk-md",
331
- !item.disable && "cursor-pointer",
332
- hoveredId === item.id && !item.disable && "bg-bg-secondary",
333
- isSelectable && selectedItemId === item.id && "bg-brand-primary text-text-withbg"
334
- ),
335
- onMouseEnter: () => onItemHover?.(item.id),
336
- onMouseLeave: () => onItemHover?.(null),
337
- onClick: () => !item.disable && handleItemSelect(item.id),
338
- children: [
339
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 left-[-0.28rem] z-0 flex h-full items-center", children: [
340
- item.ancestors.map((ancestor, index) => {
341
- const parentIsLast = dataWithMeta.find((d) => d.id === ancestor.id)?.isLast;
342
- return /* @__PURE__ */ jsxRuntime.jsx(
343
- "div",
344
- {
345
- className: chunkOHIB3TEN_cjs.cn(
346
- "h-full w-[1.25rem]",
347
- parentIsLast ? "" : "border-l",
348
- "border-line-primary"
349
- )
350
- },
351
- index
352
- );
353
- }),
354
- item.indent > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-full w-[1.24rem]", children: [
355
- /* @__PURE__ */ jsxRuntime.jsx(
356
- "div",
357
- {
358
- className: chunkOHIB3TEN_cjs.cn(
359
- "absolute top-0 left-0 h-1/2 w-1/2 border-b border-l",
360
- item.isLast ? "rounded-bl-md" : "",
361
- "border-line-primary"
362
- )
363
- }
364
- ),
365
- !item.isLast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-line-primary absolute top-1/2 left-0 h-1/2 w-1/2 border-l" })
366
- ] })
367
- ] }),
368
- /* @__PURE__ */ jsxRuntime.jsxs(
369
- "div",
370
- {
371
- className: "text-uk-md z-10 flex w-full items-center justify-between gap-2 px-2 whitespace-nowrap",
372
- style: { paddingLeft: `${item.indent * 1.25 + 0.5}rem` },
373
- children: [
374
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
375
- alwaysShowExpand && hasDescendants(item.id) && !expandedItems.has(item.id) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
376
- /* @__PURE__ */ jsxRuntime.jsx(
377
- "button",
378
- {
379
- onClick: (e) => {
380
- e.stopPropagation();
381
- toggleItem(item.id);
382
- },
383
- className: "flex size-4 cursor-pointer items-center justify-center",
384
- children: /* @__PURE__ */ jsxRuntime.jsx(
385
- lucideReact.ChevronDown,
386
- {
387
- className: chunkOHIB3TEN_cjs.cn(
388
- "size-4 -rotate-90 transition-transform",
389
- item.disable && "text-icon-tertiary"
390
- )
391
- }
392
- )
393
- }
394
- ),
395
- /* @__PURE__ */ jsxRuntime.jsx(
396
- "div",
397
- {
398
- className: chunkOHIB3TEN_cjs.cn(
399
- "flex size-4 items-center justify-center",
400
- item.disable && "text-icon-tertiary"
401
- ),
402
- children: getIcon(item)
403
- }
404
- )
405
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex size-4 items-center justify-center", children: [
406
- item.isCollapsible && /* @__PURE__ */ jsxRuntime.jsx(
407
- "button",
408
- {
409
- onClick: (e) => {
410
- e.stopPropagation();
411
- toggleItem(item.id);
412
- },
413
- className: "absolute z-20 flex cursor-pointer items-center justify-center opacity-0 transition-opacity group-hover:opacity-100",
414
- children: /* @__PURE__ */ jsxRuntime.jsx(
415
- lucideReact.ChevronDown,
416
- {
417
- className: chunkOHIB3TEN_cjs.cn(
418
- "size-4 transition-transform",
419
- !expandedItems.has(item.id) && "-rotate-90",
420
- item.disable && "text-icon-tertiary"
421
- )
422
- }
423
- )
424
- }
425
- ),
426
- /* @__PURE__ */ jsxRuntime.jsx(
427
- "div",
428
- {
429
- className: chunkOHIB3TEN_cjs.cn(
430
- "cursor-pointer transition-opacity",
431
- item.isCollapsible && "group-hover:opacity-0",
432
- item.disable && "text-icon-tertiary"
433
- ),
434
- children: getIcon(item)
435
- }
436
- )
437
- ] }),
438
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkOHIB3TEN_cjs.cn("truncate", item.disable && "text-text-tertiary"), children: renderLabel(item.label) })
439
- ] }),
440
- item.actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", onClick: (e) => e.stopPropagation(), children: item.actions })
441
- ]
442
- }
443
- )
444
- ]
445
- },
446
- item.id
447
- );
448
- }
449
- function TreeEntries({
450
- visibleData,
451
- hoveredId,
452
- onItemHover,
453
- isSelectable,
454
- selectedItemId,
455
- handleItemSelect,
456
- expandedItems,
457
- toggleItem,
458
- alwaysShowExpand,
459
- hasDescendants,
460
- getIcon,
461
- renderLabel,
462
- dataWithMeta,
463
- useSyncScroll = false,
464
- className
465
- }) {
466
- const content = visibleData.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
467
- TreeEntryItem,
468
- {
469
- item,
470
- hoveredId,
471
- onItemHover,
472
- isSelectable,
473
- selectedItemId,
474
- handleItemSelect,
475
- expandedItems,
476
- toggleItem,
477
- alwaysShowExpand,
478
- hasDescendants,
479
- getIcon,
480
- renderLabel,
481
- dataWithMeta
482
- },
483
- item.id
484
- ));
485
- if (useSyncScroll) {
486
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVBBJSIY7_cjs.SyncScroll, { className: chunkOHIB3TEN_cjs.cn("scrollbar-track-transparent flex-1", className), children: content });
487
- }
488
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkOHIB3TEN_cjs.cn("flex-1 overflow-y-auto", className), children: content });
489
- }
490
-
491
- exports.TreeEntries = TreeEntries;
492
- exports.TreeEntryItem = TreeEntryItem;
493
- exports.TreeSearchBar = TreeSearchBar;
494
- exports.TreeView = TreeView;
@@ -1,208 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkOHIB3TEN_cjs = require('./chunk-OHIB3TEN.cjs');
4
- var chunkP6DICGAV_cjs = require('./chunk-P6DICGAV.cjs');
5
- var react = require('react');
6
- var reactDom = require('react-dom');
7
- var jsxRuntime = require('react/jsx-runtime');
8
-
9
- var CursorProvider = ({
10
- children,
11
- maxOffsetX = 5,
12
- maxOffsetY = 20,
13
- cursorSize = 20,
14
- transitionDuration = 100,
15
- cursorClassName,
16
- className,
17
- as: Component = "div",
18
- ...props
19
- }) => {
20
- const [isClient, setIsClient] = react.useState(false);
21
- const [isMouseInside, setIsMouseInside] = react.useState(false);
22
- const [mousePosition, setMousePosition] = react.useState({ x: 0, y: 0 });
23
- const [hoveredElementId, setHoveredElementId] = react.useState(null);
24
- const [elementDimensions, setElementDimensions] = react.useState({
25
- width: 0,
26
- height: 0,
27
- x: 0,
28
- y: 0,
29
- right: 0,
30
- bottom: 0
31
- });
32
- const hoveredElementRef = react.useRef(null);
33
- react.useEffect(() => {
34
- setIsClient(true);
35
- }, []);
36
- react.useEffect(() => {
37
- if (!isClient) return;
38
- const handleMouseMove = (e) => {
39
- setMousePosition({ x: e.clientX, y: e.clientY });
40
- };
41
- document.addEventListener("mousemove", handleMouseMove);
42
- return () => document.removeEventListener("mousemove", handleMouseMove);
43
- }, [isClient]);
44
- const handleMouseEnter = react.useCallback(() => {
45
- setIsMouseInside(true);
46
- }, []);
47
- const handleMouseLeave = react.useCallback(() => {
48
- setIsMouseInside(false);
49
- setHoveredElementId(null);
50
- hoveredElementRef.current = null;
51
- }, []);
52
- const checkMouseInElement = react.useCallback(() => {
53
- if (!hoveredElementRef.current || !hoveredElementId) {
54
- return;
55
- }
56
- const rect = hoveredElementRef.current.getBoundingClientRect();
57
- setElementDimensions({
58
- width: rect.width,
59
- height: rect.height,
60
- x: rect.left,
61
- y: rect.top,
62
- right: rect.right,
63
- bottom: rect.bottom
64
- });
65
- const isInside = mousePosition.x >= rect.left && mousePosition.x <= rect.right && mousePosition.y >= rect.top && mousePosition.y <= rect.bottom;
66
- if (!isInside) {
67
- setHoveredElementId(null);
68
- hoveredElementRef.current = null;
69
- }
70
- }, [mousePosition, hoveredElementId]);
71
- react.useEffect(() => {
72
- if (!isClient) return;
73
- const handleScroll = () => {
74
- checkMouseInElement();
75
- };
76
- document.addEventListener("scroll", handleScroll, { passive: true, capture: true });
77
- return () => {
78
- document.removeEventListener("scroll", handleScroll, { capture: true });
79
- };
80
- }, [checkMouseInElement, isClient]);
81
- const registerHoveredElement = react.useCallback(
82
- (id, dimensions, element) => {
83
- setHoveredElementId(id);
84
- setElementDimensions({
85
- width: dimensions.width,
86
- height: dimensions.height,
87
- x: dimensions.left,
88
- y: dimensions.top,
89
- right: dimensions.right,
90
- bottom: dimensions.bottom
91
- });
92
- if (element) {
93
- hoveredElementRef.current = element;
94
- }
95
- },
96
- []
97
- );
98
- const unregisterHoveredElement = react.useCallback(() => {
99
- setHoveredElementId(null);
100
- hoveredElementRef.current = null;
101
- }, []);
102
- const updateElementDimensions = react.useCallback(
103
- (dimensions) => {
104
- if (hoveredElementId) {
105
- setElementDimensions({
106
- width: dimensions.width,
107
- height: dimensions.height,
108
- x: dimensions.left,
109
- y: dimensions.top,
110
- right: dimensions.right,
111
- bottom: dimensions.bottom
112
- });
113
- }
114
- },
115
- [hoveredElementId]
116
- );
117
- const getCursorPosition = () => {
118
- if (!hoveredElementId) {
119
- return {
120
- x: mousePosition.x - cursorSize / 2,
121
- y: mousePosition.y - cursorSize / 2
122
- };
123
- }
124
- const elementCenterX = elementDimensions.x + elementDimensions.width / 2;
125
- const elementCenterY = elementDimensions.y + elementDimensions.height / 2;
126
- const offsetX = (mousePosition.x - elementCenterX) * 0.1;
127
- const offsetY = (mousePosition.y - elementCenterY) * 0.1;
128
- const boundedOffsetX = Math.max(-maxOffsetX, Math.min(maxOffsetX, offsetX));
129
- const boundedOffsetY = Math.max(-maxOffsetY, Math.min(maxOffsetY, offsetY));
130
- return {
131
- x: elementDimensions.x + boundedOffsetX,
132
- y: elementDimensions.y + boundedOffsetY
133
- };
134
- };
135
- const contextValue = react.useMemo(
136
- () => ({
137
- // State values that change during component lifecycle
138
- mousePosition,
139
- hoveredElementId,
140
- elementDimensions,
141
- // Callbacks that should be stable references
142
- registerHoveredElement,
143
- unregisterHoveredElement,
144
- updateElementDimensions
145
- }),
146
- [
147
- mousePosition,
148
- hoveredElementId,
149
- elementDimensions,
150
- registerHoveredElement,
151
- unregisterHoveredElement,
152
- updateElementDimensions
153
- ]
154
- );
155
- const cursorPosition = getCursorPosition();
156
- const cursorStyleObject = react.useMemo(
157
- () => ({
158
- left: cursorPosition.x,
159
- top: cursorPosition.y,
160
- width: hoveredElementId ? elementDimensions.width > 0 ? elementDimensions.width : cursorSize : cursorSize,
161
- height: hoveredElementId ? elementDimensions.height > 0 ? elementDimensions.height : cursorSize : cursorSize,
162
- willChange: "transform, width, height"
163
- }),
164
- [
165
- cursorPosition.x,
166
- cursorPosition.y,
167
- hoveredElementId,
168
- elementDimensions.width,
169
- elementDimensions.height,
170
- cursorSize
171
- ]
172
- );
173
- let styleClass;
174
- if (hoveredElementId) {
175
- styleClass = `opacity-[0.05] rounded-uk-md transition-[width,height,left,top] duration-${transitionDuration} ease-out`;
176
- } else {
177
- styleClass = `opacity-90 rounded-full z-10 transition-[width,height,left,top] duration-${transitionDuration} ease-out transition-opacity duration-${transitionDuration}`;
178
- }
179
- const cursorElement = isClient && isMouseInside && /* @__PURE__ */ jsxRuntime.jsx(
180
- "div",
181
- {
182
- className: `pointer-events-none fixed ${styleClass} ${hoveredElementId ? "" : cursorClassName || ""}`,
183
- style: {
184
- ...cursorStyleObject,
185
- backgroundColor: "var(--shadow-tertiary)"
186
- }
187
- }
188
- );
189
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
190
- isClient && typeof document !== "undefined" && document.body && cursorElement && reactDom.createPortal(cursorElement, document.body),
191
- /* @__PURE__ */ jsxRuntime.jsx(chunkP6DICGAV_cjs.CursorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
192
- Component,
193
- {
194
- ...props,
195
- className: chunkOHIB3TEN_cjs.cn(className),
196
- style: {
197
- cursor: isMouseInside && !hoveredElementId ? "none" : "auto",
198
- ...props.style
199
- },
200
- onMouseEnter: handleMouseEnter,
201
- onMouseLeave: handleMouseLeave,
202
- children
203
- }
204
- ) })
205
- ] });
206
- };
207
-
208
- exports.CursorProvider = CursorProvider;