@fps-games/editor 0.1.0 → 0.1.1-beta.1

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 (68) hide show
  1. package/dist/local-editor-harness.d.ts +70 -26
  2. package/dist/local-editor-harness.d.ts.map +1 -1
  3. package/dist/local-editor-harness.js +455 -21
  4. package/dist/local-editor-harness.js.map +1 -1
  5. package/node_modules/@fps-games/editor-babylon/package.json +4 -4
  6. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts +15 -0
  7. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -0
  8. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +163 -0
  9. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -0
  10. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +28 -0
  11. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +1 -0
  12. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +164 -0
  13. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -0
  14. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +20 -0
  15. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -0
  16. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +483 -0
  17. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -0
  18. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +56 -0
  19. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -0
  20. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +216 -0
  21. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -0
  22. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +13 -0
  23. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -0
  24. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +138 -0
  25. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -0
  26. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts +3 -0
  27. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  28. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +29 -5
  29. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  30. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +10 -2
  31. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  32. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +554 -93
  33. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  34. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +2 -0
  35. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  36. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +7 -3
  37. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  38. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  39. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +2 -0
  40. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  41. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +148 -2
  42. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  43. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +11 -2
  44. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  45. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +206 -173
  46. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  47. package/node_modules/@fps-games/editor-browser/package.json +1 -1
  48. package/node_modules/@fps-games/editor-core/dist/index.d.ts +2 -0
  49. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
  50. package/node_modules/@fps-games/editor-core/dist/index.js +2 -0
  51. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  52. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +138 -0
  53. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -0
  54. package/node_modules/@fps-games/editor-core/dist/inspector.js +298 -0
  55. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -0
  56. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +28 -0
  57. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  58. package/node_modules/@fps-games/editor-core/dist/scene-graph.js +143 -2
  59. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  60. package/node_modules/@fps-games/editor-core/dist/transform-math.d.ts +30 -0
  61. package/node_modules/@fps-games/editor-core/dist/transform-math.d.ts.map +1 -0
  62. package/node_modules/@fps-games/editor-core/dist/transform-math.js +339 -0
  63. package/node_modules/@fps-games/editor-core/dist/transform-math.js.map +1 -0
  64. package/node_modules/@fps-games/editor-core/package.json +2 -2
  65. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  66. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  67. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  68. package/package.json +11 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-editor-ui-hierarchy-actions.js","sourceRoot":"","sources":["../src/local-editor-ui-hierarchy-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { LocalEditorContextMenuController } from './local-editor-ui-context-menu';
2
+ import type { LocalEditorWorkbenchInputRouter } from './local-editor-ui-input-router';
3
+ import type { LocalEditorBrowserUiCallbacks, LocalEditorBrowserUiState } from './local-editor-ui-types';
4
+ export interface LocalEditorHierarchyController<TDocument = unknown> {
5
+ render(state: LocalEditorBrowserUiState<TDocument>): void;
6
+ handleDeleteShortcut(event: KeyboardEvent): boolean;
7
+ dispose(): void;
8
+ }
9
+ export interface LocalEditorHierarchyControllerOptions<TDocument = unknown> {
10
+ doc: Document;
11
+ panel: HTMLElement;
12
+ callbacks: LocalEditorBrowserUiCallbacks;
13
+ inputRouter: LocalEditorWorkbenchInputRouter;
14
+ contextMenu: LocalEditorContextMenuController;
15
+ getState: () => LocalEditorBrowserUiState<TDocument> | null;
16
+ requestRender: () => void;
17
+ onBeforeOpenContextMenu?: () => void;
18
+ }
19
+ export declare function createLocalEditorHierarchyController<TDocument = unknown>(options: LocalEditorHierarchyControllerOptions<TDocument>): LocalEditorHierarchyController<TDocument>;
20
+ //# sourceMappingURL=local-editor-ui-hierarchy-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-editor-ui-hierarchy-controller.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-hierarchy-controller.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,KAAK,EAGV,6BAA6B,EAC7B,yBAAyB,EAE1B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,8BAA8B,CAAC,SAAS,GAAG,OAAO;IACjE,MAAM,CAAC,KAAK,EAAE,yBAAyB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC1D,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IACpD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qCAAqC,CAAC,SAAS,GAAG,OAAO;IACxE,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,6BAA6B,CAAC;IACzC,WAAW,EAAE,+BAA+B,CAAC;IAC7C,WAAW,EAAE,gCAAgC,CAAC;IAC9C,QAAQ,EAAE,MAAM,yBAAyB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC5D,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC;AAED,wBAAgB,oCAAoC,CAAC,SAAS,GAAG,OAAO,EACtE,OAAO,EAAE,qCAAqC,CAAC,SAAS,CAAC,GACxD,8BAA8B,CAAC,SAAS,CAAC,CAkd3C"}
@@ -0,0 +1,483 @@
1
+ import { createLocalEditorHierarchyBlankMenu, createLocalEditorHierarchyDeleteShortcutAction, createLocalEditorHierarchyNodeMenu, } from './local-editor-ui-hierarchy-actions';
2
+ import { canLocalEditorHierarchyNodeHaveChildren, createLocalEditorHierarchyTreeModel, isLocalEditorHierarchyNodeMovable, } from './local-editor-ui-hierarchy-tree';
3
+ import { renderLocalEditorHierarchyPanel } from './local-editor-ui-hierarchy-view';
4
+ export function createLocalEditorHierarchyController(options) {
5
+ const { doc, panel, callbacks, inputRouter, contextMenu, getState, requestRender } = options;
6
+ const collapsedIds = new Set();
7
+ let hierarchyRename = null;
8
+ let hierarchyDrag = null;
9
+ let hierarchyDrop = null;
10
+ let hierarchyRootDrop = false;
11
+ let currentModel = null;
12
+ const getModel = (state) => {
13
+ if (currentModel)
14
+ return currentModel;
15
+ currentModel = createModel(state);
16
+ return currentModel;
17
+ };
18
+ const render = (state) => {
19
+ if (hierarchyRename && !state.hierarchy.some(item => item.id === hierarchyRename?.id))
20
+ hierarchyRename = null;
21
+ currentModel = createModel(state);
22
+ renderLocalEditorHierarchyPanel(doc, panel, {
23
+ model: currentModel,
24
+ rename: hierarchyRename,
25
+ drop: hierarchyDrop,
26
+ rootDrop: hierarchyRootDrop,
27
+ });
28
+ };
29
+ const onClick = (event) => {
30
+ const target = event.target instanceof HTMLElement ? event.target : null;
31
+ if (target?.closest('[data-editor-hierarchy-rename-input]'))
32
+ return;
33
+ const toggle = target?.closest('[data-editor-hierarchy-toggle]')?.dataset.editorHierarchyToggle;
34
+ if (toggle) {
35
+ event.preventDefault();
36
+ event.stopPropagation();
37
+ toggleExpanded(toggle);
38
+ return;
39
+ }
40
+ const createGroupButton = target?.closest('[data-editor-hierarchy-create-group]');
41
+ if (createGroupButton) {
42
+ const state = getState();
43
+ const parentId = state?.activeId ?? null;
44
+ if (parentId)
45
+ expandNode(parentId);
46
+ callbacks.onSceneGraphCreateGroup?.({
47
+ parentId,
48
+ activeId: parentId,
49
+ name: 'Group',
50
+ });
51
+ return;
52
+ }
53
+ const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
54
+ if (hierarchyButton?.dataset.editorHierarchyId) {
55
+ callbacks.onSelectHierarchyItem?.({
56
+ id: hierarchyButton.dataset.editorHierarchyId,
57
+ additive: event.shiftKey && !event.metaKey && !event.ctrlKey,
58
+ toggle: event.metaKey || event.ctrlKey,
59
+ });
60
+ }
61
+ };
62
+ const onContextMenu = (event) => {
63
+ openHierarchyContextMenu(event);
64
+ };
65
+ const onDoubleClick = (event) => {
66
+ const target = event.target instanceof HTMLElement ? event.target : null;
67
+ if (target?.closest('[data-editor-hierarchy-toggle]'))
68
+ return;
69
+ const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
70
+ const id = hierarchyButton?.dataset.editorHierarchyId;
71
+ if (!id)
72
+ return;
73
+ event.preventDefault();
74
+ beginHierarchyRename(id);
75
+ };
76
+ const onInput = (event) => {
77
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
78
+ if (!input?.dataset.editorHierarchyRenameInput || !hierarchyRename)
79
+ return;
80
+ hierarchyRename = {
81
+ id: input.dataset.editorHierarchyRenameInput,
82
+ value: input.value,
83
+ };
84
+ };
85
+ const onKeyDown = (event) => {
86
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
87
+ if (!input?.dataset.editorHierarchyRenameInput)
88
+ return;
89
+ if (event.key === 'Enter') {
90
+ event.preventDefault();
91
+ commitHierarchyRename(input.dataset.editorHierarchyRenameInput, input.value);
92
+ return;
93
+ }
94
+ if (event.key === 'Escape') {
95
+ event.preventDefault();
96
+ hierarchyRename = null;
97
+ requestRender();
98
+ }
99
+ };
100
+ const onFocusOut = (event) => {
101
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
102
+ if (!input?.dataset.editorHierarchyRenameInput)
103
+ return;
104
+ commitHierarchyRename(input.dataset.editorHierarchyRenameInput, input.value);
105
+ };
106
+ const onDragStart = (event) => {
107
+ const state = getState();
108
+ const target = event.target instanceof HTMLElement ? event.target : null;
109
+ const button = target?.closest('[data-editor-hierarchy-id]');
110
+ const id = button?.dataset.editorHierarchyId;
111
+ if (!id || !state)
112
+ return;
113
+ const model = getModel(state);
114
+ const node = model.getNode(id);
115
+ if (!isLocalEditorHierarchyNodeMovable(node)) {
116
+ event.preventDefault();
117
+ return;
118
+ }
119
+ hierarchyDrag = { id };
120
+ const draggedIds = resolveDraggedIds(state, model, id);
121
+ event.dataTransfer?.setData('text/plain', draggedIds.join(','));
122
+ if (event.dataTransfer)
123
+ event.dataTransfer.effectAllowed = 'move';
124
+ };
125
+ const onDragOver = (event) => {
126
+ const state = getState();
127
+ const target = event.target instanceof HTMLElement ? event.target : null;
128
+ const button = target?.closest('[data-editor-hierarchy-id]');
129
+ const targetId = button?.dataset.editorHierarchyId;
130
+ const draggedIds = readDraggedIds(event);
131
+ if (!state || draggedIds.length === 0)
132
+ return;
133
+ const model = getModel(state);
134
+ if (!targetId) {
135
+ handleRootDragOver(event, model, draggedIds);
136
+ return;
137
+ }
138
+ if (draggedIds.includes(targetId))
139
+ return;
140
+ event.preventDefault();
141
+ const placement = readHierarchyDropPlacementForNode(event, button, model.getNode(targetId));
142
+ const resolved = model.resolveDrop({ draggedIds, targetId, placement });
143
+ if (!resolved.ok) {
144
+ const changed = hierarchyDrop !== null || hierarchyRootDrop;
145
+ hierarchyDrop = null;
146
+ hierarchyRootDrop = false;
147
+ if (event.dataTransfer)
148
+ event.dataTransfer.dropEffect = 'none';
149
+ if (changed)
150
+ requestRender();
151
+ return;
152
+ }
153
+ const nextDrop = {
154
+ draggedId: resolved.draggedIds[0] ?? draggedIds[0],
155
+ targetId,
156
+ placement,
157
+ preserveWorldTransform: true,
158
+ };
159
+ const changed = !areHierarchyDropsEqual(hierarchyDrop, nextDrop) || hierarchyRootDrop;
160
+ hierarchyDrop = nextDrop;
161
+ hierarchyRootDrop = false;
162
+ if (event.dataTransfer) {
163
+ const canSubmitDrop = typeof callbacks.onSceneGraphMove === 'function' || placement === 'inside';
164
+ event.dataTransfer.dropEffect = canSubmitDrop ? 'move' : 'none';
165
+ }
166
+ if (changed)
167
+ requestRender();
168
+ };
169
+ const onDragLeave = (event) => {
170
+ if (!panel.contains(event.relatedTarget)) {
171
+ hierarchyDrop = null;
172
+ hierarchyRootDrop = false;
173
+ requestRender();
174
+ }
175
+ };
176
+ const onDragEnd = () => {
177
+ hierarchyDrag = null;
178
+ hierarchyDrop = null;
179
+ hierarchyRootDrop = false;
180
+ requestRender();
181
+ };
182
+ const onDrop = (event) => {
183
+ const state = getState();
184
+ const target = event.target instanceof HTMLElement ? event.target : null;
185
+ const button = target?.closest('[data-editor-hierarchy-id]');
186
+ const targetId = button?.dataset.editorHierarchyId;
187
+ const draggedIds = readDraggedIds(event);
188
+ if (!state || draggedIds.length === 0)
189
+ return;
190
+ const model = getModel(state);
191
+ if (!targetId) {
192
+ if (hierarchyDrop) {
193
+ const pendingDrop = hierarchyDrop;
194
+ event.preventDefault();
195
+ const resolved = model.resolveDrop({
196
+ draggedIds,
197
+ targetId: pendingDrop.targetId,
198
+ placement: pendingDrop.placement,
199
+ });
200
+ hierarchyDrag = null;
201
+ hierarchyDrop = null;
202
+ hierarchyRootDrop = false;
203
+ if (resolved.ok) {
204
+ expandDropParent(resolved);
205
+ submitResolvedDrop(resolved, pendingDrop.targetId, pendingDrop.placement, draggedIds);
206
+ }
207
+ else {
208
+ requestRender();
209
+ }
210
+ return;
211
+ }
212
+ handleRootDrop(event, model, draggedIds);
213
+ return;
214
+ }
215
+ if (draggedIds.includes(targetId))
216
+ return;
217
+ event.preventDefault();
218
+ const placement = readHierarchyDropPlacementForNode(event, button, model.getNode(targetId));
219
+ const resolved = model.resolveDrop({ draggedIds, targetId, placement });
220
+ hierarchyDrag = null;
221
+ hierarchyDrop = null;
222
+ hierarchyRootDrop = false;
223
+ if (!resolved.ok) {
224
+ requestRender();
225
+ return;
226
+ }
227
+ expandDropParent(resolved);
228
+ submitResolvedDrop(resolved, targetId, placement, draggedIds);
229
+ };
230
+ panel.addEventListener('click', onClick);
231
+ panel.addEventListener('contextmenu', onContextMenu);
232
+ panel.addEventListener('dblclick', onDoubleClick);
233
+ panel.addEventListener('input', onInput);
234
+ panel.addEventListener('keydown', onKeyDown);
235
+ panel.addEventListener('focusout', onFocusOut);
236
+ panel.addEventListener('dragstart', onDragStart);
237
+ panel.addEventListener('dragover', onDragOver);
238
+ panel.addEventListener('dragleave', onDragLeave);
239
+ panel.addEventListener('dragend', onDragEnd);
240
+ panel.addEventListener('drop', onDrop);
241
+ return {
242
+ render,
243
+ handleDeleteShortcut(event) {
244
+ const state = getState();
245
+ if (!state)
246
+ return false;
247
+ const action = createLocalEditorHierarchyDeleteShortcutAction({
248
+ state,
249
+ model: getModel(state),
250
+ hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
251
+ });
252
+ if (!action)
253
+ return false;
254
+ event.preventDefault();
255
+ submitHierarchyAction(action);
256
+ return true;
257
+ },
258
+ dispose() {
259
+ panel.removeEventListener('click', onClick);
260
+ panel.removeEventListener('contextmenu', onContextMenu);
261
+ panel.removeEventListener('dblclick', onDoubleClick);
262
+ panel.removeEventListener('input', onInput);
263
+ panel.removeEventListener('keydown', onKeyDown);
264
+ panel.removeEventListener('focusout', onFocusOut);
265
+ panel.removeEventListener('dragstart', onDragStart);
266
+ panel.removeEventListener('dragover', onDragOver);
267
+ panel.removeEventListener('dragleave', onDragLeave);
268
+ panel.removeEventListener('dragend', onDragEnd);
269
+ panel.removeEventListener('drop', onDrop);
270
+ },
271
+ };
272
+ function createModel(state) {
273
+ return createLocalEditorHierarchyTreeModel(state.hierarchy, state.selectedIds, state.activeId, {
274
+ collapsedIds,
275
+ defaultExpanded: true,
276
+ });
277
+ }
278
+ function resolveDraggedIds(state, model, draggedId) {
279
+ const selectedIds = state.selectedIds.includes(draggedId) ? state.selectedIds : [draggedId];
280
+ return model.getTopLevelSelection(selectedIds);
281
+ }
282
+ function readDraggedIds(event) {
283
+ const dataTransferIds = event.dataTransfer?.getData('text/plain')
284
+ .split(',')
285
+ .map(id => id.trim())
286
+ .filter(Boolean) ?? [];
287
+ return dataTransferIds.length > 0 ? dataTransferIds : hierarchyDrag?.id ? [hierarchyDrag.id] : [];
288
+ }
289
+ function resolveRootDraggedIds(model, draggedIds) {
290
+ const ids = model.getTopLevelSelection(draggedIds);
291
+ return ids.filter(id => isLocalEditorHierarchyNodeMovable(model.getNode(id)));
292
+ }
293
+ function handleRootDragOver(event, model, draggedIds) {
294
+ const ids = resolveRootDraggedIds(model, draggedIds);
295
+ if (ids.length === 0)
296
+ return;
297
+ event.preventDefault();
298
+ const changed = hierarchyDrop !== null || !hierarchyRootDrop;
299
+ hierarchyDrop = null;
300
+ hierarchyRootDrop = true;
301
+ if (event.dataTransfer)
302
+ event.dataTransfer.dropEffect = callbacks.onSceneGraphMove ? 'move' : 'none';
303
+ if (changed)
304
+ requestRender();
305
+ }
306
+ function handleRootDrop(event, model, draggedIds) {
307
+ const ids = resolveRootDraggedIds(model, draggedIds);
308
+ if (ids.length === 0)
309
+ return;
310
+ event.preventDefault();
311
+ hierarchyDrag = null;
312
+ hierarchyDrop = null;
313
+ hierarchyRootDrop = false;
314
+ callbacks.onSceneGraphMove?.({
315
+ ids,
316
+ targetId: null,
317
+ placement: 'root',
318
+ preserveWorldTransform: true,
319
+ });
320
+ requestRender();
321
+ }
322
+ function toggleExpanded(id) {
323
+ if (collapsedIds.has(id))
324
+ collapsedIds.delete(id);
325
+ else
326
+ collapsedIds.add(id);
327
+ requestRender();
328
+ }
329
+ function expandNode(id) {
330
+ if (!id)
331
+ return;
332
+ collapsedIds.delete(id);
333
+ }
334
+ function expandDropParent(resolved) {
335
+ if (resolved.placement === 'inside')
336
+ expandNode(resolved.parentId);
337
+ }
338
+ function commitHierarchyRename(id, value) {
339
+ if (!hierarchyRename || hierarchyRename.id !== id)
340
+ return;
341
+ const trimmed = value.trim();
342
+ const state = getState();
343
+ const item = state?.hierarchy.find(candidate => candidate.id === id) ?? null;
344
+ hierarchyRename = null;
345
+ if (trimmed && item && trimmed !== item.label)
346
+ callbacks.onSceneGraphRename?.({ id, name: trimmed });
347
+ requestRender();
348
+ }
349
+ function openHierarchyContextMenu(event) {
350
+ const target = event.target instanceof HTMLElement ? event.target : null;
351
+ if (!target || inputRouter.isEditableTarget(target))
352
+ return;
353
+ const state = getState();
354
+ if (!state || state.mode !== 'editor' || state.busy)
355
+ return;
356
+ event.preventDefault();
357
+ event.stopPropagation();
358
+ options.onBeforeOpenContextMenu?.();
359
+ const hadHierarchyDrop = hierarchyDrop !== null;
360
+ hierarchyDrag = null;
361
+ hierarchyDrop = null;
362
+ hierarchyRootDrop = false;
363
+ const model = getModel(state);
364
+ const hierarchyButton = target.closest('[data-editor-hierarchy-id]');
365
+ const node = model.getNode(hierarchyButton?.dataset.editorHierarchyId);
366
+ if (node && !state.selectedIds.includes(node.id) && isNodeSelectable(node)) {
367
+ callbacks.onSelectHierarchyItem?.({ id: node.id, additive: false, toggle: false });
368
+ }
369
+ const menu = node
370
+ ? createLocalEditorHierarchyNodeMenu({
371
+ state,
372
+ model,
373
+ node,
374
+ hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
375
+ })
376
+ : createLocalEditorHierarchyBlankMenu({
377
+ state,
378
+ model,
379
+ hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
380
+ });
381
+ contextMenu.open({
382
+ x: event.clientX,
383
+ y: event.clientY,
384
+ items: menu.items,
385
+ onAction(item) {
386
+ const action = menu.actions.get(item.id);
387
+ if (action)
388
+ submitHierarchyAction(action);
389
+ },
390
+ });
391
+ if (hadHierarchyDrop)
392
+ requestRender();
393
+ }
394
+ function submitHierarchyAction(action) {
395
+ if (action.kind === 'begin-rename') {
396
+ beginHierarchyRename(action.targetId);
397
+ return;
398
+ }
399
+ if (action.kind === 'group-selection') {
400
+ callbacks.onSceneGraphGroupSelection?.(action.intent);
401
+ return;
402
+ }
403
+ submitHierarchyContextAction(action.action);
404
+ }
405
+ function submitHierarchyContextAction(action) {
406
+ if (action.action === 'rename')
407
+ return;
408
+ if (action.action === 'create-group')
409
+ expandNode(action.parentId);
410
+ if (callbacks.onContextAction) {
411
+ callbacks.onContextAction(action);
412
+ return;
413
+ }
414
+ if (action.action === 'focus')
415
+ callbacks.onFocusSelection?.();
416
+ else if (action.action === 'create-group') {
417
+ callbacks.onSceneGraphCreateGroup?.({
418
+ parentId: action.parentId ?? null,
419
+ activeId: action.activeId ?? null,
420
+ name: 'Group',
421
+ });
422
+ }
423
+ else if (action.action === 'delete') {
424
+ callbacks.onSceneGraphDelete?.({
425
+ ids: action.targetIds,
426
+ activeId: action.activeId ?? null,
427
+ });
428
+ }
429
+ }
430
+ function beginHierarchyRename(id) {
431
+ const state = getState();
432
+ const model = state ? getModel(state) : null;
433
+ const node = model?.getNode(id) ?? null;
434
+ if (!node || node.protected || node.item.locked || node.item.renamable === false)
435
+ return;
436
+ hierarchyRename = { id, value: node.label };
437
+ requestRender();
438
+ }
439
+ function submitResolvedDrop(resolved, targetId, placement, draggedIds) {
440
+ if (callbacks.onSceneGraphMove) {
441
+ callbacks.onSceneGraphMove({
442
+ ids: resolved.draggedIds,
443
+ targetId,
444
+ placement,
445
+ parentId: resolved.parentId,
446
+ beforeId: resolved.beforeId,
447
+ afterId: resolved.afterId,
448
+ preserveWorldTransform: true,
449
+ });
450
+ }
451
+ else if (placement === 'inside') {
452
+ callbacks.onSceneGraphDrop?.({
453
+ draggedId: resolved.draggedIds[0] ?? draggedIds[0],
454
+ targetId,
455
+ placement,
456
+ preserveWorldTransform: true,
457
+ });
458
+ }
459
+ else {
460
+ requestRender();
461
+ }
462
+ }
463
+ }
464
+ function isNodeSelectable(node) {
465
+ return node.item.selectable !== false && node.item.locked !== true && node.protected !== true;
466
+ }
467
+ function readHierarchyDropPlacementForNode(event, target, node) {
468
+ const rect = target.getBoundingClientRect();
469
+ const offsetY = event.clientY - rect.top;
470
+ const edgeRatio = canLocalEditorHierarchyNodeHaveChildren(node) ? 0.12 : 0.25;
471
+ if (offsetY < rect.height * edgeRatio)
472
+ return 'before';
473
+ if (offsetY > rect.height * (1 - edgeRatio))
474
+ return 'after';
475
+ return 'inside';
476
+ }
477
+ function areHierarchyDropsEqual(left, right) {
478
+ return left?.draggedId === right?.draggedId
479
+ && left?.targetId === right?.targetId
480
+ && left?.placement === right?.placement
481
+ && left?.preserveWorldTransform === right?.preserveWorldTransform;
482
+ }
483
+ //# sourceMappingURL=local-editor-ui-hierarchy-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-editor-ui-hierarchy-controller.js","sourceRoot":"","sources":["../src/local-editor-ui-hierarchy-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,8CAA8C,EAC9C,kCAAkC,GAEnC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,uCAAuC,EACvC,mCAAmC,EAEnC,iCAAiC,GAGlC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AA4BnF,MAAM,UAAU,oCAAoC,CAClD,OAAyD;IAEzD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAC7F,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,IAAI,eAAe,GAAyC,IAAI,CAAC;IACjE,IAAI,aAAa,GAA0B,IAAI,CAAC;IAChD,IAAI,aAAa,GAAkD,IAAI,CAAC;IACxE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,YAAY,GAAyC,IAAI,CAAC;IAE9D,MAAM,QAAQ,GAAG,CAAC,KAA2C,EAAiC,EAAE;QAC9F,IAAI,YAAY;YAAE,OAAO,YAAY,CAAC;QACtC,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAA2C,EAAQ,EAAE;QACnE,IAAI,eAAe,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,eAAe,EAAE,EAAE,CAAC;YAAE,eAAe,GAAG,IAAI,CAAC;QAC9G,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,+BAA+B,CAAC,GAAG,EAAE,KAAK,EAAE;YAC1C,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,IAAI,MAAM,EAAE,OAAO,CAAC,sCAAsC,CAAC;YAAE,OAAO;QACpE,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAc,gCAAgC,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;QAC7G,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,GAAG,MAAM,EAAE,OAAO,CAAoB,sCAAsC,CAAC,CAAC;QACrG,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC;YACzC,IAAI,QAAQ;gBAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnC,SAAS,CAAC,uBAAuB,EAAE,CAAC;gBAClC,QAAQ;gBACR,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,EAAE,OAAO,CAAoB,4BAA4B,CAAC,CAAC;QACzF,IAAI,eAAe,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC/C,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAChC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,iBAAiB;gBAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC5D,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAChD,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,IAAI,MAAM,EAAE,OAAO,CAAC,gCAAgC,CAAC;YAAE,OAAO;QAC9D,MAAM,eAAe,GAAG,MAAM,EAAE,OAAO,CAAoB,4BAA4B,CAAC,CAAC;QACzF,MAAM,EAAE,GAAG,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC;QACtD,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,KAAY,EAAQ,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,0BAA0B,IAAI,CAAC,eAAe;YAAE,OAAO;QAC3E,eAAe,GAAG;YAChB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,0BAA0B;YAC5C,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAQ,EAAE;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,0BAA0B;YAAE,OAAO;QACvD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,eAAe,GAAG,IAAI,CAAC;YACvB,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,0BAA0B;YAAE,OAAO;QACvD,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAQ,EAAE;QAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAoB,4BAA4B,CAAC,CAAC;QAChF,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC;QAC7C,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK;YAAE,OAAO;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,aAAa,GAAG,EAAE,EAAE,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,YAAY;YAAE,KAAK,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC;IACpE,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAQ,EAAE;QAC5C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAoB,4BAA4B,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC;QACnD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC1C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,aAAa,KAAK,IAAI,IAAI,iBAAiB,CAAC;YAC5D,aAAa,GAAG,IAAI,CAAC;YACrB,iBAAiB,GAAG,KAAK,CAAC;YAC1B,IAAI,KAAK,CAAC,YAAY;gBAAE,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;YAC/D,IAAI,OAAO;gBAAE,aAAa,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAE;YACnD,QAAQ;YACR,SAAS;YACT,sBAAsB,EAAE,IAAI;SAC7B,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,sBAAsB,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,iBAAiB,CAAC;QACtF,aAAa,GAAG,QAAQ,CAAC;QACzB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,gBAAgB,KAAK,UAAU,IAAI,SAAS,KAAK,QAAQ,CAAC;YACjG,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAClE,CAAC;QACD,IAAI,OAAO;YAAE,aAAa,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAQ,EAAE;QAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC,EAAE,CAAC;YACxD,aAAa,GAAG,IAAI,CAAC;YACrB,iBAAiB,GAAG,KAAK,CAAC;YAC1B,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,aAAa,GAAG,IAAI,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC;QACrB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAQ,EAAE;QACxC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAoB,4BAA4B,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC;QACnD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAG,aAAa,CAAC;gBAClC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;oBACjC,UAAU;oBACV,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,SAAS,EAAE,WAAW,CAAC,SAAS;iBACjC,CAAC,CAAC;gBACH,aAAa,GAAG,IAAI,CAAC;gBACrB,aAAa,GAAG,IAAI,CAAC;gBACrB,iBAAiB,GAAG,KAAK,CAAC;gBAC1B,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBAC3B,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACxF,CAAC;qBAAM,CAAC;oBACN,aAAa,EAAE,CAAC;gBAClB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC1C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACxE,aAAa,GAAG,IAAI,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC;QACrB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACrD,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAClD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/C,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACjD,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/C,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACjD,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO;QACL,MAAM;QACN,oBAAoB,CAAC,KAAK;YACxB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,MAAM,MAAM,GAAG,8CAA8C,CAAC;gBAC5D,KAAK;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;gBACtB,wBAAwB,EAAE,OAAO,SAAS,CAAC,0BAA0B,KAAK,UAAU;aACrF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,KAAK,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACxD,KAAK,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACrD,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChD,KAAK,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACpD,KAAK,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACpD,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChD,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;IAEF,SAAS,WAAW,CAAC,KAA2C;QAC9D,OAAO,mCAAmC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE;YAC7F,YAAY;YACZ,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,SAAS,iBAAiB,CACxB,KAA2C,EAC3C,KAAoC,EACpC,SAAiB;QAEjB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,OAAO,KAAK,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,cAAc,CAAC,KAAgB;QACtC,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;aAC9D,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,CAAC;IAED,SAAS,qBAAqB,CAAC,KAAoC,EAAE,UAA6B;QAChG,MAAM,GAAG,GAAG,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,iCAAiC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,SAAS,kBAAkB,CACzB,KAAgB,EAChB,KAAoC,EACpC,UAA6B;QAE7B,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,aAAa,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC;QAC7D,aAAa,GAAG,IAAI,CAAC;QACrB,iBAAiB,GAAG,IAAI,CAAC;QACzB,IAAI,KAAK,CAAC,YAAY;YAAE,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACrG,IAAI,OAAO;YAAE,aAAa,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS,cAAc,CACrB,KAAgB,EAChB,KAAoC,EACpC,UAA6B;QAE7B,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,aAAa,GAAG,IAAI,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC;QACrB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC3B,GAAG;YACH,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,MAAM;YACjB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;QACH,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,cAAc,CAAC,EAAU;QAChC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;YAC7C,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,UAAU,CAAC,EAA6B;QAC/C,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,gBAAgB,CAAC,QAA4C;QACpE,IAAI,QAAQ,CAAC,SAAS,KAAK,QAAQ;YAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,SAAS,qBAAqB,CAAC,EAAU,EAAE,KAAa;QACtD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;QAC7E,eAAe,GAAG,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK;YAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrG,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,wBAAwB,CAAC,KAAiB;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAAE,OAAO;QAC5D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO;QAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAG,aAAa,KAAK,IAAI,CAAC;QAChD,aAAa,GAAG,IAAI,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC;QACrB,iBAAiB,GAAG,KAAK,CAAC;QAE1B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAoB,4BAA4B,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,SAAS,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,GAAG,IAAI;YACf,CAAC,CAAC,kCAAkC,CAAC;gBACjC,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,wBAAwB,EAAE,OAAO,SAAS,CAAC,0BAA0B,KAAK,UAAU;aACrF,CAAC;YACJ,CAAC,CAAC,mCAAmC,CAAC;gBAClC,KAAK;gBACL,KAAK;gBACL,wBAAwB,EAAE,OAAO,SAAS,CAAC,0BAA0B,KAAK,UAAU;aACrF,CAAC,CAAC;QAEP,WAAW,CAAC,IAAI,CAAC;YACf,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,CAAC,IAAI;gBACX,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,MAAM;oBAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;SACF,CAAC,CAAC;QACH,IAAI,gBAAgB;YAAE,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,SAAS,qBAAqB,CAAC,MAAkC;QAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACtC,SAAS,CAAC,0BAA0B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,4BAA4B,CAAC,MAAgC;QACpE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc;YAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC9B,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;YAAE,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;aACzD,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAC1C,SAAS,CAAC,uBAAuB,EAAE,CAAC;gBAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;gBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;gBACjC,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,SAAS,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,GAAG,EAAE,MAAM,CAAC,SAAS;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,oBAAoB,CAAC,EAAU;QACtC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO;QACzF,eAAe,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5C,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,kBAAkB,CACzB,QAA4C,EAC5C,QAAgB,EAChB,SAAoD,EACpD,UAA6B;QAE7B,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC/B,SAAS,CAAC,gBAAgB,CAAC;gBACzB,GAAG,EAAE,QAAQ,CAAC,UAAU;gBACxB,QAAQ;gBACR,SAAS;gBACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAE;gBACnD,QAAQ;gBACR,SAAS;gBACT,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA8E;IACtG,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AAChG,CAAC;AAED,SAAS,iCAAiC,CACxC,KAAgB,EAChB,MAAmB,EACnB,IAAyC;IAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzC,MAAM,SAAS,GAAG,uCAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAmD,EACnD,KAAoD;IAEpD,OAAO,IAAI,EAAE,SAAS,KAAK,KAAK,EAAE,SAAS;WACtC,IAAI,EAAE,QAAQ,KAAK,KAAK,EAAE,QAAQ;WAClC,IAAI,EAAE,SAAS,KAAK,KAAK,EAAE,SAAS;WACpC,IAAI,EAAE,sBAAsB,KAAK,KAAK,EAAE,sBAAsB,CAAC;AACtE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { LocalEditorBrowserUiHierarchyItem } from './local-editor-ui-types';
2
+ export type LocalEditorHierarchyNodeRole = 'root' | 'group' | 'object';
3
+ export type LocalEditorHierarchyDropPlacement = 'inside' | 'before' | 'after' | 'root';
4
+ export interface LocalEditorHierarchyTreeOptions {
5
+ expandedIds?: ReadonlySet<string> | readonly string[];
6
+ collapsedIds?: ReadonlySet<string> | readonly string[];
7
+ defaultExpanded?: boolean;
8
+ }
9
+ export interface LocalEditorHierarchyTreeNode {
10
+ id: string;
11
+ label: string;
12
+ item: LocalEditorBrowserUiHierarchyItem;
13
+ parentId: string | null;
14
+ childIds: string[];
15
+ depth: number;
16
+ siblingIndex: number;
17
+ inputIndex: number;
18
+ role: LocalEditorHierarchyNodeRole;
19
+ protected: boolean;
20
+ selected: boolean;
21
+ active: boolean;
22
+ expanded: boolean;
23
+ visible: boolean;
24
+ }
25
+ export interface LocalEditorHierarchyDropResolution {
26
+ ok: boolean;
27
+ reason?: string;
28
+ placement: LocalEditorHierarchyDropPlacement;
29
+ draggedIds: string[];
30
+ targetId: string | null;
31
+ parentId: string | null;
32
+ beforeId: string | null;
33
+ afterId: string | null;
34
+ }
35
+ export interface LocalEditorHierarchyDropInput {
36
+ draggedIds: readonly string[];
37
+ targetId?: string | null;
38
+ placement: LocalEditorHierarchyDropPlacement;
39
+ }
40
+ export interface LocalEditorHierarchyTreeModel {
41
+ readonly nodes: LocalEditorHierarchyTreeNode[];
42
+ readonly visibleRows: LocalEditorHierarchyTreeNode[];
43
+ readonly rootIds: string[];
44
+ readonly byId: ReadonlyMap<string, LocalEditorHierarchyTreeNode>;
45
+ readonly childrenByParentId: ReadonlyMap<string | null, string[]>;
46
+ getNode(id: string | null | undefined): LocalEditorHierarchyTreeNode | null;
47
+ getChildren(parentId: string | null | undefined): LocalEditorHierarchyTreeNode[];
48
+ getAncestors(id: string | null | undefined): LocalEditorHierarchyTreeNode[];
49
+ isDescendant(candidateId: string, ancestorId: string): boolean;
50
+ getTopLevelSelection(ids: readonly string[]): string[];
51
+ resolveDrop(input: LocalEditorHierarchyDropInput): LocalEditorHierarchyDropResolution;
52
+ }
53
+ export declare function createLocalEditorHierarchyTreeModel(items: readonly LocalEditorBrowserUiHierarchyItem[], selectedIds?: readonly string[], activeId?: string | null, options?: LocalEditorHierarchyTreeOptions): LocalEditorHierarchyTreeModel;
54
+ export declare function isLocalEditorHierarchyNodeMovable(node: LocalEditorHierarchyTreeNode | null): boolean;
55
+ export declare function canLocalEditorHierarchyNodeHaveChildren(node: LocalEditorHierarchyTreeNode | null): boolean;
56
+ //# sourceMappingURL=local-editor-ui-hierarchy-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-editor-ui-hierarchy-tree.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-hierarchy-tree.ts"],"names":[],"mappings":"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"}