@rs-pk/asset-management 1.0.25 → 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 -6436
  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 -169
  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 -110
  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 -151
  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 -184
  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 -125
  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 -170
  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 +5635 -5635
  117. package/fesm2015/rs-pk-asset-management.js.map +1 -1
  118. package/fesm5/rs-pk-asset-management.js +6441 -6441
  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 -17
  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 -73
  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 -2
  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,458 +1,458 @@
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 { ChangeDetectorRef, Component, Input } from '@angular/core';
7
- import { MatDialog } from '@angular/material/dialog';
8
- import { of } from 'rxjs';
9
- import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
10
- import { combineLatest } from 'rxjs/internal/observable/combineLatest';
11
- import { Subject } from 'rxjs/internal/Subject';
12
- import { switchMap, takeUntil } from 'rxjs/operators';
13
- import { AssetManagementService } from '../../../asset-management.service';
14
- import { AssetService } from '../../../services/asset.service';
15
- import { NodeTreeService } from '../../../services/node-tree.service';
16
- import { ActionTypes, select } from '../../../store';
17
- import { AddFolderDialogComponent } from '../add-folder-dialog/add-folder-dialog.component';
18
- import { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';
19
- import { UploadDialogComponent } from '../upload-dialog/upload-dialog.component';
20
- var NodeDetailsComponent = /** @class */ (function () {
21
- function NodeDetailsComponent(dialog, assetService, nodeTreeService, svc, changeDetectorRef) {
22
- this.dialog = dialog;
23
- this.assetService = assetService;
24
- this.nodeTreeService = nodeTreeService;
25
- this.svc = svc;
26
- this.changeDetectorRef = changeDetectorRef;
27
- this.hasModifyPermission = true;
28
- this.hasAccessPermission = true;
29
- this.hasArchivePermission = true;
30
- this.unsubscribe$ = new Subject();
31
- this.selectedAssets = [];
32
- this.loading$ = new BehaviorSubject(false);
33
- this.bindSubscriber();
34
- }
35
- /**
36
- * @return {?}
37
- */
38
- NodeDetailsComponent.prototype.ngOnInit = /**
39
- * @return {?}
40
- */
41
- function () {
42
- var _this = this;
43
- this.assetService
44
- .getFolderList()
45
- .pipe(takeUntil(this.unsubscribe$))
46
- .subscribe((/**
47
- * @param {?} folders
48
- * @return {?}
49
- */
50
- function (folders) {
51
- _this.currentFolder = folders;
52
- _this.changeDetectorRef.detectChanges();
53
- }));
54
- this.assetService
55
- .getAssetList()
56
- .pipe(takeUntil(this.unsubscribe$))
57
- .subscribe((/**
58
- * @param {?} assets
59
- * @return {?}
60
- */
61
- function (assets) {
62
- _this.assets = assets;
63
- _this.changeDetectorRef.detectChanges();
64
- }));
65
- };
66
- /**
67
- * @private
68
- * @return {?}
69
- */
70
- NodeDetailsComponent.prototype.bindSubscriber = /**
71
- * @private
72
- * @return {?}
73
- */
74
- function () {
75
- var _this = this;
76
- select((/**
77
- * @param {?} state
78
- * @return {?}
79
- */
80
- function (state) { return state.globalLoading; }))
81
- .pipe(takeUntil(this.unsubscribe$), switchMap((/**
82
- * @param {?} res
83
- * @return {?}
84
- */
85
- function (res) { return of(res); })))
86
- .subscribe((/**
87
- * @param {?} globalLoading
88
- * @return {?}
89
- */
90
- function (globalLoading) {
91
- _this.loading$.next(globalLoading);
92
- }));
93
- select((/**
94
- * @param {?} state
95
- * @return {?}
96
- */
97
- function (state) { return state.selectedAssets; }))
98
- .pipe(takeUntil(this.unsubscribe$))
99
- .subscribe((/**
100
- * @param {?} selectedAssets
101
- * @return {?}
102
- */
103
- function (selectedAssets) {
104
- if (selectedAssets) {
105
- _this.selectedAssets = selectedAssets;
106
- }
107
- }));
108
- select((/**
109
- * @param {?} state
110
- * @return {?}
111
- */
112
- function (state) { return state.currentFolderId; }))
113
- .pipe(takeUntil(this.unsubscribe$), switchMap((/**
114
- * @param {?} res
115
- * @return {?}
116
- */
117
- function (res) { return of(res); })))
118
- .subscribe((/**
119
- * @param {?} currentFolderId
120
- * @return {?}
121
- */
122
- function (currentFolderId) {
123
- if (currentFolderId) {
124
- _this.assetService.pageIndex = 0;
125
- _this.fetchNodeDetails(currentFolderId);
126
- }
127
- }));
128
- select((/**
129
- * @param {?} state
130
- * @return {?}
131
- */
132
- function (state) { return state.reloadCurrentFolder; }))
133
- .pipe(takeUntil(this.unsubscribe$), switchMap((/**
134
- * @param {?} res
135
- * @return {?}
136
- */
137
- function (res) { return of(res); })))
138
- .subscribe((/**
139
- * @return {?}
140
- */
141
- function () {
142
- if (!_this.currentFolder) {
143
- return;
144
- }
145
- _this.fetchFolder(_this.currentFolder.AssetId);
146
- }));
147
- select((/**
148
- * @param {?} state
149
- * @return {?}
150
- */
151
- function (state) { return state.reloadCurrentNode; }))
152
- .pipe(takeUntil(this.unsubscribe$), switchMap((/**
153
- * @param {?} res
154
- * @return {?}
155
- */
156
- function (res) { return of(res); })))
157
- .subscribe((/**
158
- * @return {?}
159
- */
160
- function () {
161
- if (!_this.currentFolder) {
162
- return;
163
- }
164
- _this.assetService.pageIndex = 0;
165
- _this.fetchNodeDetails(_this.currentFolder.AssetId);
166
- }));
167
- };
168
- /**
169
- * @return {?}
170
- */
171
- NodeDetailsComponent.prototype.openUploadDialog = /**
172
- * @return {?}
173
- */
174
- function () {
175
- var _this = this;
176
- /** @type {?} */
177
- var dialogRef = this.dialog.open(UploadDialogComponent, {
178
- data: {
179
- currentAssetId: this.currentFolder.AssetId,
180
- fileType: this.assetService.dialogConfig.allowedType,
181
- maxSize: this.assetService.maxSize
182
- },
183
- panelClass: 'lib-dialog--medium',
184
- });
185
- dialogRef.afterClosed().subscribe((/**
186
- * @param {?} res
187
- * @return {?}
188
- */
189
- function (res) {
190
- if (res) {
191
- _this.svc.dispatch({
192
- type: ActionTypes.RELOAD_CURRENT_ASSETS,
193
- });
194
- _this.svc.dispatch({
195
- type: ActionTypes.RELOAD_CURRENT_FOLDER,
196
- });
197
- }
198
- }));
199
- };
200
- /**
201
- * @return {?}
202
- */
203
- NodeDetailsComponent.prototype.addFolder = /**
204
- * @return {?}
205
- */
206
- function () {
207
- var _this = this;
208
- /** @type {?} */
209
- var dialogRef = this.dialog.open(AddFolderDialogComponent, {
210
- data: {
211
- currentAssetId: this.currentFolder.AssetId,
212
- },
213
- panelClass: 'lib-dialog--small',
214
- });
215
- dialogRef.afterClosed().subscribe((/**
216
- * @param {?} res
217
- * @return {?}
218
- */
219
- function (res) {
220
- if (res) {
221
- _this.svc.dispatch({
222
- type: ActionTypes.RELOAD_CURRENT_FOLDER,
223
- });
224
- }
225
- }));
226
- };
227
- /**
228
- * @return {?}
229
- */
230
- NodeDetailsComponent.prototype.deleteAssets = /**
231
- * @return {?}
232
- */
233
- function () {
234
- var _this = this;
235
- /** @type {?} */
236
- var ids = this.selectedAssets.map((/**
237
- * @param {?} asset
238
- * @return {?}
239
- */
240
- function (asset) { return asset.AssetId; }));
241
- /** @type {?} */
242
- var dialogRef = this.dialog.open(DeleteDialogComponent, {
243
- data: {
244
- type: 'files',
245
- ids: ids,
246
- },
247
- panelClass: 'lib-dialog--small',
248
- autoFocus: false,
249
- });
250
- dialogRef.afterClosed().subscribe((/**
251
- * @param {?} res
252
- * @return {?}
253
- */
254
- function (res) {
255
- if (res) {
256
- _this.svc.dispatch({
257
- type: ActionTypes.RELOAD_CURRENT_ASSETS,
258
- });
259
- _this.svc.dispatch({
260
- type: ActionTypes.RELOAD_CURRENT_FOLDER,
261
- });
262
- _this.svc.dispatch({
263
- type: ActionTypes.SET_SELECTED_ASSETS,
264
- payload: [],
265
- });
266
- }
267
- }));
268
- };
269
- /**
270
- * @private
271
- * @param {?} id
272
- * @return {?}
273
- */
274
- NodeDetailsComponent.prototype.fetchFolder = /**
275
- * @private
276
- * @param {?} id
277
- * @return {?}
278
- */
279
- function (id) {
280
- var _this = this;
281
- this.svc.dispatch({
282
- type: ActionTypes.SET_GLOBAL_LOADING,
283
- payload: true,
284
- });
285
- this.assetService
286
- .getChildrenFolders({ assetId: id })
287
- .pipe(takeUntil(this.unsubscribe$))
288
- .subscribe((/**
289
- * @param {?} res
290
- * @return {?}
291
- */
292
- function (res) {
293
- _this.assetService.setFolderList(res.Data, res.Meta.Total);
294
- if (res.Data && res.Data.Children) {
295
- res.Data.Children.forEach((/**
296
- * @param {?} node
297
- * @return {?}
298
- */
299
- function (node) {
300
- return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId);
301
- }));
302
- }
303
- }))
304
- .add((/**
305
- * @return {?}
306
- */
307
- function () {
308
- _this.svc.dispatch({
309
- type: ActionTypes.SET_GLOBAL_LOADING,
310
- payload: false,
311
- });
312
- }));
313
- };
314
- /**
315
- * @private
316
- * @param {?} id
317
- * @return {?}
318
- */
319
- NodeDetailsComponent.prototype.fetchNodeDetails = /**
320
- * @private
321
- * @param {?} id
322
- * @return {?}
323
- */
324
- function (id) {
325
- var _this = this;
326
- this.svc.dispatch({
327
- type: ActionTypes.SET_GLOBAL_LOADING,
328
- payload: true,
329
- });
330
- combineLatest([
331
- this.assetService.getChildrenFolders({ assetId: id }),
332
- this.assetService.getChildrenAssets({
333
- assetId: id,
334
- }),
335
- ])
336
- .pipe(takeUntil(this.unsubscribe$))
337
- .subscribe((/**
338
- * @param {?} __0
339
- * @return {?}
340
- */
341
- function (_a) {
342
- var _b = tslib_1.__read(_a, 2), folders = _b[0], assets = _b[1];
343
- _this.assetService.setFolderList(folders.Data, folders.Meta.Total);
344
- _this.assetService.setAssetList(assets.Data.Children, assets.Meta);
345
- if (folders.Data && folders.Data.Children) {
346
- folders.Data.Children.forEach((/**
347
- * @param {?} node
348
- * @return {?}
349
- */
350
- function (node) {
351
- return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId);
352
- }));
353
- }
354
- }))
355
- .add((/**
356
- * @return {?}
357
- */
358
- function () {
359
- _this.svc.dispatch({
360
- type: ActionTypes.SET_GLOBAL_LOADING,
361
- payload: false,
362
- });
363
- }));
364
- };
365
- Object.defineProperty(NodeDetailsComponent.prototype, "noResults", {
366
- get: /**
367
- * @return {?}
368
- */
369
- function () {
370
- return (this.assetService.keyword &&
371
- !this.currentFolder.Children.length &&
372
- !this.assets.length);
373
- },
374
- enumerable: true,
375
- configurable: true
376
- });
377
- /**
378
- * @return {?}
379
- */
380
- NodeDetailsComponent.prototype.ngOnDestroy = /**
381
- * @return {?}
382
- */
383
- function () {
384
- this.svc.dispatch({
385
- type: ActionTypes.SET_CURRENT_FOLDER_ID,
386
- payload: null,
387
- });
388
- this.svc.dispatch({
389
- type: ActionTypes.SET_SELECTED_ASSETS,
390
- payload: [],
391
- });
392
- this.unsubscribe$.next();
393
- this.unsubscribe$.complete();
394
- };
395
- NodeDetailsComponent.decorators = [
396
- { type: Component, args: [{
397
- selector: 'lib-node-details',
398
- template: "<div class=\"node-details custom-scrollbar\">\r\n <div class=\"node-header\">\r\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\r\n </mat-progress-bar>\r\n <div class=\"node-header-content\">\r\n <div class=\"node-header-content__left\">\r\n <H5 class=\"node-header-content__left--title\">\r\n <ng-container *ngIf=\"assetService?.keyword\">\r\n Search results for <span>{{ assetService?.keyword }}</span> in\r\n </ng-container>\r\n {{ currentFolder?.OriginalFileName }}\r\n </H5>\r\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\r\n {{ assetService?.folderTotal }}\r\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\r\n {{ assetService?.fileTotal }}\r\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\r\n </p>\r\n </div>\r\n <div class=\"node-header-content__right\">\r\n <div class=\"button-wrapper\">\r\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\r\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\r\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\r\n </button>\r\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\r\n Upload asset\r\n </button>\r\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\r\n Add folder\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"node-body\">\r\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\r\n <ng-template #contentAsset>\r\n <lib-folder-list\r\n class=\"node-body__section\"\r\n [folders]=\"currentFolder?.Children\"\r\n [hasModifyPermission]=\"hasModifyPermission\"\r\n [hasAccessPermission]=\"hasAccessPermission\"\r\n [hasArchivePermission]=\"hasArchivePermission\"\r\n ></lib-folder-list>\r\n <lib-asset-list\r\n [assets]=\"assets\"\r\n [hasModifyPermission]=\"hasModifyPermission\"\r\n [hasAccessPermission]=\"hasAccessPermission\"\r\n [hasArchivePermission]=\"hasArchivePermission\"\r\n ></lib-asset-list>\r\n </ng-template>\r\n </div>\r\n</div>",
399
- styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position:-webkit-sticky;position:sticky;top:0;background-color:#fff;z-index:20}:host::ng-deep .node-details .node-header-content{padding:10px 20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}:host::ng-deep .node-details .node-header-content__left--title{margin-bottom:5px}:host::ng-deep .node-details .node-header-content__left--title span{color:#fb3458}:host::ng-deep .node-details .node-header-content__left--subtitle{margin:0;color:#979797;font-size:14px}:host::ng-deep .node-details .node-header-content__right{flex:1}:host::ng-deep .node-details .node-header-content__right .button-wrapper{display:flex;gap:15px;justify-content:flex-end}:host::ng-deep .node-details .node-header-content__right .button-wrapper .count{margin-left:3px}:host::ng-deep .node-details .node-body{padding:0 20px}:host::ng-deep .node-details .node-body__section{display:block;margin-bottom:15px}"]
400
- }] }
401
- ];
402
- /** @nocollapse */
403
- NodeDetailsComponent.ctorParameters = function () { return [
404
- { type: MatDialog },
405
- { type: AssetService },
406
- { type: NodeTreeService },
407
- { type: AssetManagementService },
408
- { type: ChangeDetectorRef }
409
- ]; };
410
- NodeDetailsComponent.propDecorators = {
411
- hasModifyPermission: [{ type: Input }],
412
- hasAccessPermission: [{ type: Input }],
413
- hasArchivePermission: [{ type: Input }]
414
- };
415
- return NodeDetailsComponent;
416
- }());
417
- export { NodeDetailsComponent };
418
- if (false) {
419
- /** @type {?} */
420
- NodeDetailsComponent.prototype.hasModifyPermission;
421
- /** @type {?} */
422
- NodeDetailsComponent.prototype.hasAccessPermission;
423
- /** @type {?} */
424
- NodeDetailsComponent.prototype.hasArchivePermission;
425
- /**
426
- * @type {?}
427
- * @private
428
- */
429
- NodeDetailsComponent.prototype.unsubscribe$;
430
- /** @type {?} */
431
- NodeDetailsComponent.prototype.selectedAssets;
432
- /** @type {?} */
433
- NodeDetailsComponent.prototype.loading$;
434
- /** @type {?} */
435
- NodeDetailsComponent.prototype.currentFolder;
436
- /** @type {?} */
437
- NodeDetailsComponent.prototype.assets;
438
- /** @type {?} */
439
- NodeDetailsComponent.prototype.dialog;
440
- /** @type {?} */
441
- NodeDetailsComponent.prototype.assetService;
442
- /**
443
- * @type {?}
444
- * @private
445
- */
446
- NodeDetailsComponent.prototype.nodeTreeService;
447
- /**
448
- * @type {?}
449
- * @private
450
- */
451
- NodeDetailsComponent.prototype.svc;
452
- /**
453
- * @type {?}
454
- * @private
455
- */
456
- NodeDetailsComponent.prototype.changeDetectorRef;
457
- }
458
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLWRldGFpbHMvbm9kZS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRjtJQVVFLDhCQUNTLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQ3pCLGVBQWdDLEVBQ2hDLEdB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QUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLG1CQUFtQjtZQUNyQyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOztnQkEvT0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLGdtRkFBNEM7O2lCQUU3Qzs7OztnQkFuQlEsU0FBUztnQkFRVCxZQUFZO2dCQUNaLGVBQWU7Z0JBSGYsc0JBQXNCO2dCQVB0QixpQkFBaUI7OztzQ0FzQnZCLEtBQUs7c0NBQ0wsS0FBSzt1Q0FDTCxLQUFLOztJQXdPUiwyQkFBQztDQUFBLEFBaFBELElBZ1BDO1NBM09ZLG9CQUFvQjs7O0lBQy9CLG1EQUE4Qzs7SUFDOUMsbURBQThDOztJQUM5QyxvREFBK0M7Ozs7O0lBWS9DLDRDQUEyQzs7SUFFM0MsOENBQThDOztJQUM5Qyx3Q0FBdUU7O0lBQ3ZFLDZDQUFzQzs7SUFDdEMsc0NBQTRCOztJQWQxQixzQ0FBd0I7O0lBQ3hCLDRDQUFpQzs7Ozs7SUFDakMsK0NBQXdDOzs7OztJQUN4QyxtQ0FBbUM7Ozs7O0lBQ25DLGlEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL0JlaGF2aW9yU3ViamVjdCc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvY29tYmluZUxhdGVzdCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXNzZXRNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Fzc2V0LW1hbmFnZW1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFzc2V0TW9kZWwsIEZvbGRlclRyZWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEFzc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fzc2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb2RlVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub2RlLXRyZWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvblR5cGVzLCBzZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSc7XHJcbmltcG9ydCB7IEFkZEZvbGRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1mb2xkZXItZGlhbG9nL2FkZC1mb2xkZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RlbGV0ZS1kaWFsb2cvZGVsZXRlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVcGxvYWREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW5vZGUtZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbm9kZS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb2RlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBoYXNNb2RpZnlQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgaGFzQWNjZXNzUGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHVibGljIGFzc2V0U2VydmljZTogQXNzZXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub2RlVHJlZVNlcnZpY2U6IE5vZGVUcmVlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkQXNzZXRzOiBBcnJheTxBc3NldE1vZGVsPiA9IFtdO1xyXG4gIHB1YmxpYyBsb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgcHVibGljIGN1cnJlbnRGb2xkZXI6IEZvbGRlclRyZWVNb2RlbDtcclxuICBwdWJsaWMgYXNzZXRzOiBBc3NldE1vZGVsW107XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hc3NldFNlcnZpY2VcclxuICAgICAgLmdldEZvbGRlckxpc3QoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChmb2xkZXJzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVyID0gZm9sZGVycztcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmFzc2V0U2VydmljZVxyXG4gICAgICAuZ2V0QXNzZXRMaXN0KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgLnN1YnNjcmliZSgoYXNzZXRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3NldHMgPSBhc3NldHM7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiaW5kU3Vic2NyaWJlcigpIHtcclxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmdsb2JhbExvYWRpbmcpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXHJcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZ2xvYmFsTG9hZGluZykgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dChnbG9iYWxMb2FkaW5nKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuc2VsZWN0ZWRBc3NldHMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkQXNzZXRzKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkQXNzZXRzKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXRzID0gc2VsZWN0ZWRBc3NldHM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5jdXJyZW50Rm9sZGVySWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXHJcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoY3VycmVudEZvbGRlcklkKSA9PiB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRGb2xkZXJJZCkge1xyXG4gICAgICAgICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gMDtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hOb2RlRGV0YWlscyhjdXJyZW50Rm9sZGVySWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudEZvbGRlcilcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEZvbGRlcikge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZldGNoRm9sZGVyKHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudE5vZGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXHJcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGb2xkZXIpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLmZldGNoTm9kZURldGFpbHModGhpcy5jdXJyZW50Rm9sZGVyLkFzc2V0SWQpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuVXBsb2FkRGlhbG9nKCkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihVcGxvYWREaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGN1cnJlbnRBc3NldElkOiB0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZCxcclxuICAgICAgICBmaWxlVHlwZTogdGhpcy5hc3NldFNlcnZpY2UuZGlhbG9nQ29uZmlnLmFsbG93ZWRUeXBlLFxyXG4gICAgICAgIG1heFNpemU6IHRoaXMuYXNzZXRTZXJ2aWNlLm1heFNpemVcclxuICAgICAgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ2xpYi1kaWFsb2ctLW1lZGl1bScsXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRGb2xkZXIoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFkZEZvbGRlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgY3VycmVudEFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkLFxyXG4gICAgICB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tc21hbGwnLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVBc3NldHMoKSB7XHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnNlbGVjdGVkQXNzZXRzLm1hcCgoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQpO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHR5cGU6ICdmaWxlcycsXHJcbiAgICAgICAgaWRzLFxyXG4gICAgICB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tc21hbGwnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0FTU0VUUyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9GT0xERVIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcclxuICAgICAgICAgIHBheWxvYWQ6IFtdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hGb2xkZXIoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXHJcbiAgICAgIHBheWxvYWQ6IHRydWUsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFzc2V0U2VydmljZVxyXG4gICAgICAuZ2V0Q2hpbGRyZW5Gb2xkZXJzKHsgYXNzZXRJZDogaWQgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0Rm9sZGVyTGlzdChyZXMuRGF0YSwgcmVzLk1ldGEuVG90YWwpO1xyXG4gICAgICAgIGlmIChyZXMuRGF0YSAmJiByZXMuRGF0YS5DaGlsZHJlbikge1xyXG4gICAgICAgICAgcmVzLkRhdGEuQ2hpbGRyZW4uZm9yRWFjaCgobm9kZSkgPT5cclxuICAgICAgICAgICAgdGhpcy5ub2RlVHJlZVNlcnZpY2UuYWRkTm9kZShub2RlLCB0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuYWRkKCgpID0+IHtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXHJcbiAgICAgICAgICBwYXlsb2FkOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoTm9kZURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXHJcbiAgICAgIHBheWxvYWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmFzc2V0U2VydmljZS5nZXRDaGlsZHJlbkZvbGRlcnMoeyBhc3NldElkOiBpZCB9KSxcclxuICAgICAgdGhpcy5hc3NldFNlcnZpY2UuZ2V0Q2hpbGRyZW5Bc3NldHMoe1xyXG4gICAgICAgIGFzc2V0SWQ6IGlkLFxyXG4gICAgICB9KSxcclxuICAgIF0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKFtmb2xkZXJzLCBhc3NldHNdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0Rm9sZGVyTGlzdChmb2xkZXJzLkRhdGEsIGZvbGRlcnMuTWV0YS5Ub3RhbCk7XHJcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0QXNzZXRMaXN0KGFzc2V0cy5EYXRhLkNoaWxkcmVuLCBhc3NldHMuTWV0YSk7XHJcbiAgICAgICAgaWYgKGZvbGRlcnMuRGF0YSAmJiBmb2xkZXJzLkRhdGEuQ2hpbGRyZW4pIHtcclxuICAgICAgICAgIGZvbGRlcnMuRGF0YS5DaGlsZHJlbi5mb3JFYWNoKChub2RlKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm5vZGVUcmVlU2VydmljZS5hZGROb2RlKG5vZGUsIHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hZGQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcclxuICAgICAgICAgIHBheWxvYWQ6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBub1Jlc3VsdHMoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmFzc2V0U2VydmljZS5rZXl3b3JkICYmXHJcbiAgICAgICF0aGlzLmN1cnJlbnRGb2xkZXIuQ2hpbGRyZW4ubGVuZ3RoICYmXHJcbiAgICAgICF0aGlzLmFzc2V0cy5sZW5ndGhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0NVUlJFTlRfRk9MREVSX0lELFxyXG4gICAgICBwYXlsb2FkOiBudWxsLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9TRUxFQ1RFRF9BU1NFVFMsXHJcbiAgICAgIHBheWxvYWQ6IFtdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
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 { ChangeDetectorRef, Component, Input } from '@angular/core';
7
+ import { MatDialog } from '@angular/material/dialog';
8
+ import { of } from 'rxjs';
9
+ import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
10
+ import { combineLatest } from 'rxjs/internal/observable/combineLatest';
11
+ import { Subject } from 'rxjs/internal/Subject';
12
+ import { switchMap, takeUntil } from 'rxjs/operators';
13
+ import { AssetManagementService } from '../../../asset-management.service';
14
+ import { AssetService } from '../../../services/asset.service';
15
+ import { NodeTreeService } from '../../../services/node-tree.service';
16
+ import { ActionTypes, select } from '../../../store';
17
+ import { AddFolderDialogComponent } from '../add-folder-dialog/add-folder-dialog.component';
18
+ import { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';
19
+ import { UploadDialogComponent } from '../upload-dialog/upload-dialog.component';
20
+ var NodeDetailsComponent = /** @class */ (function () {
21
+ function NodeDetailsComponent(dialog, assetService, nodeTreeService, svc, changeDetectorRef) {
22
+ this.dialog = dialog;
23
+ this.assetService = assetService;
24
+ this.nodeTreeService = nodeTreeService;
25
+ this.svc = svc;
26
+ this.changeDetectorRef = changeDetectorRef;
27
+ this.hasModifyPermission = true;
28
+ this.hasAccessPermission = true;
29
+ this.hasArchivePermission = true;
30
+ this.unsubscribe$ = new Subject();
31
+ this.selectedAssets = [];
32
+ this.loading$ = new BehaviorSubject(false);
33
+ this.bindSubscriber();
34
+ }
35
+ /**
36
+ * @return {?}
37
+ */
38
+ NodeDetailsComponent.prototype.ngOnInit = /**
39
+ * @return {?}
40
+ */
41
+ function () {
42
+ var _this = this;
43
+ this.assetService
44
+ .getFolderList()
45
+ .pipe(takeUntil(this.unsubscribe$))
46
+ .subscribe((/**
47
+ * @param {?} folders
48
+ * @return {?}
49
+ */
50
+ function (folders) {
51
+ _this.currentFolder = folders;
52
+ _this.changeDetectorRef.detectChanges();
53
+ }));
54
+ this.assetService
55
+ .getAssetList()
56
+ .pipe(takeUntil(this.unsubscribe$))
57
+ .subscribe((/**
58
+ * @param {?} assets
59
+ * @return {?}
60
+ */
61
+ function (assets) {
62
+ _this.assets = assets;
63
+ _this.changeDetectorRef.detectChanges();
64
+ }));
65
+ };
66
+ /**
67
+ * @private
68
+ * @return {?}
69
+ */
70
+ NodeDetailsComponent.prototype.bindSubscriber = /**
71
+ * @private
72
+ * @return {?}
73
+ */
74
+ function () {
75
+ var _this = this;
76
+ select((/**
77
+ * @param {?} state
78
+ * @return {?}
79
+ */
80
+ function (state) { return state.globalLoading; }))
81
+ .pipe(takeUntil(this.unsubscribe$), switchMap((/**
82
+ * @param {?} res
83
+ * @return {?}
84
+ */
85
+ function (res) { return of(res); })))
86
+ .subscribe((/**
87
+ * @param {?} globalLoading
88
+ * @return {?}
89
+ */
90
+ function (globalLoading) {
91
+ _this.loading$.next(globalLoading);
92
+ }));
93
+ select((/**
94
+ * @param {?} state
95
+ * @return {?}
96
+ */
97
+ function (state) { return state.selectedAssets; }))
98
+ .pipe(takeUntil(this.unsubscribe$))
99
+ .subscribe((/**
100
+ * @param {?} selectedAssets
101
+ * @return {?}
102
+ */
103
+ function (selectedAssets) {
104
+ if (selectedAssets) {
105
+ _this.selectedAssets = selectedAssets;
106
+ }
107
+ }));
108
+ select((/**
109
+ * @param {?} state
110
+ * @return {?}
111
+ */
112
+ function (state) { return state.currentFolderId; }))
113
+ .pipe(takeUntil(this.unsubscribe$), switchMap((/**
114
+ * @param {?} res
115
+ * @return {?}
116
+ */
117
+ function (res) { return of(res); })))
118
+ .subscribe((/**
119
+ * @param {?} currentFolderId
120
+ * @return {?}
121
+ */
122
+ function (currentFolderId) {
123
+ if (currentFolderId) {
124
+ _this.assetService.pageIndex = 0;
125
+ _this.fetchNodeDetails(currentFolderId);
126
+ }
127
+ }));
128
+ select((/**
129
+ * @param {?} state
130
+ * @return {?}
131
+ */
132
+ function (state) { return state.reloadCurrentFolder; }))
133
+ .pipe(takeUntil(this.unsubscribe$), switchMap((/**
134
+ * @param {?} res
135
+ * @return {?}
136
+ */
137
+ function (res) { return of(res); })))
138
+ .subscribe((/**
139
+ * @return {?}
140
+ */
141
+ function () {
142
+ if (!_this.currentFolder) {
143
+ return;
144
+ }
145
+ _this.fetchFolder(_this.currentFolder.AssetId);
146
+ }));
147
+ select((/**
148
+ * @param {?} state
149
+ * @return {?}
150
+ */
151
+ function (state) { return state.reloadCurrentNode; }))
152
+ .pipe(takeUntil(this.unsubscribe$), switchMap((/**
153
+ * @param {?} res
154
+ * @return {?}
155
+ */
156
+ function (res) { return of(res); })))
157
+ .subscribe((/**
158
+ * @return {?}
159
+ */
160
+ function () {
161
+ if (!_this.currentFolder) {
162
+ return;
163
+ }
164
+ _this.assetService.pageIndex = 0;
165
+ _this.fetchNodeDetails(_this.currentFolder.AssetId);
166
+ }));
167
+ };
168
+ /**
169
+ * @return {?}
170
+ */
171
+ NodeDetailsComponent.prototype.openUploadDialog = /**
172
+ * @return {?}
173
+ */
174
+ function () {
175
+ var _this = this;
176
+ /** @type {?} */
177
+ var dialogRef = this.dialog.open(UploadDialogComponent, {
178
+ data: {
179
+ currentAssetId: this.currentFolder.AssetId,
180
+ fileType: this.assetService.dialogConfig.allowedType,
181
+ maxSize: this.assetService.maxSize
182
+ },
183
+ panelClass: 'lib-dialog--medium',
184
+ });
185
+ dialogRef.afterClosed().subscribe((/**
186
+ * @param {?} res
187
+ * @return {?}
188
+ */
189
+ function (res) {
190
+ if (res) {
191
+ _this.svc.dispatch({
192
+ type: ActionTypes.RELOAD_CURRENT_ASSETS,
193
+ });
194
+ _this.svc.dispatch({
195
+ type: ActionTypes.RELOAD_CURRENT_FOLDER,
196
+ });
197
+ }
198
+ }));
199
+ };
200
+ /**
201
+ * @return {?}
202
+ */
203
+ NodeDetailsComponent.prototype.addFolder = /**
204
+ * @return {?}
205
+ */
206
+ function () {
207
+ var _this = this;
208
+ /** @type {?} */
209
+ var dialogRef = this.dialog.open(AddFolderDialogComponent, {
210
+ data: {
211
+ currentAssetId: this.currentFolder.AssetId,
212
+ },
213
+ panelClass: 'lib-dialog--small',
214
+ });
215
+ dialogRef.afterClosed().subscribe((/**
216
+ * @param {?} res
217
+ * @return {?}
218
+ */
219
+ function (res) {
220
+ if (res) {
221
+ _this.svc.dispatch({
222
+ type: ActionTypes.RELOAD_CURRENT_FOLDER,
223
+ });
224
+ }
225
+ }));
226
+ };
227
+ /**
228
+ * @return {?}
229
+ */
230
+ NodeDetailsComponent.prototype.deleteAssets = /**
231
+ * @return {?}
232
+ */
233
+ function () {
234
+ var _this = this;
235
+ /** @type {?} */
236
+ var ids = this.selectedAssets.map((/**
237
+ * @param {?} asset
238
+ * @return {?}
239
+ */
240
+ function (asset) { return asset.AssetId; }));
241
+ /** @type {?} */
242
+ var dialogRef = this.dialog.open(DeleteDialogComponent, {
243
+ data: {
244
+ type: 'files',
245
+ ids: ids,
246
+ },
247
+ panelClass: 'lib-dialog--small',
248
+ autoFocus: false,
249
+ });
250
+ dialogRef.afterClosed().subscribe((/**
251
+ * @param {?} res
252
+ * @return {?}
253
+ */
254
+ function (res) {
255
+ if (res) {
256
+ _this.svc.dispatch({
257
+ type: ActionTypes.RELOAD_CURRENT_ASSETS,
258
+ });
259
+ _this.svc.dispatch({
260
+ type: ActionTypes.RELOAD_CURRENT_FOLDER,
261
+ });
262
+ _this.svc.dispatch({
263
+ type: ActionTypes.SET_SELECTED_ASSETS,
264
+ payload: [],
265
+ });
266
+ }
267
+ }));
268
+ };
269
+ /**
270
+ * @private
271
+ * @param {?} id
272
+ * @return {?}
273
+ */
274
+ NodeDetailsComponent.prototype.fetchFolder = /**
275
+ * @private
276
+ * @param {?} id
277
+ * @return {?}
278
+ */
279
+ function (id) {
280
+ var _this = this;
281
+ this.svc.dispatch({
282
+ type: ActionTypes.SET_GLOBAL_LOADING,
283
+ payload: true,
284
+ });
285
+ this.assetService
286
+ .getChildrenFolders({ assetId: id })
287
+ .pipe(takeUntil(this.unsubscribe$))
288
+ .subscribe((/**
289
+ * @param {?} res
290
+ * @return {?}
291
+ */
292
+ function (res) {
293
+ _this.assetService.setFolderList(res.Data, res.Meta.Total);
294
+ if (res.Data && res.Data.Children) {
295
+ res.Data.Children.forEach((/**
296
+ * @param {?} node
297
+ * @return {?}
298
+ */
299
+ function (node) {
300
+ return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId);
301
+ }));
302
+ }
303
+ }))
304
+ .add((/**
305
+ * @return {?}
306
+ */
307
+ function () {
308
+ _this.svc.dispatch({
309
+ type: ActionTypes.SET_GLOBAL_LOADING,
310
+ payload: false,
311
+ });
312
+ }));
313
+ };
314
+ /**
315
+ * @private
316
+ * @param {?} id
317
+ * @return {?}
318
+ */
319
+ NodeDetailsComponent.prototype.fetchNodeDetails = /**
320
+ * @private
321
+ * @param {?} id
322
+ * @return {?}
323
+ */
324
+ function (id) {
325
+ var _this = this;
326
+ this.svc.dispatch({
327
+ type: ActionTypes.SET_GLOBAL_LOADING,
328
+ payload: true,
329
+ });
330
+ combineLatest([
331
+ this.assetService.getChildrenFolders({ assetId: id }),
332
+ this.assetService.getChildrenAssets({
333
+ assetId: id,
334
+ }),
335
+ ])
336
+ .pipe(takeUntil(this.unsubscribe$))
337
+ .subscribe((/**
338
+ * @param {?} __0
339
+ * @return {?}
340
+ */
341
+ function (_a) {
342
+ var _b = tslib_1.__read(_a, 2), folders = _b[0], assets = _b[1];
343
+ _this.assetService.setFolderList(folders.Data, folders.Meta.Total);
344
+ _this.assetService.setAssetList(assets.Data.Children, assets.Meta);
345
+ if (folders.Data && folders.Data.Children) {
346
+ folders.Data.Children.forEach((/**
347
+ * @param {?} node
348
+ * @return {?}
349
+ */
350
+ function (node) {
351
+ return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId);
352
+ }));
353
+ }
354
+ }))
355
+ .add((/**
356
+ * @return {?}
357
+ */
358
+ function () {
359
+ _this.svc.dispatch({
360
+ type: ActionTypes.SET_GLOBAL_LOADING,
361
+ payload: false,
362
+ });
363
+ }));
364
+ };
365
+ Object.defineProperty(NodeDetailsComponent.prototype, "noResults", {
366
+ get: /**
367
+ * @return {?}
368
+ */
369
+ function () {
370
+ return (this.assetService.keyword &&
371
+ !this.currentFolder.Children.length &&
372
+ !this.assets.length);
373
+ },
374
+ enumerable: true,
375
+ configurable: true
376
+ });
377
+ /**
378
+ * @return {?}
379
+ */
380
+ NodeDetailsComponent.prototype.ngOnDestroy = /**
381
+ * @return {?}
382
+ */
383
+ function () {
384
+ this.svc.dispatch({
385
+ type: ActionTypes.SET_CURRENT_FOLDER_ID,
386
+ payload: null,
387
+ });
388
+ this.svc.dispatch({
389
+ type: ActionTypes.SET_SELECTED_ASSETS,
390
+ payload: [],
391
+ });
392
+ this.unsubscribe$.next();
393
+ this.unsubscribe$.complete();
394
+ };
395
+ NodeDetailsComponent.decorators = [
396
+ { type: Component, args: [{
397
+ selector: 'lib-node-details',
398
+ template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
399
+ styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position:-webkit-sticky;position:sticky;top:0;background-color:#fff;z-index:20}:host::ng-deep .node-details .node-header-content{padding:10px 20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}:host::ng-deep .node-details .node-header-content__left--title{margin-bottom:5px}:host::ng-deep .node-details .node-header-content__left--title span{color:#fb3458}:host::ng-deep .node-details .node-header-content__left--subtitle{margin:0;color:#979797;font-size:14px}:host::ng-deep .node-details .node-header-content__right{flex:1}:host::ng-deep .node-details .node-header-content__right .button-wrapper{display:flex;gap:15px;justify-content:flex-end}:host::ng-deep .node-details .node-header-content__right .button-wrapper .count{margin-left:3px}:host::ng-deep .node-details .node-body{padding:0 20px}:host::ng-deep .node-details .node-body__section{display:block;margin-bottom:15px}"]
400
+ }] }
401
+ ];
402
+ /** @nocollapse */
403
+ NodeDetailsComponent.ctorParameters = function () { return [
404
+ { type: MatDialog },
405
+ { type: AssetService },
406
+ { type: NodeTreeService },
407
+ { type: AssetManagementService },
408
+ { type: ChangeDetectorRef }
409
+ ]; };
410
+ NodeDetailsComponent.propDecorators = {
411
+ hasModifyPermission: [{ type: Input }],
412
+ hasAccessPermission: [{ type: Input }],
413
+ hasArchivePermission: [{ type: Input }]
414
+ };
415
+ return NodeDetailsComponent;
416
+ }());
417
+ export { NodeDetailsComponent };
418
+ if (false) {
419
+ /** @type {?} */
420
+ NodeDetailsComponent.prototype.hasModifyPermission;
421
+ /** @type {?} */
422
+ NodeDetailsComponent.prototype.hasAccessPermission;
423
+ /** @type {?} */
424
+ NodeDetailsComponent.prototype.hasArchivePermission;
425
+ /**
426
+ * @type {?}
427
+ * @private
428
+ */
429
+ NodeDetailsComponent.prototype.unsubscribe$;
430
+ /** @type {?} */
431
+ NodeDetailsComponent.prototype.selectedAssets;
432
+ /** @type {?} */
433
+ NodeDetailsComponent.prototype.loading$;
434
+ /** @type {?} */
435
+ NodeDetailsComponent.prototype.currentFolder;
436
+ /** @type {?} */
437
+ NodeDetailsComponent.prototype.assets;
438
+ /** @type {?} */
439
+ NodeDetailsComponent.prototype.dialog;
440
+ /** @type {?} */
441
+ NodeDetailsComponent.prototype.assetService;
442
+ /**
443
+ * @type {?}
444
+ * @private
445
+ */
446
+ NodeDetailsComponent.prototype.nodeTreeService;
447
+ /**
448
+ * @type {?}
449
+ * @private
450
+ */
451
+ NodeDetailsComponent.prototype.svc;
452
+ /**
453
+ * @type {?}
454
+ * @private
455
+ */
456
+ NodeDetailsComponent.prototype.changeDetectorRef;
457
+ }
458
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLWRldGFpbHMvbm9kZS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRjtJQVVFLDhCQUNTLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQ3pCLGVBQWdDLEVBQ2hDLEdB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QUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLG1CQUFtQjtZQUNyQyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOztnQkEvT0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLHMvRUFBNEM7O2lCQUU3Qzs7OztnQkFuQlEsU0FBUztnQkFRVCxZQUFZO2dCQUNaLGVBQWU7Z0JBSGYsc0JBQXNCO2dCQVB0QixpQkFBaUI7OztzQ0FzQnZCLEtBQUs7c0NBQ0wsS0FBSzt1Q0FDTCxLQUFLOztJQXdPUiwyQkFBQztDQUFBLEFBaFBELElBZ1BDO1NBM09ZLG9CQUFvQjs7O0lBQy9CLG1EQUE4Qzs7SUFDOUMsbURBQThDOztJQUM5QyxvREFBK0M7Ozs7O0lBWS9DLDRDQUEyQzs7SUFFM0MsOENBQThDOztJQUM5Qyx3Q0FBdUU7O0lBQ3ZFLDZDQUFzQzs7SUFDdEMsc0NBQTRCOztJQWQxQixzQ0FBd0I7O0lBQ3hCLDRDQUFpQzs7Ozs7SUFDakMsK0NBQXdDOzs7OztJQUN4QyxtQ0FBbUM7Ozs7O0lBQ25DLGlEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL0JlaGF2aW9yU3ViamVjdCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL2NvbWJpbmVMYXRlc3QnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3ViamVjdCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hc3NldC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXRNb2RlbCwgRm9sZGVyVHJlZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFzc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fzc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm9kZS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uVHlwZXMsIHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlJztcbmltcG9ydCB7IEFkZEZvbGRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1mb2xkZXItZGlhbG9nL2FkZC1mb2xkZXItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFVwbG9hZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZC1kaWFsb2cvdXBsb2FkLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbm9kZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaGFzTW9kaWZ5UGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBoYXNBY2Nlc3NQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBhc3NldFNlcnZpY2U6IEFzc2V0U2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVUcmVlU2VydmljZTogTm9kZVRyZWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgc2VsZWN0ZWRBc3NldHM6IEFycmF5PEFzc2V0TW9kZWw+ID0gW107XG4gIHB1YmxpYyBsb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBjdXJyZW50Rm9sZGVyOiBGb2xkZXJUcmVlTW9kZWw7XG4gIHB1YmxpYyBhc3NldHM6IEFzc2V0TW9kZWxbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFzc2V0U2VydmljZVxuICAgICAgLmdldEZvbGRlckxpc3QoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGZvbGRlcnMpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVyID0gZm9sZGVycztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLmFzc2V0U2VydmljZVxuICAgICAgLmdldEFzc2V0TGlzdCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoYXNzZXRzKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXRzO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kU3Vic2NyaWJlcigpIHtcbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxMb2FkaW5nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZ2xvYmFsTG9hZGluZykgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZ2xvYmFsTG9hZGluZyk7XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnNlbGVjdGVkQXNzZXRzKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkQXNzZXRzKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEFzc2V0cykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NldHMgPSBzZWxlY3RlZEFzc2V0cztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5jdXJyZW50Rm9sZGVySWQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50Rm9sZGVySWQpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRGb2xkZXJJZCkge1xuICAgICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VJbmRleCA9IDA7XG4gICAgICAgICAgdGhpcy5mZXRjaE5vZGVEZXRhaWxzKGN1cnJlbnRGb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudEZvbGRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEZvbGRlcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZldGNoRm9sZGVyKHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKTtcbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudE5vZGUpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5mZXRjaE5vZGVEZXRhaWxzKHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5VcGxvYWREaWFsb2coKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihVcGxvYWREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY3VycmVudEFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkLFxuICAgICAgICBmaWxlVHlwZTogdGhpcy5hc3NldFNlcnZpY2UuZGlhbG9nQ29uZmlnLmFsbG93ZWRUeXBlLFxuICAgICAgICBtYXhTaXplOiB0aGlzLmFzc2V0U2VydmljZS5tYXhTaXplXG4gICAgICB9LFxuICAgICAgcGFuZWxDbGFzczogJ2xpYi1kaWFsb2ctLW1lZGl1bScsXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRGb2xkZXIoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBZGRGb2xkZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY3VycmVudEFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkLFxuICAgICAgfSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1zbWFsbCcsXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfRk9MREVSLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUFzc2V0cygpIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLnNlbGVjdGVkQXNzZXRzLm1hcCgoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQpO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHR5cGU6ICdmaWxlcycsXG4gICAgICAgIGlkcyxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tc21hbGwnLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9BU1NFVFMsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfRk9MREVSLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9TRUxFQ1RFRF9BU1NFVFMsXG4gICAgICAgICAgcGF5bG9hZDogW10sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEZvbGRlcihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgcGF5bG9hZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Q2hpbGRyZW5Gb2xkZXJzKHsgYXNzZXRJZDogaWQgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0Rm9sZGVyTGlzdChyZXMuRGF0YSwgcmVzLk1ldGEuVG90YWwpO1xuICAgICAgICBpZiAocmVzLkRhdGEgJiYgcmVzLkRhdGEuQ2hpbGRyZW4pIHtcbiAgICAgICAgICByZXMuRGF0YS5DaGlsZHJlbi5mb3JFYWNoKChub2RlKSA9PlxuICAgICAgICAgICAgdGhpcy5ub2RlVHJlZVNlcnZpY2UuYWRkTm9kZShub2RlLCB0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXG4gICAgICAgICAgcGF5bG9hZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoTm9kZURldGFpbHMoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcbiAgICAgIHBheWxvYWQ6IHRydWUsXG4gICAgfSk7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFzc2V0U2VydmljZS5nZXRDaGlsZHJlbkZvbGRlcnMoeyBhc3NldElkOiBpZCB9KSxcbiAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLmdldENoaWxkcmVuQXNzZXRzKHtcbiAgICAgICAgYXNzZXRJZDogaWQsXG4gICAgICB9KSxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtmb2xkZXJzLCBhc3NldHNdKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEZvbGRlckxpc3QoZm9sZGVycy5EYXRhLCBmb2xkZXJzLk1ldGEuVG90YWwpO1xuICAgICAgICB0aGlzLmFzc2V0U2VydmljZS5zZXRBc3NldExpc3QoYXNzZXRzLkRhdGEuQ2hpbGRyZW4sIGFzc2V0cy5NZXRhKTtcbiAgICAgICAgaWYgKGZvbGRlcnMuRGF0YSAmJiBmb2xkZXJzLkRhdGEuQ2hpbGRyZW4pIHtcbiAgICAgICAgICBmb2xkZXJzLkRhdGEuQ2hpbGRyZW4uZm9yRWFjaCgobm9kZSkgPT5cbiAgICAgICAgICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmFkZE5vZGUobm9kZSwgdGhpcy5jdXJyZW50Rm9sZGVyLkFzc2V0SWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgICAgIHBheWxvYWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5vUmVzdWx0cygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5hc3NldFNlcnZpY2Uua2V5d29yZCAmJlxuICAgICAgIXRoaXMuY3VycmVudEZvbGRlci5DaGlsZHJlbi5sZW5ndGggJiZcbiAgICAgICF0aGlzLmFzc2V0cy5sZW5ndGhcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0NVUlJFTlRfRk9MREVSX0lELFxuICAgICAgcGF5bG9hZDogbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxuICAgICAgcGF5bG9hZDogW10sXG4gICAgfSk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==