@limble/limble-tree 0.12.4 → 1.0.0-alpha.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.
- package/README.md +42 -149
- package/esm2020/lib/components/branch/branch.component.mjs +87 -0
- package/esm2020/lib/components/dropzone/dropzone.component.mjs +35 -0
- package/esm2020/lib/components/host-component.interface.mjs +2 -0
- package/esm2020/lib/components/node-component.interface.mjs +2 -0
- package/esm2020/lib/components/root/root.component.mjs +37 -0
- package/esm2020/lib/core/branch-options.interface.mjs +2 -0
- package/esm2020/lib/core/configuration/configuration.mjs +17 -0
- package/esm2020/lib/core/configuration/tree-options.interface.mjs +2 -0
- package/esm2020/lib/core/index.mjs +6 -0
- package/esm2020/lib/core/relationship.interface.mjs +2 -0
- package/esm2020/lib/core/tree-branch/tree-branch.mjs +246 -0
- package/esm2020/lib/core/tree-node-base.mjs +68 -0
- package/esm2020/lib/core/tree-root/tree-root.mjs +69 -0
- package/esm2020/lib/core/tree-service/tree.service.mjs +19 -0
- package/esm2020/lib/errors/index.mjs +2 -0
- package/esm2020/lib/errors/tree-error.mjs +3 -0
- package/esm2020/lib/events/drag/drag-end-event.mjs +28 -0
- package/esm2020/lib/events/drag/drag-start-event.mjs +12 -0
- package/esm2020/lib/events/drag/drop-event.mjs +20 -0
- package/esm2020/lib/events/drag/index.mjs +4 -0
- package/esm2020/lib/events/index.mjs +3 -0
- package/esm2020/lib/events/relational/graft-event.mjs +24 -0
- package/esm2020/lib/events/relational/index.mjs +4 -0
- package/esm2020/lib/events/relational/prune-event.mjs +24 -0
- package/esm2020/lib/events/relational/relational-tree-event.interface.mjs +2 -0
- package/esm2020/lib/extras/collapse/collapse.mjs +33 -0
- package/esm2020/lib/extras/collapse/collapse.module.mjs +15 -0
- package/esm2020/lib/extras/collapse/collapse.service.mjs +20 -0
- package/esm2020/lib/extras/collapse/index.mjs +3 -0
- package/esm2020/lib/extras/drag-and-drop/drag-and-drop.mjs +89 -0
- package/esm2020/lib/extras/drag-and-drop/drag-and-drop.module.mjs +19 -0
- package/esm2020/lib/extras/drag-and-drop/drag-and-drop.service.mjs +28 -0
- package/esm2020/lib/extras/drag-and-drop/drag-state.mjs +47 -0
- package/esm2020/lib/extras/drag-and-drop/draggable.directive.mjs +30 -0
- package/esm2020/lib/extras/drag-and-drop/dragover-no-change-detect.mjs +40 -0
- package/esm2020/lib/extras/drag-and-drop/dropzone-renderer.mjs +176 -0
- package/esm2020/lib/extras/drag-and-drop/index.mjs +5 -0
- package/esm2020/lib/legacy/index.mjs +7 -0
- package/esm2020/lib/legacy/legacy-component-obj.interface.mjs +2 -0
- package/esm2020/lib/legacy/legacy-tree-data.interface.mjs +2 -0
- package/esm2020/lib/legacy/legacy-tree-options.interface.mjs +2 -0
- package/esm2020/lib/legacy/legacy-tree.mjs +74 -0
- package/esm2020/lib/legacy/limble-tree-legacy.module.mjs +20 -0
- package/esm2020/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +78 -0
- package/esm2020/lib/limble-tree.module.mjs +21 -0
- package/esm2020/lib/structure/branchable.interface.mjs +2 -0
- package/esm2020/lib/structure/container-tree-node.interface.mjs +2 -0
- package/esm2020/lib/structure/content-container.interface.mjs +2 -0
- package/esm2020/lib/structure/event-conduit.interface.mjs +2 -0
- package/esm2020/lib/structure/graftable.interface.mjs +2 -0
- package/esm2020/lib/structure/index.mjs +12 -0
- package/esm2020/lib/structure/tree-branch-node.interface.mjs +2 -0
- package/esm2020/lib/structure/tree-event.interface.mjs +2 -0
- package/esm2020/lib/structure/tree-node.interface.mjs +2 -0
- package/esm2020/lib/structure/tree-plot.mjs +2 -0
- package/esm2020/lib/structure/tree-relationship.interface.mjs +2 -0
- package/esm2020/lib/structure/tree-root.node.interface.mjs +2 -0
- package/{esm2015/limble-limble-tree.js → esm2020/limble-limble-tree.mjs} +4 -4
- package/esm2020/public-api.mjs +12 -0
- package/esm2020/shared/assert.mjs +7 -0
- package/fesm2015/limble-limble-tree.mjs +1310 -0
- package/fesm2015/limble-limble-tree.mjs.map +1 -0
- package/fesm2020/limble-limble-tree.mjs +1300 -0
- package/fesm2020/limble-limble-tree.mjs.map +1 -0
- package/{limble-limble-tree.d.ts → index.d.ts} +5 -5
- package/lib/components/branch/branch.component.d.ts +26 -0
- package/lib/components/dropzone/dropzone.component.d.ts +13 -0
- package/lib/components/host-component.interface.d.ts +6 -0
- package/lib/components/node-component.interface.d.ts +5 -0
- package/lib/components/root/root.component.d.ts +14 -0
- package/lib/core/branch-options.interface.d.ts +14 -0
- package/lib/core/configuration/configuration.d.ts +11 -0
- package/lib/core/configuration/tree-options.interface.d.ts +35 -0
- package/lib/core/index.d.ts +5 -0
- package/lib/core/relationship.interface.d.ts +6 -0
- package/lib/core/tree-branch/tree-branch.d.ts +44 -0
- package/lib/core/tree-node-base.d.ts +26 -0
- package/lib/core/tree-root/tree-root.d.ts +28 -0
- package/lib/core/tree-service/tree.service.d.ts +9 -0
- package/lib/errors/index.d.ts +1 -0
- package/lib/errors/tree-error.d.ts +2 -0
- package/lib/events/drag/drag-end-event.d.ts +25 -0
- package/lib/events/drag/drag-start-event.d.ts +8 -0
- package/lib/events/drag/drop-event.d.ts +16 -0
- package/lib/events/drag/index.d.ts +3 -0
- package/lib/events/index.d.ts +2 -0
- package/lib/events/relational/graft-event.d.ts +15 -0
- package/lib/events/relational/index.d.ts +3 -0
- package/lib/events/relational/prune-event.d.ts +15 -0
- package/lib/events/relational/relational-tree-event.interface.d.ts +6 -0
- package/lib/extras/collapse/collapse.d.ts +11 -0
- package/lib/extras/collapse/collapse.module.d.ts +6 -0
- package/lib/extras/collapse/collapse.service.d.ts +9 -0
- package/lib/extras/collapse/index.d.ts +2 -0
- package/lib/extras/drag-and-drop/drag-and-drop.d.ts +17 -0
- package/lib/extras/drag-and-drop/drag-and-drop.module.d.ts +8 -0
- package/lib/extras/drag-and-drop/drag-and-drop.service.d.ts +16 -0
- package/lib/extras/drag-and-drop/drag-state.d.ts +23 -0
- package/lib/extras/drag-and-drop/draggable.directive.d.ts +12 -0
- package/lib/{custom-event-bindings/dragover-no-change-detect.directive.d.ts → extras/drag-and-drop/dragover-no-change-detect.d.ts} +14 -14
- package/lib/extras/drag-and-drop/dropzone-renderer.d.ts +28 -0
- package/lib/extras/drag-and-drop/index.d.ts +4 -0
- package/lib/legacy/index.d.ts +6 -0
- package/lib/legacy/legacy-component-obj.interface.d.ts +13 -0
- package/lib/legacy/legacy-tree-data.interface.d.ts +18 -0
- package/lib/legacy/legacy-tree-options.interface.d.ts +34 -0
- package/lib/legacy/legacy-tree.d.ts +14 -0
- package/lib/legacy/limble-tree-legacy.module.d.ts +8 -0
- package/lib/legacy/limble-tree-root/limble-tree-root.component.d.ts +28 -0
- package/lib/limble-tree.module.d.ts +9 -14
- package/lib/structure/branchable.interface.d.ts +5 -0
- package/lib/structure/container-tree-node.interface.d.ts +3 -0
- package/lib/structure/content-container.interface.d.ts +3 -0
- package/lib/structure/event-conduit.interface.d.ts +6 -0
- package/lib/structure/graftable.interface.d.ts +6 -0
- package/lib/structure/index.d.ts +11 -0
- package/lib/structure/tree-branch-node.interface.d.ts +5 -0
- package/lib/structure/tree-event.interface.d.ts +5 -0
- package/lib/structure/tree-node.interface.d.ts +9 -0
- package/lib/structure/tree-plot.d.ts +1 -0
- package/lib/structure/tree-relationship.interface.d.ts +7 -0
- package/lib/structure/tree-root.node.interface.d.ts +2 -0
- package/package.json +24 -19
- package/public-api.d.ts +8 -3
- package/shared/assert.d.ts +1 -0
- package/bundles/limble-limble-tree.umd.js +0 -2910
- package/bundles/limble-limble-tree.umd.js.map +0 -1
- package/esm2015/lib/classes/Branch.js +0 -153
- package/esm2015/lib/classes/DropZone.js +0 -71
- package/esm2015/lib/classes/DropZoneLocation.js +0 -16
- package/esm2015/lib/custom-event-bindings/dragleave-no-change-detect.directive.js +0 -33
- package/esm2015/lib/custom-event-bindings/dragover-no-change-detect.directive.js +0 -39
- package/esm2015/lib/drop-zone/drop-zone.component.js +0 -81
- package/esm2015/lib/limble-tree-branch/limble-tree-branch.component.js +0 -116
- package/esm2015/lib/limble-tree-node/limble-tree-node.component.js +0 -484
- package/esm2015/lib/limble-tree-placeholder/limble-tree-placeholder.component.js +0 -75
- package/esm2015/lib/limble-tree-root/drop-zone.service.js +0 -377
- package/esm2015/lib/limble-tree-root/limble-tree-root.component.js +0 -178
- package/esm2015/lib/limble-tree-root/tree-construction-status.service.js +0 -33
- package/esm2015/lib/limble-tree-root/tree.service.js +0 -301
- package/esm2015/lib/limble-tree.module.js +0 -47
- package/esm2015/lib/singletons/component-creator.service.js +0 -19
- package/esm2015/lib/singletons/drag-state.service.js +0 -64
- package/esm2015/lib/singletons/global-events.service.js +0 -137
- package/esm2015/lib/util.js +0 -74
- package/esm2015/public-api.js +0 -6
- package/fesm2015/limble-limble-tree.js +0 -2209
- package/fesm2015/limble-limble-tree.js.map +0 -1
- package/lib/classes/Branch.d.ts +0 -26
- package/lib/classes/DropZone.d.ts +0 -27
- package/lib/classes/DropZoneLocation.d.ts +0 -9
- package/lib/custom-event-bindings/dragleave-no-change-detect.directive.d.ts +0 -13
- package/lib/drop-zone/drop-zone.component.d.ts +0 -18
- package/lib/limble-tree-branch/limble-tree-branch.component.d.ts +0 -28
- package/lib/limble-tree-node/limble-tree-node.component.d.ts +0 -53
- package/lib/limble-tree-placeholder/limble-tree-placeholder.component.d.ts +0 -21
- package/lib/limble-tree-root/drop-zone.service.d.ts +0 -62
- package/lib/limble-tree-root/limble-tree-root.component.d.ts +0 -37
- package/lib/limble-tree-root/tree-construction-status.service.d.ts +0 -15
- package/lib/limble-tree-root/tree.service.d.ts +0 -132
- package/lib/singletons/component-creator.service.d.ts +0 -9
- package/lib/singletons/drag-state.service.d.ts +0 -35
- package/lib/singletons/global-events.service.d.ts +0 -13
- package/lib/util.d.ts +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limble-limble-tree.mjs","sources":["../../../projects/limble-tree/src/lib/extras/collapse/collapse.ts","../../../projects/limble-tree/src/lib/extras/collapse/collapse.service.ts","../../../projects/limble-tree/src/lib/extras/collapse/collapse.module.ts","../../../projects/limble-tree/src/lib/core/configuration/configuration.ts","../../../projects/limble-tree/src/lib/errors/tree-error.ts","../../../projects/limble-tree/src/lib/events/drag/drag-end-event.ts","../../../projects/limble-tree/src/lib/events/drag/drag-start-event.ts","../../../projects/limble-tree/src/shared/assert.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/drag-state.ts","../../../projects/limble-tree/src/lib/events/drag/drop-event.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/drag-and-drop.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/dragover-no-change-detect.ts","../../../projects/limble-tree/src/lib/components/dropzone/dropzone.component.ts","../../../projects/limble-tree/src/lib/components/dropzone/dropzone.component.html","../../../projects/limble-tree/src/lib/components/branch/branch.component.ts","../../../projects/limble-tree/src/lib/components/branch/branch.component.html","../../../projects/limble-tree/src/lib/events/relational/graft-event.ts","../../../projects/limble-tree/src/lib/events/relational/prune-event.ts","../../../projects/limble-tree/src/lib/core/tree-node-base.ts","../../../projects/limble-tree/src/lib/components/root/root.component.ts","../../../projects/limble-tree/src/lib/components/root/root.component.html","../../../projects/limble-tree/src/lib/core/tree-root/tree-root.ts","../../../projects/limble-tree/src/lib/core/tree-service/tree.service.ts","../../../projects/limble-tree/src/lib/core/tree-branch/tree-branch.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/dropzone-renderer.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/drag-and-drop.service.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/draggable.directive.ts","../../../projects/limble-tree/src/lib/extras/drag-and-drop/drag-and-drop.module.ts","../../../projects/limble-tree/src/lib/legacy/legacy-tree.ts","../../../projects/limble-tree/src/lib/legacy/limble-tree-root/limble-tree-root.component.ts","../../../projects/limble-tree/src/lib/legacy/limble-tree-root/limble-tree-root.component.html","../../../projects/limble-tree/src/lib/legacy/limble-tree-legacy.module.ts","../../../projects/limble-tree/src/lib/limble-tree.module.ts","../../../projects/limble-tree/src/public-api.ts","../../../projects/limble-tree/src/limble-limble-tree.ts"],"sourcesContent":["import { TreeBranch } from \"../../core\";\n\nclass TreeCollapser {\n private readonly tempStorage: Map<TreeBranch<any>, Array<TreeBranch<any>>>;\n\n public constructor() {\n this.tempStorage = new Map();\n }\n\n public collapse<T>(treeBranch: TreeBranch<T>): void {\n if (treeBranch.branches().length === 0) return;\n const branches: Array<TreeBranch<T>> = [];\n this.tempStorage.set(treeBranch, branches);\n treeBranch.branches().forEach((branch) => {\n branch.prune();\n branches.push(branch);\n });\n }\n\n public expand<T>(treeBranch: TreeBranch<T>): void {\n const branches = this.tempStorage.get(treeBranch);\n if (branches === undefined) return;\n branches.forEach((branch) => {\n branch.graftTo(treeBranch);\n });\n this.tempStorage.delete(treeBranch);\n treeBranch.getContents().changeDetectorRef.detectChanges();\n }\n\n public isCollapsed<T>(treeBranch: TreeBranch<T>): boolean {\n return this.tempStorage.has(treeBranch);\n }\n\n public storePrecollapsedNode<T>(\n parent: TreeBranch<T>,\n branch: TreeBranch<T>\n ): void {\n this.tempStorage.set(\n parent,\n (this.tempStorage.get(parent) ?? []).concat(branch)\n );\n }\n}\n\nexport const treeCollapser = new TreeCollapser();\n","import { Injectable } from \"@angular/core\";\nimport { TreeBranch } from \"../../core\";\nimport { treeCollapser } from \"./collapse\";\n\n@Injectable()\nexport class TreeCollapseService {\n public collapse<T>(treeBranch: TreeBranch<T>): void {\n treeCollapser.collapse(treeBranch);\n }\n\n public expand<T>(treeBranch: TreeBranch<T>): void {\n treeCollapser.expand(treeBranch);\n }\n\n public isCollapsed<T>(treeBranch: TreeBranch<T>): boolean {\n return treeCollapser.isCollapsed(treeBranch);\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { TreeCollapseService } from \"./collapse.service\";\n\n@NgModule({\n providers: [TreeCollapseService]\n})\nexport class TreeCollapseModule {}\n","import { TreeRoot } from \"../tree-root/tree-root\";\nimport { TreeOptions } from \"./tree-options.interface\";\n\nclass Configuration {\n private readonly configStorage = new Map<TreeRoot<any>, TreeOptions>();\n\n public constructor() {\n this.configStorage = new Map();\n }\n\n public setConfig<T>(root: TreeRoot<T>, options: TreeOptions): void {\n this.configStorage.set(root, options);\n }\n\n public getConfig(root: any): TreeOptions | undefined {\n return this.configStorage.get(root);\n }\n\n public delete(root: any): void {\n this.configStorage.delete(root);\n }\n}\n\nexport const config = new Configuration();\n","export class TreeError extends Error {}\n","import { ComponentRef } from \"@angular/core\";\nimport { NodeComponent } from \"../../components/node-component.interface\";\nimport { TreeBranch } from \"../../core\";\nimport { ContainerTreeNode } from \"../../structure\";\nimport { EventConduit } from \"../../structure/event-conduit.interface\";\nimport { TreeEvent } from \"../../structure/tree-event.interface\";\n\nexport class DragEndEvent<T> implements TreeEvent {\n private readonly _source: EventConduit;\n private readonly _newParent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n >;\n private readonly _newIndex: number;\n private readonly _oldParent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n >;\n private readonly _oldIndex: number;\n\n public constructor(\n source: EventConduit,\n endpoints: {\n oldParent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n >;\n oldIndex: number;\n newParent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n >;\n newIndex: number;\n }\n ) {\n this._source = source;\n this._oldParent = endpoints.oldParent;\n this._oldIndex = endpoints.oldIndex;\n this._newParent = endpoints.newParent;\n this._newIndex = endpoints.newIndex;\n }\n\n public type(): \"drag end\" {\n return \"drag end\";\n }\n\n public source(): EventConduit {\n return this._source;\n }\n\n public newIndex(): number {\n return this._newIndex;\n }\n\n public newParent(): ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n > {\n return this._newParent;\n }\n\n public oldIndex(): number {\n return this._oldIndex;\n }\n\n public oldParent(): ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n > {\n return this._oldParent;\n }\n}\n","import { EventConduit } from \"../../structure/event-conduit.interface\";\nimport { TreeEvent } from \"../../structure/tree-event.interface\";\n\nexport class DragStartEvent implements TreeEvent {\n private readonly _source: EventConduit;\n\n public constructor(source: EventConduit) {\n this._source = source;\n }\n\n public type(): \"drag start\" {\n return \"drag start\";\n }\n\n public source(): EventConduit {\n return this._source;\n }\n}\n","export function assert(condition: unknown): asserts condition {\n if (condition) {\n return;\n }\n throw new Error(\"Assertion Failed!\");\n}\n","import { assert } from \"../../../shared/assert\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { TreeBranch } from \"../../core\";\n\nexport enum DragStates {\n Idle = 0,\n Starting = 1,\n Dragging = 2,\n Dropped = 3\n}\n\nclass DragState {\n private dragData: TreeBranch<any> | undefined;\n private _state: DragStates = DragStates.Idle;\n private readonly state$: BehaviorSubject<DragStates>;\n\n public constructor() {\n this.state$ = new BehaviorSubject<DragStates>(DragStates.Idle);\n this.state$.subscribe((state) => {\n this._state = state;\n });\n this.dragData = undefined;\n }\n\n public getDragData<T>(): TreeBranch<T> | undefined {\n return this.dragData;\n }\n\n public starting<T>(treeBranch: TreeBranch<T>): void {\n assert(this._state === DragStates.Idle);\n this.dragData = treeBranch;\n this.state$.next(DragStates.Starting);\n }\n\n public dragging(): void {\n assert(this._state === DragStates.Starting);\n this.state$.next(DragStates.Dragging);\n }\n\n public dropped(): void {\n assert(this._state === DragStates.Dragging);\n this.state$.next(DragStates.Dropped);\n }\n\n public restart(): void {\n this.dragData = undefined;\n this.state$.next(DragStates.Idle);\n }\n\n public events(): Observable<DragStates> {\n return this.state$;\n }\n\n public state(): DragStates {\n return this._state;\n }\n}\n\nexport const dragState = new DragState();\n","import { ComponentRef } from \"@angular/core\";\nimport { NodeComponent } from \"../../components/node-component.interface\";\nimport { TreeBranch } from \"../../core\";\nimport { ContainerTreeNode } from \"../../structure/container-tree-node.interface\";\nimport { EventConduit } from \"../../structure/event-conduit.interface\";\nimport { TreeEvent } from \"../../structure/tree-event.interface\";\n\nexport class DropEvent<T> implements TreeEvent {\n private readonly _source: EventConduit;\n private readonly _parent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n >;\n private readonly _index: number;\n\n public constructor(\n source: EventConduit,\n parent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>,\n index: number\n ) {\n this._source = source;\n this._parent = parent;\n this._index = index;\n }\n\n public type(): \"drag end\" {\n return \"drag end\";\n }\n\n public source(): EventConduit {\n return this._source;\n }\n\n public index(): number {\n return this._index;\n }\n\n public parent(): ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<T>\n > {\n return this._parent;\n }\n}\n","import { ComponentRef } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { NodeComponent } from \"../../components/node-component.interface\";\nimport { TreeBranch } from \"../../core\";\nimport { config } from \"../../core/configuration/configuration\";\nimport { TreeError } from \"../../errors\";\nimport { DragEndEvent } from \"../../events/drag/drag-end-event\";\nimport { DragStartEvent } from \"../../events/drag/drag-start-event\";\nimport { ContainerTreeNode } from \"../../structure/container-tree-node.interface\";\nimport { dragState, DragStates } from \"./drag-state\";\nimport { DropEvent } from \"../../events/drag/drop-event\";\nimport { assert } from \"../../../shared/assert\";\n\nclass DragAndDrop {\n public readonly dragAborted$ = new Subject<DragEvent>();\n\n public dragStart<T>(treeBranch: TreeBranch<T>, event: DragEvent): void {\n if (!this.draggingAllowed(treeBranch)) {\n event.preventDefault();\n return;\n }\n treeBranch.dispatch(new DragStartEvent(treeBranch));\n this.setDragEffects(treeBranch, event);\n this.watchForDragend(treeBranch, event);\n // We have to do a setTimeout because DOM changes are not allowed during a\n // dragstart event.\n setTimeout(() => {\n dragState.starting(treeBranch);\n treeBranch.prune();\n dragState.dragging();\n });\n }\n\n public drop<T>(\n parent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>,\n index: number\n ): void {\n const treeBranch = dragState.getDragData<T>();\n if (treeBranch === undefined) {\n throw new TreeError(\"Cannot get dragged branch\");\n }\n this.graftDraggedBranch(treeBranch, parent, index);\n treeBranch.dispatch(new DropEvent(treeBranch, parent, index));\n }\n\n private getDragImageOffsets(\n event: DragEvent,\n element: Element\n ): [number, number] {\n const bounds = element.getBoundingClientRect();\n const xOffset = event.clientX - bounds.left;\n const yOffset = event.clientY - bounds.top;\n return [xOffset, yOffset];\n }\n\n private setDragEffects<T>(\n treeBranch: TreeBranch<T>,\n event: DragEvent\n ): void {\n const dataTransfer = event.dataTransfer;\n if (!(dataTransfer instanceof DataTransfer)) {\n throw new Error(\"bad drag event\");\n }\n const nativeElement = treeBranch.getContents().location.nativeElement;\n const [xOffset, yOffset] = this.getDragImageOffsets(event, nativeElement);\n dataTransfer.setDragImage(nativeElement, xOffset, yOffset);\n }\n\n private watchForDragend<T>(\n treeBranch: TreeBranch<T>,\n event: DragEvent\n ): void {\n const oldParent = treeBranch.parent();\n const oldIndex = treeBranch.index();\n if (oldParent === undefined || oldIndex === undefined) {\n throw new Error(\"branch must have a parent\");\n }\n event.target?.addEventListener(\n \"dragend\",\n (dragend) => {\n if (dragState.state() !== DragStates.Dropped) {\n //The drag ended but a drop never occurred, so put the dragged branch back where it started.\n this.dragAborted$.next(dragend as DragEvent);\n this.graftDraggedBranch(treeBranch, oldParent, oldIndex);\n }\n dragState.restart();\n const newParent = treeBranch.parent();\n assert(newParent !== undefined);\n const newIndex = treeBranch.index();\n assert(newIndex !== undefined);\n treeBranch.dispatch(\n new DragEndEvent(treeBranch, {\n oldParent,\n oldIndex,\n newParent,\n newIndex\n })\n );\n },\n { once: true }\n );\n }\n\n private draggingAllowed<T>(treeBranch: TreeBranch<T>): boolean {\n const allowDragging =\n config.getConfig(treeBranch.root())?.allowDragging ??\n ((): true => true);\n return allowDragging(treeBranch);\n }\n\n private graftDraggedBranch<T>(\n treeBranch: TreeBranch<T>,\n parent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>,\n index: number\n ): void {\n treeBranch.graftTo(parent, index);\n (\n treeBranch.getContents().location.nativeElement as HTMLElement\n ).style.display = \"block\";\n dragState.dropped();\n }\n}\n\nexport const dragAndDrop = new DragAndDrop();\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output\n} from \"@angular/core\";\nimport { fromEvent, Subscription } from \"rxjs\";\nimport { throttleTime } from \"rxjs/operators\";\n\n@Directive({\n standalone: true,\n selector: \"[dragoverNoChangeDetect]\"\n})\nexport class DragoverNoChangeDetectDirective implements OnInit, OnDestroy {\n @Input() dragoverEventThrottle: number;\n @Output() readonly dragoverNoChangeDetect: EventEmitter<DragEvent>;\n private eventSubscription: Subscription | undefined;\n\n public constructor(\n private readonly ngZone: NgZone,\n private readonly el: ElementRef<Element>\n ) {\n this.dragoverNoChangeDetect = new EventEmitter<DragEvent>();\n this.dragoverEventThrottle = 25;\n }\n\n public ngOnInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.eventSubscription = fromEvent<DragEvent>(\n this.el.nativeElement,\n \"dragover\"\n )\n .pipe(throttleTime(this.dragoverEventThrottle))\n .subscribe(($event) => {\n this.dragoverNoChangeDetect.emit($event);\n });\n });\n }\n\n public ngOnDestroy(): void {\n if (this.eventSubscription !== undefined) {\n this.eventSubscription.unsubscribe();\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { DragoverNoChangeDetectDirective } from \"../../extras/drag-and-drop/dragover-no-change-detect\";\n\n@Component({\n standalone: true,\n selector: \"dropzone\",\n templateUrl: \"./dropzone.component.html\",\n styleUrls: [\"./dropzone.component.scss\"],\n imports: [CommonModule, DragoverNoChangeDetectDirective]\n})\nexport class DropzoneComponent {\n @Input() placement?: \"inner\" | \"lateral\";\n @Output() readonly dropped = new EventEmitter<DragEvent>();\n\n protected active: boolean = false;\n\n public dragenterHandler(): void {\n this.active = true;\n }\n\n public dragleaveHandler(): void {\n this.active = false;\n }\n\n public dragoverHandler(event: DragEvent): void {\n event.preventDefault();\n (event.dataTransfer as DataTransfer).dropEffect = \"move\";\n }\n\n public dropHandler(event: DragEvent): void {\n this.dropped.emit(event);\n }\n}\n","<div\n class=\"dropzone\"\n [ngClass]=\"{ active: active }\"\n (dragenter)=\"dragenterHandler()\"\n (dragleave)=\"dragleaveHandler()\"\n (dragoverNoChangeDetect)=\"dragoverHandler($event)\"\n (drop)=\"dropHandler($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ApplicationRef,\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Type,\n ViewChild,\n ViewChildren,\n ViewContainerRef\n} from \"@angular/core\";\nimport { map, merge } from \"rxjs\";\nimport { TreeError } from \"../../errors\";\nimport { DropzoneComponent } from \"../dropzone/dropzone.component\";\nimport { HostComponent } from \"../host-component.interface\";\nimport { NodeComponent } from \"../node-component.interface\";\nimport { DragoverNoChangeDetectDirective } from \"../../extras/drag-and-drop/dragover-no-change-detect\";\n\n@Component({\n standalone: true,\n selector: \"branch\",\n templateUrl: \"./branch.component.html\",\n styleUrls: [\"./branch.component.scss\"],\n imports: [CommonModule, DropzoneComponent, DragoverNoChangeDetectDirective]\n})\nexport class BranchComponent<T>\n implements NodeComponent, HostComponent<T>, AfterViewInit, OnDestroy\n{\n @ViewChild(\"branchesContainer\", { read: ViewContainerRef })\n branchesContainer: ViewContainerRef | undefined = undefined;\n @ViewChild(\"contentContainer\", { read: ViewContainerRef })\n contentContainer: ViewContainerRef | undefined = undefined;\n @ViewChildren(DropzoneComponent) dropzones:\n | QueryList<DropzoneComponent>\n | undefined = undefined;\n\n @Input() contentToHost?: Type<T>;\n\n @Output() readonly contentCreated = new EventEmitter<T>();\n @Output() readonly showDropzones = new EventEmitter<\"upper\" | \"lower\">();\n @Output() readonly dropped = new EventEmitter<\"inner\" | \"lateral\">();\n\n public showInnerDropzone: boolean = false;\n public showLateralDropzone: boolean = false;\n\n private hostedContent?: ComponentRef<T>;\n\n public constructor(private readonly appRef: ApplicationRef) {}\n\n public ngAfterViewInit(): void {\n if (this.contentContainer === undefined) {\n throw new TreeError(\"Cannot get contentContainer\");\n }\n if (this.contentToHost === undefined) {\n throw new TreeError(\"'content' is a required input\");\n }\n this.hostedContent = this.contentContainer.createComponent(\n this.contentToHost\n );\n this.contentCreated.emit(this.hostedContent.instance);\n if (this.dropzones === undefined) {\n throw new Error(\"querylist not defined\");\n }\n const inner = this.dropzones.get(0);\n const lateral = this.dropzones.get(1);\n if (inner === undefined || lateral == undefined) {\n throw new Error(\"dropzones not defined\");\n }\n merge(\n inner.dropped.pipe(map(() => \"inner\" as const)),\n lateral.dropped.pipe(map(() => \"lateral\" as const))\n ).subscribe(this.dropped);\n this.hostedContent.changeDetectorRef.detectChanges();\n }\n\n public getHostedContent(): ComponentRef<T> | undefined {\n return this.hostedContent;\n }\n\n public triggerChangeDetection(): void {\n if (!NgZone.isInAngularZone()) {\n this.appRef.tick();\n }\n }\n\n protected dragoverHandler(event: DragEvent): void {\n const elementHeight = (\n event.currentTarget as HTMLElement\n ).getBoundingClientRect().height;\n if (event.offsetY < elementHeight / 2) {\n this.showDropzones.emit(\"upper\");\n } else {\n this.showDropzones.emit(\"lower\");\n }\n }\n\n public ngOnDestroy(): void {\n //I'm not 100% sure why, but we have to remove any reference to the\n //componentRef otherwise Angular will never release it for garbage\n //collection.\n this.hostedContent = undefined;\n }\n}\n","<div class=\"content\" (dragoverNoChangeDetect)=\"dragoverHandler($event)\">\n <div #contentContainer></div>\n</div>\n<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\"></dropzone>\n <div #branchesContainer></div>\n</div>\n<dropzone placement=\"lateral\" [hidden]=\"!showLateralDropzone\"></dropzone>\n","import { EventConduit } from \"../../structure/event-conduit.interface\";\nimport { RelationalTreeEvent } from \"./relational-tree-event.interface\";\nimport { TreeRelationship } from \"../../structure/tree-relationship.interface\";\n\nexport class GraftEvent<T extends TreeRelationship<any, any>>\n implements RelationalTreeEvent<T[\"parent\"], T[\"child\"]>\n{\n private readonly _source: EventConduit;\n private readonly _parent: T[\"parent\"];\n private readonly _child: T[\"child\"];\n private readonly _index: number;\n\n public constructor(source: EventConduit, relationship: T) {\n this._source = source;\n this._child = relationship.child;\n this._parent = relationship.parent;\n this._index = relationship.index;\n }\n\n public child(): T[\"child\"] {\n return this._child;\n }\n\n public type(): \"graft\" {\n return \"graft\";\n }\n\n public index(): number {\n return this._index;\n }\n\n public parent(): T[\"parent\"] {\n return this._parent;\n }\n\n public source(): EventConduit {\n return this._source;\n }\n}\n","import { EventConduit } from \"../../structure/event-conduit.interface\";\nimport { RelationalTreeEvent } from \"./relational-tree-event.interface\";\nimport { TreeRelationship } from \"../../structure/tree-relationship.interface\";\n\nexport class PruneEvent<T extends TreeRelationship<any, any>>\n implements RelationalTreeEvent<T[\"parent\"], T[\"child\"]>\n{\n private readonly _source: EventConduit;\n private readonly _parent: T[\"parent\"];\n private readonly _child: T[\"child\"];\n private readonly _index: number;\n\n public constructor(source: EventConduit, relationship: T) {\n this._source = source;\n this._child = relationship.child;\n this._parent = relationship.parent;\n this._index = relationship.index;\n }\n\n public child(): T[\"child\"] {\n return this._child;\n }\n\n public type(): \"prune\" {\n return \"prune\";\n }\n\n public index(): number {\n return this._index;\n }\n\n public parent(): T[\"parent\"] {\n return this._parent;\n }\n\n public source(): EventConduit {\n return this._source;\n }\n}\n","import { ComponentRef } from \"@angular/core\";\nimport { filter, Observable, Subject, Subscription } from \"rxjs\";\nimport { NodeComponent } from \"../components/node-component.interface\";\nimport { TreeError } from \"../errors\";\nimport { GraftEvent } from \"../events/relational/graft-event\";\nimport { PruneEvent } from \"../events/relational/prune-event\";\nimport { TreeEvent } from \"../structure/tree-event.interface\";\nimport { ContainerTreeNode } from \"../structure/container-tree-node.interface\";\nimport { TreeNode } from \"../structure/tree-node.interface\";\nimport { TreePlot } from \"../structure/tree-plot\";\nimport { Relationship } from \"./relationship.interface\";\nimport { TreeBranch } from \"./tree-branch/tree-branch\";\n\nexport class TreeNodeBase<UserlandComponent>\n implements Partial<TreeNode<TreeBranch<UserlandComponent>>>\n{\n private readonly _branches: Array<TreeBranch<UserlandComponent>>;\n private readonly events$: Subject<TreeEvent>;\n private readonly subscriptions: Array<Subscription>;\n\n public constructor() {\n this._branches = [];\n this.events$ = new Subject();\n this.subscriptions = [\n this.graftsToSelf().subscribe((event) => {\n this.registerChildRelationship(event.child(), event.index());\n }),\n this.prunesToSelf().subscribe((event) => {\n this.deregisterChildRelationship(event.child());\n })\n ];\n }\n\n public branches(): Array<TreeBranch<UserlandComponent>> {\n return [...this._branches];\n }\n\n public deleteBranch(index?: number): void {\n if (index === undefined) {\n this._branches.pop();\n return;\n }\n this._branches.splice(index, 1);\n }\n\n public destroy(): void {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n\n public dispatch(event: TreeEvent): void {\n this.events$.next(event);\n }\n\n public events(): Observable<TreeEvent> {\n return this.events$;\n }\n\n public getBranch(index: number): TreeBranch<UserlandComponent> | undefined {\n return this._branches[index];\n }\n\n public plot(): TreePlot {\n return new Map(\n this.branches().map((branch, index) => [index, branch.plot()])\n );\n }\n\n public traverse(\n callback: (\n node: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >\n ) => void\n ): void {\n this.branches().forEach((branch) => {\n branch.traverse(callback);\n });\n }\n\n private deregisterChildRelationship(\n child: TreeBranch<UserlandComponent>\n ): void {\n const index = this.branches().findIndex((branch) => branch === child);\n this.deleteBranch(index);\n }\n\n private graftsToSelf(): Observable<\n GraftEvent<Relationship<UserlandComponent>>\n > {\n return this.events().pipe(\n filter(\n (event): event is GraftEvent<Relationship<UserlandComponent>> =>\n event instanceof GraftEvent\n ),\n filter((event) => event.parent().events() === this.events$)\n );\n }\n\n private prunesToSelf(): Observable<\n PruneEvent<Relationship<UserlandComponent>>\n > {\n return this.events().pipe(\n filter(\n (event): event is PruneEvent<Relationship<UserlandComponent>> =>\n event instanceof PruneEvent\n ),\n filter((event) => event.parent().events() === this.events$)\n );\n }\n\n private registerChildRelationship(\n child: TreeBranch<UserlandComponent>,\n index: number\n ): void {\n const branches = this.branches();\n if (index < 0 || index > branches.length) {\n throw new TreeError(\n `Can't register child at index ${index}. Out of range.`\n );\n }\n this._branches.splice(index, 0, child);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Output,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport { DropzoneComponent } from \"../dropzone/dropzone.component\";\nimport { NodeComponent } from \"../node-component.interface\";\n\n@Component({\n standalone: true,\n selector: \"root\",\n templateUrl: \"./root.component.html\",\n styleUrls: [\"./root.component.scss\"],\n imports: [CommonModule, DropzoneComponent]\n})\nexport class RootComponent implements NodeComponent, AfterViewInit {\n @ViewChild(\"branchesContainer\", { read: ViewContainerRef })\n branchesContainer: ViewContainerRef | undefined = undefined;\n @ViewChild(DropzoneComponent) dropzone: DropzoneComponent | undefined =\n undefined;\n\n @Output() readonly afterViewInit = new EventEmitter<void>();\n @Output() readonly dropped = new EventEmitter<void>();\n\n public showInnerDropzone: boolean = false;\n\n public ngAfterViewInit(): void {\n this.afterViewInit.emit();\n if (this.dropzone === undefined) {\n throw new Error(\"dropzone is not defined\");\n }\n this.dropzone.dropped.subscribe(this.dropped);\n }\n}\n","<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\"></dropzone>\n <div #branchesContainer></div>\n</div>\n","import { TreePlot } from \"../../structure/tree-plot\";\nimport { Observable, Subscription } from \"rxjs\";\nimport { TreeEvent } from \"../../structure/tree-event.interface\";\nimport { TreeBranch } from \"../tree-branch/tree-branch\";\nimport { ComponentRef, Type, ViewContainerRef } from \"@angular/core\";\nimport { RootComponent } from \"../../components/root/root.component\";\nimport { TreeNodeBase } from \"../tree-node-base\";\nimport { TreeRootNode } from \"../../structure/tree-root.node.interface\";\nimport { ContainerTreeNode } from \"../../structure/container-tree-node.interface\";\nimport { NodeComponent } from \"../../components/node-component.interface\";\nimport { BranchOptions } from \"../branch-options.interface\";\nimport { dropzoneRenderer } from \"../../extras/drag-and-drop/dropzone-renderer\";\nimport { config } from \"../configuration/configuration\";\n\nexport class TreeRoot<UserlandComponent>\n implements\n TreeRootNode<ComponentRef<RootComponent>, TreeBranch<UserlandComponent>>\n{\n private readonly instanceSubscriptions: Array<Subscription>;\n private readonly rootComponentRef: ComponentRef<RootComponent>;\n private readonly treeNodeBase: TreeNodeBase<UserlandComponent>;\n\n public constructor(private readonly viewContainerRef: ViewContainerRef) {\n this.treeNodeBase = new TreeNodeBase();\n this.rootComponentRef =\n this.viewContainerRef.createComponent(RootComponent);\n const viewInitSub =\n this.rootComponentRef.instance.afterViewInit.subscribe(() => {\n const dropzone = this.rootComponentRef.instance.dropzone;\n if (!dropzone) {\n throw new Error(\"dropzone not defined\");\n }\n dropzoneRenderer.registerDropzone(dropzone, this);\n });\n const droppedSub = this.rootComponentRef.instance.dropped.subscribe(\n () => {\n dropzoneRenderer.handleDrop(this, \"inner\");\n }\n );\n this.instanceSubscriptions = [viewInitSub, droppedSub];\n this.rootComponentRef.changeDetectorRef.detectChanges();\n }\n\n public branches(): Array<TreeBranch<UserlandComponent>> {\n return this.treeNodeBase.branches();\n }\n\n public deleteBranch(index?: number): void {\n this.treeNodeBase.deleteBranch(index);\n }\n\n public destroy(): void {\n dropzoneRenderer.clearTreeFromRegistry(this);\n this.branches().forEach((branch) => {\n branch.destroy();\n });\n this.treeNodeBase.destroy();\n this.instanceSubscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n this.viewContainerRef.clear();\n config.delete(this);\n }\n\n public dispatch(event: TreeEvent): void {\n this.treeNodeBase.dispatch(event);\n }\n\n public events(): Observable<TreeEvent> {\n return this.treeNodeBase.events();\n }\n\n public getBranch(index: number): TreeBranch<UserlandComponent> | undefined {\n return this.treeNodeBase.getBranch(index);\n }\n\n public getContents(): ComponentRef<RootComponent> {\n return this.rootComponentRef;\n }\n\n public grow(\n component: Type<UserlandComponent>,\n options?: BranchOptions<UserlandComponent>\n ): TreeBranch<UserlandComponent> {\n return new TreeBranch(this, { component, ...options });\n }\n\n public plot(): TreePlot {\n return this.treeNodeBase.plot();\n }\n\n public root(): this {\n return this;\n }\n\n public traverse(\n callback: (\n node: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >\n ) => void\n ): void {\n callback(this);\n this.treeNodeBase.traverse(callback);\n }\n}\n","import { Injectable, ViewContainerRef } from \"@angular/core\";\nimport { config } from \"../configuration/configuration\";\nimport { TreeOptions } from \"../configuration/tree-options.interface\";\nimport { TreeRoot } from \"../tree-root/tree-root\";\n\n@Injectable({ providedIn: \"root\" })\nexport class TreeService {\n public createEmptyTree<Component>(\n container: ViewContainerRef,\n options: TreeOptions = {}\n ): TreeRoot<Component> {\n container.clear();\n const root = new TreeRoot<Component>(container);\n config.setConfig(root, options);\n return root;\n }\n}\n","import { assert } from \"../../../shared/assert\";\nimport { TreePlot } from \"../../structure/tree-plot\";\nimport { filter, Observable, Subscription } from \"rxjs\";\nimport { GraftEvent } from \"../../events/relational/graft-event\";\nimport { PruneEvent } from \"../../events/relational/prune-event\";\nimport { TreeEvent } from \"../../structure/tree-event.interface\";\nimport { TreeBranchNode } from \"../../structure/tree-branch-node.interface\";\nimport {\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n Type,\n ViewRef\n} from \"@angular/core\";\nimport { BranchComponent } from \"../../components/branch/branch.component\";\nimport { ContainerTreeNode } from \"../../structure/container-tree-node.interface\";\nimport { NodeComponent } from \"../../components/node-component.interface\";\nimport { TreeNodeBase } from \"../tree-node-base\";\nimport { TreeError } from \"../../errors/tree-error\";\nimport { BranchOptions, FullBranchOptions } from \"../branch-options.interface\";\nimport { dropzoneRenderer } from \"../../extras/drag-and-drop/dropzone-renderer\";\nimport { config } from \"../configuration/configuration\";\nimport { TreeRoot } from \"..\";\nimport { treeCollapser } from \"../../extras/collapse/collapse\";\n\nexport class TreeBranch<UserlandComponent>\n implements\n TreeBranchNode<\n ComponentRef<BranchComponent<UserlandComponent>>,\n TreeBranch<UserlandComponent>,\n ComponentRef<NodeComponent>\n >\n{\n private readonly contents: ComponentRef<BranchComponent<UserlandComponent>>;\n private readonly instanceSubscriptions: Array<Subscription>;\n private readonly outputBindingSubscriptions: Array<Subscription>;\n private _parent:\n | ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >\n | undefined;\n private readonly treeNodeBase: TreeNodeBase<UserlandComponent>;\n private readonly userlandComponent: Type<UserlandComponent>;\n private detachedView: ViewRef | null = null;\n\n public constructor(\n parent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >,\n public readonly branchOptions: FullBranchOptions<UserlandComponent>\n ) {\n this.treeNodeBase = new TreeNodeBase();\n this.userlandComponent = this.branchOptions.component;\n const parentBranchesContainer =\n parent.getContents().instance.branchesContainer;\n assert(parentBranchesContainer !== undefined);\n this.contents = createComponent<BranchComponent<UserlandComponent>>(\n BranchComponent,\n {\n environmentInjector:\n parentBranchesContainer.injector.get(EnvironmentInjector)\n }\n );\n this.contents.instance.contentToHost = this.userlandComponent;\n this.setIndentation(parent);\n this.outputBindingSubscriptions = [];\n this.instanceSubscriptions = this.getInstanceSubscriptions();\n if (\n parent instanceof TreeBranch &&\n parent.branchOptions.startCollapsed === true\n ) {\n treeCollapser.storePrecollapsedNode(parent, this);\n this.detachedView = this.contents.hostView;\n } else {\n parentBranchesContainer.insert(this.contents.hostView);\n this.contents.changeDetectorRef.detectChanges();\n this._parent = parent;\n this.dispatch(\n new GraftEvent(this, {\n parent: this._parent,\n child: this,\n index: this._parent.branches().length\n })\n );\n }\n }\n\n public branches(): Array<TreeBranch<UserlandComponent>> {\n return this.treeNodeBase.branches();\n }\n\n public deleteBranch(index?: number): void {\n this.treeNodeBase.deleteBranch(index);\n }\n\n public destroy(): void {\n if (treeCollapser.isCollapsed(this)) {\n treeCollapser.expand(this);\n dropzoneRenderer.clearTreeFromRegistry(this);\n }\n this.branches().forEach((branch) => {\n branch.destroy();\n });\n const parent = this._parent;\n const index = this.index();\n if (index !== undefined && parent !== undefined) {\n const container = parent.getContents().instance.branchesContainer;\n assert(container !== undefined);\n container.remove(index);\n parent.deleteBranch(index);\n }\n this.treeNodeBase.destroy();\n this.instanceSubscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n this.outputBindingSubscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n\n public dispatch(event: TreeEvent): void {\n this.treeNodeBase.dispatch(event);\n this._parent?.dispatch(event);\n }\n\n public events(): Observable<TreeEvent> {\n return this.treeNodeBase.events();\n }\n\n public getBranch(index: number): TreeBranch<UserlandComponent> | undefined {\n return this.treeNodeBase.getBranch(index);\n }\n\n public getContents(): ComponentRef<BranchComponent<UserlandComponent>> {\n return this.contents;\n }\n\n public graftTo(\n newParent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >,\n index?: number\n ): number {\n const ownIndex = this.index();\n if (ownIndex !== undefined) {\n this.prune();\n }\n this._parent = newParent;\n const newIndex = index ?? newParent.branches().length;\n this.reattachView(newIndex);\n this.dispatch(\n new GraftEvent(this, {\n parent: newParent,\n child: this,\n index: newIndex\n })\n );\n return newIndex;\n }\n\n public grow(\n component: Type<UserlandComponent>,\n options?: BranchOptions<UserlandComponent>\n ): TreeBranch<UserlandComponent> {\n return new TreeBranch(this, { component, ...options });\n }\n\n public index(): number | undefined {\n if (!this._parent) {\n return undefined;\n }\n const index = this._parent\n .branches()\n .findIndex((branch) => branch === this);\n assert(index >= 0);\n return index;\n }\n\n public meta(): Record<string, any> {\n return this.branchOptions.meta ?? {};\n }\n\n public parent():\n | ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >\n | undefined {\n return this._parent;\n }\n\n public plot(): TreePlot {\n return this.treeNodeBase.plot();\n }\n\n public position(): Array<number> {\n const index = this.index();\n if (index === undefined) {\n throw new TreeError(\n \"branch has no parent. Position cannot be determined.\"\n );\n }\n if (this._parent instanceof TreeBranch) {\n const parentPosition = this._parent.position();\n return [...parentPosition, index];\n }\n return [index];\n }\n\n public prune(): this | undefined {\n const parent = this._parent;\n const index = this.index();\n if (index === undefined || parent === undefined) return;\n const container = parent.getContents().instance.branchesContainer;\n assert(container !== undefined);\n this.detachedView = container.detach(index);\n assert(this.detachedView !== null);\n this.detachedView.detach();\n this.dispatch(\n new PruneEvent(this, {\n parent: parent,\n child: this,\n index: index\n })\n );\n this._parent = undefined;\n return this;\n }\n\n public root(): TreeRoot<UserlandComponent> | undefined {\n const parent = this.parent();\n if (parent === undefined) {\n return undefined;\n }\n if (parent instanceof TreeBranch) {\n return parent.root();\n }\n if (parent instanceof TreeRoot) {\n return parent;\n }\n throw new Error(\"unexpected parent type\");\n }\n\n public traverse(\n callback: (\n node: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >\n ) => void\n ): void {\n callback(this);\n this.treeNodeBase.traverse(callback);\n }\n\n private getContentCreatedSub(): Subscription {\n const instance = this.contents.instance;\n return instance.contentCreated.subscribe((userlandComponentInstance) => {\n for (const [key, value] of Object.entries(\n this.branchOptions.inputBindings ?? {}\n )) {\n (userlandComponentInstance as any)[key] = value;\n }\n for (const [key, value] of Object.entries(\n this.branchOptions.outputBindings ?? {}\n )) {\n this.outputBindingSubscriptions.push(\n (userlandComponentInstance as any)[key].subscribe(value)\n );\n }\n (userlandComponentInstance as any).treeBranch = this;\n const dropzones = instance.dropzones;\n if (!dropzones) {\n throw new Error(\"dropzones not defined\");\n }\n dropzoneRenderer.registerDropzones(dropzones, this);\n });\n }\n\n private getInstanceSubscriptions(): Array<Subscription> {\n const droppedSub = this.contents.instance.dropped.subscribe(\n (placement) => {\n dropzoneRenderer.handleDrop(this, placement);\n }\n );\n return [\n this.getContentCreatedSub(),\n this.getShowLowerZonesSub(),\n this.getShowUpperZonesSub(),\n droppedSub\n ];\n }\n\n private getShowLowerZonesSub(): Subscription {\n const instance = this.contents.instance;\n return instance.showDropzones\n .pipe(filter((direction) => direction === \"lower\"))\n .subscribe(() => {\n const currentDropzoneDisplayed =\n dropzoneRenderer.getCurrentDisplay();\n if (\n currentDropzoneDisplayed?.treeBranch === this &&\n currentDropzoneDisplayed.direction === \"lower\"\n ) {\n return;\n }\n dropzoneRenderer.showLowerZones(this);\n instance.triggerChangeDetection();\n });\n }\n\n private getShowUpperZonesSub(): Subscription {\n const instance = this.contents.instance;\n return instance.showDropzones\n .pipe(filter((direction) => direction === \"upper\"))\n .subscribe(() => {\n const currentDropzoneDisplayed =\n dropzoneRenderer.getCurrentDisplay();\n if (\n currentDropzoneDisplayed?.treeBranch === this &&\n currentDropzoneDisplayed.direction === \"upper\"\n ) {\n return;\n }\n dropzoneRenderer.showUpperZones(this);\n instance.triggerChangeDetection();\n });\n }\n\n private reattachView(index?: number): void {\n assert(this._parent !== undefined);\n assert(this.detachedView !== null);\n const container = this._parent.getContents().instance.branchesContainer;\n assert(container !== undefined);\n this.detachedView.reattach();\n container.insert(this.detachedView, index);\n this.detachedView = null;\n }\n\n private setIndentation(\n parent: ContainerTreeNode<\n ComponentRef<NodeComponent>,\n TreeBranch<UserlandComponent>\n >\n ): void {\n const root = parent.root();\n assert(root !== undefined);\n const options = config.getConfig(root);\n const branchesContainerEl = this.contents.location.nativeElement\n .getElementsByClassName(\"branches-container\")\n .item(0);\n assert(branchesContainerEl instanceof HTMLElement);\n branchesContainerEl.style.marginLeft = `${options?.indentation ?? 16}px`;\n }\n}\n","import { ComponentRef } from \"@angular/core\";\nimport { assert } from \"../../../shared/assert\";\nimport { BranchComponent } from \"../../components/branch/branch.component\";\nimport { DropzoneComponent } from \"../../components/dropzone/dropzone.component\";\nimport { NodeComponent } from \"../../components/node-component.interface\";\nimport { dragAndDrop } from \"./drag-and-drop\";\nimport { ContainerTreeNode } from \"../../structure/container-tree-node.interface\";\nimport { TreeBranch } from \"../../core/tree-branch/tree-branch\";\nimport { TreeRoot } from \"../../core/tree-root/tree-root\";\nimport { dragState, DragStates } from \"./drag-state\";\nimport { filter, first } from \"rxjs\";\nimport { config } from \"../../core/configuration/configuration\";\nimport { PruneEvent } from \"../../events\";\n\nclass DropzoneRenderer {\n private currentDisplay: {\n treeBranch: TreeBranch<any> | TreeRoot<any>;\n direction: \"upper\" | \"lower\";\n } | null;\n private readonly registry: Map<\n DropzoneComponent,\n TreeBranch<any> | TreeRoot<any>\n >;\n\n public constructor() {\n this.registry = new Map();\n this.currentDisplay = null;\n dragAndDrop.dragAborted$.subscribe(() => {\n this.clearCurrentDisplay();\n });\n dragState\n .events()\n .pipe(filter((event) => event === DragStates.Starting))\n .subscribe(() => {\n const branch = dragState.getDragData();\n assert(branch !== undefined);\n let cursor = branch.parent()?.getBranch((branch.index() ?? 0) - 1);\n let final = branch.parent();\n while (cursor !== undefined) {\n final = cursor;\n cursor = cursor.branches().at(-1);\n }\n branch\n .events()\n .pipe(\n filter((event) => event instanceof PruneEvent),\n first()\n )\n .subscribe(() => {\n assert(\n final instanceof TreeBranch || final instanceof TreeRoot\n );\n this.showLowerZones(final);\n });\n });\n }\n\n public clearCurrentDisplay(): void {\n if (this.currentDisplay === null) return;\n for (const branch of this.registry.values()) {\n const instance = branch.getContents().instance;\n instance.showInnerDropzone = false;\n if (instance instanceof BranchComponent) {\n instance.showLateralDropzone = false;\n }\n }\n this.currentDisplay = null;\n }\n\n public clearTreeFromRegistry(tree: TreeRoot<any> | TreeBranch<any>): void {\n const nodes: Array<\n ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<any>>\n > = [];\n tree.traverse((node) => nodes.push(node));\n for (const [dropzoneComponent, treeNode] of this.registry) {\n if (nodes.includes(treeNode)) {\n this.registry.delete(dropzoneComponent);\n }\n }\n }\n\n public getCurrentDisplay(): {\n treeBranch: TreeBranch<any> | TreeRoot<any>;\n direction: \"upper\" | \"lower\";\n } | null {\n if (this.currentDisplay === null) return null;\n return { ...this.currentDisplay };\n }\n\n public getDropzoneLocation<T>(\n dropzone: DropzoneComponent\n ): [TreeBranch<T> | TreeRoot<T>, \"inner\" | \"lateral\"] {\n const branch = this.registry.get(dropzone);\n const placement = dropzone.placement;\n if (branch === undefined) {\n throw new Error(\"dropzone not found in registry\");\n }\n if (placement === undefined) {\n throw new Error(\"dropzone has an undefined placement\");\n }\n return [branch, placement];\n }\n\n public handleDrop<T>(\n treeNode: TreeBranch<T> | TreeRoot<T>,\n placement: \"inner\" | \"lateral\"\n ): void {\n if (placement === \"inner\") {\n dragAndDrop.drop(treeNode, 0);\n } else if (treeNode instanceof TreeBranch && placement === \"lateral\") {\n const currentParent = treeNode.parent();\n const index = treeNode.index();\n if (currentParent === undefined || index === undefined) {\n throw new Error(\"branch must have a parent\");\n }\n dragAndDrop.drop(currentParent, index + 1);\n }\n this.clearCurrentDisplay();\n }\n\n public registerDropzone<T>(\n dropzone: DropzoneComponent,\n treeNode: TreeBranch<T> | TreeRoot<T>\n ): void {\n this.registry.set(dropzone, treeNode);\n }\n\n public registerDropzones<T>(\n dropzones: Iterable<DropzoneComponent>,\n treeBranch: TreeBranch<T>\n ): void {\n for (const dropzone of dropzones) {\n this.registry.set(dropzone, treeBranch);\n }\n }\n\n public showLowerZones<T>(treeNode: TreeBranch<T> | TreeRoot<T>): void {\n this.clearCurrentDisplay();\n this.showInnerZone(treeNode);\n if (treeNode.branches().length === 0) {\n this.loopThroughLowerZones(treeNode);\n }\n this.currentDisplay = { treeBranch: treeNode, direction: \"lower\" };\n }\n\n public showUpperZones<T>(treeBranch: TreeBranch<T>): void {\n this.clearCurrentDisplay();\n this.loopThroughUpperZones(treeBranch);\n this.currentDisplay = { treeBranch, direction: \"upper\" };\n }\n\n private loopThroughLowerZones<T>(\n treeNode: TreeBranch<T> | TreeRoot<T>\n ): void {\n let cursor:\n | ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>\n | undefined = treeNode;\n while (cursor instanceof TreeBranch) {\n this.showLateralZone(cursor);\n const parent = cursor.parent();\n const index = cursor.index();\n assert(parent !== undefined && index !== undefined);\n if (parent.branches().length > index + 1) {\n return;\n }\n cursor = cursor.parent();\n }\n }\n\n private loopThroughUpperZones<T>(treeBranch: TreeBranch<T>): void {\n let cursor = treeBranch\n .parent()\n ?.getBranch((treeBranch.index() ?? 0) - 1);\n let final = treeBranch.parent();\n while (cursor !== undefined) {\n this.showLateralZone(cursor);\n final = cursor;\n cursor = cursor.branches().at(-1);\n }\n if (\n final !== undefined &&\n (final instanceof TreeRoot || final instanceof TreeBranch)\n ) {\n this.showInnerZone(final);\n }\n }\n\n private nestingAllowed(treeNode: unknown): boolean {\n if (treeNode instanceof TreeRoot) {\n return true;\n }\n if (treeNode instanceof TreeBranch) {\n const allowNesting =\n config.getConfig(treeNode.root())?.allowNesting ??\n ((): true => true);\n return allowNesting(treeNode);\n }\n throw new Error(\"unsupported treeNode type\");\n }\n\n private dropAllowed(parent: unknown, index: number): boolean {\n const sourceNode = dragState.getDragData();\n assert(sourceNode instanceof TreeBranch);\n if (parent instanceof TreeRoot) {\n const allowDrop =\n config.getConfig(parent)?.allowDrop ?? ((): true => true);\n return allowDrop(sourceNode, parent, index);\n }\n if (parent instanceof TreeBranch) {\n const allowDrop =\n config.getConfig(parent.root())?.allowDrop ?? ((): true => true);\n return allowDrop(sourceNode, parent, index);\n }\n throw new Error(\"unsupported treeNode type\");\n }\n\n private showInnerZone<T>(treeNode: TreeBranch<T> | TreeRoot<T>): void {\n if (!this.nestingAllowed(treeNode) || !this.dropAllowed(treeNode, 0))\n return;\n treeNode.getContents().instance.showInnerDropzone = true;\n }\n\n private showLateralZone<T>(treeBranch: TreeBranch<T>): void {\n const index = treeBranch.index();\n assert(index !== undefined);\n if (!this.dropAllowed(treeBranch.parent(), index + 1)) return;\n treeBranch.getContents().instance.showLateralDropzone = true;\n }\n}\n\nexport const dropzoneRenderer = new DropzoneRenderer();\n","import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { TreeBranch, TreeRoot } from \"../../core\";\nimport { dragAndDrop } from \"./drag-and-drop\";\nimport { dragState, DragStates } from \"./drag-state\";\nimport { dropzoneRenderer } from \"./dropzone-renderer\";\n\n@Injectable()\nexport class TreeDragAndDropService {\n public clearDropzones(): void {\n dropzoneRenderer.clearCurrentDisplay();\n }\n\n public dragStart<T>(treeBranch: TreeBranch<T>, event: DragEvent): void {\n dragAndDrop.dragStart(treeBranch, event);\n }\n\n public getCurrentlyDisplayedDropzoneFamily(): {\n treeBranch: TreeRoot<any> | TreeBranch<any>;\n direction: \"upper\" | \"lower\";\n } | null {\n return dropzoneRenderer.getCurrentDisplay();\n }\n\n public showRootDropzone<T>(root: TreeRoot<T>): void {\n dropzoneRenderer.showLowerZones(root);\n }\n\n public state(): Observable<DragStates> {\n return dragState.events();\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n Renderer2\n} from \"@angular/core\";\nimport { TreeBranch } from \"../../core\";\nimport { TreeDragAndDropService } from \"./drag-and-drop.service\";\n\n@Directive({\n selector: \"[limbleTreeDraggable]\",\n standalone: true\n})\nexport class DraggableDirective {\n @Input() limbleTreeDraggable?: TreeBranch<any>;\n\n public constructor(\n private readonly dragAndDropService: TreeDragAndDropService,\n renderer: Renderer2,\n hostElement: ElementRef<HTMLElement>\n ) {\n renderer.setAttribute(hostElement.nativeElement, \"draggable\", \"true\");\n renderer.setStyle(hostElement.nativeElement, \"cursor\", \"grab\");\n }\n\n @HostListener(\"dragstart\", [\"$event\"]) public onDragstart(\n event: DragEvent\n ): void {\n if (this.limbleTreeDraggable === undefined) return;\n this.dragAndDropService.dragStart(this.limbleTreeDraggable, event);\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { TreeDragAndDropService } from \"./drag-and-drop.service\";\nimport { DraggableDirective } from \"./draggable.directive\";\nimport { DragoverNoChangeDetectDirective } from \"./dragover-no-change-detect\";\n\n@NgModule({\n imports: [DraggableDirective, DragoverNoChangeDetectDirective],\n providers: [TreeDragAndDropService],\n exports: [DraggableDirective, DragoverNoChangeDetectDirective]\n})\nexport class TreeDragAndDropModule {}\n","import { Type, ViewContainerRef } from \"@angular/core\";\nimport { TreeRoot, TreeBranch, TreeOptions, config } from \"../core\";\nimport { LimbleTreeOptions as LegacyLimbleTreeOptions } from \"./legacy-tree-options.interface\";\nimport { LimbleTreeData, LimbleTreeNode } from \"./legacy-tree-data.interface\";\nimport { TreeError } from \"../errors\";\nimport { treeCollapser } from \"../extras/collapse/collapse\";\n\n/**\n * A shim to help with the transition from v0 to v1.\n * @deprecated\n */\nexport class LegacyTree {\n /** Creates a v1 tree structure from a v0 data array and v0 tree options. */\n public createTreeFromLegacyArray<Component>(\n container: ViewContainerRef,\n data: LimbleTreeData,\n treeOptions: LegacyLimbleTreeOptions = {}\n ): TreeRoot<Component> {\n const root = new TreeRoot<Component>(container);\n config.setConfig(root, this.upgradeOptions(treeOptions));\n for (const node of data) {\n this.renderTreeNode(root, node, treeOptions);\n }\n return root;\n }\n\n public upgradeOptions(legacyOptions: LegacyLimbleTreeOptions): TreeOptions {\n return {\n indentation: legacyOptions.indent,\n allowNesting: (branch): boolean => {\n if (legacyOptions.listMode === true) {\n return false;\n }\n if (legacyOptions.allowNesting === undefined) {\n return true;\n }\n if (typeof legacyOptions.allowNesting === \"boolean\") {\n return legacyOptions.allowNesting;\n }\n return legacyOptions.allowNesting(branch as any);\n },\n allowDragging: (branch): boolean => {\n if (legacyOptions.allowDragging === undefined) {\n return true;\n }\n if (typeof legacyOptions.allowDragging === \"boolean\") {\n return legacyOptions.allowDragging;\n }\n return legacyOptions.allowDragging(branch as any);\n },\n allowDrop: (source, parent, index): boolean => {\n if (legacyOptions.allowDrop === undefined) {\n return true;\n }\n return legacyOptions.allowDrop(source as any, parent as any, index);\n }\n };\n }\n\n private renderTreeNode<T>(\n parent: TreeRoot<T> | TreeBranch<T>,\n node: LimbleTreeNode,\n options: LegacyLimbleTreeOptions\n ): void {\n const component =\n node.component?.class ?? options.defaultComponent?.class;\n if (component === undefined) {\n throw new TreeError(\"A component must be provided\");\n }\n const bindings = (node.component?.bindings ??\n options.defaultComponent?.bindings ??\n {}) as { [K in keyof T]?: T[K] | undefined };\n const nodeData = node;\n delete nodeData.nodes;\n delete nodeData.collapsed;\n delete nodeData.component;\n const branch = parent.grow(component as Type<T>, {\n inputBindings: bindings,\n meta: { nodeData }\n });\n for (const childNode of node.nodes ?? []) {\n this.renderTreeNode(branch, childNode, options);\n }\n if (node.collapsed === true) {\n treeCollapser.collapse(branch);\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport { LegacyTree } from \"../legacy-tree\";\nimport { TreeError } from \"../../errors\";\nimport { LimbleTreeData } from \"../legacy-tree-data.interface\";\nimport { LimbleTreeOptions } from \"../legacy-tree-options.interface\";\nimport { TreeRoot } from \"../../core\";\nimport { filter, Subscription } from \"rxjs\";\nimport { DragEndEvent } from \"../../events\";\nimport { assert } from \"../../../shared/assert\";\n\n/** @deprecated */\n@Component({\n selector: \"limble-tree-root\",\n templateUrl: \"./limble-tree-root.component.html\",\n standalone: true\n})\nexport class LimbleTreeRootComponent\n implements AfterViewInit, OnChanges, OnDestroy\n{\n @Input() data?: LimbleTreeData;\n @Input() options?: LimbleTreeOptions | undefined;\n @Input() itemsPerPage: number = Infinity;\n @Input() page: number = 1;\n\n @ViewChild(\"host\", { read: ViewContainerRef }) host?: ViewContainerRef;\n\n @Output() readonly treeChange = new EventEmitter<TreeRoot<any>>();\n @Output() readonly treeDrop = new EventEmitter<DragEndEvent<any>>();\n\n private dropSubscription?: Subscription;\n private readonly legacyTree: LegacyTree;\n private root?: TreeRoot<any>;\n\n public constructor() {\n this.legacyTree = new LegacyTree();\n }\n\n public ngAfterViewInit(): void {\n this.update();\n }\n\n public ngOnChanges(): void {\n if (this.host !== undefined && this.data !== undefined) {\n this.update();\n }\n }\n\n public ngOnDestroy(): void {\n this.dropSubscription?.unsubscribe();\n this.root?.destroy();\n }\n\n public getRoot(): TreeRoot<any> | undefined {\n return this.root;\n }\n\n public update(): void {\n if (this.data === undefined) {\n throw new TreeError(\n \"LimbleTreeRootComponent's `data` input is required\"\n );\n }\n if (this.host === undefined) {\n throw new TreeError(\n \"LimbleTreeRootComponent's `host` property is not defined\"\n );\n }\n this.root?.destroy();\n this.dropSubscription?.unsubscribe();\n const dataSlice = this.paginatedData();\n this.root = this.legacyTree.createTreeFromLegacyArray(\n this.host,\n dataSlice,\n this.options\n );\n this.dropSubscription = this.root\n .events()\n .pipe(\n filter(\n (event): event is DragEndEvent<any> =>\n event instanceof DragEndEvent\n )\n )\n .subscribe(this.treeDrop);\n this.treeChange.emit(this.root);\n }\n\n private paginatedData(): LimbleTreeData {\n assert(this.data !== undefined);\n if (this.options?.listMode !== true) {\n return this.data;\n }\n return this.data.slice(\n (this.page - 1) * this.itemsPerPage,\n this.page * this.itemsPerPage\n );\n }\n}\n","<div #host></div>\n","import { NgModule } from \"@angular/core\";\nimport { LegacyTree } from \"./legacy-tree\";\nimport { LimbleTreeRootComponent } from \"./limble-tree-root/limble-tree-root.component\";\n\n/** @deprecated */\n@NgModule({\n declarations: [],\n imports: [LimbleTreeRootComponent],\n providers: [LegacyTree],\n exports: [LimbleTreeRootComponent]\n})\nexport class LimbleTreeLegacyModule {}\n","import { NgModule } from \"@angular/core\";\nimport { TreeCollapseModule } from \"./extras/collapse\";\nimport { TreeDragAndDropModule } from \"./extras/drag-and-drop\";\nimport { TreeService } from \"./core/tree-service/tree.service\";\nimport { LimbleTreeLegacyModule } from \"./legacy\";\n\n@NgModule({\n declarations: [],\n imports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule],\n providers: [TreeService],\n exports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule]\n})\nexport class LimbleTreeModule {}\n","/*\n * Public API Surface of limble-tree\n */\n\nexport * from \"./lib/limble-tree.module\";\nexport * from \"./lib/core\";\nexport * from \"./lib/errors\";\nexport * from \"./lib/events\";\nexport * from \"./lib/structure\";\nexport * from \"./lib/extras/collapse\";\nexport * from \"./lib/extras/drag-and-drop\";\nexport * from \"./lib/legacy\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TreeDragAndDropService"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
/// <amd-module name="@limble/limble-tree" />
|
|
5
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
/// <amd-module name="@limble/limble-tree" />
|
|
5
|
+
export * from './public-api';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AfterViewInit, ApplicationRef, ComponentRef, EventEmitter, OnDestroy, QueryList, Type, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { DropzoneComponent } from "../dropzone/dropzone.component";
|
|
3
|
+
import { HostComponent } from "../host-component.interface";
|
|
4
|
+
import { NodeComponent } from "../node-component.interface";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class BranchComponent<T> implements NodeComponent, HostComponent<T>, AfterViewInit, OnDestroy {
|
|
7
|
+
private readonly appRef;
|
|
8
|
+
branchesContainer: ViewContainerRef | undefined;
|
|
9
|
+
contentContainer: ViewContainerRef | undefined;
|
|
10
|
+
dropzones: QueryList<DropzoneComponent> | undefined;
|
|
11
|
+
contentToHost?: Type<T>;
|
|
12
|
+
readonly contentCreated: EventEmitter<T>;
|
|
13
|
+
readonly showDropzones: EventEmitter<"upper" | "lower">;
|
|
14
|
+
readonly dropped: EventEmitter<"inner" | "lateral">;
|
|
15
|
+
showInnerDropzone: boolean;
|
|
16
|
+
showLateralDropzone: boolean;
|
|
17
|
+
private hostedContent?;
|
|
18
|
+
constructor(appRef: ApplicationRef);
|
|
19
|
+
ngAfterViewInit(): void;
|
|
20
|
+
getHostedContent(): ComponentRef<T> | undefined;
|
|
21
|
+
triggerChangeDetection(): void;
|
|
22
|
+
protected dragoverHandler(event: DragEvent): void;
|
|
23
|
+
ngOnDestroy(): void;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BranchComponent<any>, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BranchComponent<any>, "branch", never, { "contentToHost": "contentToHost"; }, { "contentCreated": "contentCreated"; "showDropzones": "showDropzones"; "dropped": "dropped"; }, never, never, true>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class DropzoneComponent {
|
|
4
|
+
placement?: "inner" | "lateral";
|
|
5
|
+
readonly dropped: EventEmitter<DragEvent>;
|
|
6
|
+
protected active: boolean;
|
|
7
|
+
dragenterHandler(): void;
|
|
8
|
+
dragleaveHandler(): void;
|
|
9
|
+
dragoverHandler(event: DragEvent): void;
|
|
10
|
+
dropHandler(event: DragEvent): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DropzoneComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DropzoneComponent, "dropzone", never, { "placement": "placement"; }, { "dropped": "dropped"; }, never, never, true>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ComponentRef, EventEmitter, Type } from "@angular/core";
|
|
2
|
+
export interface HostComponent<UserlandComponent> {
|
|
3
|
+
contentCreated: EventEmitter<UserlandComponent>;
|
|
4
|
+
contentToHost?: Type<UserlandComponent>;
|
|
5
|
+
getHostedContent: () => ComponentRef<UserlandComponent> | undefined;
|
|
6
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AfterViewInit, EventEmitter, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { DropzoneComponent } from "../dropzone/dropzone.component";
|
|
3
|
+
import { NodeComponent } from "../node-component.interface";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RootComponent implements NodeComponent, AfterViewInit {
|
|
6
|
+
branchesContainer: ViewContainerRef | undefined;
|
|
7
|
+
dropzone: DropzoneComponent | undefined;
|
|
8
|
+
readonly afterViewInit: EventEmitter<void>;
|
|
9
|
+
readonly dropped: EventEmitter<void>;
|
|
10
|
+
showInnerDropzone: boolean;
|
|
11
|
+
ngAfterViewInit(): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RootComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RootComponent, "root", never, {}, { "afterViewInit": "afterViewInit"; "dropped": "dropped"; }, never, never, true>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EventEmitter, Type } from "@angular/core";
|
|
2
|
+
export interface BranchOptions<Component> {
|
|
3
|
+
inputBindings?: {
|
|
4
|
+
[K in keyof Component]?: Component[K];
|
|
5
|
+
};
|
|
6
|
+
outputBindings?: {
|
|
7
|
+
[K in keyof Component]?: Component[K] extends EventEmitter<infer T> ? (value: T) => void : never;
|
|
8
|
+
};
|
|
9
|
+
startCollapsed?: boolean;
|
|
10
|
+
meta?: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
export interface FullBranchOptions<Component> extends BranchOptions<Component> {
|
|
13
|
+
component: Type<Component>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TreeRoot } from "../tree-root/tree-root";
|
|
2
|
+
import { TreeOptions } from "./tree-options.interface";
|
|
3
|
+
declare class Configuration {
|
|
4
|
+
private readonly configStorage;
|
|
5
|
+
constructor();
|
|
6
|
+
setConfig<T>(root: TreeRoot<T>, options: TreeOptions): void;
|
|
7
|
+
getConfig(root: any): TreeOptions | undefined;
|
|
8
|
+
delete(root: any): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const config: Configuration;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TreeBranch } from "../tree-branch/tree-branch";
|
|
2
|
+
import { TreeRoot } from "../tree-root/tree-root";
|
|
3
|
+
export interface TreeOptions {
|
|
4
|
+
/**
|
|
5
|
+
* A function to indicate whether to allow a node to be dragged. The node in
|
|
6
|
+
* question is passed in. Defaults to a function that always returns true. This
|
|
7
|
+
* function runs when DragAndDropService.dragStart runs, and before the branch
|
|
8
|
+
* is pruned from the tree.
|
|
9
|
+
*/
|
|
10
|
+
allowDragging?: <T>(treeBranch: TreeBranch<T>) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* A function to determine whether a sourceNode can be dropped at a particular location.
|
|
13
|
+
* The sourceNode, the new proposedParent for the sourceNode, and the new proposedIndex
|
|
14
|
+
* for the source node are passed in. This function runs just before displaying a
|
|
15
|
+
* family of dropzones.
|
|
16
|
+
*/
|
|
17
|
+
allowDrop?: <T>(sourceNode: TreeBranch<T>, proposedParent: TreeBranch<T> | TreeRoot<T>, proposedIndex: number) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* A function to indicate whether to allow "nesting" (placing a branch one level
|
|
20
|
+
* deeper than its parent). The node in question is passed in. Defaults to a function
|
|
21
|
+
* that always returns true. This function runs just before displaying a family of
|
|
22
|
+
* dropzones.
|
|
23
|
+
*/
|
|
24
|
+
allowNesting?: <T>(treeBranch: TreeBranch<T>) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The number of pixels each level of the tree will be indented relative to
|
|
27
|
+
* its parent. Defaults to 16.
|
|
28
|
+
*/
|
|
29
|
+
indentation?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Whether all branches should start out in a collapsed state, so that only one
|
|
32
|
+
* level of the tree is visible at first. Defaults to false.
|
|
33
|
+
*/
|
|
34
|
+
startAllCollapsed?: boolean;
|
|
35
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ComponentRef } from "@angular/core";
|
|
2
|
+
import { NodeComponent } from "../components/node-component.interface";
|
|
3
|
+
import { ContainerTreeNode } from "../structure/container-tree-node.interface";
|
|
4
|
+
import { TreeRelationship } from "../structure/tree-relationship.interface";
|
|
5
|
+
import { TreeBranch } from "./tree-branch/tree-branch";
|
|
6
|
+
export declare type Relationship<UserlandComponent> = TreeRelationship<ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>>, TreeBranch<UserlandComponent>>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TreePlot } from "../../structure/tree-plot";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { TreeEvent } from "../../structure/tree-event.interface";
|
|
4
|
+
import { TreeBranchNode } from "../../structure/tree-branch-node.interface";
|
|
5
|
+
import { ComponentRef, Type } from "@angular/core";
|
|
6
|
+
import { BranchComponent } from "../../components/branch/branch.component";
|
|
7
|
+
import { ContainerTreeNode } from "../../structure/container-tree-node.interface";
|
|
8
|
+
import { NodeComponent } from "../../components/node-component.interface";
|
|
9
|
+
import { BranchOptions, FullBranchOptions } from "../branch-options.interface";
|
|
10
|
+
import { TreeRoot } from "..";
|
|
11
|
+
export declare class TreeBranch<UserlandComponent> implements TreeBranchNode<ComponentRef<BranchComponent<UserlandComponent>>, TreeBranch<UserlandComponent>, ComponentRef<NodeComponent>> {
|
|
12
|
+
readonly branchOptions: FullBranchOptions<UserlandComponent>;
|
|
13
|
+
private readonly contents;
|
|
14
|
+
private readonly instanceSubscriptions;
|
|
15
|
+
private readonly outputBindingSubscriptions;
|
|
16
|
+
private _parent;
|
|
17
|
+
private readonly treeNodeBase;
|
|
18
|
+
private readonly userlandComponent;
|
|
19
|
+
private detachedView;
|
|
20
|
+
constructor(parent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>>, branchOptions: FullBranchOptions<UserlandComponent>);
|
|
21
|
+
branches(): Array<TreeBranch<UserlandComponent>>;
|
|
22
|
+
deleteBranch(index?: number): void;
|
|
23
|
+
destroy(): void;
|
|
24
|
+
dispatch(event: TreeEvent): void;
|
|
25
|
+
events(): Observable<TreeEvent>;
|
|
26
|
+
getBranch(index: number): TreeBranch<UserlandComponent> | undefined;
|
|
27
|
+
getContents(): ComponentRef<BranchComponent<UserlandComponent>>;
|
|
28
|
+
graftTo(newParent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>>, index?: number): number;
|
|
29
|
+
grow(component: Type<UserlandComponent>, options?: BranchOptions<UserlandComponent>): TreeBranch<UserlandComponent>;
|
|
30
|
+
index(): number | undefined;
|
|
31
|
+
meta(): Record<string, any>;
|
|
32
|
+
parent(): ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>> | undefined;
|
|
33
|
+
plot(): TreePlot;
|
|
34
|
+
position(): Array<number>;
|
|
35
|
+
prune(): this | undefined;
|
|
36
|
+
root(): TreeRoot<UserlandComponent> | undefined;
|
|
37
|
+
traverse(callback: (node: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>>) => void): void;
|
|
38
|
+
private getContentCreatedSub;
|
|
39
|
+
private getInstanceSubscriptions;
|
|
40
|
+
private getShowLowerZonesSub;
|
|
41
|
+
private getShowUpperZonesSub;
|
|
42
|
+
private reattachView;
|
|
43
|
+
private setIndentation;
|
|
44
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ComponentRef } from "@angular/core";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { NodeComponent } from "../components/node-component.interface";
|
|
4
|
+
import { TreeEvent } from "../structure/tree-event.interface";
|
|
5
|
+
import { ContainerTreeNode } from "../structure/container-tree-node.interface";
|
|
6
|
+
import { TreeNode } from "../structure/tree-node.interface";
|
|
7
|
+
import { TreePlot } from "../structure/tree-plot";
|
|
8
|
+
import { TreeBranch } from "./tree-branch/tree-branch";
|
|
9
|
+
export declare class TreeNodeBase<UserlandComponent> implements Partial<TreeNode<TreeBranch<UserlandComponent>>> {
|
|
10
|
+
private readonly _branches;
|
|
11
|
+
private readonly events$;
|
|
12
|
+
private readonly subscriptions;
|
|
13
|
+
constructor();
|
|
14
|
+
branches(): Array<TreeBranch<UserlandComponent>>;
|
|
15
|
+
deleteBranch(index?: number): void;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
dispatch(event: TreeEvent): void;
|
|
18
|
+
events(): Observable<TreeEvent>;
|
|
19
|
+
getBranch(index: number): TreeBranch<UserlandComponent> | undefined;
|
|
20
|
+
plot(): TreePlot;
|
|
21
|
+
traverse(callback: (node: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>>) => void): void;
|
|
22
|
+
private deregisterChildRelationship;
|
|
23
|
+
private graftsToSelf;
|
|
24
|
+
private prunesToSelf;
|
|
25
|
+
private registerChildRelationship;
|
|
26
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TreePlot } from "../../structure/tree-plot";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { TreeEvent } from "../../structure/tree-event.interface";
|
|
4
|
+
import { TreeBranch } from "../tree-branch/tree-branch";
|
|
5
|
+
import { ComponentRef, Type, ViewContainerRef } from "@angular/core";
|
|
6
|
+
import { RootComponent } from "../../components/root/root.component";
|
|
7
|
+
import { TreeRootNode } from "../../structure/tree-root.node.interface";
|
|
8
|
+
import { ContainerTreeNode } from "../../structure/container-tree-node.interface";
|
|
9
|
+
import { NodeComponent } from "../../components/node-component.interface";
|
|
10
|
+
import { BranchOptions } from "../branch-options.interface";
|
|
11
|
+
export declare class TreeRoot<UserlandComponent> implements TreeRootNode<ComponentRef<RootComponent>, TreeBranch<UserlandComponent>> {
|
|
12
|
+
private readonly viewContainerRef;
|
|
13
|
+
private readonly instanceSubscriptions;
|
|
14
|
+
private readonly rootComponentRef;
|
|
15
|
+
private readonly treeNodeBase;
|
|
16
|
+
constructor(viewContainerRef: ViewContainerRef);
|
|
17
|
+
branches(): Array<TreeBranch<UserlandComponent>>;
|
|
18
|
+
deleteBranch(index?: number): void;
|
|
19
|
+
destroy(): void;
|
|
20
|
+
dispatch(event: TreeEvent): void;
|
|
21
|
+
events(): Observable<TreeEvent>;
|
|
22
|
+
getBranch(index: number): TreeBranch<UserlandComponent> | undefined;
|
|
23
|
+
getContents(): ComponentRef<RootComponent>;
|
|
24
|
+
grow(component: Type<UserlandComponent>, options?: BranchOptions<UserlandComponent>): TreeBranch<UserlandComponent>;
|
|
25
|
+
plot(): TreePlot;
|
|
26
|
+
root(): this;
|
|
27
|
+
traverse(callback: (node: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<UserlandComponent>>) => void): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { TreeOptions } from "../configuration/tree-options.interface";
|
|
3
|
+
import { TreeRoot } from "../tree-root/tree-root";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class TreeService {
|
|
6
|
+
createEmptyTree<Component>(container: ViewContainerRef, options?: TreeOptions): TreeRoot<Component>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeService, never>;
|
|
8
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TreeService>;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./tree-error";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentRef } from "@angular/core";
|
|
2
|
+
import { NodeComponent } from "../../components/node-component.interface";
|
|
3
|
+
import { TreeBranch } from "../../core";
|
|
4
|
+
import { ContainerTreeNode } from "../../structure";
|
|
5
|
+
import { EventConduit } from "../../structure/event-conduit.interface";
|
|
6
|
+
import { TreeEvent } from "../../structure/tree-event.interface";
|
|
7
|
+
export declare class DragEndEvent<T> implements TreeEvent {
|
|
8
|
+
private readonly _source;
|
|
9
|
+
private readonly _newParent;
|
|
10
|
+
private readonly _newIndex;
|
|
11
|
+
private readonly _oldParent;
|
|
12
|
+
private readonly _oldIndex;
|
|
13
|
+
constructor(source: EventConduit, endpoints: {
|
|
14
|
+
oldParent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>;
|
|
15
|
+
oldIndex: number;
|
|
16
|
+
newParent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>;
|
|
17
|
+
newIndex: number;
|
|
18
|
+
});
|
|
19
|
+
type(): "drag end";
|
|
20
|
+
source(): EventConduit;
|
|
21
|
+
newIndex(): number;
|
|
22
|
+
newParent(): ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>;
|
|
23
|
+
oldIndex(): number;
|
|
24
|
+
oldParent(): ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EventConduit } from "../../structure/event-conduit.interface";
|
|
2
|
+
import { TreeEvent } from "../../structure/tree-event.interface";
|
|
3
|
+
export declare class DragStartEvent implements TreeEvent {
|
|
4
|
+
private readonly _source;
|
|
5
|
+
constructor(source: EventConduit);
|
|
6
|
+
type(): "drag start";
|
|
7
|
+
source(): EventConduit;
|
|
8
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ComponentRef } from "@angular/core";
|
|
2
|
+
import { NodeComponent } from "../../components/node-component.interface";
|
|
3
|
+
import { TreeBranch } from "../../core";
|
|
4
|
+
import { ContainerTreeNode } from "../../structure/container-tree-node.interface";
|
|
5
|
+
import { EventConduit } from "../../structure/event-conduit.interface";
|
|
6
|
+
import { TreeEvent } from "../../structure/tree-event.interface";
|
|
7
|
+
export declare class DropEvent<T> implements TreeEvent {
|
|
8
|
+
private readonly _source;
|
|
9
|
+
private readonly _parent;
|
|
10
|
+
private readonly _index;
|
|
11
|
+
constructor(source: EventConduit, parent: ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>, index: number);
|
|
12
|
+
type(): "drag end";
|
|
13
|
+
source(): EventConduit;
|
|
14
|
+
index(): number;
|
|
15
|
+
parent(): ContainerTreeNode<ComponentRef<NodeComponent>, TreeBranch<T>>;
|
|
16
|
+
}
|