@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,350 +1,350 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Component, EventEmitter, Input, Output, ChangeDetectorRef } from '@angular/core';
6
- import { MatDialog } from '@angular/material/dialog';
7
- import { DomSanitizer } from '@angular/platform-browser';
8
- import { Subject } from 'rxjs';
9
- import { takeUntil } from 'rxjs/operators';
10
- import { AssetManagementService } from '../../../asset-management.service';
11
- import { fileDefault, imageCsv, imagePdf, imageZip } from '../../../contanst';
12
- import { AssetModel, BackgroudProcessingStatus, FileTypeEnum } from '../../../models';
13
- import { ActionTypes, select } from '../../../store';
14
- import { AssetDialogComponent } from '../asset-dialog/asset-dialog.component';
15
- import { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';
16
- import { AssetService } from '../../../services/asset.service';
17
- import { UploadDialogComponent } from '../upload-dialog/upload-dialog.component';
18
- var AssetItemComponent = /** @class */ (function () {
19
- function AssetItemComponent(dialog, domSanitizer, assetService, svc, changeDetectorRef) {
20
- this.dialog = dialog;
21
- this.domSanitizer = domSanitizer;
22
- this.assetService = assetService;
23
- this.svc = svc;
24
- this.changeDetectorRef = changeDetectorRef;
25
- this.hasModifyPermission = true;
26
- this.hasAccessPermission = true;
27
- this.hasArchivePermission = true;
28
- this.selectAsset = new EventEmitter();
29
- this.base64PNG = {
30
- pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),
31
- zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),
32
- csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),
33
- default: this.domSanitizer.bypassSecurityTrustUrl(fileDefault),
34
- };
35
- this.selectedAssets = [];
36
- this.fileType = FileTypeEnum;
37
- this.backgroundProcessingNum = BackgroudProcessingStatus;
38
- this.destroy$ = new Subject();
39
- this._bindSubscriber();
40
- }
41
- /**
42
- * @return {?}
43
- */
44
- AssetItemComponent.prototype.ngOnInit = /**
45
- * @return {?}
46
- */
47
- function () {
48
- var _this = this;
49
- // get current folder
50
- this.assetService
51
- .getFolderList()
52
- .pipe(takeUntil(this.destroy$))
53
- .subscribe((/**
54
- * @param {?} folders
55
- * @return {?}
56
- */
57
- function (folders) {
58
- _this.currentFolder = folders;
59
- _this.changeDetectorRef.detectChanges();
60
- }));
61
- };
62
- Object.defineProperty(AssetItemComponent.prototype, "checkSelectedAsset", {
63
- get: /**
64
- * @return {?}
65
- */
66
- function () {
67
- var _this = this;
68
- return (this.selectedAssets &&
69
- this.selectedAssets.some((/**
70
- * @param {?} asset
71
- * @return {?}
72
- */
73
- function (asset) { return asset.AssetId === _this.asset.AssetId; })));
74
- },
75
- enumerable: true,
76
- configurable: true
77
- });
78
- /**
79
- * @return {?}
80
- */
81
- AssetItemComponent.prototype.onChange = /**
82
- * @return {?}
83
- */
84
- function () {
85
- this.selectAsset.emit(this.asset);
86
- };
87
- /**
88
- * @return {?}
89
- */
90
- AssetItemComponent.prototype.editAsset = /**
91
- * @return {?}
92
- */
93
- function () {
94
- var _this = this;
95
- /** @type {?} */
96
- var dialogRef = this.dialog.open(AssetDialogComponent, {
97
- autoFocus: false,
98
- data: {
99
- assetId: this.asset.AssetId,
100
- name: this.asset.OriginalFileNameWithoutExtension,
101
- permission: {
102
- modify: this.hasModifyPermission,
103
- access: this.hasAccessPermission,
104
- archive: this.hasArchivePermission,
105
- }
106
- },
107
- panelClass: 'lib-dialog--medium',
108
- });
109
- if (dialogRef) {
110
- dialogRef.afterClosed().subscribe((/**
111
- * @param {?} res
112
- * @return {?}
113
- */
114
- function (res) {
115
- if (res) {
116
- _this.svc.dispatch({
117
- type: ActionTypes.RELOAD_CURRENT_ASSETS,
118
- });
119
- }
120
- }));
121
- }
122
- };
123
- /**
124
- * @param {?} asset
125
- * @return {?}
126
- */
127
- AssetItemComponent.prototype.onUploadAgain = /**
128
- * @param {?} asset
129
- * @return {?}
130
- */
131
- function (asset) {
132
- var _this = this;
133
- /** @type {?} */
134
- var ids = [];
135
- ids.push(asset.AssetId);
136
- /** @type {?} */
137
- var dialogRef = this.dialog.open(DeleteDialogComponent, {
138
- data: {
139
- type: 'file',
140
- ids: ids,
141
- },
142
- panelClass: 'lib-dialog--small',
143
- autoFocus: false,
144
- });
145
- dialogRef.afterClosed().subscribe((/**
146
- * @param {?} res
147
- * @return {?}
148
- */
149
- function (res) {
150
- if (res) {
151
- _this.svc.dispatch({
152
- type: ActionTypes.RELOAD_CURRENT_ASSETS,
153
- });
154
- _this.svc.dispatch({
155
- type: ActionTypes.RELOAD_CURRENT_FOLDER,
156
- });
157
- _this.svc.dispatch({
158
- type: ActionTypes.SET_SELECTED_ASSETS,
159
- payload: [],
160
- });
161
- _this._openUploadDialog();
162
- }
163
- }));
164
- };
165
- /**
166
- * @param {?} asset
167
- * @return {?}
168
- */
169
- AssetItemComponent.prototype.onDelete = /**
170
- * @param {?} asset
171
- * @return {?}
172
- */
173
- function (asset) {
174
- var _this = this;
175
- /** @type {?} */
176
- var ids = [];
177
- ids.push(asset.AssetId);
178
- /** @type {?} */
179
- var dialogRef = this.dialog.open(DeleteDialogComponent, {
180
- data: {
181
- type: 'file',
182
- ids: ids,
183
- },
184
- panelClass: 'lib-dialog--small',
185
- autoFocus: false,
186
- });
187
- dialogRef.afterClosed().subscribe((/**
188
- * @param {?} res
189
- * @return {?}
190
- */
191
- function (res) {
192
- if (res) {
193
- _this.svc.dispatch({
194
- type: ActionTypes.RELOAD_CURRENT_ASSETS,
195
- });
196
- _this.svc.dispatch({
197
- type: ActionTypes.RELOAD_CURRENT_FOLDER,
198
- });
199
- _this.svc.dispatch({
200
- type: ActionTypes.SET_SELECTED_ASSETS,
201
- payload: [],
202
- });
203
- }
204
- }));
205
- };
206
- /**
207
- * @private
208
- * @return {?}
209
- */
210
- AssetItemComponent.prototype._bindSubscriber = /**
211
- * @private
212
- * @return {?}
213
- */
214
- function () {
215
- var _this = this;
216
- select((/**
217
- * @param {?} state
218
- * @return {?}
219
- */
220
- function (state) { return state.selectedAssets; }))
221
- .pipe(takeUntil(this.destroy$))
222
- .subscribe((/**
223
- * @param {?} selectedAssets
224
- * @return {?}
225
- */
226
- function (selectedAssets) {
227
- _this.selectedAssets = selectedAssets;
228
- }));
229
- };
230
- /**
231
- * @private
232
- * @return {?}
233
- */
234
- AssetItemComponent.prototype._openUploadDialog = /**
235
- * @private
236
- * @return {?}
237
- */
238
- function () {
239
- var _this = this;
240
- /** @type {?} */
241
- var dialogRef = this.dialog.open(UploadDialogComponent, {
242
- data: {
243
- currentAssetId: this.currentFolder.AssetId,
244
- fileType: this.assetService.dialogConfig.allowedType,
245
- maxSize: this.assetService.maxSize
246
- },
247
- panelClass: 'lib-dialog--medium',
248
- });
249
- dialogRef.afterClosed().subscribe((/**
250
- * @param {?} res
251
- * @return {?}
252
- */
253
- function (res) {
254
- if (res) {
255
- _this.svc.dispatch({
256
- type: ActionTypes.RELOAD_CURRENT_ASSETS,
257
- });
258
- _this.svc.dispatch({
259
- type: ActionTypes.RELOAD_CURRENT_FOLDER,
260
- });
261
- }
262
- }));
263
- };
264
- /**
265
- * @return {?}
266
- */
267
- AssetItemComponent.prototype.ngOnDestroy = /**
268
- * @return {?}
269
- */
270
- function () {
271
- this.destroy$.next(true);
272
- this.destroy$.complete();
273
- };
274
- AssetItemComponent.decorators = [
275
- { type: Component, args: [{
276
- selector: 'lib-asset-item',
277
- template: "<div class=\"asset-wrapper\">\r\n <div class=\"asset-content\">\r\n <div class=\"asset-content__header\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.Processed\">\r\n <button class=\"asset-content__header--button\" mat-raised-button (click)=\"onChange()\">\r\n <mat-checkbox\r\n class=\"checkbox\"\r\n [checked]=\"checkSelectedAsset\"\r\n ></mat-checkbox>\r\n </button>\r\n <button\r\n class=\"asset-content__header--button edit-button\"\r\n mat-raised-button\r\n (click)=\"editAsset()\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"asset-content__body\">\r\n <ng-container [ngSwitch]=\"asset.FileType\">\r\n <ng-container *ngSwitchCase=\"fileType.IMAGE\">\r\n <img\r\n class=\"image\"\r\n [src]=\"asset.UrlThumbnail\"\r\n [alt]=\"asset.OriginalFileName\"\r\n *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\"\r\n />\r\n <!-- In Processing -->\r\n <div class=\"processing\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\r\n <mat-icon class=\"icon\">cloud_upload</mat-icon>\r\n <span class=\"processing-txt\">Uploading...</span>\r\n </div>\r\n <!-- Failed -->\r\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\r\n <mat-icon class=\"icon-img\">error_outline</mat-icon>\r\n <div class=\"failed-group\">\r\n <span style=\"color: #f44336; font-weight: 300; font-size: 12px;\">Failed to upload the file</span>\r\n </div>\r\n <div class=\"btn-failed-group\">\r\n <button class=\"btn-custom-upload\" (click)=\"onUploadAgain(asset)\">Delete and update again</button>\r\n <span class=\"failed-txt mx-1\">or</span>\r\n <button class=\"btn-custom-failed\" (click)=\"onDelete(asset)\">Delete</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"fileType.DOCUMENT\">\r\n <img [src]=\"base64PNG[asset.Extension] || base64PNG.default\" [alt]=\"asset.OriginalFileName\" class=\"file\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\"/>\r\n <!-- In Processing -->\r\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\r\n <mat-icon class=\"icon\">cloud_upload</mat-icon>\r\n <span class=\"processing-txt\">Uploading...</span>\r\n </div>\r\n <!-- Failed -->\r\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\r\n <mat-icon class=\"icon-doc\">error_outline</mat-icon>\r\n <div class=\"failed-group\">\r\n <span style=\"color: #f44336; font-weight: 300; font-size: 12px;\">Failed to upload the file</span>\r\n </div>\r\n <div class=\"btn-failed-group\">\r\n <button class=\"btn-custom-upload\" (click)=\"onUploadAgain(asset)\">Delete and update again</button>\r\n <span class=\"failed-txt mx-1\">or</span>\r\n <button class=\"btn-custom-failed\" (click)=\"onDelete(asset)\">Delete</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"asset-content__footer\">\r\n <div\r\n class=\"asset-content__footer--info\"\r\n [ngClass]=\"{\r\n 'file-type__document': asset.FileType === fileType.DOCUMENT\r\n }\"\r\n >\r\n <p\r\n class=\"name\"\r\n [matTooltip]=\"asset.OriginalFileNameWithoutExtension\"\r\n matTooltipClass=\"width-auto\"\r\n >\r\n {{ asset.OriginalFileNameWithoutExtension }}\r\n </p>\r\n <p class=\"info\">\r\n <span class=\"extension\">{{ asset.Extension }}</span>\r\n <span\r\n *ngIf=\"\r\n asset.FileType === fileType.IMAGE && asset?.Extension !== 'svg'\r\n \"\r\n >\r\n - {{ asset.Width }}x{{ asset.Height }}</span\r\n >\r\n <span *ngIf=\"asset.Size\"> - {{ asset.Size }}</span>\r\n </p>\r\n </div>\r\n <div class=\"asset-content__footer--file-type\">\r\n <span>{{ asset.FileType }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
278
- styles: [":host::ng-deep .asset-wrapper{padding:5px}:host::ng-deep .asset-wrapper .asset-content{overflow:hidden;position:relative;border-radius:10px;border:1px solid #d8d8d8;font-size:14px;transition:.3s cubic-bezier(.25,.8,.25,1)}:host::ng-deep .asset-wrapper .asset-content:hover{box-shadow:0 0 8px rgba(0,0,0,.17),0 0 0 rgba(0,0,0,.06)}:host::ng-deep .asset-wrapper .asset-content__header{position:absolute;z-index:1;top:0;left:0;width:100%;display:flex;justify-content:space-between;padding:14px}:host::ng-deep .asset-wrapper .asset-content__header--button{width:30px;height:30px;min-width:30px;display:flex;align-items:center;justify-content:center;text-align:center;color:rgba(0,0,0,.65);background:rgba(255,255,255,.6)}:host::ng-deep .asset-wrapper .asset-content__header--button:hover{background:#fff}:host::ng-deep .asset-wrapper .asset-content__header--button.edit-button{transition:.3s cubic-bezier(.25,.8,.25,1);opacity:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-icon{font-size:22px}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox{pointer-events:none;display:flex;align-items:center}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout{display:block;margin:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout .mat-checkbox-frame{color:#767676}:host::ng-deep .asset-wrapper .asset-content__body{padding-bottom:66.66%;background:#f1f1f1;position:relative}:host::ng-deep .asset-wrapper .asset-content__body img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host::ng-deep .asset-wrapper .asset-content__body img.image{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAUABQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/ivFPFOf+EjvxzjbBgdv+PeDp+OfxzSt4q18AkageASB9ntu3OM+Vn8c5rsdG0fT9d06DVdUgN1f3XmefP5ksO/ypXhj/dwvHGu2ONF+VF3bQSM0AeYUV7IPCWgjgWRA/wCvi4P85SaKAPGm5Vh7H+VeyeERjQLEDoPP/WeQ/wAzRRQB0tFFFAH/2Q==)}:host::ng-deep .asset-wrapper .asset-content__body img.file{width:75%;height:75%}:host::ng-deep .asset-wrapper .asset-content__body .processing{background-color:#f1f1f1;width:100%;height:100%}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon{position:absolute;top:30%;left:42%;font-size:35px}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon-img{position:absolute;top:30%;left:42%;font-size:35px;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon-doc{position:absolute;top:30%;left:42%;font-size:35px;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-txt{position:absolute;top:55%;left:35%}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-image{width:27px;height:27px;-o-object-fit:contain;object-fit:contain}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-group{position:absolute;top:55%;left:20%}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group{position:absolute;top:70%;left:10%;font-size:12px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .failed-txt{color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-upload{font-size:9px;border:0;color:#fff;background-color:#ffc107;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-failed{font-size:9px;border:0;color:#fff;background-color:#f44336;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-failed:hover,:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-upload:hover{opacity:.8}:host::ng-deep .asset-wrapper .asset-content__footer{display:flex;align-items:center;justify-content:space-between;padding:5px 8px}:host::ng-deep .asset-wrapper .asset-content__footer--info{max-width:calc(100% - 50px)}:host::ng-deep .asset-wrapper .asset-content__footer--info p{margin:0;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .asset-wrapper .asset-content__footer--info .info{font-size:12px;color:#979797}:host::ng-deep .asset-wrapper .asset-content__footer--info .info .extension{text-transform:uppercase}:host::ng-deep .asset-wrapper .asset-content__footer--info.file-type__document{max-width:calc(100% - 70px)}:host::ng-deep .asset-wrapper .asset-content__footer--file-type{border-radius:5px;background-color:#d8d8d8;padding:2px 6px;font-size:12px}:host::ng-deep .asset-wrapper .asset-content:hover .edit-button{opacity:1!important}"]
279
- }] }
280
- ];
281
- /** @nocollapse */
282
- AssetItemComponent.ctorParameters = function () { return [
283
- { type: MatDialog },
284
- { type: DomSanitizer },
285
- { type: AssetService },
286
- { type: AssetManagementService },
287
- { type: ChangeDetectorRef }
288
- ]; };
289
- AssetItemComponent.propDecorators = {
290
- hasModifyPermission: [{ type: Input }],
291
- hasAccessPermission: [{ type: Input }],
292
- hasArchivePermission: [{ type: Input }],
293
- asset: [{ type: Input }],
294
- selectAsset: [{ type: Output }]
295
- };
296
- return AssetItemComponent;
297
- }());
298
- export { AssetItemComponent };
299
- if (false) {
300
- /** @type {?} */
301
- AssetItemComponent.prototype.hasModifyPermission;
302
- /** @type {?} */
303
- AssetItemComponent.prototype.hasAccessPermission;
304
- /** @type {?} */
305
- AssetItemComponent.prototype.hasArchivePermission;
306
- /** @type {?} */
307
- AssetItemComponent.prototype.asset;
308
- /** @type {?} */
309
- AssetItemComponent.prototype.selectAsset;
310
- /** @type {?} */
311
- AssetItemComponent.prototype.base64PNG;
312
- /** @type {?} */
313
- AssetItemComponent.prototype.errorMessage;
314
- /** @type {?} */
315
- AssetItemComponent.prototype.selectedAssets;
316
- /** @type {?} */
317
- AssetItemComponent.prototype.currentFolder;
318
- /** @type {?} */
319
- AssetItemComponent.prototype.fileType;
320
- /** @type {?} */
321
- AssetItemComponent.prototype.backgroundProcessingNum;
322
- /**
323
- * @type {?}
324
- * @private
325
- */
326
- AssetItemComponent.prototype.destroy$;
327
- /**
328
- * @type {?}
329
- * @private
330
- */
331
- AssetItemComponent.prototype.dialog;
332
- /**
333
- * @type {?}
334
- * @private
335
- */
336
- AssetItemComponent.prototype.domSanitizer;
337
- /** @type {?} */
338
- AssetItemComponent.prototype.assetService;
339
- /**
340
- * @type {?}
341
- * @private
342
- */
343
- AssetItemComponent.prototype.svc;
344
- /**
345
- * @type {?}
346
- * @private
347
- */
348
- AssetItemComponent.prototype.changeDetectorRef;
349
- }
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtaXRlbS9hc3NldC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSx5QkFBeUIsRUFBRSxZQUFZLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakY7SUFVRSw0QkFDVSxNQUFpQixFQUNqQixZQUEwQixFQUMzQixZ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OUMsa0RBQStDOztJQVcvQyxtQ0FBMkI7O0lBRTNCLHlDQUF1RDs7SUFFdkQsdUNBS0U7O0lBQ0YsMENBQTRCOztJQUM1Qiw0Q0FBOEM7O0lBQzlDLDJDQUFzQzs7SUFDdEMsc0NBQStCOztJQUMvQixxREFBMkQ7Ozs7O0lBRTNELHNDQUFtRDs7Ozs7SUF4QmpELG9DQUF5Qjs7Ozs7SUFDekIsMENBQWtDOztJQUNsQywwQ0FBaUM7Ozs7O0lBQ2pDLGlDQUFtQzs7Ozs7SUFDbkMsK0NBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXNzZXRNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Fzc2V0LW1hbmFnZW1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbGVEZWZhdWx0LCBpbWFnZUNzdiwgaW1hZ2VQZGYsIGltYWdlWmlwIH0gZnJvbSAnLi4vLi4vLi4vY29udGFuc3QnO1xyXG5pbXBvcnQgeyBBc3NldE1vZGVsLCBCYWNrZ3JvdWRQcm9jZXNzaW5nU3RhdHVzLCBGaWxlVHlwZUVudW0sIEZvbGRlclRyZWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEFjdGlvblR5cGVzLCBzZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSc7XHJcbmltcG9ydCB7IEFzc2V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYXNzZXQtZGlhbG9nL2Fzc2V0LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWxldGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXNzZXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFVwbG9hZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZC1kaWFsb2cvdXBsb2FkLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXNzZXQtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2V0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2V0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBoYXNNb2RpZnlQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgaGFzQWNjZXNzUGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwdWJsaWMgYXNzZXRTZXJ2aWNlOiBBc3NldFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN2YzogQXNzZXRNYW5hZ2VtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9iaW5kU3Vic2NyaWJlcigpO1xyXG4gIH1cclxuICBASW5wdXQoKSBhc3NldDogQXNzZXRNb2RlbDtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdEFzc2V0ID0gbmV3IEV2ZW50RW1pdHRlcjxBc3NldE1vZGVsPigpO1xyXG5cclxuICBwdWJsaWMgYmFzZTY0UE5HID0ge1xyXG4gICAgcGRmOiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGltYWdlUGRmKSxcclxuICAgIHppcDogdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChpbWFnZVppcCksXHJcbiAgICBjc3Y6IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VDc3YpLFxyXG4gICAgZGVmYXVsdDogdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChmaWxlRGVmYXVsdCksXHJcbiAgfTtcclxuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgcHVibGljIHNlbGVjdGVkQXNzZXRzOiBBcnJheTxBc3NldE1vZGVsPiA9IFtdO1xyXG4gIHB1YmxpYyBjdXJyZW50Rm9sZGVyOiBGb2xkZXJUcmVlTW9kZWw7XHJcbiAgcHVibGljIGZpbGVUeXBlID0gRmlsZVR5cGVFbnVtO1xyXG4gIHB1YmxpYyBiYWNrZ3JvdW5kUHJvY2Vzc2luZ051bSA9IEJhY2tncm91ZFByb2Nlc3NpbmdTdGF0dXM7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGdldCBjdXJyZW50IGZvbGRlclxyXG4gICAgdGhpcy5hc3NldFNlcnZpY2VcclxuICAgICAgLmdldEZvbGRlckxpc3QoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGZvbGRlcnMpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXIgPSBmb2xkZXJzO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBjaGVja1NlbGVjdGVkQXNzZXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQXNzZXRzICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBc3NldHMuc29tZSgoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQgPT09IHRoaXMuYXNzZXQuQXNzZXRJZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNlbGVjdEFzc2V0LmVtaXQodGhpcy5hc3NldCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdEFzc2V0KCkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBc3NldERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgYXNzZXRJZDogdGhpcy5hc3NldC5Bc3NldElkLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuYXNzZXQuT3JpZ2luYWxGaWxlTmFtZVdpdGhvdXRFeHRlbnNpb24sXHJcbiAgICAgICAgcGVybWlzc2lvbjoge1xyXG4gICAgICAgICAgbW9kaWZ5OiB0aGlzLmhhc01vZGlmeVBlcm1pc3Npb24sXHJcbiAgICAgICAgICBhY2Nlc3M6IHRoaXMuaGFzQWNjZXNzUGVybWlzc2lvbixcclxuICAgICAgICAgIGFyY2hpdmU6IHRoaXMuaGFzQXJjaGl2ZVBlcm1pc3Npb24sXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tbWVkaXVtJyxcclxuICAgIH0pO1xyXG4gICAgaWYgKGRpYWxvZ1JlZikge1xyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblVwbG9hZEFnYWluKGFzc2V0OiBBc3NldE1vZGVsKSB7XHJcbiAgICBjb25zdCBpZHMgPSBbXTtcclxuICAgIGlkcy5wdXNoKGFzc2V0LkFzc2V0SWQpO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHR5cGU6ICdmaWxlJyxcclxuICAgICAgICBpZHMsXHJcbiAgICAgIH0sXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1zbWFsbCcsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxyXG4gICAgICAgICAgcGF5bG9hZDogW10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fb3BlblVwbG9hZERpYWxvZygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRlbGV0ZShhc3NldDogQXNzZXRNb2RlbCkge1xyXG4gICAgY29uc3QgaWRzID0gW107XHJcbiAgICBpZHMucHVzaChhc3NldC5Bc3NldElkKTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0eXBlOiAnZmlsZScsXHJcbiAgICAgICAgaWRzLFxyXG4gICAgICB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tc21hbGwnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0FTU0VUUyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9GT0xERVIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xyXG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcclxuICAgICAgICAgIHBheWxvYWQ6IFtdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2JpbmRTdWJzY3JpYmVyKCkge1xyXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuc2VsZWN0ZWRBc3NldHMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWRBc3NldHMpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXRzID0gc2VsZWN0ZWRBc3NldHM7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3BlblVwbG9hZERpYWxvZygpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVXBsb2FkRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBjdXJyZW50QXNzZXRJZDogdGhpcy5jdXJyZW50Rm9sZGVyLkFzc2V0SWQsXHJcbiAgICAgICAgZmlsZVR5cGU6IHRoaXMuYXNzZXRTZXJ2aWNlLmRpYWxvZ0NvbmZpZy5hbGxvd2VkVHlwZSxcclxuICAgICAgICBtYXhTaXplOiB0aGlzLmFzc2V0U2VydmljZS5tYXhTaXplXHJcbiAgICAgIH0sXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1tZWRpdW0nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcclxuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0FTU0VUUyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9GT0xERVIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component, EventEmitter, Input, Output, ChangeDetectorRef } from '@angular/core';
6
+ import { MatDialog } from '@angular/material/dialog';
7
+ import { DomSanitizer } from '@angular/platform-browser';
8
+ import { Subject } from 'rxjs';
9
+ import { takeUntil } from 'rxjs/operators';
10
+ import { AssetManagementService } from '../../../asset-management.service';
11
+ import { fileDefault, imageCsv, imagePdf, imageZip } from '../../../contanst';
12
+ import { AssetModel, BackgroudProcessingStatus, FileTypeEnum } from '../../../models';
13
+ import { ActionTypes, select } from '../../../store';
14
+ import { AssetDialogComponent } from '../asset-dialog/asset-dialog.component';
15
+ import { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';
16
+ import { AssetService } from '../../../services/asset.service';
17
+ import { UploadDialogComponent } from '../upload-dialog/upload-dialog.component';
18
+ var AssetItemComponent = /** @class */ (function () {
19
+ function AssetItemComponent(dialog, domSanitizer, assetService, svc, changeDetectorRef) {
20
+ this.dialog = dialog;
21
+ this.domSanitizer = domSanitizer;
22
+ this.assetService = assetService;
23
+ this.svc = svc;
24
+ this.changeDetectorRef = changeDetectorRef;
25
+ this.hasModifyPermission = true;
26
+ this.hasAccessPermission = true;
27
+ this.hasArchivePermission = true;
28
+ this.selectAsset = new EventEmitter();
29
+ this.base64PNG = {
30
+ pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),
31
+ zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),
32
+ csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),
33
+ default: this.domSanitizer.bypassSecurityTrustUrl(fileDefault),
34
+ };
35
+ this.selectedAssets = [];
36
+ this.fileType = FileTypeEnum;
37
+ this.backgroundProcessingNum = BackgroudProcessingStatus;
38
+ this.destroy$ = new Subject();
39
+ this._bindSubscriber();
40
+ }
41
+ /**
42
+ * @return {?}
43
+ */
44
+ AssetItemComponent.prototype.ngOnInit = /**
45
+ * @return {?}
46
+ */
47
+ function () {
48
+ var _this = this;
49
+ // get current folder
50
+ this.assetService
51
+ .getFolderList()
52
+ .pipe(takeUntil(this.destroy$))
53
+ .subscribe((/**
54
+ * @param {?} folders
55
+ * @return {?}
56
+ */
57
+ function (folders) {
58
+ _this.currentFolder = folders;
59
+ _this.changeDetectorRef.detectChanges();
60
+ }));
61
+ };
62
+ Object.defineProperty(AssetItemComponent.prototype, "checkSelectedAsset", {
63
+ get: /**
64
+ * @return {?}
65
+ */
66
+ function () {
67
+ var _this = this;
68
+ return (this.selectedAssets &&
69
+ this.selectedAssets.some((/**
70
+ * @param {?} asset
71
+ * @return {?}
72
+ */
73
+ function (asset) { return asset.AssetId === _this.asset.AssetId; })));
74
+ },
75
+ enumerable: true,
76
+ configurable: true
77
+ });
78
+ /**
79
+ * @return {?}
80
+ */
81
+ AssetItemComponent.prototype.onChange = /**
82
+ * @return {?}
83
+ */
84
+ function () {
85
+ this.selectAsset.emit(this.asset);
86
+ };
87
+ /**
88
+ * @return {?}
89
+ */
90
+ AssetItemComponent.prototype.editAsset = /**
91
+ * @return {?}
92
+ */
93
+ function () {
94
+ var _this = this;
95
+ /** @type {?} */
96
+ var dialogRef = this.dialog.open(AssetDialogComponent, {
97
+ autoFocus: false,
98
+ data: {
99
+ assetId: this.asset.AssetId,
100
+ name: this.asset.OriginalFileNameWithoutExtension,
101
+ permission: {
102
+ modify: this.hasModifyPermission,
103
+ access: this.hasAccessPermission,
104
+ archive: this.hasArchivePermission,
105
+ }
106
+ },
107
+ panelClass: 'lib-dialog--medium',
108
+ });
109
+ if (dialogRef) {
110
+ dialogRef.afterClosed().subscribe((/**
111
+ * @param {?} res
112
+ * @return {?}
113
+ */
114
+ function (res) {
115
+ if (res) {
116
+ _this.svc.dispatch({
117
+ type: ActionTypes.RELOAD_CURRENT_ASSETS,
118
+ });
119
+ }
120
+ }));
121
+ }
122
+ };
123
+ /**
124
+ * @param {?} asset
125
+ * @return {?}
126
+ */
127
+ AssetItemComponent.prototype.onUploadAgain = /**
128
+ * @param {?} asset
129
+ * @return {?}
130
+ */
131
+ function (asset) {
132
+ var _this = this;
133
+ /** @type {?} */
134
+ var ids = [];
135
+ ids.push(asset.AssetId);
136
+ /** @type {?} */
137
+ var dialogRef = this.dialog.open(DeleteDialogComponent, {
138
+ data: {
139
+ type: 'file',
140
+ ids: ids,
141
+ },
142
+ panelClass: 'lib-dialog--small',
143
+ autoFocus: false,
144
+ });
145
+ dialogRef.afterClosed().subscribe((/**
146
+ * @param {?} res
147
+ * @return {?}
148
+ */
149
+ function (res) {
150
+ if (res) {
151
+ _this.svc.dispatch({
152
+ type: ActionTypes.RELOAD_CURRENT_ASSETS,
153
+ });
154
+ _this.svc.dispatch({
155
+ type: ActionTypes.RELOAD_CURRENT_FOLDER,
156
+ });
157
+ _this.svc.dispatch({
158
+ type: ActionTypes.SET_SELECTED_ASSETS,
159
+ payload: [],
160
+ });
161
+ _this._openUploadDialog();
162
+ }
163
+ }));
164
+ };
165
+ /**
166
+ * @param {?} asset
167
+ * @return {?}
168
+ */
169
+ AssetItemComponent.prototype.onDelete = /**
170
+ * @param {?} asset
171
+ * @return {?}
172
+ */
173
+ function (asset) {
174
+ var _this = this;
175
+ /** @type {?} */
176
+ var ids = [];
177
+ ids.push(asset.AssetId);
178
+ /** @type {?} */
179
+ var dialogRef = this.dialog.open(DeleteDialogComponent, {
180
+ data: {
181
+ type: 'file',
182
+ ids: ids,
183
+ },
184
+ panelClass: 'lib-dialog--small',
185
+ autoFocus: false,
186
+ });
187
+ dialogRef.afterClosed().subscribe((/**
188
+ * @param {?} res
189
+ * @return {?}
190
+ */
191
+ function (res) {
192
+ if (res) {
193
+ _this.svc.dispatch({
194
+ type: ActionTypes.RELOAD_CURRENT_ASSETS,
195
+ });
196
+ _this.svc.dispatch({
197
+ type: ActionTypes.RELOAD_CURRENT_FOLDER,
198
+ });
199
+ _this.svc.dispatch({
200
+ type: ActionTypes.SET_SELECTED_ASSETS,
201
+ payload: [],
202
+ });
203
+ }
204
+ }));
205
+ };
206
+ /**
207
+ * @private
208
+ * @return {?}
209
+ */
210
+ AssetItemComponent.prototype._bindSubscriber = /**
211
+ * @private
212
+ * @return {?}
213
+ */
214
+ function () {
215
+ var _this = this;
216
+ select((/**
217
+ * @param {?} state
218
+ * @return {?}
219
+ */
220
+ function (state) { return state.selectedAssets; }))
221
+ .pipe(takeUntil(this.destroy$))
222
+ .subscribe((/**
223
+ * @param {?} selectedAssets
224
+ * @return {?}
225
+ */
226
+ function (selectedAssets) {
227
+ _this.selectedAssets = selectedAssets;
228
+ }));
229
+ };
230
+ /**
231
+ * @private
232
+ * @return {?}
233
+ */
234
+ AssetItemComponent.prototype._openUploadDialog = /**
235
+ * @private
236
+ * @return {?}
237
+ */
238
+ function () {
239
+ var _this = this;
240
+ /** @type {?} */
241
+ var dialogRef = this.dialog.open(UploadDialogComponent, {
242
+ data: {
243
+ currentAssetId: this.currentFolder.AssetId,
244
+ fileType: this.assetService.dialogConfig.allowedType,
245
+ maxSize: this.assetService.maxSize
246
+ },
247
+ panelClass: 'lib-dialog--medium',
248
+ });
249
+ dialogRef.afterClosed().subscribe((/**
250
+ * @param {?} res
251
+ * @return {?}
252
+ */
253
+ function (res) {
254
+ if (res) {
255
+ _this.svc.dispatch({
256
+ type: ActionTypes.RELOAD_CURRENT_ASSETS,
257
+ });
258
+ _this.svc.dispatch({
259
+ type: ActionTypes.RELOAD_CURRENT_FOLDER,
260
+ });
261
+ }
262
+ }));
263
+ };
264
+ /**
265
+ * @return {?}
266
+ */
267
+ AssetItemComponent.prototype.ngOnDestroy = /**
268
+ * @return {?}
269
+ */
270
+ function () {
271
+ this.destroy$.next(true);
272
+ this.destroy$.complete();
273
+ };
274
+ AssetItemComponent.decorators = [
275
+ { type: Component, args: [{
276
+ selector: 'lib-asset-item',
277
+ template: "<div class=\"asset-wrapper\">\n <div class=\"asset-content\">\n <div class=\"asset-content__header\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.Processed\">\n <button class=\"asset-content__header--button\" mat-raised-button (click)=\"onChange()\">\n <mat-checkbox\n class=\"checkbox\"\n [checked]=\"checkSelectedAsset\"\n ></mat-checkbox>\n </button>\n <button\n class=\"asset-content__header--button edit-button\"\n mat-raised-button\n (click)=\"editAsset()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n <div class=\"asset-content__body\">\n <ng-container [ngSwitch]=\"asset.FileType\">\n <ng-container *ngSwitchCase=\"fileType.IMAGE\">\n <img\n class=\"image\"\n [src]=\"asset.UrlThumbnail\"\n [alt]=\"asset.OriginalFileName\"\n *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\"\n />\n <!-- In Processing -->\n <div class=\"processing\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\n <mat-icon class=\"icon\">cloud_upload</mat-icon>\n <span class=\"processing-txt\">Uploading...</span>\n </div>\n <!-- Failed -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\n <mat-icon class=\"icon-img\">error_outline</mat-icon>\n <div class=\"failed-group\">\n <span style=\"color: #f44336; font-weight: 300; font-size: 12px;\">Failed to upload the file</span>\n </div>\n <div class=\"btn-failed-group\">\n <button class=\"btn-custom-upload\" (click)=\"onUploadAgain(asset)\">Delete and update again</button>\n <span class=\"failed-txt mx-1\">or</span>\n <button class=\"btn-custom-failed\" (click)=\"onDelete(asset)\">Delete</button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"fileType.DOCUMENT\">\n <img [src]=\"base64PNG[asset.Extension] || base64PNG.default\" [alt]=\"asset.OriginalFileName\" class=\"file\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\"/>\n <!-- In Processing -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\n <mat-icon class=\"icon\">cloud_upload</mat-icon>\n <span class=\"processing-txt\">Uploading...</span>\n </div>\n <!-- Failed -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\n <mat-icon class=\"icon-doc\">error_outline</mat-icon>\n <div class=\"failed-group\">\n <span style=\"color: #f44336; font-weight: 300; font-size: 12px;\">Failed to upload the file</span>\n </div>\n <div class=\"btn-failed-group\">\n <button class=\"btn-custom-upload\" (click)=\"onUploadAgain(asset)\">Delete and update again</button>\n <span class=\"failed-txt mx-1\">or</span>\n <button class=\"btn-custom-failed\" (click)=\"onDelete(asset)\">Delete</button>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"asset-content__footer\">\n <div\n class=\"asset-content__footer--info\"\n [ngClass]=\"{\n 'file-type__document': asset.FileType === fileType.DOCUMENT\n }\"\n >\n <p\n class=\"name\"\n [matTooltip]=\"asset.OriginalFileNameWithoutExtension\"\n matTooltipClass=\"width-auto\"\n >\n {{ asset.OriginalFileNameWithoutExtension }}\n </p>\n <p class=\"info\">\n <span class=\"extension\">{{ asset.Extension }}</span>\n <span\n *ngIf=\"\n asset.FileType === fileType.IMAGE && asset?.Extension !== 'svg'\n \"\n >\n - {{ asset.Width }}x{{ asset.Height }}</span\n >\n <span *ngIf=\"asset.Size\"> - {{ asset.Size }}</span>\n </p>\n </div>\n <div class=\"asset-content__footer--file-type\">\n <span>{{ asset.FileType }}</span>\n </div>\n </div>\n </div>\n</div>\n",
278
+ styles: [":host::ng-deep .asset-wrapper{padding:5px}:host::ng-deep .asset-wrapper .asset-content{overflow:hidden;position:relative;border-radius:10px;border:1px solid #d8d8d8;font-size:14px;transition:.3s cubic-bezier(.25,.8,.25,1)}:host::ng-deep .asset-wrapper .asset-content:hover{box-shadow:0 0 8px rgba(0,0,0,.17),0 0 0 rgba(0,0,0,.06)}:host::ng-deep .asset-wrapper .asset-content__header{position:absolute;z-index:1;top:0;left:0;width:100%;display:flex;justify-content:space-between;padding:14px}:host::ng-deep .asset-wrapper .asset-content__header--button{width:30px;height:30px;min-width:30px;display:flex;align-items:center;justify-content:center;text-align:center;color:rgba(0,0,0,.65);background:rgba(255,255,255,.6)}:host::ng-deep .asset-wrapper .asset-content__header--button:hover{background:#fff}:host::ng-deep .asset-wrapper .asset-content__header--button.edit-button{transition:.3s cubic-bezier(.25,.8,.25,1);opacity:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-icon{font-size:22px}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox{pointer-events:none;display:flex;align-items:center}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout{display:block;margin:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout .mat-checkbox-frame{color:#767676}:host::ng-deep .asset-wrapper .asset-content__body{padding-bottom:66.66%;background:#f1f1f1;position:relative}:host::ng-deep .asset-wrapper .asset-content__body img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host::ng-deep .asset-wrapper .asset-content__body img.image{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAUABQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/ivFPFOf+EjvxzjbBgdv+PeDp+OfxzSt4q18AkageASB9ntu3OM+Vn8c5rsdG0fT9d06DVdUgN1f3XmefP5ksO/ypXhj/dwvHGu2ONF+VF3bQSM0AeYUV7IPCWgjgWRA/wCvi4P85SaKAPGm5Vh7H+VeyeERjQLEDoPP/WeQ/wAzRRQB0tFFFAH/2Q==)}:host::ng-deep .asset-wrapper .asset-content__body img.file{width:75%;height:75%}:host::ng-deep .asset-wrapper .asset-content__body .processing{background-color:#f1f1f1;width:100%;height:100%}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon{position:absolute;top:30%;left:42%;font-size:35px}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon-img{position:absolute;top:30%;left:42%;font-size:35px;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon-doc{position:absolute;top:30%;left:42%;font-size:35px;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-txt{position:absolute;top:55%;left:35%}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-image{width:27px;height:27px;-o-object-fit:contain;object-fit:contain}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-group{position:absolute;top:55%;left:20%}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group{position:absolute;top:70%;left:10%;font-size:12px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .failed-txt{color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-upload{font-size:9px;border:0;color:#fff;background-color:#ffc107;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-failed{font-size:9px;border:0;color:#fff;background-color:#f44336;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-failed:hover,:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-upload:hover{opacity:.8}:host::ng-deep .asset-wrapper .asset-content__footer{display:flex;align-items:center;justify-content:space-between;padding:5px 8px}:host::ng-deep .asset-wrapper .asset-content__footer--info{max-width:calc(100% - 50px)}:host::ng-deep .asset-wrapper .asset-content__footer--info p{margin:0;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .asset-wrapper .asset-content__footer--info .info{font-size:12px;color:#979797}:host::ng-deep .asset-wrapper .asset-content__footer--info .info .extension{text-transform:uppercase}:host::ng-deep .asset-wrapper .asset-content__footer--info.file-type__document{max-width:calc(100% - 70px)}:host::ng-deep .asset-wrapper .asset-content__footer--file-type{border-radius:5px;background-color:#d8d8d8;padding:2px 6px;font-size:12px}:host::ng-deep .asset-wrapper .asset-content:hover .edit-button{opacity:1!important}"]
279
+ }] }
280
+ ];
281
+ /** @nocollapse */
282
+ AssetItemComponent.ctorParameters = function () { return [
283
+ { type: MatDialog },
284
+ { type: DomSanitizer },
285
+ { type: AssetService },
286
+ { type: AssetManagementService },
287
+ { type: ChangeDetectorRef }
288
+ ]; };
289
+ AssetItemComponent.propDecorators = {
290
+ hasModifyPermission: [{ type: Input }],
291
+ hasAccessPermission: [{ type: Input }],
292
+ hasArchivePermission: [{ type: Input }],
293
+ asset: [{ type: Input }],
294
+ selectAsset: [{ type: Output }]
295
+ };
296
+ return AssetItemComponent;
297
+ }());
298
+ export { AssetItemComponent };
299
+ if (false) {
300
+ /** @type {?} */
301
+ AssetItemComponent.prototype.hasModifyPermission;
302
+ /** @type {?} */
303
+ AssetItemComponent.prototype.hasAccessPermission;
304
+ /** @type {?} */
305
+ AssetItemComponent.prototype.hasArchivePermission;
306
+ /** @type {?} */
307
+ AssetItemComponent.prototype.asset;
308
+ /** @type {?} */
309
+ AssetItemComponent.prototype.selectAsset;
310
+ /** @type {?} */
311
+ AssetItemComponent.prototype.base64PNG;
312
+ /** @type {?} */
313
+ AssetItemComponent.prototype.errorMessage;
314
+ /** @type {?} */
315
+ AssetItemComponent.prototype.selectedAssets;
316
+ /** @type {?} */
317
+ AssetItemComponent.prototype.currentFolder;
318
+ /** @type {?} */
319
+ AssetItemComponent.prototype.fileType;
320
+ /** @type {?} */
321
+ AssetItemComponent.prototype.backgroundProcessingNum;
322
+ /**
323
+ * @type {?}
324
+ * @private
325
+ */
326
+ AssetItemComponent.prototype.destroy$;
327
+ /**
328
+ * @type {?}
329
+ * @private
330
+ */
331
+ AssetItemComponent.prototype.dialog;
332
+ /**
333
+ * @type {?}
334
+ * @private
335
+ */
336
+ AssetItemComponent.prototype.domSanitizer;
337
+ /** @type {?} */
338
+ AssetItemComponent.prototype.assetService;
339
+ /**
340
+ * @type {?}
341
+ * @private
342
+ */
343
+ AssetItemComponent.prototype.svc;
344
+ /**
345
+ * @type {?}
346
+ * @private
347
+ */
348
+ AssetItemComponent.prototype.changeDetectorRef;
349
+ }
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtaXRlbS9hc3NldC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSx5QkFBeUIsRUFBRSxZQUFZLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakY7SUFVRSw0QkFDVSxNQUFpQixFQUNqQixZQUEwQixFQUMzQixZQUEwQixFQUN6QixHQUEyQixFQUMzQixpQkFBb0M7UUFKcEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVHJDLHdCQUFtQixHQUFhLElBQUksQ0FBQztRQUNyQyx3QkFBbUIsR0FBYSxJQUFJLENBQUM7UUFDckMseUJBQW9CLEdBQWEsSUFBSSxDQUFDO1FBYXJDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVoRCxjQUFTLEdBQUc7WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1lBQ3ZELEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztZQUN2RCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7WUFDdkQsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDO1NBQy9ELENBQUM7UUFFSyxtQkFBYyxHQUFzQixFQUFFLENBQUM7UUFFdkMsYUFBUSxHQUFHLFlBQVksQ0FBQztRQUN4Qiw0QkFBdUIsR0FBRyx5QkFBeUIsQ0FBQztRQUVuRCxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFsQmpELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7O0lBbUJELHFDQUFROzs7SUFBUjtRQUFBLGlCQVNDO1FBUkMscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxZQUFZO2FBQ2QsYUFBYSxFQUFFO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUzs7OztRQUFDLFVBQUMsT0FBTztZQUNqQixLQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztZQUM3QixLQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsc0JBQUksa0RBQWtCOzs7O1FBQXRCO1lBQUEsaUJBS0M7WUFKQyxPQUFPLENBQ0wsSUFBSSxDQUFDLGNBQWM7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSTs7OztnQkFBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQXBDLENBQW9DLEVBQUMsQ0FDMUUsQ0FBQztRQUNKLENBQUM7OztPQUFBOzs7O0lBRU0scUNBQVE7OztJQUFmO1FBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7SUFFTSxzQ0FBUzs7O0lBQWhCO1FBQUEsaUJBdUJDOztZQXRCTyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsU0FBUyxFQUFFLEtBQUs7WUFDaEIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdDQUFnQztnQkFDakQsVUFBVSxFQUFFO29CQUNWLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO29CQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtvQkFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7aUJBQ25DO2FBQ0Y7WUFDRCxVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDLENBQUM7UUFDRixJQUFJLFNBQVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQyxHQUFHO2dCQUNwQyxJQUFJLEdBQUcsRUFBRTtvQkFDUCxLQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQzt3QkFDaEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxxQkFBcUI7cUJBQ3hDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVNLDBDQUFhOzs7O0lBQXBCLFVBQXFCLEtBQWlCO1FBQXRDLGlCQTJCQzs7WUExQk8sR0FBRyxHQUFHLEVBQUU7UUFDZCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs7WUFDbEIsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsTUFBTTtnQkFDWixHQUFHLEtBQUE7YUFDSjtZQUNELFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztRQUVGLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQyxHQUFHO1lBQ3BDLElBQUksR0FBRyxFQUFFO2dCQUNQLEtBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO29CQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLHFCQUFxQjtpQkFDeEMsQ0FBQyxDQUFDO2dCQUNILEtBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO29CQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLHFCQUFxQjtpQkFDeEMsQ0FBQyxDQUFDO2dCQUNILEtBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO29CQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLG1CQUFtQjtvQkFDckMsT0FBTyxFQUFFLEVBQUU7aUJBQ1osQ0FBQyxDQUFDO2dCQUNILEtBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVNLHFDQUFROzs7O0lBQWYsVUFBZ0IsS0FBaUI7UUFBakMsaUJBMEJDOztZQXpCTyxHQUFHLEdBQUcsRUFBRTtRQUNkLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztZQUNsQixTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDeEQsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLEdBQUcsS0FBQTthQUNKO1lBQ0QsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDO1FBRUYsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFDLEdBQUc7WUFDcEMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsS0FBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMscUJBQXFCO2lCQUN4QyxDQUFDLENBQUM7Z0JBQ0gsS0FBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMscUJBQXFCO2lCQUN4QyxDQUFDLENBQUM7Z0JBQ0gsS0FBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMsbUJBQW1CO29CQUNyQyxPQUFPLEVBQUUsRUFBRTtpQkFDWixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTyw0Q0FBZTs7OztJQUF2QjtRQUFBLGlCQU1DO1FBTEMsTUFBTTs7OztRQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSyxDQUFDLGNBQWMsRUFBcEIsQ0FBb0IsRUFBQzthQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTOzs7O1FBQUMsVUFBQyxjQUFjO1lBQ3hCLEtBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7SUFFTyw4Q0FBaUI7Ozs7SUFBekI7UUFBQSxpQkFvQkM7O1lBbkJPLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUN4RCxJQUFJLEVBQUU7Z0JBQ0osY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztnQkFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVc7Z0JBQ3BELE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDbkM7WUFDRCxVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDLENBQUM7UUFFRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztRQUFDLFVBQUMsR0FBRztZQUNwQyxJQUFJLEdBQUcsRUFBRTtnQkFDUCxLQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztvQkFDaEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxxQkFBcUI7aUJBQ3hDLENBQUMsQ0FBQztnQkFDSCxLQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztvQkFDaEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxxQkFBcUI7aUJBQ3hDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsd0NBQVc7OztJQUFYO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztnQkE5S0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLHcySUFBMEM7O2lCQUUzQzs7OztnQkFqQlEsU0FBUztnQkFDVCxZQUFZO2dCQVNaLFlBQVk7Z0JBTlosc0JBQXNCO2dCQU43QixpQkFBaUI7OztzQ0FxQmhCLEtBQUs7c0NBQ0wsS0FBSzt1Q0FDTCxLQUFLO3dCQVdMLEtBQUs7OEJBRUwsTUFBTTs7SUEwSlQseUJBQUM7Q0FBQSxBQS9LRCxJQStLQztTQTFLWSxrQkFBa0I7OztJQUM3QixpREFBOEM7O0lBQzlDLGlEQUE4Qzs7SUFDOUMsa0RBQStDOztJQVcvQyxtQ0FBMkI7O0lBRTNCLHlDQUF1RDs7SUFFdkQsdUNBS0U7O0lBQ0YsMENBQTRCOztJQUM1Qiw0Q0FBOEM7O0lBQzlDLDJDQUFzQzs7SUFDdEMsc0NBQStCOztJQUMvQixxREFBMkQ7Ozs7O0lBRTNELHNDQUFtRDs7Ozs7SUF4QmpELG9DQUF5Qjs7Ozs7SUFDekIsMENBQWtDOztJQUNsQywwQ0FBaUM7Ozs7O0lBQ2pDLGlDQUFtQzs7Ozs7SUFDbkMsK0NBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hc3NldC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZmlsZURlZmF1bHQsIGltYWdlQ3N2LCBpbWFnZVBkZiwgaW1hZ2VaaXAgfSBmcm9tICcuLi8uLi8uLi9jb250YW5zdCc7XG5pbXBvcnQgeyBBc3NldE1vZGVsLCBCYWNrZ3JvdWRQcm9jZXNzaW5nU3RhdHVzLCBGaWxlVHlwZUVudW0sIEZvbGRlclRyZWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlcywgc2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUnO1xuaW1wb3J0IHsgQXNzZXREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9hc3NldC1kaWFsb2cvYXNzZXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFzc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fzc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hc3NldC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NldC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaGFzTW9kaWZ5UGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBoYXNBY2Nlc3NQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBhc3NldFNlcnZpY2U6IEFzc2V0U2VydmljZSxcbiAgICBwcml2YXRlIHN2YzogQXNzZXRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLl9iaW5kU3Vic2NyaWJlcigpO1xuICB9XG4gIEBJbnB1dCgpIGFzc2V0OiBBc3NldE1vZGVsO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RBc3NldCA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXRNb2RlbD4oKTtcblxuICBwdWJsaWMgYmFzZTY0UE5HID0ge1xuICAgIHBkZjogdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChpbWFnZVBkZiksXG4gICAgemlwOiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGltYWdlWmlwKSxcbiAgICBjc3Y6IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VDc3YpLFxuICAgIGRlZmF1bHQ6IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoZmlsZURlZmF1bHQpLFxuICB9O1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWxlY3RlZEFzc2V0czogQXJyYXk8QXNzZXRNb2RlbD4gPSBbXTtcbiAgcHVibGljIGN1cnJlbnRGb2xkZXI6IEZvbGRlclRyZWVNb2RlbDtcbiAgcHVibGljIGZpbGVUeXBlID0gRmlsZVR5cGVFbnVtO1xuICBwdWJsaWMgYmFja2dyb3VuZFByb2Nlc3NpbmdOdW0gPSBCYWNrZ3JvdWRQcm9jZXNzaW5nU3RhdHVzO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIGdldCBjdXJyZW50IGZvbGRlclxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Rm9sZGVyTGlzdCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChmb2xkZXJzKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEZvbGRlciA9IGZvbGRlcnM7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXQgY2hlY2tTZWxlY3RlZEFzc2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNlbGVjdGVkQXNzZXRzICYmXG4gICAgICB0aGlzLnNlbGVjdGVkQXNzZXRzLnNvbWUoKGFzc2V0KSA9PiBhc3NldC5Bc3NldElkID09PSB0aGlzLmFzc2V0LkFzc2V0SWQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZSgpIHtcbiAgICB0aGlzLnNlbGVjdEFzc2V0LmVtaXQodGhpcy5hc3NldCk7XG4gIH1cblxuICBwdWJsaWMgZWRpdEFzc2V0KCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQXNzZXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGFzc2V0SWQ6IHRoaXMuYXNzZXQuQXNzZXRJZCxcbiAgICAgICAgbmFtZTogdGhpcy5hc3NldC5PcmlnaW5hbEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbixcbiAgICAgICAgcGVybWlzc2lvbjoge1xuICAgICAgICAgIG1vZGlmeTogdGhpcy5oYXNNb2RpZnlQZXJtaXNzaW9uLFxuICAgICAgICAgIGFjY2VzczogdGhpcy5oYXNBY2Nlc3NQZXJtaXNzaW9uLFxuICAgICAgICAgIGFyY2hpdmU6IHRoaXMuaGFzQXJjaGl2ZVBlcm1pc3Npb24sXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tbWVkaXVtJyxcbiAgICB9KTtcbiAgICBpZiAoZGlhbG9nUmVmKSB7XG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25VcGxvYWRBZ2Fpbihhc3NldDogQXNzZXRNb2RlbCkge1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgIGlkcy5wdXNoKGFzc2V0LkFzc2V0SWQpO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgaWRzLFxuICAgICAgfSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1zbWFsbCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0FTU0VUUyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9GT0xERVIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcbiAgICAgICAgICBwYXlsb2FkOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29wZW5VcGxvYWREaWFsb2coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZShhc3NldDogQXNzZXRNb2RlbCkge1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgIGlkcy5wdXNoKGFzc2V0LkFzc2V0SWQpO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgaWRzLFxuICAgICAgfSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1zbWFsbCcsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0FTU0VUUyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9GT0xERVIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcbiAgICAgICAgICBwYXlsb2FkOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9iaW5kU3Vic2NyaWJlcigpIHtcbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5zZWxlY3RlZEFzc2V0cylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkQXNzZXRzKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NldHMgPSBzZWxlY3RlZEFzc2V0cztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3BlblVwbG9hZERpYWxvZygpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFVwbG9hZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBjdXJyZW50QXNzZXRJZDogdGhpcy5jdXJyZW50Rm9sZGVyLkFzc2V0SWQsXG4gICAgICAgIGZpbGVUeXBlOiB0aGlzLmFzc2V0U2VydmljZS5kaWFsb2dDb25maWcuYWxsb3dlZFR5cGUsXG4gICAgICAgIG1heFNpemU6IHRoaXMuYXNzZXRTZXJ2aWNlLm1heFNpemVcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tbWVkaXVtJyxcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9BU1NFVFMsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfRk9MREVSLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==