@rs-pk/asset-management 1.0.22 → 1.0.24

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 +6444 -6327
  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 +164 -152
  7. package/esm2015/lib/asset-management.module.js +178 -179
  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 -395
  11. package/esm2015/lib/components/partial/asset-item/asset-item.component.js +316 -299
  12. package/esm2015/lib/components/partial/asset-list/asset-list.component.js +285 -273
  13. package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +123 -109
  14. package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +119 -100
  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 -114
  21. package/esm2015/lib/components/partial/folder-list/folder-list.component.js +81 -69
  22. package/esm2015/lib/components/partial/node-details/node-details.component.js +417 -403
  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 +149 -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 +179 -167
  62. package/esm5/lib/asset-management.module.js +179 -180
  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 -437
  66. package/esm5/lib/components/partial/asset-item/asset-item.component.js +350 -333
  67. package/esm5/lib/components/partial/asset-list/asset-list.component.js +318 -306
  68. package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +138 -124
  69. package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +137 -115
  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 -126
  76. package/esm5/lib/components/partial/folder-list/folder-list.component.js +94 -82
  77. package/esm5/lib/components/partial/node-details/node-details.component.js +458 -444
  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 +168 -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 +5642 -5528
  117. package/fesm2015/rs-pk-asset-management.js.map +1 -1
  118. package/fesm5/rs-pk-asset-management.js +6448 -6331
  119. package/fesm5/rs-pk-asset-management.js.map +1 -1
  120. package/lib/asset-management.component.d.ts +25 -22
  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 -60
  125. package/lib/components/partial/asset-item/asset-item.component.d.ts +40 -37
  126. package/lib/components/partial/asset-list/asset-list.component.d.ts +27 -24
  127. package/lib/components/partial/asset-management-dialog/asset-management-dialog.component.d.ts +20 -17
  128. package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +23 -19
  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 -14
  135. package/lib/components/partial/folder-list/folder-list.component.d.ts +14 -11
  136. package/lib/components/partial/node-details/node-details.component.d.ts +32 -29
  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 +68 -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,306 +1,318 @@
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 { Component, Input, ViewChild, } from '@angular/core';
7
- import { MatPaginator } from '@angular/material/paginator';
8
- import { of } from 'rxjs/internal/observable/of';
9
- import { Subject } from 'rxjs/internal/Subject';
10
- import { switchMap, takeUntil } from 'rxjs/operators';
11
- import { AssetManagementService } from '../../../asset-management.service';
12
- import { BackgroudProcessingStatus } from '../../../models';
13
- import { AssetService } from '../../../services/asset.service';
14
- import { ActionTypes } from '../../../store/actions.action';
15
- import { select } from '../../../store/reducer';
16
- var AssetListComponent = /** @class */ (function () {
17
- function AssetListComponent(assetService, svc) {
18
- this.assetService = assetService;
19
- this.svc = svc;
20
- this.backgroundProcessingNum = BackgroudProcessingStatus;
21
- this.unsubscribe$ = new Subject();
22
- this.selectedAssets = [];
23
- }
24
- /**
25
- * @return {?}
26
- */
27
- AssetListComponent.prototype.ngOnInit = /**
28
- * @return {?}
29
- */
30
- function () {
31
- this.bindSubscriber();
32
- };
33
- /**
34
- * @param {?} changes
35
- * @return {?}
36
- */
37
- AssetListComponent.prototype.ngOnChanges = /**
38
- * @param {?} changes
39
- * @return {?}
40
- */
41
- function (changes) {
42
- var _this = this;
43
- if (changes.assets) {
44
- // Check if asset is uploading
45
- if (this.assets && this.assets.find((/**
46
- * @param {?} x
47
- * @return {?}
48
- */
49
- function (x) { return x.BackgroudProcessingStatus === _this.backgroundProcessingNum.InProcessing; }))) {
50
- this._resetUploadingAssets();
51
- }
52
- ;
53
- this.paginator.pageIndex = this.assetService.pageIndex;
54
- this.paginator.pageSize = this.assetService.pageSize;
55
- this.paginator.length = this.assetService.fileTotal;
56
- }
57
- };
58
- /**
59
- * @param {?} event
60
- * @return {?}
61
- */
62
- AssetListComponent.prototype.onSelectAsset = /**
63
- * @param {?} event
64
- * @return {?}
65
- */
66
- function (event) {
67
- /** @type {?} */
68
- var index = this.selectedAssets.findIndex((/**
69
- * @param {?} asset
70
- * @return {?}
71
- */
72
- function (asset) { return asset.AssetId === event.AssetId; }));
73
- /** @type {?} */
74
- var newSelectedAssets = index > -1
75
- ? this.selectedAssets.filter((/**
76
- * @param {?} asset
77
- * @param {?} i
78
- * @return {?}
79
- */
80
- function (asset, i) { return index !== i; }))
81
- : tslib_1.__spread(this.selectedAssets, [event]);
82
- this.svc.dispatch({
83
- type: ActionTypes.SET_SELECTED_ASSETS,
84
- payload: newSelectedAssets,
85
- });
86
- };
87
- /**
88
- * @private
89
- * @return {?}
90
- */
91
- AssetListComponent.prototype.bindSubscriber = /**
92
- * @private
93
- * @return {?}
94
- */
95
- function () {
96
- var _this = this;
97
- select((/**
98
- * @param {?} state
99
- * @return {?}
100
- */
101
- function (state) { return state.deletedAssetId; }))
102
- .pipe(takeUntil(this.unsubscribe$))
103
- .subscribe((/**
104
- * @param {?} id
105
- * @return {?}
106
- */
107
- function (id) {
108
- if (_this.selectedAssets && _this.selectedAssets.length) {
109
- /** @type {?} */
110
- var newSelectedAssets = _this.selectedAssets.filter((/**
111
- * @param {?} asset
112
- * @return {?}
113
- */
114
- function (asset) { return asset.AssetId !== id; }));
115
- _this.svc.dispatch({
116
- type: ActionTypes.SET_SELECTED_ASSETS,
117
- payload: newSelectedAssets,
118
- });
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 {?} currentFolderId
129
- * @return {?}
130
- */
131
- function (currentFolderId) {
132
- _this.currentFolderId = currentFolderId;
133
- _this.svc.dispatch({
134
- type: ActionTypes.SET_SELECTED_ASSETS,
135
- payload: [],
136
- });
137
- }));
138
- select((/**
139
- * @param {?} state
140
- * @return {?}
141
- */
142
- function (state) { return state.selectedAssets; }))
143
- .pipe(takeUntil(this.unsubscribe$))
144
- .subscribe((/**
145
- * @param {?} selectedAssets
146
- * @return {?}
147
- */
148
- function (selectedAssets) {
149
- _this.selectedAssets = selectedAssets;
150
- }));
151
- select((/**
152
- * @param {?} state
153
- * @return {?}
154
- */
155
- function (state) { return state.reloadCurrentAssets; }))
156
- .pipe(takeUntil(this.unsubscribe$), switchMap((/**
157
- * @param {?} res
158
- * @return {?}
159
- */
160
- function (res) { return of(res); })))
161
- .subscribe((/**
162
- * @return {?}
163
- */
164
- function () {
165
- _this.fetchChildrenAssets();
166
- }));
167
- };
168
- /**
169
- * @param {?=} event
170
- * @return {?}
171
- */
172
- AssetListComponent.prototype.pageChange = /**
173
- * @param {?=} event
174
- * @return {?}
175
- */
176
- function (event) {
177
- this.assetService.pageSize = event.pageSize;
178
- this.assetService.pageIndex = event.pageIndex;
179
- this.fetchChildrenAssets();
180
- };
181
- /**
182
- * @private
183
- * @return {?}
184
- */
185
- AssetListComponent.prototype.fetchChildrenAssets = /**
186
- * @private
187
- * @return {?}
188
- */
189
- function () {
190
- var _this = this;
191
- if (!this.currentFolderId) {
192
- return;
193
- }
194
- this.svc.dispatch({
195
- type: ActionTypes.SET_GLOBAL_LOADING,
196
- payload: true,
197
- });
198
- this.assetService
199
- .getChildrenAssets({ assetId: this.currentFolderId })
200
- .pipe(takeUntil(this.unsubscribe$))
201
- .subscribe((/**
202
- * @param {?} res
203
- * @return {?}
204
- */
205
- function (res) {
206
- _this.assetService.setAssetList(res.Data.Children, res.Meta);
207
- }))
208
- .add((/**
209
- * @return {?}
210
- */
211
- function () {
212
- _this.svc.dispatch({
213
- type: ActionTypes.SET_GLOBAL_LOADING,
214
- payload: false,
215
- });
216
- }));
217
- };
218
- /**
219
- * @private
220
- * @return {?}
221
- */
222
- AssetListComponent.prototype._resetUploadingAssets = /**
223
- * @private
224
- * @return {?}
225
- */
226
- function () {
227
- var _this = this;
228
- /** @type {?} */
229
- var reload = setInterval((/**
230
- * @return {?}
231
- */
232
- function () {
233
- _this.fetchChildrenAssets();
234
- if (_this.assets.find((/**
235
- * @param {?} x
236
- * @return {?}
237
- */
238
- function (x) { return x.BackgroudProcessingStatus === _this.backgroundProcessingNum.Processed; }))) {
239
- clearInterval(reload);
240
- }
241
- console.log('Upload Successfully!'); // interval will be cleared after completing this whole block
242
- }), 5000);
243
- };
244
- /**
245
- * @return {?}
246
- */
247
- AssetListComponent.prototype.ngOnDestroy = /**
248
- * @return {?}
249
- */
250
- function () {
251
- this.unsubscribe$.next();
252
- this.unsubscribe$.complete();
253
- };
254
- AssetListComponent.decorators = [
255
- { type: Component, args: [{
256
- selector: 'lib-asset-list',
257
- template: "<div class=\"asset-container\">\n <div class=\"asset-heading\">\n <h6 class=\"asset-heading__title\">Files</h6>\n <lib-sort-items\n [hidden]=\"!assets?.length\"\n class=\"asset-heading__sort\"\n ></lib-sort-items>\n </div>\n <ng-container *ngIf=\"assets && !assets.length; else assetsTemplate\">\n <div class=\"asset-empty\">\n <span>This asset is empty.</span>\n </div>\n </ng-container>\n <ng-template #assetsTemplate>\n <div class=\"asset-list\">\n <lib-asset-item\n class=\"asset-list__item\"\n *ngFor=\"let asset of assets\"\n [asset]=\"asset\"\n (selectAsset)=\"onSelectAsset($event)\"\n >\n </lib-asset-item>\n </div>\n </ng-template>\n <div [hidden]=\"!assets?.length\">\n <mat-paginator\n #paginator\n [pageSizeOptions]=\"[12, 24, 60, 120]\"\n (page)=\"pageChange($event)\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n</div>\n",
258
- styles: [":host::ng-deep .asset-container .asset-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}:host::ng-deep .asset-container .asset-heading__title{margin-bottom:0;color:#979797}:host::ng-deep .asset-container .asset-list{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;margin:0 -5px}:host::ng-deep .asset-container .asset-list__item{width:25%}@media only screen and (max-width:1200px){:host::ng-deep .asset-container .asset-list__item{width:calc(100% / 3)}}@media only screen and (max-width:960px){:host::ng-deep .asset-container .asset-list__item{width:50%}}:host::ng-deep .asset-container .asset-empty{text-align:center;color:#979797;font-size:14px}"]
259
- }] }
260
- ];
261
- /** @nocollapse */
262
- AssetListComponent.ctorParameters = function () { return [
263
- { type: AssetService },
264
- { type: AssetManagementService }
265
- ]; };
266
- AssetListComponent.propDecorators = {
267
- paginator: [{ type: ViewChild, args: [MatPaginator, { static: true },] }],
268
- assets: [{ type: Input }]
269
- };
270
- return AssetListComponent;
271
- }());
272
- export { AssetListComponent };
273
- if (false) {
274
- /** @type {?} */
275
- AssetListComponent.prototype.paginator;
276
- /** @type {?} */
277
- AssetListComponent.prototype.assets;
278
- /** @type {?} */
279
- AssetListComponent.prototype.backgroundProcessingNum;
280
- /**
281
- * @type {?}
282
- * @private
283
- */
284
- AssetListComponent.prototype.unsubscribe$;
285
- /**
286
- * @type {?}
287
- * @private
288
- */
289
- AssetListComponent.prototype.currentFolderId;
290
- /**
291
- * @type {?}
292
- * @private
293
- */
294
- AssetListComponent.prototype.selectedAssets;
295
- /**
296
- * @type {?}
297
- * @private
298
- */
299
- AssetListComponent.prototype.assetService;
300
- /**
301
- * @type {?}
302
- * @private
303
- */
304
- AssetListComponent.prototype.svc;
305
- }
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtbGlzdC9hc3NldC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBYyx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhEO0lBTUUsNEJBQ1UsWUFBMEIsRUFDMUIsR0FBMkI7UUFEM0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFNOUIsNEJBQXVCLEdBQUcseUJBQXlCLENBQUM7UUFFbkQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRW5DLG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztJQVQ1QyxDQUFDOzs7O0lBV0oscUNBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lB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Z0I7b0JBQzFCLDA5QkFBMEM7O2lCQUUzQzs7OztnQkFSUSxZQUFZO2dCQUZaLHNCQUFzQjs7OzRCQWlCNUIsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7eUJBQ3hDLEtBQUs7O0lBNEhSLHlCQUFDO0NBQUEsQUF4SUQsSUF3SUM7U0FuSVksa0JBQWtCOzs7SUFNN0IsdUNBQW1FOztJQUNuRSxvQ0FBOEI7O0lBRTlCLHFEQUEyRDs7Ozs7SUFFM0QsMENBQTJDOzs7OztJQUMzQyw2Q0FBZ0M7Ozs7O0lBQ2hDLDRDQUErQzs7Ozs7SUFYN0MsMENBQWtDOzs7OztJQUNsQyxpQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvb2YnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3ViamVjdCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hc3NldC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXRNb2RlbCwgQmFja2dyb3VkUHJvY2Vzc2luZ1N0YXR1cyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBc3NldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hc3NldC5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvblR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWN0aW9ucy5hY3Rpb24nO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hc3NldC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NldC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFzc2V0U2VydmljZTogQXNzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlXG4gICkge31cblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIEBJbnB1dCgpIGFzc2V0czogQXNzZXRNb2RlbFtdO1xuXG4gIHB1YmxpYyBiYWNrZ3JvdW5kUHJvY2Vzc2luZ051bSA9IEJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXM7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGN1cnJlbnRGb2xkZXJJZDogc3RyaW5nO1xuICBwcml2YXRlIHNlbGVjdGVkQXNzZXRzOiBBcnJheTxBc3NldE1vZGVsPiA9IFtdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hc3NldHMpIHtcbiAgICAgIC8vIENoZWNrIGlmIGFzc2V0IGlzIHVwbG9hZGluZ1xuICAgICAgaWYgKHRoaXMuYXNzZXRzICYmIHRoaXMuYXNzZXRzLmZpbmQoeCA9PiB4LkJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXMgPT09IHRoaXMuYmFja2dyb3VuZFByb2Nlc3NpbmdOdW0uSW5Qcm9jZXNzaW5nKSkge1xuICAgICAgICB0aGlzLl9yZXNldFVwbG9hZGluZ0Fzc2V0cygpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4O1xuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSB0aGlzLmFzc2V0U2VydmljZS5wYWdlU2l6ZTtcbiAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IHRoaXMuYXNzZXRTZXJ2aWNlLmZpbGVUb3RhbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RBc3NldChldmVudDogQXNzZXRNb2RlbCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEFzc2V0cy5maW5kSW5kZXgoXG4gICAgICAoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQgPT09IGV2ZW50LkFzc2V0SWRcbiAgICApO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkQXNzZXRzOiBBc3NldE1vZGVsW10gPVxuICAgICAgaW5kZXggPiAtMVxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKChhc3NldCwgaSkgPT4gaW5kZXggIT09IGkpXG4gICAgICAgIDogWy4uLnRoaXMuc2VsZWN0ZWRBc3NldHMsIGV2ZW50XTtcblxuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9TRUxFQ1RFRF9BU1NFVFMsXG4gICAgICBwYXlsb2FkOiBuZXdTZWxlY3RlZEFzc2V0cyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZFN1YnNjcmliZXIoKSB7XG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuZGVsZXRlZEFzc2V0SWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoaWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBc3NldHMgJiYgdGhpcy5zZWxlY3RlZEFzc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEFzc2V0cyA9IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKFxuICAgICAgICAgICAgKGFzc2V0KSA9PiBhc3NldC5Bc3NldElkICE9PSBpZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcbiAgICAgICAgICAgIHBheWxvYWQ6IG5ld1NlbGVjdGVkQXNzZXRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmN1cnJlbnRGb2xkZXJJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50Rm9sZGVySWQpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVySWQgPSBjdXJyZW50Rm9sZGVySWQ7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxuICAgICAgICAgIHBheWxvYWQ6IFtdLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuc2VsZWN0ZWRBc3NldHMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWRBc3NldHMpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2V0cyA9IHNlbGVjdGVkQXNzZXRzO1xuICAgICAgfSk7XG5cbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5yZWxvYWRDdXJyZW50QXNzZXRzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudD86IFBhZ2VFdmVudCkge1xuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XG4gICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaENoaWxkcmVuQXNzZXRzKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgcGF5bG9hZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Q2hpbGRyZW5Bc3NldHMoeyBhc3NldElkOiB0aGlzLmN1cnJlbnRGb2xkZXJJZCB9KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmFzc2V0U2VydmljZS5zZXRBc3NldExpc3QocmVzLkRhdGEuQ2hpbGRyZW4sIHJlcy5NZXRhKTtcbiAgICAgIH0pXG4gICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcbiAgICAgICAgICBwYXlsb2FkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0VXBsb2FkaW5nQXNzZXRzICgpIHtcbiAgICBjb25zdCByZWxvYWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmZldGNoQ2hpbGRyZW5Bc3NldHMoKTtcbiAgICAgIGlmICh0aGlzLmFzc2V0cy5maW5kKHggPT4geC5CYWNrZ3JvdWRQcm9jZXNzaW5nU3RhdHVzID09PSB0aGlzLmJhY2tncm91bmRQcm9jZXNzaW5nTnVtLlByb2Nlc3NlZCkpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChyZWxvYWQpO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ1VwbG9hZCBTdWNjZXNzZnVsbHkhJyk7IC8vIGludGVydmFsIHdpbGwgYmUgY2xlYXJlZCBhZnRlciBjb21wbGV0aW5nIHRoaXMgd2hvbGUgYmxvY2tcbiAgICB9LCA1MDAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
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 { Component, Input, ViewChild, } from '@angular/core';
7
+ import { MatPaginator } from '@angular/material/paginator';
8
+ import { of } from 'rxjs/internal/observable/of';
9
+ import { Subject } from 'rxjs/internal/Subject';
10
+ import { switchMap, takeUntil } from 'rxjs/operators';
11
+ import { AssetManagementService } from '../../../asset-management.service';
12
+ import { BackgroudProcessingStatus } from '../../../models';
13
+ import { AssetService } from '../../../services/asset.service';
14
+ import { ActionTypes } from '../../../store/actions.action';
15
+ import { select } from '../../../store/reducer';
16
+ var AssetListComponent = /** @class */ (function () {
17
+ function AssetListComponent(assetService, svc) {
18
+ this.assetService = assetService;
19
+ this.svc = svc;
20
+ this.hasModifyPermission = true;
21
+ this.hasAccessPermission = true;
22
+ this.hasArchivePermission = true;
23
+ this.backgroundProcessingNum = BackgroudProcessingStatus;
24
+ this.unsubscribe$ = new Subject();
25
+ this.selectedAssets = [];
26
+ }
27
+ /**
28
+ * @return {?}
29
+ */
30
+ AssetListComponent.prototype.ngOnInit = /**
31
+ * @return {?}
32
+ */
33
+ function () {
34
+ this.bindSubscriber();
35
+ };
36
+ /**
37
+ * @param {?} changes
38
+ * @return {?}
39
+ */
40
+ AssetListComponent.prototype.ngOnChanges = /**
41
+ * @param {?} changes
42
+ * @return {?}
43
+ */
44
+ function (changes) {
45
+ var _this = this;
46
+ if (changes.assets) {
47
+ // Check if asset is uploading
48
+ if (this.assets && this.assets.find((/**
49
+ * @param {?} x
50
+ * @return {?}
51
+ */
52
+ function (x) { return x.BackgroudProcessingStatus === _this.backgroundProcessingNum.InProcessing; }))) {
53
+ this._resetUploadingAssets();
54
+ }
55
+ ;
56
+ this.paginator.pageIndex = this.assetService.pageIndex;
57
+ this.paginator.pageSize = this.assetService.pageSize;
58
+ this.paginator.length = this.assetService.fileTotal;
59
+ }
60
+ };
61
+ /**
62
+ * @param {?} event
63
+ * @return {?}
64
+ */
65
+ AssetListComponent.prototype.onSelectAsset = /**
66
+ * @param {?} event
67
+ * @return {?}
68
+ */
69
+ function (event) {
70
+ /** @type {?} */
71
+ var index = this.selectedAssets.findIndex((/**
72
+ * @param {?} asset
73
+ * @return {?}
74
+ */
75
+ function (asset) { return asset.AssetId === event.AssetId; }));
76
+ /** @type {?} */
77
+ var newSelectedAssets = index > -1
78
+ ? this.selectedAssets.filter((/**
79
+ * @param {?} asset
80
+ * @param {?} i
81
+ * @return {?}
82
+ */
83
+ function (asset, i) { return index !== i; }))
84
+ : tslib_1.__spread(this.selectedAssets, [event]);
85
+ this.svc.dispatch({
86
+ type: ActionTypes.SET_SELECTED_ASSETS,
87
+ payload: newSelectedAssets,
88
+ });
89
+ };
90
+ /**
91
+ * @private
92
+ * @return {?}
93
+ */
94
+ AssetListComponent.prototype.bindSubscriber = /**
95
+ * @private
96
+ * @return {?}
97
+ */
98
+ function () {
99
+ var _this = this;
100
+ select((/**
101
+ * @param {?} state
102
+ * @return {?}
103
+ */
104
+ function (state) { return state.deletedAssetId; }))
105
+ .pipe(takeUntil(this.unsubscribe$))
106
+ .subscribe((/**
107
+ * @param {?} id
108
+ * @return {?}
109
+ */
110
+ function (id) {
111
+ if (_this.selectedAssets && _this.selectedAssets.length) {
112
+ /** @type {?} */
113
+ var newSelectedAssets = _this.selectedAssets.filter((/**
114
+ * @param {?} asset
115
+ * @return {?}
116
+ */
117
+ function (asset) { return asset.AssetId !== id; }));
118
+ _this.svc.dispatch({
119
+ type: ActionTypes.SET_SELECTED_ASSETS,
120
+ payload: newSelectedAssets,
121
+ });
122
+ }
123
+ }));
124
+ select((/**
125
+ * @param {?} state
126
+ * @return {?}
127
+ */
128
+ function (state) { return state.currentFolderId; }))
129
+ .pipe(takeUntil(this.unsubscribe$))
130
+ .subscribe((/**
131
+ * @param {?} currentFolderId
132
+ * @return {?}
133
+ */
134
+ function (currentFolderId) {
135
+ _this.currentFolderId = currentFolderId;
136
+ _this.svc.dispatch({
137
+ type: ActionTypes.SET_SELECTED_ASSETS,
138
+ payload: [],
139
+ });
140
+ }));
141
+ select((/**
142
+ * @param {?} state
143
+ * @return {?}
144
+ */
145
+ function (state) { return state.selectedAssets; }))
146
+ .pipe(takeUntil(this.unsubscribe$))
147
+ .subscribe((/**
148
+ * @param {?} selectedAssets
149
+ * @return {?}
150
+ */
151
+ function (selectedAssets) {
152
+ _this.selectedAssets = selectedAssets;
153
+ }));
154
+ select((/**
155
+ * @param {?} state
156
+ * @return {?}
157
+ */
158
+ function (state) { return state.reloadCurrentAssets; }))
159
+ .pipe(takeUntil(this.unsubscribe$), switchMap((/**
160
+ * @param {?} res
161
+ * @return {?}
162
+ */
163
+ function (res) { return of(res); })))
164
+ .subscribe((/**
165
+ * @return {?}
166
+ */
167
+ function () {
168
+ _this.fetchChildrenAssets();
169
+ }));
170
+ };
171
+ /**
172
+ * @param {?=} event
173
+ * @return {?}
174
+ */
175
+ AssetListComponent.prototype.pageChange = /**
176
+ * @param {?=} event
177
+ * @return {?}
178
+ */
179
+ function (event) {
180
+ this.assetService.pageSize = event.pageSize;
181
+ this.assetService.pageIndex = event.pageIndex;
182
+ this.fetchChildrenAssets();
183
+ };
184
+ /**
185
+ * @private
186
+ * @return {?}
187
+ */
188
+ AssetListComponent.prototype.fetchChildrenAssets = /**
189
+ * @private
190
+ * @return {?}
191
+ */
192
+ function () {
193
+ var _this = this;
194
+ if (!this.currentFolderId) {
195
+ return;
196
+ }
197
+ this.svc.dispatch({
198
+ type: ActionTypes.SET_GLOBAL_LOADING,
199
+ payload: true,
200
+ });
201
+ this.assetService
202
+ .getChildrenAssets({ assetId: this.currentFolderId })
203
+ .pipe(takeUntil(this.unsubscribe$))
204
+ .subscribe((/**
205
+ * @param {?} res
206
+ * @return {?}
207
+ */
208
+ function (res) {
209
+ _this.assetService.setAssetList(res.Data.Children, res.Meta);
210
+ }))
211
+ .add((/**
212
+ * @return {?}
213
+ */
214
+ function () {
215
+ _this.svc.dispatch({
216
+ type: ActionTypes.SET_GLOBAL_LOADING,
217
+ payload: false,
218
+ });
219
+ }));
220
+ };
221
+ /**
222
+ * @private
223
+ * @return {?}
224
+ */
225
+ AssetListComponent.prototype._resetUploadingAssets = /**
226
+ * @private
227
+ * @return {?}
228
+ */
229
+ function () {
230
+ var _this = this;
231
+ /** @type {?} */
232
+ var reload = setInterval((/**
233
+ * @return {?}
234
+ */
235
+ function () {
236
+ _this.fetchChildrenAssets();
237
+ if (_this.assets.find((/**
238
+ * @param {?} x
239
+ * @return {?}
240
+ */
241
+ function (x) { return x.BackgroudProcessingStatus === _this.backgroundProcessingNum.Processed; }))) {
242
+ clearInterval(reload);
243
+ }
244
+ console.log('Upload Successfully!'); // interval will be cleared after completing this whole block
245
+ }), 5000);
246
+ };
247
+ /**
248
+ * @return {?}
249
+ */
250
+ AssetListComponent.prototype.ngOnDestroy = /**
251
+ * @return {?}
252
+ */
253
+ function () {
254
+ this.unsubscribe$.next();
255
+ this.unsubscribe$.complete();
256
+ };
257
+ AssetListComponent.decorators = [
258
+ { type: Component, args: [{
259
+ selector: 'lib-asset-list',
260
+ template: "<div class=\"asset-container\">\r\n <div class=\"asset-heading\">\r\n <h6 class=\"asset-heading__title\">Files</h6>\r\n <lib-sort-items\r\n [hidden]=\"!assets?.length\"\r\n class=\"asset-heading__sort\"\r\n ></lib-sort-items>\r\n </div>\r\n <ng-container *ngIf=\"assets && !assets.length; else assetsTemplate\">\r\n <div class=\"asset-empty\">\r\n <span>This asset is empty.</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #assetsTemplate>\r\n <div class=\"asset-list\">\r\n <lib-asset-item\r\n class=\"asset-list__item\"\r\n *ngFor=\"let asset of assets\"\r\n [asset]=\"asset\"\r\n (selectAsset)=\"onSelectAsset($event)\"\r\n [hasModifyPermission]=\"hasModifyPermission\"\r\n [hasAccessPermission]=\"hasAccessPermission\"\r\n [hasArchivePermission]=\"hasArchivePermission\"\r\n >\r\n </lib-asset-item>\r\n </div>\r\n </ng-template>\r\n <div [hidden]=\"!assets?.length\">\r\n <mat-paginator\r\n #paginator\r\n [pageSizeOptions]=\"[12, 24, 60, 120]\"\r\n (page)=\"pageChange($event)\"\r\n [showFirstLastButtons]=\"true\"\r\n >\r\n </mat-paginator>\r\n </div>\r\n</div>\r\n",
261
+ styles: [":host::ng-deep .asset-container .asset-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}:host::ng-deep .asset-container .asset-heading__title{margin-bottom:0;color:#979797}:host::ng-deep .asset-container .asset-list{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;margin:0 -5px}:host::ng-deep .asset-container .asset-list__item{width:25%}@media only screen and (max-width:1200px){:host::ng-deep .asset-container .asset-list__item{width:calc(100% / 3)}}@media only screen and (max-width:960px){:host::ng-deep .asset-container .asset-list__item{width:50%}}:host::ng-deep .asset-container .asset-empty{text-align:center;color:#979797;font-size:14px}"]
262
+ }] }
263
+ ];
264
+ /** @nocollapse */
265
+ AssetListComponent.ctorParameters = function () { return [
266
+ { type: AssetService },
267
+ { type: AssetManagementService }
268
+ ]; };
269
+ AssetListComponent.propDecorators = {
270
+ hasModifyPermission: [{ type: Input }],
271
+ hasAccessPermission: [{ type: Input }],
272
+ hasArchivePermission: [{ type: Input }],
273
+ paginator: [{ type: ViewChild, args: [MatPaginator, { static: true },] }],
274
+ assets: [{ type: Input }]
275
+ };
276
+ return AssetListComponent;
277
+ }());
278
+ export { AssetListComponent };
279
+ if (false) {
280
+ /** @type {?} */
281
+ AssetListComponent.prototype.hasModifyPermission;
282
+ /** @type {?} */
283
+ AssetListComponent.prototype.hasAccessPermission;
284
+ /** @type {?} */
285
+ AssetListComponent.prototype.hasArchivePermission;
286
+ /** @type {?} */
287
+ AssetListComponent.prototype.paginator;
288
+ /** @type {?} */
289
+ AssetListComponent.prototype.assets;
290
+ /** @type {?} */
291
+ AssetListComponent.prototype.backgroundProcessingNum;
292
+ /**
293
+ * @type {?}
294
+ * @private
295
+ */
296
+ AssetListComponent.prototype.unsubscribe$;
297
+ /**
298
+ * @type {?}
299
+ * @private
300
+ */
301
+ AssetListComponent.prototype.currentFolderId;
302
+ /**
303
+ * @type {?}
304
+ * @private
305
+ */
306
+ AssetListComponent.prototype.selectedAssets;
307
+ /**
308
+ * @type {?}
309
+ * @private
310
+ */
311
+ AssetListComponent.prototype.assetService;
312
+ /**
313
+ * @type {?}
314
+ * @private
315
+ */
316
+ AssetListComponent.prototype.svc;
317
+ }
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtbGlzdC9hc3NldC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBYyx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhEO0lBVUUsNEJBQ1UsWUFBMEIsRUFDMUIsR0FBMkI7UUFEM0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFONUIsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO1FBQ3JDLHdCQUFtQixHQUFhLElBQUksQ0FBQztRQUNyQyx5QkFBb0IsR0FBYSxJQUFJLENBQUM7UUFVeEMsNEJBQXVCLEdBQUcseUJBQXlCLENBQUM7UUFFbkQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRW5DLG1C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SUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOztnQkEzSUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLDJzQ0FBMEM7O2lCQUUzQzs7OztnQkFSUSxZQUFZO2dCQUZaLHNCQUFzQjs7O3NDQVk1QixLQUFLO3NDQUNMLEtBQUs7dUNBQ0wsS0FBSzs0QkFPTCxTQUFTLFNBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt5QkFDeEMsS0FBSzs7SUE0SFIseUJBQUM7Q0FBQSxBQTVJRCxJQTRJQztTQXZJWSxrQkFBa0I7OztJQUM3QixpREFBOEM7O0lBQzlDLGlEQUE4Qzs7SUFDOUMsa0RBQStDOztJQU8vQyx1Q0FBbUU7O0lBQ25FLG9DQUE4Qjs7SUFFOUIscURBQTJEOzs7OztJQUUzRCwwQ0FBMkM7Ozs7O0lBQzNDLDZDQUFnQzs7Ozs7SUFDaEMsNENBQStDOzs7OztJQVg3QywwQ0FBa0M7Ozs7O0lBQ2xDLGlDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL29mJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3ViamVjdCc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNzZXRNb2RlbCwgQmFja2dyb3VkUHJvY2Vzc2luZ1N0YXR1cyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEFzc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fzc2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FjdGlvbnMuYWN0aW9uJztcclxuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hc3NldC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXNzZXQtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXNzZXQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaGFzTW9kaWZ5UGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGhhc0FjY2Vzc1Blcm1pc3Npb24/OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoYXNBcmNoaXZlUGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXNzZXRTZXJ2aWNlOiBBc3NldFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN2YzogQXNzZXRNYW5hZ2VtZW50U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBJbnB1dCgpIGFzc2V0czogQXNzZXRNb2RlbFtdO1xyXG5cclxuICBwdWJsaWMgYmFja2dyb3VuZFByb2Nlc3NpbmdOdW0gPSBCYWNrZ3JvdWRQcm9jZXNzaW5nU3RhdHVzO1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZztcclxuICBwcml2YXRlIHNlbGVjdGVkQXNzZXRzOiBBcnJheTxBc3NldE1vZGVsPiA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmFzc2V0cykge1xyXG4gICAgICAvLyBDaGVjayBpZiBhc3NldCBpcyB1cGxvYWRpbmdcclxuICAgICAgaWYgKHRoaXMuYXNzZXRzICYmIHRoaXMuYXNzZXRzLmZpbmQoeCA9PiB4LkJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXMgPT09IHRoaXMuYmFja2dyb3VuZFByb2Nlc3NpbmdOdW0uSW5Qcm9jZXNzaW5nKSkge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0VXBsb2FkaW5nQXNzZXRzKCk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSB0aGlzLmFzc2V0U2VydmljZS5wYWdlSW5kZXg7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdGhpcy5hc3NldFNlcnZpY2UucGFnZVNpemU7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IHRoaXMuYXNzZXRTZXJ2aWNlLmZpbGVUb3RhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbGVjdEFzc2V0KGV2ZW50OiBBc3NldE1vZGVsKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmluZEluZGV4KFxyXG4gICAgICAoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQgPT09IGV2ZW50LkFzc2V0SWRcclxuICAgICk7XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZEFzc2V0czogQXNzZXRNb2RlbFtdID1cclxuICAgICAgaW5kZXggPiAtMVxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZEFzc2V0cy5maWx0ZXIoKGFzc2V0LCBpKSA9PiBpbmRleCAhPT0gaSlcclxuICAgICAgICA6IFsuLi50aGlzLnNlbGVjdGVkQXNzZXRzLCBldmVudF07XHJcblxyXG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxyXG4gICAgICBwYXlsb2FkOiBuZXdTZWxlY3RlZEFzc2V0cyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiaW5kU3Vic2NyaWJlcigpIHtcclxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmRlbGV0ZWRBc3NldElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQXNzZXRzICYmIHRoaXMuc2VsZWN0ZWRBc3NldHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEFzc2V0cyA9IHRoaXMuc2VsZWN0ZWRBc3NldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQgIT09IGlkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiBuZXdTZWxlY3RlZEFzc2V0cyxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuY3VycmVudEZvbGRlcklkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50Rm9sZGVySWQpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IGN1cnJlbnRGb2xkZXJJZDtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxyXG4gICAgICAgICAgcGF5bG9hZDogW10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnNlbGVjdGVkQXNzZXRzKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEFzc2V0cykgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NldHMgPSBzZWxlY3RlZEFzc2V0cztcclxuICAgICAgfSk7XHJcblxyXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudEFzc2V0cylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmZldGNoQ2hpbGRyZW5Bc3NldHMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudD86IFBhZ2VFdmVudCkge1xyXG4gICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcclxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaENoaWxkcmVuQXNzZXRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRGb2xkZXJJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcclxuICAgICAgcGF5bG9hZDogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXHJcbiAgICAgIC5nZXRDaGlsZHJlbkFzc2V0cyh7IGFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlcklkIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEFzc2V0TGlzdChyZXMuRGF0YS5DaGlsZHJlbiwgcmVzLk1ldGEpO1xyXG4gICAgICB9KVxyXG4gICAgICAuYWRkKCgpID0+IHtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXHJcbiAgICAgICAgICBwYXlsb2FkOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNldFVwbG9hZGluZ0Fzc2V0cyAoKSB7XHJcbiAgICBjb25zdCByZWxvYWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmV0Y2hDaGlsZHJlbkFzc2V0cygpO1xyXG4gICAgICBpZiAodGhpcy5hc3NldHMuZmluZCh4ID0+IHguQmFja2dyb3VkUHJvY2Vzc2luZ1N0YXR1cyA9PT0gdGhpcy5iYWNrZ3JvdW5kUHJvY2Vzc2luZ051bS5Qcm9jZXNzZWQpKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChyZWxvYWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCdVcGxvYWQgU3VjY2Vzc2Z1bGx5IScpOyAvLyBpbnRlcnZhbCB3aWxsIGJlIGNsZWFyZWQgYWZ0ZXIgY29tcGxldGluZyB0aGlzIHdob2xlIGJsb2NrXHJcbiAgICB9LCA1MDAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19