@rs-pk/asset-management 1.0.24 → 1.0.26

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 (176) hide show
  1. package/README.md +24 -24
  2. package/bundles/rs-pk-asset-management.umd.js +6436 -6442
  3. package/bundles/rs-pk-asset-management.umd.js.map +1 -1
  4. package/bundles/rs-pk-asset-management.umd.min.js +2 -2
  5. package/bundles/rs-pk-asset-management.umd.min.js.map +1 -1
  6. package/esm2015/lib/asset-management.component.js +169 -164
  7. package/esm2015/lib/asset-management.module.js +178 -178
  8. package/esm2015/lib/asset-management.service.js +45 -45
  9. package/esm2015/lib/components/partial/add-folder-dialog/add-folder-dialog.component.js +146 -146
  10. package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +398 -398
  11. package/esm2015/lib/components/partial/asset-item/asset-item.component.js +316 -316
  12. package/esm2015/lib/components/partial/asset-list/asset-list.component.js +285 -285
  13. package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +110 -123
  14. package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +119 -119
  15. package/esm2015/lib/components/partial/breadcrumb/breadcrumb.component.js +121 -121
  16. package/esm2015/lib/components/partial/delete-dialog/delete-dialog.component.js +139 -139
  17. package/esm2015/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.js +151 -151
  18. package/esm2015/lib/components/partial/file-item/file-item.component.js +181 -181
  19. package/esm2015/lib/components/partial/file-list/file-list.component.js +73 -73
  20. package/esm2015/lib/components/partial/folder-item/folder-item.component.js +126 -126
  21. package/esm2015/lib/components/partial/folder-list/folder-list.component.js +81 -81
  22. package/esm2015/lib/components/partial/node-details/node-details.component.js +417 -417
  23. package/esm2015/lib/components/partial/node-tree/node-tree.component.js +330 -330
  24. package/esm2015/lib/components/partial/search-box/search-box.component.js +158 -158
  25. package/esm2015/lib/components/partial/sort-items/sort-items.component.js +99 -99
  26. package/esm2015/lib/components/partial/upload-dialog/upload-dialog.component.js +141 -141
  27. package/esm2015/lib/components/partial/upload-file/upload-file.component.js +85 -85
  28. package/esm2015/lib/components/ui/drag-to-resize/drag-to-resize.component.js +96 -96
  29. package/esm2015/lib/components/ui/input-file/input-file.component.js +49 -49
  30. package/esm2015/lib/components/ui/modal/modal.component.js +34 -34
  31. package/esm2015/lib/components/ui/search-not-found/search-not-found.component.js +41 -41
  32. package/esm2015/lib/configs/admin.config.js +22 -22
  33. package/esm2015/lib/contanst/data-image.js +20 -20
  34. package/esm2015/lib/contanst/index.js +6 -6
  35. package/esm2015/lib/datasources/index.js +6 -6
  36. package/esm2015/lib/datasources/node-tree.datasource.js +179 -179
  37. package/esm2015/lib/directives/dialogTrigger.directive.js +47 -47
  38. package/esm2015/lib/directives/directives.module.js +20 -20
  39. package/esm2015/lib/directives/dnd.directive.js +57 -57
  40. package/esm2015/lib/models/asset-file.model.js +57 -57
  41. package/esm2015/lib/models/asset.model.js +151 -149
  42. package/esm2015/lib/models/file-type.enum.js +11 -11
  43. package/esm2015/lib/models/file.model.js +91 -91
  44. package/esm2015/lib/models/index.js +12 -12
  45. package/esm2015/lib/models/node-tree.model.js +32 -32
  46. package/esm2015/lib/models/sort.enum.js +23 -23
  47. package/esm2015/lib/pipes/datetime.pipe.js +79 -79
  48. package/esm2015/lib/pipes/file-size.pipe.js +54 -54
  49. package/esm2015/lib/services/asset.service.js +229 -229
  50. package/esm2015/lib/services/base.service.js +49 -49
  51. package/esm2015/lib/services/env-config.service.js +18 -18
  52. package/esm2015/lib/services/file.service.js +106 -106
  53. package/esm2015/lib/services/index.js +11 -11
  54. package/esm2015/lib/services/node-tree.service.js +212 -212
  55. package/esm2015/lib/services/upload-assets.service.js +178 -178
  56. package/esm2015/lib/store/actions.action.js +125 -125
  57. package/esm2015/lib/store/index.js +7 -7
  58. package/esm2015/lib/store/reducer.js +115 -115
  59. package/esm2015/public-api.js +34 -34
  60. package/esm2015/rs-pk-asset-management.js +16 -16
  61. package/esm5/lib/asset-management.component.js +184 -179
  62. package/esm5/lib/asset-management.module.js +179 -179
  63. package/esm5/lib/asset-management.service.js +54 -54
  64. package/esm5/lib/components/partial/add-folder-dialog/add-folder-dialog.component.js +164 -164
  65. package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +440 -440
  66. package/esm5/lib/components/partial/asset-item/asset-item.component.js +350 -350
  67. package/esm5/lib/components/partial/asset-list/asset-list.component.js +318 -318
  68. package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +125 -138
  69. package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +137 -137
  70. package/esm5/lib/components/partial/breadcrumb/breadcrumb.component.js +143 -143
  71. package/esm5/lib/components/partial/delete-dialog/delete-dialog.component.js +154 -154
  72. package/esm5/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.js +169 -169
  73. package/esm5/lib/components/partial/file-item/file-item.component.js +206 -206
  74. package/esm5/lib/components/partial/file-list/file-list.component.js +93 -93
  75. package/esm5/lib/components/partial/folder-item/folder-item.component.js +138 -138
  76. package/esm5/lib/components/partial/folder-list/folder-list.component.js +94 -94
  77. package/esm5/lib/components/partial/node-details/node-details.component.js +458 -458
  78. package/esm5/lib/components/partial/node-tree/node-tree.component.js +413 -413
  79. package/esm5/lib/components/partial/search-box/search-box.component.js +184 -184
  80. package/esm5/lib/components/partial/sort-items/sort-items.component.js +107 -107
  81. package/esm5/lib/components/partial/upload-dialog/upload-dialog.component.js +156 -156
  82. package/esm5/lib/components/partial/upload-file/upload-file.component.js +102 -102
  83. package/esm5/lib/components/ui/drag-to-resize/drag-to-resize.component.js +117 -117
  84. package/esm5/lib/components/ui/input-file/input-file.component.js +55 -55
  85. package/esm5/lib/components/ui/modal/modal.component.js +39 -39
  86. package/esm5/lib/components/ui/search-not-found/search-not-found.component.js +43 -43
  87. package/esm5/lib/configs/admin.config.js +22 -22
  88. package/esm5/lib/contanst/data-image.js +20 -20
  89. package/esm5/lib/contanst/index.js +6 -6
  90. package/esm5/lib/datasources/index.js +6 -6
  91. package/esm5/lib/datasources/node-tree.datasource.js +239 -239
  92. package/esm5/lib/directives/dialogTrigger.directive.js +53 -53
  93. package/esm5/lib/directives/directives.module.js +25 -25
  94. package/esm5/lib/directives/dnd.directive.js +80 -80
  95. package/esm5/lib/models/asset-file.model.js +69 -69
  96. package/esm5/lib/models/asset.model.js +170 -168
  97. package/esm5/lib/models/file-type.enum.js +11 -11
  98. package/esm5/lib/models/file.model.js +99 -99
  99. package/esm5/lib/models/index.js +12 -12
  100. package/esm5/lib/models/node-tree.model.js +37 -37
  101. package/esm5/lib/models/sort.enum.js +23 -23
  102. package/esm5/lib/pipes/datetime.pipe.js +83 -83
  103. package/esm5/lib/pipes/file-size.pipe.js +63 -63
  104. package/esm5/lib/services/asset.service.js +279 -279
  105. package/esm5/lib/services/base.service.js +57 -57
  106. package/esm5/lib/services/env-config.service.js +18 -18
  107. package/esm5/lib/services/file.service.js +127 -127
  108. package/esm5/lib/services/index.js +11 -11
  109. package/esm5/lib/services/node-tree.service.js +278 -278
  110. package/esm5/lib/services/upload-assets.service.js +207 -207
  111. package/esm5/lib/store/actions.action.js +143 -143
  112. package/esm5/lib/store/index.js +7 -7
  113. package/esm5/lib/store/reducer.js +116 -116
  114. package/esm5/public-api.js +34 -34
  115. package/esm5/rs-pk-asset-management.js +16 -16
  116. package/fesm2015/rs-pk-asset-management.js +5636 -5642
  117. package/fesm2015/rs-pk-asset-management.js.map +1 -1
  118. package/fesm5/rs-pk-asset-management.js +6442 -6448
  119. package/fesm5/rs-pk-asset-management.js.map +1 -1
  120. package/lib/asset-management.component.d.ts +25 -25
  121. package/lib/asset-management.module.d.ts +5 -5
  122. package/lib/asset-management.service.d.ts +7 -7
  123. package/lib/components/partial/add-folder-dialog/add-folder-dialog.component.d.ts +27 -27
  124. package/lib/components/partial/asset-dialog/asset-dialog.component.d.ts +65 -65
  125. package/lib/components/partial/asset-item/asset-item.component.d.ts +40 -40
  126. package/lib/components/partial/asset-list/asset-list.component.d.ts +27 -27
  127. package/lib/components/partial/asset-management-dialog/asset-management-dialog.component.d.ts +17 -20
  128. package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +23 -23
  129. package/lib/components/partial/breadcrumb/breadcrumb.component.d.ts +18 -18
  130. package/lib/components/partial/delete-dialog/delete-dialog.component.d.ts +24 -24
  131. package/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.d.ts +28 -28
  132. package/lib/components/partial/file-item/file-item.component.d.ts +36 -36
  133. package/lib/components/partial/file-list/file-list.component.d.ts +15 -15
  134. package/lib/components/partial/folder-item/folder-item.component.d.ts +17 -17
  135. package/lib/components/partial/folder-list/folder-list.component.d.ts +14 -14
  136. package/lib/components/partial/node-details/node-details.component.d.ts +32 -32
  137. package/lib/components/partial/node-tree/node-tree.component.d.ts +34 -34
  138. package/lib/components/partial/search-box/search-box.component.d.ts +18 -18
  139. package/lib/components/partial/sort-items/sort-items.component.d.ts +21 -21
  140. package/lib/components/partial/upload-dialog/upload-dialog.component.d.ts +25 -25
  141. package/lib/components/partial/upload-file/upload-file.component.d.ts +16 -16
  142. package/lib/components/ui/drag-to-resize/drag-to-resize.component.d.ts +15 -15
  143. package/lib/components/ui/input-file/input-file.component.d.ts +9 -9
  144. package/lib/components/ui/modal/modal.component.d.ts +7 -7
  145. package/lib/components/ui/search-not-found/search-not-found.component.d.ts +8 -8
  146. package/lib/configs/admin.config.d.ts +3 -3
  147. package/lib/contanst/data-image.d.ts +6 -6
  148. package/lib/contanst/index.d.ts +1 -1
  149. package/lib/datasources/index.d.ts +1 -1
  150. package/lib/datasources/node-tree.datasource.d.ts +24 -24
  151. package/lib/directives/dialogTrigger.directive.d.ts +7 -7
  152. package/lib/directives/directives.module.d.ts +5 -5
  153. package/lib/directives/dnd.directive.d.ts +7 -7
  154. package/lib/models/asset-file.model.d.ts +26 -26
  155. package/lib/models/asset.model.d.ts +73 -68
  156. package/lib/models/file-type.enum.d.ts +4 -4
  157. package/lib/models/file.model.d.ts +41 -41
  158. package/lib/models/index.d.ts +7 -7
  159. package/lib/models/node-tree.model.d.ts +9 -9
  160. package/lib/models/sort.enum.d.ts +9 -9
  161. package/lib/pipes/datetime.pipe.d.ts +13 -13
  162. package/lib/pipes/file-size.pipe.d.ts +5 -5
  163. package/lib/services/asset.service.d.ts +36 -36
  164. package/lib/services/base.service.d.ts +20 -20
  165. package/lib/services/env-config.service.d.ts +7 -7
  166. package/lib/services/file.service.d.ts +13 -13
  167. package/lib/services/index.d.ts +6 -6
  168. package/lib/services/node-tree.service.d.ts +24 -24
  169. package/lib/services/upload-assets.service.d.ts +34 -34
  170. package/lib/store/actions.action.d.ts +51 -51
  171. package/lib/store/index.d.ts +2 -2
  172. package/lib/store/reducer.d.ts +18 -18
  173. package/package.json +1 -1
  174. package/public-api.d.ts +26 -26
  175. package/rs-pk-asset-management.d.ts +12 -12
  176. package/rs-pk-asset-management.metadata.json +1 -1
@@ -1,413 +1,413 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { FlatTreeControl } from '@angular/cdk/tree';
7
- import { ChangeDetectorRef, Component, Input } from '@angular/core';
8
- import { of, Subject } from 'rxjs';
9
- import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
10
- import { AssetManagementService } from '../../../asset-management.service';
11
- import { NodeTreeDataSource } from '../../../datasources';
12
- import { NodeTreeService } from '../../../services/node-tree.service';
13
- import { ActionTypes, select } from '../../../store/index';
14
- var NodeTreeComponent = /** @class */ (function () {
15
- function NodeTreeComponent(nodeTreeService, svc, changeDetectorRef) {
16
- this.nodeTreeService = nodeTreeService;
17
- this.svc = svc;
18
- this.changeDetectorRef = changeDetectorRef;
19
- this.isRoot = false;
20
- this.homeLoading = false;
21
- this.loading = false;
22
- this.unsubscribe$ = new Subject();
23
- this.getLevel = (/**
24
- * @param {?} node
25
- * @return {?}
26
- */
27
- function (node) { return node.level; });
28
- this.isExpandable = (/**
29
- * @param {?} node
30
- * @return {?}
31
- */
32
- function (node) { return node.expandable; });
33
- this.hasChild = (/**
34
- * @param {?} _
35
- * @param {?} _nodeData
36
- * @return {?}
37
- */
38
- function (_, _nodeData) { return _nodeData.expandable; });
39
- this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
40
- this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);
41
- }
42
- /**
43
- * @return {?}
44
- */
45
- NodeTreeComponent.prototype.ngOnInit = /**
46
- * @return {?}
47
- */
48
- function () {
49
- this.bindSubscriber();
50
- this.initialData();
51
- };
52
- /**
53
- * @private
54
- * @return {?}
55
- */
56
- NodeTreeComponent.prototype.initialData = /**
57
- * @private
58
- * @return {?}
59
- */
60
- function () {
61
- return tslib_1.__awaiter(this, void 0, void 0, function () {
62
- return tslib_1.__generator(this, function (_a) {
63
- switch (_a.label) {
64
- case 0: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: true })];
65
- case 1:
66
- _a.sent();
67
- this.changeDetectorRef.detectChanges();
68
- return [2 /*return*/];
69
- }
70
- });
71
- });
72
- };
73
- /**
74
- * @private
75
- * @return {?}
76
- */
77
- NodeTreeComponent.prototype.bindSubscriber = /**
78
- * @private
79
- * @return {?}
80
- */
81
- function () {
82
- var _this = this;
83
- this.nodeTreeService.loading$
84
- .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())
85
- .subscribe((/**
86
- * @param {?} loading
87
- * @return {?}
88
- */
89
- function (loading) {
90
- _this.homeLoading = loading;
91
- _this.changeDetectorRef.detectChanges();
92
- }));
93
- this.nodeTreeService.initialData$
94
- .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())
95
- .subscribe((/**
96
- * @param {?} data
97
- * @return {?}
98
- */
99
- function (data) {
100
- var rootId = (_this.nodeTreeService.rootFolder || { AssetId: null }).AssetId;
101
- _this.isRoot = rootId && _this.currentFolderId === rootId;
102
- _this.dataSource.data = data;
103
- data.forEach((/**
104
- * @param {?} node
105
- * @return {?}
106
- */
107
- function (node) { return _this.nodeTreeService.addNode(node.item, null); }));
108
- _this.changeDetectorRef.detectChanges();
109
- }));
110
- this.dataSource.dataChange
111
- .pipe(takeUntil(this.unsubscribe$))
112
- .subscribe((/**
113
- * @param {?} data
114
- * @return {?}
115
- */
116
- function (data) {
117
- if (data && data.length) {
118
- _this.changeDetectorRef.detectChanges();
119
- }
120
- }));
121
- select((/**
122
- * @param {?} state
123
- * @return {?}
124
- */
125
- function (state) { return state.currentFolderId; }))
126
- .pipe(takeUntil(this.unsubscribe$))
127
- .subscribe((/**
128
- * @param {?} id
129
- * @return {?}
130
- */
131
- function (id) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
132
- var rootId;
133
- return tslib_1.__generator(this, function (_a) {
134
- switch (_a.label) {
135
- case 0:
136
- if (!id) return [3 /*break*/, 2];
137
- rootId = (this.nodeTreeService.rootFolder || { AssetId: null }).AssetId;
138
- this.isRoot = rootId && id === rootId;
139
- this.currentFolderId = id;
140
- return [4 /*yield*/, this.nodeTreeService.updateBreadcrumb(id)];
141
- case 1:
142
- _a.sent();
143
- this.changeDetectorRef.detectChanges();
144
- _a.label = 2;
145
- case 2: return [2 /*return*/];
146
- }
147
- });
148
- }); }));
149
- select((/**
150
- * @param {?} state
151
- * @return {?}
152
- */
153
- function (state) { return state.reloadCurrentFolder; }))
154
- .pipe(takeUntil(this.unsubscribe$), switchMap((/**
155
- * @param {?} res
156
- * @return {?}
157
- */
158
- function (res) { return of(res); })))
159
- .subscribe((/**
160
- * @return {?}
161
- */
162
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
163
- return tslib_1.__generator(this, function (_a) {
164
- switch (_a.label) {
165
- case 0: return [4 /*yield*/, this.handleReloadFolder(this.currentFolderId)];
166
- case 1:
167
- _a.sent();
168
- this.changeDetectorRef.detectChanges();
169
- return [2 /*return*/];
170
- }
171
- });
172
- }); }));
173
- };
174
- /**
175
- * @param {?} node
176
- * @return {?}
177
- */
178
- NodeTreeComponent.prototype.selectNode = /**
179
- * @param {?} node
180
- * @return {?}
181
- */
182
- function (node) {
183
- return tslib_1.__awaiter(this, void 0, void 0, function () {
184
- var id;
185
- return tslib_1.__generator(this, function (_a) {
186
- switch (_a.label) {
187
- case 0:
188
- id = node.item.AssetId;
189
- if (id === this.currentFolderId) {
190
- this.svc.dispatch({
191
- type: ActionTypes.RELOAD_CURRENT_NODE,
192
- });
193
- }
194
- else {
195
- this.svc.dispatch({
196
- type: ActionTypes.SET_CURRENT_FOLDER_ID,
197
- payload: id,
198
- });
199
- }
200
- return [4 /*yield*/, this.handleReloadFolder(id)];
201
- case 1:
202
- _a.sent();
203
- this.changeDetectorRef.detectChanges();
204
- return [2 /*return*/];
205
- }
206
- });
207
- });
208
- };
209
- /**
210
- * @return {?}
211
- */
212
- NodeTreeComponent.prototype.backToHome = /**
213
- * @return {?}
214
- */
215
- function () {
216
- this.initialData();
217
- var rootId = this.nodeTreeService.rootFolder.AssetId;
218
- if (this.currentFolderId === rootId) {
219
- this.svc.dispatch({
220
- type: ActionTypes.RELOAD_CURRENT_NODE,
221
- });
222
- }
223
- };
224
- /**
225
- * @param {?} node
226
- * @return {?}
227
- */
228
- NodeTreeComponent.prototype.checked = /**
229
- * @param {?} node
230
- * @return {?}
231
- */
232
- function (node) {
233
- return this.currentFolderId && this.currentFolderId === node.item.AssetId;
234
- };
235
- /**
236
- * @param {?} node
237
- * @return {?}
238
- */
239
- NodeTreeComponent.prototype.disabled = /**
240
- * @param {?} node
241
- * @return {?}
242
- */
243
- function (node) {
244
- return node.expandable;
245
- };
246
- /**
247
- * @param {?} node
248
- * @return {?}
249
- */
250
- NodeTreeComponent.prototype.getParent = /**
251
- * @param {?} node
252
- * @return {?}
253
- */
254
- function (node) {
255
- /** @type {?} */
256
- var currentLevel = this.getLevel(node);
257
- if (currentLevel < 1) {
258
- return null;
259
- }
260
- /** @type {?} */
261
- var startIndex = this.dataSource.data.indexOf(node) - 1;
262
- for (var i = startIndex; i >= 0; i--) {
263
- /** @type {?} */
264
- var currentNode = this.dataSource.data[i];
265
- if (this.getLevel(currentNode) < currentLevel) {
266
- return currentNode;
267
- }
268
- }
269
- };
270
- /**
271
- * @param {?} id
272
- * @return {?}
273
- */
274
- NodeTreeComponent.prototype.getNodeById = /**
275
- * @param {?} id
276
- * @return {?}
277
- */
278
- function (id) {
279
- return this.treeControl.dataNodes.find((/**
280
- * @param {?} node
281
- * @return {?}
282
- */
283
- function (node) { return node.item.AssetId === id; }));
284
- };
285
- /**
286
- * @private
287
- * @param {?} id
288
- * @return {?}
289
- */
290
- NodeTreeComponent.prototype.handleReloadFolder = /**
291
- * @private
292
- * @param {?} id
293
- * @return {?}
294
- */
295
- function (id) {
296
- return tslib_1.__awaiter(this, void 0, void 0, function () {
297
- var node, parent_1, updatedNode, updatedNode;
298
- return tslib_1.__generator(this, function (_a) {
299
- switch (_a.label) {
300
- case 0:
301
- if (!id || this.loading) {
302
- return [2 /*return*/];
303
- }
304
- this.loading = true;
305
- node = this.getNodeById(id);
306
- if (!node) return [3 /*break*/, 8];
307
- parent_1 = this.getParent(node);
308
- if (!parent_1) return [3 /*break*/, 4];
309
- return [4 /*yield*/, this.dataSource.reloadNode(parent_1)];
310
- case 1:
311
- _a.sent();
312
- updatedNode = this.getNodeById(id);
313
- if (!updatedNode) return [3 /*break*/, 3];
314
- return [4 /*yield*/, this.treeControl.expand(updatedNode)];
315
- case 2:
316
- _a.sent();
317
- _a.label = 3;
318
- case 3: return [3 /*break*/, 7];
319
- case 4: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
320
- case 5:
321
- _a.sent();
322
- updatedNode = this.getNodeById(id);
323
- if (!updatedNode) return [3 /*break*/, 7];
324
- return [4 /*yield*/, this.treeControl.expand(updatedNode)];
325
- case 6:
326
- _a.sent();
327
- _a.label = 7;
328
- case 7: return [3 /*break*/, 10];
329
- case 8: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
330
- case 9:
331
- _a.sent();
332
- _a.label = 10;
333
- case 10:
334
- this.loading = false;
335
- return [2 /*return*/];
336
- }
337
- });
338
- });
339
- };
340
- /**
341
- * @return {?}
342
- */
343
- NodeTreeComponent.prototype.ngOnDestroy = /**
344
- * @return {?}
345
- */
346
- function () {
347
- this.dataSource.data = [];
348
- this.nodeTreeService.data = [];
349
- this.unsubscribe$.next();
350
- this.unsubscribe$.complete();
351
- };
352
- NodeTreeComponent.decorators = [
353
- { type: Component, args: [{
354
- selector: 'lib-node-tree',
355
- template: "<div class=\"node custom-scrollbar node-tree\">\r\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\r\n disabled: loading || homeLoading}\">\r\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\r\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\r\n class=\"node__home--loading\"></mat-spinner>\r\n <span>Home</span>\r\n </div>\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\r\n class=\"node__item\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\r\n (click)=\"selectNode(node)\">\r\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\r\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\r\n <mat-icon class=\"folder-icon\">folder</mat-icon>\r\n <div class=\"node-name\">\r\n <span>\r\n {{ node.item.OriginalFileName }}\r\n </span>\r\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\r\n node.item?.TotalFile\">\r\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\r\n {{node.item?.TotalFolder> 1 ?\r\n 'folders':'folder'}}</small>\r\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\r\n </small>\r\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\r\n {{node.item?.TotalFile> 1 ?\r\n 'files':'file'}}</small>\r\n </span>\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n (click)=\"selectNode(node)\"\r\n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\r\n }\">\r\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\r\n node.item.OriginalFileName\" matTreeNodeToggle\r\n [disabled]=\"node.isLoading\">\r\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\r\n class=\"node__item--loading\"></mat-spinner>\r\n </button>\r\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\r\n <mat-icon class=\"folder-icon\">folder</mat-icon>\r\n <div class=\"node-name\">\r\n <span>\r\n {{ node.item.OriginalFileName }}\r\n </span>\r\n <span class=\"node-summary\">\r\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\r\n {{node.item?.TotalFolder> 1 ?\r\n 'folders':'folder'}}</small>\r\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\r\n </small>\r\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\r\n {{node.item?.TotalFile> 1 ?\r\n 'files':'file'}}</small>\r\n </span>\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n</div>",
356
- styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:-ms-grid;display:grid;grid-auto-rows:-webkit-max-content;grid-auto-rows:max-content}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
357
- }] }
358
- ];
359
- /** @nocollapse */
360
- NodeTreeComponent.ctorParameters = function () { return [
361
- { type: NodeTreeService },
362
- { type: AssetManagementService },
363
- { type: ChangeDetectorRef }
364
- ]; };
365
- NodeTreeComponent.propDecorators = {
366
- width: [{ type: Input }]
367
- };
368
- return NodeTreeComponent;
369
- }());
370
- export { NodeTreeComponent };
371
- if (false) {
372
- /** @type {?} */
373
- NodeTreeComponent.prototype.width;
374
- /** @type {?} */
375
- NodeTreeComponent.prototype.currentFolderId;
376
- /** @type {?} */
377
- NodeTreeComponent.prototype.isRoot;
378
- /** @type {?} */
379
- NodeTreeComponent.prototype.homeLoading;
380
- /** @type {?} */
381
- NodeTreeComponent.prototype.loading;
382
- /** @type {?} */
383
- NodeTreeComponent.prototype.treeControl;
384
- /** @type {?} */
385
- NodeTreeComponent.prototype.dataSource;
386
- /**
387
- * @type {?}
388
- * @private
389
- */
390
- NodeTreeComponent.prototype.unsubscribe$;
391
- /** @type {?} */
392
- NodeTreeComponent.prototype.getLevel;
393
- /** @type {?} */
394
- NodeTreeComponent.prototype.isExpandable;
395
- /** @type {?} */
396
- NodeTreeComponent.prototype.hasChild;
397
- /**
398
- * @type {?}
399
- * @private
400
- */
401
- NodeTreeComponent.prototype.nodeTreeService;
402
- /**
403
- * @type {?}
404
- * @private
405
- */
406
- NodeTreeComponent.prototype.svc;
407
- /**
408
- * @type {?}
409
- * @private
410
- */
411
- NodeTreeComponent.prototype.changeDetectorRef;
412
- }
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLXRyZWUvbm9kZS10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRDtJQU1FLDJCQUNVLGVBQWdDLEVBQ2hDLEdBQTJCLEVBQzNCLGlCQUFvQztRQUZwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVl2QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdmLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQTZGM0MsYUFBUTs7OztRQUFHLFVBQUMsSUFBcUIsSUFBSyxPQUFBLElBQUksQ0FBQyxLQUFL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eyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hc3NldC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb2RlVHJlZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlcyc7XHJcbmltcG9ydCB7IER5bmFtaWNGbGF0Tm9kZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE5vZGVUcmVlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vZGUtdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uVHlwZXMsIHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2luZGV4JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW5vZGUtdHJlZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtdHJlZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbm9kZS10cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb2RlVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbm9kZVRyZWVTZXJ2aWNlOiBOb2RlVHJlZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN2YzogQXNzZXRNYW5hZ2VtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxEeW5hbWljRmxhdE5vZGU+KFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBOb2RlVHJlZURhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgbm9kZVRyZWVTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZztcclxuICBwdWJsaWMgaXNSb290ID0gZmFsc2U7XHJcbiAgcHVibGljIGhvbWVMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuICBwdWJsaWMgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxEeW5hbWljRmxhdE5vZGU+O1xyXG4gIHB1YmxpYyBkYXRhU291cmNlOiBOb2RlVHJlZURhdGFTb3VyY2U7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcclxuICAgIHRoaXMuaW5pdGlhbERhdGEoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbERhdGEoKSB7XHJcbiAgICBhd2FpdCB0aGlzLm5vZGVUcmVlU2VydmljZS5pbml0aWFsRGF0YSh7IGRpc3BhdGNoUm9vdElkOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJpbmRTdWJzY3JpYmVyKCkge1xyXG4gICAgdGhpcy5ub2RlVHJlZVNlcnZpY2UubG9hZGluZyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgobG9hZGluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuaG9tZUxvYWRpbmcgPSBsb2FkaW5nO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLm5vZGVUcmVlU2VydmljZS5pbml0aWFsRGF0YSRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgQXNzZXRJZDogcm9vdElkIH0gPSB0aGlzLm5vZGVUcmVlU2VydmljZS5yb290Rm9sZGVyIHx8IHtBc3NldElkOiBudWxsfTtcclxuICAgICAgICB0aGlzLmlzUm9vdCA9IHJvb3RJZCAmJiB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9PT0gcm9vdElkO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuICAgICAgICBkYXRhLmZvckVhY2goKG5vZGUpID0+IHRoaXMubm9kZVRyZWVTZXJ2aWNlLmFkZE5vZGUobm9kZS5pdGVtLCBudWxsKSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5jdXJyZW50Rm9sZGVySWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGlkKSA9PiB7XHJcbiAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICBjb25zdCB7IEFzc2V0SWQ6IHJvb3RJZCB9ID0gdGhpcy5ub2RlVHJlZVNlcnZpY2Uucm9vdEZvbGRlciB8fCB7QXNzZXRJZDogbnVsbH07XHJcbiAgICAgICAgICB0aGlzLmlzUm9vdCA9IHJvb3RJZCAmJiBpZCA9PT0gcm9vdElkO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVySWQgPSBpZDtcclxuICAgICAgICAgIGF3YWl0IHRoaXMubm9kZVRyZWVTZXJ2aWNlLnVwZGF0ZUJyZWFkY3J1bWIoaWQpO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5yZWxvYWRDdXJyZW50Rm9sZGVyKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLCBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlUmVsb2FkRm9sZGVyKHRoaXMuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2VsZWN0Tm9kZShub2RlOiBEeW5hbWljRmxhdE5vZGUpIHtcclxuICAgIGNvbnN0IHsgQXNzZXRJZDogaWQgfSA9IG5vZGUuaXRlbTtcclxuICAgIGlmIChpZCA9PT0gdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcclxuICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX05PREUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9DVVJSRU5UX0ZPTERFUl9JRCxcclxuICAgICAgICBwYXlsb2FkOiBpZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmhhbmRsZVJlbG9hZEZvbGRlcihpZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiYWNrVG9Ib21lKCkge1xyXG4gICAgdGhpcy5pbml0aWFsRGF0YSgpO1xyXG4gICAgY29uc3QgeyBBc3NldElkOiByb290SWQgfSA9IHRoaXMubm9kZVRyZWVTZXJ2aWNlLnJvb3RGb2xkZXI7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Rm9sZGVySWQgPT09IHJvb3RJZCkge1xyXG4gICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfTk9ERSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tlZChub2RlOiBEeW5hbWljRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGb2xkZXJJZCAmJiB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9PT0gbm9kZS5pdGVtLkFzc2V0SWQ7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlZChub2RlOiBEeW5hbWljRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XHJcbiAgfVxyXG5cclxuICBnZXRMZXZlbCA9IChub2RlOiBEeW5hbWljRmxhdE5vZGUpID0+IG5vZGUubGV2ZWw7XHJcblxyXG4gIGlzRXhwYW5kYWJsZSA9IChub2RlOiBEeW5hbWljRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuXHJcbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZURhdGE6IER5bmFtaWNGbGF0Tm9kZSkgPT4gX25vZGVEYXRhLmV4cGFuZGFibGU7XHJcblxyXG4gIGdldFBhcmVudChub2RlOiBEeW5hbWljRmxhdE5vZGUpOiBEeW5hbWljRmxhdE5vZGUge1xyXG4gICAgY29uc3QgY3VycmVudExldmVsID0gdGhpcy5nZXRMZXZlbChub2RlKTtcclxuXHJcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5kYXRhU291cmNlLmRhdGEuaW5kZXhPZihub2RlKSAtIDE7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlID0gdGhpcy5kYXRhU291cmNlLmRhdGFbaV07XHJcbiAgICAgIGlmICh0aGlzLmdldExldmVsKGN1cnJlbnROb2RlKSA8IGN1cnJlbnRMZXZlbCkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUJ5SWQoaWQ6IHN0cmluZyk6IER5bmFtaWNGbGF0Tm9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pdGVtLkFzc2V0SWQgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUmVsb2FkRm9sZGVyKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghaWQgfHwgdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlQnlJZChpZCk7XHJcbiAgICBpZiAobm9kZSkge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChub2RlKTtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5yZWxvYWROb2RlKHBhcmVudCk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZE5vZGUgPSB0aGlzLmdldE5vZGVCeUlkKGlkKTtcclxuICAgICAgICBpZiAodXBkYXRlZE5vZGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHVwZGF0ZWROb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5ub2RlVHJlZVNlcnZpY2UuaW5pdGlhbERhdGEoeyBkaXNwYXRjaFJvb3RJZDogZmFsc2UgfSk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZE5vZGUgPSB0aGlzLmdldE5vZGVCeUlkKGlkKTtcclxuICAgICAgICBpZiAodXBkYXRlZE5vZGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHVwZGF0ZWROb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubm9kZVRyZWVTZXJ2aWNlLmluaXRpYWxEYXRhKHsgZGlzcGF0Y2hSb290SWQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gW107XHJcbiAgICB0aGlzLm5vZGVUcmVlU2VydmljZS5kYXRhID0gW107XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { FlatTreeControl } from '@angular/cdk/tree';
7
+ import { ChangeDetectorRef, Component, Input } from '@angular/core';
8
+ import { of, Subject } from 'rxjs';
9
+ import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
10
+ import { AssetManagementService } from '../../../asset-management.service';
11
+ import { NodeTreeDataSource } from '../../../datasources';
12
+ import { NodeTreeService } from '../../../services/node-tree.service';
13
+ import { ActionTypes, select } from '../../../store/index';
14
+ var NodeTreeComponent = /** @class */ (function () {
15
+ function NodeTreeComponent(nodeTreeService, svc, changeDetectorRef) {
16
+ this.nodeTreeService = nodeTreeService;
17
+ this.svc = svc;
18
+ this.changeDetectorRef = changeDetectorRef;
19
+ this.isRoot = false;
20
+ this.homeLoading = false;
21
+ this.loading = false;
22
+ this.unsubscribe$ = new Subject();
23
+ this.getLevel = (/**
24
+ * @param {?} node
25
+ * @return {?}
26
+ */
27
+ function (node) { return node.level; });
28
+ this.isExpandable = (/**
29
+ * @param {?} node
30
+ * @return {?}
31
+ */
32
+ function (node) { return node.expandable; });
33
+ this.hasChild = (/**
34
+ * @param {?} _
35
+ * @param {?} _nodeData
36
+ * @return {?}
37
+ */
38
+ function (_, _nodeData) { return _nodeData.expandable; });
39
+ this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
40
+ this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);
41
+ }
42
+ /**
43
+ * @return {?}
44
+ */
45
+ NodeTreeComponent.prototype.ngOnInit = /**
46
+ * @return {?}
47
+ */
48
+ function () {
49
+ this.bindSubscriber();
50
+ this.initialData();
51
+ };
52
+ /**
53
+ * @private
54
+ * @return {?}
55
+ */
56
+ NodeTreeComponent.prototype.initialData = /**
57
+ * @private
58
+ * @return {?}
59
+ */
60
+ function () {
61
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
62
+ return tslib_1.__generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: true })];
65
+ case 1:
66
+ _a.sent();
67
+ this.changeDetectorRef.detectChanges();
68
+ return [2 /*return*/];
69
+ }
70
+ });
71
+ });
72
+ };
73
+ /**
74
+ * @private
75
+ * @return {?}
76
+ */
77
+ NodeTreeComponent.prototype.bindSubscriber = /**
78
+ * @private
79
+ * @return {?}
80
+ */
81
+ function () {
82
+ var _this = this;
83
+ this.nodeTreeService.loading$
84
+ .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())
85
+ .subscribe((/**
86
+ * @param {?} loading
87
+ * @return {?}
88
+ */
89
+ function (loading) {
90
+ _this.homeLoading = loading;
91
+ _this.changeDetectorRef.detectChanges();
92
+ }));
93
+ this.nodeTreeService.initialData$
94
+ .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())
95
+ .subscribe((/**
96
+ * @param {?} data
97
+ * @return {?}
98
+ */
99
+ function (data) {
100
+ var rootId = (_this.nodeTreeService.rootFolder || { AssetId: null }).AssetId;
101
+ _this.isRoot = rootId && _this.currentFolderId === rootId;
102
+ _this.dataSource.data = data;
103
+ data.forEach((/**
104
+ * @param {?} node
105
+ * @return {?}
106
+ */
107
+ function (node) { return _this.nodeTreeService.addNode(node.item, null); }));
108
+ _this.changeDetectorRef.detectChanges();
109
+ }));
110
+ this.dataSource.dataChange
111
+ .pipe(takeUntil(this.unsubscribe$))
112
+ .subscribe((/**
113
+ * @param {?} data
114
+ * @return {?}
115
+ */
116
+ function (data) {
117
+ if (data && data.length) {
118
+ _this.changeDetectorRef.detectChanges();
119
+ }
120
+ }));
121
+ select((/**
122
+ * @param {?} state
123
+ * @return {?}
124
+ */
125
+ function (state) { return state.currentFolderId; }))
126
+ .pipe(takeUntil(this.unsubscribe$))
127
+ .subscribe((/**
128
+ * @param {?} id
129
+ * @return {?}
130
+ */
131
+ function (id) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
132
+ var rootId;
133
+ return tslib_1.__generator(this, function (_a) {
134
+ switch (_a.label) {
135
+ case 0:
136
+ if (!id) return [3 /*break*/, 2];
137
+ rootId = (this.nodeTreeService.rootFolder || { AssetId: null }).AssetId;
138
+ this.isRoot = rootId && id === rootId;
139
+ this.currentFolderId = id;
140
+ return [4 /*yield*/, this.nodeTreeService.updateBreadcrumb(id)];
141
+ case 1:
142
+ _a.sent();
143
+ this.changeDetectorRef.detectChanges();
144
+ _a.label = 2;
145
+ case 2: return [2 /*return*/];
146
+ }
147
+ });
148
+ }); }));
149
+ select((/**
150
+ * @param {?} state
151
+ * @return {?}
152
+ */
153
+ function (state) { return state.reloadCurrentFolder; }))
154
+ .pipe(takeUntil(this.unsubscribe$), switchMap((/**
155
+ * @param {?} res
156
+ * @return {?}
157
+ */
158
+ function (res) { return of(res); })))
159
+ .subscribe((/**
160
+ * @return {?}
161
+ */
162
+ function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
163
+ return tslib_1.__generator(this, function (_a) {
164
+ switch (_a.label) {
165
+ case 0: return [4 /*yield*/, this.handleReloadFolder(this.currentFolderId)];
166
+ case 1:
167
+ _a.sent();
168
+ this.changeDetectorRef.detectChanges();
169
+ return [2 /*return*/];
170
+ }
171
+ });
172
+ }); }));
173
+ };
174
+ /**
175
+ * @param {?} node
176
+ * @return {?}
177
+ */
178
+ NodeTreeComponent.prototype.selectNode = /**
179
+ * @param {?} node
180
+ * @return {?}
181
+ */
182
+ function (node) {
183
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
184
+ var id;
185
+ return tslib_1.__generator(this, function (_a) {
186
+ switch (_a.label) {
187
+ case 0:
188
+ id = node.item.AssetId;
189
+ if (id === this.currentFolderId) {
190
+ this.svc.dispatch({
191
+ type: ActionTypes.RELOAD_CURRENT_NODE,
192
+ });
193
+ }
194
+ else {
195
+ this.svc.dispatch({
196
+ type: ActionTypes.SET_CURRENT_FOLDER_ID,
197
+ payload: id,
198
+ });
199
+ }
200
+ return [4 /*yield*/, this.handleReloadFolder(id)];
201
+ case 1:
202
+ _a.sent();
203
+ this.changeDetectorRef.detectChanges();
204
+ return [2 /*return*/];
205
+ }
206
+ });
207
+ });
208
+ };
209
+ /**
210
+ * @return {?}
211
+ */
212
+ NodeTreeComponent.prototype.backToHome = /**
213
+ * @return {?}
214
+ */
215
+ function () {
216
+ this.initialData();
217
+ var rootId = this.nodeTreeService.rootFolder.AssetId;
218
+ if (this.currentFolderId === rootId) {
219
+ this.svc.dispatch({
220
+ type: ActionTypes.RELOAD_CURRENT_NODE,
221
+ });
222
+ }
223
+ };
224
+ /**
225
+ * @param {?} node
226
+ * @return {?}
227
+ */
228
+ NodeTreeComponent.prototype.checked = /**
229
+ * @param {?} node
230
+ * @return {?}
231
+ */
232
+ function (node) {
233
+ return this.currentFolderId && this.currentFolderId === node.item.AssetId;
234
+ };
235
+ /**
236
+ * @param {?} node
237
+ * @return {?}
238
+ */
239
+ NodeTreeComponent.prototype.disabled = /**
240
+ * @param {?} node
241
+ * @return {?}
242
+ */
243
+ function (node) {
244
+ return node.expandable;
245
+ };
246
+ /**
247
+ * @param {?} node
248
+ * @return {?}
249
+ */
250
+ NodeTreeComponent.prototype.getParent = /**
251
+ * @param {?} node
252
+ * @return {?}
253
+ */
254
+ function (node) {
255
+ /** @type {?} */
256
+ var currentLevel = this.getLevel(node);
257
+ if (currentLevel < 1) {
258
+ return null;
259
+ }
260
+ /** @type {?} */
261
+ var startIndex = this.dataSource.data.indexOf(node) - 1;
262
+ for (var i = startIndex; i >= 0; i--) {
263
+ /** @type {?} */
264
+ var currentNode = this.dataSource.data[i];
265
+ if (this.getLevel(currentNode) < currentLevel) {
266
+ return currentNode;
267
+ }
268
+ }
269
+ };
270
+ /**
271
+ * @param {?} id
272
+ * @return {?}
273
+ */
274
+ NodeTreeComponent.prototype.getNodeById = /**
275
+ * @param {?} id
276
+ * @return {?}
277
+ */
278
+ function (id) {
279
+ return this.treeControl.dataNodes.find((/**
280
+ * @param {?} node
281
+ * @return {?}
282
+ */
283
+ function (node) { return node.item.AssetId === id; }));
284
+ };
285
+ /**
286
+ * @private
287
+ * @param {?} id
288
+ * @return {?}
289
+ */
290
+ NodeTreeComponent.prototype.handleReloadFolder = /**
291
+ * @private
292
+ * @param {?} id
293
+ * @return {?}
294
+ */
295
+ function (id) {
296
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
297
+ var node, parent_1, updatedNode, updatedNode;
298
+ return tslib_1.__generator(this, function (_a) {
299
+ switch (_a.label) {
300
+ case 0:
301
+ if (!id || this.loading) {
302
+ return [2 /*return*/];
303
+ }
304
+ this.loading = true;
305
+ node = this.getNodeById(id);
306
+ if (!node) return [3 /*break*/, 8];
307
+ parent_1 = this.getParent(node);
308
+ if (!parent_1) return [3 /*break*/, 4];
309
+ return [4 /*yield*/, this.dataSource.reloadNode(parent_1)];
310
+ case 1:
311
+ _a.sent();
312
+ updatedNode = this.getNodeById(id);
313
+ if (!updatedNode) return [3 /*break*/, 3];
314
+ return [4 /*yield*/, this.treeControl.expand(updatedNode)];
315
+ case 2:
316
+ _a.sent();
317
+ _a.label = 3;
318
+ case 3: return [3 /*break*/, 7];
319
+ case 4: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
320
+ case 5:
321
+ _a.sent();
322
+ updatedNode = this.getNodeById(id);
323
+ if (!updatedNode) return [3 /*break*/, 7];
324
+ return [4 /*yield*/, this.treeControl.expand(updatedNode)];
325
+ case 6:
326
+ _a.sent();
327
+ _a.label = 7;
328
+ case 7: return [3 /*break*/, 10];
329
+ case 8: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
330
+ case 9:
331
+ _a.sent();
332
+ _a.label = 10;
333
+ case 10:
334
+ this.loading = false;
335
+ return [2 /*return*/];
336
+ }
337
+ });
338
+ });
339
+ };
340
+ /**
341
+ * @return {?}
342
+ */
343
+ NodeTreeComponent.prototype.ngOnDestroy = /**
344
+ * @return {?}
345
+ */
346
+ function () {
347
+ this.dataSource.data = [];
348
+ this.nodeTreeService.data = [];
349
+ this.unsubscribe$.next();
350
+ this.unsubscribe$.complete();
351
+ };
352
+ NodeTreeComponent.decorators = [
353
+ { type: Component, args: [{
354
+ selector: 'lib-node-tree',
355
+ template: "<div class=\"node custom-scrollbar node-tree\">\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\n disabled: loading || homeLoading}\">\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\n class=\"node__home--loading\"></mat-spinner>\n <span>Home</span>\n </div>\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\n class=\"node__item\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\n (click)=\"selectNode(node)\">\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\n node.item?.TotalFile\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n (click)=\"selectNode(node)\"\n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\n }\">\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\n node.item.OriginalFileName\" matTreeNodeToggle\n [disabled]=\"node.isLoading\">\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n </mat-tree>\n</div>",
356
+ styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:-ms-grid;display:grid;grid-auto-rows:-webkit-max-content;grid-auto-rows:max-content}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
357
+ }] }
358
+ ];
359
+ /** @nocollapse */
360
+ NodeTreeComponent.ctorParameters = function () { return [
361
+ { type: NodeTreeService },
362
+ { type: AssetManagementService },
363
+ { type: ChangeDetectorRef }
364
+ ]; };
365
+ NodeTreeComponent.propDecorators = {
366
+ width: [{ type: Input }]
367
+ };
368
+ return NodeTreeComponent;
369
+ }());
370
+ export { NodeTreeComponent };
371
+ if (false) {
372
+ /** @type {?} */
373
+ NodeTreeComponent.prototype.width;
374
+ /** @type {?} */
375
+ NodeTreeComponent.prototype.currentFolderId;
376
+ /** @type {?} */
377
+ NodeTreeComponent.prototype.isRoot;
378
+ /** @type {?} */
379
+ NodeTreeComponent.prototype.homeLoading;
380
+ /** @type {?} */
381
+ NodeTreeComponent.prototype.loading;
382
+ /** @type {?} */
383
+ NodeTreeComponent.prototype.treeControl;
384
+ /** @type {?} */
385
+ NodeTreeComponent.prototype.dataSource;
386
+ /**
387
+ * @type {?}
388
+ * @private
389
+ */
390
+ NodeTreeComponent.prototype.unsubscribe$;
391
+ /** @type {?} */
392
+ NodeTreeComponent.prototype.getLevel;
393
+ /** @type {?} */
394
+ NodeTreeComponent.prototype.isExpandable;
395
+ /** @type {?} */
396
+ NodeTreeComponent.prototype.hasChild;
397
+ /**
398
+ * @type {?}
399
+ * @private
400
+ */
401
+ NodeTreeComponent.prototype.nodeTreeService;
402
+ /**
403
+ * @type {?}
404
+ * @private
405
+ */
406
+ NodeTreeComponent.prototype.svc;
407
+ /**
408
+ * @type {?}
409
+ * @private
410
+ */
411
+ NodeTreeComponent.prototype.changeDetectorRef;
412
+ }
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLXRyZWUvbm9kZS10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRDtJQU1FLDJCQUNVLGVBQWdDLEVBQ2hDLEdBQTJCLEVBQzNCLGlCQUFvQztRQUZwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVl2QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdmLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQTZGM0MsYUFBUTs7OztRQUFHLFVBQUMsSUFBcUIsSUFBSyxPQUFBLElBQUksQ0FBQyxLQUFL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eyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVUcmVlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IER5bmFtaWNGbGF0Tm9kZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBOb2RlVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub2RlLXRyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlcywgc2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvaW5kZXgnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbm9kZS10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtdHJlZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub2RlVHJlZVNlcnZpY2U6IE5vZGVUcmVlU2VydmljZSxcbiAgICBwcml2YXRlIHN2YzogQXNzZXRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxEeW5hbWljRmxhdE5vZGU+KFxuICAgICAgdGhpcy5nZXRMZXZlbCxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlXG4gICAgKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTm9kZVRyZWVEYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIG5vZGVUcmVlU2VydmljZSk7XG4gIH1cblxuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZztcbiAgcHVibGljIGlzUm9vdCA9IGZhbHNlO1xuICBwdWJsaWMgaG9tZUxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8RHluYW1pY0ZsYXROb2RlPjtcbiAgcHVibGljIGRhdGFTb3VyY2U6IE5vZGVUcmVlRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgICB0aGlzLmluaXRpYWxEYXRhKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMubm9kZVRyZWVTZXJ2aWNlLmluaXRpYWxEYXRhKHsgZGlzcGF0Y2hSb290SWQ6IHRydWUgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRTdWJzY3JpYmVyKCkge1xuICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmxvYWRpbmckXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgobG9hZGluZykgPT4ge1xuICAgICAgICB0aGlzLmhvbWVMb2FkaW5nID0gbG9hZGluZztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmluaXRpYWxEYXRhJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgeyBBc3NldElkOiByb290SWQgfSA9IHRoaXMubm9kZVRyZWVTZXJ2aWNlLnJvb3RGb2xkZXIgfHwge0Fzc2V0SWQ6IG51bGx9O1xuICAgICAgICB0aGlzLmlzUm9vdCA9IHJvb3RJZCAmJiB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9PT0gcm9vdElkO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgobm9kZSkgPT4gdGhpcy5ub2RlVHJlZVNlcnZpY2UuYWRkTm9kZShub2RlLml0ZW0sIG51bGwpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmN1cnJlbnRGb2xkZXJJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChpZCkgPT4ge1xuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICBjb25zdCB7IEFzc2V0SWQ6IHJvb3RJZCB9ID0gdGhpcy5ub2RlVHJlZVNlcnZpY2Uucm9vdEZvbGRlciB8fCB7QXNzZXRJZDogbnVsbH07XG4gICAgICAgICAgdGhpcy5pc1Jvb3QgPSByb290SWQgJiYgaWQgPT09IHJvb3RJZDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IGlkO1xuICAgICAgICAgIGF3YWl0IHRoaXMubm9kZVRyZWVTZXJ2aWNlLnVwZGF0ZUJyZWFkY3J1bWIoaWQpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnJlbG9hZEN1cnJlbnRGb2xkZXIpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLCBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZWxvYWRGb2xkZXIodGhpcy5jdXJyZW50Rm9sZGVySWQpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbGVjdE5vZGUobm9kZTogRHluYW1pY0ZsYXROb2RlKSB7XG4gICAgY29uc3QgeyBBc3NldElkOiBpZCB9ID0gbm9kZS5pdGVtO1xuICAgIGlmIChpZCA9PT0gdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfTk9ERSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9DVVJSRU5UX0ZPTERFUl9JRCxcbiAgICAgICAgcGF5bG9hZDogaWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVSZWxvYWRGb2xkZXIoaWQpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGJhY2tUb0hvbWUoKSB7XG4gICAgdGhpcy5pbml0aWFsRGF0YSgpO1xuICAgIGNvbnN0IHsgQXNzZXRJZDogcm9vdElkIH0gPSB0aGlzLm5vZGVUcmVlU2VydmljZS5yb290Rm9sZGVyO1xuICAgIGlmICh0aGlzLmN1cnJlbnRGb2xkZXJJZCA9PT0gcm9vdElkKSB7XG4gICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX05PREUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIGNoZWNrZWQobm9kZTogRHluYW1pY0ZsYXROb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZvbGRlcklkICYmIHRoaXMuY3VycmVudEZvbGRlcklkID09PSBub2RlLml0ZW0uQXNzZXRJZDtcbiAgfVxuXG4gIGRpc2FibGVkKG5vZGU6IER5bmFtaWNGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XG4gIH1cblxuICBnZXRMZXZlbCA9IChub2RlOiBEeW5hbWljRmxhdE5vZGUpID0+IG5vZGUubGV2ZWw7XG5cbiAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IER5bmFtaWNGbGF0Tm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xuXG4gIGhhc0NoaWxkID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBEeW5hbWljRmxhdE5vZGUpID0+IF9ub2RlRGF0YS5leHBhbmRhYmxlO1xuXG4gIGdldFBhcmVudChub2RlOiBEeW5hbWljRmxhdE5vZGUpOiBEeW5hbWljRmxhdE5vZGUge1xuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHRoaXMuZ2V0TGV2ZWwobm9kZSk7XG5cbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmluZGV4T2Yobm9kZSkgLSAxO1xuXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhW2ldO1xuICAgICAgaWYgKHRoaXMuZ2V0TGV2ZWwoY3VycmVudE5vZGUpIDwgY3VycmVudExldmVsKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXROb2RlQnlJZChpZDogc3RyaW5nKTogRHluYW1pY0ZsYXROb2RlIHtcbiAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pdGVtLkFzc2V0SWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUmVsb2FkRm9sZGVyKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGVCeUlkKGlkKTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQobm9kZSk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5yZWxvYWROb2RlKHBhcmVudCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWROb2RlID0gdGhpcy5nZXROb2RlQnlJZChpZCk7XG4gICAgICAgIGlmICh1cGRhdGVkTm9kZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHVwZGF0ZWROb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ub2RlVHJlZVNlcnZpY2UuaW5pdGlhbERhdGEoeyBkaXNwYXRjaFJvb3RJZDogZmFsc2UgfSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWROb2RlID0gdGhpcy5nZXROb2RlQnlJZChpZCk7XG4gICAgICAgIGlmICh1cGRhdGVkTm9kZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHVwZGF0ZWROb2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLm5vZGVUcmVlU2VydmljZS5pbml0aWFsRGF0YSh7IGRpc3BhdGNoUm9vdElkOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFtdO1xuICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmRhdGEgPSBbXTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19