@limble/limble-tree 0.13.0 → 1.0.0-alpha.2
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 +418 -96
- package/esm2020/lib/components/branch/branch.component.mjs +79 -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 +36 -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/branch-controller.mjs +99 -0
- package/esm2020/lib/core/tree-branch/tree-branch.mjs +224 -0
- package/esm2020/lib/core/tree-node-base.mjs +69 -0
- package/esm2020/lib/core/tree-root/root-controller.mjs +42 -0
- package/esm2020/lib/core/tree-root/tree-root.mjs +85 -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/general/destruction-event.mjs +12 -0
- package/esm2020/lib/events/general/index.mjs +2 -0
- package/esm2020/lib/events/index.mjs +4 -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 +85 -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 +178 -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 +73 -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 -47
- package/esm2020/lib/structure/branchable.interface.mjs +2 -0
- package/esm2020/lib/structure/component-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 +10 -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/limble-limble-tree.mjs +4 -4
- package/esm2020/public-api.mjs +12 -6
- package/esm2020/shared/assert.mjs +7 -0
- package/fesm2015/limble-limble-tree.mjs +1404 -2226
- package/fesm2015/limble-limble-tree.mjs.map +1 -1
- package/fesm2020/limble-limble-tree.mjs +1396 -2132
- package/fesm2020/limble-limble-tree.mjs.map +1 -1
- package/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 +32 -0
- package/lib/core/index.d.ts +5 -0
- package/lib/core/relationship.interface.d.ts +5 -0
- package/lib/core/tree-branch/branch-controller.d.ts +25 -0
- package/lib/core/tree-branch/tree-branch.d.ts +44 -0
- package/lib/core/tree-node-base.d.ts +25 -0
- package/lib/core/tree-root/root-controller.d.ts +19 -0
- package/lib/core/tree-root/tree-root.d.ts +30 -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 +24 -0
- package/lib/events/drag/drag-start-event.d.ts +8 -0
- package/lib/events/drag/drop-event.d.ts +13 -0
- package/lib/events/drag/index.d.ts +3 -0
- package/lib/events/general/destruction-event.d.ts +8 -0
- package/lib/events/general/index.d.ts +1 -0
- package/lib/events/index.d.ts +3 -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 +16 -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 +4 -0
- package/lib/structure/component-container.interface.d.ts +8 -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 +9 -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 +11 -0
- package/lib/structure/tree-plot.d.ts +1 -0
- package/lib/structure/tree-relationship.interface.d.ts +7 -0
- package/package.json +6 -14
- package/public-api.d.ts +8 -3
- package/shared/assert.d.ts +1 -0
- package/esm2020/lib/classes/Branch.mjs +0 -153
- package/esm2020/lib/classes/DropZone.mjs +0 -71
- package/esm2020/lib/classes/DropZoneLocation.mjs +0 -16
- package/esm2020/lib/custom-event-bindings/dragleave-no-change-detect.directive.mjs +0 -33
- package/esm2020/lib/custom-event-bindings/dragover-no-change-detect.directive.mjs +0 -39
- package/esm2020/lib/drop-zone/drop-zone.component.mjs +0 -75
- package/esm2020/lib/limble-tree-branch/limble-tree-branch.component.mjs +0 -110
- package/esm2020/lib/limble-tree-node/limble-tree-node.component.mjs +0 -467
- package/esm2020/lib/limble-tree-placeholder/limble-tree-placeholder.component.mjs +0 -70
- package/esm2020/lib/limble-tree-root/drop-zone.service.mjs +0 -376
- package/esm2020/lib/limble-tree-root/limble-tree-root.component.mjs +0 -172
- package/esm2020/lib/limble-tree-root/tree-construction-status.service.mjs +0 -33
- package/esm2020/lib/limble-tree-root/tree.service.mjs +0 -297
- package/esm2020/lib/singletons/component-creator.service.mjs +0 -19
- package/esm2020/lib/singletons/drag-state.service.mjs +0 -63
- package/esm2020/lib/singletons/global-events.service.mjs +0 -136
- package/esm2020/lib/util.mjs +0 -74
- 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,4 @@
|
|
|
1
|
+
export * from "./relational";
|
|
2
|
+
export * from "./drag";
|
|
3
|
+
export * from "./general";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3JlbGF0aW9uYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RyYWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dlbmVyYWxcIjtcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class GraftEvent {
|
|
2
|
+
constructor(source, relationship) {
|
|
3
|
+
this._source = source;
|
|
4
|
+
this._child = relationship.child;
|
|
5
|
+
this._parent = relationship.parent;
|
|
6
|
+
this._index = relationship.index;
|
|
7
|
+
}
|
|
8
|
+
child() {
|
|
9
|
+
return this._child;
|
|
10
|
+
}
|
|
11
|
+
type() {
|
|
12
|
+
return "graft";
|
|
13
|
+
}
|
|
14
|
+
index() {
|
|
15
|
+
return this._index;
|
|
16
|
+
}
|
|
17
|
+
parent() {
|
|
18
|
+
return this._parent;
|
|
19
|
+
}
|
|
20
|
+
source() {
|
|
21
|
+
return this._source;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZnQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9yZWxhdGlvbmFsL2dyYWZ0LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxVQUFVO0lBUXBCLFlBQW1CLE1BQW9CLEVBQUUsWUFBZTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRU0sS0FBSztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNSLE9BQU8sT0FBTyxDQUFDO0lBQ2xCLENBQUM7SUFFTSxLQUFLO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50Q29uZHVpdCB9IGZyb20gXCIuLi8uLi9zdHJ1Y3R1cmUvZXZlbnQtY29uZHVpdC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFJlbGF0aW9uYWxUcmVlRXZlbnQgfSBmcm9tIFwiLi9yZWxhdGlvbmFsLXRyZWUtZXZlbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlUmVsYXRpb25zaGlwIH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZS90cmVlLXJlbGF0aW9uc2hpcC5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGNsYXNzIEdyYWZ0RXZlbnQ8VCBleHRlbmRzIFRyZWVSZWxhdGlvbnNoaXA8YW55LCBhbnk+PlxuICAgaW1wbGVtZW50cyBSZWxhdGlvbmFsVHJlZUV2ZW50PFRbXCJwYXJlbnRcIl0sIFRbXCJjaGlsZFwiXT5cbntcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3NvdXJjZTogRXZlbnRDb25kdWl0O1xuICAgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50OiBUW1wicGFyZW50XCJdO1xuICAgcHJpdmF0ZSByZWFkb25seSBfY2hpbGQ6IFRbXCJjaGlsZFwiXTtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX2luZGV4OiBudW1iZXI7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2U6IEV2ZW50Q29uZHVpdCwgcmVsYXRpb25zaGlwOiBUKSB7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aGlzLl9jaGlsZCA9IHJlbGF0aW9uc2hpcC5jaGlsZDtcbiAgICAgIHRoaXMuX3BhcmVudCA9IHJlbGF0aW9uc2hpcC5wYXJlbnQ7XG4gICAgICB0aGlzLl9pbmRleCA9IHJlbGF0aW9uc2hpcC5pbmRleDtcbiAgIH1cblxuICAgcHVibGljIGNoaWxkKCk6IFRbXCJjaGlsZFwiXSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpbGQ7XG4gICB9XG5cbiAgIHB1YmxpYyB0eXBlKCk6IFwiZ3JhZnRcIiB7XG4gICAgICByZXR1cm4gXCJncmFmdFwiO1xuICAgfVxuXG4gICBwdWJsaWMgaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgIH1cblxuICAgcHVibGljIHBhcmVudCgpOiBUW1wicGFyZW50XCJdIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyBzb3VyY2UoKTogRXZlbnRDb25kdWl0IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./graft-event";
|
|
2
|
+
export * from "./prune-event";
|
|
3
|
+
export * from "./relational-tree-event.interface";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9yZWxhdGlvbmFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9ncmFmdC1ldmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJ1bmUtZXZlbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlbGF0aW9uYWwtdHJlZS1ldmVudC5pbnRlcmZhY2VcIjtcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class PruneEvent {
|
|
2
|
+
constructor(source, relationship) {
|
|
3
|
+
this._source = source;
|
|
4
|
+
this._child = relationship.child;
|
|
5
|
+
this._parent = relationship.parent;
|
|
6
|
+
this._index = relationship.index;
|
|
7
|
+
}
|
|
8
|
+
child() {
|
|
9
|
+
return this._child;
|
|
10
|
+
}
|
|
11
|
+
type() {
|
|
12
|
+
return "prune";
|
|
13
|
+
}
|
|
14
|
+
index() {
|
|
15
|
+
return this._index;
|
|
16
|
+
}
|
|
17
|
+
parent() {
|
|
18
|
+
return this._parent;
|
|
19
|
+
}
|
|
20
|
+
source() {
|
|
21
|
+
return this._source;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJ1bmUtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9yZWxhdGlvbmFsL3BydW5lLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxVQUFVO0lBUXBCLFlBQW1CLE1BQW9CLEVBQUUsWUFBZTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRU0sS0FBSztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNSLE9BQU8sT0FBTyxDQUFDO0lBQ2xCLENBQUM7SUFFTSxLQUFLO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50Q29uZHVpdCB9IGZyb20gXCIuLi8uLi9zdHJ1Y3R1cmUvZXZlbnQtY29uZHVpdC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFJlbGF0aW9uYWxUcmVlRXZlbnQgfSBmcm9tIFwiLi9yZWxhdGlvbmFsLXRyZWUtZXZlbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlUmVsYXRpb25zaGlwIH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZS90cmVlLXJlbGF0aW9uc2hpcC5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGNsYXNzIFBydW5lRXZlbnQ8VCBleHRlbmRzIFRyZWVSZWxhdGlvbnNoaXA8YW55LCBhbnk+PlxuICAgaW1wbGVtZW50cyBSZWxhdGlvbmFsVHJlZUV2ZW50PFRbXCJwYXJlbnRcIl0sIFRbXCJjaGlsZFwiXT5cbntcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3NvdXJjZTogRXZlbnRDb25kdWl0O1xuICAgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50OiBUW1wicGFyZW50XCJdO1xuICAgcHJpdmF0ZSByZWFkb25seSBfY2hpbGQ6IFRbXCJjaGlsZFwiXTtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX2luZGV4OiBudW1iZXI7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2U6IEV2ZW50Q29uZHVpdCwgcmVsYXRpb25zaGlwOiBUKSB7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aGlzLl9jaGlsZCA9IHJlbGF0aW9uc2hpcC5jaGlsZDtcbiAgICAgIHRoaXMuX3BhcmVudCA9IHJlbGF0aW9uc2hpcC5wYXJlbnQ7XG4gICAgICB0aGlzLl9pbmRleCA9IHJlbGF0aW9uc2hpcC5pbmRleDtcbiAgIH1cblxuICAgcHVibGljIGNoaWxkKCk6IFRbXCJjaGlsZFwiXSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpbGQ7XG4gICB9XG5cbiAgIHB1YmxpYyB0eXBlKCk6IFwicHJ1bmVcIiB7XG4gICAgICByZXR1cm4gXCJwcnVuZVwiO1xuICAgfVxuXG4gICBwdWJsaWMgaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgIH1cblxuICAgcHVibGljIHBhcmVudCgpOiBUW1wicGFyZW50XCJdIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyBzb3VyY2UoKTogRXZlbnRDb25kdWl0IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25hbC10cmVlLWV2ZW50LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXZlbnRzL3JlbGF0aW9uYWwvcmVsYXRpb25hbC10cmVlLWV2ZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJlZUV2ZW50IH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZS90cmVlLWV2ZW50LmludGVyZmFjZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uYWxUcmVlRXZlbnQ8UGFyZW50LCBDaGlsZD4gZXh0ZW5kcyBUcmVlRXZlbnQge1xuICAgcGFyZW50OiAoKSA9PiBQYXJlbnQ7XG4gICBjaGlsZDogKCkgPT4gQ2hpbGQ7XG4gICBpbmRleDogKCkgPT4gbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
class TreeCollapser {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.tempStorage = new Map();
|
|
4
|
+
}
|
|
5
|
+
collapse(treeBranch) {
|
|
6
|
+
if (treeBranch.branches().length === 0)
|
|
7
|
+
return;
|
|
8
|
+
const branches = [];
|
|
9
|
+
this.tempStorage.set(treeBranch, branches);
|
|
10
|
+
treeBranch.branches().forEach((branch) => {
|
|
11
|
+
branch.prune();
|
|
12
|
+
branches.push(branch);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
expand(treeBranch) {
|
|
16
|
+
const branches = this.tempStorage.get(treeBranch);
|
|
17
|
+
if (branches === undefined)
|
|
18
|
+
return;
|
|
19
|
+
branches.forEach((branch) => {
|
|
20
|
+
branch.graftTo(treeBranch);
|
|
21
|
+
});
|
|
22
|
+
this.tempStorage.delete(treeBranch);
|
|
23
|
+
treeBranch.detectChanges();
|
|
24
|
+
}
|
|
25
|
+
isCollapsed(treeBranch) {
|
|
26
|
+
return this.tempStorage.has(treeBranch);
|
|
27
|
+
}
|
|
28
|
+
storePrecollapsedNode(parent, branch) {
|
|
29
|
+
this.tempStorage.set(parent, (this.tempStorage.get(parent) ?? []).concat(branch));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export const treeCollapser = new TreeCollapser();
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V4dHJhcy9jb2xsYXBzZS9jb2xsYXBzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGFBQWE7SUFHaEI7UUFDRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLFFBQVEsQ0FBSSxVQUF5QjtRQUN6QyxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDL0MsTUFBTSxRQUFRLEdBQXlCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sTUFBTSxDQUFJLFVBQXlCO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksUUFBUSxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ25DLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxXQUFXLENBQUksVUFBeUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0scUJBQXFCLENBQ3pCLE1BQXFCLEVBQ3JCLE1BQXFCO1FBRXJCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNqQixNQUFNLEVBQ04sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQ3JELENBQUM7SUFDTCxDQUFDO0NBQ0g7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuXG5jbGFzcyBUcmVlQ29sbGFwc2VyIHtcbiAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcFN0b3JhZ2U6IE1hcDxUcmVlQnJhbmNoPGFueT4sIEFycmF5PFRyZWVCcmFuY2g8YW55Pj4+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLnRlbXBTdG9yYWdlID0gbmV3IE1hcCgpO1xuICAgfVxuXG4gICBwdWJsaWMgY29sbGFwc2U8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPik6IHZvaWQge1xuICAgICAgaWYgKHRyZWVCcmFuY2guYnJhbmNoZXMoKS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIGNvbnN0IGJyYW5jaGVzOiBBcnJheTxUcmVlQnJhbmNoPFQ+PiA9IFtdO1xuICAgICAgdGhpcy50ZW1wU3RvcmFnZS5zZXQodHJlZUJyYW5jaCwgYnJhbmNoZXMpO1xuICAgICAgdHJlZUJyYW5jaC5icmFuY2hlcygpLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgYnJhbmNoLnBydW5lKCk7XG4gICAgICAgICBicmFuY2hlcy5wdXNoKGJyYW5jaCk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIGV4cGFuZDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KTogdm9pZCB7XG4gICAgICBjb25zdCBicmFuY2hlcyA9IHRoaXMudGVtcFN0b3JhZ2UuZ2V0KHRyZWVCcmFuY2gpO1xuICAgICAgaWYgKGJyYW5jaGVzID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIGJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgYnJhbmNoLmdyYWZ0VG8odHJlZUJyYW5jaCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGVtcFN0b3JhZ2UuZGVsZXRlKHRyZWVCcmFuY2gpO1xuICAgICAgdHJlZUJyYW5jaC5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIHB1YmxpYyBpc0NvbGxhcHNlZDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy50ZW1wU3RvcmFnZS5oYXModHJlZUJyYW5jaCk7XG4gICB9XG5cbiAgIHB1YmxpYyBzdG9yZVByZWNvbGxhcHNlZE5vZGU8VD4oXG4gICAgICBwYXJlbnQ6IFRyZWVCcmFuY2g8VD4sXG4gICAgICBicmFuY2g6IFRyZWVCcmFuY2g8VD5cbiAgICk6IHZvaWQge1xuICAgICAgdGhpcy50ZW1wU3RvcmFnZS5zZXQoXG4gICAgICAgICBwYXJlbnQsXG4gICAgICAgICAodGhpcy50ZW1wU3RvcmFnZS5nZXQocGFyZW50KSA/PyBbXSkuY29uY2F0KGJyYW5jaClcbiAgICAgICk7XG4gICB9XG59XG5cbmV4cG9ydCBjb25zdCB0cmVlQ29sbGFwc2VyID0gbmV3IFRyZWVDb2xsYXBzZXIoKTtcbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { TreeCollapseService } from "./collapse.service";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TreeCollapseModule {
|
|
5
|
+
}
|
|
6
|
+
TreeCollapseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
TreeCollapseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseModule });
|
|
8
|
+
TreeCollapseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseModule, providers: [TreeCollapseService] });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseModule, decorators: [{
|
|
10
|
+
type: NgModule,
|
|
11
|
+
args: [{
|
|
12
|
+
providers: [TreeCollapseService]
|
|
13
|
+
}]
|
|
14
|
+
}] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9leHRyYXMvY29sbGFwc2UvY29sbGFwc2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS3pELE1BQU0sT0FBTyxrQkFBa0I7O2dIQUFsQixrQkFBa0I7aUhBQWxCLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGFBRmpCLENBQUMsbUJBQW1CLENBQUM7NEZBRXRCLGtCQUFrQjtrQkFIOUIsUUFBUTttQkFBQztvQkFDUCxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmVlQ29sbGFwc2VTZXJ2aWNlIH0gZnJvbSBcIi4vY29sbGFwc2Uuc2VydmljZVwiO1xuXG5ATmdNb2R1bGUoe1xuICAgcHJvdmlkZXJzOiBbVHJlZUNvbGxhcHNlU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbGxhcHNlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { treeCollapser } from "./collapse";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TreeCollapseService {
|
|
5
|
+
collapse(treeBranch) {
|
|
6
|
+
treeCollapser.collapse(treeBranch);
|
|
7
|
+
}
|
|
8
|
+
expand(treeBranch) {
|
|
9
|
+
treeCollapser.expand(treeBranch);
|
|
10
|
+
}
|
|
11
|
+
isCollapsed(treeBranch) {
|
|
12
|
+
return treeCollapser.isCollapsed(treeBranch);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
TreeCollapseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
TreeCollapseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseService });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeCollapseService, decorators: [{
|
|
18
|
+
type: Injectable
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXh0cmFzL2NvbGxhcHNlL2NvbGxhcHNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUczQyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3RCLFFBQVEsQ0FBSSxVQUF5QjtRQUN6QyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxNQUFNLENBQUksVUFBeUI7UUFDdkMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sV0FBVyxDQUFJLFVBQXlCO1FBQzVDLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDOztpSEFYUyxtQkFBbUI7cUhBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmVlQnJhbmNoIH0gZnJvbSBcIi4uLy4uL2NvcmVcIjtcbmltcG9ydCB7IHRyZWVDb2xsYXBzZXIgfSBmcm9tIFwiLi9jb2xsYXBzZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJlZUNvbGxhcHNlU2VydmljZSB7XG4gICBwdWJsaWMgY29sbGFwc2U8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPik6IHZvaWQge1xuICAgICAgdHJlZUNvbGxhcHNlci5jb2xsYXBzZSh0cmVlQnJhbmNoKTtcbiAgIH1cblxuICAgcHVibGljIGV4cGFuZDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KTogdm9pZCB7XG4gICAgICB0cmVlQ29sbGFwc2VyLmV4cGFuZCh0cmVlQnJhbmNoKTtcbiAgIH1cblxuICAgcHVibGljIGlzQ29sbGFwc2VkPFQ+KHRyZWVCcmFuY2g6IFRyZWVCcmFuY2g8VD4pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0cmVlQ29sbGFwc2VyLmlzQ29sbGFwc2VkKHRyZWVCcmFuY2gpO1xuICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./collapse.module";
|
|
2
|
+
export * from "./collapse.service";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V4dHJhcy9jb2xsYXBzZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb2xsYXBzZS5tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbGxhcHNlLnNlcnZpY2VcIjtcbiJdfQ==
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Subject } from "rxjs";
|
|
2
|
+
import { config } from "../../core/configuration/configuration";
|
|
3
|
+
import { TreeError } from "../../errors";
|
|
4
|
+
import { DragEndEvent } from "../../events/drag/drag-end-event";
|
|
5
|
+
import { DragStartEvent } from "../../events/drag/drag-start-event";
|
|
6
|
+
import { dragState, DragStates } from "./drag-state";
|
|
7
|
+
import { DropEvent } from "../../events/drag/drop-event";
|
|
8
|
+
import { assert } from "../../../shared/assert";
|
|
9
|
+
class DragAndDrop {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.dragAborted$ = new Subject();
|
|
12
|
+
}
|
|
13
|
+
dragStart(treeBranch, event) {
|
|
14
|
+
if (!this.draggingAllowed(treeBranch)) {
|
|
15
|
+
event.preventDefault();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
treeBranch.dispatch(new DragStartEvent(treeBranch));
|
|
19
|
+
this.setDragEffects(treeBranch, event);
|
|
20
|
+
this.watchForDragend(treeBranch, event);
|
|
21
|
+
// We have to do a setTimeout because DOM changes are not allowed during a
|
|
22
|
+
// dragstart event.
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
dragState.starting(treeBranch);
|
|
25
|
+
treeBranch.prune();
|
|
26
|
+
dragState.dragging();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
drop(parent, index) {
|
|
30
|
+
const treeBranch = dragState.getDragData();
|
|
31
|
+
if (treeBranch === undefined) {
|
|
32
|
+
throw new TreeError("Cannot get dragged branch");
|
|
33
|
+
}
|
|
34
|
+
this.graftDraggedBranch(treeBranch, parent, index);
|
|
35
|
+
treeBranch.dispatch(new DropEvent(treeBranch, parent, index));
|
|
36
|
+
}
|
|
37
|
+
getDragImageOffsets(event, element) {
|
|
38
|
+
const bounds = element.getBoundingClientRect();
|
|
39
|
+
const xOffset = event.clientX - bounds.left;
|
|
40
|
+
const yOffset = event.clientY - bounds.top;
|
|
41
|
+
return [xOffset, yOffset];
|
|
42
|
+
}
|
|
43
|
+
setDragEffects(treeBranch, event) {
|
|
44
|
+
const dataTransfer = event.dataTransfer;
|
|
45
|
+
assert(dataTransfer instanceof DataTransfer);
|
|
46
|
+
const nativeElement = treeBranch.getNativeElement();
|
|
47
|
+
const [xOffset, yOffset] = this.getDragImageOffsets(event, nativeElement);
|
|
48
|
+
dataTransfer.setDragImage(nativeElement, xOffset, yOffset);
|
|
49
|
+
}
|
|
50
|
+
watchForDragend(treeBranch, event) {
|
|
51
|
+
const oldParent = treeBranch.parent();
|
|
52
|
+
const oldIndex = treeBranch.index();
|
|
53
|
+
assert(oldParent !== undefined && oldIndex !== undefined);
|
|
54
|
+
event.target?.addEventListener("dragend", (dragend) => {
|
|
55
|
+
if (dragState.state() !== DragStates.Dropped) {
|
|
56
|
+
//The drag ended but a drop never occurred, so put the dragged branch back where it started.
|
|
57
|
+
this.dragAborted$.next(dragend);
|
|
58
|
+
this.graftDraggedBranch(treeBranch, oldParent, oldIndex);
|
|
59
|
+
}
|
|
60
|
+
dragState.restart();
|
|
61
|
+
const newParent = treeBranch.parent();
|
|
62
|
+
assert(newParent !== undefined);
|
|
63
|
+
const newIndex = treeBranch.index();
|
|
64
|
+
assert(newIndex !== undefined);
|
|
65
|
+
treeBranch.dispatch(new DragEndEvent(treeBranch, {
|
|
66
|
+
oldParent,
|
|
67
|
+
oldIndex,
|
|
68
|
+
newParent,
|
|
69
|
+
newIndex
|
|
70
|
+
}));
|
|
71
|
+
}, { once: true });
|
|
72
|
+
}
|
|
73
|
+
draggingAllowed(treeBranch) {
|
|
74
|
+
const allowDragging = config.getConfig(treeBranch.root())?.dragAndDrop?.allowDragging ??
|
|
75
|
+
(() => true);
|
|
76
|
+
return allowDragging(treeBranch);
|
|
77
|
+
}
|
|
78
|
+
graftDraggedBranch(treeBranch, parent, index) {
|
|
79
|
+
treeBranch.graftTo(parent, index);
|
|
80
|
+
treeBranch.getNativeElement().style.display = "block";
|
|
81
|
+
dragState.dropped();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export const dragAndDrop = new DragAndDrop();
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJhZy1hbmQtZHJvcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRCxNQUFNLFdBQVc7SUFBakI7UUFDbUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBYSxDQUFDO0lBcUczRCxDQUFDO0lBbkdTLFNBQVMsQ0FBSSxVQUF5QixFQUFFLEtBQWdCO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1Q7UUFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsMEVBQTBFO1FBQzFFLG1CQUFtQjtRQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVNLElBQUksQ0FDUixNQUE4QyxFQUM5QyxLQUFhO1FBRWIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBSyxDQUFDO1FBQzlDLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUMzQixNQUFNLElBQUksU0FBUyxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sbUJBQW1CLENBQ3hCLEtBQWdCLEVBQ2hCLE9BQWdCO1FBRWhCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDM0MsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sY0FBYyxDQUNuQixVQUF5QixFQUN6QixLQUFnQjtRQUVoQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxZQUFZLFlBQVksWUFBWSxDQUFDLENBQUM7UUFDN0MsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFFLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sZUFBZSxDQUNwQixVQUF5QixFQUN6QixLQUFnQjtRQUVoQixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUMxRCxLQUFLLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUMzQixTQUFTLEVBQ1QsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNULElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQzNDLDRGQUE0RjtnQkFDNUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBb0IsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMzRDtZQUNELFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUNoQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEMsTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUMvQixVQUFVLENBQUMsUUFBUSxDQUNoQixJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUU7Z0JBQzFCLFNBQVM7Z0JBQ1QsUUFBUTtnQkFDUixTQUFTO2dCQUNULFFBQVE7YUFDVixDQUFDLENBQ0osQ0FBQztRQUNMLENBQUMsRUFDRCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FDaEIsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUksVUFBeUI7UUFDakQsTUFBTSxhQUFhLEdBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLGFBQWE7WUFDL0QsQ0FBQyxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sa0JBQWtCLENBQ3ZCLFVBQXlCLEVBQ3pCLE1BQThDLEVBQzlDLEtBQWE7UUFFYixVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN0RCxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQztDQUNIO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE5vZGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9ub2RlLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvcmUvY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBUcmVlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBEcmFnRW5kRXZlbnQgfSBmcm9tIFwiLi4vLi4vZXZlbnRzL2RyYWcvZHJhZy1lbmQtZXZlbnRcIjtcbmltcG9ydCB7IERyYWdTdGFydEV2ZW50IH0gZnJvbSBcIi4uLy4uL2V2ZW50cy9kcmFnL2RyYWctc3RhcnQtZXZlbnRcIjtcbmltcG9ydCB7IGRyYWdTdGF0ZSwgRHJhZ1N0YXRlcyB9IGZyb20gXCIuL2RyYWctc3RhdGVcIjtcbmltcG9ydCB7IERyb3BFdmVudCB9IGZyb20gXCIuLi8uLi9ldmVudHMvZHJhZy9kcm9wLWV2ZW50XCI7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL2Fzc2VydFwiO1xuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vc3RydWN0dXJlXCI7XG5cbmNsYXNzIERyYWdBbmREcm9wIHtcbiAgIHB1YmxpYyByZWFkb25seSBkcmFnQWJvcnRlZCQgPSBuZXcgU3ViamVjdDxEcmFnRXZlbnQ+KCk7XG5cbiAgIHB1YmxpYyBkcmFnU3RhcnQ8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPiwgZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nQWxsb3dlZCh0cmVlQnJhbmNoKSkge1xuICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyZWVCcmFuY2guZGlzcGF0Y2gobmV3IERyYWdTdGFydEV2ZW50KHRyZWVCcmFuY2gpKTtcbiAgICAgIHRoaXMuc2V0RHJhZ0VmZmVjdHModHJlZUJyYW5jaCwgZXZlbnQpO1xuICAgICAgdGhpcy53YXRjaEZvckRyYWdlbmQodHJlZUJyYW5jaCwgZXZlbnQpO1xuICAgICAgLy8gV2UgaGF2ZSB0byBkbyBhIHNldFRpbWVvdXQgYmVjYXVzZSBET00gY2hhbmdlcyBhcmUgbm90IGFsbG93ZWQgZHVyaW5nIGFcbiAgICAgIC8vIGRyYWdzdGFydCBldmVudC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgZHJhZ1N0YXRlLnN0YXJ0aW5nKHRyZWVCcmFuY2gpO1xuICAgICAgICAgdHJlZUJyYW5jaC5wcnVuZSgpO1xuICAgICAgICAgZHJhZ1N0YXRlLmRyYWdnaW5nKCk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIGRyb3A8VD4oXG4gICAgICBwYXJlbnQ6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VD4sIE5vZGVDb21wb25lbnQ+LFxuICAgICAgaW5kZXg6IG51bWJlclxuICAgKTogdm9pZCB7XG4gICAgICBjb25zdCB0cmVlQnJhbmNoID0gZHJhZ1N0YXRlLmdldERyYWdEYXRhPFQ+KCk7XG4gICAgICBpZiAodHJlZUJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGdldCBkcmFnZ2VkIGJyYW5jaFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JhZnREcmFnZ2VkQnJhbmNoKHRyZWVCcmFuY2gsIHBhcmVudCwgaW5kZXgpO1xuICAgICAgdHJlZUJyYW5jaC5kaXNwYXRjaChuZXcgRHJvcEV2ZW50KHRyZWVCcmFuY2gsIHBhcmVudCwgaW5kZXgpKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBnZXREcmFnSW1hZ2VPZmZzZXRzKFxuICAgICAgZXZlbnQ6IERyYWdFdmVudCxcbiAgICAgIGVsZW1lbnQ6IEVsZW1lbnRcbiAgICk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgY29uc3QgYm91bmRzID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHhPZmZzZXQgPSBldmVudC5jbGllbnRYIC0gYm91bmRzLmxlZnQ7XG4gICAgICBjb25zdCB5T2Zmc2V0ID0gZXZlbnQuY2xpZW50WSAtIGJvdW5kcy50b3A7XG4gICAgICByZXR1cm4gW3hPZmZzZXQsIHlPZmZzZXRdO1xuICAgfVxuXG4gICBwcml2YXRlIHNldERyYWdFZmZlY3RzPFQ+KFxuICAgICAgdHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPixcbiAgICAgIGV2ZW50OiBEcmFnRXZlbnRcbiAgICk6IHZvaWQge1xuICAgICAgY29uc3QgZGF0YVRyYW5zZmVyID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xuICAgICAgYXNzZXJ0KGRhdGFUcmFuc2ZlciBpbnN0YW5jZW9mIERhdGFUcmFuc2Zlcik7XG4gICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdHJlZUJyYW5jaC5nZXROYXRpdmVFbGVtZW50KCk7XG4gICAgICBjb25zdCBbeE9mZnNldCwgeU9mZnNldF0gPSB0aGlzLmdldERyYWdJbWFnZU9mZnNldHMoZXZlbnQsIG5hdGl2ZUVsZW1lbnQpO1xuICAgICAgZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShuYXRpdmVFbGVtZW50LCB4T2Zmc2V0LCB5T2Zmc2V0KTtcbiAgIH1cblxuICAgcHJpdmF0ZSB3YXRjaEZvckRyYWdlbmQ8VD4oXG4gICAgICB0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+LFxuICAgICAgZXZlbnQ6IERyYWdFdmVudFxuICAgKTogdm9pZCB7XG4gICAgICBjb25zdCBvbGRQYXJlbnQgPSB0cmVlQnJhbmNoLnBhcmVudCgpO1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSB0cmVlQnJhbmNoLmluZGV4KCk7XG4gICAgICBhc3NlcnQob2xkUGFyZW50ICE9PSB1bmRlZmluZWQgJiYgb2xkSW5kZXggIT09IHVuZGVmaW5lZCk7XG4gICAgICBldmVudC50YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICBcImRyYWdlbmRcIixcbiAgICAgICAgIChkcmFnZW5kKSA9PiB7XG4gICAgICAgICAgICBpZiAoZHJhZ1N0YXRlLnN0YXRlKCkgIT09IERyYWdTdGF0ZXMuRHJvcHBlZCkge1xuICAgICAgICAgICAgICAgLy9UaGUgZHJhZyBlbmRlZCBidXQgYSBkcm9wIG5ldmVyIG9jY3VycmVkLCBzbyBwdXQgdGhlIGRyYWdnZWQgYnJhbmNoIGJhY2sgd2hlcmUgaXQgc3RhcnRlZC5cbiAgICAgICAgICAgICAgIHRoaXMuZHJhZ0Fib3J0ZWQkLm5leHQoZHJhZ2VuZCBhcyBEcmFnRXZlbnQpO1xuICAgICAgICAgICAgICAgdGhpcy5ncmFmdERyYWdnZWRCcmFuY2godHJlZUJyYW5jaCwgb2xkUGFyZW50LCBvbGRJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkcmFnU3RhdGUucmVzdGFydCgpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50ID0gdHJlZUJyYW5jaC5wYXJlbnQoKTtcbiAgICAgICAgICAgIGFzc2VydChuZXdQYXJlbnQgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IHRyZWVCcmFuY2guaW5kZXgoKTtcbiAgICAgICAgICAgIGFzc2VydChuZXdJbmRleCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHRyZWVCcmFuY2guZGlzcGF0Y2goXG4gICAgICAgICAgICAgICBuZXcgRHJhZ0VuZEV2ZW50KHRyZWVCcmFuY2gsIHtcbiAgICAgICAgICAgICAgICAgIG9sZFBhcmVudCxcbiAgICAgICAgICAgICAgICAgIG9sZEluZGV4LFxuICAgICAgICAgICAgICAgICAgbmV3UGFyZW50LFxuICAgICAgICAgICAgICAgICAgbmV3SW5kZXhcbiAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgfSxcbiAgICAgICAgIHsgb25jZTogdHJ1ZSB9XG4gICAgICApO1xuICAgfVxuXG4gICBwcml2YXRlIGRyYWdnaW5nQWxsb3dlZDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBhbGxvd0RyYWdnaW5nID1cbiAgICAgICAgIGNvbmZpZy5nZXRDb25maWcodHJlZUJyYW5jaC5yb290KCkpPy5kcmFnQW5kRHJvcD8uYWxsb3dEcmFnZ2luZyA/P1xuICAgICAgICAgKCgpOiB0cnVlID0+IHRydWUpO1xuICAgICAgcmV0dXJuIGFsbG93RHJhZ2dpbmcodHJlZUJyYW5jaCk7XG4gICB9XG5cbiAgIHByaXZhdGUgZ3JhZnREcmFnZ2VkQnJhbmNoPFQ+KFxuICAgICAgdHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPixcbiAgICAgIHBhcmVudDogVHJlZU5vZGU8VHJlZUJyYW5jaDxUPiwgTm9kZUNvbXBvbmVudD4sXG4gICAgICBpbmRleDogbnVtYmVyXG4gICApOiB2b2lkIHtcbiAgICAgIHRyZWVCcmFuY2guZ3JhZnRUbyhwYXJlbnQsIGluZGV4KTtcbiAgICAgIHRyZWVCcmFuY2guZ2V0TmF0aXZlRWxlbWVudCgpLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICBkcmFnU3RhdGUuZHJvcHBlZCgpO1xuICAgfVxufVxuXG5leHBvcnQgY29uc3QgZHJhZ0FuZERyb3AgPSBuZXcgRHJhZ0FuZERyb3AoKTtcbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { TreeDragAndDropService } from "./drag-and-drop.service";
|
|
3
|
+
import { DraggableDirective } from "./draggable.directive";
|
|
4
|
+
import { DragoverNoChangeDetectDirective } from "./dragover-no-change-detect";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class TreeDragAndDropModule {
|
|
7
|
+
}
|
|
8
|
+
TreeDragAndDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
TreeDragAndDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropModule, imports: [DraggableDirective, DragoverNoChangeDetectDirective], exports: [DraggableDirective, DragoverNoChangeDetectDirective] });
|
|
10
|
+
TreeDragAndDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropModule, providers: [TreeDragAndDropService] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [DraggableDirective, DragoverNoChangeDetectDirective],
|
|
15
|
+
providers: [TreeDragAndDropService],
|
|
16
|
+
exports: [DraggableDirective, DragoverNoChangeDetectDirective]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V4dHJhcy9kcmFnLWFuZC1kcm9wL2RyYWctYW5kLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBTzlFLE1BQU0sT0FBTyxxQkFBcUI7O21IQUFyQixxQkFBcUI7b0hBQXJCLHFCQUFxQixZQUpyQixrQkFBa0IsRUFBRSwrQkFBK0IsYUFFbkQsa0JBQWtCLEVBQUUsK0JBQStCO29IQUVuRCxxQkFBcUIsYUFIcEIsQ0FBQyxzQkFBc0IsQ0FBQzs0RkFHekIscUJBQXFCO2tCQUxqQyxRQUFRO21CQUFDO29CQUNQLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLCtCQUErQixDQUFDO29CQUM5RCxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsK0JBQStCLENBQUM7aUJBQ2hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHJlZURyYWdBbmREcm9wU2VydmljZSB9IGZyb20gXCIuL2RyYWctYW5kLWRyb3Auc2VydmljZVwiO1xuaW1wb3J0IHsgRHJhZ2dhYmxlRGlyZWN0aXZlIH0gZnJvbSBcIi4vZHJhZ2dhYmxlLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRHJhZ292ZXJOb0NoYW5nZURldGVjdERpcmVjdGl2ZSB9IGZyb20gXCIuL2RyYWdvdmVyLW5vLWNoYW5nZS1kZXRlY3RcIjtcblxuQE5nTW9kdWxlKHtcbiAgIGltcG9ydHM6IFtEcmFnZ2FibGVEaXJlY3RpdmUsIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmVdLFxuICAgcHJvdmlkZXJzOiBbVHJlZURyYWdBbmREcm9wU2VydmljZV0sXG4gICBleHBvcnRzOiBbRHJhZ2dhYmxlRGlyZWN0aXZlLCBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlRHJhZ0FuZERyb3BNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { dragAndDrop } from "./drag-and-drop";
|
|
3
|
+
import { dragState } from "./drag-state";
|
|
4
|
+
import { dropzoneRenderer } from "./dropzone-renderer";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class TreeDragAndDropService {
|
|
7
|
+
clearDropzones() {
|
|
8
|
+
dropzoneRenderer.clearCurrentDisplay();
|
|
9
|
+
}
|
|
10
|
+
dragStart(treeBranch, event) {
|
|
11
|
+
dragAndDrop.dragStart(treeBranch, event);
|
|
12
|
+
}
|
|
13
|
+
getCurrentlyDisplayedDropzoneFamily() {
|
|
14
|
+
return dropzoneRenderer.getCurrentDisplay();
|
|
15
|
+
}
|
|
16
|
+
showRootDropzone(root) {
|
|
17
|
+
dropzoneRenderer.showLowerZones(root);
|
|
18
|
+
}
|
|
19
|
+
state() {
|
|
20
|
+
return dragState.events();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
TreeDragAndDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
TreeDragAndDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropService });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TreeDragAndDropService, decorators: [{
|
|
26
|
+
type: Injectable
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9leHRyYXMvZHJhZy1hbmQtZHJvcC9kcmFnLWFuZC1kcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLHNCQUFzQjtJQUN6QixjQUFjO1FBQ2xCLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLFNBQVMsQ0FBSSxVQUF5QixFQUFFLEtBQWdCO1FBQzVELFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxtQ0FBbUM7UUFJdkMsT0FBTyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTSxnQkFBZ0IsQ0FBSSxJQUFpQjtRQUN6QyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUs7UUFDVCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDOztvSEF0QlMsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBUcmVlQnJhbmNoLCBUcmVlUm9vdCB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5pbXBvcnQgeyBkcmFnQW5kRHJvcCB9IGZyb20gXCIuL2RyYWctYW5kLWRyb3BcIjtcbmltcG9ydCB7IGRyYWdTdGF0ZSwgRHJhZ1N0YXRlcyB9IGZyb20gXCIuL2RyYWctc3RhdGVcIjtcbmltcG9ydCB7IGRyb3B6b25lUmVuZGVyZXIgfSBmcm9tIFwiLi9kcm9wem9uZS1yZW5kZXJlclwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJlZURyYWdBbmREcm9wU2VydmljZSB7XG4gICBwdWJsaWMgY2xlYXJEcm9wem9uZXMoKTogdm9pZCB7XG4gICAgICBkcm9wem9uZVJlbmRlcmVyLmNsZWFyQ3VycmVudERpc3BsYXkoKTtcbiAgIH1cblxuICAgcHVibGljIGRyYWdTdGFydDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+LCBldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICBkcmFnQW5kRHJvcC5kcmFnU3RhcnQodHJlZUJyYW5jaCwgZXZlbnQpO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0Q3VycmVudGx5RGlzcGxheWVkRHJvcHpvbmVGYW1pbHkoKToge1xuICAgICAgdHJlZUJyYW5jaDogVHJlZVJvb3Q8YW55PiB8IFRyZWVCcmFuY2g8YW55PjtcbiAgICAgIGRpcmVjdGlvbjogXCJ1cHBlclwiIHwgXCJsb3dlclwiO1xuICAgfSB8IG51bGwge1xuICAgICAgcmV0dXJuIGRyb3B6b25lUmVuZGVyZXIuZ2V0Q3VycmVudERpc3BsYXkoKTtcbiAgIH1cblxuICAgcHVibGljIHNob3dSb290RHJvcHpvbmU8VD4ocm9vdDogVHJlZVJvb3Q8VD4pOiB2b2lkIHtcbiAgICAgIGRyb3B6b25lUmVuZGVyZXIuc2hvd0xvd2VyWm9uZXMocm9vdCk7XG4gICB9XG5cbiAgIHB1YmxpYyBzdGF0ZSgpOiBPYnNlcnZhYmxlPERyYWdTdGF0ZXM+IHtcbiAgICAgIHJldHVybiBkcmFnU3RhdGUuZXZlbnRzKCk7XG4gICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { assert } from "../../../shared/assert";
|
|
2
|
+
import { BehaviorSubject } from "rxjs";
|
|
3
|
+
export var DragStates;
|
|
4
|
+
(function (DragStates) {
|
|
5
|
+
DragStates[DragStates["Idle"] = 0] = "Idle";
|
|
6
|
+
DragStates[DragStates["Starting"] = 1] = "Starting";
|
|
7
|
+
DragStates[DragStates["Dragging"] = 2] = "Dragging";
|
|
8
|
+
DragStates[DragStates["Dropped"] = 3] = "Dropped";
|
|
9
|
+
})(DragStates || (DragStates = {}));
|
|
10
|
+
class DragState {
|
|
11
|
+
constructor() {
|
|
12
|
+
this._state = DragStates.Idle;
|
|
13
|
+
this.state$ = new BehaviorSubject(DragStates.Idle);
|
|
14
|
+
this.state$.subscribe((state) => {
|
|
15
|
+
this._state = state;
|
|
16
|
+
});
|
|
17
|
+
this.dragData = undefined;
|
|
18
|
+
}
|
|
19
|
+
getDragData() {
|
|
20
|
+
return this.dragData;
|
|
21
|
+
}
|
|
22
|
+
starting(treeBranch) {
|
|
23
|
+
assert(this._state === DragStates.Idle);
|
|
24
|
+
this.dragData = treeBranch;
|
|
25
|
+
this.state$.next(DragStates.Starting);
|
|
26
|
+
}
|
|
27
|
+
dragging() {
|
|
28
|
+
assert(this._state === DragStates.Starting);
|
|
29
|
+
this.state$.next(DragStates.Dragging);
|
|
30
|
+
}
|
|
31
|
+
dropped() {
|
|
32
|
+
assert(this._state === DragStates.Dragging);
|
|
33
|
+
this.state$.next(DragStates.Dropped);
|
|
34
|
+
}
|
|
35
|
+
restart() {
|
|
36
|
+
this.dragData = undefined;
|
|
37
|
+
this.state$.next(DragStates.Idle);
|
|
38
|
+
}
|
|
39
|
+
events() {
|
|
40
|
+
return this.state$;
|
|
41
|
+
}
|
|
42
|
+
state() {
|
|
43
|
+
return this._state;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export const dragState = new DragState();
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJhZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUduRCxNQUFNLENBQU4sSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ25CLDJDQUFRLENBQUE7SUFDUixtREFBWSxDQUFBO0lBQ1osbURBQVksQ0FBQTtJQUNaLGlEQUFXLENBQUE7QUFDZCxDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckI7QUFFRCxNQUFNLFNBQVM7SUFLWjtRQUhRLFdBQU0sR0FBZSxVQUFVLENBQUMsSUFBSSxDQUFDO1FBSTFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRU0sUUFBUSxDQUFJLFVBQXlCO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFFBQVE7UUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxPQUFPO1FBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sT0FBTztRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRU0sS0FBSztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDO0NBQ0g7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvYXNzZXJ0XCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5cbmV4cG9ydCBlbnVtIERyYWdTdGF0ZXMge1xuICAgSWRsZSA9IDAsXG4gICBTdGFydGluZyA9IDEsXG4gICBEcmFnZ2luZyA9IDIsXG4gICBEcm9wcGVkID0gM1xufVxuXG5jbGFzcyBEcmFnU3RhdGUge1xuICAgcHJpdmF0ZSBkcmFnRGF0YTogVHJlZUJyYW5jaDxhbnk+IHwgdW5kZWZpbmVkO1xuICAgcHJpdmF0ZSBfc3RhdGU6IERyYWdTdGF0ZXMgPSBEcmFnU3RhdGVzLklkbGU7XG4gICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlJDogQmVoYXZpb3JTdWJqZWN0PERyYWdTdGF0ZXM+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLnN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RHJhZ1N0YXRlcz4oRHJhZ1N0YXRlcy5JZGxlKTtcbiAgICAgIHRoaXMuc3RhdGUkLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZHJhZ0RhdGEgPSB1bmRlZmluZWQ7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXREcmFnRGF0YTxUPigpOiBUcmVlQnJhbmNoPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLmRyYWdEYXRhO1xuICAgfVxuXG4gICBwdWJsaWMgc3RhcnRpbmc8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPik6IHZvaWQge1xuICAgICAgYXNzZXJ0KHRoaXMuX3N0YXRlID09PSBEcmFnU3RhdGVzLklkbGUpO1xuICAgICAgdGhpcy5kcmFnRGF0YSA9IHRyZWVCcmFuY2g7XG4gICAgICB0aGlzLnN0YXRlJC5uZXh0KERyYWdTdGF0ZXMuU3RhcnRpbmcpO1xuICAgfVxuXG4gICBwdWJsaWMgZHJhZ2dpbmcoKTogdm9pZCB7XG4gICAgICBhc3NlcnQodGhpcy5fc3RhdGUgPT09IERyYWdTdGF0ZXMuU3RhcnRpbmcpO1xuICAgICAgdGhpcy5zdGF0ZSQubmV4dChEcmFnU3RhdGVzLkRyYWdnaW5nKTtcbiAgIH1cblxuICAgcHVibGljIGRyb3BwZWQoKTogdm9pZCB7XG4gICAgICBhc3NlcnQodGhpcy5fc3RhdGUgPT09IERyYWdTdGF0ZXMuRHJhZ2dpbmcpO1xuICAgICAgdGhpcy5zdGF0ZSQubmV4dChEcmFnU3RhdGVzLkRyb3BwZWQpO1xuICAgfVxuXG4gICBwdWJsaWMgcmVzdGFydCgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZHJhZ0RhdGEgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0YXRlJC5uZXh0KERyYWdTdGF0ZXMuSWRsZSk7XG4gICB9XG5cbiAgIHB1YmxpYyBldmVudHMoKTogT2JzZXJ2YWJsZTxEcmFnU3RhdGVzPiB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZSQ7XG4gICB9XG5cbiAgIHB1YmxpYyBzdGF0ZSgpOiBEcmFnU3RhdGVzIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRyYWdTdGF0ZSA9IG5ldyBEcmFnU3RhdGUoKTtcbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./drag-and-drop.service";
|
|
4
|
+
export class DraggableDirective {
|
|
5
|
+
constructor(dragAndDropService, renderer, hostElement) {
|
|
6
|
+
this.dragAndDropService = dragAndDropService;
|
|
7
|
+
renderer.setAttribute(hostElement.nativeElement, "draggable", "true");
|
|
8
|
+
renderer.setStyle(hostElement.nativeElement, "cursor", "grab");
|
|
9
|
+
}
|
|
10
|
+
onDragstart(event) {
|
|
11
|
+
if (this.limbleTreeDraggable === undefined)
|
|
12
|
+
return;
|
|
13
|
+
this.dragAndDropService.dragStart(this.limbleTreeDraggable, event);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
DraggableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DraggableDirective, deps: [{ token: i1.TreeDragAndDropService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17
|
+
DraggableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DraggableDirective, isStandalone: true, selector: "[limbleTreeDraggable]", inputs: { limbleTreeDraggable: "limbleTreeDraggable" }, host: { listeners: { "dragstart": "onDragstart($event)" } }, ngImport: i0 });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DraggableDirective, decorators: [{
|
|
19
|
+
type: Directive,
|
|
20
|
+
args: [{
|
|
21
|
+
selector: "[limbleTreeDraggable]",
|
|
22
|
+
standalone: true
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.TreeDragAndDropService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { limbleTreeDraggable: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], onDragstart: [{
|
|
27
|
+
type: HostListener,
|
|
28
|
+
args: ["dragstart", ["$event"]]
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJhZ2dhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0osU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRVAsTUFBTSxlQUFlLENBQUM7OztBQVF2QixNQUFNLE9BQU8sa0JBQWtCO0lBRzVCLFlBQ29CLGtCQUEwQyxFQUMzRCxRQUFtQixFQUNuQixXQUFvQztRQUZuQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXdCO1FBSTNELFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRTZDLFdBQVcsQ0FDdEQsS0FBZ0I7UUFFaEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUztZQUFFLE9BQU87UUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7Z0hBakJTLGtCQUFrQjtvR0FBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1IsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ2xCOzhKQUVXLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFXd0MsV0FBVztzQkFBeEQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgRGlyZWN0aXZlLFxuICAgRWxlbWVudFJlZixcbiAgIEhvc3RMaXN0ZW5lcixcbiAgIElucHV0LFxuICAgUmVuZGVyZXIyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmVlQnJhbmNoIH0gZnJvbSBcIi4uLy4uL2NvcmVcIjtcbmltcG9ydCB7IFRyZWVEcmFnQW5kRHJvcFNlcnZpY2UgfSBmcm9tIFwiLi9kcmFnLWFuZC1kcm9wLnNlcnZpY2VcIjtcblxuQERpcmVjdGl2ZSh7XG4gICBzZWxlY3RvcjogXCJbbGltYmxlVHJlZURyYWdnYWJsZV1cIixcbiAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlRGlyZWN0aXZlIHtcbiAgIEBJbnB1dCgpIGxpbWJsZVRyZWVEcmFnZ2FibGU/OiBUcmVlQnJhbmNoPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZ0FuZERyb3BTZXJ2aWNlOiBUcmVlRHJhZ0FuZERyb3BTZXJ2aWNlLFxuICAgICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgKSB7XG4gICAgICByZW5kZXJlci5zZXRBdHRyaWJ1dGUoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgXCJkcmFnZ2FibGVcIiwgXCJ0cnVlXCIpO1xuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgXCJjdXJzb3JcIiwgXCJncmFiXCIpO1xuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKFwiZHJhZ3N0YXJ0XCIsIFtcIiRldmVudFwiXSkgcHVibGljIG9uRHJhZ3N0YXJ0KFxuICAgICAgZXZlbnQ6IERyYWdFdmVudFxuICAgKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5saW1ibGVUcmVlRHJhZ2dhYmxlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIHRoaXMuZHJhZ0FuZERyb3BTZXJ2aWNlLmRyYWdTdGFydCh0aGlzLmxpbWJsZVRyZWVEcmFnZ2FibGUsIGV2ZW50KTtcbiAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
+
import { fromEvent } from "rxjs";
|
|
3
|
+
import { throttleTime } from "rxjs/operators";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class DragoverNoChangeDetectDirective {
|
|
6
|
+
constructor(ngZone, el) {
|
|
7
|
+
this.ngZone = ngZone;
|
|
8
|
+
this.el = el;
|
|
9
|
+
this.dragoverNoChangeDetect = new EventEmitter();
|
|
10
|
+
this.dragoverEventThrottle = 25;
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.ngZone.runOutsideAngular(() => {
|
|
14
|
+
this.eventSubscription = fromEvent(this.el.nativeElement, "dragover")
|
|
15
|
+
.pipe(throttleTime(this.dragoverEventThrottle))
|
|
16
|
+
.subscribe(($event) => {
|
|
17
|
+
this.dragoverNoChangeDetect.emit($event);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
ngOnDestroy() {
|
|
22
|
+
if (this.eventSubscription !== undefined) {
|
|
23
|
+
this.eventSubscription.unsubscribe();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
DragoverNoChangeDetectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DragoverNoChangeDetectDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
DragoverNoChangeDetectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DragoverNoChangeDetectDirective, isStandalone: true, selector: "[dragoverNoChangeDetect]", inputs: { dragoverEventThrottle: "dragoverEventThrottle" }, outputs: { dragoverNoChangeDetect: "dragoverNoChangeDetect" }, ngImport: i0 });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DragoverNoChangeDetectDirective, decorators: [{
|
|
30
|
+
type: Directive,
|
|
31
|
+
args: [{
|
|
32
|
+
standalone: true,
|
|
33
|
+
selector: "[dragoverNoChangeDetect]"
|
|
34
|
+
}]
|
|
35
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { dragoverEventThrottle: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], dragoverNoChangeDetect: [{
|
|
38
|
+
type: Output
|
|
39
|
+
}] } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ292ZXItbm8tY2hhbmdlLWRldGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJhZ292ZXItbm8tY2hhbmdlLWRldGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0osU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNOUMsTUFBTSxPQUFPLCtCQUErQjtJQUt6QyxZQUNvQixNQUFjLEVBQ2QsRUFBdUI7UUFEdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBRXhDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBQzVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFDckIsVUFBVSxDQUNaO2lCQUNHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7aUJBQzlDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sV0FBVztRQUNmLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7SUFDSixDQUFDOzs2SEE5QlMsK0JBQStCO2lIQUEvQiwrQkFBK0I7NEZBQS9CLCtCQUErQjtrQkFKM0MsU0FBUzttQkFBQztvQkFDUixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDBCQUEwQjtpQkFDdEM7c0hBRVcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNhLHNCQUFzQjtzQkFBeEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICBEaXJlY3RpdmUsXG4gICBFbGVtZW50UmVmLFxuICAgRXZlbnRFbWl0dGVyLFxuICAgSW5wdXQsXG4gICBOZ1pvbmUsXG4gICBPbkRlc3Ryb3ksXG4gICBPbkluaXQsXG4gICBPdXRwdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRocm90dGxlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICBzZWxlY3RvcjogXCJbZHJhZ292ZXJOb0NoYW5nZURldGVjdF1cIlxufSlcbmV4cG9ydCBjbGFzcyBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgQElucHV0KCkgZHJhZ292ZXJFdmVudFRocm90dGxlOiBudW1iZXI7XG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgZHJhZ292ZXJOb0NoYW5nZURldGVjdDogRXZlbnRFbWl0dGVyPERyYWdFdmVudD47XG4gICBwcml2YXRlIGV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmPEVsZW1lbnQ+XG4gICApIHtcbiAgICAgIHRoaXMuZHJhZ292ZXJOb0NoYW5nZURldGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICAgICAgdGhpcy5kcmFnb3ZlckV2ZW50VGhyb3R0bGUgPSAyNTtcbiAgIH1cblxuICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudDxEcmFnRXZlbnQ+KFxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJkcmFnb3ZlclwiXG4gICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0aHJvdHRsZVRpbWUodGhpcy5kcmFnb3ZlckV2ZW50VGhyb3R0bGUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICB0aGlzLmRyYWdvdmVyTm9DaGFuZ2VEZXRlY3QuZW1pdCgkZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuZXZlbnRTdWJzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgfVxufVxuIl19
|