@rs-pk/asset-management 1.0.0

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 -0
  2. package/bundles/rs-pk-asset-management.umd.js +6474 -0
  3. package/bundles/rs-pk-asset-management.umd.js.map +1 -0
  4. package/bundles/rs-pk-asset-management.umd.min.js +16 -0
  5. package/bundles/rs-pk-asset-management.umd.min.js.map +1 -0
  6. package/esm2015/lib/asset-management.component.js +147 -0
  7. package/esm2015/lib/asset-management.module.js +179 -0
  8. package/esm2015/lib/asset-management.service.js +45 -0
  9. package/esm2015/lib/components/partial/add-folder-dialog/add-folder-dialog.component.js +143 -0
  10. package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +373 -0
  11. package/esm2015/lib/components/partial/asset-item/asset-item.component.js +165 -0
  12. package/esm2015/lib/components/partial/asset-list/asset-list.component.js +239 -0
  13. package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +108 -0
  14. package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +100 -0
  15. package/esm2015/lib/components/partial/breadcrumb/breadcrumb.component.js +115 -0
  16. package/esm2015/lib/components/partial/delete-dialog/delete-dialog.component.js +139 -0
  17. package/esm2015/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.js +148 -0
  18. package/esm2015/lib/components/partial/file-item/file-item.component.js +136 -0
  19. package/esm2015/lib/components/partial/file-list/file-list.component.js +72 -0
  20. package/esm2015/lib/components/partial/folder-item/folder-item.component.js +114 -0
  21. package/esm2015/lib/components/partial/folder-list/folder-list.component.js +69 -0
  22. package/esm2015/lib/components/partial/node-details/node-details.component.js +402 -0
  23. package/esm2015/lib/components/partial/node-tree/node-tree.component.js +330 -0
  24. package/esm2015/lib/components/partial/search-box/search-box.component.js +158 -0
  25. package/esm2015/lib/components/partial/sort-items/sort-items.component.js +99 -0
  26. package/esm2015/lib/components/partial/upload-dialog/upload-dialog.component.js +136 -0
  27. package/esm2015/lib/components/partial/upload-file/upload-file.component.js +102 -0
  28. package/esm2015/lib/components/ui/drag-to-resize/drag-to-resize.component.js +96 -0
  29. package/esm2015/lib/components/ui/input-file/input-file.component.js +49 -0
  30. package/esm2015/lib/components/ui/modal/modal.component.js +34 -0
  31. package/esm2015/lib/components/ui/search-not-found/search-not-found.component.js +41 -0
  32. package/esm2015/lib/configs/admin.config.js +22 -0
  33. package/esm2015/lib/contanst/data-image.js +12 -0
  34. package/esm2015/lib/contanst/index.js +6 -0
  35. package/esm2015/lib/datasources/index.js +6 -0
  36. package/esm2015/lib/datasources/node-tree.datasource.js +179 -0
  37. package/esm2015/lib/directives/dialogTrigger.directive.js +47 -0
  38. package/esm2015/lib/directives/directives.module.js +20 -0
  39. package/esm2015/lib/directives/dnd.directive.js +57 -0
  40. package/esm2015/lib/models/asset-file.model.js +57 -0
  41. package/esm2015/lib/models/asset.model.js +135 -0
  42. package/esm2015/lib/models/file-type.enum.js +11 -0
  43. package/esm2015/lib/models/file.model.js +91 -0
  44. package/esm2015/lib/models/index.js +12 -0
  45. package/esm2015/lib/models/node-tree.model.js +32 -0
  46. package/esm2015/lib/models/sort.enum.js +23 -0
  47. package/esm2015/lib/pipes/datetime.pipe.js +79 -0
  48. package/esm2015/lib/pipes/file-size.pipe.js +54 -0
  49. package/esm2015/lib/services/asset.service.js +224 -0
  50. package/esm2015/lib/services/base.service.js +49 -0
  51. package/esm2015/lib/services/env-config.service.js +18 -0
  52. package/esm2015/lib/services/file.service.js +106 -0
  53. package/esm2015/lib/services/index.js +11 -0
  54. package/esm2015/lib/services/node-tree.service.js +212 -0
  55. package/esm2015/lib/services/upload-assets.service.js +203 -0
  56. package/esm2015/lib/store/actions.action.js +125 -0
  57. package/esm2015/lib/store/index.js +7 -0
  58. package/esm2015/lib/store/reducer.js +115 -0
  59. package/esm2015/public-api.js +34 -0
  60. package/esm2015/rs-pk-asset-management.js +17 -0
  61. package/esm5/lib/asset-management.component.js +162 -0
  62. package/esm5/lib/asset-management.module.js +180 -0
  63. package/esm5/lib/asset-management.service.js +54 -0
  64. package/esm5/lib/components/partial/add-folder-dialog/add-folder-dialog.component.js +161 -0
  65. package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +417 -0
  66. package/esm5/lib/components/partial/asset-item/asset-item.component.js +184 -0
  67. package/esm5/lib/components/partial/asset-list/asset-list.component.js +266 -0
  68. package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +123 -0
  69. package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +115 -0
  70. package/esm5/lib/components/partial/breadcrumb/breadcrumb.component.js +138 -0
  71. package/esm5/lib/components/partial/delete-dialog/delete-dialog.component.js +154 -0
  72. package/esm5/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.js +166 -0
  73. package/esm5/lib/components/partial/file-item/file-item.component.js +151 -0
  74. package/esm5/lib/components/partial/file-list/file-list.component.js +93 -0
  75. package/esm5/lib/components/partial/folder-item/folder-item.component.js +126 -0
  76. package/esm5/lib/components/partial/folder-list/folder-list.component.js +82 -0
  77. package/esm5/lib/components/partial/node-details/node-details.component.js +443 -0
  78. package/esm5/lib/components/partial/node-tree/node-tree.component.js +413 -0
  79. package/esm5/lib/components/partial/search-box/search-box.component.js +184 -0
  80. package/esm5/lib/components/partial/sort-items/sort-items.component.js +107 -0
  81. package/esm5/lib/components/partial/upload-dialog/upload-dialog.component.js +151 -0
  82. package/esm5/lib/components/partial/upload-file/upload-file.component.js +130 -0
  83. package/esm5/lib/components/ui/drag-to-resize/drag-to-resize.component.js +117 -0
  84. package/esm5/lib/components/ui/input-file/input-file.component.js +55 -0
  85. package/esm5/lib/components/ui/modal/modal.component.js +39 -0
  86. package/esm5/lib/components/ui/search-not-found/search-not-found.component.js +43 -0
  87. package/esm5/lib/configs/admin.config.js +22 -0
  88. package/esm5/lib/contanst/data-image.js +12 -0
  89. package/esm5/lib/contanst/index.js +6 -0
  90. package/esm5/lib/datasources/index.js +6 -0
  91. package/esm5/lib/datasources/node-tree.datasource.js +239 -0
  92. package/esm5/lib/directives/dialogTrigger.directive.js +53 -0
  93. package/esm5/lib/directives/directives.module.js +25 -0
  94. package/esm5/lib/directives/dnd.directive.js +80 -0
  95. package/esm5/lib/models/asset-file.model.js +69 -0
  96. package/esm5/lib/models/asset.model.js +154 -0
  97. package/esm5/lib/models/file-type.enum.js +11 -0
  98. package/esm5/lib/models/file.model.js +99 -0
  99. package/esm5/lib/models/index.js +12 -0
  100. package/esm5/lib/models/node-tree.model.js +37 -0
  101. package/esm5/lib/models/sort.enum.js +23 -0
  102. package/esm5/lib/pipes/datetime.pipe.js +83 -0
  103. package/esm5/lib/pipes/file-size.pipe.js +63 -0
  104. package/esm5/lib/services/asset.service.js +274 -0
  105. package/esm5/lib/services/base.service.js +57 -0
  106. package/esm5/lib/services/env-config.service.js +18 -0
  107. package/esm5/lib/services/file.service.js +127 -0
  108. package/esm5/lib/services/index.js +11 -0
  109. package/esm5/lib/services/node-tree.service.js +278 -0
  110. package/esm5/lib/services/upload-assets.service.js +260 -0
  111. package/esm5/lib/store/actions.action.js +143 -0
  112. package/esm5/lib/store/index.js +7 -0
  113. package/esm5/lib/store/reducer.js +116 -0
  114. package/esm5/public-api.js +34 -0
  115. package/esm5/rs-pk-asset-management.js +17 -0
  116. package/fesm2015/rs-pk-asset-management.js +5429 -0
  117. package/fesm2015/rs-pk-asset-management.js.map +1 -0
  118. package/fesm5/rs-pk-asset-management.js +6244 -0
  119. package/fesm5/rs-pk-asset-management.js.map +1 -0
  120. package/lib/asset-management.component.d.ts +21 -0
  121. package/lib/asset-management.module.d.ts +5 -0
  122. package/lib/asset-management.service.d.ts +7 -0
  123. package/lib/components/partial/add-folder-dialog/add-folder-dialog.component.d.ts +27 -0
  124. package/lib/components/partial/asset-dialog/asset-dialog.component.d.ts +52 -0
  125. package/lib/components/partial/asset-item/asset-item.component.d.ts +25 -0
  126. package/lib/components/partial/asset-list/asset-list.component.d.ts +22 -0
  127. package/lib/components/partial/asset-management-dialog/asset-management-dialog.component.d.ts +17 -0
  128. package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +19 -0
  129. package/lib/components/partial/breadcrumb/breadcrumb.component.d.ts +17 -0
  130. package/lib/components/partial/delete-dialog/delete-dialog.component.d.ts +24 -0
  131. package/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.d.ts +28 -0
  132. package/lib/components/partial/file-item/file-item.component.d.ts +27 -0
  133. package/lib/components/partial/file-list/file-list.component.d.ts +12 -0
  134. package/lib/components/partial/folder-item/folder-item.component.d.ts +14 -0
  135. package/lib/components/partial/folder-list/folder-list.component.d.ts +11 -0
  136. package/lib/components/partial/node-details/node-details.component.d.ts +29 -0
  137. package/lib/components/partial/node-tree/node-tree.component.d.ts +34 -0
  138. package/lib/components/partial/search-box/search-box.component.d.ts +18 -0
  139. package/lib/components/partial/sort-items/sort-items.component.d.ts +21 -0
  140. package/lib/components/partial/upload-dialog/upload-dialog.component.d.ts +24 -0
  141. package/lib/components/partial/upload-file/upload-file.component.d.ts +18 -0
  142. package/lib/components/ui/drag-to-resize/drag-to-resize.component.d.ts +15 -0
  143. package/lib/components/ui/input-file/input-file.component.d.ts +9 -0
  144. package/lib/components/ui/modal/modal.component.d.ts +7 -0
  145. package/lib/components/ui/search-not-found/search-not-found.component.d.ts +8 -0
  146. package/lib/configs/admin.config.d.ts +3 -0
  147. package/lib/contanst/data-image.d.ts +3 -0
  148. package/lib/contanst/index.d.ts +1 -0
  149. package/lib/datasources/index.d.ts +1 -0
  150. package/lib/datasources/node-tree.datasource.d.ts +24 -0
  151. package/lib/directives/dialogTrigger.directive.d.ts +7 -0
  152. package/lib/directives/directives.module.d.ts +5 -0
  153. package/lib/directives/dnd.directive.d.ts +7 -0
  154. package/lib/models/asset-file.model.d.ts +26 -0
  155. package/lib/models/asset.model.d.ts +61 -0
  156. package/lib/models/file-type.enum.d.ts +4 -0
  157. package/lib/models/file.model.d.ts +41 -0
  158. package/lib/models/index.d.ts +7 -0
  159. package/lib/models/node-tree.model.d.ts +9 -0
  160. package/lib/models/sort.enum.d.ts +9 -0
  161. package/lib/pipes/datetime.pipe.d.ts +13 -0
  162. package/lib/pipes/file-size.pipe.d.ts +5 -0
  163. package/lib/services/asset.service.d.ts +35 -0
  164. package/lib/services/base.service.d.ts +20 -0
  165. package/lib/services/env-config.service.d.ts +7 -0
  166. package/lib/services/file.service.d.ts +13 -0
  167. package/lib/services/index.d.ts +6 -0
  168. package/lib/services/node-tree.service.d.ts +24 -0
  169. package/lib/services/upload-assets.service.d.ts +42 -0
  170. package/lib/store/actions.action.d.ts +51 -0
  171. package/lib/store/index.d.ts +2 -0
  172. package/lib/store/reducer.d.ts +18 -0
  173. package/package.json +28 -0
  174. package/public-api.d.ts +26 -0
  175. package/rs-pk-asset-management.d.ts +12 -0
  176. package/rs-pk-asset-management.metadata.json +1 -0
@@ -0,0 +1,179 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { APP_INITIALIZER, NgModule } from '@angular/core';
6
+ import { CommonModule } from '@angular/common';
7
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
8
+ import { MatDialogModule } from '@angular/material/dialog';
9
+ import { MatButtonModule } from '@angular/material/button';
10
+ import { MatInputModule } from '@angular/material/input';
11
+ import { MatIconModule } from '@angular/material/icon';
12
+ import { MatTooltipModule } from '@angular/material/tooltip';
13
+ import { MatTreeModule } from '@angular/material/tree';
14
+ import { MatPaginatorModule } from '@angular/material/paginator';
15
+ import { MatTableModule } from '@angular/material/table';
16
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
17
+ import { MatMenuModule } from '@angular/material/menu';
18
+ import { MatCheckboxModule } from '@angular/material/checkbox';
19
+ import { MatSelectModule } from '@angular/material/select';
20
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
21
+ import { UploadAssetsService, AssetService, FileService, NodeTreeService, BaseHttpClient } from './services/index';
22
+ import { AssetManagementComponent } from './asset-management.component';
23
+ import { DirectivesModule } from './directives/directives.module';
24
+ // UI
25
+ import { InputFileComponent } from './components/ui//input-file/input-file.component';
26
+ import { ModalComponent } from './components/ui//modal/modal.component';
27
+ import { SearchNotFoundComponent } from './components/ui//search-not-found/search-not-found.component';
28
+ // Partials
29
+ import { FileItemComponent } from './components/partial/file-item/file-item.component';
30
+ import { FileListComponent } from './components/partial/file-list/file-list.component';
31
+ import { UploadFileComponent } from './components/partial/upload-file/upload-file.component';
32
+ import { AddFolderDialogComponent } from './components/partial/add-folder-dialog/add-folder-dialog.component';
33
+ import { EditFolderDialogComponent } from './components/partial/edit-folder-dialog/edit-folder-dialog.component';
34
+ import { DeleteDialogComponent } from './components/partial/delete-dialog/delete-dialog.component';
35
+ import { UploadDialogComponent } from './components/partial/upload-dialog/upload-dialog.component';
36
+ import { FolderItemComponent } from './components/partial/folder-item/folder-item.component';
37
+ import { FolderListComponent } from './components/partial/folder-list/folder-list.component';
38
+ import { AssetListComponent } from './components/partial/asset-list/asset-list.component';
39
+ import { AssetItemComponent } from './components/partial/asset-item/asset-item.component';
40
+ import { AssetManagementDialogComponent } from './components/partial/asset-management-dialog/asset-management-dialog.component';
41
+ import { NodeTreeComponent } from './components/partial/node-tree/node-tree.component';
42
+ import { AssetDialogComponent } from './components/partial/asset-dialog/asset-dialog.component';
43
+ import { BreadcrumbComponent } from './components/partial/breadcrumb/breadcrumb.component';
44
+ import { SearchBoxComponent } from './components/partial/search-box/search-box.component';
45
+ import { SortItemsComponent } from './components/partial/sort-items/sort-items.component';
46
+ import { AssetWrapperComponent } from './components/partial/asset-wrapper/asset-wrapper.component';
47
+ import { NodeDetailsComponent } from './components/partial/node-details/node-details.component';
48
+ import { DragToResizeComponent } from './components/ui/drag-to-resize/drag-to-resize.component';
49
+ // Pipes
50
+ import { FileSizePipe } from './pipes/file-size.pipe';
51
+ import { LocalDatePipe, LocalDateTimePipe } from './pipes/datetime.pipe';
52
+ // SERVICES
53
+ /** @type {?} */
54
+ const SERVICES = [
55
+ UploadAssetsService,
56
+ AssetService,
57
+ FileService,
58
+ NodeTreeService,
59
+ BaseHttpClient
60
+ ];
61
+ /** @type {?} */
62
+ const COMPONENTS = [
63
+ // UI
64
+ InputFileComponent,
65
+ ModalComponent,
66
+ SearchNotFoundComponent,
67
+ DragToResizeComponent,
68
+ // Partials
69
+ UploadFileComponent,
70
+ FileItemComponent,
71
+ FileListComponent,
72
+ UploadDialogComponent,
73
+ AddFolderDialogComponent,
74
+ EditFolderDialogComponent,
75
+ DeleteDialogComponent,
76
+ AssetDialogComponent,
77
+ FolderListComponent,
78
+ NodeDetailsComponent,
79
+ FolderItemComponent,
80
+ AssetListComponent,
81
+ AssetItemComponent,
82
+ NodeTreeComponent,
83
+ BreadcrumbComponent,
84
+ SearchBoxComponent,
85
+ SortItemsComponent,
86
+ AssetWrapperComponent,
87
+ AssetManagementDialogComponent,
88
+ ];
89
+ /** @type {?} */
90
+ const ENTRY_COMPONENTS = [
91
+ ModalComponent,
92
+ UploadDialogComponent,
93
+ AddFolderDialogComponent,
94
+ EditFolderDialogComponent,
95
+ DeleteDialogComponent,
96
+ AssetDialogComponent,
97
+ AssetManagementDialogComponent,
98
+ ];
99
+ /**
100
+ * @param {?} config
101
+ * @return {?}
102
+ */
103
+ export function AMFactory(config) {
104
+ /** @type {?} */
105
+ const fn = (/**
106
+ * @return {?}
107
+ */
108
+ () => {
109
+ return new Promise((/**
110
+ * @param {?} res
111
+ * @return {?}
112
+ */
113
+ res => {
114
+ return setTimeout((/**
115
+ * @return {?}
116
+ */
117
+ () => res(config)));
118
+ }));
119
+ });
120
+ return fn;
121
+ }
122
+ export class AssetManagementModule {
123
+ constructor() { }
124
+ }
125
+ AssetManagementModule.decorators = [
126
+ { type: NgModule, args: [{
127
+ declarations: [
128
+ ...COMPONENTS,
129
+ AssetManagementComponent,
130
+ FileSizePipe,
131
+ LocalDatePipe,
132
+ LocalDateTimePipe,
133
+ ],
134
+ imports: [
135
+ DirectivesModule,
136
+ CommonModule,
137
+ FormsModule,
138
+ ReactiveFormsModule,
139
+ MatDialogModule,
140
+ MatButtonModule,
141
+ MatInputModule,
142
+ MatIconModule,
143
+ MatDialogModule,
144
+ MatButtonModule,
145
+ MatInputModule,
146
+ MatIconModule,
147
+ MatTooltipModule,
148
+ MatPaginatorModule,
149
+ MatTableModule,
150
+ MatProgressBarModule,
151
+ MatMenuModule,
152
+ MatCheckboxModule,
153
+ MatTreeModule,
154
+ MatSelectModule,
155
+ MatProgressSpinnerModule,
156
+ ],
157
+ exports: [
158
+ ...COMPONENTS,
159
+ AssetManagementComponent,
160
+ DirectivesModule,
161
+ FileSizePipe,
162
+ LocalDatePipe,
163
+ LocalDateTimePipe,
164
+ ],
165
+ providers: [
166
+ ...SERVICES,
167
+ {
168
+ provide: APP_INITIALIZER,
169
+ useFactory: AMFactory,
170
+ deps: SERVICES,
171
+ multi: true,
172
+ }
173
+ ],
174
+ entryComponents: [...ENTRY_COMPONENTS],
175
+ },] }
176
+ ];
177
+ /** @nocollapse */
178
+ AssetManagementModule.ctorParameters = () => [];
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbWFuYWdlbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9hc3NldC1tYW5hZ2VtZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFDTCxt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RSxJQUFJO3FCQUNaO2lCQUNGO2dCQUNELGVBQWUsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7YUFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbmltcG9ydCB7XG4gIFVwbG9hZEFzc2V0c1NlcnZpY2UsXG4gIEFzc2V0U2VydmljZSxcbiAgRmlsZVNlcnZpY2UsXG4gIE5vZGVUcmVlU2VydmljZSxcbiAgQmFzZUh0dHBDbGllbnRcbn0gZnJvbSAnLi9zZXJ2aWNlcy9pbmRleCc7XG5cbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudENvbXBvbmVudCB9IGZyb20gJy4vYXNzZXQtbWFuYWdlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aXZlc01vZHVsZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZSc7XG5cbi8vIFVJXG5pbXBvcnQgeyBJbnB1dEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdWkvL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdWkvL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91aS8vc2VhcmNoLW5vdC1mb3VuZC9zZWFyY2gtbm90LWZvdW5kLmNvbXBvbmVudCc7XG5cbi8vIFBhcnRpYWxzXG5pbXBvcnQgeyBGaWxlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL2ZpbGUtaXRlbS9maWxlLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnRpYWwvZmlsZS1saXN0L2ZpbGUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL3VwbG9hZC1maWxlL3VwbG9hZC1maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBZGRGb2xkZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydGlhbC9hZGQtZm9sZGVyLWRpYWxvZy9hZGQtZm9sZGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdEZvbGRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL2VkaXQtZm9sZGVyLWRpYWxvZy9lZGl0LWZvbGRlci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IERlbGV0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL2RlbGV0ZS1kaWFsb2cvZGVsZXRlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnRpYWwvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2xkZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnRpYWwvZm9sZGVyLWl0ZW0vZm9sZGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEZvbGRlckxpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydGlhbC9mb2xkZXItbGlzdC9mb2xkZXItbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXNzZXRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtbGlzdC9hc3NldC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBc3NldEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydGlhbC9hc3NldC1pdGVtL2Fzc2V0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL2Fzc2V0LW1hbmFnZW1lbnQtZGlhbG9nL2Fzc2V0LW1hbmFnZW1lbnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL25vZGUtdHJlZS9ub2RlLXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB7IEFzc2V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnRpYWwvYXNzZXQtZGlhbG9nL2Fzc2V0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhcnRpYWwvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTb3J0SXRlbXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydGlhbC9zb3J0LWl0ZW1zL3NvcnQtaXRlbXMuY29tcG9uZW50JztcbmltcG9ydCB7IEFzc2V0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXJ0aWFsL2Fzc2V0LXdyYXBwZXIvYXNzZXQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZURldGFpbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLWRldGFpbHMvbm9kZS1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcmFnVG9SZXNpemVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdWkvZHJhZy10by1yZXNpemUvZHJhZy10by1yZXNpemUuY29tcG9uZW50JztcblxuXG4vLyBQaXBlc1xuaW1wb3J0IHsgRmlsZVNpemVQaXBlIH0gZnJvbSAnLi9waXBlcy9maWxlLXNpemUucGlwZSc7XG5pbXBvcnQgeyBBTUNvbmZpZyB9IGZyb20gJy4vc2VydmljZXMvZW52LWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsRGF0ZVBpcGUsIExvY2FsRGF0ZVRpbWVQaXBlIH0gZnJvbSAnLi9waXBlcy9kYXRldGltZS5waXBlJztcblxuLy8gU0VSVklDRVNcbmNvbnN0IFNFUlZJQ0VTID0gW1xuICBVcGxvYWRBc3NldHNTZXJ2aWNlLFxuICBBc3NldFNlcnZpY2UsXG4gIEZpbGVTZXJ2aWNlLFxuICBOb2RlVHJlZVNlcnZpY2UsXG4gIEJhc2VIdHRwQ2xpZW50XG5dO1xuXG5jb25zdCBDT01QT05FTlRTID0gW1xuICAvLyBVSVxuICBJbnB1dEZpbGVDb21wb25lbnQsXG4gIE1vZGFsQ29tcG9uZW50LFxuICBTZWFyY2hOb3RGb3VuZENvbXBvbmVudCxcbiAgRHJhZ1RvUmVzaXplQ29tcG9uZW50LFxuXG4gIC8vIFBhcnRpYWxzXG4gIFVwbG9hZEZpbGVDb21wb25lbnQsXG4gIEZpbGVJdGVtQ29tcG9uZW50LFxuICBGaWxlTGlzdENvbXBvbmVudCxcbiAgVXBsb2FkRGlhbG9nQ29tcG9uZW50LFxuICBBZGRGb2xkZXJEaWFsb2dDb21wb25lbnQsXG4gIEVkaXRGb2xkZXJEaWFsb2dDb21wb25lbnQsXG4gIERlbGV0ZURpYWxvZ0NvbXBvbmVudCxcbiAgQXNzZXREaWFsb2dDb21wb25lbnQsXG4gIEZvbGRlckxpc3RDb21wb25lbnQsXG4gIE5vZGVEZXRhaWxzQ29tcG9uZW50LFxuICBGb2xkZXJJdGVtQ29tcG9uZW50LFxuICBBc3NldExpc3RDb21wb25lbnQsXG4gIEFzc2V0SXRlbUNvbXBvbmVudCxcbiAgTm9kZVRyZWVDb21wb25lbnQsXG4gIEJyZWFkY3J1bWJDb21wb25lbnQsXG4gIFNlYXJjaEJveENvbXBvbmVudCxcbiAgU29ydEl0ZW1zQ29tcG9uZW50LFxuICBBc3NldFdyYXBwZXJDb21wb25lbnQsXG4gIEFzc2V0TWFuYWdlbWVudERpYWxvZ0NvbXBvbmVudCxcbl07XG5cbmNvbnN0IEVOVFJZX0NPTVBPTkVOVFMgPSBbXG4gIE1vZGFsQ29tcG9uZW50LFxuICBVcGxvYWREaWFsb2dDb21wb25lbnQsXG4gIEFkZEZvbGRlckRpYWxvZ0NvbXBvbmVudCxcbiAgRWRpdEZvbGRlckRpYWxvZ0NvbXBvbmVudCxcbiAgRGVsZXRlRGlhbG9nQ29tcG9uZW50LFxuICBBc3NldERpYWxvZ0NvbXBvbmVudCxcbiAgQXNzZXRNYW5hZ2VtZW50RGlhbG9nQ29tcG9uZW50LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIEFNRmFjdG9yeShjb25maWc6IEFNQ29uZmlnKSB7XG4gIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXMgPT4ge1xuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKCkgPT4gcmVzKGNvbmZpZykpO1xuICAgIH0pO1xuICB9O1xuICByZXR1cm4gZm47XG59XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC4uLkNPTVBPTkVOVFMsXG4gICAgQXNzZXRNYW5hZ2VtZW50Q29tcG9uZW50LFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBMb2NhbERhdGVQaXBlLFxuICAgIExvY2FsRGF0ZVRpbWVQaXBlLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgRGlyZWN0aXZlc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0VHJlZU1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLi4uQ09NUE9ORU5UUyxcbiAgICBBc3NldE1hbmFnZW1lbnRDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlc01vZHVsZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgTG9jYWxEYXRlUGlwZSxcbiAgICBMb2NhbERhdGVUaW1lUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLi4uU0VSVklDRVMsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogQU1GYWN0b3J5LFxuICAgICAgZGVwczogU0VSVklDRVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF0sXG4gIGVudHJ5Q29tcG9uZW50czogWy4uLkVOVFJZX0NPTVBPTkVOVFNdLFxufSlcbmV4cG9ydCBjbGFzcyBBc3NldE1hbmFnZW1lbnRNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Injectable } from '@angular/core';
6
+ import { Subject } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ /** @type {?} */
9
+ const eventDispatcher = new Subject();
10
+ export class AssetManagementService {
11
+ constructor() {
12
+ }
13
+ /**
14
+ * @return {?}
15
+ */
16
+ getDispatcher() {
17
+ if (!this._dispatcher) {
18
+ this._dispatcher = eventDispatcher;
19
+ }
20
+ return this._dispatcher;
21
+ }
22
+ /**
23
+ * @param {?} action
24
+ * @return {?}
25
+ */
26
+ dispatch(action) {
27
+ this.getDispatcher().next(action);
28
+ }
29
+ }
30
+ AssetManagementService.decorators = [
31
+ { type: Injectable, args: [{
32
+ providedIn: 'root'
33
+ },] }
34
+ ];
35
+ /** @nocollapse */
36
+ AssetManagementService.ctorParameters = () => [];
37
+ /** @nocollapse */ AssetManagementService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AssetManagementService_Factory() { return new AssetManagementService(); }, token: AssetManagementService, providedIn: "root" });
38
+ if (false) {
39
+ /**
40
+ * @type {?}
41
+ * @private
42
+ */
43
+ AssetManagementService.prototype._dispatcher;
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJzLXBrL2Fzc2V0LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztNQUd6QixlQUFlLEdBQUcsSUFBSSxPQUFPLEVBQW1CO0FBS3RELE1BQU0sT0FBTyxzQkFBc0I7SUFJakM7SUFDQSxDQUFDOzs7O0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1NBQ3BDO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBRUQsUUFBUSxDQUFDLE1BQXVCO1FBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7O1lBcEJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs7Ozs7OztJQUdDLDZDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIEFDVElPTlMgZnJvbSAnLi9zdG9yZS9hY3Rpb25zLmFjdGlvbic7XG5cbmNvbnN0IGV2ZW50RGlzcGF0Y2hlciA9IG5ldyBTdWJqZWN0PEFDVElPTlMuQWN0aW9ucz4oKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRNYW5hZ2VtZW50U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIGdldERpc3BhdGNoZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9kaXNwYXRjaGVyKSB7XG4gICAgICB0aGlzLl9kaXNwYXRjaGVyID0gZXZlbnREaXNwYXRjaGVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyO1xuICB9XG5cbiAgZGlzcGF0Y2goYWN0aW9uOiBBQ1RJT05TLkFjdGlvbnMpIHtcbiAgICB0aGlzLmdldERpc3BhdGNoZXIoKS5uZXh0KGFjdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,143 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component, Inject } from '@angular/core';
6
+ import { FormBuilder, FormControl, Validators, } from '@angular/forms';
7
+ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
8
+ import { Subject } from 'rxjs';
9
+ import { takeUntil } from 'rxjs/operators';
10
+ import { FileService } from '../../../services/file.service';
11
+ /**
12
+ * @record
13
+ */
14
+ function IData() { }
15
+ if (false) {
16
+ /** @type {?} */
17
+ IData.prototype.currentAssetId;
18
+ }
19
+ export class AddFolderDialogComponent {
20
+ /**
21
+ * @param {?} fb
22
+ * @param {?} data
23
+ * @param {?} dialogRef
24
+ * @param {?} fileService
25
+ */
26
+ constructor(fb, data, dialogRef, fileService) {
27
+ this.fb = fb;
28
+ this.data = data;
29
+ this.dialogRef = dialogRef;
30
+ this.fileService = fileService;
31
+ this.isLoading = false;
32
+ this.errorMessage = '';
33
+ this.value = '';
34
+ this.destroy$ = new Subject();
35
+ this.form = new FormControl();
36
+ this.formGroup = this.fb.group({
37
+ name: ['', Validators.compose([Validators.required])],
38
+ });
39
+ }
40
+ /**
41
+ * @return {?}
42
+ */
43
+ ngOnInit() { }
44
+ /**
45
+ * @return {?}
46
+ */
47
+ get disabled() {
48
+ const { value: name } = this.formGroup.controls.name;
49
+ return !name || !!this.errorMessage || this.isLoading;
50
+ }
51
+ /**
52
+ * @param {?} _event
53
+ * @return {?}
54
+ */
55
+ onChange(_event) {
56
+ this.errorMessage = '';
57
+ }
58
+ /**
59
+ * @return {?}
60
+ */
61
+ addFolder() {
62
+ const { value: name } = this.formGroup.controls.name;
63
+ this.isLoading = true;
64
+ this.fileService
65
+ .addFolder({
66
+ parentAssetId: this.data.currentAssetId,
67
+ folderName: name.trim(),
68
+ })
69
+ .pipe(takeUntil(this.destroy$))
70
+ .subscribe((/**
71
+ * @param {?} _res
72
+ * @return {?}
73
+ */
74
+ (_res) => this.closeDialog(true)), (/**
75
+ * @param {?} err
76
+ * @return {?}
77
+ */
78
+ err => {
79
+ this.isLoading = false;
80
+ this.errorMessage = err.ResponseMessage;
81
+ }));
82
+ }
83
+ /**
84
+ * @param {?=} res
85
+ * @return {?}
86
+ */
87
+ closeDialog(res) {
88
+ this.dialogRef.close(res);
89
+ }
90
+ /**
91
+ * @return {?}
92
+ */
93
+ ngOnDestroy() {
94
+ this.destroy$.next(true);
95
+ this.destroy$.complete();
96
+ }
97
+ }
98
+ AddFolderDialogComponent.decorators = [
99
+ { type: Component, args: [{
100
+ selector: 'lib-add-folder-dialog',
101
+ template: "<lib-modal heading=\"Add a folder\">\n <ng-container content>\n <form (ngSubmit)=\"addFolder()\" [formGroup]=\"formGroup\" #form=\"ngForm\">\n <input\n (input)=\"onChange($event)\"\n matInput\n placeholder=\"Enter your folder name\"\n autocomplete=\"off\"\n required\n pattern=\".*\\S+.*\"\n formControlName=\"name\"\n />\n <mat-error *ngIf=\"formGroup?.controls?.name?.errors?.pattern\">\n This field does not allow only whitespace\n </mat-error>\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage }}</mat-error>\n </form>\n </ng-container>\n <ng-container actions>\n <button mat-raised-button mat-dialog-close>Cancel</button>\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"addFolder()\"\n [class.loading]=\"isLoading\"\n [disabled]=\"disabled || formGroup?.controls?.name?.errors?.pattern\"\n >\n <ng-container *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"20\"></mat-spinner>\n </ng-container>\n <span>Add</span>\n </button>\n </ng-container>\n</lib-modal>\n",
102
+ styles: [":host::ng-deep .mat-dialog-title{padding-bottom:0!important}:host::ng-deep form{position:relative}:host::ng-deep form .mat-error{margin-top:0;position:absolute;left:0;bottom:-20px;line-height:15px;font-size:13px}:host::ng-deep .mat-dialog-content{padding-top:24px;padding-bottom:24px}:host::ng-deep .mat-dialog-actions{padding-top:5px}"]
103
+ }] }
104
+ ];
105
+ /** @nocollapse */
106
+ AddFolderDialogComponent.ctorParameters = () => [
107
+ { type: FormBuilder },
108
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
109
+ { type: MatDialogRef },
110
+ { type: FileService }
111
+ ];
112
+ if (false) {
113
+ /** @type {?} */
114
+ AddFolderDialogComponent.prototype.isLoading;
115
+ /** @type {?} */
116
+ AddFolderDialogComponent.prototype.errorMessage;
117
+ /** @type {?} */
118
+ AddFolderDialogComponent.prototype.value;
119
+ /**
120
+ * @type {?}
121
+ * @private
122
+ */
123
+ AddFolderDialogComponent.prototype.destroy$;
124
+ /** @type {?} */
125
+ AddFolderDialogComponent.prototype.formGroup;
126
+ /** @type {?} */
127
+ AddFolderDialogComponent.prototype.form;
128
+ /**
129
+ * @type {?}
130
+ * @private
131
+ */
132
+ AddFolderDialogComponent.prototype.fb;
133
+ /** @type {?} */
134
+ AddFolderDialogComponent.prototype.data;
135
+ /** @type {?} */
136
+ AddFolderDialogComponent.prototype.dialogRef;
137
+ /**
138
+ * @type {?}
139
+ * @private
140
+ */
141
+ AddFolderDialogComponent.prototype.fileService;
142
+ }
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvbGRlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJzLXBrL2Fzc2V0LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wYXJ0aWFsL2FkZC1mb2xkZXItZGlhbG9nL2FkZC1mb2xkZXItZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUVYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBRTdELG9CQUVDOzs7SUFEQywrQkFBdUI7O0FBUXpCLE1BQU0sT0FBTyx3QkFBd0I7Ozs7Ozs7SUFPbkMsWUFDVSxFQUFlLEVBQ1MsSUFBVyxFQUNwQyxTQUFpRCxFQUNoRCxXQUF3QjtRQUh4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ1MsU0FBSSxHQUFKLElBQUksQ0FBTztRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUF3QztRQUNoRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVYzQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFNUMsU0FBSSxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBTzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDN0IsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsUUFBUSxLQUFJLENBQUM7Ozs7SUFFYixJQUFJLFFBQVE7Y0FDSixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOzs7OztJQUVELFFBQVEsQ0FBQyxNQUFhO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Ozs7SUFFRCxTQUFTO2NBQ0QsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSTtRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVzthQUNiLFNBQVMsQ0FBQztZQUNULGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7U0FDeEIsQ0FBQzthQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVM7Ozs7UUFDUixDQUFDLElBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDOzs7O1FBQy9DLEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQzFDLENBQUMsRUFDRixDQUFDO0lBQ04sQ0FBQzs7Ozs7SUFFRCxXQUFXLENBQUMsR0FBYTtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBM0RGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxzbkNBQWlEOzthQUVsRDs7OztZQW5CQyxXQUFXOzRDQTZCUixNQUFNLFNBQUMsZUFBZTtZQXhCbEIsWUFBWTtZQUlaLFdBQVc7Ozs7SUFZbEIsNkNBQXlCOztJQUN6QixnREFBeUI7O0lBQ3pCLHlDQUFrQjs7Ozs7SUFDbEIsNENBQW1EOztJQUNuRCw2Q0FBNEI7O0lBQzVCLHdDQUE2Qzs7Ozs7SUFFM0Msc0NBQXVCOztJQUN2Qix3Q0FBMkM7O0lBQzNDLDZDQUF3RDs7Ozs7SUFDeEQsK0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUFkZEZvbGRlclJlcyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpbGUuc2VydmljZSc7XG5cbmludGVyZmFjZSBJRGF0YSB7XG4gIGN1cnJlbnRBc3NldElkOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hZGQtZm9sZGVyLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtZm9sZGVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1mb2xkZXItZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFkZEZvbGRlckRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlID0gJyc7XG4gIHB1YmxpYyB2YWx1ZSA9ICcnO1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZm9ybTogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBJRGF0YSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWRkRm9sZGVyRGlhbG9nQ29tcG9uZW50PixcbiAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKV0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIGNvbnN0IHsgdmFsdWU6IG5hbWUgfSA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLm5hbWU7XG4gICAgcmV0dXJuICFuYW1lIHx8ICEhdGhpcy5lcnJvck1lc3NhZ2UgfHwgdGhpcy5pc0xvYWRpbmc7XG4gIH1cblxuICBvbkNoYW5nZShfZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgfVxuXG4gIGFkZEZvbGRlcigpIHtcbiAgICBjb25zdCB7IHZhbHVlOiBuYW1lIH0gPSB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5uYW1lO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVTZXJ2aWNlXG4gICAgICAuYWRkRm9sZGVyKHtcbiAgICAgICAgcGFyZW50QXNzZXRJZDogdGhpcy5kYXRhLmN1cnJlbnRBc3NldElkLFxuICAgICAgICBmb2xkZXJOYW1lOiBuYW1lLnRyaW0oKSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoX3JlczogSUFkZEZvbGRlclJlcykgPT4gdGhpcy5jbG9zZURpYWxvZyh0cnVlKSxcbiAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyLlJlc3BvbnNlTWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKHJlcz86IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19