@limble/limble-tree 1.0.0-alpha.1 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +450 -17
  2. package/esm2020/lib/components/branch/branch.component.mjs +7 -15
  3. package/esm2020/lib/components/dropzone/dropzone.component.mjs +2 -2
  4. package/esm2020/lib/components/root/root.component.mjs +3 -4
  5. package/esm2020/lib/core/branch-options.interface.mjs +1 -1
  6. package/esm2020/lib/core/configuration/configuration.mjs +1 -1
  7. package/esm2020/lib/core/configuration/tree-options.interface.mjs +1 -1
  8. package/esm2020/lib/core/index.mjs +1 -2
  9. package/esm2020/lib/core/relationship.interface.mjs +1 -1
  10. package/esm2020/lib/core/tree-branch/branch-controller.mjs +99 -0
  11. package/esm2020/lib/core/tree-branch/tree-branch.mjs +260 -106
  12. package/esm2020/lib/core/tree-node-base.mjs +10 -9
  13. package/esm2020/lib/core/tree-root/root-controller.mjs +42 -0
  14. package/esm2020/lib/core/tree-root/tree-root.mjs +138 -27
  15. package/esm2020/lib/core/tree-service/tree.service.mjs +7 -1
  16. package/esm2020/lib/events/drag/drag-end-event.mjs +9 -7
  17. package/esm2020/lib/events/drag/drag-start-event.mjs +2 -4
  18. package/esm2020/lib/events/drag/drop-event.mjs +2 -4
  19. package/esm2020/lib/events/general/destruction-event.mjs +10 -0
  20. package/esm2020/lib/events/general/index.mjs +2 -0
  21. package/esm2020/lib/events/index.mjs +2 -1
  22. package/esm2020/lib/events/relational/graft-event.mjs +2 -4
  23. package/esm2020/lib/events/relational/prune-event.mjs +2 -4
  24. package/esm2020/lib/events/relational/relational-tree-event.interface.mjs +1 -1
  25. package/esm2020/lib/extras/collapse/collapse.mjs +2 -2
  26. package/esm2020/lib/extras/collapse/collapse.module.mjs +2 -1
  27. package/esm2020/lib/extras/collapse/collapse.service.mjs +26 -1
  28. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.mjs +6 -10
  29. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.module.mjs +5 -1
  30. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.service.mjs +21 -5
  31. package/esm2020/lib/extras/drag-and-drop/draggable.directive.mjs +7 -7
  32. package/esm2020/lib/extras/drag-and-drop/dragover-no-change-detect.mjs +10 -11
  33. package/esm2020/lib/extras/drag-and-drop/dropzone-renderer.mjs +9 -7
  34. package/esm2020/lib/legacy/legacy-component-obj.interface.mjs +1 -1
  35. package/esm2020/lib/legacy/legacy-tree-data.interface.mjs +1 -1
  36. package/esm2020/lib/legacy/legacy-tree-options.interface.mjs +1 -1
  37. package/esm2020/lib/legacy/legacy-tree.mjs +30 -30
  38. package/esm2020/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +1 -1
  39. package/esm2020/lib/limble-tree.module.mjs +6 -2
  40. package/esm2020/lib/structure/branchable.interface.mjs +1 -1
  41. package/esm2020/lib/structure/component-container.interface.mjs +2 -0
  42. package/esm2020/lib/structure/index.mjs +2 -5
  43. package/esm2020/lib/structure/tree-branch-node.interface.mjs +1 -1
  44. package/esm2020/lib/structure/tree-event.interface.mjs +1 -1
  45. package/esm2020/lib/structure/tree-node.interface.mjs +1 -1
  46. package/esm2020/lib/structure/tree-relationship.interface.mjs +1 -1
  47. package/fesm2015/limble-limble-tree.mjs +821 -376
  48. package/fesm2015/limble-limble-tree.mjs.map +1 -1
  49. package/fesm2020/limble-limble-tree.mjs +819 -372
  50. package/fesm2020/limble-limble-tree.mjs.map +1 -1
  51. package/lib/core/branch-options.interface.d.ts +1 -1
  52. package/lib/core/configuration/configuration.d.ts +2 -2
  53. package/lib/core/configuration/tree-options.interface.d.ts +48 -29
  54. package/lib/core/index.d.ts +0 -1
  55. package/lib/core/relationship.interface.d.ts +2 -3
  56. package/lib/core/tree-branch/branch-controller.d.ts +25 -0
  57. package/lib/core/tree-branch/tree-branch.d.ts +199 -24
  58. package/lib/core/tree-node-base.d.ts +4 -5
  59. package/lib/core/tree-root/root-controller.d.ts +19 -0
  60. package/lib/core/tree-root/tree-root.d.ts +109 -14
  61. package/lib/core/tree-service/tree.service.d.ts +8 -2
  62. package/lib/events/drag/drag-end-event.d.ts +15 -13
  63. package/lib/events/drag/drag-start-event.d.ts +6 -5
  64. package/lib/events/drag/drop-event.d.ts +7 -10
  65. package/lib/events/general/destruction-event.d.ts +8 -0
  66. package/lib/events/general/index.d.ts +1 -0
  67. package/lib/events/index.d.ts +1 -0
  68. package/lib/events/relational/graft-event.d.ts +5 -6
  69. package/lib/events/relational/prune-event.d.ts +5 -6
  70. package/lib/events/relational/relational-tree-event.interface.d.ts +5 -1
  71. package/lib/extras/collapse/collapse.module.d.ts +1 -0
  72. package/lib/extras/collapse/collapse.service.d.ts +25 -0
  73. package/lib/extras/drag-and-drop/drag-and-drop.d.ts +2 -3
  74. package/lib/extras/drag-and-drop/drag-and-drop.module.d.ts +4 -0
  75. package/lib/extras/drag-and-drop/drag-and-drop.service.d.ts +22 -3
  76. package/lib/extras/drag-and-drop/draggable.directive.d.ts +4 -5
  77. package/lib/extras/drag-and-drop/dragover-no-change-detect.d.ts +7 -3
  78. package/lib/legacy/legacy-component-obj.interface.d.ts +1 -1
  79. package/lib/legacy/legacy-tree-data.interface.d.ts +1 -1
  80. package/lib/legacy/legacy-tree-options.interface.d.ts +2 -2
  81. package/lib/legacy/legacy-tree.d.ts +4 -4
  82. package/lib/legacy/limble-tree-root/limble-tree-root.component.d.ts +4 -4
  83. package/lib/limble-tree.module.d.ts +4 -0
  84. package/lib/structure/branchable.interface.d.ts +0 -1
  85. package/lib/structure/component-container.interface.d.ts +8 -0
  86. package/lib/structure/index.d.ts +1 -4
  87. package/lib/structure/tree-branch-node.interface.d.ts +3 -3
  88. package/lib/structure/tree-event.interface.d.ts +3 -3
  89. package/lib/structure/tree-node.interface.d.ts +11 -6
  90. package/lib/structure/tree-relationship.interface.d.ts +2 -2
  91. package/package.json +1 -1
  92. package/esm2020/lib/structure/container-tree-node.interface.mjs +0 -2
  93. package/esm2020/lib/structure/content-container.interface.mjs +0 -2
  94. package/esm2020/lib/structure/event-conduit.interface.mjs +0 -2
  95. package/esm2020/lib/structure/tree-root.node.interface.mjs +0 -2
  96. package/lib/structure/container-tree-node.interface.d.ts +0 -3
  97. package/lib/structure/content-container.interface.d.ts +0 -3
  98. package/lib/structure/event-conduit.interface.d.ts +0 -6
  99. package/lib/structure/tree-root.node.interface.d.ts +0 -2
@@ -14,4 +14,4 @@ class Configuration {
14
14
  }
15
15
  }
16
16
  export const config = new Configuration();
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxhQUFhO0lBR2hCO1FBRmlCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFHcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxTQUFTLENBQUksSUFBaUIsRUFBRSxPQUFvQjtRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFTO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSDtBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJlZVJvb3QgfSBmcm9tIFwiLi4vdHJlZS1yb290L3RyZWUtcm9vdFwiO1xuaW1wb3J0IHsgVHJlZU9wdGlvbnMgfSBmcm9tIFwiLi90cmVlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5cbmNsYXNzIENvbmZpZ3VyYXRpb24ge1xuICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTdG9yYWdlID0gbmV3IE1hcDxUcmVlUm9vdDxhbnk+LCBUcmVlT3B0aW9ucz4oKTtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhpcy5jb25maWdTdG9yYWdlID0gbmV3IE1hcCgpO1xuICAgfVxuXG4gICBwdWJsaWMgc2V0Q29uZmlnPFQ+KHJvb3Q6IFRyZWVSb290PFQ+LCBvcHRpb25zOiBUcmVlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgdGhpcy5jb25maWdTdG9yYWdlLnNldChyb290LCBvcHRpb25zKTtcbiAgIH1cblxuICAgcHVibGljIGdldENvbmZpZyhyb290OiBhbnkpOiBUcmVlT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdTdG9yYWdlLmdldChyb290KTtcbiAgIH1cblxuICAgcHVibGljIGRlbGV0ZShyb290OiBhbnkpOiB2b2lkIHtcbiAgICAgIHRoaXMuY29uZmlnU3RvcmFnZS5kZWxldGUocm9vdCk7XG4gICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxhQUFhO0lBR2hCO1FBRmlCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFHcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxTQUFTLENBQUksSUFBaUIsRUFBRSxPQUFvQjtRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFTO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSDtBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUcmVlUm9vdCB9IGZyb20gXCIuLi90cmVlLXJvb3QvdHJlZS1yb290XCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVPcHRpb25zIH0gZnJvbSBcIi4vdHJlZS1vcHRpb25zLmludGVyZmFjZVwiO1xuXG5jbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU3RvcmFnZSA9IG5ldyBNYXA8VHJlZVJvb3Q8YW55PiwgVHJlZU9wdGlvbnM+KCk7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHRoaXMuY29uZmlnU3RvcmFnZSA9IG5ldyBNYXAoKTtcbiAgIH1cblxuICAgcHVibGljIHNldENvbmZpZzxUPihyb290OiBUcmVlUm9vdDxUPiwgb3B0aW9uczogVHJlZU9wdGlvbnMpOiB2b2lkIHtcbiAgICAgIHRoaXMuY29uZmlnU3RvcmFnZS5zZXQocm9vdCwgb3B0aW9ucyk7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRDb25maWcocm9vdDogYW55KTogVHJlZU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnU3RvcmFnZS5nZXQocm9vdCk7XG4gICB9XG5cbiAgIHB1YmxpYyBkZWxldGUocm9vdDogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLmNvbmZpZ1N0b3JhZ2UuZGVsZXRlKHJvb3QpO1xuICAgfVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlnID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uL3RyZWUtb3B0aW9ucy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi4vdHJlZS1icmFuY2gvdHJlZS1icmFuY2hcIjtcbmltcG9ydCB7IFRyZWVSb290IH0gZnJvbSBcIi4uL3RyZWUtcm9vdC90cmVlLXJvb3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlT3B0aW9ucyB7XG4gICAvKipcbiAgICAqIEEgZnVuY3Rpb24gdG8gaW5kaWNhdGUgd2hldGhlciB0byBhbGxvdyBhIG5vZGUgdG8gYmUgZHJhZ2dlZC4gVGhlIG5vZGUgaW5cbiAgICAqIHF1ZXN0aW9uIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gYSBmdW5jdGlvbiB0aGF0IGFsd2F5cyByZXR1cm5zIHRydWUuIFRoaXNcbiAgICAqIGZ1bmN0aW9uIHJ1bnMgd2hlbiBEcmFnQW5kRHJvcFNlcnZpY2UuZHJhZ1N0YXJ0IHJ1bnMsIGFuZCBiZWZvcmUgdGhlIGJyYW5jaFxuICAgICogaXMgcHJ1bmVkIGZyb20gdGhlIHRyZWUuXG4gICAgKi9cbiAgIGFsbG93RHJhZ2dpbmc/OiA8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPikgPT4gYm9vbGVhbjtcblxuICAgLyoqXG4gICAgKiBBIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc291cmNlTm9kZSBjYW4gYmUgZHJvcHBlZCBhdCBhIHBhcnRpY3VsYXIgbG9jYXRpb24uXG4gICAgKiBUaGUgc291cmNlTm9kZSwgdGhlIG5ldyBwcm9wb3NlZFBhcmVudCBmb3IgdGhlIHNvdXJjZU5vZGUsIGFuZCB0aGUgbmV3IHByb3Bvc2VkSW5kZXhcbiAgICAqIGZvciB0aGUgc291cmNlIG5vZGUgYXJlIHBhc3NlZCBpbi4gVGhpcyBmdW5jdGlvbiBydW5zIGp1c3QgYmVmb3JlIGRpc3BsYXlpbmcgYVxuICAgICogZmFtaWx5IG9mIGRyb3B6b25lcy5cbiAgICAqL1xuICAgYWxsb3dEcm9wPzogPFQ+KFxuICAgICAgc291cmNlTm9kZTogVHJlZUJyYW5jaDxUPixcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBUcmVlQnJhbmNoPFQ+IHwgVHJlZVJvb3Q8VD4sXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcbiAgICkgPT4gYm9vbGVhbjtcblxuICAgLyoqXG4gICAgKiBBIGZ1bmN0aW9uIHRvIGluZGljYXRlIHdoZXRoZXIgdG8gYWxsb3cgXCJuZXN0aW5nXCIgKHBsYWNpbmcgYSBicmFuY2ggb25lIGxldmVsXG4gICAgKiBkZWVwZXIgdGhhbiBpdHMgcGFyZW50KS4gVGhlIG5vZGUgaW4gcXVlc3Rpb24gaXMgcGFzc2VkIGluLiBEZWZhdWx0cyB0byBhIGZ1bmN0aW9uXG4gICAgKiB0aGF0IGFsd2F5cyByZXR1cm5zIHRydWUuIFRoaXMgZnVuY3Rpb24gcnVucyBqdXN0IGJlZm9yZSBkaXNwbGF5aW5nIGEgZmFtaWx5IG9mXG4gICAgKiBkcm9wem9uZXMuXG4gICAgKi9cbiAgIGFsbG93TmVzdGluZz86IDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KSA9PiBib29sZWFuO1xuXG4gICAvKipcbiAgICAqIFRoZSBudW1iZXIgb2YgcGl4ZWxzIGVhY2ggbGV2ZWwgb2YgdGhlIHRyZWUgd2lsbCBiZSBpbmRlbnRlZCByZWxhdGl2ZSB0b1xuICAgICogaXRzIHBhcmVudC4gRGVmYXVsdHMgdG8gMTYuXG4gICAgKi9cbiAgIGluZGVudGF0aW9uPzogbnVtYmVyO1xuXG4gICAvKipcbiAgICAqIFdoZXRoZXIgYWxsIGJyYW5jaGVzIHNob3VsZCBzdGFydCBvdXQgaW4gYSBjb2xsYXBzZWQgc3RhdGUsIHNvIHRoYXQgb25seSBvbmVcbiAgICAqIGxldmVsIG9mIHRoZSB0cmVlIGlzIHZpc2libGUgYXQgZmlyc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICovXG4gICBzdGFydEFsbENvbGxhcHNlZD86IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uL3RyZWUtb3B0aW9ucy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuLi90cmVlLWJyYW5jaC90cmVlLWJyYW5jaFwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlUm9vdCB9IGZyb20gXCIuLi90cmVlLXJvb3QvdHJlZS1yb290XCI7XG5cbi8qKiBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHRyZWUsIGFzIGlkZW50aWZpZWQgYnkgYSBUcmVlUm9vdCAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmVlT3B0aW9ucyB7XG4gICBkcmFnQW5kRHJvcD86IHtcbiAgICAgIC8qKlxuICAgICAgICogQSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0byBhbGxvdyBhIG5vZGUgdG8gYmUgZHJhZ2dlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcmVtYXJrc1xuICAgICAgICogUnVucyB3aGVuIGEgZHJhZyBiZWdpbnMsIGJ1dCBiZWZvcmUgdGhlIGJyYW5jaCBpcyBwcnVuZWQgZnJvbSB0aGUgdHJlZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gdHJlZUJyYW5jaCAtIFRoZSBub2RlIG9mIHRoZSB0cmVlIHRoYXQgaXMgYWJvdXQgdG8gYmUgZHJhZ2dlZC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdFZhbHVlIEEgZnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyB0cnVlLlxuICAgICAgICpcbiAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBjYW4gYmUgZHJhZ2dlZDsgYGZhbHNlYCBpZiBpdCBjYW5ub3QuXG4gICAgICAgKi9cbiAgICAgIGFsbG93RHJhZ2dpbmc/OiA8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPikgPT4gYm9vbGVhbjtcblxuICAgICAgLyoqXG4gICAgICAgKiBBIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc291cmNlTm9kZSBjYW4gYmUgZHJvcHBlZCBhdCBhXG4gICAgICAgKiBwYXJ0aWN1bGFyIGxvY2F0aW9uLlxuICAgICAgICpcbiAgICAgICAqIEByZW1hcmtzXG4gICAgICAgKiBUaGlzIGZ1bmN0aW9uIHJ1bnMganVzdCBiZWZvcmUgZGlzcGxheWluZyBhIGZhbWlseSBvZiBkcm9wem9uZXMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHNvdXJjZUJyYW5jaCAtIFRoZSBicmFuY2ggdGhhdCBpcyBiZWluZyBkcmFnZ2VkLlxuICAgICAgICogQHBhcmFtIHByb3Bvc2VkUGFyZW50IC0gVGhlIHByb3Bvc2VkIG5ldyBwYXJlbnQgb2YgdGhlIHNvdXJjZUJyYW5jaC5cbiAgICAgICAqIEBwYXJhbSBwcm9wb3NlZEluZGV4IC0gVGhlIHByb3Bvc2VkIG5ldyBpbmRleCBvZiB0aGUgc291cmNlQnJhbmNoLlxuICAgICAgICpcbiAgICAgICAqIEBkZWZhdWx0VmFsdWUgQSBmdW5jdGlvbiB0aGF0IGFsd2F5cyByZXR1cm5zIHRydWUuXG4gICAgICAgKi9cbiAgICAgIGFsbG93RHJvcD86IDxUPihcbiAgICAgICAgIHNvdXJjZUJyYW5jaDogVHJlZUJyYW5jaDxUPixcbiAgICAgICAgIHByb3Bvc2VkUGFyZW50OiBUcmVlQnJhbmNoPFQ+IHwgVHJlZVJvb3Q8VD4sXG4gICAgICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcbiAgICAgICkgPT4gYm9vbGVhbjtcblxuICAgICAgLyoqXG4gICAgICAgKiBBIGZ1bmN0aW9uIHRvIGluZGljYXRlIHdoZXRoZXIgdG8gYWxsb3cgXCJuZXN0aW5nXCIgKHBsYWNpbmcgYSBicmFuY2ggYXNcbiAgICAgICAqIGEgY2hpbGQpIG9mIGEgcGFydGljdWxhciBicmFuY2guXG4gICAgICAgKlxuICAgICAgICogQHJlbWFya3NcbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gcnVucyBqdXN0IGJlZm9yZSBkaXNwbGF5aW5nIGEgZmFtaWx5IG9mIGRyb3B6b25lcy5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gdHJlZUJyYW5jaCAtIFRoZSBub2RlIG9mIHRoZSB0cmVlIHdob3NlIG5lc3RpbmcgY2FwYWJpbGl0eSBpcyBiZWluZ1xuICAgICAgICogY2hlY2tlZC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdFZhbHVlIEEgZnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyB0cnVlLlxuICAgICAgICovXG4gICAgICBhbGxvd05lc3Rpbmc/OiA8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPikgPT4gYm9vbGVhbjtcbiAgIH07XG5cbiAgIC8qKlxuICAgICogVGhlIG51bWJlciBvZiBwaXhlbHMgZWFjaCBsZXZlbCBvZiB0aGUgdHJlZSB3aWxsIGJlIGluZGVudGVkIHJlbGF0aXZlIHRvXG4gICAgKiBpdHMgcGFyZW50LlxuICAgICpcbiAgICAqIEBkZWZhdWx0VmFsdWUgMTZcbiAgICAqL1xuICAgaW5kZW50YXRpb24/OiBudW1iZXI7XG59XG4iXX0=
@@ -2,5 +2,4 @@ export * from "./tree-service/tree.service";
2
2
  export * from "./tree-root/tree-root";
3
3
  export * from "./tree-branch/tree-branch";
4
4
  export * from "./configuration/tree-options.interface";
5
- export * from "./configuration/configuration";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1zZXJ2aWNlL3RyZWUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1yb290L3RyZWUtcm9vdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1icmFuY2gvdHJlZS1icmFuY2hcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ3VyYXRpb24vdHJlZS1vcHRpb25zLmludGVyZmFjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uXCI7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3RyZWUtc2VydmljZS90cmVlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyZWUtcm9vdC90cmVlLXJvb3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyZWUtYnJhbmNoL3RyZWUtYnJhbmNoXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25maWd1cmF0aW9uL3RyZWUtb3B0aW9ucy5pbnRlcmZhY2VcIjtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9yZWxhdGlvbnNoaXAuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL25vZGUtY29tcG9uZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29udGFpbmVyVHJlZU5vZGUgfSBmcm9tIFwiLi4vc3RydWN0dXJlL2NvbnRhaW5lci10cmVlLW5vZGUuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlUmVsYXRpb25zaGlwIH0gZnJvbSBcIi4uL3N0cnVjdHVyZS90cmVlLXJlbGF0aW9uc2hpcC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi90cmVlLWJyYW5jaC90cmVlLWJyYW5jaFwiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbnNoaXA8VXNlcmxhbmRDb21wb25lbnQ+ID0gVHJlZVJlbGF0aW9uc2hpcDxcbiAgIENvbnRhaW5lclRyZWVOb2RlPFxuICAgICAgQ29tcG9uZW50UmVmPE5vZGVDb21wb25lbnQ+LFxuICAgICAgVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD5cbiAgID4sXG4gICBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PlxuPjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9yZWxhdGlvbnNoaXAuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbm9kZS1jb21wb25lbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gXCIuLi9zdHJ1Y3R1cmVcIjtcbmltcG9ydCB7IFRyZWVSZWxhdGlvbnNoaXAgfSBmcm9tIFwiLi4vc3RydWN0dXJlL3RyZWUtcmVsYXRpb25zaGlwLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuL3RyZWUtYnJhbmNoL3RyZWUtYnJhbmNoXCI7XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcDxVc2VybGFuZENvbXBvbmVudD4gPSBUcmVlUmVsYXRpb25zaGlwPFxuICAgVHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIE5vZGVDb21wb25lbnQ+LFxuICAgVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD5cbj47XG4iXX0=
@@ -0,0 +1,99 @@
1
+ import { createComponent, EnvironmentInjector } from "@angular/core";
2
+ import { assert } from "../../../shared/assert";
3
+ import { filter } from "rxjs";
4
+ import { BranchComponent } from "../../components/branch/branch.component";
5
+ import { dropzoneRenderer } from "../../extras/drag-and-drop/dropzone-renderer";
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1icmFuY2gvYnJhbmNoLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVKLGVBQWUsRUFDZixtQkFBbUIsRUFHckIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUloRjs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFTMUIsWUFDb0IsVUFBeUMsRUFDMUQsdUJBQXlDO1FBRHhCLGVBQVUsR0FBVixVQUFVLENBQStCO1FBRzFELElBQUksQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGVBQWUsQ0FFdkMsZUFBZSxFQUFFO1lBQ2hCLG1CQUFtQixFQUNoQix1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1NBQzlELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FDbEMsQ0FBQztJQUNMLENBQUM7SUFFTSxPQUFPO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxD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YUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDO2FBQ2xELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLHdCQUF3QixHQUMzQixnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLElBQ0csd0JBQXdCLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVO2dCQUN4RCx3QkFBd0IsQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUMvQztnQkFDQyxPQUFPO2FBQ1Q7WUFDRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVPLG9CQUFvQixDQUN6QixRQUE0QztRQUU1QyxPQUFPLFFBQVEsQ0FBQyxhQUFhO2FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQzthQUNsRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSx3QkFBd0IsR0FDM0IsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN4QyxJQUNHLHdCQUF3QixFQUFFLFVBQVUsS0FBSyxJQUFJLENBQUMsVUFBVTtnQkFDeEQsd0JBQXdCLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFDL0M7Z0JBQ0MsT0FBTzthQUNUO1lBQ0QsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICBDb21wb25lbnRSZWYsXG4gICBjcmVhdGVDb21wb25lbnQsXG4gICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgVmlld0NvbnRhaW5lclJlZixcbiAgIFZpZXdSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvYXNzZXJ0XCI7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBCcmFuY2hDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9icmFuY2gvYnJhbmNoLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZHJvcHpvbmVSZW5kZXJlciB9IGZyb20gXCIuLi8uLi9leHRyYXMvZHJhZy1hbmQtZHJvcC9kcm9wem9uZS1yZW5kZXJlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGFpbmVyIH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZVwiO1xuaW1wb3J0IHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuL3RyZWUtYnJhbmNoXCI7XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCB0aGUgQnJhbmNoQ29tcG9uZW50IHRoYXQgaGVscHMgaW5zdGFudGlhdGUgaXQgYW5kIGhhbmRsZXMgaXRzIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJyYW5jaENvbnRyb2xsZXI8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBpbXBsZW1lbnRzIENvbXBvbmVudENvbnRhaW5lcjxCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+Plxue1xuICAgcHJpdmF0ZSByZWFkb25seSBicmFuY2hDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxcbiAgICAgIEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgID47XG4gICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlU3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0QmluZGluZ1N1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZUJyYW5jaDogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBwYXJlbnRCcmFuY2hlc0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZlxuICAgKSB7XG4gICAgICB0aGlzLm91dHB1dEJpbmRpbmdTdWJzY3JpcHRpb25zID0gW107XG4gICAgICB0aGlzLmJyYW5jaENvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudDxcbiAgICAgICAgIEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgICAgID4oQnJhbmNoQ29tcG9uZW50LCB7XG4gICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOlxuICAgICAgICAgICAgcGFyZW50QnJhbmNoZXNDb250YWluZXIuaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRlbnRUb0hvc3QgPVxuICAgICAgICAgdGhpcy50cmVlQnJhbmNoLmJyYW5jaE9wdGlvbnMuY29tcG9uZW50O1xuICAgICAgdGhpcy5pbnN0YW5jZVN1YnNjcmlwdGlvbnMgPSB0aGlzLmdldEluc3RhbmNlU3Vic2NyaXB0aW9ucyhcbiAgICAgICAgIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmluc3RhbmNlXG4gICAgICApO1xuICAgfVxuXG4gICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuaW5zdGFuY2VTdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4ge1xuICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub3V0cHV0QmluZGluZ1N1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cblxuICAgcHVibGljIGdldEJyYW5jaGVzQ29udGFpbmVyKCk6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaGVzQ29udGFpbmVyO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTogQnJhbmNoQ29tcG9uZW50PFVzZXJsYW5kQ29tcG9uZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hDb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRIb3N0VmlldygpOiBWaWV3UmVmIHtcbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaENvbXBvbmVudFJlZi5ob3N0VmlldztcbiAgIH1cblxuICAgcHVibGljIGdldE5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRVc2VybGFuZENvbXBvbmVudFJlZigpOlxuICAgICAgfCBDb21wb25lbnRSZWY8VXNlcmxhbmRDb21wb25lbnQ+XG4gICAgICB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hDb21wb25lbnRSZWYuaW5zdGFuY2UuZ2V0SG9zdGVkQ29udGVudCgpO1xuICAgfVxuXG4gICBwcml2YXRlIGdldENvbnRlbnRDcmVhdGVkU3ViKFxuICAgICAgaW5zdGFuY2U6IEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IFN1YnNjcmlwdGlvbiB7XG4gICAgICByZXR1cm4gaW5zdGFuY2UuY29udGVudENyZWF0ZWQuc3Vic2NyaWJlKCh1c2VybGFuZENvbXBvbmVudEluc3RhbmNlKSA9PiB7XG4gICAgICAgICBjb25zdCBjb21wb25lbnQgPSB1c2VybGFuZENvbXBvbmVudEluc3RhbmNlIGFzIGFueTtcbiAgICAgICAgIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy50cmVlQnJhbmNoLmJyYW5jaE9wdGlvbnMuaW5wdXRCaW5kaW5ncyA/PyB7fVxuICAgICAgICAgKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbXBvbmVudFtrZXldID0gdmFsdWU7XG4gICAgICAgICB9KTtcbiAgICAgICAgIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy50cmVlQnJhbmNoLmJyYW5jaE9wdGlvbnMub3V0cHV0QmluZGluZ3MgPz8ge31cbiAgICAgICAgICkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm91dHB1dEJpbmRpbmdTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICBjb21wb25lbnRba2V5XS5zdWJzY3JpYmUodmFsdWUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgfSk7XG4gICAgICAgICBjb21wb25lbnQudHJlZUJyYW5jaCA9IHRoaXMudHJlZUJyYW5jaDtcbiAgICAgICAgIGNvbnN0IGRyb3B6b25lcyA9IGluc3RhbmNlLmRyb3B6b25lcztcbiAgICAgICAgIGFzc2VydChkcm9wem9uZXMgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICBkcm9wem9uZVJlbmRlcmVyLnJlZ2lzdGVyRHJvcHpvbmVzKGRyb3B6b25lcywgdGhpcy50cmVlQnJhbmNoKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwcml2YXRlIGdldEluc3RhbmNlU3Vic2NyaXB0aW9ucyhcbiAgICAgIGluc3RhbmNlOiBCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+XG4gICApOiBBcnJheTxTdWJzY3JpcHRpb24+IHtcbiAgICAgIGNvbnN0IGRyb3BwZWRTdWIgPSBpbnN0YW5jZS5kcm9wcGVkLnN1YnNjcmliZSgocGxhY2VtZW50KSA9PiB7XG4gICAgICAgICBkcm9wem9uZVJlbmRlcmVyLmhhbmRsZURyb3AodGhpcy50cmVlQnJhbmNoLCBwbGFjZW1lbnQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAgdGhpcy5nZXRDb250ZW50Q3JlYXRlZFN1YihpbnN0YW5jZSksXG4gICAgICAgICB0aGlzLmdldFNob3dMb3dlclpvbmVzU3ViKGluc3RhbmNlKSxcbiAgICAgICAgIHRoaXMuZ2V0U2hvd1VwcGVyWm9uZXNTdWIoaW5zdGFuY2UpLFxuICAgICAgICAgZHJvcHBlZFN1YlxuICAgICAgXTtcbiAgIH1cblxuICAgcHJpdmF0ZSBnZXRTaG93TG93ZXJab25lc1N1YihcbiAgICAgIGluc3RhbmNlOiBCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+XG4gICApOiBTdWJzY3JpcHRpb24ge1xuICAgICAgcmV0dXJuIGluc3RhbmNlLnNob3dEcm9wem9uZXNcbiAgICAgICAgIC5waXBlKGZpbHRlcigoZGlyZWN0aW9uKSA9PiBkaXJlY3Rpb24gPT09IFwibG93ZXJcIikpXG4gICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREcm9wem9uZURpc3BsYXllZCA9XG4gICAgICAgICAgICAgICBkcm9wem9uZVJlbmRlcmVyLmdldEN1cnJlbnREaXNwbGF5KCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICBjdXJyZW50RHJvcHpvbmVEaXNwbGF5ZWQ/LnRyZWVCcmFuY2ggPT09IHRoaXMudHJlZUJyYW5jaCAmJlxuICAgICAgICAgICAgICAgY3VycmVudERyb3B6b25lRGlzcGxheWVkLmRpcmVjdGlvbiA9PT0gXCJsb3dlclwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyb3B6b25lUmVuZGVyZXIuc2hvd0xvd2VyWm9uZXModGhpcy50cmVlQnJhbmNoKTtcbiAgICAgICAgICAgIGluc3RhbmNlLnRyaWdnZXJDaGFuZ2VEZXRlY3Rpb24oKTtcbiAgICAgICAgIH0pO1xuICAgfVxuXG4gICBwcml2YXRlIGdldFNob3dVcHBlclpvbmVzU3ViKFxuICAgICAgaW5zdGFuY2U6IEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IFN1YnNjcmlwdGlvbiB7XG4gICAgICByZXR1cm4gaW5zdGFuY2Uuc2hvd0Ryb3B6b25lc1xuICAgICAgICAgLnBpcGUoZmlsdGVyKChkaXJlY3Rpb24pID0+IGRpcmVjdGlvbiA9PT0gXCJ1cHBlclwiKSlcbiAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERyb3B6b25lRGlzcGxheWVkID1cbiAgICAgICAgICAgICAgIGRyb3B6b25lUmVuZGVyZXIuZ2V0Q3VycmVudERpc3BsYXkoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIGN1cnJlbnREcm9wem9uZURpc3BsYXllZD8udHJlZUJyYW5jaCA9PT0gdGhpcy50cmVlQnJhbmNoICYmXG4gICAgICAgICAgICAgICBjdXJyZW50RHJvcHpvbmVEaXNwbGF5ZWQuZGlyZWN0aW9uID09PSBcInVwcGVyXCJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJvcHpvbmVSZW5kZXJlci5zaG93VXBwZXJab25lcyh0aGlzLnRyZWVCcmFuY2gpO1xuICAgICAgICAgICAgaW5zdGFuY2UudHJpZ2dlckNoYW5nZURldGVjdGlvbigpO1xuICAgICAgICAgfSk7XG4gICB9XG59XG4iXX0=