@keenmate/svelte-treeview 4.8.0 → 5.0.0-rc02
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 +106 -117
- package/ai/INDEX.txt +310 -0
- package/ai/advanced-patterns.txt +506 -0
- package/ai/basic-setup.txt +336 -0
- package/ai/context-menu.txt +349 -0
- package/ai/data-handling.txt +390 -0
- package/ai/drag-drop.txt +397 -0
- package/ai/events-callbacks.txt +382 -0
- package/ai/import-patterns.txt +271 -0
- package/ai/performance.txt +349 -0
- package/ai/search-features.txt +359 -0
- package/ai/styling-theming.txt +354 -0
- package/ai/tree-editing.txt +423 -0
- package/ai/typescript-types.txt +357 -0
- package/dist/components/Node.svelte +47 -40
- package/dist/components/Node.svelte.d.ts +1 -1
- package/dist/components/Tree.svelte +384 -1479
- package/dist/components/Tree.svelte.d.ts +30 -28
- package/dist/components/TreeProvider.svelte +28 -0
- package/dist/components/TreeProvider.svelte.d.ts +28 -0
- package/dist/constants.generated.d.ts +1 -1
- package/dist/constants.generated.js +1 -1
- package/dist/core/TreeController.svelte.d.ts +353 -0
- package/dist/core/TreeController.svelte.js +1503 -0
- package/dist/core/createTreeController.d.ts +9 -0
- package/dist/core/createTreeController.js +11 -0
- package/dist/global-api.d.ts +1 -1
- package/dist/global-api.js +5 -5
- package/dist/index.d.ts +10 -6
- package/dist/index.js +7 -3
- package/dist/logger.d.ts +7 -6
- package/dist/logger.js +0 -2
- package/dist/ltree/indexer.js +2 -4
- package/dist/ltree/ltree-node.svelte.d.ts +2 -1
- package/dist/ltree/ltree-node.svelte.js +1 -0
- package/dist/ltree/ltree.svelte.d.ts +1 -1
- package/dist/ltree/ltree.svelte.js +168 -175
- package/dist/ltree/types.d.ts +12 -8
- package/dist/perf-logger.d.ts +2 -1
- package/dist/perf-logger.js +0 -2
- package/dist/styles/main.scss +78 -78
- package/dist/styles.css +41 -41
- package/dist/styles.css.map +1 -1
- package/dist/vendor/loglevel/index.d.ts +55 -2
- package/dist/vendor/loglevel/prefix.d.ts +23 -2
- package/package.json +96 -95
- package/dist/ltree/ltree-demo.d.ts +0 -2
- package/dist/ltree/ltree-demo.js +0 -90
- package/dist/vendor/loglevel/loglevel-esm.d.ts +0 -2
- package/dist/vendor/loglevel/loglevel-plugin-prefix-esm.d.ts +0 -7
- package/dist/vendor/loglevel/loglevel-plugin-prefix.d.ts +0 -2
|
@@ -1,8 +1,7 @@
|
|
|
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, type DropPosition, type DragDropMode, type DropOperation } from '../ltree/types.js';
|
|
4
|
-
import {
|
|
5
|
-
import '../global-api.js';
|
|
3
|
+
import { type InsertArrayResult, type ContextMenuItem, type DropPosition, type DragDropMode, type DropOperation, type TreeChange, type ApplyChangesResult } from '../ltree/types.js';
|
|
4
|
+
import type { RenderStats } from './RenderCoordinator.svelte.js';
|
|
6
5
|
declare function $$render<T>(): {
|
|
7
6
|
props: {
|
|
8
7
|
idMember: string;
|
|
@@ -12,9 +11,12 @@ declare function $$render<T>(): {
|
|
|
12
11
|
isExpandedMember?: string | null | undefined;
|
|
13
12
|
isSelectedMember?: string | null | undefined;
|
|
14
13
|
isDraggableMember?: string | null | undefined;
|
|
14
|
+
getIsDraggableCallback?: (node: LTreeNode<T>) => boolean;
|
|
15
15
|
isDropAllowedMember?: string | null | undefined;
|
|
16
16
|
allowedDropPositionsMember?: string | null | undefined;
|
|
17
17
|
getAllowedDropPositionsCallback?: (node: LTreeNode<T>) => DropPosition[] | null | undefined;
|
|
18
|
+
isCollapsibleMember?: string | null | undefined;
|
|
19
|
+
getIsCollapsibleCallback?: (node: LTreeNode<T>) => boolean;
|
|
18
20
|
hasChildrenMember?: string | null | undefined;
|
|
19
21
|
isSorted?: boolean | null | undefined;
|
|
20
22
|
displayValueMember?: string | null | undefined;
|
|
@@ -56,9 +58,9 @@ declare function $$render<T>(): {
|
|
|
56
58
|
/**
|
|
57
59
|
* Use flat/centralized rendering instead of recursive node rendering.
|
|
58
60
|
* This significantly improves performance for large trees by:
|
|
61
|
+
* - Removing the {#key changeTracker} block that destroys all nodes on any change
|
|
59
62
|
* - Using a single flat loop instead of recursive component instantiation
|
|
60
63
|
* - Allowing Svelte's keyed {#each} to efficiently diff only changed nodes
|
|
61
|
-
* - Per-node reactive signals for O(1) data-only updates (updateNode, selection)
|
|
62
64
|
*/
|
|
63
65
|
useFlatRendering?: boolean;
|
|
64
66
|
/** Enable virtual scrolling in flat mode. Only visible nodes + overscan are rendered. */
|
|
@@ -110,14 +112,14 @@ declare function $$render<T>(): {
|
|
|
110
112
|
collapseNodes: (nodePath: string) => Promise<void>;
|
|
111
113
|
expandAll: (nodePath?: string | null | undefined) => void;
|
|
112
114
|
collapseAll: (nodePath?: string | null | undefined) => void;
|
|
113
|
-
filterNodes: (
|
|
114
|
-
searchNodes: (
|
|
115
|
+
filterNodes: (searchTextVal: string, searchOptions?: SearchOptions) => void;
|
|
116
|
+
searchNodes: (searchTextVal: string | null | undefined, searchOptions?: SearchOptions) => LTreeNode<T>[];
|
|
115
117
|
getChildren: (parentPath: string) => LTreeNode<T>[];
|
|
116
118
|
getSiblings: (path: string) => LTreeNode<T>[];
|
|
117
119
|
refreshSiblings: (parentPath: string) => void;
|
|
118
120
|
refreshNode: (path: string) => void;
|
|
119
121
|
getNodeByPath: (path: string) => LTreeNode<T> | null;
|
|
120
|
-
moveNode: (sourcePath: string, targetPath: string, position: "
|
|
122
|
+
moveNode: (sourcePath: string, targetPath: string, position: "before" | "after" | "child") => {
|
|
121
123
|
success: boolean;
|
|
122
124
|
error?: string;
|
|
123
125
|
};
|
|
@@ -126,7 +128,7 @@ declare function $$render<T>(): {
|
|
|
126
128
|
node?: LTreeNode<T>;
|
|
127
129
|
error?: string;
|
|
128
130
|
};
|
|
129
|
-
addNode: (parentPath: string,
|
|
131
|
+
addNode: (parentPath: string, nodeData: T, pathSegment?: string) => {
|
|
130
132
|
success: boolean;
|
|
131
133
|
node?: LTreeNode<T>;
|
|
132
134
|
error?: string;
|
|
@@ -136,8 +138,8 @@ declare function $$render<T>(): {
|
|
|
136
138
|
node?: LTreeNode<T>;
|
|
137
139
|
error?: string;
|
|
138
140
|
};
|
|
139
|
-
applyChanges: (changes:
|
|
140
|
-
copyNodeWithDescendants: (sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T, siblingPath?: string, position?: "
|
|
141
|
+
applyChanges: (changes: TreeChange<T>[]) => ApplyChangesResult;
|
|
142
|
+
copyNodeWithDescendants: (sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T, siblingPath?: string, position?: "before" | "after") => {
|
|
141
143
|
success: boolean;
|
|
142
144
|
rootNode?: LTreeNode<T>;
|
|
143
145
|
count: number;
|
|
@@ -148,13 +150,10 @@ declare function $$render<T>(): {
|
|
|
148
150
|
getAllData: () => T[];
|
|
149
151
|
closeContextMenu: () => void;
|
|
150
152
|
scrollToPath: (path: string, options?: {
|
|
151
|
-
/** Expand ancestors to make the node visible (default: true) */
|
|
152
153
|
expand?: boolean;
|
|
153
|
-
/** Also expand the target node itself to show its children (default: false for performance) */
|
|
154
154
|
expandTarget?: boolean;
|
|
155
155
|
highlight?: boolean;
|
|
156
156
|
scrollOptions?: ScrollIntoViewOptions;
|
|
157
|
-
/** Scroll only within the nearest scrollable container (prevents page scroll) */
|
|
158
157
|
containerScroll?: boolean;
|
|
159
158
|
}) => Promise<boolean>;
|
|
160
159
|
update: (updates: Partial<Pick<{
|
|
@@ -165,9 +164,12 @@ declare function $$render<T>(): {
|
|
|
165
164
|
isExpandedMember?: string | null | undefined;
|
|
166
165
|
isSelectedMember?: string | null | undefined;
|
|
167
166
|
isDraggableMember?: string | null | undefined;
|
|
167
|
+
getIsDraggableCallback?: (node: LTreeNode<T>) => boolean;
|
|
168
168
|
isDropAllowedMember?: string | null | undefined;
|
|
169
169
|
allowedDropPositionsMember?: string | null | undefined;
|
|
170
170
|
getAllowedDropPositionsCallback?: (node: LTreeNode<T>) => DropPosition[] | null | undefined;
|
|
171
|
+
isCollapsibleMember?: string | null | undefined;
|
|
172
|
+
getIsCollapsibleCallback?: (node: LTreeNode<T>) => boolean;
|
|
171
173
|
hasChildrenMember?: string | null | undefined;
|
|
172
174
|
isSorted?: boolean | null | undefined;
|
|
173
175
|
displayValueMember?: string | null | undefined;
|
|
@@ -209,9 +211,9 @@ declare function $$render<T>(): {
|
|
|
209
211
|
/**
|
|
210
212
|
* Use flat/centralized rendering instead of recursive node rendering.
|
|
211
213
|
* This significantly improves performance for large trees by:
|
|
214
|
+
* - Removing the {#key changeTracker} block that destroys all nodes on any change
|
|
212
215
|
* - Using a single flat loop instead of recursive component instantiation
|
|
213
216
|
* - Allowing Svelte's keyed {#each} to efficiently diff only changed nodes
|
|
214
|
-
* - Per-node reactive signals for O(1) data-only updates (updateNode, selection)
|
|
215
217
|
*/
|
|
216
218
|
useFlatRendering?: boolean;
|
|
217
219
|
/** Enable virtual scrolling in flat mode. Only visible nodes + overscan are rendered. */
|
|
@@ -257,9 +259,9 @@ declare function $$render<T>(): {
|
|
|
257
259
|
scrollHighlightClass?: string | null | undefined;
|
|
258
260
|
contextMenuXOffset?: number | null | undefined;
|
|
259
261
|
contextMenuYOffset?: number | null | undefined;
|
|
260
|
-
}, "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" | "
|
|
262
|
+
}, "treeId" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "isSelectedMember" | "isDraggableMember" | "getIsDraggableCallback" | "isDropAllowedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "isCollapsibleMember" | "getIsCollapsibleCallback" | "orderMember" | "isSorted" | "sortCallback" | "data" | "selectedNode" | "expandLevel" | "shouldToggleOnNodeClick" | "shouldUseInternalSearchIndex" | "initializeIndexCallback" | "searchText" | "indexerBatchSize" | "indexerTimeout" | "shouldDisplayDebugInformation" | "shouldDisplayContextMenuInDebugMode" | "onNodeClicked" | "onNodeDragStart" | "onNodeDragOver" | "beforeDropCallback" | "onNodeDrop" | "contextMenuCallback" | "virtualScroll" | "virtualRowHeight" | "virtualOverscan" | "virtualContainerHeight" | "dragDropMode" | "dropZoneMode" | "bodyClass" | "expandIconClass" | "collapseIconClass" | "leafIconClass" | "selectedNodeClass" | "dragOverNodeClass" | "scrollHighlightTimeout" | "scrollHighlightClass" | "contextMenuXOffset" | "contextMenuYOffset">>) => void;
|
|
261
263
|
};
|
|
262
|
-
bindings: "data" | "selectedNode" | "
|
|
264
|
+
bindings: "data" | "selectedNode" | "searchText" | "insertResult" | "isRendering";
|
|
263
265
|
slots: {};
|
|
264
266
|
events: {};
|
|
265
267
|
};
|
|
@@ -267,20 +269,20 @@ declare class __sveltets_Render<T> {
|
|
|
267
269
|
props(): ReturnType<typeof $$render<T>>['props'];
|
|
268
270
|
events(): ReturnType<typeof $$render<T>>['events'];
|
|
269
271
|
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
270
|
-
bindings(): "data" | "selectedNode" | "
|
|
272
|
+
bindings(): "data" | "selectedNode" | "searchText" | "insertResult" | "isRendering";
|
|
271
273
|
exports(): {
|
|
272
274
|
expandNodes: (nodePath: string) => Promise<void>;
|
|
273
275
|
collapseNodes: (nodePath: string) => Promise<void>;
|
|
274
276
|
expandAll: (nodePath?: string | null | undefined) => void;
|
|
275
277
|
collapseAll: (nodePath?: string | null | undefined) => void;
|
|
276
|
-
filterNodes: (
|
|
277
|
-
searchNodes: (
|
|
278
|
+
filterNodes: (searchTextVal: string, searchOptions?: SearchOptions) => void;
|
|
279
|
+
searchNodes: (searchTextVal: string | null | undefined, searchOptions?: SearchOptions) => LTreeNode<T>[];
|
|
278
280
|
getChildren: (parentPath: string) => LTreeNode<T>[];
|
|
279
281
|
getSiblings: (path: string) => LTreeNode<T>[];
|
|
280
282
|
refreshSiblings: (parentPath: string) => void;
|
|
281
283
|
refreshNode: (path: string) => void;
|
|
282
284
|
getNodeByPath: (path: string) => LTreeNode<T> | null;
|
|
283
|
-
moveNode: (sourcePath: string, targetPath: string, position: "
|
|
285
|
+
moveNode: (sourcePath: string, targetPath: string, position: "before" | "after" | "child") => {
|
|
284
286
|
success: boolean;
|
|
285
287
|
error?: string;
|
|
286
288
|
};
|
|
@@ -289,7 +291,7 @@ declare class __sveltets_Render<T> {
|
|
|
289
291
|
node?: LTreeNode<T> | undefined;
|
|
290
292
|
error?: string;
|
|
291
293
|
};
|
|
292
|
-
addNode: (parentPath: string,
|
|
294
|
+
addNode: (parentPath: string, nodeData: T, pathSegment?: string) => {
|
|
293
295
|
success: boolean;
|
|
294
296
|
node?: LTreeNode<T> | undefined;
|
|
295
297
|
error?: string;
|
|
@@ -299,8 +301,8 @@ declare class __sveltets_Render<T> {
|
|
|
299
301
|
node?: LTreeNode<T> | undefined;
|
|
300
302
|
error?: string;
|
|
301
303
|
};
|
|
302
|
-
applyChanges: (changes:
|
|
303
|
-
copyNodeWithDescendants: (sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T, siblingPath?: string, position?: "
|
|
304
|
+
applyChanges: (changes: TreeChange<T>[]) => ApplyChangesResult;
|
|
305
|
+
copyNodeWithDescendants: (sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T, siblingPath?: string, position?: "before" | "after") => {
|
|
304
306
|
success: boolean;
|
|
305
307
|
rootNode?: LTreeNode<T> | undefined;
|
|
306
308
|
count: number;
|
|
@@ -311,13 +313,10 @@ declare class __sveltets_Render<T> {
|
|
|
311
313
|
getAllData: () => T[];
|
|
312
314
|
closeContextMenu: () => void;
|
|
313
315
|
scrollToPath: (path: string, options?: {
|
|
314
|
-
/** Expand ancestors to make the node visible (default: true) */
|
|
315
316
|
expand?: boolean;
|
|
316
|
-
/** Also expand the target node itself to show its children (default: false for performance) */
|
|
317
317
|
expandTarget?: boolean;
|
|
318
318
|
highlight?: boolean;
|
|
319
319
|
scrollOptions?: ScrollIntoViewOptions;
|
|
320
|
-
/** Scroll only within the nearest scrollable container (prevents page scroll) */
|
|
321
320
|
containerScroll?: boolean;
|
|
322
321
|
} | undefined) => Promise<boolean>;
|
|
323
322
|
update: (updates: Partial<Pick<{
|
|
@@ -328,9 +327,12 @@ declare class __sveltets_Render<T> {
|
|
|
328
327
|
isExpandedMember?: string | null | undefined;
|
|
329
328
|
isSelectedMember?: string | null | undefined;
|
|
330
329
|
isDraggableMember?: string | null | undefined;
|
|
330
|
+
getIsDraggableCallback?: ((node: LTreeNode<T>) => boolean) | undefined;
|
|
331
331
|
isDropAllowedMember?: string | null | undefined;
|
|
332
332
|
allowedDropPositionsMember?: string | null | undefined;
|
|
333
333
|
getAllowedDropPositionsCallback?: ((node: LTreeNode<T>) => DropPosition[] | null | undefined) | undefined;
|
|
334
|
+
isCollapsibleMember?: string | null | undefined;
|
|
335
|
+
getIsCollapsibleCallback?: ((node: LTreeNode<T>) => boolean) | undefined;
|
|
334
336
|
hasChildrenMember?: string | null | undefined;
|
|
335
337
|
isSorted?: boolean | null | undefined;
|
|
336
338
|
displayValueMember?: string | null | undefined;
|
|
@@ -372,9 +374,9 @@ declare class __sveltets_Render<T> {
|
|
|
372
374
|
/**
|
|
373
375
|
* Use flat/centralized rendering instead of recursive node rendering.
|
|
374
376
|
* This significantly improves performance for large trees by:
|
|
377
|
+
* - Removing the {#key changeTracker} block that destroys all nodes on any change
|
|
375
378
|
* - Using a single flat loop instead of recursive component instantiation
|
|
376
379
|
* - Allowing Svelte's keyed {#each} to efficiently diff only changed nodes
|
|
377
|
-
* - Per-node reactive signals for O(1) data-only updates (updateNode, selection)
|
|
378
380
|
*/
|
|
379
381
|
useFlatRendering?: boolean;
|
|
380
382
|
/** Enable virtual scrolling in flat mode. Only visible nodes + overscan are rendered. */
|
|
@@ -420,7 +422,7 @@ declare class __sveltets_Render<T> {
|
|
|
420
422
|
scrollHighlightClass?: string | null | undefined;
|
|
421
423
|
contextMenuXOffset?: number | null | undefined;
|
|
422
424
|
contextMenuYOffset?: number | null | undefined;
|
|
423
|
-
}, "treeId" | "data" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "orderMember" | "isSorted" | "sortCallback" | "isDraggableMember" | "isDropAllowedMember" | "shouldDisplayDebugInformation" | "isSelectedMember" | "selectedNode" | "expandLevel" | "shouldToggleOnNodeClick" | "
|
|
425
|
+
}, "treeId" | "data" | "treePathSeparator" | "idMember" | "pathMember" | "parentPathMember" | "levelMember" | "hasChildrenMember" | "isExpandedMember" | "displayValueMember" | "getDisplayValueCallback" | "searchValueMember" | "getSearchValueCallback" | "orderMember" | "isSorted" | "sortCallback" | "isDraggableMember" | "getIsDraggableCallback" | "isDropAllowedMember" | "isCollapsibleMember" | "getIsCollapsibleCallback" | "shouldDisplayDebugInformation" | "beforeDropCallback" | "onNodeDrop" | "contextMenuCallback" | "isSelectedMember" | "selectedNode" | "expandLevel" | "shouldToggleOnNodeClick" | "initializeIndexCallback" | "searchText" | "shouldUseInternalSearchIndex" | "indexerBatchSize" | "indexerTimeout" | "shouldDisplayContextMenuInDebugMode" | "virtualScroll" | "virtualRowHeight" | "virtualOverscan" | "virtualContainerHeight" | "dragDropMode" | "dropZoneMode" | "onNodeClicked" | "onNodeDragStart" | "onNodeDragOver" | "bodyClass" | "selectedNodeClass" | "dragOverNodeClass" | "expandIconClass" | "collapseIconClass" | "leafIconClass" | "scrollHighlightTimeout" | "scrollHighlightClass" | "contextMenuXOffset" | "contextMenuYOffset">>) => void;
|
|
424
426
|
};
|
|
425
427
|
}
|
|
426
428
|
interface $$IsomorphicComponent {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts" generics="T">
|
|
2
|
+
import { setContext, onDestroy, type Snippet } from 'svelte';
|
|
3
|
+
import { createTreeController } from '../core/createTreeController.js';
|
|
4
|
+
import { TreeController, type TreeControllerProps } from '../core/TreeController.svelte.js';
|
|
5
|
+
|
|
6
|
+
interface Props extends TreeControllerProps<T> {
|
|
7
|
+
children?: Snippet<[TreeController<T>]>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
children,
|
|
12
|
+
...controllerProps
|
|
13
|
+
}: Props = $props();
|
|
14
|
+
|
|
15
|
+
const controller = createTreeController<T>(controllerProps as TreeControllerProps<T>);
|
|
16
|
+
|
|
17
|
+
// Set contexts that Node.svelte expects
|
|
18
|
+
setContext('Ltree', controller.tree);
|
|
19
|
+
setContext('NodeCallbacks', controller.nodeCallbacks);
|
|
20
|
+
setContext('NodeConfig', controller.nodeConfig);
|
|
21
|
+
if (controller.renderCoordinator) {
|
|
22
|
+
setContext('RenderCoordinator', controller.renderCoordinator);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
onDestroy(() => controller.destroy());
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
{@render children?.(controller)}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Snippet } from 'svelte';
|
|
2
|
+
import { TreeController, type TreeControllerProps } from '../core/TreeController.svelte.js';
|
|
3
|
+
declare function $$render<T>(): {
|
|
4
|
+
props: TreeControllerProps<T> & {
|
|
5
|
+
children?: Snippet<[TreeController<T>]>;
|
|
6
|
+
};
|
|
7
|
+
exports: {};
|
|
8
|
+
bindings: "";
|
|
9
|
+
slots: {};
|
|
10
|
+
events: {};
|
|
11
|
+
};
|
|
12
|
+
declare class __sveltets_Render<T> {
|
|
13
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
14
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
15
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
16
|
+
bindings(): "";
|
|
17
|
+
exports(): {};
|
|
18
|
+
}
|
|
19
|
+
interface $$IsomorphicComponent {
|
|
20
|
+
new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
21
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
22
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
23
|
+
<T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
24
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
25
|
+
}
|
|
26
|
+
declare const TreeProvider: $$IsomorphicComponent;
|
|
27
|
+
type TreeProvider<T> = InstanceType<typeof TreeProvider<T>>;
|
|
28
|
+
export default TreeProvider;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Auto-generated file - do not edit manually
|
|
2
2
|
// Generated by scripts/generate-constants.js
|
|
3
|
-
export const VERSION = "
|
|
3
|
+
export const VERSION = "5.0.0-rc02";
|
|
4
4
|
export const PACKAGE_NAME = "@keenmate/svelte-treeview";
|
|
5
5
|
export const AUTHOR = "KeenMate";
|
|
6
6
|
export const LICENSE = "MIT";
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import type { Index, SearchOptions } from 'flexsearch';
|
|
2
|
+
import { type LTreeNode } from '../ltree/ltree-node.svelte.js';
|
|
3
|
+
import { type Ltree, type InsertArrayResult, type ContextMenuItem, type DropPosition, type DragDropMode, type DropOperation, type TreeChange, type ApplyChangesResult } from '../ltree/types.js';
|
|
4
|
+
import { type RenderCoordinator, type RenderStats } from '../components/RenderCoordinator.svelte.js';
|
|
5
|
+
import '../global-api.js';
|
|
6
|
+
export interface NodeCallbacks<T> {
|
|
7
|
+
onNodeClicked: (node: LTreeNode<T>) => void;
|
|
8
|
+
onNodeRightClicked: (node: LTreeNode<T>, event: MouseEvent) => void;
|
|
9
|
+
onNodeDragStart: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
10
|
+
onNodeDragOver: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
11
|
+
onNodeDragLeave: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
12
|
+
onNodeDrop: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
13
|
+
onZoneDrop: (node: LTreeNode<T>, position: DropPosition, event: DragEvent) => void;
|
|
14
|
+
onTouchDragStart: (node: LTreeNode<T>, event: TouchEvent) => void;
|
|
15
|
+
onTouchDragMove: (node: LTreeNode<T>, event: TouchEvent) => void;
|
|
16
|
+
onTouchDragEnd: (node: LTreeNode<T>, event: TouchEvent) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface NodeConfig {
|
|
19
|
+
shouldToggleOnNodeClick: boolean;
|
|
20
|
+
expandIconClass: string;
|
|
21
|
+
collapseIconClass: string;
|
|
22
|
+
leafIconClass: string;
|
|
23
|
+
selectedNodeClass: string | null | undefined;
|
|
24
|
+
dragOverNodeClass: string | null | undefined;
|
|
25
|
+
dropZoneMode: 'floating' | 'glow';
|
|
26
|
+
dropZoneLayout: 'around' | 'above' | 'below' | 'wave' | 'wave2';
|
|
27
|
+
dropZoneStart: number | string;
|
|
28
|
+
dropZoneMaxWidth: number;
|
|
29
|
+
allowCopy: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface TreeControllerProps<T> {
|
|
32
|
+
idMember: string;
|
|
33
|
+
pathMember: string;
|
|
34
|
+
parentPathMember?: string | null | undefined;
|
|
35
|
+
levelMember?: string | null | undefined;
|
|
36
|
+
isExpandedMember?: string | null | undefined;
|
|
37
|
+
isSelectedMember?: string | null | undefined;
|
|
38
|
+
isDraggableMember?: string | null | undefined;
|
|
39
|
+
getIsDraggableCallback?: (node: LTreeNode<T>) => boolean;
|
|
40
|
+
isDropAllowedMember?: string | null | undefined;
|
|
41
|
+
allowedDropPositionsMember?: string | null | undefined;
|
|
42
|
+
getAllowedDropPositionsCallback?: (node: LTreeNode<T>) => DropPosition[] | null | undefined;
|
|
43
|
+
isCollapsibleMember?: string | null | undefined;
|
|
44
|
+
getIsCollapsibleCallback?: (node: LTreeNode<T>) => boolean;
|
|
45
|
+
hasChildrenMember?: string | null | undefined;
|
|
46
|
+
isSorted?: boolean | null | undefined;
|
|
47
|
+
displayValueMember?: string | null | undefined;
|
|
48
|
+
getDisplayValueCallback?: (node: LTreeNode<T>) => string;
|
|
49
|
+
searchValueMember?: string | null | undefined;
|
|
50
|
+
getSearchValueCallback?: (node: LTreeNode<T>) => string;
|
|
51
|
+
orderMember?: string | null | undefined;
|
|
52
|
+
treeId?: string | null | undefined;
|
|
53
|
+
treePathSeparator?: string | null | undefined;
|
|
54
|
+
sortCallback?: (items: LTreeNode<T>[]) => LTreeNode<T>[];
|
|
55
|
+
data: T[];
|
|
56
|
+
selectedNode?: LTreeNode<T> | null | undefined;
|
|
57
|
+
expandLevel?: number | null | undefined;
|
|
58
|
+
shouldToggleOnNodeClick?: boolean | null | undefined;
|
|
59
|
+
initializeIndexCallback?: () => Index;
|
|
60
|
+
searchText?: string | null | undefined;
|
|
61
|
+
shouldUseInternalSearchIndex?: boolean | null | undefined;
|
|
62
|
+
indexerBatchSize?: number | null | undefined;
|
|
63
|
+
indexerTimeout?: number | null | undefined;
|
|
64
|
+
shouldDisplayDebugInformation?: boolean;
|
|
65
|
+
shouldDisplayContextMenuInDebugMode?: boolean;
|
|
66
|
+
isLoading?: boolean;
|
|
67
|
+
progressiveRender?: boolean;
|
|
68
|
+
initialBatchSize?: number;
|
|
69
|
+
maxBatchSize?: number;
|
|
70
|
+
onRenderStart?: () => void;
|
|
71
|
+
onRenderProgress?: (stats: RenderStats) => void;
|
|
72
|
+
onRenderComplete?: (stats: RenderStats) => void;
|
|
73
|
+
useFlatRendering?: boolean;
|
|
74
|
+
/** Enable virtual scrolling in flat mode. Only visible nodes + overscan are rendered. */
|
|
75
|
+
virtualScroll?: boolean;
|
|
76
|
+
/** Explicit row height in px. Auto-measured from first row if not set. */
|
|
77
|
+
virtualRowHeight?: number;
|
|
78
|
+
/** Extra rows above/below viewport (default: 5) */
|
|
79
|
+
virtualOverscan?: number;
|
|
80
|
+
/** CSS height for scroll container. Auto-detected from parent if not set, fallback 400px. */
|
|
81
|
+
virtualContainerHeight?: string;
|
|
82
|
+
dragDropMode?: DragDropMode;
|
|
83
|
+
dropZoneMode?: 'floating' | 'glow';
|
|
84
|
+
dropZoneLayout?: 'around' | 'above' | 'below' | 'wave' | 'wave2';
|
|
85
|
+
dropZoneStart?: number | string;
|
|
86
|
+
dropZoneMaxWidth?: number;
|
|
87
|
+
allowCopy?: boolean;
|
|
88
|
+
autoHandleCopy?: boolean;
|
|
89
|
+
onNodeClicked?: (node: LTreeNode<T>) => void;
|
|
90
|
+
onNodeDragStart?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
91
|
+
onNodeDragOver?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
92
|
+
beforeDropCallback?: (dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => boolean | {
|
|
93
|
+
position?: DropPosition;
|
|
94
|
+
operation?: DropOperation;
|
|
95
|
+
} | void | Promise<boolean | {
|
|
96
|
+
position?: DropPosition;
|
|
97
|
+
operation?: DropOperation;
|
|
98
|
+
} | void>;
|
|
99
|
+
onNodeDrop?: (dropNode: LTreeNode<T> | null, draggedNode: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent, operation: DropOperation) => void;
|
|
100
|
+
contextMenuCallback?: (node: LTreeNode<T>, closeMenuCallback: () => void) => ContextMenuItem[];
|
|
101
|
+
hasContextMenuSnippet?: boolean;
|
|
102
|
+
bodyClass?: string | null | undefined;
|
|
103
|
+
selectedNodeClass?: string | null | undefined;
|
|
104
|
+
dragOverNodeClass?: string | null | undefined;
|
|
105
|
+
expandIconClass?: string | null | undefined;
|
|
106
|
+
collapseIconClass?: string | null | undefined;
|
|
107
|
+
leafIconClass?: string | null | undefined;
|
|
108
|
+
scrollHighlightTimeout?: number | null | undefined;
|
|
109
|
+
scrollHighlightClass?: string | null | undefined;
|
|
110
|
+
contextMenuXOffset?: number | null | undefined;
|
|
111
|
+
contextMenuYOffset?: number | null | undefined;
|
|
112
|
+
}
|
|
113
|
+
export declare class TreeController<T> {
|
|
114
|
+
tree: Ltree<T>;
|
|
115
|
+
renderCoordinator: RenderCoordinator | null;
|
|
116
|
+
nodeCallbacks: NodeCallbacks<T>;
|
|
117
|
+
nodeConfig: NodeConfig;
|
|
118
|
+
treeId: string;
|
|
119
|
+
treePathSeparator: string;
|
|
120
|
+
data: T[];
|
|
121
|
+
selectedNode: LTreeNode<T> | null | undefined;
|
|
122
|
+
insertResult: InsertArrayResult<T> | null | undefined;
|
|
123
|
+
searchText: string | null | undefined;
|
|
124
|
+
isRendering: boolean;
|
|
125
|
+
shouldDisplayDebugInformation: boolean;
|
|
126
|
+
shouldDisplayContextMenuInDebugMode: boolean;
|
|
127
|
+
isLoading: boolean;
|
|
128
|
+
useFlatRendering: boolean;
|
|
129
|
+
progressiveRender: boolean;
|
|
130
|
+
initialBatchSize: number;
|
|
131
|
+
maxBatchSize: number;
|
|
132
|
+
bodyClass: string | null | undefined;
|
|
133
|
+
dragDropMode: DragDropMode;
|
|
134
|
+
allowCopy: boolean;
|
|
135
|
+
autoHandleCopy: boolean;
|
|
136
|
+
onNodeClickedCb: ((node: LTreeNode<T>) => void) | undefined;
|
|
137
|
+
onNodeDragStartCb: ((node: LTreeNode<T>, event: DragEvent) => void) | undefined;
|
|
138
|
+
onNodeDragOverCb: ((node: LTreeNode<T>, event: DragEvent) => void) | undefined;
|
|
139
|
+
beforeDropCallbackCb: TreeControllerProps<T>['beforeDropCallback'];
|
|
140
|
+
onNodeDropCb: TreeControllerProps<T>['onNodeDrop'];
|
|
141
|
+
contextMenuCallbackCb: TreeControllerProps<T>['contextMenuCallback'];
|
|
142
|
+
onRenderStartCb: (() => void) | undefined;
|
|
143
|
+
onRenderProgressCb: ((stats: RenderStats) => void) | undefined;
|
|
144
|
+
onRenderCompleteCb: ((stats: RenderStats) => void) | undefined;
|
|
145
|
+
shouldToggleOnNodeClick: boolean;
|
|
146
|
+
expandIconClass: string;
|
|
147
|
+
collapseIconClass: string;
|
|
148
|
+
leafIconClass: string;
|
|
149
|
+
selectedNodeClass: string | null | undefined;
|
|
150
|
+
dragOverNodeClass: string | null | undefined;
|
|
151
|
+
dropZoneMode: "floating" | "glow";
|
|
152
|
+
dropZoneLayout: "around" | "above" | "below" | "wave" | "wave2";
|
|
153
|
+
dropZoneStart: string | number;
|
|
154
|
+
dropZoneMaxWidth: number;
|
|
155
|
+
scrollHighlightTimeout: number;
|
|
156
|
+
scrollHighlightClass: string | null | undefined;
|
|
157
|
+
contextMenuXOffset: number;
|
|
158
|
+
contextMenuYOffset: number;
|
|
159
|
+
hasContextMenuSnippet: boolean;
|
|
160
|
+
virtualScroll: boolean;
|
|
161
|
+
virtualRowHeight: number | undefined;
|
|
162
|
+
virtualOverscan: number;
|
|
163
|
+
virtualContainerHeight: string | undefined;
|
|
164
|
+
contextMenuVisible: boolean;
|
|
165
|
+
contextMenuX: number;
|
|
166
|
+
contextMenuY: number;
|
|
167
|
+
contextMenuNode: LTreeNode<T> | null;
|
|
168
|
+
isDebugMenuActive: boolean;
|
|
169
|
+
currentHighlight: {
|
|
170
|
+
element: HTMLElement;
|
|
171
|
+
timeoutId: ReturnType<typeof setTimeout>;
|
|
172
|
+
} | null;
|
|
173
|
+
draggedNode: LTreeNode<any> | null;
|
|
174
|
+
isDragInProgress: boolean;
|
|
175
|
+
hoveredNodeForDrop: LTreeNode<any> | null;
|
|
176
|
+
activeDropPosition: DropPosition | null;
|
|
177
|
+
currentDropOperation: DropOperation;
|
|
178
|
+
floatingZoneRect: {
|
|
179
|
+
top: number;
|
|
180
|
+
left: number;
|
|
181
|
+
width: number;
|
|
182
|
+
height: number;
|
|
183
|
+
} | null;
|
|
184
|
+
floatingHoveredZone: "before" | "after" | "child" | null;
|
|
185
|
+
touchDragState: {
|
|
186
|
+
node: LTreeNode<any> | null;
|
|
187
|
+
startX: number;
|
|
188
|
+
startY: number;
|
|
189
|
+
isDragging: boolean;
|
|
190
|
+
ghostElement: HTMLElement | null;
|
|
191
|
+
currentDropTarget: LTreeNode<any> | null;
|
|
192
|
+
};
|
|
193
|
+
touchTimer: ReturnType<typeof setTimeout> | null;
|
|
194
|
+
flatRenderedIds: Set<string>;
|
|
195
|
+
flatRenderQueue: string[];
|
|
196
|
+
flatRenderAnimationFrame: number | null;
|
|
197
|
+
currentBatchSize: number;
|
|
198
|
+
vsScrollTop: number;
|
|
199
|
+
vsMeasuredRowHeight: number | null;
|
|
200
|
+
vsContainerRef: HTMLDivElement | undefined;
|
|
201
|
+
vsDetectedHeight: string | null;
|
|
202
|
+
private vsRafPending;
|
|
203
|
+
isDropPlaceholderActive: boolean;
|
|
204
|
+
_skipInsertArray: boolean;
|
|
205
|
+
private lastFlatNodesTracker;
|
|
206
|
+
containerElement: HTMLElement | null;
|
|
207
|
+
vsRowHeight: number;
|
|
208
|
+
vsActive: boolean;
|
|
209
|
+
vsContainerStyle: string;
|
|
210
|
+
allFlatNodes: LTreeNode<T>[];
|
|
211
|
+
vsTotalCount: number;
|
|
212
|
+
vsTotalHeight: number;
|
|
213
|
+
vsStartIndex: number;
|
|
214
|
+
vsEndIndex: number;
|
|
215
|
+
vsOffsetY: number;
|
|
216
|
+
flatNodesToRender: LTreeNode<T>[];
|
|
217
|
+
get statistics(): {
|
|
218
|
+
nodeCount: number;
|
|
219
|
+
maxLevel: number;
|
|
220
|
+
filteredNodeCount: number;
|
|
221
|
+
isIndexing: boolean;
|
|
222
|
+
pendingIndexCount: number;
|
|
223
|
+
};
|
|
224
|
+
constructor(props: TreeControllerProps<T>);
|
|
225
|
+
handleVirtualScroll: (event: Event) => void;
|
|
226
|
+
expandNodes(nodePath: string): Promise<void>;
|
|
227
|
+
collapseNodes(nodePath: string): Promise<void>;
|
|
228
|
+
expandAll(nodePath?: string | null | undefined): void;
|
|
229
|
+
collapseAll(nodePath?: string | null | undefined): void;
|
|
230
|
+
filterNodes(searchTextVal: string, searchOptions?: SearchOptions): void;
|
|
231
|
+
searchNodes(searchTextVal: string | null | undefined, searchOptions?: SearchOptions): LTreeNode<T>[];
|
|
232
|
+
getChildren(parentPath: string): LTreeNode<T>[];
|
|
233
|
+
getSiblings(path: string): LTreeNode<T>[];
|
|
234
|
+
refreshSiblings(parentPath: string): void;
|
|
235
|
+
refreshNode(path: string): void;
|
|
236
|
+
getNodeByPath(path: string): LTreeNode<T> | null;
|
|
237
|
+
moveNode(sourcePath: string, targetPath: string, position: 'before' | 'after' | 'child'): {
|
|
238
|
+
success: boolean;
|
|
239
|
+
error?: string;
|
|
240
|
+
};
|
|
241
|
+
removeNode(path: string, includeDescendants?: boolean): {
|
|
242
|
+
success: boolean;
|
|
243
|
+
node?: LTreeNode<T>;
|
|
244
|
+
error?: string;
|
|
245
|
+
};
|
|
246
|
+
addNode(parentPath: string, nodeData: T, pathSegment?: string): {
|
|
247
|
+
success: boolean;
|
|
248
|
+
node?: LTreeNode<T>;
|
|
249
|
+
error?: string;
|
|
250
|
+
};
|
|
251
|
+
updateNode(path: string, dataUpdates: Partial<T>): {
|
|
252
|
+
success: boolean;
|
|
253
|
+
node?: LTreeNode<T>;
|
|
254
|
+
error?: string;
|
|
255
|
+
};
|
|
256
|
+
applyChanges(changes: TreeChange<T>[]): ApplyChangesResult;
|
|
257
|
+
copyNodeWithDescendants(sourceNode: LTreeNode<T>, targetParentPath: string, transformData: (data: T) => T, siblingPath?: string, position?: 'before' | 'after'): {
|
|
258
|
+
success: boolean;
|
|
259
|
+
rootNode?: LTreeNode<T>;
|
|
260
|
+
count: number;
|
|
261
|
+
error?: string;
|
|
262
|
+
};
|
|
263
|
+
getExpandedPaths(): string[];
|
|
264
|
+
setExpandedPaths(paths: string[]): void;
|
|
265
|
+
getAllData(): T[];
|
|
266
|
+
/** Open the context menu at the given screen coordinates (offsets are applied automatically). */
|
|
267
|
+
openContextMenu(node: LTreeNode<T>, screenX: number, screenY: number): void;
|
|
268
|
+
closeContextMenu(): void;
|
|
269
|
+
/** Call from ondragstart. Sets up dataTransfer, stores drag state, fires callback. */
|
|
270
|
+
startDrag(node: LTreeNode<T>, event: DragEvent): void;
|
|
271
|
+
/** Call from ondragover. preventDefault, calculates drop position, updates hover state.
|
|
272
|
+
* Pass `element` for position calculation (before/after/child based on cursor). */
|
|
273
|
+
dragOver(node: LTreeNode<T>, event: DragEvent, element?: HTMLElement): void;
|
|
274
|
+
/** Call from ondragleave. Clears hover state when cursor leaves element bounds. */
|
|
275
|
+
dragLeave(_node: LTreeNode<T>, event: DragEvent): void;
|
|
276
|
+
/** Call from ondrop. Uses calculated position or defaults to 'child'. */
|
|
277
|
+
drop(node: LTreeNode<T>, event: DragEvent): void;
|
|
278
|
+
/** Drop with explicit position (for custom drop zones or floating-style UI). */
|
|
279
|
+
dropAt(node: LTreeNode<T>, position: DropPosition, event: DragEvent | TouchEvent): void;
|
|
280
|
+
/** Cancel current drag and reset all state. */
|
|
281
|
+
cancelDrag(): void;
|
|
282
|
+
/** Touch drag start — proxy to internal touch handler. */
|
|
283
|
+
touchStart(node: LTreeNode<T>, event: TouchEvent): void;
|
|
284
|
+
/** Touch drag move — proxy to internal touch handler. */
|
|
285
|
+
touchMove(node: LTreeNode<T>, event: TouchEvent): void;
|
|
286
|
+
/** Touch drag end — proxy to internal touch handler. */
|
|
287
|
+
touchEnd(node: LTreeNode<T>, event: TouchEvent): void;
|
|
288
|
+
/** Get allowed drop positions for a node (proxies LTree method). */
|
|
289
|
+
getNodeAllowedDropPositions(node: LTreeNode<T>): DropPosition[] | null;
|
|
290
|
+
/** Get whether a node is draggable (proxies LTree resolution: callback > member > node property). */
|
|
291
|
+
getNodeIsDraggable(node: LTreeNode<T>): boolean;
|
|
292
|
+
/** Get whether a node is collapsible (proxies LTree resolution: callback > member > node property). */
|
|
293
|
+
getNodeIsCollapsible(node: LTreeNode<T>): boolean;
|
|
294
|
+
/** Calculate drop position from cursor location within an element (before/after/child).
|
|
295
|
+
* Same logic as Node.svelte's calculateGlowPosition, respecting allowed positions. */
|
|
296
|
+
calculateDropPositionFromEvent(event: DragEvent | MouseEvent, element: HTMLElement, allowedPositions?: DropPosition[] | null): DropPosition;
|
|
297
|
+
scrollToPath(path: string, options?: {
|
|
298
|
+
expand?: boolean;
|
|
299
|
+
expandTarget?: boolean;
|
|
300
|
+
highlight?: boolean;
|
|
301
|
+
scrollOptions?: ScrollIntoViewOptions;
|
|
302
|
+
containerScroll?: boolean;
|
|
303
|
+
containerElement?: HTMLElement;
|
|
304
|
+
}): Promise<boolean>;
|
|
305
|
+
/**
|
|
306
|
+
* Apply scroll highlight to a node element by ID.
|
|
307
|
+
* Returns true if the element was found and highlighted, false otherwise.
|
|
308
|
+
*/
|
|
309
|
+
private applyHighlight;
|
|
310
|
+
updateProps(updates: Partial<TreeControllerProps<T>>): void;
|
|
311
|
+
private _onNodeClicked;
|
|
312
|
+
private _onNodeRightClicked;
|
|
313
|
+
private isDropAllowedByMode;
|
|
314
|
+
private calculateDropPosition;
|
|
315
|
+
private _onNodeDragStart;
|
|
316
|
+
_onNodeDragEnd: (event: DragEvent) => void;
|
|
317
|
+
private _resetDragState;
|
|
318
|
+
private _handleDrop;
|
|
319
|
+
private _onNodeDragOver;
|
|
320
|
+
private _onNodeDragLeave;
|
|
321
|
+
private _onNodeDrop;
|
|
322
|
+
private _onZoneDrop;
|
|
323
|
+
isFloatingPositionAllowed(position: DropPosition): boolean;
|
|
324
|
+
handleFloatingZoneDragOver(position: 'before' | 'after' | 'child', event: DragEvent): void;
|
|
325
|
+
handleFloatingZoneDragLeave(): void;
|
|
326
|
+
handleFloatingZoneDrop(position: DropPosition, event: DragEvent): void;
|
|
327
|
+
private _onTouchStart;
|
|
328
|
+
private _onTouchMove;
|
|
329
|
+
private _onTouchEnd;
|
|
330
|
+
private _boundDocTouchMove;
|
|
331
|
+
private _boundDocTouchEnd;
|
|
332
|
+
private _addDocumentTouchListeners;
|
|
333
|
+
private _removeDocumentTouchListeners;
|
|
334
|
+
private _docTouchMove;
|
|
335
|
+
private _docTouchEnd;
|
|
336
|
+
private _resetTouchState;
|
|
337
|
+
private createGhostElement;
|
|
338
|
+
private removeGhostElement;
|
|
339
|
+
/** Clean up document-level listeners and ghost elements. Called on component destroy. */
|
|
340
|
+
destroy(): void;
|
|
341
|
+
private findNodeFromElement;
|
|
342
|
+
private updateDropTarget;
|
|
343
|
+
private clearDropTargetHighlight;
|
|
344
|
+
handleEmptyTreeDragOver: (event: DragEvent) => void;
|
|
345
|
+
handleEmptyTreeDragLeave: (event: DragEvent) => void;
|
|
346
|
+
handleEmptyTreeDrop: (event: DragEvent) => void;
|
|
347
|
+
handleEmptyTreeTouchEnd: (event: TouchEvent) => void;
|
|
348
|
+
handleTreeDragEnter: (event: DragEvent) => void;
|
|
349
|
+
handleTreeDragLeave: (event: DragEvent) => void;
|
|
350
|
+
scheduleFlatRenderBatch(): void;
|
|
351
|
+
private generateTreeId;
|
|
352
|
+
findScrollableAncestor(element: HTMLElement): HTMLElement | null;
|
|
353
|
+
}
|