@ali-hm/angular-tree-component 12.0.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/css/angular-tree-component.css +84 -0
  4. package/esm2020/ali-hm-angular-tree-component.mjs +5 -0
  5. package/esm2020/lib/angular-tree-component.module.mjs +100 -0
  6. package/esm2020/lib/components/loading.component.mjs +32 -0
  7. package/esm2020/lib/components/tree-node-checkbox.component.mjs +34 -0
  8. package/esm2020/lib/components/tree-node-collection.component.mjs +284 -0
  9. package/esm2020/lib/components/tree-node-content.component.mjs +32 -0
  10. package/esm2020/lib/components/tree-node-drop-slot.component.mjs +39 -0
  11. package/esm2020/lib/components/tree-node-expander.component.mjs +43 -0
  12. package/esm2020/lib/components/tree-node-wrapper.component.mjs +81 -0
  13. package/esm2020/lib/components/tree-viewport.component.mjs +66 -0
  14. package/esm2020/lib/components/tree.component.mjs +186 -0
  15. package/esm2020/lib/constants/events.mjs +20 -0
  16. package/esm2020/lib/constants/keys.mjs +10 -0
  17. package/esm2020/lib/defs/api.mjs +2 -0
  18. package/esm2020/lib/directives/tree-animate-open.directive.mjs +101 -0
  19. package/esm2020/lib/directives/tree-drag.directive.mjs +65 -0
  20. package/esm2020/lib/directives/tree-drop.directive.mjs +127 -0
  21. package/esm2020/lib/mobx-angular/mobx-proxy.mjs +17 -0
  22. package/esm2020/lib/mobx-angular/tree-mobx-autorun.directive.mjs +40 -0
  23. package/esm2020/lib/models/tree-dragged-element.model.mjs +25 -0
  24. package/esm2020/lib/models/tree-node.model.mjs +390 -0
  25. package/esm2020/lib/models/tree-options.model.mjs +150 -0
  26. package/esm2020/lib/models/tree-virtual-scroll.model.mjs +197 -0
  27. package/esm2020/lib/models/tree.model.mjs +546 -0
  28. package/esm2020/public-api.mjs +5 -0
  29. package/fesm2015/ali-hm-angular-tree-component.mjs +2511 -0
  30. package/fesm2015/ali-hm-angular-tree-component.mjs.map +1 -0
  31. package/fesm2020/ali-hm-angular-tree-component.mjs +2497 -0
  32. package/fesm2020/ali-hm-angular-tree-component.mjs.map +1 -0
  33. package/index.d.ts +5 -0
  34. package/lib/angular-tree-component.module.d.ts +43 -0
  35. package/lib/components/loading.component.d.ts +9 -0
  36. package/lib/components/tree-node-checkbox.component.d.ts +7 -0
  37. package/lib/components/tree-node-collection.component.d.ts +34 -0
  38. package/lib/components/tree-node-content.component.d.ts +10 -0
  39. package/lib/components/tree-node-drop-slot.component.d.ts +10 -0
  40. package/lib/components/tree-node-expander.component.d.ts +7 -0
  41. package/lib/components/tree-node-wrapper.component.d.ts +9 -0
  42. package/lib/components/tree-viewport.component.d.ts +17 -0
  43. package/lib/components/tree.component.d.ts +47 -0
  44. package/lib/constants/events.d.ts +19 -0
  45. package/lib/constants/keys.d.ts +9 -0
  46. package/lib/defs/api.d.ts +611 -0
  47. package/lib/directives/tree-animate-open.directive.d.ts +20 -0
  48. package/lib/directives/tree-drag.directive.d.ts +21 -0
  49. package/lib/directives/tree-drop.directive.d.ts +33 -0
  50. package/lib/mobx-angular/mobx-proxy.d.ts +7 -0
  51. package/lib/mobx-angular/tree-mobx-autorun.directive.d.ts +17 -0
  52. package/lib/models/tree-dragged-element.model.d.ts +9 -0
  53. package/lib/models/tree-node.model.d.ts +83 -0
  54. package/lib/models/tree-options.model.d.ts +77 -0
  55. package/lib/models/tree-virtual-scroll.model.d.ts +27 -0
  56. package/lib/models/tree.model.d.ts +91 -0
  57. package/package.json +66 -0
  58. package/public-api.d.ts +1 -0
  59. package/src/lib/angular-tree-component.css +84 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Circlon Group
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # angular tree component
2
+ This is a fork of [@circlon/angular-tree-component](https://github.com/CirclonGroup/angular-tree-component).
3
+ Since it appears that the original project has been abandoned, I have decided to take on its development and ensure compatibility with Ivy and newer versions of Angular.
4
+ ## Getting started
5
+
6
+ Install `angular-tree-component`:
7
+
8
+ ```npm install @ali-hm/angular-tree-component```
9
+
10
+ Import `TreeModule`:
11
+
12
+ ```
13
+ import { TreeModule } from '@ali-hm/angular-tree-component';
14
+
15
+ @NgModule({
16
+ declarations: [AppComponent],
17
+ imports: [TreeModule],
18
+ bootstrap: [AppComponent]
19
+ })
20
+ export class AppModule {}
21
+ ```
22
+
23
+ Add css to `styles.scss` or include in `angular.json`:
24
+
25
+ ```
26
+ @import '~@ali-hm/angular-tree-component/css/angular-tree-component.css';
27
+ ```
28
+
29
+ ## Docs, Demos & More
30
+
31
+ ## Support
32
+
33
+ ## Angular supported version
34
+
35
+ angular-tree-component supports angular 14 and above, and AoT compilation.
36
+
37
+ ## Contributing
38
+
39
+
@@ -0,0 +1,84 @@
1
+ .tree-children.tree-children-no-padding { padding-left: 0 }
2
+ .tree-children { padding-left: 20px; overflow: hidden }
3
+ .node-drop-slot { display: block; height: 2px }
4
+ .node-drop-slot.is-dragging-over { background: #ddffee; height: 20px; border: 2px dotted #888; }
5
+ .toggle-children-wrapper-expanded .toggle-children { transform: rotate(90deg) }
6
+ .toggle-children-wrapper-collapsed .toggle-children { transform: rotate(0); }
7
+ .toggle-children-wrapper {
8
+ padding: 2px 3px 5px 1px;
9
+ }
10
+ /* tslint:disable */
11
+ .toggle-children {
12
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABAhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzRkRFQjcxODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzRkRFQjcwODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTk5NzA1OGEtZDI3OC00NDZkLWE4ODgtNGM4MGQ4YWI1NzNmIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzRkZmQxMGMtY2NlNS0xMTc4LWE5OGQtY2NkZmM5ODk5YWYwIi8+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Z2x5cGhpY29uczwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5iogFwAAAGhJREFUeNpiYGBgKABigf///zOQg0EARH4A4gZyDIIZ8B/JoAJKDIDhB0CcQIkBRBtEyABkgxwoMQCGD6AbRKoBGAYxQgXIBRuZGKgAKPIC3QLxArnRSHZCIjspk52ZKMrOFBUoAAEGAKnq593MQAZtAAAAAElFTkSuQmCC');
13
+ height: 8px;
14
+ width: 9px;
15
+ background-size: contain;
16
+ display: inline-block;
17
+ position: relative;
18
+ top: 1px;
19
+ background-repeat: no-repeat;
20
+ background-position: center;
21
+ }
22
+ .toggle-children-placeholder {
23
+ display: inline-block;
24
+ height: 10px;
25
+ width: 10px;
26
+ position: relative;
27
+ top: 1px;
28
+ padding-right: 3px;
29
+ }
30
+ .node-content-wrapper {
31
+ display: inline-block;
32
+ padding: 2px 5px;
33
+ border-radius: 2px;
34
+ transition: background-color .15s,box-shadow .15s;
35
+ }
36
+ .node-wrapper {display: flex; align-items: flex-start;}
37
+ .node-content-wrapper-active,
38
+ .node-content-wrapper.node-content-wrapper-active:hover,
39
+ .node-content-wrapper-active.node-content-wrapper-focused {
40
+ background: #beebff;
41
+ }
42
+ .node-content-wrapper-focused { background: #e7f4f9 }
43
+ .node-content-wrapper:hover { background: #f7fbff }
44
+ .node-content-wrapper-active, .node-content-wrapper-focused, .node-content-wrapper:hover {
45
+ box-shadow: inset 0 0 1px #999;
46
+ }
47
+ .node-content-wrapper.is-dragging-over { background: #ddffee; box-shadow: inset 0 0 1px #999; }
48
+ .node-content-wrapper.is-dragging-over-disabled { opacity: 0.5 }
49
+
50
+ tree-viewport {
51
+ -webkit-tap-highlight-color: transparent;
52
+ height: 100%;
53
+ overflow: auto;
54
+ display: block;
55
+ }
56
+ .tree-children { padding-left: 20px }
57
+ .empty-tree-drop-slot .node-drop-slot { height: 20px; min-width: 100px }
58
+ .angular-tree-component {
59
+ width: 100%;
60
+ position:relative;
61
+ display: inline-block;
62
+ cursor: pointer;
63
+ -webkit-touch-callout: none; /* iOS Safari */
64
+ -webkit-user-select: none; /* Chrome/Safari/Opera */
65
+ -khtml-user-select: none; /* Konqueror */
66
+ -moz-user-select: none; /* Firefox */
67
+ -ms-user-select: none; /* IE/Edge */
68
+ user-select: none; /* non-prefixed version, currently not supported by any browser */
69
+ }
70
+
71
+ tree-root .angular-tree-component-rtl {
72
+ direction: rtl;
73
+ }
74
+ tree-root .angular-tree-component-rtl .toggle-children-wrapper-collapsed .toggle-children {
75
+ transform: rotate(180deg) !important;
76
+ }
77
+ tree-root .angular-tree-component-rtl .tree-children {
78
+ padding-right: 20px;
79
+ padding-left: 0;
80
+ }
81
+
82
+ tree-node-checkbox {
83
+ padding: 1px;
84
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpLWhtLWFuZ3VsYXItdHJlZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRyZWUtY29tcG9uZW50L3NyYy9hbGktaG0tYW5ndWxhci10cmVlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,100 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TreeMobxAutorunDirective } from './mobx-angular/tree-mobx-autorun.directive';
4
+ import { TREE_ACTIONS } from './models/tree-options.model';
5
+ import { KEYS } from './constants/keys';
6
+ import { TreeModel } from './models/tree.model';
7
+ import { TreeNode } from './models/tree-node.model';
8
+ import { TreeDraggedElement } from './models/tree-dragged-element.model';
9
+ import { TreeVirtualScroll } from './models/tree-virtual-scroll.model';
10
+ import { LoadingComponent } from './components/loading.component';
11
+ import { TreeComponent } from './components/tree.component';
12
+ import { TreeNodeComponent } from './components/tree-node-collection.component';
13
+ import { TreeNodeContent } from './components/tree-node-content.component';
14
+ import { TreeNodeDropSlot } from './components/tree-node-drop-slot.component';
15
+ import { TreeNodeExpanderComponent } from './components/tree-node-expander.component';
16
+ import { TreeNodeChildrenComponent } from './components/tree-node-collection.component';
17
+ import { TreeNodeCollectionComponent } from './components/tree-node-collection.component';
18
+ import { TreeNodeWrapperComponent } from './components/tree-node-wrapper.component';
19
+ import { TreeViewportComponent } from './components/tree-viewport.component';
20
+ import { TreeNodeCheckboxComponent } from './components/tree-node-checkbox.component';
21
+ import { TreeDropDirective } from './directives/tree-drop.directive';
22
+ import { TreeDragDirective } from './directives/tree-drag.directive';
23
+ import { TreeAnimateOpenDirective } from './directives/tree-animate-open.directive';
24
+ import * as i0 from "@angular/core";
25
+ export class TreeModule {
26
+ }
27
+ /** @nocollapse */ TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
+ /** @nocollapse */ TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: TreeModule, declarations: [TreeComponent,
29
+ TreeNodeComponent,
30
+ TreeNodeContent,
31
+ LoadingComponent,
32
+ TreeDropDirective,
33
+ TreeDragDirective,
34
+ TreeNodeExpanderComponent,
35
+ TreeNodeChildrenComponent,
36
+ TreeNodeDropSlot,
37
+ TreeNodeCollectionComponent,
38
+ TreeViewportComponent,
39
+ TreeNodeWrapperComponent,
40
+ TreeNodeCheckboxComponent,
41
+ TreeAnimateOpenDirective,
42
+ TreeMobxAutorunDirective], imports: [CommonModule], exports: [TreeComponent,
43
+ TreeNodeComponent,
44
+ TreeNodeContent,
45
+ LoadingComponent,
46
+ TreeDropDirective,
47
+ TreeDragDirective,
48
+ TreeNodeExpanderComponent,
49
+ TreeNodeChildrenComponent,
50
+ TreeNodeDropSlot,
51
+ TreeNodeCollectionComponent,
52
+ TreeViewportComponent,
53
+ TreeNodeWrapperComponent,
54
+ TreeNodeCheckboxComponent,
55
+ TreeAnimateOpenDirective,
56
+ TreeMobxAutorunDirective] });
57
+ /** @nocollapse */ TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeModule, imports: [CommonModule] });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeModule, decorators: [{
59
+ type: NgModule,
60
+ args: [{
61
+ declarations: [
62
+ TreeComponent,
63
+ TreeNodeComponent,
64
+ TreeNodeContent,
65
+ LoadingComponent,
66
+ TreeDropDirective,
67
+ TreeDragDirective,
68
+ TreeNodeExpanderComponent,
69
+ TreeNodeChildrenComponent,
70
+ TreeNodeDropSlot,
71
+ TreeNodeCollectionComponent,
72
+ TreeViewportComponent,
73
+ TreeNodeWrapperComponent,
74
+ TreeNodeCheckboxComponent,
75
+ TreeAnimateOpenDirective,
76
+ TreeMobxAutorunDirective
77
+ ],
78
+ exports: [
79
+ TreeComponent,
80
+ TreeNodeComponent,
81
+ TreeNodeContent,
82
+ LoadingComponent,
83
+ TreeDropDirective,
84
+ TreeDragDirective,
85
+ TreeNodeExpanderComponent,
86
+ TreeNodeChildrenComponent,
87
+ TreeNodeDropSlot,
88
+ TreeNodeCollectionComponent,
89
+ TreeViewportComponent,
90
+ TreeNodeWrapperComponent,
91
+ TreeNodeCheckboxComponent,
92
+ TreeAnimateOpenDirective,
93
+ TreeMobxAutorunDirective
94
+ ],
95
+ imports: [CommonModule],
96
+ providers: []
97
+ }]
98
+ }] });
99
+ export { TreeModel, TreeNode, TreeDraggedElement, TreeVirtualScroll, TREE_ACTIONS, KEYS, LoadingComponent, TreeAnimateOpenDirective, TreeComponent, TreeNodeComponent, TreeNodeWrapperComponent, TreeNodeContent, TreeDropDirective, TreeDragDirective, TreeNodeExpanderComponent, TreeNodeChildrenComponent, TreeNodeDropSlot, TreeNodeCollectionComponent, TreeViewportComponent, TreeNodeCheckboxComponent, TreeMobxAutorunDirective };
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10cmVlLWNvbXBvbmVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRyZWUtY29tcG9uZW50L3NyYy9saWIvYW5ndWxhci10cmVlLWNvbXBvbmVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFdEYsT0FBTyxFQUdMLFlBQVksRUFDYixNQUFNLDZCQUE2QixDQUFDO0FBT3JDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBd0NwRixNQUFNLE9BQU8sVUFBVTs7MEhBQVYsVUFBVTsySEFBVixVQUFVLGlCQXBDbkIsYUFBYTtRQUNiLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIseUJBQXlCO1FBQ3pCLHlCQUF5QjtRQUN6QixnQkFBZ0I7UUFDaEIsMkJBQTJCO1FBQzNCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4Qix3QkFBd0IsYUFtQmhCLFlBQVksYUFoQnBCLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLHlCQUF5QjtRQUN6Qix5QkFBeUI7UUFDekIsZ0JBQWdCO1FBQ2hCLDJCQUEyQjtRQUMzQixxQkFBcUI7UUFDckIsd0JBQXdCO1FBQ3hCLHlCQUF5QjtRQUN6Qix3QkFBd0I7UUFDeEIsd0JBQXdCOzJIQUtmLFVBQVUsWUFIWCxZQUFZOzJGQUdYLFVBQVU7a0JBdEN0QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQix5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIsZ0JBQWdCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIseUJBQXlCO3dCQUN6Qix5QkFBeUI7d0JBQ3pCLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixxQkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZDs7QUFHRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBRWpCLFlBQVksRUFDWixJQUFJLEVBS0osZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGdCQUFnQixFQUNoQiwyQkFBMkIsRUFDM0IscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUV6Qix3QkFBd0IsRUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyZWVNb2J4QXV0b3J1bkRpcmVjdGl2ZSB9IGZyb20gJy4vbW9ieC1hbmd1bGFyL3RyZWUtbW9ieC1hdXRvcnVuLmRpcmVjdGl2ZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIElBY3Rpb25IYW5kbGVyLFxyXG4gIElBY3Rpb25NYXBwaW5nLFxyXG4gIFRSRUVfQUNUSU9OU1xyXG59IGZyb20gJy4vbW9kZWxzL3RyZWUtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgSUFsbG93RHJhZ0ZuLFxyXG4gIElBbGxvd0Ryb3BGbixcclxuICBJVHJlZU9wdGlvbnMsXHJcbiAgSVRyZWVTdGF0ZVxyXG59IGZyb20gJy4vZGVmcy9hcGknO1xyXG5pbXBvcnQgeyBLRVlTIH0gZnJvbSAnLi9jb25zdGFudHMva2V5cyc7XHJcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3RyZWUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vbW9kZWxzL3RyZWUtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVEcmFnZ2VkRWxlbWVudCB9IGZyb20gJy4vbW9kZWxzL3RyZWUtZHJhZ2dlZC1lbGVtZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZVZpcnR1YWxTY3JvbGwgfSBmcm9tICcuL21vZGVscy90cmVlLXZpcnR1YWwtc2Nyb2xsLm1vZGVsJztcclxuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2FkaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLW5vZGUtY29sbGVjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZUNvbnRlbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS1ub2RlLWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZU5vZGVEcm9wU2xvdCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLW5vZGUtZHJvcC1zbG90LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlRXhwYW5kZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS1ub2RlLWV4cGFuZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlQ2hpbGRyZW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS1ub2RlLWNvbGxlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZU5vZGVDb2xsZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtbm9kZS1jb2xsZWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLW5vZGUtd3JhcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld3BvcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS12aWV3cG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtbm9kZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlRHJvcERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90cmVlLWRyb3AuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJlZURyYWdEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdHJlZS1kcmFnLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyZWVBbmltYXRlT3BlbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90cmVlLWFuaW1hdGUtb3Blbi5kaXJlY3RpdmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBUcmVlTm9kZUNvbXBvbmVudCxcclxuICAgIFRyZWVOb2RlQ29udGVudCxcclxuICAgIExvYWRpbmdDb21wb25lbnQsXHJcbiAgICBUcmVlRHJvcERpcmVjdGl2ZSxcclxuICAgIFRyZWVEcmFnRGlyZWN0aXZlLFxyXG4gICAgVHJlZU5vZGVFeHBhbmRlckNvbXBvbmVudCxcclxuICAgIFRyZWVOb2RlQ2hpbGRyZW5Db21wb25lbnQsXHJcbiAgICBUcmVlTm9kZURyb3BTbG90LFxyXG4gICAgVHJlZU5vZGVDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgVHJlZVZpZXdwb3J0Q29tcG9uZW50LFxyXG4gICAgVHJlZU5vZGVXcmFwcGVyQ29tcG9uZW50LFxyXG4gICAgVHJlZU5vZGVDaGVja2JveENvbXBvbmVudCxcclxuICAgIFRyZWVBbmltYXRlT3BlbkRpcmVjdGl2ZSxcclxuICAgIFRyZWVNb2J4QXV0b3J1bkRpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgVHJlZUNvbXBvbmVudCxcclxuICAgIFRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgVHJlZU5vZGVDb250ZW50LFxyXG4gICAgTG9hZGluZ0NvbXBvbmVudCxcclxuICAgIFRyZWVEcm9wRGlyZWN0aXZlLFxyXG4gICAgVHJlZURyYWdEaXJlY3RpdmUsXHJcbiAgICBUcmVlTm9kZUV4cGFuZGVyQ29tcG9uZW50LFxyXG4gICAgVHJlZU5vZGVDaGlsZHJlbkNvbXBvbmVudCxcclxuICAgIFRyZWVOb2RlRHJvcFNsb3QsXHJcbiAgICBUcmVlTm9kZUNvbGxlY3Rpb25Db21wb25lbnQsXHJcbiAgICBUcmVlVmlld3BvcnRDb21wb25lbnQsXHJcbiAgICBUcmVlTm9kZVdyYXBwZXJDb21wb25lbnQsXHJcbiAgICBUcmVlTm9kZUNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgVHJlZUFuaW1hdGVPcGVuRGlyZWN0aXZlLFxyXG4gICAgVHJlZU1vYnhBdXRvcnVuRGlyZWN0aXZlXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBwcm92aWRlcnM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlTW9kdWxlIHt9XHJcblxyXG5leHBvcnQge1xyXG4gIFRyZWVNb2RlbCxcclxuICBUcmVlTm9kZSxcclxuICBUcmVlRHJhZ2dlZEVsZW1lbnQsXHJcbiAgVHJlZVZpcnR1YWxTY3JvbGwsXHJcbiAgSVRyZWVPcHRpb25zLFxyXG4gIFRSRUVfQUNUSU9OUyxcclxuICBLRVlTLFxyXG4gIElBY3Rpb25NYXBwaW5nLFxyXG4gIElBY3Rpb25IYW5kbGVyLFxyXG4gIElBbGxvd0Ryb3BGbixcclxuICBJQWxsb3dEcmFnRm4sXHJcbiAgTG9hZGluZ0NvbXBvbmVudCxcclxuICBUcmVlQW5pbWF0ZU9wZW5EaXJlY3RpdmUsXHJcbiAgVHJlZUNvbXBvbmVudCxcclxuICBUcmVlTm9kZUNvbXBvbmVudCxcclxuICBUcmVlTm9kZVdyYXBwZXJDb21wb25lbnQsXHJcbiAgVHJlZU5vZGVDb250ZW50LFxyXG4gIFRyZWVEcm9wRGlyZWN0aXZlLFxyXG4gIFRyZWVEcmFnRGlyZWN0aXZlLFxyXG4gIFRyZWVOb2RlRXhwYW5kZXJDb21wb25lbnQsXHJcbiAgVHJlZU5vZGVDaGlsZHJlbkNvbXBvbmVudCxcclxuICBUcmVlTm9kZURyb3BTbG90LFxyXG4gIFRyZWVOb2RlQ29sbGVjdGlvbkNvbXBvbmVudCxcclxuICBUcmVlVmlld3BvcnRDb21wb25lbnQsXHJcbiAgVHJlZU5vZGVDaGVja2JveENvbXBvbmVudCxcclxuICBJVHJlZVN0YXRlLFxyXG4gIFRyZWVNb2J4QXV0b3J1bkRpcmVjdGl2ZVxyXG59O1xyXG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class LoadingComponent {
5
+ }
6
+ /** @nocollapse */ LoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ /** @nocollapse */ LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoadingComponent, selector: "tree-loading-component", inputs: { template: "template", node: "node" }, ngImport: i0, template: `
8
+ <span *ngIf="!template">loading...</span>
9
+ <ng-container
10
+ [ngTemplateOutlet]="template"
11
+ [ngTemplateOutletContext]="{ $implicit: node }">
12
+ </ng-container>
13
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, decorators: [{
15
+ type: Component,
16
+ args: [{
17
+ encapsulation: ViewEncapsulation.None,
18
+ selector: 'tree-loading-component',
19
+ template: `
20
+ <span *ngIf="!template">loading...</span>
21
+ <ng-container
22
+ [ngTemplateOutlet]="template"
23
+ [ngTemplateOutletContext]="{ $implicit: node }">
24
+ </ng-container>
25
+ `,
26
+ }]
27
+ }], propDecorators: { template: [{
28
+ type: Input
29
+ }], node: [{
30
+ type: Input
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRyZWUtY29tcG9uZW50L3NyYy9saWIvY29tcG9uZW50cy9sb2FkaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBY2pGLE1BQU0sT0FBTyxnQkFBZ0I7O2dJQUFoQixnQkFBZ0I7b0hBQWhCLGdCQUFnQiw4R0FSakI7Ozs7OztHQU1UOzJGQUVVLGdCQUFnQjtrQkFYNUIsU0FBUzttQkFBQztvQkFDVCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFOzs7Ozs7R0FNVDtpQkFDRjs4QkFFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uL21vZGVscy90cmVlLW5vZGUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBzZWxlY3RvcjogJ3RyZWUtbG9hZGluZy1jb21wb25lbnQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8c3BhbiAqbmdJZj1cIiF0ZW1wbGF0ZVwiPmxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2FkaW5nQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBub2RlOiBUcmVlTm9kZTtcclxufVxyXG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../mobx-angular/tree-mobx-autorun.directive";
4
+ export class TreeNodeCheckboxComponent {
5
+ }
6
+ /** @nocollapse */ TreeNodeCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ /** @nocollapse */ TreeNodeCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeNodeCheckboxComponent, selector: "tree-node-checkbox", inputs: { node: "node" }, ngImport: i0, template: `
8
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
9
+ <input
10
+ class="tree-node-checkbox"
11
+ type="checkbox"
12
+ (click)="node.mouseAction('checkboxClick', $event)"
13
+ [checked]="node.isSelected"
14
+ [indeterminate]="node.isPartiallySelected"
15
+ />
16
+ </ng-container>
17
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.TreeMobxAutorunDirective, selector: "[treeMobxAutorun]", inputs: ["treeMobxAutorun"] }], encapsulation: i0.ViewEncapsulation.None });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeCheckboxComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'tree-node-checkbox', encapsulation: ViewEncapsulation.None, template: `
21
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
22
+ <input
23
+ class="tree-node-checkbox"
24
+ type="checkbox"
25
+ (click)="node.mouseAction('checkboxClick', $event)"
26
+ [checked]="node.isSelected"
27
+ [indeterminate]="node.isPartiallySelected"
28
+ />
29
+ </ng-container>
30
+ ` }]
31
+ }], propDecorators: { node: [{
32
+ type: Input
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdHJlZS1jb21wb25lbnQvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtbm9kZS1jaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQW1CcEUsTUFBTSxPQUFPLHlCQUF5Qjs7eUlBQXpCLHlCQUF5Qjs2SEFBekIseUJBQXlCLG9GQVoxQjs7Ozs7Ozs7OztHQVVUOzJGQUVVLHlCQUF5QjtrQkFoQnJDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUNmLGlCQUFpQixDQUFDLElBQUksWUFFM0I7Ozs7Ozs7Ozs7R0FVVDs4QkFHUSxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uL21vZGVscy90cmVlLW5vZGUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cmVlLW5vZGUtY2hlY2tib3gnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgc3R5bGVzOiBbXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG5nLWNvbnRhaW5lciAqdHJlZU1vYnhBdXRvcnVuPVwieyBkb250RGV0YWNoOiB0cnVlIH1cIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUtY2hlY2tib3hcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGUubW91c2VBY3Rpb24oJ2NoZWNrYm94Q2xpY2snLCAkZXZlbnQpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJub2RlLmlzU2VsZWN0ZWRcIlxyXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cIm5vZGUuaXNQYXJ0aWFsbHlTZWxlY3RlZFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlTm9kZUNoZWNrYm94Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBub2RlOiBUcmVlTm9kZTtcclxufVxyXG4iXX0=
@@ -0,0 +1,284 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
8
+ import { reaction } from 'mobx';
9
+ import { observable, computed, action } from '../mobx-angular/mobx-proxy';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "./loading.component";
13
+ import * as i3 from "../directives/tree-animate-open.directive";
14
+ import * as i4 from "../mobx-angular/tree-mobx-autorun.directive";
15
+ import * as i5 from "./tree-node-drop-slot.component";
16
+ import * as i6 from "./tree-node-wrapper.component";
17
+ export class TreeNodeChildrenComponent {
18
+ }
19
+ /** @nocollapse */ TreeNodeChildrenComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeChildrenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ /** @nocollapse */ TreeNodeChildrenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeNodeChildrenComponent, selector: "tree-node-children", inputs: { node: "node", templates: "templates" }, ngImport: i0, template: `
21
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
22
+ <div
23
+ [class.tree-children]="true"
24
+ [class.tree-children-no-padding]="node.options.levelPadding"
25
+ *treeAnimateOpen="
26
+ node.isExpanded;
27
+ speed: node.options.animateSpeed;
28
+ acceleration: node.options.animateAcceleration;
29
+ enabled: node.options.animateExpand
30
+ "
31
+ >
32
+ <tree-node-collection
33
+ *ngIf="node.children"
34
+ [nodes]="node.children"
35
+ [templates]="templates"
36
+ [treeModel]="node.treeModel"
37
+ >
38
+ </tree-node-collection>
39
+ <tree-loading-component
40
+ [style.padding-left]="node.getNodePadding()"
41
+ class="tree-node-loading"
42
+ *ngIf="!node.children"
43
+ [template]="templates.loadingTemplate"
44
+ [node]="node"
45
+ ></tree-loading-component>
46
+ </div>
47
+ </ng-container>
48
+ `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return i2.LoadingComponent; }), selector: "tree-loading-component", inputs: ["template", "node"] }, { kind: "component", type: i0.forwardRef(function () { return TreeNodeCollectionComponent; }), selector: "tree-node-collection", inputs: ["nodes", "treeModel", "templates"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.TreeAnimateOpenDirective; }), selector: "[treeAnimateOpen]", inputs: ["treeAnimateOpenSpeed", "treeAnimateOpenAcceleration", "treeAnimateOpenEnabled", "treeAnimateOpen"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.TreeMobxAutorunDirective; }), selector: "[treeMobxAutorun]", inputs: ["treeMobxAutorun"] }], encapsulation: i0.ViewEncapsulation.None });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeChildrenComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'tree-node-children', encapsulation: ViewEncapsulation.None, template: `
52
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
53
+ <div
54
+ [class.tree-children]="true"
55
+ [class.tree-children-no-padding]="node.options.levelPadding"
56
+ *treeAnimateOpen="
57
+ node.isExpanded;
58
+ speed: node.options.animateSpeed;
59
+ acceleration: node.options.animateAcceleration;
60
+ enabled: node.options.animateExpand
61
+ "
62
+ >
63
+ <tree-node-collection
64
+ *ngIf="node.children"
65
+ [nodes]="node.children"
66
+ [templates]="templates"
67
+ [treeModel]="node.treeModel"
68
+ >
69
+ </tree-node-collection>
70
+ <tree-loading-component
71
+ [style.padding-left]="node.getNodePadding()"
72
+ class="tree-node-loading"
73
+ *ngIf="!node.children"
74
+ [template]="templates.loadingTemplate"
75
+ [node]="node"
76
+ ></tree-loading-component>
77
+ </div>
78
+ </ng-container>
79
+ ` }]
80
+ }], propDecorators: { node: [{
81
+ type: Input
82
+ }], templates: [{
83
+ type: Input
84
+ }] } });
85
+ export class TreeNodeCollectionComponent {
86
+ constructor() {
87
+ this._dispose = [];
88
+ }
89
+ get nodes() {
90
+ return this._nodes;
91
+ }
92
+ set nodes(nodes) {
93
+ this.setNodes(nodes);
94
+ }
95
+ get marginTop() {
96
+ const firstNode = this.viewportNodes && this.viewportNodes.length && this.viewportNodes[0];
97
+ const relativePosition = firstNode && firstNode.parent
98
+ ? firstNode.position -
99
+ firstNode.parent.position -
100
+ firstNode.parent.getSelfHeight()
101
+ : 0;
102
+ return `${relativePosition}px`;
103
+ }
104
+ setNodes(nodes) {
105
+ this._nodes = nodes;
106
+ }
107
+ ngOnInit() {
108
+ this.virtualScroll = this.treeModel.virtualScroll;
109
+ this._dispose = [
110
+ // return node indexes so we can compare structurally,
111
+ reaction(() => {
112
+ return this.virtualScroll
113
+ .getViewportNodes(this.nodes)
114
+ .map(n => n.index);
115
+ }, nodeIndexes => {
116
+ this.viewportNodes = nodeIndexes.map(i => this.nodes[i]);
117
+ }, { compareStructural: true, fireImmediately: true }),
118
+ reaction(() => this.nodes, nodes => {
119
+ this.viewportNodes = this.virtualScroll.getViewportNodes(nodes);
120
+ })
121
+ ];
122
+ }
123
+ ngOnDestroy() {
124
+ this._dispose.forEach(d => d());
125
+ }
126
+ trackNode(index, node) {
127
+ return node.id;
128
+ }
129
+ }
130
+ /** @nocollapse */ TreeNodeCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeCollectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
+ /** @nocollapse */ TreeNodeCollectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeNodeCollectionComponent, selector: "tree-node-collection", inputs: { nodes: "nodes", treeModel: "treeModel", templates: "templates" }, ngImport: i0, template: `
132
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
133
+ <div [style.margin-top]="marginTop">
134
+ <tree-node
135
+ *ngFor="let node of viewportNodes; let i = index; trackBy: trackNode"
136
+ [node]="node"
137
+ [index]="i"
138
+ [templates]="templates"
139
+ >
140
+ </tree-node>
141
+ </div>
142
+ </ng-container>
143
+ `, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i0.forwardRef(function () { return TreeNodeComponent; }), selector: "TreeNode, tree-node", inputs: ["node", "index", "templates"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.TreeMobxAutorunDirective; }), selector: "[treeMobxAutorun]", inputs: ["treeMobxAutorun"] }], encapsulation: i0.ViewEncapsulation.None });
144
+ __decorate([
145
+ observable
146
+ ], TreeNodeCollectionComponent.prototype, "_nodes", void 0);
147
+ __decorate([
148
+ observable
149
+ ], TreeNodeCollectionComponent.prototype, "viewportNodes", void 0);
150
+ __decorate([
151
+ computed
152
+ ], TreeNodeCollectionComponent.prototype, "marginTop", null);
153
+ __decorate([
154
+ action
155
+ ], TreeNodeCollectionComponent.prototype, "setNodes", null);
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeCollectionComponent, decorators: [{
157
+ type: Component,
158
+ args: [{
159
+ selector: 'tree-node-collection',
160
+ encapsulation: ViewEncapsulation.None,
161
+ template: `
162
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
163
+ <div [style.margin-top]="marginTop">
164
+ <tree-node
165
+ *ngFor="let node of viewportNodes; let i = index; trackBy: trackNode"
166
+ [node]="node"
167
+ [index]="i"
168
+ [templates]="templates"
169
+ >
170
+ </tree-node>
171
+ </div>
172
+ </ng-container>
173
+ `
174
+ }]
175
+ }], propDecorators: { nodes: [{
176
+ type: Input
177
+ }], treeModel: [{
178
+ type: Input
179
+ }], _nodes: [], templates: [{
180
+ type: Input
181
+ }], viewportNodes: [], marginTop: [], setNodes: [] } });
182
+ export class TreeNodeComponent {
183
+ }
184
+ /** @nocollapse */ TreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
+ /** @nocollapse */ TreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeNodeComponent, selector: "TreeNode, tree-node", inputs: { node: "node", index: "index", templates: "templates" }, ngImport: i0, template: `
186
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
187
+ <div
188
+ *ngIf="!templates.treeNodeFullTemplate"
189
+ [class]="node.getClass()"
190
+ [class.tree-node]="true"
191
+ [class.tree-node-expanded]="node.isExpanded && node.hasChildren"
192
+ [class.tree-node-collapsed]="node.isCollapsed && node.hasChildren"
193
+ [class.tree-node-leaf]="node.isLeaf"
194
+ [class.tree-node-active]="node.isActive"
195
+ [class.tree-node-focused]="node.isFocused"
196
+ >
197
+ <tree-node-drop-slot
198
+ *ngIf="index === 0"
199
+ [dropIndex]="node.index"
200
+ [node]="node.parent"
201
+ ></tree-node-drop-slot>
202
+
203
+ <tree-node-wrapper
204
+ [node]="node"
205
+ [index]="index"
206
+ [templates]="templates"
207
+ ></tree-node-wrapper>
208
+
209
+ <tree-node-children
210
+ [node]="node"
211
+ [templates]="templates"
212
+ ></tree-node-children>
213
+ <tree-node-drop-slot
214
+ [dropIndex]="node.index + 1"
215
+ [node]="node.parent"
216
+ ></tree-node-drop-slot>
217
+ </div>
218
+ <ng-container
219
+ [ngTemplateOutlet]="templates.treeNodeFullTemplate"
220
+ [ngTemplateOutletContext]="{
221
+ $implicit: node,
222
+ node: node,
223
+ index: index,
224
+ templates: templates
225
+ }"
226
+ >
227
+ </ng-container>
228
+ </ng-container>
229
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TreeNodeChildrenComponent, selector: "tree-node-children", inputs: ["node", "templates"] }, { kind: "component", type: i5.TreeNodeDropSlot, selector: "TreeNodeDropSlot, tree-node-drop-slot", inputs: ["node", "dropIndex"] }, { kind: "component", type: i6.TreeNodeWrapperComponent, selector: "tree-node-wrapper", inputs: ["node", "index", "templates"] }, { kind: "directive", type: i4.TreeMobxAutorunDirective, selector: "[treeMobxAutorun]", inputs: ["treeMobxAutorun"] }], encapsulation: i0.ViewEncapsulation.None });
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeNodeComponent, decorators: [{
231
+ type: Component,
232
+ args: [{ selector: 'TreeNode, tree-node', encapsulation: ViewEncapsulation.None, template: `
233
+ <ng-container *treeMobxAutorun="{ dontDetach: true }">
234
+ <div
235
+ *ngIf="!templates.treeNodeFullTemplate"
236
+ [class]="node.getClass()"
237
+ [class.tree-node]="true"
238
+ [class.tree-node-expanded]="node.isExpanded && node.hasChildren"
239
+ [class.tree-node-collapsed]="node.isCollapsed && node.hasChildren"
240
+ [class.tree-node-leaf]="node.isLeaf"
241
+ [class.tree-node-active]="node.isActive"
242
+ [class.tree-node-focused]="node.isFocused"
243
+ >
244
+ <tree-node-drop-slot
245
+ *ngIf="index === 0"
246
+ [dropIndex]="node.index"
247
+ [node]="node.parent"
248
+ ></tree-node-drop-slot>
249
+
250
+ <tree-node-wrapper
251
+ [node]="node"
252
+ [index]="index"
253
+ [templates]="templates"
254
+ ></tree-node-wrapper>
255
+
256
+ <tree-node-children
257
+ [node]="node"
258
+ [templates]="templates"
259
+ ></tree-node-children>
260
+ <tree-node-drop-slot
261
+ [dropIndex]="node.index + 1"
262
+ [node]="node.parent"
263
+ ></tree-node-drop-slot>
264
+ </div>
265
+ <ng-container
266
+ [ngTemplateOutlet]="templates.treeNodeFullTemplate"
267
+ [ngTemplateOutletContext]="{
268
+ $implicit: node,
269
+ node: node,
270
+ index: index,
271
+ templates: templates
272
+ }"
273
+ >
274
+ </ng-container>
275
+ </ng-container>
276
+ ` }]
277
+ }], propDecorators: { node: [{
278
+ type: Input
279
+ }], index: [{
280
+ type: Input
281
+ }], templates: [{
282
+ type: Input
283
+ }] } });
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWNvbGxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10cmVlLWNvbXBvbmVudC9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS1ub2RlLWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixFQUdsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQXdDMUUsTUFBTSxPQUFPLHlCQUF5Qjs7eUlBQXpCLHlCQUF5Qjs2SEFBekIseUJBQXlCLDRHQTlCMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQscVlBd0JVLDJCQUEyQjsyRkF0QjNCLHlCQUF5QjtrQkFsQ3JDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUNmLGlCQUFpQixDQUFDLElBQUksWUFFM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7OEJBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7O0FBb0JSLE1BQU0sT0FBTywyQkFBMkI7SUFqQnhDO1FBK0NFLGFBQVEsR0FBRyxFQUFFLENBQUM7S0FxQ2Y7SUFsRUMsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO1FBVWEsU0FBUztRQUNyQixNQUFNLFNBQVMsR0FDYixJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FB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O3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmVhY3Rpb24gfSBmcm9tICdtb2J4JztcclxuaW1wb3J0IHsgb2JzZXJ2YWJsZSwgY29tcHV0ZWQsIGFjdGlvbiB9IGZyb20gJy4uL21vYngtYW5ndWxhci9tb2J4LXByb3h5JztcclxuaW1wb3J0IHsgVHJlZVZpcnR1YWxTY3JvbGwgfSBmcm9tICcuLi9tb2RlbHMvdHJlZS12aXJ0dWFsLXNjcm9sbC5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vbW9kZWxzL3RyZWUtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gJy4uL21vZGVscy90cmVlLm1vZGVsJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RyZWUtbm9kZS1jaGlsZHJlbicsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBzdHlsZXM6IFtdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmctY29udGFpbmVyICp0cmVlTW9ieEF1dG9ydW49XCJ7IGRvbnREZXRhY2g6IHRydWUgfVwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2NsYXNzLnRyZWUtY2hpbGRyZW5dPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NsYXNzLnRyZWUtY2hpbGRyZW4tbm8tcGFkZGluZ109XCJub2RlLm9wdGlvbnMubGV2ZWxQYWRkaW5nXCJcclxuICAgICAgICAqdHJlZUFuaW1hdGVPcGVuPVwiXHJcbiAgICAgICAgICBub2RlLmlzRXhwYW5kZWQ7XHJcbiAgICAgICAgICBzcGVlZDogbm9kZS5vcHRpb25zLmFuaW1hdGVTcGVlZDtcclxuICAgICAgICAgIGFjY2VsZXJhdGlvbjogbm9kZS5vcHRpb25zLmFuaW1hdGVBY2NlbGVyYXRpb247XHJcbiAgICAgICAgICBlbmFibGVkOiBub2RlLm9wdGlvbnMuYW5pbWF0ZUV4cGFuZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dHJlZS1ub2RlLWNvbGxlY3Rpb25cclxuICAgICAgICAgICpuZ0lmPVwibm9kZS5jaGlsZHJlblwiXHJcbiAgICAgICAgICBbbm9kZXNdPVwibm9kZS5jaGlsZHJlblwiXHJcbiAgICAgICAgICBbdGVtcGxhdGVzXT1cInRlbXBsYXRlc1wiXHJcbiAgICAgICAgICBbdHJlZU1vZGVsXT1cIm5vZGUudHJlZU1vZGVsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC90cmVlLW5vZGUtY29sbGVjdGlvbj5cclxuICAgICAgICA8dHJlZS1sb2FkaW5nLWNvbXBvbmVudFxyXG4gICAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdF09XCJub2RlLmdldE5vZGVQYWRkaW5nKClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUtbG9hZGluZ1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiFub2RlLmNoaWxkcmVuXCJcclxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJ0ZW1wbGF0ZXMubG9hZGluZ1RlbXBsYXRlXCJcclxuICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgID48L3RyZWUtbG9hZGluZy1jb21wb25lbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVDaGlsZHJlbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbm9kZTogVHJlZU5vZGU7XHJcbiAgQElucHV0KCkgdGVtcGxhdGVzOiBhbnk7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJlZS1ub2RlLWNvbGxlY3Rpb24nLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy1jb250YWluZXIgKnRyZWVNb2J4QXV0b3J1bj1cInsgZG9udERldGFjaDogdHJ1ZSB9XCI+XHJcbiAgICAgIDxkaXYgW3N0eWxlLm1hcmdpbi10b3BdPVwibWFyZ2luVG9wXCI+XHJcbiAgICAgICAgPHRyZWUtbm9kZVxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygdmlld3BvcnROb2RlczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tOb2RlXCJcclxuICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgW2luZGV4XT1cImlcIlxyXG4gICAgICAgICAgW3RlbXBsYXRlc109XCJ0ZW1wbGF0ZXNcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3RyZWUtbm9kZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlTm9kZUNvbGxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBnZXQgbm9kZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbm9kZXM7XHJcbiAgfVxyXG4gIHNldCBub2Rlcyhub2Rlcykge1xyXG4gICAgdGhpcy5zZXROb2Rlcyhub2Rlcyk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSB0cmVlTW9kZWw6IFRyZWVNb2RlbDtcclxuXHJcbiAgQG9ic2VydmFibGUgX25vZGVzO1xyXG4gIHByaXZhdGUgdmlydHVhbFNjcm9sbDogVHJlZVZpcnR1YWxTY3JvbGw7IC8vIENhbm5vdCBpbmplY3QgdGhpcywgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbnNpZGUgdHJlZU5vZGVUZW1wbGF0ZUZ1bGxcclxuICBASW5wdXQoKSB0ZW1wbGF0ZXM7XHJcblxyXG4gIEBvYnNlcnZhYmxlIHZpZXdwb3J0Tm9kZXM6IFRyZWVOb2RlW107XHJcblxyXG4gIEBjb21wdXRlZCBnZXQgbWFyZ2luVG9wKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaXJzdE5vZGUgPVxyXG4gICAgICB0aGlzLnZpZXdwb3J0Tm9kZXMgJiYgdGhpcy52aWV3cG9ydE5vZGVzLmxlbmd0aCAmJiB0aGlzLnZpZXdwb3J0Tm9kZXNbMF07XHJcbiAgICBjb25zdCByZWxhdGl2ZVBvc2l0aW9uID1cclxuICAgICAgZmlyc3ROb2RlICYmIGZpcnN0Tm9kZS5wYXJlbnRcclxuICAgICAgICA/IGZpcnN0Tm9kZS5wb3NpdGlvbiAtXHJcbiAgICAgICAgICBmaXJzdE5vZGUucGFyZW50LnBvc2l0aW9uIC1cclxuICAgICAgICAgIGZpcnN0Tm9kZS5wYXJlbnQuZ2V0U2VsZkhlaWdodCgpXHJcbiAgICAgICAgOiAwO1xyXG5cclxuICAgIHJldHVybiBgJHtyZWxhdGl2ZVBvc2l0aW9ufXB4YDtcclxuICB9XHJcblxyXG4gIF9kaXNwb3NlID0gW107XHJcblxyXG4gIEBhY3Rpb24gc2V0Tm9kZXMobm9kZXMpIHtcclxuICAgIHRoaXMuX25vZGVzID0gbm9kZXM7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudmlydHVhbFNjcm9sbCA9IHRoaXMudHJlZU1vZGVsLnZpcnR1YWxTY3JvbGw7XHJcbiAgICB0aGlzLl9kaXNwb3NlID0gW1xyXG4gICAgICAvLyByZXR1cm4gbm9kZSBpbmRleGVzIHNvIHdlIGNhbiBjb21wYXJlIHN0cnVjdHVyYWxseSxcclxuICAgICAgcmVhY3Rpb24oXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudmlydHVhbFNjcm9sbFxyXG4gICAgICAgICAgICAuZ2V0Vmlld3BvcnROb2Rlcyh0aGlzLm5vZGVzKVxyXG4gICAgICAgICAgICAubWFwKG4gPT4gbi5pbmRleCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBub2RlSW5kZXhlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdwb3J0Tm9kZXMgPSBub2RlSW5kZXhlcy5tYXAoaSA9PiB0aGlzLm5vZGVzW2ldKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgY29tcGFyZVN0cnVjdHVyYWw6IHRydWUsIGZpcmVJbW1lZGlhdGVseTogdHJ1ZSB9IGFzIGFueVxyXG4gICAgICApLFxyXG4gICAgICByZWFjdGlvbihcclxuICAgICAgICAoKSA9PiB0aGlzLm5vZGVzLFxyXG4gICAgICAgIG5vZGVzID0+IHtcclxuICAgICAgICAgIHRoaXMudmlld3BvcnROb2RlcyA9IHRoaXMudmlydHVhbFNjcm9sbC5nZXRWaWV3cG9ydE5vZGVzKG5vZGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX2Rpc3Bvc2UuZm9yRWFjaChkID0+IGQoKSk7XHJcbiAgfVxyXG5cclxuICB0cmFja05vZGUoaW5kZXgsIG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLmlkO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdUcmVlTm9kZSwgdHJlZS1ub2RlJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHN0eWxlczogW10sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy1jb250YWluZXIgKnRyZWVNb2J4QXV0b3J1bj1cInsgZG9udERldGFjaDogdHJ1ZSB9XCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiF0ZW1wbGF0ZXMudHJlZU5vZGVGdWxsVGVtcGxhdGVcIlxyXG4gICAgICAgIFtjbGFzc109XCJub2RlLmdldENsYXNzKClcIlxyXG4gICAgICAgIFtjbGFzcy50cmVlLW5vZGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NsYXNzLnRyZWUtbm9kZS1leHBhbmRlZF09XCJub2RlLmlzRXhwYW5kZWQgJiYgbm9kZS5oYXNDaGlsZHJlblwiXHJcbiAgICAgICAgW2NsYXNzLnRyZWUtbm9kZS1jb2xsYXBzZWRdPVwibm9kZS5pc0NvbGxhcHNlZCAmJiBub2RlLmhhc0NoaWxkcmVuXCJcclxuICAgICAgICBbY2xhc3MudHJlZS1ub2RlLWxlYWZdPVwibm9kZS5pc0xlYWZcIlxyXG4gICAgICAgIFtjbGFzcy50cmVlLW5vZGUtYWN0aXZlXT1cIm5vZGUuaXNBY3RpdmVcIlxyXG4gICAgICAgIFtjbGFzcy50cmVlLW5vZGUtZm9jdXNlZF09XCJub2RlLmlzRm9jdXNlZFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dHJlZS1ub2RlLWRyb3Atc2xvdFxyXG4gICAgICAgICAgKm5nSWY9XCJpbmRleCA9PT0gMFwiXHJcbiAgICAgICAgICBbZHJvcEluZGV4XT1cIm5vZGUuaW5kZXhcIlxyXG4gICAgICAgICAgW25vZGVdPVwibm9kZS5wYXJlbnRcIlxyXG4gICAgICAgID48L3RyZWUtbm9kZS1kcm9wLXNsb3Q+XHJcblxyXG4gICAgICAgIDx0cmVlLW5vZGUtd3JhcHBlclxyXG4gICAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgW3RlbXBsYXRlc109XCJ0ZW1wbGF0ZXNcIlxyXG4gICAgICAgID48L3RyZWUtbm9kZS13cmFwcGVyPlxyXG5cclxuICAgICAgICA8dHJlZS1ub2RlLWNoaWxkcmVuXHJcbiAgICAgICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgICAgIFt0ZW1wbGF0ZXNdPVwidGVtcGxhdGVzXCJcclxuICAgICAgICA+PC90cmVlLW5vZGUtY2hpbGRyZW4+XHJcbiAgICAgICAgPHRyZWUtbm9kZS1kcm9wLXNsb3RcclxuICAgICAgICAgIFtkcm9wSW5kZXhdPVwibm9kZS5pbmRleCArIDFcIlxyXG4gICAgICAgICAgW25vZGVdPVwibm9kZS5wYXJlbnRcIlxyXG4gICAgICAgID48L3RyZWUtbm9kZS1kcm9wLXNsb3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVzLnRyZWVOb2RlRnVsbFRlbXBsYXRlXCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBub2RlLFxyXG4gICAgICAgICAgbm9kZTogbm9kZSxcclxuICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgIHRlbXBsYXRlczogdGVtcGxhdGVzXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlTm9kZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbm9kZTogVHJlZU5vZGU7XHJcbiAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZXM6IGFueTtcclxufVxyXG5cclxuXHJcblxyXG4iXX0=