@limble/limble-tree 2.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/esm2022/lib/components/branch/branch.component.mjs +79 -0
- package/esm2022/lib/components/dragover-no-change-detect.mjs +39 -0
- package/{esm2020 → esm2022}/lib/components/dropzone/dropzone.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/root/root.component.mjs +5 -5
- package/esm2022/lib/core/tree-branch/branch-controller.mjs +99 -0
- package/esm2022/lib/core/tree-branch/tree-branch.mjs +429 -0
- package/esm2022/lib/core/tree-node-base.mjs +77 -0
- package/esm2022/lib/core/tree-root/tree-root.mjs +193 -0
- package/{esm2020 → esm2022}/lib/core/tree-service/tree.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/extras/collapse/collapse.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/extras/collapse/collapse.service.mjs +4 -4
- package/esm2022/lib/extras/drag-and-drop/drag-and-drop.mjs +83 -0
- package/{esm2020 → esm2022}/lib/extras/drag-and-drop/drag-and-drop.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/extras/drag-and-drop/drag-and-drop.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/extras/drag-and-drop/draggable.directive.mjs +5 -5
- package/esm2022/lib/extras/drag-and-drop/dropzone-renderer.mjs +176 -0
- package/esm2022/lib/legacy/legacy-tree.mjs +73 -0
- package/esm2022/lib/legacy/limble-tree-legacy.module.mjs +20 -0
- package/esm2022/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +78 -0
- package/{esm2020 → esm2022}/lib/limble-tree.module.mjs +5 -5
- package/esm2022/shared/assert.mjs +7 -0
- package/{fesm2020 → fesm2022}/limble-limble-tree.mjs +72 -75
- package/fesm2022/limble-limble-tree.mjs.map +1 -0
- package/lib/components/branch/branch.component.d.ts +1 -1
- package/lib/components/dropzone/dropzone.component.d.ts +1 -1
- package/lib/core/tree-node-base.d.ts +2 -1
- package/lib/extras/drag-and-drop/draggable.directive.d.ts +1 -1
- package/lib/legacy/limble-tree-root/limble-tree-root.component.d.ts +2 -2
- package/package.json +7 -13
- package/esm2020/lib/components/branch/branch.component.mjs +0 -79
- package/esm2020/lib/components/dragover-no-change-detect.mjs +0 -39
- package/esm2020/lib/core/tree-branch/branch-controller.mjs +0 -99
- package/esm2020/lib/core/tree-branch/tree-branch.mjs +0 -429
- package/esm2020/lib/core/tree-node-base.mjs +0 -80
- package/esm2020/lib/core/tree-root/tree-root.mjs +0 -193
- package/esm2020/lib/extras/drag-and-drop/drag-and-drop.mjs +0 -83
- package/esm2020/lib/extras/drag-and-drop/dropzone-renderer.mjs +0 -176
- package/esm2020/lib/legacy/legacy-tree.mjs +0 -73
- package/esm2020/lib/legacy/limble-tree-legacy.module.mjs +0 -20
- package/esm2020/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +0 -78
- package/esm2020/shared/assert.mjs +0 -7
- package/fesm2015/limble-limble-tree.mjs +0 -1812
- package/fesm2015/limble-limble-tree.mjs.map +0 -1
- package/fesm2020/limble-limble-tree.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/components/branch/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/dropzone/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/host-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/node-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/root/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/branch-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/branchable.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/component-container.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/configuration/configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/configuration/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/configuration/tree-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-branch/graftable.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-branch/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-node.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-plot.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-root/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-root/root-controller.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tree-service/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/errors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/errors/tree-error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/drag/drag-end-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/drag/drag-start-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/drag/drop-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/drag/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/general/destruction-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/general/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/relational/graft-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/relational/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/relational/prune-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/relational/relational-tree-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/relational/tree-relationship.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events/tree-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/extras/collapse/collapse.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/extras/collapse/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/extras/drag-and-drop/drag-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/extras/drag-and-drop/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/legacy/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/legacy/legacy-component-obj.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/legacy/legacy-tree-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/legacy/legacy-tree-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/limble-limble-tree.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/has-property.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/index.mjs +0 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { assert } from "../../../shared";
|
|
2
|
+
import { BranchComponent } from "../../components";
|
|
3
|
+
import { dragState, DragStates } from "./drag-state";
|
|
4
|
+
import { dragAndDrop } from "./drag-and-drop";
|
|
5
|
+
import { TreeBranch, TreeRoot, config } from "../../core";
|
|
6
|
+
import { filter, first } from "rxjs";
|
|
7
|
+
import { PruneEvent } from "../../events";
|
|
8
|
+
class DropzoneRenderer {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.registry = new Map();
|
|
11
|
+
this.currentDisplay = null;
|
|
12
|
+
dragAndDrop.dragAborted$.subscribe(() => {
|
|
13
|
+
this.clearCurrentDisplay();
|
|
14
|
+
});
|
|
15
|
+
dragState
|
|
16
|
+
.events()
|
|
17
|
+
.pipe(filter((event) => event === DragStates.Starting))
|
|
18
|
+
.subscribe(() => {
|
|
19
|
+
const branch = dragState.getDragData();
|
|
20
|
+
assert(branch !== undefined);
|
|
21
|
+
let cursor = branch.parent()?.getBranch((branch.index() ?? 0) - 1);
|
|
22
|
+
let final = branch.parent();
|
|
23
|
+
while (cursor !== undefined) {
|
|
24
|
+
final = cursor;
|
|
25
|
+
cursor = cursor.branches().at(-1);
|
|
26
|
+
}
|
|
27
|
+
branch
|
|
28
|
+
.events()
|
|
29
|
+
.pipe(filter((event) => event instanceof PruneEvent), first())
|
|
30
|
+
.subscribe(() => {
|
|
31
|
+
assert(final !== undefined);
|
|
32
|
+
this.showLowerZones(final);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
clearCurrentDisplay() {
|
|
37
|
+
if (this.currentDisplay === null)
|
|
38
|
+
return;
|
|
39
|
+
for (const branch of this.registry.values()) {
|
|
40
|
+
const instance = branch.getComponentInstance();
|
|
41
|
+
instance.showInnerDropzone = false;
|
|
42
|
+
if (instance instanceof BranchComponent) {
|
|
43
|
+
instance.showLateralDropzone = false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.currentDisplay = null;
|
|
47
|
+
}
|
|
48
|
+
clearTreeFromRegistry(tree) {
|
|
49
|
+
const nodes = [];
|
|
50
|
+
tree.traverse((node) => nodes.push(node));
|
|
51
|
+
for (const [dropzoneComponent, treeNode] of this.registry) {
|
|
52
|
+
if (nodes.includes(treeNode)) {
|
|
53
|
+
this.registry.delete(dropzoneComponent);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
getCurrentDisplay() {
|
|
58
|
+
if (this.currentDisplay === null)
|
|
59
|
+
return null;
|
|
60
|
+
return { ...this.currentDisplay };
|
|
61
|
+
}
|
|
62
|
+
getDropzoneLocation(dropzone) {
|
|
63
|
+
const branch = this.registry.get(dropzone);
|
|
64
|
+
const placement = dropzone.placement;
|
|
65
|
+
if (branch === undefined) {
|
|
66
|
+
throw new Error("dropzone not found in registry");
|
|
67
|
+
}
|
|
68
|
+
if (placement === undefined) {
|
|
69
|
+
throw new Error("dropzone has an undefined placement");
|
|
70
|
+
}
|
|
71
|
+
return [branch, placement];
|
|
72
|
+
}
|
|
73
|
+
handleDrop(treeNode, placement) {
|
|
74
|
+
if (placement === "inner") {
|
|
75
|
+
dragAndDrop.drop(treeNode, 0);
|
|
76
|
+
}
|
|
77
|
+
else if (treeNode instanceof TreeBranch && placement === "lateral") {
|
|
78
|
+
const currentParent = treeNode.parent();
|
|
79
|
+
const index = treeNode.index();
|
|
80
|
+
if (currentParent === undefined || index === undefined) {
|
|
81
|
+
throw new Error("branch must have a parent");
|
|
82
|
+
}
|
|
83
|
+
dragAndDrop.drop(currentParent, index + 1);
|
|
84
|
+
}
|
|
85
|
+
this.clearCurrentDisplay();
|
|
86
|
+
}
|
|
87
|
+
registerDropzone(dropzone, treeNode) {
|
|
88
|
+
this.registry.set(dropzone, treeNode);
|
|
89
|
+
}
|
|
90
|
+
registerDropzones(dropzones, treeBranch) {
|
|
91
|
+
for (const dropzone of dropzones) {
|
|
92
|
+
this.registry.set(dropzone, treeBranch);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
showLowerZones(treeNode) {
|
|
96
|
+
this.clearCurrentDisplay();
|
|
97
|
+
this.showInnerZone(treeNode);
|
|
98
|
+
if (treeNode.branches().length === 0) {
|
|
99
|
+
this.loopThroughLowerZones(treeNode);
|
|
100
|
+
}
|
|
101
|
+
this.currentDisplay = { treeBranch: treeNode, direction: "lower" };
|
|
102
|
+
}
|
|
103
|
+
showUpperZones(treeBranch) {
|
|
104
|
+
this.clearCurrentDisplay();
|
|
105
|
+
this.loopThroughUpperZones(treeBranch);
|
|
106
|
+
this.currentDisplay = { treeBranch, direction: "upper" };
|
|
107
|
+
}
|
|
108
|
+
loopThroughLowerZones(treeNode) {
|
|
109
|
+
let cursor = treeNode;
|
|
110
|
+
while (cursor instanceof TreeBranch) {
|
|
111
|
+
this.showLateralZone(cursor);
|
|
112
|
+
const parent = cursor.parent();
|
|
113
|
+
const index = cursor.index();
|
|
114
|
+
assert(parent !== undefined && index !== undefined);
|
|
115
|
+
if (parent.branches().length > index + 1) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
cursor = cursor.parent();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
loopThroughUpperZones(treeBranch) {
|
|
122
|
+
let cursor = treeBranch
|
|
123
|
+
.parent()
|
|
124
|
+
?.getBranch((treeBranch.index() ?? 0) - 1);
|
|
125
|
+
let final = treeBranch.parent();
|
|
126
|
+
while (cursor !== undefined) {
|
|
127
|
+
this.showLateralZone(cursor);
|
|
128
|
+
final = cursor;
|
|
129
|
+
cursor = cursor.branches().at(-1);
|
|
130
|
+
}
|
|
131
|
+
if (final !== undefined &&
|
|
132
|
+
(final instanceof TreeRoot || final instanceof TreeBranch)) {
|
|
133
|
+
this.showInnerZone(final);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
nestingAllowed(treeNode) {
|
|
137
|
+
if (treeNode instanceof TreeRoot) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
if (treeNode instanceof TreeBranch) {
|
|
141
|
+
const allowNesting = config.getConfig(treeNode.root())?.dragAndDrop?.allowNesting ??
|
|
142
|
+
(() => true);
|
|
143
|
+
return allowNesting(treeNode);
|
|
144
|
+
}
|
|
145
|
+
throw new Error("unsupported treeNode type");
|
|
146
|
+
}
|
|
147
|
+
dropAllowed(parent, index) {
|
|
148
|
+
const sourceNode = dragState.getDragData();
|
|
149
|
+
assert(sourceNode instanceof TreeBranch);
|
|
150
|
+
if (parent instanceof TreeRoot) {
|
|
151
|
+
const allowDrop = config.getConfig(parent)?.dragAndDrop?.allowDrop ??
|
|
152
|
+
(() => true);
|
|
153
|
+
return allowDrop(sourceNode, parent, index);
|
|
154
|
+
}
|
|
155
|
+
if (parent instanceof TreeBranch) {
|
|
156
|
+
const allowDrop = config.getConfig(parent.root())?.dragAndDrop?.allowDrop ??
|
|
157
|
+
(() => true);
|
|
158
|
+
return allowDrop(sourceNode, parent, index);
|
|
159
|
+
}
|
|
160
|
+
throw new Error("unsupported treeNode type");
|
|
161
|
+
}
|
|
162
|
+
showInnerZone(treeNode) {
|
|
163
|
+
if (!this.nestingAllowed(treeNode) || !this.dropAllowed(treeNode, 0))
|
|
164
|
+
return;
|
|
165
|
+
treeNode.getComponentInstance().showInnerDropzone = true;
|
|
166
|
+
}
|
|
167
|
+
showLateralZone(treeBranch) {
|
|
168
|
+
const index = treeBranch.index();
|
|
169
|
+
assert(index !== undefined);
|
|
170
|
+
if (!this.dropAllowed(treeBranch.parent(), index + 1))
|
|
171
|
+
return;
|
|
172
|
+
treeBranch.getComponentInstance().showLateralDropzone = true;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export const dropzoneRenderer = new DropzoneRenderer();
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V4dHJhcy9kcmFnLWFuZC1kcm9wL2Ryb3B6b25lLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUEwQixNQUFNLGtCQUFrQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFpQixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsTUFBTSxnQkFBZ0I7SUFPbkI7UUFDRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUzthQUNMLE1BQU0sRUFBRTthQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUs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LG9CQUFvQixFQUFFLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLENBQUM7Q0FDSDtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWRcIjtcbmltcG9ydCB7IEJyYW5jaENvbXBvbmVudCwgdHlwZSBEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBkcmFnU3RhdGUsIERyYWdTdGF0ZXMgfSBmcm9tIFwiLi9kcmFnLXN0YXRlXCI7XG5pbXBvcnQgeyBkcmFnQW5kRHJvcCB9IGZyb20gXCIuL2RyYWctYW5kLWRyb3BcIjtcbmltcG9ydCB7IFRyZWVCcmFuY2gsIHR5cGUgVHJlZU5vZGUsIFRyZWVSb290LCBjb25maWcgfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBQcnVuZUV2ZW50IH0gZnJvbSBcIi4uLy4uL2V2ZW50c1wiO1xuXG5jbGFzcyBEcm9wem9uZVJlbmRlcmVyIHtcbiAgIHByaXZhdGUgY3VycmVudERpc3BsYXk6IHtcbiAgICAgIHRyZWVCcmFuY2g6IFRyZWVOb2RlPGFueT47XG4gICAgICBkaXJlY3Rpb246IFwidXBwZXJcIiB8IFwibG93ZXJcIjtcbiAgIH0gfCBudWxsO1xuICAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeTogTWFwPERyb3B6b25lQ29tcG9uZW50LCBUcmVlTm9kZTxhbnk+PjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhpcy5yZWdpc3RyeSA9IG5ldyBNYXAoKTtcbiAgICAgIHRoaXMuY3VycmVudERpc3BsYXkgPSBudWxsO1xuICAgICAgZHJhZ0FuZERyb3AuZHJhZ0Fib3J0ZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICB0aGlzLmNsZWFyQ3VycmVudERpc3BsYXkoKTtcbiAgICAgIH0pO1xuICAgICAgZHJhZ1N0YXRlXG4gICAgICAgICAuZXZlbnRzKClcbiAgICAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSBEcmFnU3RhdGVzLlN0YXJ0aW5nKSlcbiAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gZHJhZ1N0YXRlLmdldERyYWdEYXRhKCk7XG4gICAgICAgICAgICBhc3NlcnQoYnJhbmNoICE9PSB1bmRlZmluZWQpO1xuICAgICAgICAgICAgbGV0IGN1cnNvciA9IGJyYW5jaC5wYXJlbnQoKT8uZ2V0QnJhbmNoKChicmFuY2guaW5kZXgoKSA/PyAwKSAtIDEpO1xuICAgICAgICAgICAgbGV0IGZpbmFsID0gYnJhbmNoLnBhcmVudCgpO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnNvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICBmaW5hbCA9IGN1cnNvcjtcbiAgICAgICAgICAgICAgIGN1cnNvciA9IGN1cnNvci5icmFuY2hlcygpLmF0KC0xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyYW5jaFxuICAgICAgICAgICAgICAgLmV2ZW50cygpXG4gICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgUHJ1bmVFdmVudCksXG4gICAgICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGFzc2VydChmaW5hbCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvd2VyWm9uZXMoZmluYWwpO1xuICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIGNsZWFyQ3VycmVudERpc3BsYXkoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50RGlzcGxheSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy5yZWdpc3RyeS52YWx1ZXMoKSkge1xuICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBicmFuY2guZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTtcbiAgICAgICAgIGluc3RhbmNlLnNob3dJbm5lckRyb3B6b25lID0gZmFsc2U7XG4gICAgICAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBCcmFuY2hDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLnNob3dMYXRlcmFsRHJvcHpvbmUgPSBmYWxzZTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudERpc3BsYXkgPSBudWxsO1xuICAgfVxuXG4gICBwdWJsaWMgY2xlYXJUcmVlRnJvbVJlZ2lzdHJ5KHRyZWU6IFRyZWVOb2RlPGFueT4pOiB2b2lkIHtcbiAgICAgIGNvbnN0IG5vZGVzOiBBcnJheTxUcmVlTm9kZTxhbnk+PiA9IFtdO1xuICAgICAgdHJlZS50cmF2ZXJzZSgobm9kZSkgPT4gbm9kZXMucHVzaChub2RlKSk7XG4gICAgICBmb3IgKGNvbnN0IFtkcm9wem9uZUNvbXBvbmVudCwgdHJlZU5vZGVdIG9mIHRoaXMucmVnaXN0cnkpIHtcbiAgICAgICAgIGlmIChub2Rlcy5pbmNsdWRlcyh0cmVlTm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0cnkuZGVsZXRlKGRyb3B6b25lQ29tcG9uZW50KTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGdldEN1cnJlbnREaXNwbGF5KCk6IHtcbiAgICAgIHRyZWVCcmFuY2g6IFRyZWVOb2RlPGFueT47XG4gICAgICBkaXJlY3Rpb246IFwidXBwZXJcIiB8IFwibG93ZXJcIjtcbiAgIH0gfCBudWxsIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnREaXNwbGF5ID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiB7IC4uLnRoaXMuY3VycmVudERpc3BsYXkgfTtcbiAgIH1cblxuICAgcHVibGljIGdldERyb3B6b25lTG9jYXRpb248VD4oXG4gICAgICBkcm9wem9uZTogRHJvcHpvbmVDb21wb25lbnRcbiAgICk6IFtUcmVlTm9kZTxUPiwgXCJpbm5lclwiIHwgXCJsYXRlcmFsXCJdIHtcbiAgICAgIGNvbnN0IGJyYW5jaCA9IHRoaXMucmVnaXN0cnkuZ2V0KGRyb3B6b25lKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudCA9IGRyb3B6b25lLnBsYWNlbWVudDtcbiAgICAgIGlmIChicmFuY2ggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZHJvcHpvbmUgbm90IGZvdW5kIGluIHJlZ2lzdHJ5XCIpO1xuICAgICAgfVxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkcm9wem9uZSBoYXMgYW4gdW5kZWZpbmVkIHBsYWNlbWVudFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbYnJhbmNoLCBwbGFjZW1lbnRdO1xuICAgfVxuXG4gICBwdWJsaWMgaGFuZGxlRHJvcDxUPihcbiAgICAgIHRyZWVOb2RlOiBUcmVlTm9kZTxUPixcbiAgICAgIHBsYWNlbWVudDogXCJpbm5lclwiIHwgXCJsYXRlcmFsXCJcbiAgICk6IHZvaWQge1xuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gXCJpbm5lclwiKSB7XG4gICAgICAgICBkcmFnQW5kRHJvcC5kcm9wKHRyZWVOb2RlLCAwKTtcbiAgICAgIH0gZWxzZSBpZiAodHJlZU5vZGUgaW5zdGFuY2VvZiBUcmVlQnJhbmNoICYmIHBsYWNlbWVudCA9PT0gXCJsYXRlcmFsXCIpIHtcbiAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXJlbnQgPSB0cmVlTm9kZS5wYXJlbnQoKTtcbiAgICAgICAgIGNvbnN0IGluZGV4ID0gdHJlZU5vZGUuaW5kZXgoKTtcbiAgICAgICAgIGlmIChjdXJyZW50UGFyZW50ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYnJhbmNoIG11c3QgaGF2ZSBhIHBhcmVudFwiKTtcbiAgICAgICAgIH1cbiAgICAgICAgIGRyYWdBbmREcm9wLmRyb3AoY3VycmVudFBhcmVudCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xlYXJDdXJyZW50RGlzcGxheSgpO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJEcm9wem9uZTxUPihcbiAgICAgIGRyb3B6b25lOiBEcm9wem9uZUNvbXBvbmVudCxcbiAgICAgIHRyZWVOb2RlOiBUcmVlTm9kZTxUPlxuICAgKTogdm9pZCB7XG4gICAgICB0aGlzLnJlZ2lzdHJ5LnNldChkcm9wem9uZSwgdHJlZU5vZGUpO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJEcm9wem9uZXM8VD4oXG4gICAgICBkcm9wem9uZXM6IEl0ZXJhYmxlPERyb3B6b25lQ29tcG9uZW50PixcbiAgICAgIHRyZWVCcmFuY2g6IFRyZWVCcmFuY2g8VD5cbiAgICk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBkcm9wem9uZSBvZiBkcm9wem9uZXMpIHtcbiAgICAgICAgIHRoaXMucmVnaXN0cnkuc2V0KGRyb3B6b25lLCB0cmVlQnJhbmNoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIHNob3dMb3dlclpvbmVzPFQ+KHRyZWVOb2RlOiBUcmVlTm9kZTxUPik6IHZvaWQge1xuICAgICAgdGhpcy5jbGVhckN1cnJlbnREaXNwbGF5KCk7XG4gICAgICB0aGlzLnNob3dJbm5lclpvbmUodHJlZU5vZGUpO1xuICAgICAgaWYgKHRyZWVOb2RlLmJyYW5jaGVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICB0aGlzLmxvb3BUaHJvdWdoTG93ZXJab25lcyh0cmVlTm9kZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnREaXNwbGF5ID0geyB0cmVlQnJhbmNoOiB0cmVlTm9kZSwgZGlyZWN0aW9uOiBcImxvd2VyXCIgfTtcbiAgIH1cblxuICAgcHVibGljIHNob3dVcHBlclpvbmVzPFQ+KHRyZWVCcmFuY2g6IFRyZWVCcmFuY2g8VD4pOiB2b2lkIHtcbiAgICAgIHRoaXMuY2xlYXJDdXJyZW50RGlzcGxheSgpO1xuICAgICAgdGhpcy5sb29wVGhyb3VnaFVwcGVyWm9uZXModHJlZUJyYW5jaCk7XG4gICAgICB0aGlzLmN1cnJlbnREaXNwbGF5ID0geyB0cmVlQnJhbmNoLCBkaXJlY3Rpb246IFwidXBwZXJcIiB9O1xuICAgfVxuXG4gICBwcml2YXRlIGxvb3BUaHJvdWdoTG93ZXJab25lczxUPih0cmVlTm9kZTogVHJlZU5vZGU8VD4pOiB2b2lkIHtcbiAgICAgIGxldCBjdXJzb3I6IFRyZWVOb2RlPFQ+IHwgdW5kZWZpbmVkID0gdHJlZU5vZGU7XG4gICAgICB3aGlsZSAoY3Vyc29yIGluc3RhbmNlb2YgVHJlZUJyYW5jaCkge1xuICAgICAgICAgdGhpcy5zaG93TGF0ZXJhbFpvbmUoY3Vyc29yKTtcbiAgICAgICAgIGNvbnN0IHBhcmVudCA9IGN1cnNvci5wYXJlbnQoKTtcbiAgICAgICAgIGNvbnN0IGluZGV4ID0gY3Vyc29yLmluZGV4KCk7XG4gICAgICAgICBhc3NlcnQocGFyZW50ICE9PSB1bmRlZmluZWQgJiYgaW5kZXggIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICBpZiAocGFyZW50LmJyYW5jaGVzKCkubGVuZ3RoID4gaW5kZXggKyAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICB9XG4gICAgICAgICBjdXJzb3IgPSBjdXJzb3IucGFyZW50KCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgbG9vcFRocm91Z2hVcHBlclpvbmVzPFQ+KHRyZWVCcmFuY2g6IFRyZWVCcmFuY2g8VD4pOiB2b2lkIHtcbiAgICAgIGxldCBjdXJzb3IgPSB0cmVlQnJhbmNoXG4gICAgICAgICAucGFyZW50KClcbiAgICAgICAgID8uZ2V0QnJhbmNoKCh0cmVlQnJhbmNoLmluZGV4KCkgPz8gMCkgLSAxKTtcbiAgICAgIGxldCBmaW5hbCA9IHRyZWVCcmFuY2gucGFyZW50KCk7XG4gICAgICB3aGlsZSAoY3Vyc29yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIHRoaXMuc2hvd0xhdGVyYWxab25lKGN1cnNvcik7XG4gICAgICAgICBmaW5hbCA9IGN1cnNvcjtcbiAgICAgICAgIGN1cnNvciA9IGN1cnNvci5icmFuY2hlcygpLmF0KC0xKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIGZpbmFsICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgIChmaW5hbCBpbnN0YW5jZW9mIFRyZWVSb290IHx8IGZpbmFsIGluc3RhbmNlb2YgVHJlZUJyYW5jaClcbiAgICAgICkge1xuICAgICAgICAgdGhpcy5zaG93SW5uZXJab25lKGZpbmFsKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBuZXN0aW5nQWxsb3dlZDxUPih0cmVlTm9kZTogVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICAgIGlmICh0cmVlTm9kZSBpbnN0YW5jZW9mIFRyZWVSb290KSB7XG4gICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0cmVlTm9kZSBpbnN0YW5jZW9mIFRyZWVCcmFuY2gpIHtcbiAgICAgICAgIGNvbnN0IGFsbG93TmVzdGluZyA9XG4gICAgICAgICAgICBjb25maWcuZ2V0Q29uZmlnKHRyZWVOb2RlLnJvb3QoKSk/LmRyYWdBbmREcm9wPy5hbGxvd05lc3RpbmcgPz9cbiAgICAgICAgICAgICgoKTogdHJ1ZSA9PiB0cnVlKTtcbiAgICAgICAgIHJldHVybiBhbGxvd05lc3RpbmcodHJlZU5vZGUpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgdHJlZU5vZGUgdHlwZVwiKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBkcm9wQWxsb3dlZChwYXJlbnQ6IHVua25vd24sIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBkcmFnU3RhdGUuZ2V0RHJhZ0RhdGEoKTtcbiAgICAgIGFzc2VydChzb3VyY2VOb2RlIGluc3RhbmNlb2YgVHJlZUJyYW5jaCk7XG4gICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgVHJlZVJvb3QpIHtcbiAgICAgICAgIGNvbnN0IGFsbG93RHJvcCA9XG4gICAgICAgICAgICBjb25maWcuZ2V0Q29uZmlnKHBhcmVudCk/LmRyYWdBbmREcm9wPy5hbGxvd0Ryb3AgPz9cbiAgICAgICAgICAgICgoKTogdHJ1ZSA9PiB0cnVlKTtcbiAgICAgICAgIHJldHVybiBhbGxvd0Ryb3Aoc291cmNlTm9kZSwgcGFyZW50LCBpbmRleCk7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgVHJlZUJyYW5jaCkge1xuICAgICAgICAgY29uc3QgYWxsb3dEcm9wID1cbiAgICAgICAgICAgIGNvbmZpZy5nZXRDb25maWcocGFyZW50LnJvb3QoKSk/LmRyYWdBbmREcm9wPy5hbGxvd0Ryb3AgPz9cbiAgICAgICAgICAgICgoKTogdHJ1ZSA9PiB0cnVlKTtcbiAgICAgICAgIHJldHVybiBhbGxvd0Ryb3Aoc291cmNlTm9kZSwgcGFyZW50LCBpbmRleCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCB0cmVlTm9kZSB0eXBlXCIpO1xuICAgfVxuXG4gICBwcml2YXRlIHNob3dJbm5lclpvbmU8VD4odHJlZU5vZGU6IFRyZWVOb2RlPFQ+KTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMubmVzdGluZ0FsbG93ZWQodHJlZU5vZGUpIHx8ICF0aGlzLmRyb3BBbGxvd2VkKHRyZWVOb2RlLCAwKSlcbiAgICAgICAgIHJldHVybjtcbiAgICAgIHRyZWVOb2RlLmdldENvbXBvbmVudEluc3RhbmNlKCkuc2hvd0lubmVyRHJvcHpvbmUgPSB0cnVlO1xuICAgfVxuXG4gICBwcml2YXRlIHNob3dMYXRlcmFsWm9uZTxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KTogdm9pZCB7XG4gICAgICBjb25zdCBpbmRleCA9IHRyZWVCcmFuY2guaW5kZXgoKTtcbiAgICAgIGFzc2VydChpbmRleCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIGlmICghdGhpcy5kcm9wQWxsb3dlZCh0cmVlQnJhbmNoLnBhcmVudCgpLCBpbmRleCArIDEpKSByZXR1cm47XG4gICAgICB0cmVlQnJhbmNoLmdldENvbXBvbmVudEluc3RhbmNlKCkuc2hvd0xhdGVyYWxEcm9wem9uZSA9IHRydWU7XG4gICB9XG59XG5cbmV4cG9ydCBjb25zdCBkcm9wem9uZVJlbmRlcmVyID0gbmV3IERyb3B6b25lUmVuZGVyZXIoKTtcbiJdfQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { TreeRoot, config } from "../core";
|
|
2
|
+
import { TreeError } from "../errors";
|
|
3
|
+
import { treeCollapser } from "../extras/collapse";
|
|
4
|
+
/**
|
|
5
|
+
* A shim to help with the transition from v0 to v1.
|
|
6
|
+
* @deprecated
|
|
7
|
+
*/
|
|
8
|
+
export class LegacyTree {
|
|
9
|
+
/** Creates a v1 tree structure from a v0 data array and v0 tree options. */
|
|
10
|
+
createTreeFromLegacyArray(container, data, treeOptions = {}) {
|
|
11
|
+
const root = new TreeRoot(container);
|
|
12
|
+
config.setConfig(root, this.upgradeOptions(treeOptions));
|
|
13
|
+
for (const node of data) {
|
|
14
|
+
this.renderTreeNode(root, node, treeOptions);
|
|
15
|
+
}
|
|
16
|
+
return root;
|
|
17
|
+
}
|
|
18
|
+
upgradeOptions(legacyOptions) {
|
|
19
|
+
return {
|
|
20
|
+
indentation: legacyOptions.indent,
|
|
21
|
+
dragAndDrop: {
|
|
22
|
+
allowNesting: (branch) => {
|
|
23
|
+
if (legacyOptions.listMode === true) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (legacyOptions.allowNesting === undefined) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (typeof legacyOptions.allowNesting === "boolean") {
|
|
30
|
+
return legacyOptions.allowNesting;
|
|
31
|
+
}
|
|
32
|
+
return legacyOptions.allowNesting(branch);
|
|
33
|
+
},
|
|
34
|
+
allowDragging: (branch) => {
|
|
35
|
+
if (legacyOptions.allowDragging === undefined) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
if (typeof legacyOptions.allowDragging === "boolean") {
|
|
39
|
+
return legacyOptions.allowDragging;
|
|
40
|
+
}
|
|
41
|
+
return legacyOptions.allowDragging(branch);
|
|
42
|
+
},
|
|
43
|
+
allowDrop: (source, parent, index) => {
|
|
44
|
+
if (legacyOptions.allowDrop === undefined) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return legacyOptions.allowDrop(source, parent, index);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
renderTreeNode(parent, node, options) {
|
|
53
|
+
const component = node.component?.class ?? options.defaultComponent?.class;
|
|
54
|
+
if (component === undefined) {
|
|
55
|
+
throw new TreeError("A component must be provided");
|
|
56
|
+
}
|
|
57
|
+
const bindings = (node.component?.bindings ??
|
|
58
|
+
options.defaultComponent?.bindings ??
|
|
59
|
+
{});
|
|
60
|
+
const nodeData = node;
|
|
61
|
+
const branch = parent.grow(component, {
|
|
62
|
+
inputBindings: bindings,
|
|
63
|
+
meta: { nodeData }
|
|
64
|
+
});
|
|
65
|
+
for (const childNode of node.nodes ?? []) {
|
|
66
|
+
this.renderTreeNode(branch, childNode, options);
|
|
67
|
+
}
|
|
68
|
+
if (node.collapsed === true) {
|
|
69
|
+
treeCollapser.collapse(branch);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LXRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xlZ2FjeS9sZWdhY3ktdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFxQyxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFNOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDcEIsNEVBQTRFO0lBQ3JFLHlCQUF5QixDQUM3QixTQUEyQixFQUMzQixJQUFvQixFQUNwQixjQUF1QyxFQUFFO1FBRXpDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFZLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN6RCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZixDQUFDO0lBRU0sY0FBYyxDQUFDLGFBQXNDO1FBQ3pELE9BQU87WUFDSixXQUFXLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDakMsV0FBVyxFQUFFO2dCQUNWLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBVyxFQUFFO29CQUMvQixJQUFJLGFBQWEsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ25DLE9BQU8sS0FBSyxDQUFDO29CQUNoQixDQUFDO29CQUNELElBQUksYUFBYSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDNUMsT0FBTyxJQUFJLENBQUM7b0JBQ2YsQ0FBQztvQkFDRCxJQUFJLE9BQU8sYUFBYSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDbkQsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDO29CQUNyQyxDQUFDO29CQUNELE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFhLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFDRCxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQVcsRUFBRTtvQkFDaEMsSUFBSSxhQUFhLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUM3QyxPQUFPLElBQUksQ0FBQztvQkFDZixDQUFDO29CQUNELElBQUksT0FBTyxhQUFhLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUNwRCxPQUFPLGFBQWEsQ0FBQyxhQUFhLENBQUM7b0JBQ3RDLENBQUM7b0JBQ0QsT0FBTyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQWEsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO2dCQUNELFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFXLEVBQUU7b0JBQzNDLElBQUksYUFBYSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDekMsT0FBTyxJQUFJLENBQUM7b0JBQ2YsQ0FBQztvQkFDRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQzNCLE1BQWEsRUFDYixNQUFhLEVBQ2IsS0FBSyxDQUNQLENBQUM7Z0JBQ0wsQ0FBQzthQUNIO1NBQ0gsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQ25CLE1BQW1DLEVBQ25DLElBQW9CLEVBQ3BCLE9BQWdDO1FBRWhDLE1BQU0sU0FBUyxHQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUM7UUFDNUQsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUTtZQUN2QyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsUUFBUTtZQUNsQyxFQUFFLENBQTBDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBb0IsRUFBRTtZQUM5QyxhQUFhLEVBQUUsUUFBUTtZQUN2QixJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUU7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNCLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNKLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmVlUm9vdCwgdHlwZSBUcmVlQnJhbmNoLCB0eXBlIFRyZWVPcHRpb25zLCBjb25maWcgfSBmcm9tIFwiLi4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBMaW1ibGVUcmVlT3B0aW9ucyBhcyBMZWdhY3lMaW1ibGVUcmVlT3B0aW9ucyB9IGZyb20gXCIuL2xlZ2FjeS10cmVlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gICBMaW1ibGVUcmVlRGF0YSxcbiAgIExpbWJsZVRyZWVOb2RlXG59IGZyb20gXCIuL2xlZ2FjeS10cmVlLWRhdGEuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyB0cmVlQ29sbGFwc2VyIH0gZnJvbSBcIi4uL2V4dHJhcy9jb2xsYXBzZVwiO1xuXG4vKipcbiAqIEEgc2hpbSB0byBoZWxwIHdpdGggdGhlIHRyYW5zaXRpb24gZnJvbSB2MCB0byB2MS5cbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBMZWdhY3lUcmVlIHtcbiAgIC8qKiBDcmVhdGVzIGEgdjEgdHJlZSBzdHJ1Y3R1cmUgZnJvbSBhIHYwIGRhdGEgYXJyYXkgYW5kIHYwIHRyZWUgb3B0aW9ucy4gKi9cbiAgIHB1YmxpYyBjcmVhdGVUcmVlRnJvbUxlZ2FjeUFycmF5PENvbXBvbmVudD4oXG4gICAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICBkYXRhOiBMaW1ibGVUcmVlRGF0YSxcbiAgICAgIHRyZWVPcHRpb25zOiBMZWdhY3lMaW1ibGVUcmVlT3B0aW9ucyA9IHt9XG4gICApOiBUcmVlUm9vdDxDb21wb25lbnQ+IHtcbiAgICAgIGNvbnN0IHJvb3QgPSBuZXcgVHJlZVJvb3Q8Q29tcG9uZW50Pihjb250YWluZXIpO1xuICAgICAgY29uZmlnLnNldENvbmZpZyhyb290LCB0aGlzLnVwZ3JhZGVPcHRpb25zKHRyZWVPcHRpb25zKSk7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZGF0YSkge1xuICAgICAgICAgdGhpcy5yZW5kZXJUcmVlTm9kZShyb290LCBub2RlLCB0cmVlT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcm9vdDtcbiAgIH1cblxuICAgcHVibGljIHVwZ3JhZGVPcHRpb25zKGxlZ2FjeU9wdGlvbnM6IExlZ2FjeUxpbWJsZVRyZWVPcHRpb25zKTogVHJlZU9wdGlvbnMge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgIGluZGVudGF0aW9uOiBsZWdhY3lPcHRpb25zLmluZGVudCxcbiAgICAgICAgIGRyYWdBbmREcm9wOiB7XG4gICAgICAgICAgICBhbGxvd05lc3Rpbmc6IChicmFuY2gpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgICAgIGlmIChsZWdhY3lPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpZiAobGVnYWN5T3B0aW9ucy5hbGxvd05lc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpZiAodHlwZW9mIGxlZ2FjeU9wdGlvbnMuYWxsb3dOZXN0aW5nID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FjeU9wdGlvbnMuYWxsb3dOZXN0aW5nO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FjeU9wdGlvbnMuYWxsb3dOZXN0aW5nKGJyYW5jaCBhcyBhbnkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFsbG93RHJhZ2dpbmc6IChicmFuY2gpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgICAgIGlmIChsZWdhY3lPcHRpb25zLmFsbG93RHJhZ2dpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpZiAodHlwZW9mIGxlZ2FjeU9wdGlvbnMuYWxsb3dEcmFnZ2luZyA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsZWdhY3lPcHRpb25zLmFsbG93RHJhZ2dpbmc7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICByZXR1cm4gbGVnYWN5T3B0aW9ucy5hbGxvd0RyYWdnaW5nKGJyYW5jaCBhcyBhbnkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFsbG93RHJvcDogKHNvdXJjZSwgcGFyZW50LCBpbmRleCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgICAgaWYgKGxlZ2FjeU9wdGlvbnMuYWxsb3dEcm9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FjeU9wdGlvbnMuYWxsb3dEcm9wKFxuICAgICAgICAgICAgICAgICAgc291cmNlIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgIHBhcmVudCBhcyBhbnksXG4gICAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgIH07XG4gICB9XG5cbiAgIHByaXZhdGUgcmVuZGVyVHJlZU5vZGU8VD4oXG4gICAgICBwYXJlbnQ6IFRyZWVSb290PFQ+IHwgVHJlZUJyYW5jaDxUPixcbiAgICAgIG5vZGU6IExpbWJsZVRyZWVOb2RlLFxuICAgICAgb3B0aW9uczogTGVnYWN5TGltYmxlVHJlZU9wdGlvbnNcbiAgICk6IHZvaWQge1xuICAgICAgY29uc3QgY29tcG9uZW50ID1cbiAgICAgICAgIG5vZGUuY29tcG9uZW50Py5jbGFzcyA/PyBvcHRpb25zLmRlZmF1bHRDb21wb25lbnQ/LmNsYXNzO1xuICAgICAgaWYgKGNvbXBvbmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQSBjb21wb25lbnQgbXVzdCBiZSBwcm92aWRlZFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJpbmRpbmdzID0gKG5vZGUuY29tcG9uZW50Py5iaW5kaW5ncyA/P1xuICAgICAgICAgb3B0aW9ucy5kZWZhdWx0Q29tcG9uZW50Py5iaW5kaW5ncyA/P1xuICAgICAgICAge30pIGFzIHsgW0sgaW4ga2V5b2YgVF0/OiBUW0tdIHwgdW5kZWZpbmVkIH07XG4gICAgICBjb25zdCBub2RlRGF0YSA9IG5vZGU7XG4gICAgICBjb25zdCBicmFuY2ggPSBwYXJlbnQuZ3Jvdyhjb21wb25lbnQgYXMgVHlwZTxUPiwge1xuICAgICAgICAgaW5wdXRCaW5kaW5nczogYmluZGluZ3MsXG4gICAgICAgICBtZXRhOiB7IG5vZGVEYXRhIH1cbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2Ygbm9kZS5ub2RlcyA/PyBbXSkge1xuICAgICAgICAgdGhpcy5yZW5kZXJUcmVlTm9kZShicmFuY2gsIGNoaWxkTm9kZSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5jb2xsYXBzZWQgPT09IHRydWUpIHtcbiAgICAgICAgIHRyZWVDb2xsYXBzZXIuY29sbGFwc2UoYnJhbmNoKTtcbiAgICAgIH1cbiAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { LimbleTreeRootComponent } from "./limble-tree-root/limble-tree-root.component";
|
|
3
|
+
import { LegacyTree } from "./legacy-tree";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/** @deprecated */
|
|
6
|
+
export class LimbleTreeLegacyModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeLegacyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeLegacyModule, imports: [LimbleTreeRootComponent], exports: [LimbleTreeRootComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeLegacyModule, providers: [LegacyTree] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeLegacyModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [],
|
|
15
|
+
imports: [LimbleTreeRootComponent],
|
|
16
|
+
providers: [LegacyTree],
|
|
17
|
+
exports: [LimbleTreeRootComponent]
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtbGVnYWN5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvbGVnYWN5L2xpbWJsZS10cmVlLWxlZ2FjeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxrQkFBa0I7QUFPbEIsTUFBTSxPQUFPLHNCQUFzQjs4R0FBdEIsc0JBQXNCOytHQUF0QixzQkFBc0IsWUFKdEIsdUJBQXVCLGFBRXZCLHVCQUF1QjsrR0FFdkIsc0JBQXNCLGFBSHJCLENBQUMsVUFBVSxDQUFDOzsyRkFHYixzQkFBc0I7a0JBTmxDLFFBQVE7bUJBQUM7b0JBQ1AsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUNsQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExpbWJsZVRyZWVSb290Q29tcG9uZW50IH0gZnJvbSBcIi4vbGltYmxlLXRyZWUtcm9vdC9saW1ibGUtdHJlZS1yb290LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTGVnYWN5VHJlZSB9IGZyb20gXCIuL2xlZ2FjeS10cmVlXCI7XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuQE5nTW9kdWxlKHtcbiAgIGRlY2xhcmF0aW9uczogW10sXG4gICBpbXBvcnRzOiBbTGltYmxlVHJlZVJvb3RDb21wb25lbnRdLFxuICAgcHJvdmlkZXJzOiBbTGVnYWN5VHJlZV0sXG4gICBleHBvcnRzOiBbTGltYmxlVHJlZVJvb3RDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVMZWdhY3lNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { LegacyTree } from "../legacy-tree";
|
|
3
|
+
import { TreeError } from "../../errors";
|
|
4
|
+
import { filter } from "rxjs";
|
|
5
|
+
import { DragEndEvent } from "../../events";
|
|
6
|
+
import { assert } from "../../../shared";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/** @deprecated */
|
|
9
|
+
export class LimbleTreeRootComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.itemsPerPage = Infinity;
|
|
12
|
+
this.page = 1;
|
|
13
|
+
this.treeChange = new EventEmitter();
|
|
14
|
+
this.treeDrop = new EventEmitter();
|
|
15
|
+
this.legacyTree = new LegacyTree();
|
|
16
|
+
}
|
|
17
|
+
ngOnChanges() {
|
|
18
|
+
if (this.host !== undefined && this.data !== undefined) {
|
|
19
|
+
this.update();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ngAfterViewInit() {
|
|
23
|
+
this.update();
|
|
24
|
+
}
|
|
25
|
+
ngOnDestroy() {
|
|
26
|
+
this.dropSubscription?.unsubscribe();
|
|
27
|
+
this.root?.destroy();
|
|
28
|
+
}
|
|
29
|
+
getRoot() {
|
|
30
|
+
return this.root;
|
|
31
|
+
}
|
|
32
|
+
update() {
|
|
33
|
+
if (this.data === undefined) {
|
|
34
|
+
throw new TreeError("LimbleTreeRootComponent's `data` input is required");
|
|
35
|
+
}
|
|
36
|
+
if (this.host === undefined) {
|
|
37
|
+
throw new TreeError("LimbleTreeRootComponent's `host` property is not defined");
|
|
38
|
+
}
|
|
39
|
+
this.root?.destroy();
|
|
40
|
+
this.dropSubscription?.unsubscribe();
|
|
41
|
+
const dataSlice = this.paginatedData();
|
|
42
|
+
this.root = this.legacyTree.createTreeFromLegacyArray(this.host, dataSlice, this.options);
|
|
43
|
+
this.dropSubscription = this.root
|
|
44
|
+
.events()
|
|
45
|
+
.pipe(filter((event) => event instanceof DragEndEvent))
|
|
46
|
+
.subscribe(this.treeDrop);
|
|
47
|
+
this.treeChange.emit(this.root);
|
|
48
|
+
}
|
|
49
|
+
paginatedData() {
|
|
50
|
+
assert(this.data !== undefined);
|
|
51
|
+
if (this.options?.listMode !== true) {
|
|
52
|
+
return this.data;
|
|
53
|
+
}
|
|
54
|
+
return this.data.slice((this.page - 1) * this.itemsPerPage, this.page * this.itemsPerPage);
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LimbleTreeRootComponent, isStandalone: true, selector: "limble-tree-root", inputs: { data: "data", options: "options", itemsPerPage: "itemsPerPage", page: "page" }, outputs: { treeChange: "treeChange", treeDrop: "treeDrop" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<div #host></div>\n" }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeRootComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: "limble-tree-root", standalone: true, template: "<div #host></div>\n" }]
|
|
62
|
+
}], ctorParameters: () => [], propDecorators: { data: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], options: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], itemsPerPage: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], page: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], host: [{
|
|
71
|
+
type: ViewChild,
|
|
72
|
+
args: ["host", { read: ViewContainerRef }]
|
|
73
|
+
}], treeChange: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}], treeDrop: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}] } });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xlZ2FjeS9saW1ibGUtdHJlZS1yb290L2xpbWJsZS10cmVlLXJvb3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9sZWdhY3kvbGltYmxlLXRyZWUtcm9vdC9saW1ibGUtdHJlZS1yb290LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUl6QyxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFekMsa0JBQWtCO0FBTWxCLE1BQU0sT0FBTyx1QkFBdUI7SUFpQmpDO1FBWlMsaUJBQVksR0FBVyxRQUFRLENBQUM7UUFDaEMsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUlQLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUMvQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFPakUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxXQUFXO1FBQ2YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVNLGVBQWU7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxXQUFXO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU87UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVNLE1BQU07UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLFNBQVMsQ0FDaEIsb0RBQW9ELENBQ3RELENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxTQUFTLENBQ2hCLDBEQUEwRCxDQUM1RCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQ2xELElBQUksQ0FBQyxJQUFJLEVBQ1QsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSTthQUM3QixNQUFNLEVBQUU7YUFDUixJQUFJLENBQ0YsTUFBTSxDQUNILENBQUMsS0FBSyxFQUE4QixFQUFFLENBQ25DLEtBQUssWUFBWSxZQUFZLENBQ2xDLENBQ0g7YUFDQSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sYUFBYTtRQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FDbkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDL0IsQ0FBQztJQUNMLENBQUM7OEdBaEZTLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDRTQVFOLGdCQUFnQixrRENsQzlDLHFCQUNBOzsyRkR5QmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNHLGtCQUFrQixjQUVoQixJQUFJO3dEQUtQLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRXlDLElBQUk7c0JBQWxELFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUUxQixVQUFVO3NCQUE1QixNQUFNO2dCQUNZLFFBQVE7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgdHlwZSBBZnRlclZpZXdJbml0LFxuICAgQ29tcG9uZW50LFxuICAgRXZlbnRFbWl0dGVyLFxuICAgSW5wdXQsXG4gICB0eXBlIE9uQ2hhbmdlcyxcbiAgIHR5cGUgT25EZXN0cm95LFxuICAgT3V0cHV0LFxuICAgVmlld0NoaWxkLFxuICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTGVnYWN5VHJlZSB9IGZyb20gXCIuLi9sZWdhY3ktdHJlZVwiO1xuaW1wb3J0IHsgVHJlZUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yc1wiO1xuaW1wb3J0IHR5cGUgeyBMaW1ibGVUcmVlRGF0YSB9IGZyb20gXCIuLi9sZWdhY3ktdHJlZS1kYXRhLmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBMaW1ibGVUcmVlT3B0aW9ucyB9IGZyb20gXCIuLi9sZWdhY3ktdHJlZS1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlUm9vdCB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5pbXBvcnQgeyBmaWx0ZXIsIHR5cGUgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IERyYWdFbmRFdmVudCB9IGZyb20gXCIuLi8uLi9ldmVudHNcIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWRcIjtcblxuLyoqIEBkZXByZWNhdGVkICovXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiBcImxpbWJsZS10cmVlLXJvb3RcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vbGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQuaHRtbFwiLFxuICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaW1ibGVUcmVlUm9vdENvbXBvbmVudFxuICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgQElucHV0KCkgZGF0YT86IExpbWJsZVRyZWVEYXRhO1xuICAgQElucHV0KCkgb3B0aW9ucz86IExpbWJsZVRyZWVPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgQElucHV0KCkgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSBJbmZpbml0eTtcbiAgIEBJbnB1dCgpIHBhZ2U6IG51bWJlciA9IDE7XG5cbiAgIEBWaWV3Q2hpbGQoXCJob3N0XCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBob3N0PzogVmlld0NvbnRhaW5lclJlZjtcblxuICAgQE91dHB1dCgpIHJlYWRvbmx5IHRyZWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRyZWVSb290PGFueT4+KCk7XG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgdHJlZURyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFbmRFdmVudDxhbnk+PigpO1xuXG4gICBwcml2YXRlIGRyb3BTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICBwcml2YXRlIHJlYWRvbmx5IGxlZ2FjeVRyZWU6IExlZ2FjeVRyZWU7XG4gICBwcml2YXRlIHJvb3Q/OiBUcmVlUm9vdDxhbnk+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLmxlZ2FjeVRyZWUgPSBuZXcgTGVnYWN5VHJlZSgpO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5ob3N0ICE9PSB1bmRlZmluZWQgJiYgdGhpcy5kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICB0aGlzLmRyb3BTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnJvb3Q/LmRlc3Ryb3koKTtcbiAgIH1cblxuICAgcHVibGljIGdldFJvb3QoKTogVHJlZVJvb3Q8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy5yb290O1xuICAgfVxuXG4gICBwdWJsaWMgdXBkYXRlKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJMaW1ibGVUcmVlUm9vdENvbXBvbmVudCdzIGBkYXRhYCBpbnB1dCBpcyByZXF1aXJlZFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJMaW1ibGVUcmVlUm9vdENvbXBvbmVudCdzIGBob3N0YCBwcm9wZXJ0eSBpcyBub3QgZGVmaW5lZFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5yb290Py5kZXN0cm95KCk7XG4gICAgICB0aGlzLmRyb3BTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICBjb25zdCBkYXRhU2xpY2UgPSB0aGlzLnBhZ2luYXRlZERhdGEoKTtcbiAgICAgIHRoaXMucm9vdCA9IHRoaXMubGVnYWN5VHJlZS5jcmVhdGVUcmVlRnJvbUxlZ2FjeUFycmF5KFxuICAgICAgICAgdGhpcy5ob3N0LFxuICAgICAgICAgZGF0YVNsaWNlLFxuICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICApO1xuICAgICAgdGhpcy5kcm9wU3Vic2NyaXB0aW9uID0gdGhpcy5yb290XG4gICAgICAgICAuZXZlbnRzKClcbiAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgKGV2ZW50KTogZXZlbnQgaXMgRHJhZ0VuZEV2ZW50PGFueT4gPT5cbiAgICAgICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgRHJhZ0VuZEV2ZW50XG4gICAgICAgICAgICApXG4gICAgICAgICApXG4gICAgICAgICAuc3Vic2NyaWJlKHRoaXMudHJlZURyb3ApO1xuICAgICAgdGhpcy50cmVlQ2hhbmdlLmVtaXQodGhpcy5yb290KTtcbiAgIH1cblxuICAgcHJpdmF0ZSBwYWdpbmF0ZWREYXRhKCk6IExpbWJsZVRyZWVEYXRhIHtcbiAgICAgIGFzc2VydCh0aGlzLmRhdGEgIT09IHVuZGVmaW5lZCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zPy5saXN0TW9kZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmRhdGEuc2xpY2UoXG4gICAgICAgICAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZSxcbiAgICAgICAgIHRoaXMucGFnZSAqIHRoaXMuaXRlbXNQZXJQYWdlXG4gICAgICApO1xuICAgfVxufVxuIiwiPGRpdiAjaG9zdD48L2Rpdj5cbiJdfQ==
|
|
@@ -9,11 +9,11 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
* components, directives, and services provided by Limble Tree.
|
|
10
10
|
*/
|
|
11
11
|
export class LimbleTreeModule {
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeModule, imports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule], exports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule] }); }
|
|
14
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeModule, providers: [TreeService], imports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule, LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule] }); }
|
|
12
15
|
}
|
|
13
|
-
|
|
14
|
-
LimbleTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: LimbleTreeModule, imports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule], exports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule] });
|
|
15
|
-
LimbleTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LimbleTreeModule, providers: [TreeService], imports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule, LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule] });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LimbleTreeModule, decorators: [{
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LimbleTreeModule, decorators: [{
|
|
17
17
|
type: NgModule,
|
|
18
18
|
args: [{
|
|
19
19
|
declarations: [],
|
|
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
22
22
|
exports: [LimbleTreeLegacyModule, TreeCollapseModule, TreeDragAndDropModule]
|
|
23
23
|
}]
|
|
24
24
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFbEQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFKaEIsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLGFBRWpFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQjsrR0FFakUsZ0JBQWdCLGFBSGYsQ0FBQyxXQUFXLENBQUMsWUFEZCxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFFakUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCOzsyRkFFakUsZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNQLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQztvQkFDNUUsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN4QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQztpQkFDOUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmVlQ29sbGFwc2VNb2R1bGUgfSBmcm9tIFwiLi9leHRyYXMvY29sbGFwc2VcIjtcbmltcG9ydCB7IFRyZWVEcmFnQW5kRHJvcE1vZHVsZSB9IGZyb20gXCIuL2V4dHJhcy9kcmFnLWFuZC1kcm9wXCI7XG5pbXBvcnQgeyBUcmVlU2VydmljZSB9IGZyb20gXCIuL2NvcmVcIjtcbmltcG9ydCB7IExpbWJsZVRyZWVMZWdhY3lNb2R1bGUgfSBmcm9tIFwiLi9sZWdhY3lcIjtcblxuLyoqXG4gKiBJbXBvcnQgdGhpcyBBbmd1bGFyIG1vZHVsZSBpbnRvIHlvdXIgYXBwbGljYXRpb24gdG8gZ2FpbiBhY2Nlc3MgdG8gdGhlXG4gKiBjb21wb25lbnRzLCBkaXJlY3RpdmVzLCBhbmQgc2VydmljZXMgcHJvdmlkZWQgYnkgTGltYmxlIFRyZWUuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICBkZWNsYXJhdGlvbnM6IFtdLFxuICAgaW1wb3J0czogW0xpbWJsZVRyZWVMZWdhY3lNb2R1bGUsIFRyZWVDb2xsYXBzZU1vZHVsZSwgVHJlZURyYWdBbmREcm9wTW9kdWxlXSxcbiAgIHByb3ZpZGVyczogW1RyZWVTZXJ2aWNlXSxcbiAgIGV4cG9ydHM6IFtMaW1ibGVUcmVlTGVnYWN5TW9kdWxlLCBUcmVlQ29sbGFwc2VNb2R1bGUsIFRyZWVEcmFnQW5kRHJvcE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgTGltYmxlVHJlZU1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function assert(condition) {
|
|
2
|
+
if (condition) {
|
|
3
|
+
return;
|
|
4
|
+
}
|
|
5
|
+
throw new Error("Assertion Failed!");
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL3NoYXJlZC9hc3NlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLE1BQU0sQ0FBQyxTQUFrQjtJQUN0QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2IsT0FBTztJQUNWLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uOiB1bmtub3duKTogYXNzZXJ0cyBjb25kaXRpb24ge1xuICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgfVxuICAgdGhyb3cgbmV3IEVycm9yKFwiQXNzZXJ0aW9uIEZhaWxlZCFcIik7XG59XG4iXX0=
|