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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +42 -149
  2. package/esm2020/lib/components/branch/branch.component.mjs +87 -0
  3. package/esm2020/lib/components/dropzone/dropzone.component.mjs +35 -0
  4. package/esm2020/lib/components/host-component.interface.mjs +2 -0
  5. package/esm2020/lib/components/node-component.interface.mjs +2 -0
  6. package/esm2020/lib/components/root/root.component.mjs +37 -0
  7. package/esm2020/lib/core/branch-options.interface.mjs +2 -0
  8. package/esm2020/lib/core/configuration/configuration.mjs +17 -0
  9. package/esm2020/lib/core/configuration/tree-options.interface.mjs +2 -0
  10. package/esm2020/lib/core/index.mjs +6 -0
  11. package/esm2020/lib/core/relationship.interface.mjs +2 -0
  12. package/esm2020/lib/core/tree-branch/tree-branch.mjs +246 -0
  13. package/esm2020/lib/core/tree-node-base.mjs +68 -0
  14. package/esm2020/lib/core/tree-root/tree-root.mjs +69 -0
  15. package/esm2020/lib/core/tree-service/tree.service.mjs +19 -0
  16. package/esm2020/lib/errors/index.mjs +2 -0
  17. package/esm2020/lib/errors/tree-error.mjs +3 -0
  18. package/esm2020/lib/events/drag/drag-end-event.mjs +28 -0
  19. package/esm2020/lib/events/drag/drag-start-event.mjs +12 -0
  20. package/esm2020/lib/events/drag/drop-event.mjs +20 -0
  21. package/esm2020/lib/events/drag/index.mjs +4 -0
  22. package/esm2020/lib/events/index.mjs +3 -0
  23. package/esm2020/lib/events/relational/graft-event.mjs +24 -0
  24. package/esm2020/lib/events/relational/index.mjs +4 -0
  25. package/esm2020/lib/events/relational/prune-event.mjs +24 -0
  26. package/esm2020/lib/events/relational/relational-tree-event.interface.mjs +2 -0
  27. package/esm2020/lib/extras/collapse/collapse.mjs +33 -0
  28. package/esm2020/lib/extras/collapse/collapse.module.mjs +15 -0
  29. package/esm2020/lib/extras/collapse/collapse.service.mjs +20 -0
  30. package/esm2020/lib/extras/collapse/index.mjs +3 -0
  31. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.mjs +89 -0
  32. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.module.mjs +19 -0
  33. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.service.mjs +28 -0
  34. package/esm2020/lib/extras/drag-and-drop/drag-state.mjs +47 -0
  35. package/esm2020/lib/extras/drag-and-drop/draggable.directive.mjs +30 -0
  36. package/esm2020/lib/extras/drag-and-drop/dragover-no-change-detect.mjs +40 -0
  37. package/esm2020/lib/extras/drag-and-drop/dropzone-renderer.mjs +176 -0
  38. package/esm2020/lib/extras/drag-and-drop/index.mjs +5 -0
  39. package/esm2020/lib/legacy/index.mjs +7 -0
  40. package/esm2020/lib/legacy/legacy-component-obj.interface.mjs +2 -0
  41. package/esm2020/lib/legacy/legacy-tree-data.interface.mjs +2 -0
  42. package/esm2020/lib/legacy/legacy-tree-options.interface.mjs +2 -0
  43. package/esm2020/lib/legacy/legacy-tree.mjs +74 -0
  44. package/esm2020/lib/legacy/limble-tree-legacy.module.mjs +20 -0
  45. package/esm2020/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +78 -0
  46. package/esm2020/lib/limble-tree.module.mjs +21 -0
  47. package/esm2020/lib/structure/branchable.interface.mjs +2 -0
  48. package/esm2020/lib/structure/container-tree-node.interface.mjs +2 -0
  49. package/esm2020/lib/structure/content-container.interface.mjs +2 -0
  50. package/esm2020/lib/structure/event-conduit.interface.mjs +2 -0
  51. package/esm2020/lib/structure/graftable.interface.mjs +2 -0
  52. package/esm2020/lib/structure/index.mjs +12 -0
  53. package/esm2020/lib/structure/tree-branch-node.interface.mjs +2 -0
  54. package/esm2020/lib/structure/tree-event.interface.mjs +2 -0
  55. package/esm2020/lib/structure/tree-node.interface.mjs +2 -0
  56. package/esm2020/lib/structure/tree-plot.mjs +2 -0
  57. package/esm2020/lib/structure/tree-relationship.interface.mjs +2 -0
  58. package/esm2020/lib/structure/tree-root.node.interface.mjs +2 -0
  59. package/{esm2015/limble-limble-tree.js → esm2020/limble-limble-tree.mjs} +4 -4
  60. package/esm2020/public-api.mjs +12 -0
  61. package/esm2020/shared/assert.mjs +7 -0
  62. package/fesm2015/limble-limble-tree.mjs +1310 -0
  63. package/fesm2015/limble-limble-tree.mjs.map +1 -0
  64. package/fesm2020/limble-limble-tree.mjs +1300 -0
  65. package/fesm2020/limble-limble-tree.mjs.map +1 -0
  66. package/{limble-limble-tree.d.ts → index.d.ts} +5 -5
  67. package/lib/components/branch/branch.component.d.ts +26 -0
  68. package/lib/components/dropzone/dropzone.component.d.ts +13 -0
  69. package/lib/components/host-component.interface.d.ts +6 -0
  70. package/lib/components/node-component.interface.d.ts +5 -0
  71. package/lib/components/root/root.component.d.ts +14 -0
  72. package/lib/core/branch-options.interface.d.ts +14 -0
  73. package/lib/core/configuration/configuration.d.ts +11 -0
  74. package/lib/core/configuration/tree-options.interface.d.ts +35 -0
  75. package/lib/core/index.d.ts +5 -0
  76. package/lib/core/relationship.interface.d.ts +6 -0
  77. package/lib/core/tree-branch/tree-branch.d.ts +44 -0
  78. package/lib/core/tree-node-base.d.ts +26 -0
  79. package/lib/core/tree-root/tree-root.d.ts +28 -0
  80. package/lib/core/tree-service/tree.service.d.ts +9 -0
  81. package/lib/errors/index.d.ts +1 -0
  82. package/lib/errors/tree-error.d.ts +2 -0
  83. package/lib/events/drag/drag-end-event.d.ts +25 -0
  84. package/lib/events/drag/drag-start-event.d.ts +8 -0
  85. package/lib/events/drag/drop-event.d.ts +16 -0
  86. package/lib/events/drag/index.d.ts +3 -0
  87. package/lib/events/index.d.ts +2 -0
  88. package/lib/events/relational/graft-event.d.ts +15 -0
  89. package/lib/events/relational/index.d.ts +3 -0
  90. package/lib/events/relational/prune-event.d.ts +15 -0
  91. package/lib/events/relational/relational-tree-event.interface.d.ts +6 -0
  92. package/lib/extras/collapse/collapse.d.ts +11 -0
  93. package/lib/extras/collapse/collapse.module.d.ts +6 -0
  94. package/lib/extras/collapse/collapse.service.d.ts +9 -0
  95. package/lib/extras/collapse/index.d.ts +2 -0
  96. package/lib/extras/drag-and-drop/drag-and-drop.d.ts +17 -0
  97. package/lib/extras/drag-and-drop/drag-and-drop.module.d.ts +8 -0
  98. package/lib/extras/drag-and-drop/drag-and-drop.service.d.ts +16 -0
  99. package/lib/extras/drag-and-drop/drag-state.d.ts +23 -0
  100. package/lib/extras/drag-and-drop/draggable.directive.d.ts +12 -0
  101. package/lib/{custom-event-bindings/dragover-no-change-detect.directive.d.ts → extras/drag-and-drop/dragover-no-change-detect.d.ts} +14 -14
  102. package/lib/extras/drag-and-drop/dropzone-renderer.d.ts +28 -0
  103. package/lib/extras/drag-and-drop/index.d.ts +4 -0
  104. package/lib/legacy/index.d.ts +6 -0
  105. package/lib/legacy/legacy-component-obj.interface.d.ts +13 -0
  106. package/lib/legacy/legacy-tree-data.interface.d.ts +18 -0
  107. package/lib/legacy/legacy-tree-options.interface.d.ts +34 -0
  108. package/lib/legacy/legacy-tree.d.ts +14 -0
  109. package/lib/legacy/limble-tree-legacy.module.d.ts +8 -0
  110. package/lib/legacy/limble-tree-root/limble-tree-root.component.d.ts +28 -0
  111. package/lib/limble-tree.module.d.ts +9 -14
  112. package/lib/structure/branchable.interface.d.ts +5 -0
  113. package/lib/structure/container-tree-node.interface.d.ts +3 -0
  114. package/lib/structure/content-container.interface.d.ts +3 -0
  115. package/lib/structure/event-conduit.interface.d.ts +6 -0
  116. package/lib/structure/graftable.interface.d.ts +6 -0
  117. package/lib/structure/index.d.ts +11 -0
  118. package/lib/structure/tree-branch-node.interface.d.ts +5 -0
  119. package/lib/structure/tree-event.interface.d.ts +5 -0
  120. package/lib/structure/tree-node.interface.d.ts +9 -0
  121. package/lib/structure/tree-plot.d.ts +1 -0
  122. package/lib/structure/tree-relationship.interface.d.ts +7 -0
  123. package/lib/structure/tree-root.node.interface.d.ts +2 -0
  124. package/package.json +24 -19
  125. package/public-api.d.ts +8 -3
  126. package/shared/assert.d.ts +1 -0
  127. package/bundles/limble-limble-tree.umd.js +0 -2910
  128. package/bundles/limble-limble-tree.umd.js.map +0 -1
  129. package/esm2015/lib/classes/Branch.js +0 -153
  130. package/esm2015/lib/classes/DropZone.js +0 -71
  131. package/esm2015/lib/classes/DropZoneLocation.js +0 -16
  132. package/esm2015/lib/custom-event-bindings/dragleave-no-change-detect.directive.js +0 -33
  133. package/esm2015/lib/custom-event-bindings/dragover-no-change-detect.directive.js +0 -39
  134. package/esm2015/lib/drop-zone/drop-zone.component.js +0 -81
  135. package/esm2015/lib/limble-tree-branch/limble-tree-branch.component.js +0 -116
  136. package/esm2015/lib/limble-tree-node/limble-tree-node.component.js +0 -484
  137. package/esm2015/lib/limble-tree-placeholder/limble-tree-placeholder.component.js +0 -75
  138. package/esm2015/lib/limble-tree-root/drop-zone.service.js +0 -377
  139. package/esm2015/lib/limble-tree-root/limble-tree-root.component.js +0 -178
  140. package/esm2015/lib/limble-tree-root/tree-construction-status.service.js +0 -33
  141. package/esm2015/lib/limble-tree-root/tree.service.js +0 -301
  142. package/esm2015/lib/limble-tree.module.js +0 -47
  143. package/esm2015/lib/singletons/component-creator.service.js +0 -19
  144. package/esm2015/lib/singletons/drag-state.service.js +0 -64
  145. package/esm2015/lib/singletons/global-events.service.js +0 -137
  146. package/esm2015/lib/util.js +0 -74
  147. package/esm2015/public-api.js +0 -6
  148. package/fesm2015/limble-limble-tree.js +0 -2209
  149. package/fesm2015/limble-limble-tree.js.map +0 -1
  150. package/lib/classes/Branch.d.ts +0 -26
  151. package/lib/classes/DropZone.d.ts +0 -27
  152. package/lib/classes/DropZoneLocation.d.ts +0 -9
  153. package/lib/custom-event-bindings/dragleave-no-change-detect.directive.d.ts +0 -13
  154. package/lib/drop-zone/drop-zone.component.d.ts +0 -18
  155. package/lib/limble-tree-branch/limble-tree-branch.component.d.ts +0 -28
  156. package/lib/limble-tree-node/limble-tree-node.component.d.ts +0 -53
  157. package/lib/limble-tree-placeholder/limble-tree-placeholder.component.d.ts +0 -21
  158. package/lib/limble-tree-root/drop-zone.service.d.ts +0 -62
  159. package/lib/limble-tree-root/limble-tree-root.component.d.ts +0 -37
  160. package/lib/limble-tree-root/tree-construction-status.service.d.ts +0 -15
  161. package/lib/limble-tree-root/tree.service.d.ts +0 -132
  162. package/lib/singletons/component-creator.service.d.ts +0 -9
  163. package/lib/singletons/drag-state.service.d.ts +0 -35
  164. package/lib/singletons/global-events.service.d.ts +0 -13
  165. package/lib/util.d.ts +0 -13
package/README.md CHANGED
@@ -1,149 +1,42 @@
1
- # Limble Tree
2
-
3
- An Angular library for creating highly dynamic drag-and-drop tree structures
4
-
5
- ## About
6
-
7
- ### Limble
8
-
9
- Limble is a CMMS SaaS company providing great software to customers around the world. See [limblecmms.com](https://limblecmms.com) for more information. The `limble-tree` library is built by the Limble team and used in Limble's web applications.
10
-
11
- ### Status
12
-
13
- This library is currently in **beta** development. It may not be ready for use in a production environment.
14
-
15
- ### Features
16
-
17
- - Unlimited tree depth
18
- - Can have a different component rendered for each node in the tree
19
- - Can drag nodes from one location in the tree to other locations
20
- - Dragging can be turned off for all or some of the nodes
21
- - Easy nesting of nodes
22
- - Nesting can be turned off for all or some of the nodes
23
- - Nodes can be dropped into other limble trees
24
- - Supports drag handles
25
- - Catchable events are fired when the tree renders and when a drop occurs
26
- - Pagination available for flat trees
27
-
28
- ### Warning
29
-
30
- This library is compiled using Angular IVY, and therefore will not work in applications that do not also use IVY. IVY has been the default compiler for Angular since Angular 9.
31
-
32
- ### Versioning
33
-
34
- To the best of our ability, this library follows the [Semantic Versioning](https://semver.org/) standard.
35
-
36
- ## Installation
37
-
38
- `npm install @limble/limble-tree`
39
-
40
- ## Usage
41
-
42
- ### Basic Setup
43
-
44
- 1. Add the `LimbleTreeModule` to the `imports` array of one of your own modules.
45
-
46
- 2. Create an array where each element in the array represents an item in the tree (called a "node"). Children can be assigned to a node via the "nodes" property:
47
-
48
- ```typescript
49
- const treeData: LimbleTreeData = [
50
- {
51
- myValue: "abc",
52
- mySecondValue: 10,
53
- nodes: [
54
- { myValue: "def", mySecondValue: 20 },
55
- {
56
- myValue: "ghi",
57
- mySecondValue: 30,
58
- nodes: [
59
- { myValue: "jkl", mySecondValue: 40 },
60
- { myOtherValue: { prop1: "mno", prop2: "pqr" } }
61
- ]
62
- }
63
- ]
64
- },
65
- { myOtherValue: { prop1: "stu", prop2: "vwx" } }
66
- ];
67
- ```
68
-
69
- 3. Create an object describing the tree's options.
70
-
71
- ```typescript
72
- const treeOptions: LimbleTreeOptions = {
73
- defaultComponent: {
74
- class: MyComponentClass,
75
- bindings: { binding1: value1, binding2: value2 }
76
- },
77
- indent: 60
78
- };
79
- ```
80
-
81
- 4. Add a `<limble-tree-root>` component to one of your components' templates and pass it the data array and the options object:
82
-
83
- ```html
84
- <limble-tree-root [data]="treeData" [options]="treeOptions"></limble-tree-root>
85
- ```
86
-
87
- This should render the tree, producing an instance of `MyComponentClass` for each node in the tree data.
88
-
89
- ### The LimbleTreeData Array
90
-
91
- The LimbleTreeData array can have objects of any configuration. There are two properties that the library looks for on these objects:
92
-
93
- - `nodes`: This property is an array of objects just like LimbleTreeData. Objects in this array are considered children of that object, and will cause a component to be rendered for each element in the array. The children will be rendered on a new branch "under" the parent.
94
- - `component`: This property is an object in the form of `{class: <ComponentClass>, bindings: {bindingName: bindingValue, ...}}`. It is optional as long as there is a `defaultComponent` declared in the tree options object. If this property is found on a node, it will be used instead of the `defaultComponent` for rendering that node. See the `defaultComponent` option below for more information.
95
-
96
- ### The LimbleTreeOptions Object
97
-
98
- The LimbleTreeOptions object is used to configure the tree's general settings. Options include:
99
-
100
- - `defaultComponent`: This property is an object in the form of `{class: <ComponentClass>, bindings: {bindingName: bindingValue, ...}}`. For each node in the data array, the component described by this object will be rendered. The tree node object will be passed in to the component as an input called `nodeData`. The component's inputs and outputs will be initialized using the bindings object. If a tree node contains a `component` property, that component information will be used instead of the `defaultComponent`. An error will be thrown if (1) the `defaultComponent` is not defined; and (2) the library encounters a tree node that does not have a `component` property.
101
- - `indent`: The number of pixels to indent for each level of the tree. Defaults to 45.
102
- - `allowNesting`: Whether to allow "nesting" (placing a node one level deeper than currently exists on the branch) under a node. May be a boolean or a callback function that returns a boolean. If it is a callback, the callback will be called for each node when another node is attempting to nest under it. The parent node (the one which is potentially being nested under) will be passed in to the callback. Defaults to true.
103
- - `allowDragging`: Whether to allow drag-and-drop functionality. May be a boolean or a callback function that returns a boolean. If it is a callback, the callback will be called for each node when a drag is attempted on it, and that node will be passed in to the callback. Defaults to true.
104
- - `allowDrop`: A callback that determines whether a sourceNode can be dropped at a particular location. If it returns true, the drop is allowed; if it returns false, the drop is not allowed. This function takes three parameters: the node being dragged, the proposed parent node, and the proposed index under that parent. Defaults to `() => true`.
105
- - `listMode`: When set to true, list mode will enforce a flat tree structure, meaning there can only be one level of the tree. `allowNesting` is automatically set to `false` and any children will be deleted. This mode can be used when the same dynamic drag and drop functionality of the tree is desired, but the tree structure itself is not necessary. This also opens up the pagination API on the limble-tree-root component. See the pagination section below for details about pagination.
106
-
107
- ### The LimbleTreeRoot Component
108
-
109
- Here are the inputs and outputs of the `<limble-tree-root>` component:
110
-
111
- - input `data` -- a LimbleTreeData array. Required.
112
- - input `options` -- a LimbleTreeOptions object.
113
- - input `itemsPerPage` -- A number indicating how many many items to display at a time. See the "Pagination" section below.
114
- - input `page` -- A number indicating the current page og items. See the "Pagination" section below.
115
- - output `treeChange` -- an event that fires whenever the tree is rendered or re-rendered.
116
- - output `treeDrop` -- an event that fires after a node is dropped in the tree. The event contains data described by the TreeDrop interface, given here:
117
-
118
- ```typescript
119
- export interface TreeDrop {
120
- /** The node that was dropped */
121
- target: LimbleTreeNode;
122
- /** the target's parent before the drag and drop, or null if it was a top-level node */
123
- oldParent: LimbleTreeNode | null;
124
- /** the index of the node before the drag and drop relative to its old siblings */
125
- oldIndex: number;
126
- /** the target's parent after the drag and drop, or null if it is now a top-level node */
127
- newParent: LimbleTreeNode | null;
128
- /** the index of the node after the drag and drop relative to its new siblings */
129
- newIndex: number;
130
- }
131
- ```
132
-
133
- ### Drag Handles
134
-
135
- Adding the `limble-tree-handle` css class to an element in a node component will designate that element as the drag handle, making it so the node can only be dragged by clicking on that element.
136
-
137
- ### Pagination
138
-
139
- When the `listMode` option is set to true, the pagination API is made available. Pagination is accomplished using two of the inputs of the `limble-tree-root` component: the `itemsPerPage` input and the `page` input. These inputs will not do anything unless `listMode` is turned on. When in `listMode`, the list will split into pages, where each page contains `itemsPerPage` number of items. (Note that the last page may have fewer items than the `itemsPerPage` number.) Only one page will be displayed at a time. The `page` input indicates which page to show: When `page` is 1, the first page will display, and so on.
140
-
141
- ### Demo App
142
-
143
- A demo app can be run by following the instructions on our [github repo](https://github.com/LimbleCMMS/limble-tree).
144
-
145
- ## Issues, Feature Requests, Etc
146
-
147
- If you find an issue or you would like to see an improvement, you may create an "issue" or start a "discussion" on our [github repo](https://github.com/LimbleCMMS/limble-tree).
148
-
149
- We truly appreciate feedback; but keep in mind that we, the Limble team, built this library for our own needs, and requests from outside our organization may not always be a high priority.
1
+ # Limble Tree
2
+
3
+ This library is currently a work in progress. It may not be suitable for production environments yet.
4
+
5
+ ## Description
6
+
7
+ An Angular library for building visual tree structures. Built and used by the team at [Limble](https://limblecmms.com/);
8
+
9
+ Features:
10
+
11
+ - collapsibility
12
+ - drag-and-drop, both within a single tree and between trees.
13
+ - infinite tree depth
14
+ - hybrid trees with many different components
15
+
16
+ ## Installation
17
+
18
+ ```
19
+ npm install @limble/limble-tree
20
+ ```
21
+
22
+ ## Basic Usage
23
+
24
+ TODO
25
+
26
+ ## Collapsibility
27
+
28
+ TODO
29
+
30
+ ## Drag and Drop
31
+
32
+ TODO
33
+
34
+ ## Tree Events
35
+
36
+ TODO
37
+
38
+ - Drag Start
39
+ - Drop
40
+ - Drag End
41
+ - Prune
42
+ - Graft
@@ -0,0 +1,87 @@
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 { TreeError } from "../../errors";
5
+ import { DropzoneComponent } from "../dropzone/dropzone.component";
6
+ import { DragoverNoChangeDetectDirective } from "../../extras/drag-and-drop/dragover-no-change-detect";
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
+ if (this.contentContainer === undefined) {
22
+ throw new TreeError("Cannot get contentContainer");
23
+ }
24
+ if (this.contentToHost === undefined) {
25
+ throw new TreeError("'content' is a required input");
26
+ }
27
+ this.hostedContent = this.contentContainer.createComponent(this.contentToHost);
28
+ this.contentCreated.emit(this.hostedContent.instance);
29
+ if (this.dropzones === undefined) {
30
+ throw new Error("querylist not defined");
31
+ }
32
+ const inner = this.dropzones.get(0);
33
+ const lateral = this.dropzones.get(1);
34
+ if (inner === undefined || lateral == undefined) {
35
+ throw new Error("dropzones not defined");
36
+ }
37
+ merge(inner.dropped.pipe(map(() => "inner")), lateral.dropped.pipe(map(() => "lateral"))).subscribe(this.dropped);
38
+ this.hostedContent.changeDetectorRef.detectChanges();
39
+ }
40
+ getHostedContent() {
41
+ return this.hostedContent;
42
+ }
43
+ triggerChangeDetection() {
44
+ if (!NgZone.isInAngularZone()) {
45
+ this.appRef.tick();
46
+ }
47
+ }
48
+ dragoverHandler(event) {
49
+ const elementHeight = event.currentTarget.getBoundingClientRect().height;
50
+ if (event.offsetY < elementHeight / 2) {
51
+ this.showDropzones.emit("upper");
52
+ }
53
+ else {
54
+ this.showDropzones.emit("lower");
55
+ }
56
+ }
57
+ ngOnDestroy() {
58
+ //I'm not 100% sure why, but we have to remove any reference to the
59
+ //componentRef otherwise Angular will never release it for garbage
60
+ //collection.
61
+ this.hostedContent = undefined;
62
+ }
63
+ }
64
+ BranchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BranchComponent, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component });
65
+ BranchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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\"></dropzone>\n <div #branchesContainer></div>\n</div>\n<dropzone placement=\"lateral\" [hidden]=\"!showLateralDropzone\"></dropzone>\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]", inputs: ["dragoverEventThrottle"], outputs: ["dragoverNoChangeDetect"] }] });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BranchComponent, decorators: [{
67
+ type: Component,
68
+ 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\"></dropzone>\n <div #branchesContainer></div>\n</div>\n<dropzone placement=\"lateral\" [hidden]=\"!showLateralDropzone\"></dropzone>\n", styles: [".branches-container{margin-left:16px}\n"] }]
69
+ }], ctorParameters: function () { return [{ type: i0.ApplicationRef }]; }, propDecorators: { branchesContainer: [{
70
+ type: ViewChild,
71
+ args: ["branchesContainer", { read: ViewContainerRef }]
72
+ }], contentContainer: [{
73
+ type: ViewChild,
74
+ args: ["contentContainer", { read: ViewContainerRef }]
75
+ }], dropzones: [{
76
+ type: ViewChildren,
77
+ args: [DropzoneComponent]
78
+ }], contentToHost: [{
79
+ type: Input
80
+ }], contentCreated: [{
81
+ type: Output
82
+ }], showDropzones: [{
83
+ type: Output
84
+ }], dropped: [{
85
+ type: Output
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gvYnJhbmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gvYnJhbmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBR0osU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOztBQVN2RyxNQUFNLE9BQU8sZUFBZTtJQXNCekIsWUFBb0MsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFsQjFELHNCQUFpQixHQUFpQyxTQUFTLENBQUM7UUFFNUQscUJBQWdCLEdBQWlDLFNBQVMsQ0FBQztRQUMxQixjQUFTLEdBRXpCLFNBQVMsQ0FBQztRQUlSLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3RELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUU5RCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7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LFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRXhCLFNBQVM7c0JBQXpDLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUl0QixhQUFhO3NCQUFyQixLQUFLO2dCQUVhLGNBQWM7c0JBQWhDLE1BQU07Z0JBQ1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgIEFmdGVyVmlld0luaXQsXG4gICBBcHBsaWNhdGlvblJlZixcbiAgIENvbXBvbmVudCxcbiAgIENvbXBvbmVudFJlZixcbiAgIEV2ZW50RW1pdHRlcixcbiAgIElucHV0LFxuICAgTmdab25lLFxuICAgT25EZXN0cm95LFxuICAgT3V0cHV0LFxuICAgUXVlcnlMaXN0LFxuICAgVHlwZSxcbiAgIFZpZXdDaGlsZCxcbiAgIFZpZXdDaGlsZHJlbixcbiAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG1hcCwgbWVyZ2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgVHJlZUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgRHJvcHpvbmVDb21wb25lbnQgfSBmcm9tIFwiLi4vZHJvcHpvbmUvZHJvcHpvbmUuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBIb3N0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2hvc3QtY29tcG9uZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9ub2RlLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJhZ292ZXItbm8tY2hhbmdlLWRldGVjdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICBzZWxlY3RvcjogXCJicmFuY2hcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vYnJhbmNoLmNvbXBvbmVudC5odG1sXCIsXG4gICBzdHlsZVVybHM6IFtcIi4vYnJhbmNoLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHJvcHpvbmVDb21wb25lbnQsIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIEJyYW5jaENvbXBvbmVudDxUPlxuICAgaW1wbGVtZW50cyBOb2RlQ29tcG9uZW50LCBIb3N0Q29tcG9uZW50PFQ+LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgIEBWaWV3Q2hpbGQoXCJicmFuY2hlc0NvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgIGJyYW5jaGVzQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgQFZpZXdDaGlsZChcImNvbnRlbnRDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICBjb250ZW50Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgQFZpZXdDaGlsZHJlbihEcm9wem9uZUNvbXBvbmVudCkgZHJvcHpvbmVzOlxuICAgICAgfCBRdWVyeUxpc3Q8RHJvcHpvbmVDb21wb25lbnQ+XG4gICAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgQElucHV0KCkgY29udGVudFRvSG9zdD86IFR5cGU8VD47XG5cbiAgIEBPdXRwdXQoKSByZWFkb25seSBjb250ZW50Q3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgIEBPdXRwdXQoKSByZWFkb25seSBzaG93RHJvcHpvbmVzID0gbmV3IEV2ZW50RW1pdHRlcjxcInVwcGVyXCIgfCBcImxvd2VyXCI+KCk7XG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgZHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XCJpbm5lclwiIHwgXCJsYXRlcmFsXCI+KCk7XG5cbiAgIHB1YmxpYyBzaG93SW5uZXJEcm9wem9uZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgcHVibGljIHNob3dMYXRlcmFsRHJvcHpvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgcHJpdmF0ZSBob3N0ZWRDb250ZW50PzogQ29tcG9uZW50UmVmPFQ+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7fVxuXG4gICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY29udGVudENvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGdldCBjb250ZW50Q29udGFpbmVyXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29udGVudFRvSG9zdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiJ2NvbnRlbnQnIGlzIGEgcmVxdWlyZWQgaW5wdXRcIik7XG4gICAgICB9XG4gICAgICB0aGlzLmhvc3RlZENvbnRlbnQgPSB0aGlzLmNvbnRlbnRDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICAgdGhpcy5jb250ZW50VG9Ib3N0XG4gICAgICApO1xuICAgICAgdGhpcy5jb250ZW50Q3JlYXRlZC5lbWl0KHRoaXMuaG9zdGVkQ29udGVudC5pbnN0YW5jZSk7XG4gICAgICBpZiAodGhpcy5kcm9wem9uZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicXVlcnlsaXN0IG5vdCBkZWZpbmVkXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLmRyb3B6b25lcy5nZXQoMCk7XG4gICAgICBjb25zdCBsYXRlcmFsID0gdGhpcy5kcm9wem9uZXMuZ2V0KDEpO1xuICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQgfHwgbGF0ZXJhbCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImRyb3B6b25lcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgIH1cbiAgICAgIG1lcmdlKFxuICAgICAgICAgaW5uZXIuZHJvcHBlZC5waXBlKG1hcCgoKSA9PiBcImlubmVyXCIgYXMgY29uc3QpKSxcbiAgICAgICAgIGxhdGVyYWwuZHJvcHBlZC5waXBlKG1hcCgoKSA9PiBcImxhdGVyYWxcIiBhcyBjb25zdCkpXG4gICAgICApLnN1YnNjcmliZSh0aGlzLmRyb3BwZWQpO1xuICAgICAgdGhpcy5ob3N0ZWRDb250ZW50LmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cblxuICAgcHVibGljIGdldEhvc3RlZENvbnRlbnQoKTogQ29tcG9uZW50UmVmPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLmhvc3RlZENvbnRlbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyB0cmlnZ2VyQ2hhbmdlRGV0ZWN0aW9uKCk6IHZvaWQge1xuICAgICAgaWYgKCFOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJvdGVjdGVkIGRyYWdvdmVySGFuZGxlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gKFxuICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICBpZiAoZXZlbnQub2Zmc2V0WSA8IGVsZW1lbnRIZWlnaHQgLyAyKSB7XG4gICAgICAgICB0aGlzLnNob3dEcm9wem9uZXMuZW1pdChcInVwcGVyXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuc2hvd0Ryb3B6b25lcy5lbWl0KFwibG93ZXJcIik7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIC8vSSdtIG5vdCAxMDAlIHN1cmUgd2h5LCBidXQgd2UgaGF2ZSB0byByZW1vdmUgYW55IHJlZmVyZW5jZSB0byB0aGVcbiAgICAgIC8vY29tcG9uZW50UmVmIG90aGVyd2lzZSBBbmd1bGFyIHdpbGwgbmV2ZXIgcmVsZWFzZSBpdCBmb3IgZ2FyYmFnZVxuICAgICAgLy9jb2xsZWN0aW9uLlxuICAgICAgdGhpcy5ob3N0ZWRDb250ZW50ID0gdW5kZWZpbmVkO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAoZHJhZ292ZXJOb0NoYW5nZURldGVjdCk9XCJkcmFnb3ZlckhhbmRsZXIoJGV2ZW50KVwiPlxuICAgPGRpdiAjY29udGVudENvbnRhaW5lcj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImJyYW5jaGVzLWNvbnRhaW5lclwiPlxuICAgPGRyb3B6b25lIHBsYWNlbWVudD1cImlubmVyXCIgW2hpZGRlbl09XCIhc2hvd0lubmVyRHJvcHpvbmVcIj48L2Ryb3B6b25lPlxuICAgPGRpdiAjYnJhbmNoZXNDb250YWluZXI+PC9kaXY+XG48L2Rpdj5cbjxkcm9wem9uZSBwbGFjZW1lbnQ9XCJsYXRlcmFsXCIgW2hpZGRlbl09XCIhc2hvd0xhdGVyYWxEcm9wem9uZVwiPjwvZHJvcHpvbmU+XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
3
+ import { DragoverNoChangeDetectDirective } from "../../extras/drag-and-drop/dragover-no-change-detect";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class DropzoneComponent {
7
+ constructor() {
8
+ this.dropped = new EventEmitter();
9
+ this.active = false;
10
+ }
11
+ dragenterHandler() {
12
+ this.active = true;
13
+ }
14
+ dragleaveHandler() {
15
+ this.active = false;
16
+ }
17
+ dragoverHandler(event) {
18
+ event.preventDefault();
19
+ event.dataTransfer.dropEffect = "move";
20
+ }
21
+ dropHandler(event) {
22
+ this.dropped.emit(event);
23
+ }
24
+ }
25
+ DropzoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ DropzoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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:20px;margin:8px 0;transition:height .2s ease-out;animation:animation .2s ease-out}.dropzone.active{border-color:#289e49;border-width:2px;background-color:#d0e8d6;height:48px}@keyframes animation{0%{height:0px;opacity:0}to{height:20px;opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: DragoverNoChangeDetectDirective, selector: "[dragoverNoChangeDetect]", inputs: ["dragoverEventThrottle"], outputs: ["dragoverNoChangeDetect"] }] });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DropzoneComponent, decorators: [{
28
+ type: Component,
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:20px;margin:8px 0;transition:height .2s ease-out;animation:animation .2s ease-out}.dropzone.active{border-color:#289e49;border-width:2px;background-color:#d0e8d6;height:48px}@keyframes animation{0%{height:0px;opacity:0}to{height:20px;opacity:1}}\n"] }]
30
+ }], propDecorators: { placement: [{
31
+ type: Input
32
+ }], dropped: [{
33
+ type: Output
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3B6b25lL2Ryb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9kcm9wem9uZS9kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7O0FBU3ZHLE1BQU0sT0FBTyxpQkFBaUI7SUFQOUI7UUFTc0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFFakQsV0FBTSxHQUFZLEtBQUssQ0FBQztLQWtCcEM7SUFoQlMsZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFnQjtRQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDLFlBQTZCLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7OytHQXJCUyxpQkFBaUI7bUdBQWpCLGlCQUFpQix5SUNYOUIsdVBBUUEsc1lEQ2EsWUFBWSw2SEFBRSwrQkFBK0I7NEZBRTdDLGlCQUFpQjtrQkFQN0IsU0FBUztpQ0FDSyxJQUFJLFlBQ04sVUFBVSxXQUdYLENBQUMsWUFBWSxFQUFFLCtCQUErQixDQUFDOzhCQUcvQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNhLE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2V4dHJhcy9kcmFnLWFuZC1kcm9wL2RyYWdvdmVyLW5vLWNoYW5nZS1kZXRlY3RcIjtcblxuQENvbXBvbmVudCh7XG4gICBzdGFuZGFsb25lOiB0cnVlLFxuICAgc2VsZWN0b3I6IFwiZHJvcHpvbmVcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vZHJvcHpvbmUuY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi9kcm9wem9uZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIERyb3B6b25lQ29tcG9uZW50IHtcbiAgIEBJbnB1dCgpIHBsYWNlbWVudD86IFwiaW5uZXJcIiB8IFwibGF0ZXJhbFwiO1xuICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcblxuICAgcHJvdGVjdGVkIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICBwdWJsaWMgZHJhZ2VudGVySGFuZGxlcigpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgIH1cblxuICAgcHVibGljIGRyYWdsZWF2ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgfVxuXG4gICBwdWJsaWMgZHJhZ292ZXJIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAoZXZlbnQuZGF0YVRyYW5zZmVyIGFzIERhdGFUcmFuc2ZlcikuZHJvcEVmZmVjdCA9IFwibW92ZVwiO1xuICAgfVxuXG4gICBwdWJsaWMgZHJvcEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5kcm9wcGVkLmVtaXQoZXZlbnQpO1xuICAgfVxufVxuIiwiPGRpdlxuICAgY2xhc3M9XCJkcm9wem9uZVwiXG4gICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYWN0aXZlIH1cIlxuICAgKGRyYWdlbnRlcik9XCJkcmFnZW50ZXJIYW5kbGVyKClcIlxuICAgKGRyYWdsZWF2ZSk9XCJkcmFnbGVhdmVIYW5kbGVyKClcIlxuICAgKGRyYWdvdmVyTm9DaGFuZ2VEZXRlY3QpPVwiZHJhZ292ZXJIYW5kbGVyKCRldmVudClcIlxuICAgKGRyb3ApPVwiZHJvcEhhbmRsZXIoJGV2ZW50KVwiXG4+PC9kaXY+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC1jb21wb25lbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb21wb25lbnRzL2hvc3QtY29tcG9uZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBFdmVudEVtaXR0ZXIsIFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+IHtcbiAgIGNvbnRlbnRDcmVhdGVkOiBFdmVudEVtaXR0ZXI8VXNlcmxhbmRDb21wb25lbnQ+O1xuICAgY29udGVudFRvSG9zdD86IFR5cGU8VXNlcmxhbmRDb21wb25lbnQ+O1xuICAgZ2V0SG9zdGVkQ29udGVudDogKCkgPT4gQ29tcG9uZW50UmVmPFVzZXJsYW5kQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jb21wb25lbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb21wb25lbnRzL25vZGUtY29tcG9uZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbXBvbmVudCB7XG4gICBicmFuY2hlc0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcbiAgIHNob3dJbm5lckRyb3B6b25lOiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, EventEmitter, Output, ViewChild, ViewContainerRef } from "@angular/core";
3
+ import { DropzoneComponent } from "../dropzone/dropzone.component";
4
+ import * as i0 from "@angular/core";
5
+ export class RootComponent {
6
+ constructor() {
7
+ this.branchesContainer = undefined;
8
+ this.dropzone = undefined;
9
+ this.afterViewInit = new EventEmitter();
10
+ this.dropped = new EventEmitter();
11
+ this.showInnerDropzone = false;
12
+ }
13
+ ngAfterViewInit() {
14
+ this.afterViewInit.emit();
15
+ if (this.dropzone === undefined) {
16
+ throw new Error("dropzone is not defined");
17
+ }
18
+ this.dropzone.dropped.subscribe(this.dropped);
19
+ }
20
+ }
21
+ RootComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ RootComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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"] }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RootComponent, decorators: [{
24
+ type: Component,
25
+ 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"] }]
26
+ }], propDecorators: { branchesContainer: [{
27
+ type: ViewChild,
28
+ args: ["branchesContainer", { read: ViewContainerRef }]
29
+ }], dropzone: [{
30
+ type: ViewChild,
31
+ args: [DropzoneComponent]
32
+ }], afterViewInit: [{
33
+ type: Output
34
+ }], dropped: [{
35
+ type: Output
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvbXBvbmVudHMvcm9vdC9yb290LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29tcG9uZW50cy9yb290L3Jvb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQVVuRSxNQUFNLE9BQU8sYUFBYTtJQVAxQjtRQVNHLHNCQUFpQixHQUFpQyxTQUFTLENBQUM7UUFDOUIsYUFBUSxHQUNuQyxTQUFTLENBQUM7UUFFTSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0Msc0JBQWlCLEdBQVksS0FBSyxDQUFDO0tBUzVDO0lBUFMsZUFBZTtRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDOzsyR0FqQlMsYUFBYTsrRkFBYixhQUFhLG9PQUNpQixnQkFBZ0Isd0RBRTdDLGlCQUFpQixnREN0Qi9CLCtKQUlBLDhGRGFhLFlBQVksK0JBQUUsaUJBQWlCOzRGQUUvQixhQUFhO2tCQVB6QixTQUFTO2lDQUNLLElBQUksWUFDTixNQUFNLFdBR1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7OEJBSTFDLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFFNUIsUUFBUTtzQkFBckMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBR1QsYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgIEFmdGVyVmlld0luaXQsXG4gICBDb21wb25lbnQsXG4gICBFdmVudEVtaXR0ZXIsXG4gICBPdXRwdXQsXG4gICBWaWV3Q2hpbGQsXG4gICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gXCIuLi9kcm9wem9uZS9kcm9wem9uZS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5vZGVDb21wb25lbnQgfSBmcm9tIFwiLi4vbm9kZS1jb21wb25lbnQuaW50ZXJmYWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgIHNlbGVjdG9yOiBcInJvb3RcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vcm9vdC5jb21wb25lbnQuaHRtbFwiLFxuICAgc3R5bGVVcmxzOiBbXCIuL3Jvb3QuY29tcG9uZW50LnNjc3NcIl0sXG4gICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEcm9wem9uZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUm9vdENvbXBvbmVudCBpbXBsZW1lbnRzIE5vZGVDb21wb25lbnQsIEFmdGVyVmlld0luaXQge1xuICAgQFZpZXdDaGlsZChcImJyYW5jaGVzQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgYnJhbmNoZXNDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICBAVmlld0NoaWxkKERyb3B6b25lQ29tcG9uZW50KSBkcm9wem9uZTogRHJvcHpvbmVDb21wb25lbnQgfCB1bmRlZmluZWQgPVxuICAgICAgdW5kZWZpbmVkO1xuXG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgYWZ0ZXJWaWV3SW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgIEBPdXRwdXQoKSByZWFkb25seSBkcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICBwdWJsaWMgc2hvd0lubmVyRHJvcHpvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWZ0ZXJWaWV3SW5pdC5lbWl0KCk7XG4gICAgICBpZiAodGhpcy5kcm9wem9uZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkcm9wem9uZSBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZHJvcHpvbmUuZHJvcHBlZC5zdWJzY3JpYmUodGhpcy5kcm9wcGVkKTtcbiAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJicmFuY2hlcy1jb250YWluZXJcIj5cbiAgIDxkcm9wem9uZSBwbGFjZW1lbnQ9XCJpbm5lclwiIFtoaWRkZW5dPVwiIXNob3dJbm5lckRyb3B6b25lXCI+PC9kcm9wem9uZT5cbiAgIDxkaXYgI2JyYW5jaGVzQ29udGFpbmVyPjwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL2JyYW5jaC1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hPcHRpb25zPENvbXBvbmVudD4ge1xuICAgaW5wdXRCaW5kaW5ncz86IHtcbiAgICAgIFtLIGluIGtleW9mIENvbXBvbmVudF0/OiBDb21wb25lbnRbS107XG4gICB9O1xuICAgb3V0cHV0QmluZGluZ3M/OiB7XG4gICAgICBbSyBpbiBrZXlvZiBDb21wb25lbnRdPzogQ29tcG9uZW50W0tdIGV4dGVuZHMgRXZlbnRFbWl0dGVyPGluZmVyIFQ+XG4gICAgICAgICA/ICh2YWx1ZTogVCkgPT4gdm9pZFxuICAgICAgICAgOiBuZXZlcjtcbiAgIH07XG4gICBzdGFydENvbGxhcHNlZD86IGJvb2xlYW47XG4gICBtZXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGdWxsQnJhbmNoT3B0aW9uczxDb21wb25lbnQ+IGV4dGVuZHMgQnJhbmNoT3B0aW9uczxDb21wb25lbnQ+IHtcbiAgIGNvbXBvbmVudDogVHlwZTxDb21wb25lbnQ+O1xufVxuIl19
@@ -0,0 +1,17 @@
1
+ class Configuration {
2
+ constructor() {
3
+ this.configStorage = new Map();
4
+ this.configStorage = new Map();
5
+ }
6
+ setConfig(root, options) {
7
+ this.configStorage.set(root, options);
8
+ }
9
+ getConfig(root) {
10
+ return this.configStorage.get(root);
11
+ }
12
+ delete(root) {
13
+ this.configStorage.delete(root);
14
+ }
15
+ }
16
+ export const config = new Configuration();
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxhQUFhO0lBR2hCO1FBRmlCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFHcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxTQUFTLENBQUksSUFBaUIsRUFBRSxPQUFvQjtRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFTO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSDtBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJlZVJvb3QgfSBmcm9tIFwiLi4vdHJlZS1yb290L3RyZWUtcm9vdFwiO1xuaW1wb3J0IHsgVHJlZU9wdGlvbnMgfSBmcm9tIFwiLi90cmVlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5cbmNsYXNzIENvbmZpZ3VyYXRpb24ge1xuICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTdG9yYWdlID0gbmV3IE1hcDxUcmVlUm9vdDxhbnk+LCBUcmVlT3B0aW9ucz4oKTtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhpcy5jb25maWdTdG9yYWdlID0gbmV3IE1hcCgpO1xuICAgfVxuXG4gICBwdWJsaWMgc2V0Q29uZmlnPFQ+KHJvb3Q6IFRyZWVSb290PFQ+LCBvcHRpb25zOiBUcmVlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgdGhpcy5jb25maWdTdG9yYWdlLnNldChyb290LCBvcHRpb25zKTtcbiAgIH1cblxuICAgcHVibGljIGdldENvbmZpZyhyb290OiBhbnkpOiBUcmVlT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdTdG9yYWdlLmdldChyb290KTtcbiAgIH1cblxuICAgcHVibGljIGRlbGV0ZShyb290OiBhbnkpOiB2b2lkIHtcbiAgICAgIHRoaXMuY29uZmlnU3RvcmFnZS5kZWxldGUocm9vdCk7XG4gICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uL3RyZWUtb3B0aW9ucy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi4vdHJlZS1icmFuY2gvdHJlZS1icmFuY2hcIjtcbmltcG9ydCB7IFRyZWVSb290IH0gZnJvbSBcIi4uL3RyZWUtcm9vdC90cmVlLXJvb3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlT3B0aW9ucyB7XG4gICAvKipcbiAgICAqIEEgZnVuY3Rpb24gdG8gaW5kaWNhdGUgd2hldGhlciB0byBhbGxvdyBhIG5vZGUgdG8gYmUgZHJhZ2dlZC4gVGhlIG5vZGUgaW5cbiAgICAqIHF1ZXN0aW9uIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gYSBmdW5jdGlvbiB0aGF0IGFsd2F5cyByZXR1cm5zIHRydWUuIFRoaXNcbiAgICAqIGZ1bmN0aW9uIHJ1bnMgd2hlbiBEcmFnQW5kRHJvcFNlcnZpY2UuZHJhZ1N0YXJ0IHJ1bnMsIGFuZCBiZWZvcmUgdGhlIGJyYW5jaFxuICAgICogaXMgcHJ1bmVkIGZyb20gdGhlIHRyZWUuXG4gICAgKi9cbiAgIGFsbG93RHJhZ2dpbmc/OiA8VD4odHJlZUJyYW5jaDogVHJlZUJyYW5jaDxUPikgPT4gYm9vbGVhbjtcblxuICAgLyoqXG4gICAgKiBBIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc291cmNlTm9kZSBjYW4gYmUgZHJvcHBlZCBhdCBhIHBhcnRpY3VsYXIgbG9jYXRpb24uXG4gICAgKiBUaGUgc291cmNlTm9kZSwgdGhlIG5ldyBwcm9wb3NlZFBhcmVudCBmb3IgdGhlIHNvdXJjZU5vZGUsIGFuZCB0aGUgbmV3IHByb3Bvc2VkSW5kZXhcbiAgICAqIGZvciB0aGUgc291cmNlIG5vZGUgYXJlIHBhc3NlZCBpbi4gVGhpcyBmdW5jdGlvbiBydW5zIGp1c3QgYmVmb3JlIGRpc3BsYXlpbmcgYVxuICAgICogZmFtaWx5IG9mIGRyb3B6b25lcy5cbiAgICAqL1xuICAgYWxsb3dEcm9wPzogPFQ+KFxuICAgICAgc291cmNlTm9kZTogVHJlZUJyYW5jaDxUPixcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBUcmVlQnJhbmNoPFQ+IHwgVHJlZVJvb3Q8VD4sXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcbiAgICkgPT4gYm9vbGVhbjtcblxuICAgLyoqXG4gICAgKiBBIGZ1bmN0aW9uIHRvIGluZGljYXRlIHdoZXRoZXIgdG8gYWxsb3cgXCJuZXN0aW5nXCIgKHBsYWNpbmcgYSBicmFuY2ggb25lIGxldmVsXG4gICAgKiBkZWVwZXIgdGhhbiBpdHMgcGFyZW50KS4gVGhlIG5vZGUgaW4gcXVlc3Rpb24gaXMgcGFzc2VkIGluLiBEZWZhdWx0cyB0byBhIGZ1bmN0aW9uXG4gICAgKiB0aGF0IGFsd2F5cyByZXR1cm5zIHRydWUuIFRoaXMgZnVuY3Rpb24gcnVucyBqdXN0IGJlZm9yZSBkaXNwbGF5aW5nIGEgZmFtaWx5IG9mXG4gICAgKiBkcm9wem9uZXMuXG4gICAgKi9cbiAgIGFsbG93TmVzdGluZz86IDxUPih0cmVlQnJhbmNoOiBUcmVlQnJhbmNoPFQ+KSA9PiBib29sZWFuO1xuXG4gICAvKipcbiAgICAqIFRoZSBudW1iZXIgb2YgcGl4ZWxzIGVhY2ggbGV2ZWwgb2YgdGhlIHRyZWUgd2lsbCBiZSBpbmRlbnRlZCByZWxhdGl2ZSB0b1xuICAgICogaXRzIHBhcmVudC4gRGVmYXVsdHMgdG8gMTYuXG4gICAgKi9cbiAgIGluZGVudGF0aW9uPzogbnVtYmVyO1xuXG4gICAvKipcbiAgICAqIFdoZXRoZXIgYWxsIGJyYW5jaGVzIHNob3VsZCBzdGFydCBvdXQgaW4gYSBjb2xsYXBzZWQgc3RhdGUsIHNvIHRoYXQgb25seSBvbmVcbiAgICAqIGxldmVsIG9mIHRoZSB0cmVlIGlzIHZpc2libGUgYXQgZmlyc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICovXG4gICBzdGFydEFsbENvbGxhcHNlZD86IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from "./tree-service/tree.service";
2
+ export * from "./tree-root/tree-root";
3
+ export * from "./tree-branch/tree-branch";
4
+ export * from "./configuration/tree-options.interface";
5
+ export * from "./configuration/configuration";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1zZXJ2aWNlL3RyZWUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1yb290L3RyZWUtcm9vdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1icmFuY2gvdHJlZS1icmFuY2hcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ3VyYXRpb24vdHJlZS1vcHRpb25zLmludGVyZmFjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uXCI7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS9yZWxhdGlvbnNoaXAuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL25vZGUtY29tcG9uZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29udGFpbmVyVHJlZU5vZGUgfSBmcm9tIFwiLi4vc3RydWN0dXJlL2NvbnRhaW5lci10cmVlLW5vZGUuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlUmVsYXRpb25zaGlwIH0gZnJvbSBcIi4uL3N0cnVjdHVyZS90cmVlLXJlbGF0aW9uc2hpcC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi90cmVlLWJyYW5jaC90cmVlLWJyYW5jaFwiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbnNoaXA8VXNlcmxhbmRDb21wb25lbnQ+ID0gVHJlZVJlbGF0aW9uc2hpcDxcbiAgIENvbnRhaW5lclRyZWVOb2RlPFxuICAgICAgQ29tcG9uZW50UmVmPE5vZGVDb21wb25lbnQ+LFxuICAgICAgVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD5cbiAgID4sXG4gICBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PlxuPjtcbiJdfQ==