@keenmate/svelte-treeview 4.4.0 → 4.5.0
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/README.md +39 -4
- package/dist/components/Node.svelte +249 -12
- package/dist/components/Node.svelte.d.ts +17 -0
- package/dist/components/RenderCoordinator.svelte.d.ts +29 -0
- package/dist/components/RenderCoordinator.svelte.js +115 -0
- package/dist/components/Tree.svelte +855 -38
- package/dist/components/Tree.svelte.d.ts +160 -8
- package/dist/constants.generated.d.ts +6 -0
- package/dist/constants.generated.js +8 -0
- package/dist/global-api.d.ts +35 -0
- package/dist/global-api.js +36 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.js +5 -0
- package/dist/logger.d.ts +56 -0
- package/dist/logger.js +159 -0
- package/dist/ltree/indexer.d.ts +0 -1
- package/dist/ltree/indexer.js +23 -19
- package/dist/ltree/ltree.svelte.d.ts +1 -1
- package/dist/ltree/ltree.svelte.js +593 -30
- package/dist/ltree/types.d.ts +62 -0
- package/dist/perf-logger.d.ts +70 -0
- package/dist/perf-logger.js +196 -0
- package/dist/styles/main.scss +437 -4
- package/dist/styles.css +329 -3
- package/dist/styles.css.map +1 -1
- package/dist/vendor/loglevel/index.d.ts +2 -0
- package/dist/vendor/loglevel/index.js +9 -0
- package/dist/vendor/loglevel/loglevel-esm.d.ts +2 -0
- package/dist/vendor/loglevel/loglevel-esm.js +349 -0
- package/dist/vendor/loglevel/loglevel-plugin-prefix-esm.d.ts +7 -0
- package/dist/vendor/loglevel/loglevel-plugin-prefix-esm.js +132 -0
- package/dist/vendor/loglevel/loglevel-plugin-prefix.d.ts +2 -0
- package/dist/vendor/loglevel/loglevel-plugin-prefix.js +149 -0
- package/dist/vendor/loglevel/loglevel.js +357 -0
- package/dist/vendor/loglevel/prefix.d.ts +2 -0
- package/dist/vendor/loglevel/prefix.js +9 -0
- package/package.json +3 -2
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Index, SearchOptions } from 'flexsearch';
|
|
2
2
|
import { type LTreeNode } from '../ltree/ltree-node.svelte.js';
|
|
3
|
-
import { type InsertArrayResult, type ContextMenuItem } from '../ltree/types.js';
|
|
3
|
+
import { type InsertArrayResult, type ContextMenuItem, type DropPosition, type DragDropMode, type DropOperation } from '../ltree/types.js';
|
|
4
|
+
import { type RenderStats } from './RenderCoordinator.svelte.js';
|
|
5
|
+
import '../global-api.js';
|
|
4
6
|
declare function $$render<T>(): {
|
|
5
7
|
props: {
|
|
6
8
|
idMember: string;
|
|
@@ -17,6 +19,7 @@ declare function $$render<T>(): {
|
|
|
17
19
|
getDisplayValueCallback?: (node: LTreeNode<T>) => string;
|
|
18
20
|
searchValueMember?: string | null | undefined;
|
|
19
21
|
getSearchValueCallback?: (node: LTreeNode<T>) => string;
|
|
22
|
+
orderMember?: string | null | undefined;
|
|
20
23
|
treeId?: string | null | undefined;
|
|
21
24
|
treePathSeparator?: string | null | undefined;
|
|
22
25
|
sortCallback?: (items: LTreeNode<T>[]) => LTreeNode<T>[];
|
|
@@ -29,6 +32,8 @@ declare function $$render<T>(): {
|
|
|
29
32
|
treeFooter?: any;
|
|
30
33
|
noDataFound?: any;
|
|
31
34
|
contextMenu?: any;
|
|
35
|
+
dropPlaceholder?: any;
|
|
36
|
+
loadingPlaceholder?: any;
|
|
32
37
|
expandLevel?: number | null | undefined;
|
|
33
38
|
shouldToggleOnNodeClick?: boolean | null | undefined;
|
|
34
39
|
initializeIndexCallback?: () => Index;
|
|
@@ -38,10 +43,33 @@ declare function $$render<T>(): {
|
|
|
38
43
|
indexerTimeout?: number | null | undefined;
|
|
39
44
|
shouldDisplayDebugInformation?: boolean;
|
|
40
45
|
shouldDisplayContextMenuInDebugMode?: boolean;
|
|
46
|
+
isLoading?: boolean;
|
|
47
|
+
progressiveRender?: boolean;
|
|
48
|
+
renderBatchSize?: number;
|
|
49
|
+
isRendering?: boolean;
|
|
50
|
+
onRenderStart?: () => void;
|
|
51
|
+
onRenderProgress?: (stats: RenderStats) => void;
|
|
52
|
+
onRenderComplete?: (stats: RenderStats) => void;
|
|
53
|
+
dragDropMode?: DragDropMode;
|
|
54
|
+
dropZoneMode?: "floating" | "glow";
|
|
55
|
+
dropZoneLayout?: "around" | "above" | "below" | "wave" | "wave2";
|
|
56
|
+
dropZoneStart?: number | string;
|
|
57
|
+
dropZoneMaxWidth?: number;
|
|
58
|
+
allowCopy?: boolean;
|
|
59
|
+
autoHandleCopy?: boolean;
|
|
41
60
|
onNodeClicked?: (node: LTreeNode<T>) => void;
|
|
42
61
|
onNodeDragStart?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
43
62
|
onNodeDragOver?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
44
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Called before a drop is processed. Return false to cancel the drop.
|
|
65
|
+
* Return { position, operation } to override the drop position or operation.
|
|
66
|
+
* Return true or undefined to proceed normally.
|
|
67
|
+
*/
|
|
68
|
+
beforeDropCallback?: (dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => boolean | {
|
|
69
|
+
position?: DropPosition;
|
|
70
|
+
operation?: DropOperation;
|
|
71
|
+
} | void;
|
|
72
|
+
onNodeDrop?: (dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => void;
|
|
45
73
|
contextMenuCallback?: (node: LTreeNode<T>, closeMenuCallback: () => void) => ContextMenuItem[];
|
|
46
74
|
bodyClass?: string | null | undefined;
|
|
47
75
|
selectedNodeClass?: string | null | undefined;
|
|
@@ -61,11 +89,47 @@ declare function $$render<T>(): {
|
|
|
61
89
|
collapseAll: (nodePath?: string | null | undefined) => void;
|
|
62
90
|
filterNodes: (searchText: string, searchOptions?: SearchOptions) => void;
|
|
63
91
|
searchNodes: (searchText: string | null | undefined, searchOptions?: SearchOptions) => LTreeNode<T>[];
|
|
92
|
+
getChildren: (parentPath: string) => LTreeNode<T>[];
|
|
93
|
+
getSiblings: (path: string) => LTreeNode<T>[];
|
|
94
|
+
refreshSiblings: (parentPath: string) => void;
|
|
95
|
+
refreshNode: (path: string) => void;
|
|
96
|
+
getNodeByPath: (path: string) => LTreeNode<T> | null;
|
|
97
|
+
moveNode: (sourcePath: string, targetPath: string, position: "above" | "below" | "child") => {
|
|
98
|
+
success: boolean;
|
|
99
|
+
error?: string;
|
|
100
|
+
};
|
|
101
|
+
removeNode: (path: string, includeDescendants?: boolean) => {
|
|
102
|
+
success: boolean;
|
|
103
|
+
node?: LTreeNode<T>;
|
|
104
|
+
error?: string;
|
|
105
|
+
};
|
|
106
|
+
addNode: (parentPath: string, data: T, pathSegment?: string) => {
|
|
107
|
+
success: boolean;
|
|
108
|
+
node?: LTreeNode<T>;
|
|
109
|
+
error?: string;
|
|
110
|
+
};
|
|
111
|
+
updateNode: (path: string, dataUpdates: Partial<T>) => {
|
|
112
|
+
success: boolean;
|
|
113
|
+
node?: LTreeNode<T>;
|
|
114
|
+
error?: string;
|
|
115
|
+
};
|
|
116
|
+
applyChanges: (changes: import("../ltree/types").TreeChange<T>[]) => import("../ltree/types").ApplyChangesResult;
|
|
117
|
+
copyNodeWithDescendants: (sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T) => {
|
|
118
|
+
success: boolean;
|
|
119
|
+
rootNode?: LTreeNode<T>;
|
|
120
|
+
count: number;
|
|
121
|
+
error?: string;
|
|
122
|
+
};
|
|
123
|
+
getExpandedPaths: () => string[];
|
|
124
|
+
setExpandedPaths: (paths: string[]) => void;
|
|
125
|
+
getAllData: () => T[];
|
|
64
126
|
closeContextMenu: () => void;
|
|
65
127
|
scrollToPath: (path: string, options?: {
|
|
66
128
|
expand?: boolean;
|
|
67
129
|
highlight?: boolean;
|
|
68
130
|
scrollOptions?: ScrollIntoViewOptions;
|
|
131
|
+
/** Scroll only within the nearest scrollable container (prevents page scroll) */
|
|
132
|
+
containerScroll?: boolean;
|
|
69
133
|
}) => Promise<boolean>;
|
|
70
134
|
update: (updates: Partial<Pick<{
|
|
71
135
|
idMember: string;
|
|
@@ -82,6 +146,7 @@ declare function $$render<T>(): {
|
|
|
82
146
|
getDisplayValueCallback?: (node: LTreeNode<T>) => string;
|
|
83
147
|
searchValueMember?: string | null | undefined;
|
|
84
148
|
getSearchValueCallback?: (node: LTreeNode<T>) => string;
|
|
149
|
+
orderMember?: string | null | undefined;
|
|
85
150
|
treeId?: string | null | undefined;
|
|
86
151
|
treePathSeparator?: string | null | undefined;
|
|
87
152
|
sortCallback?: (items: LTreeNode<T>[]) => LTreeNode<T>[];
|
|
@@ -94,6 +159,8 @@ declare function $$render<T>(): {
|
|
|
94
159
|
treeFooter?: any;
|
|
95
160
|
noDataFound?: any;
|
|
96
161
|
contextMenu?: any;
|
|
162
|
+
dropPlaceholder?: any;
|
|
163
|
+
loadingPlaceholder?: any;
|
|
97
164
|
expandLevel?: number | null | undefined;
|
|
98
165
|
shouldToggleOnNodeClick?: boolean | null | undefined;
|
|
99
166
|
initializeIndexCallback?: () => Index;
|
|
@@ -103,10 +170,33 @@ declare function $$render<T>(): {
|
|
|
103
170
|
indexerTimeout?: number | null | undefined;
|
|
104
171
|
shouldDisplayDebugInformation?: boolean;
|
|
105
172
|
shouldDisplayContextMenuInDebugMode?: boolean;
|
|
173
|
+
isLoading?: boolean;
|
|
174
|
+
progressiveRender?: boolean;
|
|
175
|
+
renderBatchSize?: number;
|
|
176
|
+
isRendering?: boolean;
|
|
177
|
+
onRenderStart?: () => void;
|
|
178
|
+
onRenderProgress?: (stats: RenderStats) => void;
|
|
179
|
+
onRenderComplete?: (stats: RenderStats) => void;
|
|
180
|
+
dragDropMode?: DragDropMode;
|
|
181
|
+
dropZoneMode?: "floating" | "glow";
|
|
182
|
+
dropZoneLayout?: "around" | "above" | "below" | "wave" | "wave2";
|
|
183
|
+
dropZoneStart?: number | string;
|
|
184
|
+
dropZoneMaxWidth?: number;
|
|
185
|
+
allowCopy?: boolean;
|
|
186
|
+
autoHandleCopy?: boolean;
|
|
106
187
|
onNodeClicked?: (node: LTreeNode<T>) => void;
|
|
107
188
|
onNodeDragStart?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
108
189
|
onNodeDragOver?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
109
|
-
|
|
190
|
+
/**
|
|
191
|
+
* Called before a drop is processed. Return false to cancel the drop.
|
|
192
|
+
* Return { position, operation } to override the drop position or operation.
|
|
193
|
+
* Return true or undefined to proceed normally.
|
|
194
|
+
*/
|
|
195
|
+
beforeDropCallback?: (dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => boolean | {
|
|
196
|
+
position?: DropPosition;
|
|
197
|
+
operation?: DropOperation;
|
|
198
|
+
} | void;
|
|
199
|
+
onNodeDrop?: (dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => void;
|
|
110
200
|
contextMenuCallback?: (node: LTreeNode<T>, closeMenuCallback: () => void) => ContextMenuItem[];
|
|
111
201
|
bodyClass?: string | null | undefined;
|
|
112
202
|
selectedNodeClass?: string | null | undefined;
|
|
@@ -118,9 +208,9 @@ declare function $$render<T>(): {
|
|
|
118
208
|
scrollHighlightClass?: string | null | undefined;
|
|
119
209
|
contextMenuXOffset?: number | null | undefined;
|
|
120
210
|
contextMenuYOffset?: number | null | undefined;
|
|
121
|
-
}, "treeId" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "isSelectedMember" | "isDraggableMember" | "isDropAllowedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "isSorted" | "sortCallback" | "data" | "selectedNode" | "expandLevel" | "shouldToggleOnNodeClick" | "shouldUseInternalSearchIndex" | "initializeIndexCallback" | "searchText" | "indexerBatchSize" | "indexerTimeout" | "shouldDisplayDebugInformation" | "shouldDisplayContextMenuInDebugMode" | "onNodeClicked" | "onNodeDragStart" | "onNodeDragOver" | "onNodeDrop" | "contextMenuCallback" | "bodyClass" | "expandIconClass" | "collapseIconClass" | "leafIconClass" | "selectedNodeClass" | "dragOverNodeClass" | "scrollHighlightTimeout" | "scrollHighlightClass" | "contextMenuXOffset" | "contextMenuYOffset">>) => void;
|
|
211
|
+
}, "treeId" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "isSelectedMember" | "isDraggableMember" | "isDropAllowedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "orderMember" | "isSorted" | "sortCallback" | "data" | "selectedNode" | "expandLevel" | "shouldToggleOnNodeClick" | "shouldUseInternalSearchIndex" | "initializeIndexCallback" | "searchText" | "indexerBatchSize" | "indexerTimeout" | "shouldDisplayDebugInformation" | "shouldDisplayContextMenuInDebugMode" | "onNodeClicked" | "onNodeDragStart" | "onNodeDragOver" | "beforeDropCallback" | "onNodeDrop" | "contextMenuCallback" | "dragDropMode" | "dropZoneMode" | "bodyClass" | "expandIconClass" | "collapseIconClass" | "leafIconClass" | "selectedNodeClass" | "dragOverNodeClass" | "scrollHighlightTimeout" | "scrollHighlightClass" | "contextMenuXOffset" | "contextMenuYOffset">>) => void;
|
|
122
212
|
};
|
|
123
|
-
bindings: "data" | "selectedNode" | "insertResult" | "searchText";
|
|
213
|
+
bindings: "data" | "selectedNode" | "insertResult" | "searchText" | "isRendering";
|
|
124
214
|
slots: {};
|
|
125
215
|
events: {};
|
|
126
216
|
};
|
|
@@ -128,7 +218,7 @@ declare class __sveltets_Render<T> {
|
|
|
128
218
|
props(): ReturnType<typeof $$render<T>>['props'];
|
|
129
219
|
events(): ReturnType<typeof $$render<T>>['events'];
|
|
130
220
|
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
131
|
-
bindings(): "data" | "selectedNode" | "insertResult" | "searchText";
|
|
221
|
+
bindings(): "data" | "selectedNode" | "insertResult" | "searchText" | "isRendering";
|
|
132
222
|
exports(): {
|
|
133
223
|
expandNodes: (nodePath: string) => Promise<void>;
|
|
134
224
|
collapseNodes: (nodePath: string) => Promise<void>;
|
|
@@ -136,11 +226,47 @@ declare class __sveltets_Render<T> {
|
|
|
136
226
|
collapseAll: (nodePath?: string | null | undefined) => void;
|
|
137
227
|
filterNodes: (searchText: string, searchOptions?: SearchOptions) => void;
|
|
138
228
|
searchNodes: (searchText: string | null | undefined, searchOptions?: SearchOptions) => LTreeNode<T>[];
|
|
229
|
+
getChildren: (parentPath: string) => LTreeNode<T>[];
|
|
230
|
+
getSiblings: (path: string) => LTreeNode<T>[];
|
|
231
|
+
refreshSiblings: (parentPath: string) => void;
|
|
232
|
+
refreshNode: (path: string) => void;
|
|
233
|
+
getNodeByPath: (path: string) => LTreeNode<T> | null;
|
|
234
|
+
moveNode: (sourcePath: string, targetPath: string, position: "above" | "below" | "child") => {
|
|
235
|
+
success: boolean;
|
|
236
|
+
error?: string;
|
|
237
|
+
};
|
|
238
|
+
removeNode: (path: string, includeDescendants?: boolean) => {
|
|
239
|
+
success: boolean;
|
|
240
|
+
node?: LTreeNode<T> | undefined;
|
|
241
|
+
error?: string;
|
|
242
|
+
};
|
|
243
|
+
addNode: (parentPath: string, data: T, pathSegment?: string) => {
|
|
244
|
+
success: boolean;
|
|
245
|
+
node?: LTreeNode<T> | undefined;
|
|
246
|
+
error?: string;
|
|
247
|
+
};
|
|
248
|
+
updateNode: (path: string, dataUpdates: Partial<T>) => {
|
|
249
|
+
success: boolean;
|
|
250
|
+
node?: LTreeNode<T> | undefined;
|
|
251
|
+
error?: string;
|
|
252
|
+
};
|
|
253
|
+
applyChanges: (changes: import("../ltree/types.js").TreeChange<T>[]) => import("../ltree/types").ApplyChangesResult;
|
|
254
|
+
copyNodeWithDescendants: (sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T) => {
|
|
255
|
+
success: boolean;
|
|
256
|
+
rootNode?: LTreeNode<T> | undefined;
|
|
257
|
+
count: number;
|
|
258
|
+
error?: string;
|
|
259
|
+
};
|
|
260
|
+
getExpandedPaths: () => string[];
|
|
261
|
+
setExpandedPaths: (paths: string[]) => void;
|
|
262
|
+
getAllData: () => T[];
|
|
139
263
|
closeContextMenu: () => void;
|
|
140
264
|
scrollToPath: (path: string, options?: {
|
|
141
265
|
expand?: boolean;
|
|
142
266
|
highlight?: boolean;
|
|
143
267
|
scrollOptions?: ScrollIntoViewOptions;
|
|
268
|
+
/** Scroll only within the nearest scrollable container (prevents page scroll) */
|
|
269
|
+
containerScroll?: boolean;
|
|
144
270
|
} | undefined) => Promise<boolean>;
|
|
145
271
|
update: (updates: Partial<Pick<{
|
|
146
272
|
idMember: string;
|
|
@@ -157,6 +283,7 @@ declare class __sveltets_Render<T> {
|
|
|
157
283
|
getDisplayValueCallback?: ((node: LTreeNode<T>) => string) | undefined;
|
|
158
284
|
searchValueMember?: string | null | undefined;
|
|
159
285
|
getSearchValueCallback?: ((node: LTreeNode<T>) => string) | undefined;
|
|
286
|
+
orderMember?: string | null | undefined;
|
|
160
287
|
treeId?: string | null | undefined;
|
|
161
288
|
treePathSeparator?: string | null | undefined;
|
|
162
289
|
sortCallback?: ((items: LTreeNode<T>[]) => LTreeNode<T>[]) | undefined;
|
|
@@ -169,6 +296,8 @@ declare class __sveltets_Render<T> {
|
|
|
169
296
|
treeFooter?: any;
|
|
170
297
|
noDataFound?: any;
|
|
171
298
|
contextMenu?: any;
|
|
299
|
+
dropPlaceholder?: any;
|
|
300
|
+
loadingPlaceholder?: any;
|
|
172
301
|
expandLevel?: number | null | undefined;
|
|
173
302
|
shouldToggleOnNodeClick?: boolean | null | undefined;
|
|
174
303
|
initializeIndexCallback?: (() => Index) | undefined;
|
|
@@ -178,10 +307,33 @@ declare class __sveltets_Render<T> {
|
|
|
178
307
|
indexerTimeout?: number | null | undefined;
|
|
179
308
|
shouldDisplayDebugInformation?: boolean;
|
|
180
309
|
shouldDisplayContextMenuInDebugMode?: boolean;
|
|
310
|
+
isLoading?: boolean;
|
|
311
|
+
progressiveRender?: boolean;
|
|
312
|
+
renderBatchSize?: number;
|
|
313
|
+
isRendering?: boolean;
|
|
314
|
+
onRenderStart?: (() => void) | undefined;
|
|
315
|
+
onRenderProgress?: ((stats: RenderStats) => void) | undefined;
|
|
316
|
+
onRenderComplete?: ((stats: RenderStats) => void) | undefined;
|
|
317
|
+
dragDropMode?: DragDropMode;
|
|
318
|
+
dropZoneMode?: "floating" | "glow";
|
|
319
|
+
dropZoneLayout?: "around" | "above" | "below" | "wave" | "wave2";
|
|
320
|
+
dropZoneStart?: number | string;
|
|
321
|
+
dropZoneMaxWidth?: number;
|
|
322
|
+
allowCopy?: boolean;
|
|
323
|
+
autoHandleCopy?: boolean;
|
|
181
324
|
onNodeClicked?: ((node: LTreeNode<T>) => void) | undefined;
|
|
182
325
|
onNodeDragStart?: ((node: LTreeNode<T>, event: DragEvent) => void) | undefined;
|
|
183
326
|
onNodeDragOver?: ((node: LTreeNode<T>, event: DragEvent) => void) | undefined;
|
|
184
|
-
|
|
327
|
+
/**
|
|
328
|
+
* Called before a drop is processed. Return false to cancel the drop.
|
|
329
|
+
* Return { position, operation } to override the drop position or operation.
|
|
330
|
+
* Return true or undefined to proceed normally.
|
|
331
|
+
*/
|
|
332
|
+
beforeDropCallback?: ((dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => boolean | void | {
|
|
333
|
+
position?: DropPosition;
|
|
334
|
+
operation?: DropOperation;
|
|
335
|
+
}) | undefined;
|
|
336
|
+
onNodeDrop?: ((dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => void) | undefined;
|
|
185
337
|
contextMenuCallback?: ((node: LTreeNode<T>, closeMenuCallback: () => void) => ContextMenuItem[]) | undefined;
|
|
186
338
|
bodyClass?: string | null | undefined;
|
|
187
339
|
selectedNodeClass?: string | null | undefined;
|
|
@@ -193,7 +345,7 @@ declare class __sveltets_Render<T> {
|
|
|
193
345
|
scrollHighlightClass?: string | null | undefined;
|
|
194
346
|
contextMenuXOffset?: number | null | undefined;
|
|
195
347
|
contextMenuYOffset?: number | null | undefined;
|
|
196
|
-
}, "treeId" | "data" | "onNodeClicked" | "onNodeDragStart" | "onNodeDragOver" | "onNodeDrop" | "shouldToggleOnNodeClick" | "expandIconClass" | "collapseIconClass" | "leafIconClass" | "selectedNodeClass" | "dragOverNodeClass" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "isSorted" | "sortCallback" | "isDraggableMember" | "isDropAllowedMember" | "shouldDisplayDebugInformation" | "isSelectedMember" | "selectedNode" | "expandLevel" | "shouldUseInternalSearchIndex" | "initializeIndexCallback" | "searchText" | "indexerBatchSize" | "indexerTimeout" | "shouldDisplayContextMenuInDebugMode" | "contextMenuCallback" | "bodyClass" | "scrollHighlightTimeout" | "scrollHighlightClass" | "contextMenuXOffset" | "contextMenuYOffset">>) => void;
|
|
348
|
+
}, "treeId" | "data" | "onNodeClicked" | "onNodeDragStart" | "onNodeDragOver" | "onNodeDrop" | "shouldToggleOnNodeClick" | "expandIconClass" | "collapseIconClass" | "leafIconClass" | "selectedNodeClass" | "dragOverNodeClass" | "dropZoneMode" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "orderMember" | "isSorted" | "sortCallback" | "isDraggableMember" | "isDropAllowedMember" | "shouldDisplayDebugInformation" | "isSelectedMember" | "selectedNode" | "expandLevel" | "shouldUseInternalSearchIndex" | "initializeIndexCallback" | "searchText" | "indexerBatchSize" | "indexerTimeout" | "shouldDisplayContextMenuInDebugMode" | "dragDropMode" | "beforeDropCallback" | "contextMenuCallback" | "bodyClass" | "scrollHighlightTimeout" | "scrollHighlightClass" | "contextMenuXOffset" | "contextMenuYOffset">>) => void;
|
|
197
349
|
};
|
|
198
350
|
}
|
|
199
351
|
interface $$IsomorphicComponent {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const VERSION = "4.5.0";
|
|
2
|
+
export declare const PACKAGE_NAME = "@keenmate/svelte-treeview";
|
|
3
|
+
export declare const AUTHOR = "KeenMate";
|
|
4
|
+
export declare const LICENSE = "MIT";
|
|
5
|
+
export declare const REPOSITORY = "git+https://github.com/keenmate/svelte-treeview.git";
|
|
6
|
+
export declare const HOMEPAGE = "https://github.com/keenmate/svelte-treeview#readme";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Auto-generated file - do not edit manually
|
|
2
|
+
// Generated by scripts/generate-constants.js
|
|
3
|
+
export const VERSION = "4.5.0";
|
|
4
|
+
export const PACKAGE_NAME = "@keenmate/svelte-treeview";
|
|
5
|
+
export const AUTHOR = "KeenMate";
|
|
6
|
+
export const LICENSE = "MIT";
|
|
7
|
+
export const REPOSITORY = "git+https://github.com/keenmate/svelte-treeview.git";
|
|
8
|
+
export const HOMEPAGE = "https://github.com/keenmate/svelte-treeview#readme";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global API registration for runtime logging control
|
|
3
|
+
* This file is imported by Tree.svelte to ensure it runs when the component is used
|
|
4
|
+
*/
|
|
5
|
+
export interface GlobalTreeviewAPI {
|
|
6
|
+
version: () => string;
|
|
7
|
+
config: {
|
|
8
|
+
name: string;
|
|
9
|
+
version: string;
|
|
10
|
+
author: string;
|
|
11
|
+
license: string;
|
|
12
|
+
repository: string;
|
|
13
|
+
homepage: string;
|
|
14
|
+
};
|
|
15
|
+
logging: {
|
|
16
|
+
enableLogging: () => void;
|
|
17
|
+
disableLogging: () => void;
|
|
18
|
+
setLogLevel: (level: string) => void;
|
|
19
|
+
setCategoryLevel: (category: string, level: string) => void;
|
|
20
|
+
getCategories: () => string[];
|
|
21
|
+
};
|
|
22
|
+
perf: {
|
|
23
|
+
enable: () => void;
|
|
24
|
+
disable: () => void;
|
|
25
|
+
setThreshold: (ms: number) => void;
|
|
26
|
+
isEnabled: () => boolean;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
declare global {
|
|
30
|
+
interface Window {
|
|
31
|
+
components?: {
|
|
32
|
+
'svelte-treeview'?: GlobalTreeviewAPI;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global API registration for runtime logging control
|
|
3
|
+
* This file is imported by Tree.svelte to ensure it runs when the component is used
|
|
4
|
+
*/
|
|
5
|
+
import { setLogLevel, enableLogging, disableLogging, setCategoryLevel, LOGGING_CATEGORIES } from './logger';
|
|
6
|
+
import { enablePerfLogging, disablePerfLogging, setPerfThreshold, isPerfLoggingEnabled } from './perf-logger';
|
|
7
|
+
// Import generated constants (created by scripts/generate-constants.js)
|
|
8
|
+
import { VERSION, PACKAGE_NAME, AUTHOR, LICENSE, REPOSITORY, HOMEPAGE } from './constants.generated';
|
|
9
|
+
// Initialize global API for runtime logging control
|
|
10
|
+
if (typeof window !== 'undefined') {
|
|
11
|
+
window.components = window.components || {};
|
|
12
|
+
window.components['svelte-treeview'] = {
|
|
13
|
+
version: () => VERSION,
|
|
14
|
+
config: {
|
|
15
|
+
name: PACKAGE_NAME,
|
|
16
|
+
version: VERSION,
|
|
17
|
+
author: AUTHOR,
|
|
18
|
+
license: LICENSE,
|
|
19
|
+
repository: REPOSITORY,
|
|
20
|
+
homepage: HOMEPAGE
|
|
21
|
+
},
|
|
22
|
+
logging: {
|
|
23
|
+
enableLogging,
|
|
24
|
+
disableLogging,
|
|
25
|
+
setLogLevel,
|
|
26
|
+
setCategoryLevel,
|
|
27
|
+
getCategories: () => [...LOGGING_CATEGORIES]
|
|
28
|
+
},
|
|
29
|
+
perf: {
|
|
30
|
+
enable: enablePerfLogging,
|
|
31
|
+
disable: disablePerfLogging,
|
|
32
|
+
setThreshold: setPerfThreshold,
|
|
33
|
+
isEnabled: isPerfLoggingEnabled
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export { default as Tree } from "./components/Tree.svelte";
|
|
2
2
|
export type { LTreeNode, NodeId, VisualState } from "./ltree/ltree-node.svelte";
|
|
3
|
-
export type { Ltree } from "./ltree/types";
|
|
3
|
+
export type { Ltree, DropPosition, DragDropMode, DropOperation, ContextMenuItem, InsertArrayResult, TreeChange, ApplyChangesResult } from "./ltree/types";
|
|
4
|
+
export type { RenderStats } from "./components/RenderCoordinator.svelte";
|
|
5
|
+
export { enableLogging, disableLogging, setLogLevel, setCategoryLevel, LOGGING_CATEGORIES } from "./logger";
|
|
6
|
+
export { enablePerfLogging, disablePerfLogging, setPerfThreshold, isPerfLoggingEnabled, perfStart, perfEnd, perfMeasure, perfSummary } from "./perf-logger";
|
|
7
|
+
export type { GlobalTreeviewAPI } from "./global-api";
|
|
8
|
+
import "./global-api";
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
// Reexport your entry components here
|
|
2
2
|
export { default as Tree } from "./components/Tree.svelte";
|
|
3
|
+
// Export logging utilities
|
|
4
|
+
export { enableLogging, disableLogging, setLogLevel, setCategoryLevel, LOGGING_CATEGORIES } from "./logger";
|
|
5
|
+
// Export performance logging utilities
|
|
6
|
+
export { enablePerfLogging, disablePerfLogging, setPerfThreshold, isPerfLoggingEnabled, perfStart, perfEnd, perfMeasure, perfSummary } from "./perf-logger";
|
|
7
|
+
import "./global-api";
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging configuration using loglevel with categorized loggers
|
|
3
|
+
*
|
|
4
|
+
* Categories:
|
|
5
|
+
* - LTREE:INIT: Tree initialization and configuration
|
|
6
|
+
* - LTREE:DATA: Data insertion, tree manipulation, node operations
|
|
7
|
+
* - LTREE:RENDER: Rendering, progressive rendering, coordinator
|
|
8
|
+
* - LTREE:INDEX: Search indexing operations
|
|
9
|
+
* - LTREE:DRAG: Drag and drop operations
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* - By default, all logging is disabled (silent mode) for production
|
|
13
|
+
* - Enable logging in browser console:
|
|
14
|
+
* ```javascript
|
|
15
|
+
* import { enableLogging, setLogLevel, setCategoryLevel } from '@keenmate/svelte-treeview';
|
|
16
|
+
*
|
|
17
|
+
* // Enable all logging at debug level
|
|
18
|
+
* enableLogging();
|
|
19
|
+
*
|
|
20
|
+
* // Or set a specific log level for all categories
|
|
21
|
+
* setLogLevel('info'); // 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent'
|
|
22
|
+
*
|
|
23
|
+
* // Or enable/disable specific categories
|
|
24
|
+
* disableLogging(); // First disable all
|
|
25
|
+
* setCategoryLevel('LTREE:RENDER', 'debug'); // Enable only render logs
|
|
26
|
+
* setCategoryLevel('LTREE:INDEX', 'info'); // Enable only index logs at info level
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import log from './vendor/loglevel/index.js';
|
|
30
|
+
export declare const initLogger: any;
|
|
31
|
+
export declare const dataLogger: any;
|
|
32
|
+
export declare const renderLogger: any;
|
|
33
|
+
export declare const indexLogger: any;
|
|
34
|
+
export declare const dragLogger: any;
|
|
35
|
+
export declare const uiLogger: any;
|
|
36
|
+
export default log;
|
|
37
|
+
/**
|
|
38
|
+
* List of all logging categories
|
|
39
|
+
*/
|
|
40
|
+
export declare const LOGGING_CATEGORIES: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Enable logging for all loggers
|
|
43
|
+
*/
|
|
44
|
+
export declare const setLogLevel: (level: "trace" | "debug" | "info" | "warn" | "error" | "silent") => void;
|
|
45
|
+
/**
|
|
46
|
+
* Enable all logging (set to debug level)
|
|
47
|
+
*/
|
|
48
|
+
export declare const enableLogging: () => void;
|
|
49
|
+
/**
|
|
50
|
+
* Disable all logging (set to silent level)
|
|
51
|
+
*/
|
|
52
|
+
export declare const disableLogging: () => void;
|
|
53
|
+
/**
|
|
54
|
+
* Set log level for a specific category
|
|
55
|
+
*/
|
|
56
|
+
export declare const setCategoryLevel: (category: "LTREE:INIT" | "LTREE:DATA" | "LTREE:RENDER" | "LTREE:INDEX" | "LTREE:DRAG" | "LTREE:UI", level?: "trace" | "debug" | "info" | "warn" | "error" | "silent") => void;
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging configuration using loglevel with categorized loggers
|
|
3
|
+
*
|
|
4
|
+
* Categories:
|
|
5
|
+
* - LTREE:INIT: Tree initialization and configuration
|
|
6
|
+
* - LTREE:DATA: Data insertion, tree manipulation, node operations
|
|
7
|
+
* - LTREE:RENDER: Rendering, progressive rendering, coordinator
|
|
8
|
+
* - LTREE:INDEX: Search indexing operations
|
|
9
|
+
* - LTREE:DRAG: Drag and drop operations
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* - By default, all logging is disabled (silent mode) for production
|
|
13
|
+
* - Enable logging in browser console:
|
|
14
|
+
* ```javascript
|
|
15
|
+
* import { enableLogging, setLogLevel, setCategoryLevel } from '@keenmate/svelte-treeview';
|
|
16
|
+
*
|
|
17
|
+
* // Enable all logging at debug level
|
|
18
|
+
* enableLogging();
|
|
19
|
+
*
|
|
20
|
+
* // Or set a specific log level for all categories
|
|
21
|
+
* setLogLevel('info'); // 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent'
|
|
22
|
+
*
|
|
23
|
+
* // Or enable/disable specific categories
|
|
24
|
+
* disableLogging(); // First disable all
|
|
25
|
+
* setCategoryLevel('LTREE:RENDER', 'debug'); // Enable only render logs
|
|
26
|
+
* setCategoryLevel('LTREE:INDEX', 'info'); // Enable only index logs at info level
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
// Import vendored libraries via ES module wrappers
|
|
30
|
+
// @ts-ignore - Vendored library without type definitions
|
|
31
|
+
import log from './vendor/loglevel/index.js';
|
|
32
|
+
// @ts-ignore - Vendored library without type definitions
|
|
33
|
+
import prefix from './vendor/loglevel/prefix.js';
|
|
34
|
+
// Define color scheme
|
|
35
|
+
const COLORS = {
|
|
36
|
+
trace: '#9ca3af', // Gray
|
|
37
|
+
debug: '#0ea5e9', // Blue
|
|
38
|
+
info: '#10b981', // Green
|
|
39
|
+
warn: '#f59e0b', // Orange
|
|
40
|
+
error: '#ef4444' // Red
|
|
41
|
+
};
|
|
42
|
+
// Logger categories documentation:
|
|
43
|
+
// - LTREE:INIT: Tree initialization and configuration
|
|
44
|
+
// - LTREE:DATA: Data insertion, tree manipulation, node operations
|
|
45
|
+
// - LTREE:RENDER: Rendering, progressive rendering, coordinator
|
|
46
|
+
// - LTREE:INDEX: Search indexing operations
|
|
47
|
+
// - LTREE:DRAG: Drag and drop operations
|
|
48
|
+
// - LTREE:UI: User interactions (click, expand/collapse, selection)
|
|
49
|
+
// Register prefix plugin with the root logger
|
|
50
|
+
prefix.reg(log);
|
|
51
|
+
// Set default log level to silent (production mode)
|
|
52
|
+
log.setLevel('silent');
|
|
53
|
+
// Prefix format options that include %c markers
|
|
54
|
+
const prefixOptions = {
|
|
55
|
+
format(level, name, timestamp) {
|
|
56
|
+
return `%c[${timestamp}]%c %c[${level.toUpperCase()}]%c %c[${name}]%c`;
|
|
57
|
+
},
|
|
58
|
+
timestampFormatter(date) {
|
|
59
|
+
return date.toTimeString().split(' ')[0] + '.' + date.getMilliseconds().toString().padStart(3, '0');
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Create a color-aware method factory that intercepts %c codes and adds CSS styles
|
|
64
|
+
*/
|
|
65
|
+
function createColorMethodFactory(originalFactory) {
|
|
66
|
+
return function (methodName, logLevel, loggerName) {
|
|
67
|
+
const rawMethod = originalFactory(methodName, logLevel, loggerName);
|
|
68
|
+
return function (...args) {
|
|
69
|
+
// If first arg contains %c color codes, inject the color styles
|
|
70
|
+
if (args.length > 0 && typeof args[0] === 'string' && args[0].includes('%c')) {
|
|
71
|
+
const color = COLORS[methodName] || '#666';
|
|
72
|
+
// Count how many %c markers we have (should be 6 for our format)
|
|
73
|
+
const numMarkers = (args[0].match(/%c/g) || []).length;
|
|
74
|
+
const colorStyles = [];
|
|
75
|
+
for (let i = 0; i < numMarkers; i++) {
|
|
76
|
+
// Alternate between color and reset
|
|
77
|
+
colorStyles.push(i % 2 === 0 ? `color: ${color}; font-weight: bold;` : 'color: inherit;');
|
|
78
|
+
}
|
|
79
|
+
rawMethod(args[0], ...colorStyles, ...args.slice(1));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
rawMethod(...args);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Create category-specific loggers
|
|
88
|
+
export const initLogger = log.getLogger('LTREE:INIT');
|
|
89
|
+
export const dataLogger = log.getLogger('LTREE:DATA');
|
|
90
|
+
export const renderLogger = log.getLogger('LTREE:RENDER');
|
|
91
|
+
export const indexLogger = log.getLogger('LTREE:INDEX');
|
|
92
|
+
export const dragLogger = log.getLogger('LTREE:DRAG');
|
|
93
|
+
export const uiLogger = log.getLogger('LTREE:UI');
|
|
94
|
+
// Apply prefix and color styling to all category loggers
|
|
95
|
+
const allLoggers = [
|
|
96
|
+
initLogger,
|
|
97
|
+
dataLogger,
|
|
98
|
+
renderLogger,
|
|
99
|
+
indexLogger,
|
|
100
|
+
dragLogger,
|
|
101
|
+
uiLogger
|
|
102
|
+
];
|
|
103
|
+
allLoggers.forEach(logger => {
|
|
104
|
+
// First wrap the methodFactory with color injection
|
|
105
|
+
// This needs to happen BEFORE prefix.apply so the prefix plugin's
|
|
106
|
+
// output (which contains %c codes) goes through our color handler
|
|
107
|
+
const originalFactory = logger.methodFactory;
|
|
108
|
+
logger.methodFactory = createColorMethodFactory(originalFactory);
|
|
109
|
+
// Now apply prefix - it will wrap our color-aware methodFactory
|
|
110
|
+
prefix.apply(logger, prefixOptions);
|
|
111
|
+
// Set level to rebuild methods
|
|
112
|
+
logger.setLevel('silent');
|
|
113
|
+
});
|
|
114
|
+
// Export the default logger
|
|
115
|
+
export default log;
|
|
116
|
+
/**
|
|
117
|
+
* List of all logging categories
|
|
118
|
+
*/
|
|
119
|
+
export const LOGGING_CATEGORIES = [
|
|
120
|
+
'LTREE:INIT',
|
|
121
|
+
'LTREE:DATA',
|
|
122
|
+
'LTREE:RENDER',
|
|
123
|
+
'LTREE:INDEX',
|
|
124
|
+
'LTREE:DRAG',
|
|
125
|
+
'LTREE:UI'
|
|
126
|
+
];
|
|
127
|
+
/**
|
|
128
|
+
* Enable logging for all loggers
|
|
129
|
+
*/
|
|
130
|
+
export const setLogLevel = (level) => {
|
|
131
|
+
log.setLevel(level);
|
|
132
|
+
allLoggers.forEach(logger => logger.setLevel(level));
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Enable all logging (set to debug level)
|
|
136
|
+
*/
|
|
137
|
+
export const enableLogging = () => {
|
|
138
|
+
setLogLevel('debug');
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Disable all logging (set to silent level)
|
|
142
|
+
*/
|
|
143
|
+
export const disableLogging = () => {
|
|
144
|
+
setLogLevel('silent');
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Set log level for a specific category
|
|
148
|
+
*/
|
|
149
|
+
export const setCategoryLevel = (category, level = 'debug') => {
|
|
150
|
+
const loggerMap = {
|
|
151
|
+
'LTREE:INIT': initLogger,
|
|
152
|
+
'LTREE:DATA': dataLogger,
|
|
153
|
+
'LTREE:RENDER': renderLogger,
|
|
154
|
+
'LTREE:INDEX': indexLogger,
|
|
155
|
+
'LTREE:DRAG': dragLogger,
|
|
156
|
+
'LTREE:UI': uiLogger
|
|
157
|
+
};
|
|
158
|
+
loggerMap[category]?.setLevel(level);
|
|
159
|
+
};
|
package/dist/ltree/indexer.d.ts
CHANGED