@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.
Files changed (92) hide show
  1. package/README.md +2 -0
  2. package/esm2022/lib/components/branch/branch.component.mjs +79 -0
  3. package/esm2022/lib/components/dragover-no-change-detect.mjs +39 -0
  4. package/{esm2020 → esm2022}/lib/components/dropzone/dropzone.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/components/root/root.component.mjs +5 -5
  6. package/esm2022/lib/core/tree-branch/branch-controller.mjs +99 -0
  7. package/esm2022/lib/core/tree-branch/tree-branch.mjs +429 -0
  8. package/esm2022/lib/core/tree-node-base.mjs +77 -0
  9. package/esm2022/lib/core/tree-root/tree-root.mjs +193 -0
  10. package/{esm2020 → esm2022}/lib/core/tree-service/tree.service.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/extras/collapse/collapse.module.mjs +5 -5
  12. package/{esm2020 → esm2022}/lib/extras/collapse/collapse.service.mjs +4 -4
  13. package/esm2022/lib/extras/drag-and-drop/drag-and-drop.mjs +83 -0
  14. package/{esm2020 → esm2022}/lib/extras/drag-and-drop/drag-and-drop.module.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/extras/drag-and-drop/drag-and-drop.service.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/extras/drag-and-drop/draggable.directive.mjs +5 -5
  17. package/esm2022/lib/extras/drag-and-drop/dropzone-renderer.mjs +176 -0
  18. package/esm2022/lib/legacy/legacy-tree.mjs +73 -0
  19. package/esm2022/lib/legacy/limble-tree-legacy.module.mjs +20 -0
  20. package/esm2022/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +78 -0
  21. package/{esm2020 → esm2022}/lib/limble-tree.module.mjs +5 -5
  22. package/esm2022/shared/assert.mjs +7 -0
  23. package/{fesm2020 → fesm2022}/limble-limble-tree.mjs +72 -75
  24. package/fesm2022/limble-limble-tree.mjs.map +1 -0
  25. package/lib/components/branch/branch.component.d.ts +1 -1
  26. package/lib/components/dropzone/dropzone.component.d.ts +1 -1
  27. package/lib/core/tree-node-base.d.ts +2 -1
  28. package/lib/extras/drag-and-drop/draggable.directive.d.ts +1 -1
  29. package/lib/legacy/limble-tree-root/limble-tree-root.component.d.ts +2 -2
  30. package/package.json +7 -13
  31. package/esm2020/lib/components/branch/branch.component.mjs +0 -79
  32. package/esm2020/lib/components/dragover-no-change-detect.mjs +0 -39
  33. package/esm2020/lib/core/tree-branch/branch-controller.mjs +0 -99
  34. package/esm2020/lib/core/tree-branch/tree-branch.mjs +0 -429
  35. package/esm2020/lib/core/tree-node-base.mjs +0 -80
  36. package/esm2020/lib/core/tree-root/tree-root.mjs +0 -193
  37. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.mjs +0 -83
  38. package/esm2020/lib/extras/drag-and-drop/dropzone-renderer.mjs +0 -176
  39. package/esm2020/lib/legacy/legacy-tree.mjs +0 -73
  40. package/esm2020/lib/legacy/limble-tree-legacy.module.mjs +0 -20
  41. package/esm2020/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +0 -78
  42. package/esm2020/shared/assert.mjs +0 -7
  43. package/fesm2015/limble-limble-tree.mjs +0 -1812
  44. package/fesm2015/limble-limble-tree.mjs.map +0 -1
  45. package/fesm2020/limble-limble-tree.mjs.map +0 -1
  46. /package/{esm2020 → esm2022}/lib/components/branch/index.mjs +0 -0
  47. /package/{esm2020 → esm2022}/lib/components/dropzone/index.mjs +0 -0
  48. /package/{esm2020 → esm2022}/lib/components/host-component.interface.mjs +0 -0
  49. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  50. /package/{esm2020 → esm2022}/lib/components/node-component.interface.mjs +0 -0
  51. /package/{esm2020 → esm2022}/lib/components/root/index.mjs +0 -0
  52. /package/{esm2020 → esm2022}/lib/core/branch-options.interface.mjs +0 -0
  53. /package/{esm2020 → esm2022}/lib/core/branchable.interface.mjs +0 -0
  54. /package/{esm2020 → esm2022}/lib/core/component-container.interface.mjs +0 -0
  55. /package/{esm2020 → esm2022}/lib/core/configuration/configuration.mjs +0 -0
  56. /package/{esm2020 → esm2022}/lib/core/configuration/index.mjs +0 -0
  57. /package/{esm2020 → esm2022}/lib/core/configuration/tree-options.interface.mjs +0 -0
  58. /package/{esm2020 → esm2022}/lib/core/index.mjs +0 -0
  59. /package/{esm2020 → esm2022}/lib/core/tree-branch/graftable.interface.mjs +0 -0
  60. /package/{esm2020 → esm2022}/lib/core/tree-branch/index.mjs +0 -0
  61. /package/{esm2020 → esm2022}/lib/core/tree-node.interface.mjs +0 -0
  62. /package/{esm2020 → esm2022}/lib/core/tree-plot.interface.mjs +0 -0
  63. /package/{esm2020 → esm2022}/lib/core/tree-root/index.mjs +0 -0
  64. /package/{esm2020 → esm2022}/lib/core/tree-root/root-controller.mjs +0 -0
  65. /package/{esm2020 → esm2022}/lib/core/tree-service/index.mjs +0 -0
  66. /package/{esm2020 → esm2022}/lib/errors/index.mjs +0 -0
  67. /package/{esm2020 → esm2022}/lib/errors/tree-error.mjs +0 -0
  68. /package/{esm2020 → esm2022}/lib/events/drag/drag-end-event.mjs +0 -0
  69. /package/{esm2020 → esm2022}/lib/events/drag/drag-start-event.mjs +0 -0
  70. /package/{esm2020 → esm2022}/lib/events/drag/drop-event.mjs +0 -0
  71. /package/{esm2020 → esm2022}/lib/events/drag/index.mjs +0 -0
  72. /package/{esm2020 → esm2022}/lib/events/general/destruction-event.mjs +0 -0
  73. /package/{esm2020 → esm2022}/lib/events/general/index.mjs +0 -0
  74. /package/{esm2020 → esm2022}/lib/events/index.mjs +0 -0
  75. /package/{esm2020 → esm2022}/lib/events/relational/graft-event.mjs +0 -0
  76. /package/{esm2020 → esm2022}/lib/events/relational/index.mjs +0 -0
  77. /package/{esm2020 → esm2022}/lib/events/relational/prune-event.mjs +0 -0
  78. /package/{esm2020 → esm2022}/lib/events/relational/relational-tree-event.interface.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/events/relational/tree-relationship.interface.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/events/tree-event.interface.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/extras/collapse/collapse.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/extras/collapse/index.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/extras/drag-and-drop/drag-state.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/extras/drag-and-drop/index.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/legacy/index.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/legacy/legacy-component-obj.interface.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/legacy/legacy-tree-data.interface.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/legacy/legacy-tree-options.interface.mjs +0 -0
  89. /package/{esm2020 → esm2022}/limble-limble-tree.mjs +0 -0
  90. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/shared/has-property.mjs +0 -0
  92. /package/{esm2020 → esm2022}/shared/index.mjs +0 -0
package/README.md CHANGED
@@ -17,6 +17,8 @@ An Angular library for building visual tree structures. Built and used by the te
17
17
  | ----------- | --------------- | ----- |
18
18
  | 1.0.0 | 14.2.0 - 14.x.x | 7.x.x |
19
19
  | 2.0.0 | 15.x.x | 7.x.x |
20
+ | 3.0.0 | 16.x.x | 7.x.x |
21
+ | 4.0.0 | 17.x.x | 7.x.x |
20
22
 
21
23
  ## Installation
22
24
 
@@ -0,0 +1,79 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, EventEmitter, Input, NgZone, Output, ViewChild, ViewChildren, ViewContainerRef } from "@angular/core";
3
+ import { map, merge } from "rxjs";
4
+ import { DropzoneComponent } from "../dropzone";
5
+ import { DragoverNoChangeDetectDirective } from "../dragover-no-change-detect";
6
+ import { assert } from "../../../shared";
7
+ import * as i0 from "@angular/core";
8
+ export class BranchComponent {
9
+ constructor(appRef) {
10
+ this.appRef = appRef;
11
+ this.branchesContainer = undefined;
12
+ this.contentContainer = undefined;
13
+ this.dropzones = undefined;
14
+ this.contentCreated = new EventEmitter();
15
+ this.showDropzones = new EventEmitter();
16
+ this.dropped = new EventEmitter();
17
+ this.showInnerDropzone = false;
18
+ this.showLateralDropzone = false;
19
+ }
20
+ ngAfterViewInit() {
21
+ assert(this.contentContainer !== undefined);
22
+ assert(this.contentToHost !== undefined);
23
+ this.hostedContent = this.contentContainer.createComponent(this.contentToHost);
24
+ this.contentCreated.emit(this.hostedContent.instance);
25
+ assert(this.dropzones !== undefined);
26
+ const inner = this.dropzones.get(0);
27
+ const lateral = this.dropzones.get(1);
28
+ assert(inner !== undefined && lateral !== undefined);
29
+ merge(inner.dropped.pipe(map(() => "inner")), lateral.dropped.pipe(map(() => "lateral"))).subscribe(this.dropped);
30
+ this.hostedContent.changeDetectorRef.detectChanges();
31
+ }
32
+ getHostedContent() {
33
+ return this.hostedContent;
34
+ }
35
+ triggerChangeDetection() {
36
+ if (!NgZone.isInAngularZone()) {
37
+ this.appRef.tick();
38
+ }
39
+ }
40
+ dragoverHandler(event) {
41
+ const elementHeight = event.currentTarget.getBoundingClientRect().height;
42
+ if (event.offsetY < elementHeight / 2) {
43
+ this.showDropzones.emit("upper");
44
+ }
45
+ else {
46
+ this.showDropzones.emit("lower");
47
+ }
48
+ }
49
+ ngOnDestroy() {
50
+ /* I'm not 100% sure why, but we have to remove any reference to the
51
+ * componentRef otherwise Angular will never release it for garbage
52
+ * collection. */
53
+ this.hostedContent = undefined;
54
+ }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BranchComponent, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: BranchComponent, isStandalone: true, selector: "branch", inputs: { contentToHost: "contentToHost" }, outputs: { contentCreated: "contentCreated", showDropzones: "showDropzones", dropped: "dropped" }, viewQueries: [{ propertyName: "branchesContainer", first: true, predicate: ["branchesContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dropzones", predicate: DropzoneComponent, descendants: true }], ngImport: i0, template: "<div class=\"content\" (dragoverNoChangeDetect)=\"dragoverHandler($event)\">\n <div #contentContainer></div>\n</div>\n<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\" />\n <div #branchesContainer></div>\n</div>\n<dropzone placement=\"lateral\" [hidden]=\"!showLateralDropzone\" />\n", styles: [".branches-container{margin-left:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DropzoneComponent, selector: "dropzone", inputs: ["placement"], outputs: ["dropped"] }, { kind: "directive", type: DragoverNoChangeDetectDirective, selector: "[dragoverNoChangeDetect]", outputs: ["dragoverNoChangeDetect"] }] }); }
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BranchComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ standalone: true, selector: "branch", imports: [CommonModule, DropzoneComponent, DragoverNoChangeDetectDirective], template: "<div class=\"content\" (dragoverNoChangeDetect)=\"dragoverHandler($event)\">\n <div #contentContainer></div>\n</div>\n<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\" />\n <div #branchesContainer></div>\n</div>\n<dropzone placement=\"lateral\" [hidden]=\"!showLateralDropzone\" />\n", styles: [".branches-container{margin-left:16px}\n"] }]
61
+ }], ctorParameters: () => [{ type: i0.ApplicationRef }], propDecorators: { branchesContainer: [{
62
+ type: ViewChild,
63
+ args: ["branchesContainer", { read: ViewContainerRef }]
64
+ }], contentContainer: [{
65
+ type: ViewChild,
66
+ args: ["contentContainer", { read: ViewContainerRef }]
67
+ }], dropzones: [{
68
+ type: ViewChildren,
69
+ args: [DropzoneComponent]
70
+ }], contentToHost: [{
71
+ type: Input
72
+ }], contentCreated: [{
73
+ type: Output
74
+ }], showDropzones: [{
75
+ type: Output
76
+ }], dropped: [{
77
+ type: Output
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gvYnJhbmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gvYnJhbmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBR0osU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVN6QyxNQUFNLE9BQU8sZUFBZTtJQXNCekIsWUFBb0MsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFsQjFELHNCQUFpQixHQUFpQyxTQUFTLENBQUM7UUFFNUQscUJBQWdCLEdBQWlDLFNBQVMsQ0FBQztRQUMxQixjQUFTLEdBRXpCLFNBQVMsQ0FBQztRQUlSLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3RELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUU5RCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7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YTtzQkFBL0IsTUFBTTtnQkFDWSxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgIHR5cGUgQWZ0ZXJWaWV3SW5pdCxcbiAgIEFwcGxpY2F0aW9uUmVmLFxuICAgQ29tcG9uZW50LFxuICAgdHlwZSBDb21wb25lbnRSZWYsXG4gICBFdmVudEVtaXR0ZXIsXG4gICBJbnB1dCxcbiAgIE5nWm9uZSxcbiAgIHR5cGUgT25EZXN0cm95LFxuICAgT3V0cHV0LFxuICAgdHlwZSBRdWVyeUxpc3QsXG4gICB0eXBlIFR5cGUsXG4gICBWaWV3Q2hpbGQsXG4gICBWaWV3Q2hpbGRyZW4sXG4gICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAsIG1lcmdlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB0eXBlIHsgSG9zdENvbXBvbmVudCB9IGZyb20gXCIuLi9ob3N0LWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9ub2RlLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IERyb3B6b25lQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Ryb3B6b25lXCI7XG5pbXBvcnQgeyBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RyYWdvdmVyLW5vLWNoYW5nZS1kZXRlY3RcIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWRcIjtcblxuQENvbXBvbmVudCh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwiYnJhbmNoXCIsXG4gICB0ZW1wbGF0ZVVybDogXCIuL2JyYW5jaC5jb21wb25lbnQuaHRtbFwiLFxuICAgc3R5bGVVcmxzOiBbXCIuL2JyYW5jaC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyb3B6b25lQ29tcG9uZW50LCBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBCcmFuY2hDb21wb25lbnQ8VD5cbiAgIGltcGxlbWVudHMgTm9kZUNvbXBvbmVudCwgSG9zdENvbXBvbmVudDxUPiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gICBAVmlld0NoaWxkKFwiYnJhbmNoZXNDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICBicmFuY2hlc0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgIEBWaWV3Q2hpbGQoXCJjb250ZW50Q29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgY29udGVudENvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgIEBWaWV3Q2hpbGRyZW4oRHJvcHpvbmVDb21wb25lbnQpIGRyb3B6b25lczpcbiAgICAgIHwgUXVlcnlMaXN0PERyb3B6b25lQ29tcG9uZW50PlxuICAgICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgIEBJbnB1dCgpIGNvbnRlbnRUb0hvc3Q/OiBUeXBlPFQ+O1xuXG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgY29udGVudENyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgc2hvd0Ryb3B6b25lcyA9IG5ldyBFdmVudEVtaXR0ZXI8XCJ1cHBlclwiIHwgXCJsb3dlclwiPigpO1xuICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFwiaW5uZXJcIiB8IFwibGF0ZXJhbFwiPigpO1xuXG4gICBwdWJsaWMgc2hvd0lubmVyRHJvcHpvbmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgIHB1YmxpYyBzaG93TGF0ZXJhbERyb3B6b25lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgIHByaXZhdGUgaG9zdGVkQ29udGVudD86IENvbXBvbmVudFJlZjxUPjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge31cblxuICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgIGFzc2VydCh0aGlzLmNvbnRlbnRDb250YWluZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgICBhc3NlcnQodGhpcy5jb250ZW50VG9Ib3N0ICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5ob3N0ZWRDb250ZW50ID0gdGhpcy5jb250ZW50Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgIHRoaXMuY29udGVudFRvSG9zdFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29udGVudENyZWF0ZWQuZW1pdCh0aGlzLmhvc3RlZENvbnRlbnQuaW5zdGFuY2UpO1xuICAgICAgYXNzZXJ0KHRoaXMuZHJvcHpvbmVzICE9PSB1bmRlZmluZWQpO1xuICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLmRyb3B6b25lcy5nZXQoMCk7XG4gICAgICBjb25zdCBsYXRlcmFsID0gdGhpcy5kcm9wem9uZXMuZ2V0KDEpO1xuICAgICAgYXNzZXJ0KGlubmVyICE9PSB1bmRlZmluZWQgJiYgbGF0ZXJhbCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIG1lcmdlKFxuICAgICAgICAgaW5uZXIuZHJvcHBlZC5waXBlKG1hcCgoKSA9PiBcImlubmVyXCIgYXMgY29uc3QpKSxcbiAgICAgICAgIGxhdGVyYWwuZHJvcHBlZC5waXBlKG1hcCgoKSA9PiBcImxhdGVyYWxcIiBhcyBjb25zdCkpXG4gICAgICApLnN1YnNjcmliZSh0aGlzLmRyb3BwZWQpO1xuICAgICAgdGhpcy5ob3N0ZWRDb250ZW50LmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cblxuICAgcHVibGljIGdldEhvc3RlZENvbnRlbnQoKTogQ29tcG9uZW50UmVmPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLmhvc3RlZENvbnRlbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyB0cmlnZ2VyQ2hhbmdlRGV0ZWN0aW9uKCk6IHZvaWQge1xuICAgICAgaWYgKCFOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJvdGVjdGVkIGRyYWdvdmVySGFuZGxlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gKFxuICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICBpZiAoZXZlbnQub2Zmc2V0WSA8IGVsZW1lbnRIZWlnaHQgLyAyKSB7XG4gICAgICAgICB0aGlzLnNob3dEcm9wem9uZXMuZW1pdChcInVwcGVyXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuc2hvd0Ryb3B6b25lcy5lbWl0KFwibG93ZXJcIik7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIC8qIEknbSBub3QgMTAwJSBzdXJlIHdoeSwgYnV0IHdlIGhhdmUgdG8gcmVtb3ZlIGFueSByZWZlcmVuY2UgdG8gdGhlXG4gICAgICAgKiBjb21wb25lbnRSZWYgb3RoZXJ3aXNlIEFuZ3VsYXIgd2lsbCBuZXZlciByZWxlYXNlIGl0IGZvciBnYXJiYWdlXG4gICAgICAgKiBjb2xsZWN0aW9uLiAqL1xuICAgICAgdGhpcy5ob3N0ZWRDb250ZW50ID0gdW5kZWZpbmVkO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAoZHJhZ292ZXJOb0NoYW5nZURldGVjdCk9XCJkcmFnb3ZlckhhbmRsZXIoJGV2ZW50KVwiPlxuICAgPGRpdiAjY29udGVudENvbnRhaW5lcj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImJyYW5jaGVzLWNvbnRhaW5lclwiPlxuICAgPGRyb3B6b25lIHBsYWNlbWVudD1cImlubmVyXCIgW2hpZGRlbl09XCIhc2hvd0lubmVyRHJvcHpvbmVcIiAvPlxuICAgPGRpdiAjYnJhbmNoZXNDb250YWluZXI+PC9kaXY+XG48L2Rpdj5cbjxkcm9wem9uZSBwbGFjZW1lbnQ9XCJsYXRlcmFsXCIgW2hpZGRlbl09XCIhc2hvd0xhdGVyYWxEcm9wem9uZVwiIC8+XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { Directive, EventEmitter, Output } from "@angular/core";
2
+ import { fromEvent } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Works just like Angular's built-in `(dragover)` event binding, but is much
6
+ * more performant. It throttles the event to a configurable rate (default once
7
+ * every 25ms) and runs outside of Angular's change detection.
8
+ */
9
+ export class DragoverNoChangeDetectDirective {
10
+ constructor(ngZone, el) {
11
+ this.ngZone = ngZone;
12
+ this.el = el;
13
+ this.dragoverNoChangeDetect = new EventEmitter();
14
+ }
15
+ ngOnInit() {
16
+ this.ngZone.runOutsideAngular(() => {
17
+ this.eventSubscription = fromEvent(this.el.nativeElement, "dragover").subscribe(($event) => {
18
+ this.dragoverNoChangeDetect.emit($event);
19
+ });
20
+ });
21
+ }
22
+ ngOnDestroy() {
23
+ if (this.eventSubscription !== undefined) {
24
+ this.eventSubscription.unsubscribe();
25
+ }
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DragoverNoChangeDetectDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: DragoverNoChangeDetectDirective, isStandalone: true, selector: "[dragoverNoChangeDetect]", outputs: { dragoverNoChangeDetect: "dragoverNoChangeDetect" }, ngImport: i0 }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DragoverNoChangeDetectDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ standalone: true,
34
+ selector: "[dragoverNoChangeDetect]"
35
+ }]
36
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { dragoverNoChangeDetect: [{
37
+ type: Output
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ292ZXItbm8tY2hhbmdlLWRldGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9kcmFnb3Zlci1uby1jaGFuZ2UtZGV0ZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSixTQUFTLEVBRVQsWUFBWSxFQUlaLE1BQU0sRUFDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLE1BQU0sQ0FBQzs7QUFFcEQ7Ozs7R0FJRztBQUtILE1BQU0sT0FBTywrQkFBK0I7SUFJekMsWUFDb0IsTUFBYyxFQUNkLEVBQXVCO1FBRHZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQUV4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUMvRCxDQUFDO0lBRU0sUUFBUTtRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUNyQixVQUFVLENBQ1osQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVNLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNKLENBQUM7OEdBMUJTLCtCQUErQjtrR0FBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNSLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMEJBQTBCO2lCQUN0QztvR0FFcUIsc0JBQXNCO3NCQUF4QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgIERpcmVjdGl2ZSxcbiAgIEVsZW1lbnRSZWYsXG4gICBFdmVudEVtaXR0ZXIsXG4gICBOZ1pvbmUsXG4gICB0eXBlIE9uRGVzdHJveSxcbiAgIHR5cGUgT25Jbml0LFxuICAgT3V0cHV0XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHR5cGUgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuLyoqXG4gKiBXb3JrcyBqdXN0IGxpa2UgQW5ndWxhcidzIGJ1aWx0LWluIGAoZHJhZ292ZXIpYCBldmVudCBiaW5kaW5nLCBidXQgaXMgbXVjaFxuICogbW9yZSBwZXJmb3JtYW50LiBJdCB0aHJvdHRsZXMgdGhlIGV2ZW50IHRvIGEgY29uZmlndXJhYmxlIHJhdGUgKGRlZmF1bHQgb25jZVxuICogZXZlcnkgMjVtcykgYW5kIHJ1bnMgb3V0c2lkZSBvZiBBbmd1bGFyJ3MgY2hhbmdlIGRldGVjdGlvbi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwiW2RyYWdvdmVyTm9DaGFuZ2VEZXRlY3RdXCJcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ292ZXJOb0NoYW5nZURldGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgIEBPdXRwdXQoKSByZWFkb25seSBkcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0OiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PjtcbiAgIHByaXZhdGUgZXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8RWxlbWVudD5cbiAgICkge1xuICAgICAgdGhpcy5kcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQ8RHJhZ0V2ZW50PihcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwiZHJhZ292ZXJcIlxuICAgICAgICAgKS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0LmVtaXQoJGV2ZW50KTtcbiAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmV2ZW50U3Vic2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgIH1cbn1cbiJdfQ==
@@ -21,10 +21,10 @@ export class DropzoneComponent {
21
21
  dropHandler(event) {
22
22
  this.dropped.emit(event);
23
23
  }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: DropzoneComponent, isStandalone: true, selector: "dropzone", inputs: { placement: "placement" }, outputs: { dropped: "dropped" }, ngImport: i0, template: "<div\n class=\"dropzone\"\n [ngClass]=\"{ active: active }\"\n (dragenter)=\"dragenterHandler()\"\n (dragleave)=\"dragleaveHandler()\"\n (dragoverNoChangeDetect)=\"dragoverHandler($event)\"\n (drop)=\"dropHandler($event)\"\n></div>\n", styles: [".dropzone{border-radius:8px;border:1px dashed #727374;background-color:#ededed;height:36px;margin:8px 0;transition:height .3s ease-out;animation:animation .3s ease-out}.dropzone.active{border-color:#289e49;border-width:2px;background-color:#d0e8d6;height:72px}@keyframes animation{0%{height:0px;opacity:0}to{height:36px;opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: DragoverNoChangeDetectDirective, selector: "[dragoverNoChangeDetect]", outputs: ["dragoverNoChangeDetect"] }] }); }
24
26
  }
25
- DropzoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
- DropzoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DropzoneComponent, isStandalone: true, selector: "dropzone", inputs: { placement: "placement" }, outputs: { dropped: "dropped" }, ngImport: i0, template: "<div\n class=\"dropzone\"\n [ngClass]=\"{ active: active }\"\n (dragenter)=\"dragenterHandler()\"\n (dragleave)=\"dragleaveHandler()\"\n (dragoverNoChangeDetect)=\"dragoverHandler($event)\"\n (drop)=\"dropHandler($event)\"\n></div>\n", styles: [".dropzone{border-radius:8px;border:1px dashed #727374;background-color:#ededed;height:36px;margin:8px 0;transition:height .3s ease-out;animation:animation .3s ease-out}.dropzone.active{border-color:#289e49;border-width:2px;background-color:#d0e8d6;height:72px}@keyframes animation{0%{height:0px;opacity:0}to{height:36px;opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: DragoverNoChangeDetectDirective, selector: "[dragoverNoChangeDetect]", outputs: ["dragoverNoChangeDetect"] }] });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropzoneComponent, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropzoneComponent, decorators: [{
28
28
  type: Component,
29
29
  args: [{ standalone: true, selector: "dropzone", imports: [CommonModule, DragoverNoChangeDetectDirective], template: "<div\n class=\"dropzone\"\n [ngClass]=\"{ active: active }\"\n (dragenter)=\"dragenterHandler()\"\n (dragleave)=\"dragleaveHandler()\"\n (dragoverNoChangeDetect)=\"dragoverHandler($event)\"\n (drop)=\"dropHandler($event)\"\n></div>\n", styles: [".dropzone{border-radius:8px;border:1px dashed #727374;background-color:#ededed;height:36px;margin:8px 0;transition:height .3s ease-out;animation:animation .3s ease-out}.dropzone.active{border-color:#289e49;border-width:2px;background-color:#d0e8d6;height:72px}@keyframes animation{0%{height:0px;opacity:0}to{height:36px;opacity:1}}\n"] }]
30
30
  }], propDecorators: { placement: [{
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
32
32
  }], dropped: [{
33
33
  type: Output
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3B6b25lL2Ryb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9kcm9wem9uZS9kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBUy9FLE1BQU0sT0FBTyxpQkFBaUI7SUFQOUI7UUFTc0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFFakQsV0FBTSxHQUFZLEtBQUssQ0FBQztLQWtCcEM7SUFoQlMsZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFnQjtRQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDLFlBQTZCLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7OzhHQXJCUyxpQkFBaUI7a0dBQWpCLGlCQUFpQix5SUNYOUIsdVBBUUEsc1lEQ2EsWUFBWSw2SEFBRSwrQkFBK0I7MkZBRTdDLGlCQUFpQjtrQkFQN0IsU0FBUztpQ0FDSyxJQUFJLFlBQ04sVUFBVSxXQUdYLENBQUMsWUFBWSxFQUFFLCtCQUErQixDQUFDOzhCQUcvQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNhLE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RyYWdvdmVyLW5vLWNoYW5nZS1kZXRlY3RcIjtcblxuQENvbXBvbmVudCh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwiZHJvcHpvbmVcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vZHJvcHpvbmUuY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi9kcm9wem9uZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIERyb3B6b25lQ29tcG9uZW50IHtcbiAgIEBJbnB1dCgpIHBsYWNlbWVudD86IFwiaW5uZXJcIiB8IFwibGF0ZXJhbFwiO1xuICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcblxuICAgcHJvdGVjdGVkIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICBwdWJsaWMgZHJhZ2VudGVySGFuZGxlcigpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgIH1cblxuICAgcHVibGljIGRyYWdsZWF2ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgfVxuXG4gICBwdWJsaWMgZHJhZ292ZXJIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAoZXZlbnQuZGF0YVRyYW5zZmVyIGFzIERhdGFUcmFuc2ZlcikuZHJvcEVmZmVjdCA9IFwibW92ZVwiO1xuICAgfVxuXG4gICBwdWJsaWMgZHJvcEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5kcm9wcGVkLmVtaXQoZXZlbnQpO1xuICAgfVxufVxuIiwiPGRpdlxuICAgY2xhc3M9XCJkcm9wem9uZVwiXG4gICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYWN0aXZlIH1cIlxuICAgKGRyYWdlbnRlcik9XCJkcmFnZW50ZXJIYW5kbGVyKClcIlxuICAgKGRyYWdsZWF2ZSk9XCJkcmFnbGVhdmVIYW5kbGVyKClcIlxuICAgKGRyYWdvdmVyTm9DaGFuZ2VEZXRlY3QpPVwiZHJhZ292ZXJIYW5kbGVyKCRldmVudClcIlxuICAgKGRyb3ApPVwiZHJvcEhhbmRsZXIoJGV2ZW50KVwiXG4+PC9kaXY+XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3B6b25lL2Ryb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9kcm9wem9uZS9kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBUy9FLE1BQU0sT0FBTyxpQkFBaUI7SUFQOUI7UUFTc0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFFakQsV0FBTSxHQUFZLEtBQUssQ0FBQztLQWtCcEM7SUFoQlMsZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFnQjtRQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDLFlBQTZCLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7OEdBckJTLGlCQUFpQjtrR0FBakIsaUJBQWlCLHlJQ1g5Qix1UEFRQSxzWURDYSxZQUFZLDZIQUFFLCtCQUErQjs7MkZBRTdDLGlCQUFpQjtrQkFQN0IsU0FBUztpQ0FDSyxJQUFJLFlBQ04sVUFBVSxXQUdYLENBQUMsWUFBWSxFQUFFLCtCQUErQixDQUFDOzhCQUcvQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNhLE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RyYWdvdmVyLW5vLWNoYW5nZS1kZXRlY3RcIjtcblxuQENvbXBvbmVudCh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwiZHJvcHpvbmVcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vZHJvcHpvbmUuY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi9kcm9wem9uZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIERyb3B6b25lQ29tcG9uZW50IHtcbiAgIEBJbnB1dCgpIHBsYWNlbWVudD86IFwiaW5uZXJcIiB8IFwibGF0ZXJhbFwiO1xuICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcblxuICAgcHJvdGVjdGVkIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICBwdWJsaWMgZHJhZ2VudGVySGFuZGxlcigpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgIH1cblxuICAgcHVibGljIGRyYWdsZWF2ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgfVxuXG4gICBwdWJsaWMgZHJhZ292ZXJIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAoZXZlbnQuZGF0YVRyYW5zZmVyIGFzIERhdGFUcmFuc2ZlcikuZHJvcEVmZmVjdCA9IFwibW92ZVwiO1xuICAgfVxuXG4gICBwdWJsaWMgZHJvcEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5kcm9wcGVkLmVtaXQoZXZlbnQpO1xuICAgfVxufVxuIiwiPGRpdlxuICAgY2xhc3M9XCJkcm9wem9uZVwiXG4gICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYWN0aXZlIH1cIlxuICAgKGRyYWdlbnRlcik9XCJkcmFnZW50ZXJIYW5kbGVyKClcIlxuICAgKGRyYWdsZWF2ZSk9XCJkcmFnbGVhdmVIYW5kbGVyKClcIlxuICAgKGRyYWdvdmVyTm9DaGFuZ2VEZXRlY3QpPVwiZHJhZ292ZXJIYW5kbGVyKCRldmVudClcIlxuICAgKGRyb3ApPVwiZHJvcEhhbmRsZXIoJGV2ZW50KVwiXG4+PC9kaXY+XG4iXX0=
@@ -16,12 +16,12 @@ export class RootComponent {
16
16
  assert(this.dropzone !== undefined);
17
17
  this.dropzone.dropped.subscribe(this.dropped);
18
18
  }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: RootComponent, isStandalone: true, selector: "root", outputs: { afterViewInit: "afterViewInit", dropped: "dropped" }, viewQueries: [{ propertyName: "branchesContainer", first: true, predicate: ["branchesContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dropzone", first: true, predicate: DropzoneComponent, descendants: true }], ngImport: i0, template: "<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\" />\n <div #branchesContainer></div>\n</div>\n", styles: [".branches-container{min-width:64px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DropzoneComponent, selector: "dropzone", inputs: ["placement"], outputs: ["dropped"] }] }); }
19
21
  }
20
- RootComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- RootComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RootComponent, isStandalone: true, selector: "root", outputs: { afterViewInit: "afterViewInit", dropped: "dropped" }, viewQueries: [{ propertyName: "branchesContainer", first: true, predicate: ["branchesContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dropzone", first: true, predicate: DropzoneComponent, descendants: true }], ngImport: i0, template: "<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\"></dropzone>\n <div #branchesContainer></div>\n</div>\n", styles: [".branches-container{min-width:64px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DropzoneComponent, selector: "dropzone", inputs: ["placement"], outputs: ["dropped"] }] });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RootComponent, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RootComponent, decorators: [{
23
23
  type: Component,
24
- args: [{ standalone: true, selector: "root", imports: [CommonModule, DropzoneComponent], template: "<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\"></dropzone>\n <div #branchesContainer></div>\n</div>\n", styles: [".branches-container{min-width:64px}\n"] }]
24
+ args: [{ standalone: true, selector: "root", imports: [CommonModule, DropzoneComponent], template: "<div class=\"branches-container\">\n <dropzone placement=\"inner\" [hidden]=\"!showInnerDropzone\" />\n <div #branchesContainer></div>\n</div>\n", styles: [".branches-container{min-width:64px}\n"] }]
25
25
  }], propDecorators: { branchesContainer: [{
26
26
  type: ViewChild,
27
27
  args: ["branchesContainer", { read: ViewContainerRef }]
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
33
33
  }], dropped: [{
34
34
  type: Output
35
35
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvbXBvbmVudHMvcm9vdC9yb290LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9yb290L3Jvb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVWhELE1BQU0sT0FBTyxhQUFhO0lBUDFCO1FBU0csc0JBQWlCLEdBQWlDLFNBQVMsQ0FBQztRQUM5QixhQUFRLEdBQ25DLFNBQVMsQ0FBQztRQUVNLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7S0FPNUM7SUFMUyxlQUFlO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDOzswR0FmUyxhQUFhOzhGQUFiLGFBQWEsb09BQ2lCLGdCQUFnQix3REFFN0MsaUJBQWlCLGdEQ3ZCL0IsK0pBSUEsOEZEY2EsWUFBWSwrQkFBRSxpQkFBaUI7MkZBRS9CLGFBQWE7a0JBUHpCLFNBQVM7aUNBQ0ssSUFBSSxZQUNOLE1BQU0sV0FHUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQzs4QkFJMUMsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUU1QixRQUFRO3NCQUFyQyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFHVCxhQUFhO3NCQUEvQixNQUFNO2dCQUNZLE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgdHlwZSBBZnRlclZpZXdJbml0LFxuICAgQ29tcG9uZW50LFxuICAgRXZlbnRFbWl0dGVyLFxuICAgT3V0cHV0LFxuICAgVmlld0NoaWxkLFxuICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZFwiO1xuaW1wb3J0IHsgRHJvcHpvbmVDb21wb25lbnQgfSBmcm9tIFwiLi4vZHJvcHpvbmVcIjtcbmltcG9ydCB0eXBlIHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9ub2RlLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcblxuQENvbXBvbmVudCh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwicm9vdFwiLFxuICAgdGVtcGxhdGVVcmw6IFwiLi9yb290LmNvbXBvbmVudC5odG1sXCIsXG4gICBzdHlsZVVybHM6IFtcIi4vcm9vdC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyb3B6b25lQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBSb290Q29tcG9uZW50IGltcGxlbWVudHMgTm9kZUNvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICBAVmlld0NoaWxkKFwiYnJhbmNoZXNDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICBicmFuY2hlc0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgIEBWaWV3Q2hpbGQoRHJvcHpvbmVDb21wb25lbnQpIGRyb3B6b25lOiBEcm9wem9uZUNvbXBvbmVudCB8IHVuZGVmaW5lZCA9XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgIEBPdXRwdXQoKSByZWFkb25seSBhZnRlclZpZXdJbml0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgIHB1YmxpYyBzaG93SW5uZXJEcm9wem9uZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgdGhpcy5hZnRlclZpZXdJbml0LmVtaXQoKTtcbiAgICAgIGFzc2VydCh0aGlzLmRyb3B6b25lICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kcm9wem9uZS5kcm9wcGVkLnN1YnNjcmliZSh0aGlzLmRyb3BwZWQpO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJyYW5jaGVzLWNvbnRhaW5lclwiPlxuICAgPGRyb3B6b25lIHBsYWNlbWVudD1cImlubmVyXCIgW2hpZGRlbl09XCIhc2hvd0lubmVyRHJvcHpvbmVcIj48L2Ryb3B6b25lPlxuICAgPGRpdiAjYnJhbmNoZXNDb250YWluZXI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvbXBvbmVudHMvcm9vdC9yb290LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9yb290L3Jvb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVWhELE1BQU0sT0FBTyxhQUFhO0lBUDFCO1FBU0csc0JBQWlCLEdBQWlDLFNBQVMsQ0FBQztRQUM5QixhQUFRLEdBQ25DLFNBQVMsQ0FBQztRQUVNLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7S0FPNUM7SUFMUyxlQUFlO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDOzhHQWZTLGFBQWE7a0dBQWIsYUFBYSxvT0FDaUIsZ0JBQWdCLHdEQUU3QyxpQkFBaUIsZ0RDdkIvQixzSkFJQSw4RkRjYSxZQUFZLCtCQUFFLGlCQUFpQjs7MkZBRS9CLGFBQWE7a0JBUHpCLFNBQVM7aUNBQ0ssSUFBSSxZQUNOLE1BQU0sV0FHUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQzs4QkFJMUMsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUU1QixRQUFRO3NCQUFyQyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFHVCxhQUFhO3NCQUEvQixNQUFNO2dCQUNZLE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgdHlwZSBBZnRlclZpZXdJbml0LFxuICAgQ29tcG9uZW50LFxuICAgRXZlbnRFbWl0dGVyLFxuICAgT3V0cHV0LFxuICAgVmlld0NoaWxkLFxuICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZFwiO1xuaW1wb3J0IHsgRHJvcHpvbmVDb21wb25lbnQgfSBmcm9tIFwiLi4vZHJvcHpvbmVcIjtcbmltcG9ydCB0eXBlIHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9ub2RlLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcblxuQENvbXBvbmVudCh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwicm9vdFwiLFxuICAgdGVtcGxhdGVVcmw6IFwiLi9yb290LmNvbXBvbmVudC5odG1sXCIsXG4gICBzdHlsZVVybHM6IFtcIi4vcm9vdC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyb3B6b25lQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBSb290Q29tcG9uZW50IGltcGxlbWVudHMgTm9kZUNvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICBAVmlld0NoaWxkKFwiYnJhbmNoZXNDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICBicmFuY2hlc0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgIEBWaWV3Q2hpbGQoRHJvcHpvbmVDb21wb25lbnQpIGRyb3B6b25lOiBEcm9wem9uZUNvbXBvbmVudCB8IHVuZGVmaW5lZCA9XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgIEBPdXRwdXQoKSByZWFkb25seSBhZnRlclZpZXdJbml0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgIHB1YmxpYyBzaG93SW5uZXJEcm9wem9uZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgdGhpcy5hZnRlclZpZXdJbml0LmVtaXQoKTtcbiAgICAgIGFzc2VydCh0aGlzLmRyb3B6b25lICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kcm9wem9uZS5kcm9wcGVkLnN1YnNjcmliZSh0aGlzLmRyb3BwZWQpO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJyYW5jaGVzLWNvbnRhaW5lclwiPlxuICAgPGRyb3B6b25lIHBsYWNlbWVudD1cImlubmVyXCIgW2hpZGRlbl09XCIhc2hvd0lubmVyRHJvcHpvbmVcIiAvPlxuICAgPGRpdiAjYnJhbmNoZXNDb250YWluZXI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,99 @@
1
+ import { createComponent, EnvironmentInjector } from "@angular/core";
2
+ import { assert } from "../../../shared";
3
+ import { filter } from "rxjs";
4
+ import { BranchComponent } from "../../components";
5
+ import { dropzoneRenderer } from "../../extras/drag-and-drop";
6
+ /**
7
+ * A wrapper around the BranchComponent that helps instantiate it and handles its events.
8
+ */
9
+ export class BranchController {
10
+ constructor(treeBranch, parentBranchesContainer) {
11
+ this.treeBranch = treeBranch;
12
+ this.outputBindingSubscriptions = [];
13
+ this.branchComponentRef = createComponent(BranchComponent, {
14
+ environmentInjector: parentBranchesContainer.injector.get(EnvironmentInjector)
15
+ });
16
+ this.branchComponentRef.instance.contentToHost =
17
+ this.treeBranch.branchOptions.component;
18
+ this.instanceSubscriptions = this.getInstanceSubscriptions(this.branchComponentRef.instance);
19
+ }
20
+ destroy() {
21
+ this.instanceSubscriptions.forEach((sub) => {
22
+ sub.unsubscribe();
23
+ });
24
+ this.outputBindingSubscriptions.forEach((sub) => {
25
+ sub.unsubscribe();
26
+ });
27
+ }
28
+ detectChanges() {
29
+ this.branchComponentRef.changeDetectorRef.detectChanges();
30
+ }
31
+ getBranchesContainer() {
32
+ return this.branchComponentRef.instance.branchesContainer;
33
+ }
34
+ getComponentInstance() {
35
+ return this.branchComponentRef.instance;
36
+ }
37
+ getHostView() {
38
+ return this.branchComponentRef.hostView;
39
+ }
40
+ getNativeElement() {
41
+ return this.branchComponentRef.location.nativeElement;
42
+ }
43
+ getUserlandComponentRef() {
44
+ return this.branchComponentRef.instance.getHostedContent();
45
+ }
46
+ getContentCreatedSub(instance) {
47
+ return instance.contentCreated.subscribe((userlandComponentInstance) => {
48
+ const component = userlandComponentInstance;
49
+ Object.entries(this.treeBranch.branchOptions.inputBindings ?? {}).forEach(([key, value]) => {
50
+ component[key] = value;
51
+ });
52
+ Object.entries(this.treeBranch.branchOptions.outputBindings ?? {}).forEach(([key, value]) => {
53
+ this.outputBindingSubscriptions.push(component[key].subscribe(value));
54
+ });
55
+ component.treeBranch = this.treeBranch;
56
+ const dropzones = instance.dropzones;
57
+ assert(dropzones !== undefined);
58
+ dropzoneRenderer.registerDropzones(dropzones, this.treeBranch);
59
+ });
60
+ }
61
+ getInstanceSubscriptions(instance) {
62
+ const droppedSub = instance.dropped.subscribe((placement) => {
63
+ dropzoneRenderer.handleDrop(this.treeBranch, placement);
64
+ });
65
+ return [
66
+ this.getContentCreatedSub(instance),
67
+ this.getShowLowerZonesSub(instance),
68
+ this.getShowUpperZonesSub(instance),
69
+ droppedSub
70
+ ];
71
+ }
72
+ getShowLowerZonesSub(instance) {
73
+ return instance.showDropzones
74
+ .pipe(filter((direction) => direction === "lower"))
75
+ .subscribe(() => {
76
+ const currentDropzoneDisplayed = dropzoneRenderer.getCurrentDisplay();
77
+ if (currentDropzoneDisplayed?.treeBranch === this.treeBranch &&
78
+ currentDropzoneDisplayed.direction === "lower") {
79
+ return;
80
+ }
81
+ dropzoneRenderer.showLowerZones(this.treeBranch);
82
+ instance.triggerChangeDetection();
83
+ });
84
+ }
85
+ getShowUpperZonesSub(instance) {
86
+ return instance.showDropzones
87
+ .pipe(filter((direction) => direction === "upper"))
88
+ .subscribe(() => {
89
+ const currentDropzoneDisplayed = dropzoneRenderer.getCurrentDisplay();
90
+ if (currentDropzoneDisplayed?.treeBranch === this.treeBranch &&
91
+ currentDropzoneDisplayed.direction === "upper") {
92
+ return;
93
+ }
94
+ dropzoneRenderer.showUpperZones(this.treeBranch);
95
+ instance.triggerChangeDetection();
96
+ });
97
+ }
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1icmFuY2gvYnJhbmNoLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVKLGVBQWUsRUFDZixtQkFBbUIsRUFHckIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQXFCLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUk5RDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFTMUIsWUFDb0IsVUFBeUMsRUFDMUQsdUJBQXlDO1FBRHhCLGVBQVUsR0FBVixVQUFVLENBQStCO1FBRzFELElBQUksQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGVBQWUsQ0FFdkMsZUFBZSxFQUFFO1lBQ2hCLG1CQUFtQixFQUNoQix1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1NBQzlELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FDbEMsQ0FBQztJQUNMLENBQUM7SUFFTSxPQUFPO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxD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YUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDO2FBQ2xELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLHdCQUF3QixHQUMzQixnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLElBQ0csd0JBQXdCLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVO2dCQUN4RCx3QkFBd0IsQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUMvQyxDQUFDO2dCQUNBLE9BQU87WUFDVixDQUFDO1lBQ0QsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxvQkFBb0IsQ0FDekIsUUFBNEM7UUFFNUMsT0FBTyxRQUFRLENBQUMsYUFBYTthQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUM7YUFDbEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sd0JBQXdCLEdBQzNCLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEMsSUFDRyx3QkFBd0IsRUFBRSxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVU7Z0JBQ3hELHdCQUF3QixDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQy9DLENBQUM7Z0JBQ0EsT0FBTztZQUNWLENBQUM7WUFDRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgIHR5cGUgQ29tcG9uZW50UmVmLFxuICAgY3JlYXRlQ29tcG9uZW50LFxuICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgIHR5cGUgVmlld0NvbnRhaW5lclJlZixcbiAgIHR5cGUgVmlld1JlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZFwiO1xuaW1wb3J0IHsgZmlsdGVyLCB0eXBlIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBCcmFuY2hDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgZHJvcHpvbmVSZW5kZXJlciB9IGZyb20gXCIuLi8uLi9leHRyYXMvZHJhZy1hbmQtZHJvcFwiO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRDb250YWluZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50LWNvbnRhaW5lci5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuL3RyZWUtYnJhbmNoXCI7XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCB0aGUgQnJhbmNoQ29tcG9uZW50IHRoYXQgaGVscHMgaW5zdGFudGlhdGUgaXQgYW5kIGhhbmRsZXMgaXRzIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJyYW5jaENvbnRyb2xsZXI8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBpbXBsZW1lbnRzIENvbXBvbmVudENvbnRhaW5lcjxCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+Plxue1xuICAgcHJpdmF0ZSByZWFkb25seSBicmFuY2hDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxcbiAgICAgIEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgID47XG4gICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlU3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0QmluZGluZ1N1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZUJyYW5jaDogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBwYXJlbnRCcmFuY2hlc0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZlxuICAgKSB7XG4gICAgICB0aGlzLm91dHB1dEJpbmRpbmdTdWJzY3JpcHRpb25zID0gW107XG4gICAgICB0aGlzLmJyYW5jaENvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudDxcbiAgICAgICAgIEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgICAgID4oQnJhbmNoQ29tcG9uZW50LCB7XG4gICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOlxuICAgICAgICAgICAgcGFyZW50QnJhbmNoZXNDb250YWluZXIuaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRlbnRUb0hvc3QgPVxuICAgICAgICAgdGhpcy50cmVlQnJhbmNoLmJyYW5jaE9wdGlvbnMuY29tcG9uZW50O1xuICAgICAgdGhpcy5pbnN0YW5jZVN1YnNjcmlwdGlvbnMgPSB0aGlzLmdldEluc3RhbmNlU3Vic2NyaXB0aW9ucyhcbiAgICAgICAgIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmluc3RhbmNlXG4gICAgICApO1xuICAgfVxuXG4gICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuaW5zdGFuY2VTdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4ge1xuICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub3V0cHV0QmluZGluZ1N1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cblxuICAgcHVibGljIGdldEJyYW5jaGVzQ29udGFpbmVyKCk6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaGVzQ29udGFpbmVyO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTogQnJhbmNoQ29tcG9uZW50PFVzZXJsYW5kQ29tcG9uZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hDb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRIb3N0VmlldygpOiBWaWV3UmVmIHtcbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaENvbXBvbmVudFJlZi5ob3N0VmlldztcbiAgIH1cblxuICAgcHVibGljIGdldE5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRVc2VybGFuZENvbXBvbmVudFJlZigpOlxuICAgICAgfCBDb21wb25lbnRSZWY8VXNlcmxhbmRDb21wb25lbnQ+XG4gICAgICB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hDb21wb25lbnRSZWYuaW5zdGFuY2UuZ2V0SG9zdGVkQ29udGVudCgpO1xuICAgfVxuXG4gICBwcml2YXRlIGdldENvbnRlbnRDcmVhdGVkU3ViKFxuICAgICAgaW5zdGFuY2U6IEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IFN1YnNjcmlwdGlvbiB7XG4gICAgICByZXR1cm4gaW5zdGFuY2UuY29udGVudENyZWF0ZWQuc3Vic2NyaWJlKCh1c2VybGFuZENvbXBvbmVudEluc3RhbmNlKSA9PiB7XG4gICAgICAgICBjb25zdCBjb21wb25lbnQgPSB1c2VybGFuZENvbXBvbmVudEluc3RhbmNlIGFzIGFueTtcbiAgICAgICAgIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy50cmVlQnJhbmNoLmJyYW5jaE9wdGlvbnMuaW5wdXRCaW5kaW5ncyA/PyB7fVxuICAgICAgICAgKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbXBvbmVudFtrZXldID0gdmFsdWU7XG4gICAgICAgICB9KTtcbiAgICAgICAgIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy50cmVlQnJhbmNoLmJyYW5jaE9wdGlvbnMub3V0cHV0QmluZGluZ3MgPz8ge31cbiAgICAgICAgICkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm91dHB1dEJpbmRpbmdTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICBjb21wb25lbnRba2V5XS5zdWJzY3JpYmUodmFsdWUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgfSk7XG4gICAgICAgICBjb21wb25lbnQudHJlZUJyYW5jaCA9IHRoaXMudHJlZUJyYW5jaDtcbiAgICAgICAgIGNvbnN0IGRyb3B6b25lcyA9IGluc3RhbmNlLmRyb3B6b25lcztcbiAgICAgICAgIGFzc2VydChkcm9wem9uZXMgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICBkcm9wem9uZVJlbmRlcmVyLnJlZ2lzdGVyRHJvcHpvbmVzKGRyb3B6b25lcywgdGhpcy50cmVlQnJhbmNoKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwcml2YXRlIGdldEluc3RhbmNlU3Vic2NyaXB0aW9ucyhcbiAgICAgIGluc3RhbmNlOiBCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+XG4gICApOiBBcnJheTxTdWJzY3JpcHRpb24+IHtcbiAgICAgIGNvbnN0IGRyb3BwZWRTdWIgPSBpbnN0YW5jZS5kcm9wcGVkLnN1YnNjcmliZSgocGxhY2VtZW50KSA9PiB7XG4gICAgICAgICBkcm9wem9uZVJlbmRlcmVyLmhhbmRsZURyb3AodGhpcy50cmVlQnJhbmNoLCBwbGFjZW1lbnQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAgdGhpcy5nZXRDb250ZW50Q3JlYXRlZFN1YihpbnN0YW5jZSksXG4gICAgICAgICB0aGlzLmdldFNob3dMb3dlclpvbmVzU3ViKGluc3RhbmNlKSxcbiAgICAgICAgIHRoaXMuZ2V0U2hvd1VwcGVyWm9uZXNTdWIoaW5zdGFuY2UpLFxuICAgICAgICAgZHJvcHBlZFN1YlxuICAgICAgXTtcbiAgIH1cblxuICAgcHJpdmF0ZSBnZXRTaG93TG93ZXJab25lc1N1YihcbiAgICAgIGluc3RhbmNlOiBCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+XG4gICApOiBTdWJzY3JpcHRpb24ge1xuICAgICAgcmV0dXJuIGluc3RhbmNlLnNob3dEcm9wem9uZXNcbiAgICAgICAgIC5waXBlKGZpbHRlcigoZGlyZWN0aW9uKSA9PiBkaXJlY3Rpb24gPT09IFwibG93ZXJcIikpXG4gICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREcm9wem9uZURpc3BsYXllZCA9XG4gICAgICAgICAgICAgICBkcm9wem9uZVJlbmRlcmVyLmdldEN1cnJlbnREaXNwbGF5KCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICBjdXJyZW50RHJvcHpvbmVEaXNwbGF5ZWQ/LnRyZWVCcmFuY2ggPT09IHRoaXMudHJlZUJyYW5jaCAmJlxuICAgICAgICAgICAgICAgY3VycmVudERyb3B6b25lRGlzcGxheWVkLmRpcmVjdGlvbiA9PT0gXCJsb3dlclwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyb3B6b25lUmVuZGVyZXIuc2hvd0xvd2VyWm9uZXModGhpcy50cmVlQnJhbmNoKTtcbiAgICAgICAgICAgIGluc3RhbmNlLnRyaWdnZXJDaGFuZ2VEZXRlY3Rpb24oKTtcbiAgICAgICAgIH0pO1xuICAgfVxuXG4gICBwcml2YXRlIGdldFNob3dVcHBlclpvbmVzU3ViKFxuICAgICAgaW5zdGFuY2U6IEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IFN1YnNjcmlwdGlvbiB7XG4gICAgICByZXR1cm4gaW5zdGFuY2Uuc2hvd0Ryb3B6b25lc1xuICAgICAgICAgLnBpcGUoZmlsdGVyKChkaXJlY3Rpb24pID0+IGRpcmVjdGlvbiA9PT0gXCJ1cHBlclwiKSlcbiAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERyb3B6b25lRGlzcGxheWVkID1cbiAgICAgICAgICAgICAgIGRyb3B6b25lUmVuZGVyZXIuZ2V0Q3VycmVudERpc3BsYXkoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIGN1cnJlbnREcm9wem9uZURpc3BsYXllZD8udHJlZUJyYW5jaCA9PT0gdGhpcy50cmVlQnJhbmNoICYmXG4gICAgICAgICAgICAgICBjdXJyZW50RHJvcHpvbmVEaXNwbGF5ZWQuZGlyZWN0aW9uID09PSBcInVwcGVyXCJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJvcHpvbmVSZW5kZXJlci5zaG93VXBwZXJab25lcyh0aGlzLnRyZWVCcmFuY2gpO1xuICAgICAgICAgICAgaW5zdGFuY2UudHJpZ2dlckNoYW5nZURldGVjdGlvbigpO1xuICAgICAgICAgfSk7XG4gICB9XG59XG4iXX0=