@rolatech/angular-components 17.2.8

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 (62) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +26 -0
  3. package/esm2022/lib/angular-components.module.mjs +16 -0
  4. package/esm2022/lib/app-container/app-container.component.mjs +12 -0
  5. package/esm2022/lib/app-container-content/app-container-content.component.mjs +13 -0
  6. package/esm2022/lib/app-drawer/app-drawer.component.mjs +107 -0
  7. package/esm2022/lib/app-footer/app-footer.component.mjs +28 -0
  8. package/esm2022/lib/app-layout/app-layout.component.mjs +76 -0
  9. package/esm2022/lib/app-page/app-page.component.mjs +20 -0
  10. package/esm2022/lib/base.component.mjs +15 -0
  11. package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +19 -0
  12. package/esm2022/lib/console-layout/console-layout.component.mjs +12 -0
  13. package/esm2022/lib/folder/folder.component.mjs +11 -0
  14. package/esm2022/lib/loading-spinner/loading-spinner.component.mjs +33 -0
  15. package/esm2022/lib/material.module.mjs +238 -0
  16. package/esm2022/lib/media-list/media-list.component.mjs +34 -0
  17. package/esm2022/lib/media-list-item/media-list-item.component.mjs +36 -0
  18. package/esm2022/lib/media-preview-dialog/media-preview-dialog.component.mjs +51 -0
  19. package/esm2022/lib/media-upload/media-upload.component.mjs +71 -0
  20. package/esm2022/lib/media-upload-dialog/media-upload-dialog.component.mjs +91 -0
  21. package/esm2022/lib/menu-user/menu-user.component.mjs +21 -0
  22. package/esm2022/lib/not-found/not-found.component.mjs +31 -0
  23. package/esm2022/lib/spacer/spacer.component.mjs +13 -0
  24. package/esm2022/lib/storage-bucket-create/storage-bucket-create.component.mjs +27 -0
  25. package/esm2022/lib/storage-file-upload/storage-file-upload.component.mjs +47 -0
  26. package/esm2022/lib/storage-folder-create/storage-folder-create.component.mjs +32 -0
  27. package/esm2022/lib/topbar/topbar.component.mjs +73 -0
  28. package/esm2022/lib/topbar-avatar-menu/topbar-avatar-menu.component.mjs +37 -0
  29. package/esm2022/lib/wechat-connect-dialog/wechat-connect-dialog.component.mjs +37 -0
  30. package/esm2022/rolatech-angular-components.mjs +5 -0
  31. package/fesm2022/rolatech-angular-components.mjs +1059 -0
  32. package/fesm2022/rolatech-angular-components.mjs.map +1 -0
  33. package/index.d.ts +25 -0
  34. package/lib/angular-components.module.d.ts +7 -0
  35. package/lib/app-container/app-container.component.d.ts +5 -0
  36. package/lib/app-container-content/app-container-content.component.d.ts +5 -0
  37. package/lib/app-drawer/app-drawer.component.d.ts +39 -0
  38. package/lib/app-footer/app-footer.component.d.ts +10 -0
  39. package/lib/app-layout/app-layout.component.d.ts +18 -0
  40. package/lib/app-page/app-page.component.d.ts +7 -0
  41. package/lib/base.component.d.ts +13 -0
  42. package/lib/confirmation-dialog/confirmation-dialog.component.d.ts +13 -0
  43. package/lib/console-layout/console-layout.component.d.ts +5 -0
  44. package/lib/folder/folder.component.d.ts +5 -0
  45. package/lib/loading-spinner/loading-spinner.component.d.ts +16 -0
  46. package/lib/material.module.d.ts +50 -0
  47. package/lib/media-list/media-list.component.d.ts +14 -0
  48. package/lib/media-list-item/media-list-item.component.d.ts +16 -0
  49. package/lib/media-preview-dialog/media-preview-dialog.component.d.ts +18 -0
  50. package/lib/media-upload/media-upload.component.d.ts +19 -0
  51. package/lib/media-upload-dialog/media-upload-dialog.component.d.ts +32 -0
  52. package/lib/menu-user/menu-user.component.d.ts +13 -0
  53. package/lib/not-found/not-found.component.d.ts +11 -0
  54. package/lib/spacer/spacer.component.d.ts +8 -0
  55. package/lib/storage-bucket-create/storage-bucket-create.component.d.ts +10 -0
  56. package/lib/storage-file-upload/storage-file-upload.component.d.ts +17 -0
  57. package/lib/storage-folder-create/storage-folder-create.component.d.ts +11 -0
  58. package/lib/topbar/topbar.component.d.ts +23 -0
  59. package/lib/topbar-avatar-menu/topbar-avatar-menu.component.d.ts +10 -0
  60. package/lib/wechat-connect-dialog/wechat-connect-dialog.component.d.ts +16 -0
  61. package/package.json +31 -0
  62. package/themes/_default.scss +1 -0
@@ -0,0 +1,238 @@
1
+ import { A11yModule } from '@angular/cdk/a11y';
2
+ import { ClipboardModule } from '@angular/cdk/clipboard';
3
+ import { DragDropModule } from '@angular/cdk/drag-drop';
4
+ import { LayoutModule } from '@angular/cdk/layout';
5
+ import { PortalModule } from '@angular/cdk/portal';
6
+ import { ScrollingModule } from '@angular/cdk/scrolling';
7
+ import { CdkStepperModule } from '@angular/cdk/stepper';
8
+ import { CdkTableModule } from '@angular/cdk/table';
9
+ import { CdkTreeModule } from '@angular/cdk/tree';
10
+ import { NgModule } from '@angular/core';
11
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
12
+ import { MatBadgeModule } from '@angular/material/badge';
13
+ import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
14
+ import { MatButtonModule } from '@angular/material/button';
15
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
16
+ import { MatCardModule } from '@angular/material/card';
17
+ import { MatCheckboxModule } from '@angular/material/checkbox';
18
+ import { MatChipsModule } from '@angular/material/chips';
19
+ import { MatNativeDateModule, MatRippleModule } from '@angular/material/core';
20
+ import { MatDatepickerModule } from '@angular/material/datepicker';
21
+ import { MatDialogModule } from '@angular/material/dialog';
22
+ import { MatDividerModule } from '@angular/material/divider';
23
+ import { MatExpansionModule } from '@angular/material/expansion';
24
+ import { MatFormFieldModule } from '@angular/material/form-field';
25
+ import { MatGridListModule } from '@angular/material/grid-list';
26
+ import { MatIconModule } from '@angular/material/icon';
27
+ import { MatInputModule } from '@angular/material/input';
28
+ import { MatListModule } from '@angular/material/list';
29
+ import { MatMenuModule } from '@angular/material/menu';
30
+ import { MatPaginatorModule } from '@angular/material/paginator';
31
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
32
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
33
+ import { MatRadioModule } from '@angular/material/radio';
34
+ import { MatSelectModule } from '@angular/material/select';
35
+ import { MatSidenavModule } from '@angular/material/sidenav';
36
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
37
+ import { MatSliderModule } from '@angular/material/slider';
38
+ import { MatSnackBarModule } from '@angular/material/snack-bar';
39
+ import { MatSortModule } from '@angular/material/sort';
40
+ import { MatStepperModule } from '@angular/material/stepper';
41
+ import { MatTableModule } from '@angular/material/table';
42
+ import { MatTabsModule } from '@angular/material/tabs';
43
+ import { MatToolbarModule } from '@angular/material/toolbar';
44
+ import { MatTooltipModule } from '@angular/material/tooltip';
45
+ import { MatTreeModule } from '@angular/material/tree';
46
+ import * as i0 from "@angular/core";
47
+ const MAT_MODULE = [
48
+ A11yModule,
49
+ ClipboardModule,
50
+ CdkStepperModule,
51
+ CdkTableModule,
52
+ CdkTreeModule,
53
+ DragDropModule,
54
+ LayoutModule,
55
+ MatAutocompleteModule,
56
+ MatBadgeModule,
57
+ MatBottomSheetModule,
58
+ MatButtonModule,
59
+ MatButtonToggleModule,
60
+ MatCardModule,
61
+ MatCheckboxModule,
62
+ MatChipsModule,
63
+ MatStepperModule,
64
+ MatDatepickerModule,
65
+ MatDialogModule,
66
+ MatDividerModule,
67
+ MatExpansionModule,
68
+ MatGridListModule,
69
+ MatIconModule,
70
+ MatFormFieldModule,
71
+ MatInputModule,
72
+ MatListModule,
73
+ MatMenuModule,
74
+ MatNativeDateModule,
75
+ MatPaginatorModule,
76
+ MatProgressBarModule,
77
+ MatProgressSpinnerModule,
78
+ MatRadioModule,
79
+ MatRippleModule,
80
+ MatSelectModule,
81
+ MatSidenavModule,
82
+ MatSliderModule,
83
+ MatSlideToggleModule,
84
+ MatSnackBarModule,
85
+ MatSortModule,
86
+ MatTableModule,
87
+ MatTabsModule,
88
+ MatToolbarModule,
89
+ MatTooltipModule,
90
+ MatTreeModule,
91
+ PortalModule,
92
+ ScrollingModule,
93
+ ];
94
+ export class MaterialModule {
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
96
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: MaterialModule, imports: [A11yModule,
97
+ ClipboardModule,
98
+ CdkStepperModule,
99
+ CdkTableModule,
100
+ CdkTreeModule,
101
+ DragDropModule,
102
+ LayoutModule,
103
+ MatAutocompleteModule,
104
+ MatBadgeModule,
105
+ MatBottomSheetModule,
106
+ MatButtonModule,
107
+ MatButtonToggleModule,
108
+ MatCardModule,
109
+ MatCheckboxModule,
110
+ MatChipsModule,
111
+ MatStepperModule,
112
+ MatDatepickerModule,
113
+ MatDialogModule,
114
+ MatDividerModule,
115
+ MatExpansionModule,
116
+ MatGridListModule,
117
+ MatIconModule,
118
+ MatFormFieldModule,
119
+ MatInputModule,
120
+ MatListModule,
121
+ MatMenuModule,
122
+ MatNativeDateModule,
123
+ MatPaginatorModule,
124
+ MatProgressBarModule,
125
+ MatProgressSpinnerModule,
126
+ MatRadioModule,
127
+ MatRippleModule,
128
+ MatSelectModule,
129
+ MatSidenavModule,
130
+ MatSliderModule,
131
+ MatSlideToggleModule,
132
+ MatSnackBarModule,
133
+ MatSortModule,
134
+ MatTableModule,
135
+ MatTabsModule,
136
+ MatToolbarModule,
137
+ MatTooltipModule,
138
+ MatTreeModule,
139
+ PortalModule,
140
+ ScrollingModule], exports: [A11yModule,
141
+ ClipboardModule,
142
+ CdkStepperModule,
143
+ CdkTableModule,
144
+ CdkTreeModule,
145
+ DragDropModule,
146
+ LayoutModule,
147
+ MatAutocompleteModule,
148
+ MatBadgeModule,
149
+ MatBottomSheetModule,
150
+ MatButtonModule,
151
+ MatButtonToggleModule,
152
+ MatCardModule,
153
+ MatCheckboxModule,
154
+ MatChipsModule,
155
+ MatStepperModule,
156
+ MatDatepickerModule,
157
+ MatDialogModule,
158
+ MatDividerModule,
159
+ MatExpansionModule,
160
+ MatGridListModule,
161
+ MatIconModule,
162
+ MatFormFieldModule,
163
+ MatInputModule,
164
+ MatListModule,
165
+ MatMenuModule,
166
+ MatNativeDateModule,
167
+ MatPaginatorModule,
168
+ MatProgressBarModule,
169
+ MatProgressSpinnerModule,
170
+ MatRadioModule,
171
+ MatRippleModule,
172
+ MatSelectModule,
173
+ MatSidenavModule,
174
+ MatSliderModule,
175
+ MatSlideToggleModule,
176
+ MatSnackBarModule,
177
+ MatSortModule,
178
+ MatTableModule,
179
+ MatTabsModule,
180
+ MatToolbarModule,
181
+ MatTooltipModule,
182
+ MatTreeModule,
183
+ PortalModule,
184
+ ScrollingModule] });
185
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaterialModule, imports: [MAT_MODULE, A11yModule,
186
+ ClipboardModule,
187
+ CdkStepperModule,
188
+ CdkTableModule,
189
+ CdkTreeModule,
190
+ DragDropModule,
191
+ LayoutModule,
192
+ MatAutocompleteModule,
193
+ MatBadgeModule,
194
+ MatBottomSheetModule,
195
+ MatButtonModule,
196
+ MatButtonToggleModule,
197
+ MatCardModule,
198
+ MatCheckboxModule,
199
+ MatChipsModule,
200
+ MatStepperModule,
201
+ MatDatepickerModule,
202
+ MatDialogModule,
203
+ MatDividerModule,
204
+ MatExpansionModule,
205
+ MatGridListModule,
206
+ MatIconModule,
207
+ MatFormFieldModule,
208
+ MatInputModule,
209
+ MatListModule,
210
+ MatMenuModule,
211
+ MatNativeDateModule,
212
+ MatPaginatorModule,
213
+ MatProgressBarModule,
214
+ MatProgressSpinnerModule,
215
+ MatRadioModule,
216
+ MatRippleModule,
217
+ MatSelectModule,
218
+ MatSidenavModule,
219
+ MatSliderModule,
220
+ MatSlideToggleModule,
221
+ MatSnackBarModule,
222
+ MatSortModule,
223
+ MatTableModule,
224
+ MatTabsModule,
225
+ MatToolbarModule,
226
+ MatTooltipModule,
227
+ MatTreeModule,
228
+ PortalModule,
229
+ ScrollingModule] });
230
+ }
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaterialModule, decorators: [{
232
+ type: NgModule,
233
+ args: [{
234
+ imports: [...MAT_MODULE],
235
+ exports: [...MAT_MODULE],
236
+ }]
237
+ }] });
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9tYXRlcmlhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FB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LGVBQWU7WUFDZixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixjQUFjO1lBQ2QsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLFlBQVk7WUFDWixlQUFlO3dHQU9KLGNBQWMsWUFIWixVQUFVLEVBaER2QixVQUFVO1lBQ1YsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsYUFBYTtZQUNiLGNBQWM7WUFDZCxZQUFZO1lBQ1oscUJBQXFCO1lBQ3JCLGNBQWM7WUFDZCxvQkFBb0I7WUFDcEIsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxhQUFhO1lBQ2IsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixjQUFjO1lBQ2QsZUFBZTtZQUNmLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsWUFBWTtZQUNaLGVBQWU7OzJGQU9KLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDbGlwYm9hcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvY2xpcGJvYXJkJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDZGtTdGVwcGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQ2RrVGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuaW1wb3J0IHsgQ2RrVHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCb3R0b21TaGVldE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0U3RlcHBlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5cbmNvbnN0IE1BVF9NT0RVTEUgPSBbXG4gIEExMXlNb2R1bGUsXG4gIENsaXBib2FyZE1vZHVsZSxcbiAgQ2RrU3RlcHBlck1vZHVsZSxcbiAgQ2RrVGFibGVNb2R1bGUsXG4gIENka1RyZWVNb2R1bGUsXG4gIERyYWdEcm9wTW9kdWxlLFxuICBMYXlvdXRNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgTWF0QmFkZ2VNb2R1bGUsXG4gIE1hdEJvdHRvbVNoZWV0TW9kdWxlLFxuICBNYXRCdXR0b25Nb2R1bGUsXG4gIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgTWF0Q2FyZE1vZHVsZSxcbiAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gIE1hdENoaXBzTW9kdWxlLFxuICBNYXRTdGVwcGVyTW9kdWxlLFxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICBNYXREaWFsb2dNb2R1bGUsXG4gIE1hdERpdmlkZXJNb2R1bGUsXG4gIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgTWF0R3JpZExpc3RNb2R1bGUsXG4gIE1hdEljb25Nb2R1bGUsXG4gIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgTWF0SW5wdXRNb2R1bGUsXG4gIE1hdExpc3RNb2R1bGUsXG4gIE1hdE1lbnVNb2R1bGUsXG4gIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gIE1hdFBhZ2luYXRvck1vZHVsZSxcbiAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgTWF0UmFkaW9Nb2R1bGUsXG4gIE1hdFJpcHBsZU1vZHVsZSxcbiAgTWF0U2VsZWN0TW9kdWxlLFxuICBNYXRTaWRlbmF2TW9kdWxlLFxuICBNYXRTbGlkZXJNb2R1bGUsXG4gIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICBNYXRTbmFja0Jhck1vZHVsZSxcbiAgTWF0U29ydE1vZHVsZSxcbiAgTWF0VGFibGVNb2R1bGUsXG4gIE1hdFRhYnNNb2R1bGUsXG4gIE1hdFRvb2xiYXJNb2R1bGUsXG4gIE1hdFRvb2x0aXBNb2R1bGUsXG4gIE1hdFRyZWVNb2R1bGUsXG4gIFBvcnRhbE1vZHVsZSxcbiAgU2Nyb2xsaW5nTW9kdWxlLFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLk1BVF9NT0RVTEVdLFxuICBleHBvcnRzOiBbLi4uTUFUX01PRFVMRV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/progress-bar";
5
+ export class MediaListComponent {
6
+ isUploading;
7
+ media = [];
8
+ showAdd = true;
9
+ mediaItemClick = new EventEmitter();
10
+ upload = new EventEmitter();
11
+ onMediaItemClick(item) {
12
+ this.mediaItemClick.emit(item);
13
+ }
14
+ onUpload(event) {
15
+ this.upload.emit(event);
16
+ }
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MediaListComponent, isStandalone: true, selector: "rolatech-media-list", inputs: { isUploading: "isUploading", media: "media", showAdd: "showAdd" }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, ngImport: i0, template: "<div class=\"flex flex-row flex-wrap box-border items-center\">\n <div class=\"progress-bar\">\n @if (isUploading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n <div class=\"flex flex-row flex-wrap box-border items-center gap-2\">\n <ng-content></ng-content>\n <div>\n <input style=\"display: none\" type=\"file\" accept=\"image/*, video/*\" (change)=\"onUpload($event)\" #fileInput />\n @if (showAdd) {\n <div class=\"add-button\">\n <img (click)=\"fileInput.click()\" class=\"tile-media\" src=\"assets/images/baseline_add_black_48dp.png\" alt=\"add image\" />\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [".progress-bar{display:block;min-height:6px;width:100%;padding:4px 0}.add-button{cursor:pointer;position:relative;box-sizing:border-box;padding:2px}.tile-media{height:80px;width:80px;object-fit:contain;cursor:pointer;padding:6px;position:relative;box-sizing:border-box}app-media-list-item:before{border-radius:12px}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaListComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'rolatech-media-list', standalone: true, imports: [MatProgressBarModule], template: "<div class=\"flex flex-row flex-wrap box-border items-center\">\n <div class=\"progress-bar\">\n @if (isUploading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n <div class=\"flex flex-row flex-wrap box-border items-center gap-2\">\n <ng-content></ng-content>\n <div>\n <input style=\"display: none\" type=\"file\" accept=\"image/*, video/*\" (change)=\"onUpload($event)\" #fileInput />\n @if (showAdd) {\n <div class=\"add-button\">\n <img (click)=\"fileInput.click()\" class=\"tile-media\" src=\"assets/images/baseline_add_black_48dp.png\" alt=\"add image\" />\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [".progress-bar{display:block;min-height:6px;width:100%;padding:4px 0}.add-button{cursor:pointer;position:relative;box-sizing:border-box;padding:2px}.tile-media{height:80px;width:80px;object-fit:contain;cursor:pointer;padding:6px;position:relative;box-sizing:border-box}app-media-list-item:before{border-radius:12px}\n"] }]
23
+ }], propDecorators: { isUploading: [{
24
+ type: Input
25
+ }], media: [{
26
+ type: Input
27
+ }], showAdd: [{
28
+ type: Input
29
+ }], mediaItemClick: [{
30
+ type: Output
31
+ }], upload: [{
32
+ type: Output
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLWxpc3QvbWVkaWEtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLWxpc3QvbWVkaWEtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFTdEUsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixXQUFXLENBQVc7SUFDdEIsS0FBSyxHQUFZLEVBQUUsQ0FBQztJQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ2QsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDM0MsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0lBRXZELGdCQUFnQixDQUFDLElBQVc7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7dUdBWlUsa0JBQWtCOzJGQUFsQixrQkFBa0IsNE5DWC9CLDRyQkFrQkEscVhEVFksb0JBQW9COzsyRkFFbkIsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsQ0FBQzs4QkFHdEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVkaWEgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1tZWRpYS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZWRpYS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRQcm9ncmVzc0Jhck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhTGlzdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nITogYm9vbGVhbjtcbiAgQElucHV0KCkgbWVkaWE6IE1lZGlhW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd0FkZCA9IHRydWU7XG4gIEBPdXRwdXQoKSBtZWRpYUl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWVkaWE+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1EYXRhIHwgbnVsbD4oKTtcblxuICBvbk1lZGlhSXRlbUNsaWNrKGl0ZW06IE1lZGlhKSB7XG4gICAgdGhpcy5tZWRpYUl0ZW1DbGljay5lbWl0KGl0ZW0pO1xuICB9XG4gIG9uVXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnVwbG9hZC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGJveC1ib3JkZXIgaXRlbXMtY2VudGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIj5cbiAgICBAaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAgYm94LWJvcmRlciBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdj5cbiAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLyosIHZpZGVvLypcIiAoY2hhbmdlKT1cIm9uVXBsb2FkKCRldmVudClcIiAjZmlsZUlucHV0IC8+XG4gICAgICBAaWYgKHNob3dBZGQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1idXR0b25cIj5cbiAgICAgICAgICA8aW1nIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGNsYXNzPVwidGlsZS1tZWRpYVwiIHNyYz1cImFzc2V0cy9pbWFnZXMvYmFzZWxpbmVfYWRkX2JsYWNrXzQ4ZHAucG5nXCIgYWx0PVwiYWRkIGltYWdlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { MatButtonModule } from '@angular/material/button';
3
+ import { MatIconModule } from '@angular/material/icon';
4
+ import { MatMenuModule } from '@angular/material/menu';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/button";
7
+ import * as i2 from "@angular/material/menu";
8
+ import * as i3 from "@angular/material/icon";
9
+ export class MediaListItemComponent {
10
+ media;
11
+ uploadProgress = 0;
12
+ mediaItemClick = new EventEmitter();
13
+ // @Output() deleteMedia = new EventEmitter<{ id: string; media: Media }>();
14
+ deleteMedia = new EventEmitter();
15
+ onMediaItemClick(event) {
16
+ this.mediaItemClick.emit(event);
17
+ }
18
+ onDeleteMedia(media) {
19
+ this.deleteMedia.emit(media);
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: MediaListItemComponent, isStandalone: true, selector: "rolatech-media-list-item", inputs: { media: "media", uploadProgress: "uploadProgress" }, outputs: { mediaItemClick: "mediaItemClick", deleteMedia: "deleteMedia" }, ngImport: i0, template: "<div\n class=\"media-list-item relative hasImage focus:outline-none focus:shadow-outline bg-gray-100 cursor-pointer text-transparent hover:text-white shadow-sm\"\n>\n <div class=\"absolute z-30 right-0\">\n <div class=\"flex-1\"></div>\n <div>\n <button mat-icon-button [matMenuTriggerFor]=\"beforeMenu\" class=\"ml-auto focus:outline-none hover:bg-gray-300 p-1\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"onDeleteMedia(media)\">\n <span>\u5220\u9664</span>\n </button>\n </mat-menu>\n </div>\n </div>\n <div id=\"thumbnail\" class=\"thumbnail\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n </div>\n <section\n (click)=\"onMediaItemClick(media)\"\n class=\"flex flex-col text-xs break-words w-full h-full z-20 absolute top-0\"\n ></section>\n</div>\n", styles: [".media-list-item{cursor:pointer;box-sizing:border-box;height:128px;width:228px;display:inline-block;display:block;position:relative;flex:none}.tile-media{height:100%;width:100%;object-fit:cover;display:inline-block;background-color:transparent}#thumbnail.thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block;position:absolute;border-radius:8px;inset:0}.hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaListItemComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'rolatech-media-list-item', standalone: true, imports: [MatButtonModule, MatMenuModule, MatIconModule], template: "<div\n class=\"media-list-item relative hasImage focus:outline-none focus:shadow-outline bg-gray-100 cursor-pointer text-transparent hover:text-white shadow-sm\"\n>\n <div class=\"absolute z-30 right-0\">\n <div class=\"flex-1\"></div>\n <div>\n <button mat-icon-button [matMenuTriggerFor]=\"beforeMenu\" class=\"ml-auto focus:outline-none hover:bg-gray-300 p-1\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"onDeleteMedia(media)\">\n <span>\u5220\u9664</span>\n </button>\n </mat-menu>\n </div>\n </div>\n <div id=\"thumbnail\" class=\"thumbnail\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n </div>\n <section\n (click)=\"onMediaItemClick(media)\"\n class=\"flex flex-col text-xs break-words w-full h-full z-20 absolute top-0\"\n ></section>\n</div>\n", styles: [".media-list-item{cursor:pointer;box-sizing:border-box;height:128px;width:228px;display:inline-block;display:block;position:relative;flex:none}.tile-media{height:100%;width:100%;object-fit:cover;display:inline-block;background-color:transparent}#thumbnail.thumbnail{height:100%;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;display:block;position:absolute;border-radius:8px;inset:0}.hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}\n"] }]
27
+ }], propDecorators: { media: [{
28
+ type: Input
29
+ }], uploadProgress: [{
30
+ type: Input
31
+ }], mediaItemClick: [{
32
+ type: Output
33
+ }], deleteMedia: [{
34
+ type: Output
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbWVkaWEtbGlzdC1pdGVtL21lZGlhLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLWxpc3QtaXRlbS9tZWRpYS1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFVdkQsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixLQUFLLENBQVM7SUFDZCxjQUFjLEdBQVcsQ0FBQyxDQUFDO0lBRTFCLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFHdkMsQ0FBQztJQUNMLDRFQUE0RTtJQUNsRSxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUVsRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO3VHQWhCVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiw2TkNibkMsNDlCQXdCQSxvakJEYlksZUFBZSwySUFBRSxhQUFhLDZ2QkFBRSxhQUFhOzsyRkFFNUMsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQzs4QkFHL0MsS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNZWRpYSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lZGlhLWxpc3QtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZWRpYS1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEJ1dHRvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhTGlzdEl0ZW1Db21wb25lbnQge1xuICBASW5wdXQoKSBtZWRpYSE6IE1lZGlhO1xuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzczogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KCkgbWVkaWFJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBzZWxlY3RlZDogbnVtYmVyO1xuICAgIG1lZGlhOiBNZWRpYTtcbiAgfT4oKTtcbiAgLy8gQE91dHB1dCgpIGRlbGV0ZU1lZGlhID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IG1lZGlhOiBNZWRpYSB9PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlTWVkaWEgPSBuZXcgRXZlbnRFbWl0dGVyPE1lZGlhPigpO1xuXG4gIG9uTWVkaWFJdGVtQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubWVkaWFJdGVtQ2xpY2suZW1pdChldmVudCk7XG4gIH1cbiAgb25EZWxldGVNZWRpYShtZWRpYTogTWVkaWEpIHtcbiAgICB0aGlzLmRlbGV0ZU1lZGlhLmVtaXQobWVkaWEpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibWVkaWEtbGlzdC1pdGVtIHJlbGF0aXZlIGhhc0ltYWdlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpzaGFkb3ctb3V0bGluZSBiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlciB0ZXh0LXRyYW5zcGFyZW50IGhvdmVyOnRleHQtd2hpdGUgc2hhZG93LXNtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIHotMzAgcmlnaHQtMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj48L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJlZm9yZU1lbnVcIiBjbGFzcz1cIm1sLWF1dG8gZm9jdXM6b3V0bGluZS1ub25lIGhvdmVyOmJnLWdyYXktMzAwIHAtMVwiPlxuICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNiZWZvcmVNZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRGVsZXRlTWVkaWEobWVkaWEpXCI+XG4gICAgICAgICAgPHNwYW4+5Yig6ZmkPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGlkPVwidGh1bWJuYWlsXCIgY2xhc3M9XCJ0aHVtYm5haWxcIj5cbiAgICA8aW1nIGNsYXNzPVwidGlsZS1tZWRpYVwiIChjbGljayk9XCJvbk1lZGlhSXRlbUNsaWNrKG1lZGlhKVwiIFtzcmNdPVwibWVkaWEudXJsXCIgW2FsdF09XCJtZWRpYS5hbHRcIiAvPlxuICA8L2Rpdj5cbiAgPHNlY3Rpb25cbiAgICAoY2xpY2spPVwib25NZWRpYUl0ZW1DbGljayhtZWRpYSlcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCB0ZXh0LXhzIGJyZWFrLXdvcmRzIHctZnVsbCBoLWZ1bGwgei0yMCBhYnNvbHV0ZSB0b3AtMFwiXG4gID48L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MatDividerModule } from '@angular/material/divider';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/dialog";
8
+ import * as i2 from "@angular/material/icon";
9
+ import * as i3 from "@angular/material/divider";
10
+ import * as i4 from "@angular/material/button";
11
+ export class MediaPreviewDialogComponent {
12
+ data;
13
+ dialogRef;
14
+ selected;
15
+ index = 0;
16
+ prevDisabled = false;
17
+ nextDisabled = false;
18
+ constructor(data, dialogRef) {
19
+ this.data = data;
20
+ this.dialogRef = dialogRef;
21
+ this.data.title = '图片预览';
22
+ }
23
+ ngOnInit() {
24
+ this.selected = this.data.selected;
25
+ this.prevDisabled = this.selected === 0;
26
+ this.nextDisabled = this.selected === this.data.media.length - 1;
27
+ }
28
+ close() {
29
+ this.dialogRef.close();
30
+ }
31
+ prev() {
32
+ this.selected--;
33
+ this.prevDisabled = this.selected === 0;
34
+ this.nextDisabled = this.selected === this.data.media.length - 1;
35
+ }
36
+ next() {
37
+ this.selected++;
38
+ this.prevDisabled = this.selected === 0;
39
+ this.nextDisabled = this.selected === this.data.media.length - 1;
40
+ }
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaPreviewDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MediaPreviewDialogComponent, isStandalone: true, selector: "rolatech-media-preview-dialog", ngImport: i0, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaPreviewDialogComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'rolatech-media-preview-dialog', standalone: true, imports: [MatIconModule, MatDividerModule, MatButtonModule], template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n" }]
47
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
48
+ type: Inject,
49
+ args: [MAT_DIALOG_DATA]
50
+ }] }, { type: i1.MatDialogRef }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcHJldmlldy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9tZWRpYS1wcmV2aWV3LWRpYWxvZy9tZWRpYS1wcmV2aWV3LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXByZXZpZXctZGlhbG9nL21lZGlhLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBU3ZELE1BQU0sT0FBTywyQkFBMkI7SUFNSjtJQUN4QjtJQU5WLFFBQVEsQ0FBTTtJQUNkLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsWUFDa0MsSUFBUyxFQUNqQyxTQUFvRDtRQUQ1QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQTJDO1FBRTVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7dUdBN0JVLDJCQUEyQixrQkFNNUIsZUFBZTsyRkFOZCwyQkFBMkIseUZDYnhDLHc2QkFzQkEseUREWFksYUFBYSxtTEFBRSxnQkFBZ0Isa0lBQUUsZUFBZTs7MkZBRS9DLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwrQkFBK0IsY0FHN0IsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsQ0FBQzs7MEJBUXhELE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lZGlhLXByZXZpZXctZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEtcHJldmlldy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdGVkOiBhbnk7XG4gIGluZGV4ID0gMDtcbiAgcHJldkRpc2FibGVkID0gZmFsc2U7XG4gIG5leHREaXNhYmxlZCA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudD4sXG4gICkge1xuICAgIHRoaXMuZGF0YS50aXRsZSA9ICflm77niYfpooTop4gnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZGF0YS5zZWxlY3RlZDtcbiAgICB0aGlzLnByZXZEaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWQgPT09IDA7XG4gICAgdGhpcy5uZXh0RGlzYWJsZWQgPSB0aGlzLnNlbGVjdGVkID09PSB0aGlzLmRhdGEubWVkaWEubGVuZ3RoIC0gMTtcbiAgfVxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG4gIHByZXYoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC0tO1xuICAgIHRoaXMucHJldkRpc2FibGVkID0gdGhpcy5zZWxlY3RlZCA9PT0gMDtcbiAgICB0aGlzLm5leHREaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWQgPT09IHRoaXMuZGF0YS5tZWRpYS5sZW5ndGggLSAxO1xuICB9XG4gIG5leHQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCsrO1xuICAgIHRoaXMucHJldkRpc2FibGVkID0gdGhpcy5zZWxlY3RlZCA9PT0gMDtcbiAgICB0aGlzLm5leHREaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWQgPT09IHRoaXMuZGF0YS5tZWRpYS5sZW5ndGggLSAxO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJoLTE2IGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBweC01XCI+XG4gICAgQGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBmb250LW1lZGl1bVwiPnt7IGRhdGEudGl0bGUgfX08L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8ZGl2IGNsYXNzPVwiZmxleC0xIG92ZXJmbG93LWhpZGRlbiBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0zIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW1nIGNsYXNzPVwib2JqZWN0LWNvdmVyXCIgW3NyY109XCJkYXRhLm1lZGlhW3NlbGVjdGVkXS51cmxcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDxkaXYgY2xhc3M9XCJoLTE2IGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBweC01XCI+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gW2Rpc2FibGVkXT1cInByZXZEaXNhYmxlZFwiIChjbGljayk9XCJwcmV2KClcIj5QcmV2PC9idXR0b24+XG4gICAgPGRpdj57eyBzZWxlY3RlZCArIDEgfX0gLyB7eyBkYXRhLm1lZGlhLmxlbmd0aCB9fTwvZGl2PlxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJuZXh0RGlzYWJsZWRcIiAoY2xpY2spPVwibmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,71 @@
1
+ import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { AngularCommonModule } from '@rolatech/angular-common';
4
+ import { MediaPreviewDialogComponent } from '../media-preview-dialog/media-preview-dialog.component';
5
+ import { AngularComponentsModule } from '../angular-components.module';
6
+ import { LoadingSpinnerComponent } from '../loading-spinner/loading-spinner.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/button";
9
+ import * as i2 from "@angular/material/icon";
10
+ export class MediaUploadComponent {
11
+ title = '上传图片';
12
+ subtitle = '文件大小';
13
+ description = '不能超过5MB';
14
+ isUploading = false;
15
+ mediaItemClick = new EventEmitter();
16
+ upload = new EventEmitter();
17
+ media = [];
18
+ dialog = inject(MatDialog);
19
+ onMediaItemClick(item) {
20
+ this.mediaItemClick.emit(item);
21
+ }
22
+ onMediaClick(i) {
23
+ const dialogRef = this.dialog.open(MediaPreviewDialogComponent, {
24
+ maxWidth: '80vw',
25
+ maxHeight: '80vh',
26
+ height: '80%',
27
+ width: '80%',
28
+ panelClass: 'full-screen-modal',
29
+ data: {
30
+ media: this.media,
31
+ selected: i,
32
+ },
33
+ });
34
+ dialogRef.afterClosed().subscribe((result) => { });
35
+ }
36
+ onUpload(event) {
37
+ const file = event.target.files[0];
38
+ if (file) {
39
+ const reader = new FileReader();
40
+ reader.readAsDataURL(file);
41
+ reader.onload = () => {
42
+ this.media.push({
43
+ url: reader.result,
44
+ alt: 'upload image',
45
+ });
46
+ const formData = new FormData();
47
+ formData.append('file', file);
48
+ this.upload.emit(formData);
49
+ };
50
+ }
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MediaUploadComponent, isStandalone: true, selector: "rolatech-media-upload", inputs: { title: "title", subtitle: "subtitle", description: "description", isUploading: "isUploading" }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, ngImport: i0, template: "<div class=\"bg-gray-100 rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title }}</div>\n <div class=\"font-sm text-gray-400\">{{ subtitle }}</div>\n <div class=\"font-sm text-gray-400\">{{ description }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button color=\"primary\" (click)=\"fileInput.click()\">\u4E0A\u4F20\u56FE\u7247</button>\n </div>\n </div>\n } @else {\n <rolatech-loading-spinner title=\"\u4E0A\u4F20\u4E2D\"></rolatech-loading-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "rolatech-loading-spinner", inputs: ["title"] }] });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MediaUploadComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, LoadingSpinnerComponent], selector: 'rolatech-media-upload', template: "<div class=\"bg-gray-100 rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title }}</div>\n <div class=\"font-sm text-gray-400\">{{ subtitle }}</div>\n <div class=\"font-sm text-gray-400\">{{ description }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button color=\"primary\" (click)=\"fileInput.click()\">\u4E0A\u4F20\u56FE\u7247</button>\n </div>\n </div>\n } @else {\n <rolatech-loading-spinner title=\"\u4E0A\u4F20\u4E2D\"></rolatech-loading-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"] }]
58
+ }], propDecorators: { title: [{
59
+ type: Input
60
+ }], subtitle: [{
61
+ type: Input
62
+ }], description: [{
63
+ type: Input
64
+ }], isUploading: [{
65
+ type: Input
66
+ }], mediaItemClick: [{
67
+ type: Output
68
+ }], upload: [{
69
+ type: Output
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbWVkaWEtdXBsb2FkL21lZGlhLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXVwbG9hZC9tZWRpYS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBUyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7O0FBU3ZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUNmLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDbEIsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUN4QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ25CLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUN2RCxLQUFLLEdBQVksRUFBRSxDQUFDO0lBQ3BCLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFM0IsZ0JBQWdCLENBQUMsSUFBVztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsWUFBWSxDQUFDLENBQU07UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDOUQsUUFBUSxFQUFFLE1BQU07WUFDaEIsU0FBUyxFQUFFLE1BQU07WUFDakIsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLENBQUM7YUFDWjtTQUNGLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxRQUFRLENBQUMsS0FBVTtRQUNqQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksQ0FBQztvQkFDdkIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNO29CQUNsQixHQUFHLEVBQUUsY0FBYztpQkFDcEIsQ0FBQyxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzt1R0ExQ1Usb0JBQW9COzJGQUFwQixvQkFBb0IsNFBDZGpDLDJyQ0EyQkEsd0ZEbEJZLG1CQUFtQiw4QkFBRSx1QkFBdUIsaVhBQUUsdUJBQXVCOzsyRkFLcEUsb0JBQW9CO2tCQVBoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDLFlBQ3RFLHVCQUF1Qjs4QkFLeEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUsIE1lZGlhIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL21lZGlhLXByZXZpZXctZGlhbG9nL21lZGlhLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4uL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nLXNwaW5uZXIvbG9hZGluZy1zcGlubmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIExvYWRpbmdTcGlubmVyQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1tZWRpYS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhVXBsb2FkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGUgPSAn5LiK5Lyg5Zu+54mHJztcbiAgQElucHV0KCkgc3VidGl0bGUgPSAn5paH5Lu25aSn5bCPJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAn5LiN6IO96LaF6L+HNU1CJztcbiAgQElucHV0KCkgaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgQE91dHB1dCgpIG1lZGlhSXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNZWRpYT4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybURhdGEgfCBudWxsPigpO1xuICBtZWRpYTogTWVkaWFbXSA9IFtdO1xuICBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcblxuICBvbk1lZGlhSXRlbUNsaWNrKGl0ZW06IE1lZGlhKSB7XG4gICAgdGhpcy5tZWRpYUl0ZW1DbGljay5lbWl0KGl0ZW0pO1xuICB9XG4gIG9uTWVkaWFDbGljayhpOiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgbWF4V2lkdGg6ICc4MHZ3JyxcbiAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgaGVpZ2h0OiAnODAlJyxcbiAgICAgIHdpZHRoOiAnODAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdmdWxsLXNjcmVlbi1tb2RhbCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1lZGlhOiB0aGlzLm1lZGlhLFxuICAgICAgICBzZWxlY3RlZDogaSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHt9KTtcbiAgfVxuICBvblVwbG9hZChldmVudDogYW55KSB7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgKHRoaXMubWVkaWEgYXMgYW55KS5wdXNoKHtcbiAgICAgICAgICB1cmw6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgICAgYWx0OiAndXBsb2FkIGltYWdlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgICB0aGlzLnVwbG9hZC5lbWl0KGZvcm1EYXRhKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgcm91bmRlZCBwLTYgbWluLWgtWzMyMHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICBAaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgIDxtYXQtaWNvbj51cGxvYWQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbGcgZm9udC1ib2xkIHB5LTNcIj57eyB0aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zbSB0ZXh0LWdyYXktNDAwXCI+e3sgc3VidGl0bGUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc20gdGV4dC1ncmF5LTQwMFwiPnt7IGRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCI+XG4gICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwib25VcGxvYWQoJGV2ZW50KVwiICNmaWxlSW5wdXQgLz5cbiAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+5LiK5Lyg5Zu+54mHPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPHJvbGF0ZWNoLWxvYWRpbmctc3Bpbm5lciB0aXRsZT1cIuS4iuS8oOS4rVwiPjwvcm9sYXRlY2gtbG9hZGluZy1zcGlubmVyPlxuICB9XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gIEBmb3IgKG1lZGlhIG9mIG1lZGlhOyB0cmFjayAkaW5kZXgpIHtcbiAgICA8ZGl2IChjbGljayk9XCJvbk1lZGlhQ2xpY2soJGluZGV4KVwiIGNsYXNzPVwiaW5saW5lLWZsZXggZmxleC1yb3cgbXQtMyBtci0zIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbWRcIj5cbiAgICAgIDxpbWcgY2xhc3M9XCJyb3VuZGVkLW1kIGFzcGVjdC12aWRlbyBvYmplY3QtY292ZXIgdy0zMlwiIFtzcmNdPVwibWVkaWEudXJsXCIgLz5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=