@datarailsshared/datarailsshared 1.6.308 → 1.6.312
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.
- package/datarailsshared-datarailsshared-1.6.312.tgz +0 -0
- package/esm2022/lib/dr-chip/dr-chip.component.mjs +26 -10
- package/esm2022/lib/dr-file-upload/directives/drag-drop.directive.mjs +63 -0
- package/esm2022/lib/dr-file-upload/dr-file-upload-item/dr-file-upload-item.component.mjs +168 -0
- package/esm2022/lib/dr-file-upload/dr-file-upload.component.mjs +512 -0
- package/esm2022/lib/dr-file-upload/index.mjs +6 -0
- package/esm2022/lib/dr-file-upload/models/file-upload.models.mjs +2 -0
- package/esm2022/lib/dr-file-upload/services/file-upload-validation.service.mjs +76 -0
- package/esm2022/lib/dr-file-upload/templates/dr-file-upload-image-template/dr-file-upload-image-template.component.mjs +135 -0
- package/esm2022/lib/dr-progress-bar/dr-progress-bar.component.mjs +39 -8
- package/esm2022/lib/dr-system-message/dr-system-message.component.mjs +23 -21
- package/esm2022/local-api.mjs +2 -1
- package/fesm2022/datarailsshared-datarailsshared.mjs +1255 -276
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-chip/dr-chip.component.d.ts +8 -5
- package/lib/dr-file-upload/directives/drag-drop.directive.d.ts +12 -0
- package/lib/dr-file-upload/dr-file-upload-item/dr-file-upload-item.component.d.ts +18 -0
- package/lib/dr-file-upload/dr-file-upload.component.d.ts +66 -0
- package/lib/dr-file-upload/index.d.ts +5 -0
- package/lib/dr-file-upload/models/file-upload.models.d.ts +13 -0
- package/lib/dr-file-upload/services/file-upload-validation.service.d.ts +16 -0
- package/lib/dr-file-upload/templates/dr-file-upload-image-template/dr-file-upload-image-template.component.d.ts +22 -0
- package/lib/dr-progress-bar/dr-progress-bar.component.d.ts +13 -4
- package/lib/dr-system-message/dr-system-message.component.d.ts +9 -4
- package/local-api.d.ts +2 -1
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.6.308.tgz +0 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, inject, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DrDragDropDirective } from './directives/drag-drop.directive';
|
|
4
|
+
import { DrFileUploadItemComponent } from './dr-file-upload-item/dr-file-upload-item.component';
|
|
5
|
+
import { DrButtonComponent } from '../dr-inputs/button/button.component';
|
|
6
|
+
import { FileUploadValidationService } from './services/file-upload-validation.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
const _c0 = ["dropzoneTemplate"];
|
|
10
|
+
const _c1 = ["fileItemTemplate"];
|
|
11
|
+
const _c2 = ["browseButtonTemplate"];
|
|
12
|
+
const _c3 = ["uploadTemplate"];
|
|
13
|
+
const _c4 = ["fileInput"];
|
|
14
|
+
function DrFileUploadComponent_div_2_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
i0.ɵɵelementContainer(0);
|
|
16
|
+
} }
|
|
17
|
+
function DrFileUploadComponent_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelementContainerStart(0);
|
|
19
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_div_2_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 8);
|
|
20
|
+
i0.ɵɵelementContainerEnd();
|
|
21
|
+
} if (rf & 2) {
|
|
22
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
23
|
+
i0.ɵɵadvance(1);
|
|
24
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.dropzoneTemplate);
|
|
25
|
+
} }
|
|
26
|
+
function DrFileUploadComponent_div_2_ng_template_2_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelementStart(0, "span", 15);
|
|
28
|
+
i0.ɵɵtext(1);
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
} if (rf & 2) {
|
|
31
|
+
const ctx_r9 = i0.ɵɵnextContext(3);
|
|
32
|
+
i0.ɵɵadvance(1);
|
|
33
|
+
i0.ɵɵtextInterpolate(ctx_r9.computedDropzoneSubtext);
|
|
34
|
+
} }
|
|
35
|
+
function DrFileUploadComponent_div_2_ng_template_2_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
i0.ɵɵelementContainer(0);
|
|
37
|
+
} }
|
|
38
|
+
function DrFileUploadComponent_div_2_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelementContainerStart(0);
|
|
40
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_div_2_ng_template_2_ng_container_7_ng_container_1_Template, 1, 0, "ng-container", 8);
|
|
41
|
+
i0.ɵɵelementContainerEnd();
|
|
42
|
+
} if (rf & 2) {
|
|
43
|
+
const ctx_r10 = i0.ɵɵnextContext(3);
|
|
44
|
+
i0.ɵɵadvance(1);
|
|
45
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r10.browseButtonTemplate);
|
|
46
|
+
} }
|
|
47
|
+
function DrFileUploadComponent_div_2_ng_template_2_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
49
|
+
i0.ɵɵelementStart(0, "dr-button", 16);
|
|
50
|
+
i0.ɵɵlistener("click", function DrFileUploadComponent_div_2_ng_template_2_ng_template_8_Template_dr_button_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(3); ctx_r14.onBrowseClick(); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
51
|
+
i0.ɵɵtext(1, " Browse ");
|
|
52
|
+
i0.ɵɵelementEnd();
|
|
53
|
+
} if (rf & 2) {
|
|
54
|
+
const ctx_r12 = i0.ɵɵnextContext(3);
|
|
55
|
+
i0.ɵɵattribute("aria-label", "Browse files. " + ctx_r12.acceptDescription);
|
|
56
|
+
} }
|
|
57
|
+
function DrFileUploadComponent_div_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
|
|
59
|
+
i0.ɵɵtext(3);
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
i0.ɵɵtemplate(4, DrFileUploadComponent_div_2_ng_template_2_span_4_Template, 2, 1, "span", 12);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
i0.ɵɵelementStart(5, "span", 13);
|
|
64
|
+
i0.ɵɵtext(6, "Or");
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
i0.ɵɵtemplate(7, DrFileUploadComponent_div_2_ng_template_2_ng_container_7_Template, 2, 1, "ng-container", 6);
|
|
67
|
+
i0.ɵɵtemplate(8, DrFileUploadComponent_div_2_ng_template_2_ng_template_8_Template, 2, 1, "ng-template", null, 14, i0.ɵɵtemplateRefExtractor);
|
|
68
|
+
i0.ɵɵelementEnd();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const _r11 = i0.ɵɵreference(9);
|
|
71
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
72
|
+
i0.ɵɵadvance(3);
|
|
73
|
+
i0.ɵɵtextInterpolate(ctx_r7.dropzoneText);
|
|
74
|
+
i0.ɵɵadvance(1);
|
|
75
|
+
i0.ɵɵproperty("ngIf", ctx_r7.computedDropzoneSubtext);
|
|
76
|
+
i0.ɵɵadvance(3);
|
|
77
|
+
i0.ɵɵproperty("ngIf", ctx_r7.browseButtonTemplate)("ngIfElse", _r11);
|
|
78
|
+
} }
|
|
79
|
+
function DrFileUploadComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
81
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
82
|
+
i0.ɵɵlistener("fileDrop", function DrFileUploadComponent_div_2_Template_div_fileDrop_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.onFileDrop($event)); })("dragStateChange", function DrFileUploadComponent_div_2_Template_div_dragStateChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.onDragStateChange($event)); })("click", function DrFileUploadComponent_div_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.onBrowseClick()); })("keydown.enter", function DrFileUploadComponent_div_2_Template_div_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.onBrowseClick()); })("keydown.space", function DrFileUploadComponent_div_2_Template_div_keydown_space_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r21 = i0.ɵɵnextContext(); ctx_r21.onBrowseClick(); return i0.ɵɵresetView($event.preventDefault()); });
|
|
83
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_div_2_ng_container_1_Template, 2, 1, "ng-container", 6);
|
|
84
|
+
i0.ɵɵtemplate(2, DrFileUploadComponent_div_2_ng_template_2_Template, 10, 4, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const _r6 = i0.ɵɵreference(3);
|
|
88
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
89
|
+
i0.ɵɵattribute("tabindex", ctx_r1.disabled ? -1 : 0)("aria-label", ctx_r1.dropzoneAriaLabel)("aria-disabled", ctx_r1.disabled)("aria-describedby", ctx_r1.validationErrorMessage ? "file-upload-error" : null);
|
|
90
|
+
i0.ɵɵadvance(1);
|
|
91
|
+
i0.ɵɵproperty("ngIf", ctx_r1.dropzoneTemplate)("ngIfElse", _r6);
|
|
92
|
+
} }
|
|
93
|
+
function DrFileUploadComponent_ng_container_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
+
i0.ɵɵelementContainer(0);
|
|
95
|
+
} }
|
|
96
|
+
const _c5 = function (a0, a1) { return { $implicit: a0, remove: a1 }; };
|
|
97
|
+
function DrFileUploadComponent_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵelementContainerStart(0);
|
|
99
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_ng_container_3_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 18);
|
|
100
|
+
i0.ɵɵelementContainerEnd();
|
|
101
|
+
} if (rf & 2) {
|
|
102
|
+
const ctx_r22 = i0.ɵɵnextContext(2);
|
|
103
|
+
i0.ɵɵadvance(1);
|
|
104
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r22.fileItemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c5, ctx_r22.files[0], ctx_r22.onFileRemove.bind(ctx_r22)));
|
|
105
|
+
} }
|
|
106
|
+
function DrFileUploadComponent_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
108
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "button", 20);
|
|
109
|
+
i0.ɵɵlistener("click", function DrFileUploadComponent_ng_container_3_ng_template_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.onFileRemove(ctx_r26.files[0])); });
|
|
110
|
+
i0.ɵɵelement(2, "i", 21);
|
|
111
|
+
i0.ɵɵelementEnd();
|
|
112
|
+
i0.ɵɵelement(3, "dr-file-upload-item", 22);
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
} if (rf & 2) {
|
|
115
|
+
const ctx_r24 = i0.ɵɵnextContext(2);
|
|
116
|
+
i0.ɵɵattribute("aria-label", "Uploaded file: " + ctx_r24.files[0].file.name);
|
|
117
|
+
i0.ɵɵadvance(1);
|
|
118
|
+
i0.ɵɵattribute("aria-label", "Remove file " + ctx_r24.files[0].file.name);
|
|
119
|
+
i0.ɵɵadvance(2);
|
|
120
|
+
i0.ɵɵproperty("item", ctx_r24.files[0])("removable", false);
|
|
121
|
+
} }
|
|
122
|
+
function DrFileUploadComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementContainerStart(0);
|
|
124
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_ng_container_3_ng_container_1_Template, 2, 5, "ng-container", 6);
|
|
125
|
+
i0.ɵɵtemplate(2, DrFileUploadComponent_ng_container_3_ng_template_2_Template, 4, 4, "ng-template", null, 17, i0.ɵɵtemplateRefExtractor);
|
|
126
|
+
i0.ɵɵelementContainerEnd();
|
|
127
|
+
} if (rf & 2) {
|
|
128
|
+
const _r23 = i0.ɵɵreference(3);
|
|
129
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
130
|
+
i0.ɵɵadvance(1);
|
|
131
|
+
i0.ɵɵproperty("ngIf", ctx_r2.fileItemTemplate)("ngIfElse", _r23);
|
|
132
|
+
} }
|
|
133
|
+
function DrFileUploadComponent_ng_container_4_li_5_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
+
i0.ɵɵelementContainer(0);
|
|
135
|
+
} }
|
|
136
|
+
function DrFileUploadComponent_ng_container_4_li_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
137
|
+
i0.ɵɵelementContainerStart(0);
|
|
138
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_ng_container_4_li_5_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 18);
|
|
139
|
+
i0.ɵɵelementContainerEnd();
|
|
140
|
+
} if (rf & 2) {
|
|
141
|
+
const item_r30 = i0.ɵɵnextContext().$implicit;
|
|
142
|
+
const ctx_r31 = i0.ɵɵnextContext(2);
|
|
143
|
+
i0.ɵɵadvance(1);
|
|
144
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r31.fileItemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c5, item_r30, ctx_r31.onFileRemove.bind(ctx_r31)));
|
|
145
|
+
} }
|
|
146
|
+
function DrFileUploadComponent_ng_container_4_li_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
148
|
+
i0.ɵɵelementStart(0, "dr-file-upload-item", 30);
|
|
149
|
+
i0.ɵɵlistener("remove", function DrFileUploadComponent_ng_container_4_li_5_ng_template_2_Template_dr_file_upload_item_remove_0_listener() { i0.ɵɵrestoreView(_r38); const item_r30 = i0.ɵɵnextContext().$implicit; const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.onFileRemove(item_r30)); });
|
|
150
|
+
i0.ɵɵelementEnd();
|
|
151
|
+
} if (rf & 2) {
|
|
152
|
+
const item_r30 = i0.ɵɵnextContext().$implicit;
|
|
153
|
+
i0.ɵɵproperty("item", item_r30)("removable", true)("compact", true);
|
|
154
|
+
} }
|
|
155
|
+
function DrFileUploadComponent_ng_container_4_li_5_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
i0.ɵɵelementStart(0, "li", 28);
|
|
157
|
+
i0.ɵɵtemplate(1, DrFileUploadComponent_ng_container_4_li_5_ng_container_1_Template, 2, 5, "ng-container", 6);
|
|
158
|
+
i0.ɵɵtemplate(2, DrFileUploadComponent_ng_container_4_li_5_ng_template_2_Template, 1, 3, "ng-template", null, 29, i0.ɵɵtemplateRefExtractor);
|
|
159
|
+
i0.ɵɵelementEnd();
|
|
160
|
+
} if (rf & 2) {
|
|
161
|
+
const _r32 = i0.ɵɵreference(3);
|
|
162
|
+
const ctx_r28 = i0.ɵɵnextContext(2);
|
|
163
|
+
i0.ɵɵadvance(1);
|
|
164
|
+
i0.ɵɵproperty("ngIf", ctx_r28.fileItemTemplate)("ngIfElse", _r32);
|
|
165
|
+
} }
|
|
166
|
+
function DrFileUploadComponent_ng_container_4_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
168
|
+
i0.ɵɵtext(1);
|
|
169
|
+
i0.ɵɵelementEnd();
|
|
170
|
+
} if (rf & 2) {
|
|
171
|
+
const ctx_r29 = i0.ɵɵnextContext(2);
|
|
172
|
+
i0.ɵɵadvance(1);
|
|
173
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r29.failedFilesCount, " ", ctx_r29.failedFilesCount === 1 ? "file" : "files", " could not be uploaded. Please try again ");
|
|
174
|
+
} }
|
|
175
|
+
function DrFileUploadComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
176
|
+
i0.ɵɵelementContainerStart(0);
|
|
177
|
+
i0.ɵɵelementStart(1, "div", 23)(2, "div", 24);
|
|
178
|
+
i0.ɵɵtext(3);
|
|
179
|
+
i0.ɵɵelementEnd();
|
|
180
|
+
i0.ɵɵelementStart(4, "ul", 25);
|
|
181
|
+
i0.ɵɵtemplate(5, DrFileUploadComponent_ng_container_4_li_5_Template, 4, 2, "li", 26);
|
|
182
|
+
i0.ɵɵelementEnd();
|
|
183
|
+
i0.ɵɵtemplate(6, DrFileUploadComponent_ng_container_4_div_6_Template, 2, 2, "div", 27);
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
i0.ɵɵelementContainerEnd();
|
|
186
|
+
} if (rf & 2) {
|
|
187
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
188
|
+
i0.ɵɵadvance(3);
|
|
189
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r3.uploadedFiles.length, " ", ctx_r3.uploadedFiles.length === 1 ? "File" : "Files", " uploaded ");
|
|
190
|
+
i0.ɵɵadvance(1);
|
|
191
|
+
i0.ɵɵattribute("aria-label", ctx_r3.files.length + " files in upload queue");
|
|
192
|
+
i0.ɵɵadvance(1);
|
|
193
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.files)("ngForTrackBy", ctx_r3.trackByFile);
|
|
194
|
+
i0.ɵɵadvance(1);
|
|
195
|
+
i0.ɵɵproperty("ngIf", ctx_r3.hasPartialSuccess);
|
|
196
|
+
} }
|
|
197
|
+
function DrFileUploadComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
199
|
+
i0.ɵɵtext(1);
|
|
200
|
+
i0.ɵɵelementEnd();
|
|
201
|
+
} if (rf & 2) {
|
|
202
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
203
|
+
i0.ɵɵadvance(1);
|
|
204
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r4.validationErrorMessage, "\n");
|
|
205
|
+
} }
|
|
206
|
+
export class DrFileUploadComponent {
|
|
207
|
+
constructor() {
|
|
208
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
209
|
+
this.validationService = inject(FileUploadValidationService);
|
|
210
|
+
this.variant = 'single';
|
|
211
|
+
this.accept = '.xlsx,.xls';
|
|
212
|
+
this.maxFiles = 10;
|
|
213
|
+
this.disabled = false;
|
|
214
|
+
this.validateFormats = true;
|
|
215
|
+
this.dropzoneText = 'Drag & drop your .xlsx or .xls files here';
|
|
216
|
+
this.filesChange = new EventEmitter();
|
|
217
|
+
this.fileRemove = new EventEmitter();
|
|
218
|
+
this.validationError = new EventEmitter();
|
|
219
|
+
this._files = [];
|
|
220
|
+
this.isDragover = false;
|
|
221
|
+
}
|
|
222
|
+
set files(value) {
|
|
223
|
+
this._files = value;
|
|
224
|
+
}
|
|
225
|
+
get files() {
|
|
226
|
+
return this._files;
|
|
227
|
+
}
|
|
228
|
+
ngAfterViewInit() {
|
|
229
|
+
if (this.uploadTemplate) {
|
|
230
|
+
this.dropzoneTemplate = this.uploadTemplate.dropzoneTemplate;
|
|
231
|
+
this.fileItemTemplate = this.uploadTemplate.fileItemTemplate;
|
|
232
|
+
this.cdr.detectChanges();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
get isDisabled() {
|
|
236
|
+
return this.disabled;
|
|
237
|
+
}
|
|
238
|
+
get hasDragover() {
|
|
239
|
+
return this.isDragover;
|
|
240
|
+
}
|
|
241
|
+
get hasFiles() {
|
|
242
|
+
return this.files.length > 0;
|
|
243
|
+
}
|
|
244
|
+
get isSingle() {
|
|
245
|
+
return this.variant === 'single';
|
|
246
|
+
}
|
|
247
|
+
get isMultiple() {
|
|
248
|
+
return this.variant === 'multiple';
|
|
249
|
+
}
|
|
250
|
+
get computedDropzoneSubtext() {
|
|
251
|
+
if (this.dropzoneSubtext) {
|
|
252
|
+
return this.dropzoneSubtext;
|
|
253
|
+
}
|
|
254
|
+
const hasMaxSize = this.maxFileSize !== undefined && this.maxFileSize !== Infinity && this.maxFileSize > 0;
|
|
255
|
+
const hasMaxFiles = this.maxFiles !== undefined && this.maxFiles !== Infinity && this.maxFiles > 0;
|
|
256
|
+
if (this.variant === 'multiple') {
|
|
257
|
+
const filesWord = this.maxFiles === 1 ? 'file' : 'files';
|
|
258
|
+
if (hasMaxFiles && hasMaxSize) {
|
|
259
|
+
return `(up to ${this.maxFiles} ${filesWord}, ${this.maxFileSize} MB each)`;
|
|
260
|
+
}
|
|
261
|
+
if (hasMaxFiles) {
|
|
262
|
+
return `(up to ${this.maxFiles} ${filesWord})`;
|
|
263
|
+
}
|
|
264
|
+
if (hasMaxSize) {
|
|
265
|
+
return `(up to ${this.maxFileSize} MB per file)`;
|
|
266
|
+
}
|
|
267
|
+
return '';
|
|
268
|
+
}
|
|
269
|
+
if (hasMaxSize) {
|
|
270
|
+
return `(up to ${this.maxFileSize} MB)`;
|
|
271
|
+
}
|
|
272
|
+
return '';
|
|
273
|
+
}
|
|
274
|
+
get validationErrorMessage() {
|
|
275
|
+
return this.invalidFormatError || this.invalidSizeError || this.overLimitError || this.errorMessage;
|
|
276
|
+
}
|
|
277
|
+
get showDropzone() {
|
|
278
|
+
if (this.variant === 'multiple') {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
return this.files.length === 0;
|
|
282
|
+
}
|
|
283
|
+
get uploadedFiles() {
|
|
284
|
+
return this.files.filter((f) => f.status === 'success');
|
|
285
|
+
}
|
|
286
|
+
get failedFilesCount() {
|
|
287
|
+
return this.files.filter((f) => f.status === 'error').length;
|
|
288
|
+
}
|
|
289
|
+
get hasPartialSuccess() {
|
|
290
|
+
return this.uploadedFiles.length > 0 && this.failedFilesCount > 0;
|
|
291
|
+
}
|
|
292
|
+
get ariaLabel() {
|
|
293
|
+
if (this.customAriaLabel) {
|
|
294
|
+
return this.customAriaLabel;
|
|
295
|
+
}
|
|
296
|
+
const fileType = this.variant === 'single' ? 'file' : 'files';
|
|
297
|
+
return `Upload ${fileType}. ${this.acceptDescription}`;
|
|
298
|
+
}
|
|
299
|
+
get dropzoneAriaLabel() {
|
|
300
|
+
const action = this.variant === 'single' ? 'Click or drag and drop a file' : 'Click or drag and drop files';
|
|
301
|
+
return `${action}. ${this.acceptDescription}`;
|
|
302
|
+
}
|
|
303
|
+
get acceptDescription() {
|
|
304
|
+
const extensions = this.validationService.getAcceptedExtensions(this.accept);
|
|
305
|
+
if (extensions.length > 0) {
|
|
306
|
+
return `Accepted formats: ${extensions.map((e) => '.' + e).join(', ')}`;
|
|
307
|
+
}
|
|
308
|
+
const mimes = this.validationService.getAcceptedMimes(this.accept);
|
|
309
|
+
if (mimes.length > 0) {
|
|
310
|
+
return `Accepted types: ${mimes.join(', ')}`;
|
|
311
|
+
}
|
|
312
|
+
return 'All file types accepted';
|
|
313
|
+
}
|
|
314
|
+
trackByFile(_index, item) {
|
|
315
|
+
return item.file.name + item.file.size + item.file.lastModified;
|
|
316
|
+
}
|
|
317
|
+
onDragStateChange(isDragover) {
|
|
318
|
+
this.isDragover = isDragover;
|
|
319
|
+
this.cdr.markForCheck();
|
|
320
|
+
}
|
|
321
|
+
onFileDrop(fileList) {
|
|
322
|
+
this.handleFiles(fileList);
|
|
323
|
+
}
|
|
324
|
+
onBrowseClick() {
|
|
325
|
+
if (!this.disabled) {
|
|
326
|
+
this.fileInput?.nativeElement?.click();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
onFileInputChange(event) {
|
|
330
|
+
const input = event.target;
|
|
331
|
+
if (input.files && input.files.length > 0) {
|
|
332
|
+
this.handleFiles(input.files);
|
|
333
|
+
input.value = '';
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
onFileRemove(item) {
|
|
337
|
+
this._files = this._files.filter((f) => f !== item);
|
|
338
|
+
this.fileRemove.emit(item.file);
|
|
339
|
+
this.filesChange.emit(this._files);
|
|
340
|
+
this.clearValidationErrors();
|
|
341
|
+
this.cdr.markForCheck();
|
|
342
|
+
}
|
|
343
|
+
handleFiles(fileList) {
|
|
344
|
+
if (this.disabled) {
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
this.clearValidationErrors();
|
|
348
|
+
let filesArray = Array.from(fileList);
|
|
349
|
+
if (this.validateFormats) {
|
|
350
|
+
const result = this.validationService.filterByFormat(filesArray, this.accept);
|
|
351
|
+
filesArray = result.valid;
|
|
352
|
+
if (result.invalidFileName) {
|
|
353
|
+
this.invalidFormatError = `Invalid file format: ${result.invalidFileName}`;
|
|
354
|
+
this.validationError.emit({
|
|
355
|
+
type: 'format',
|
|
356
|
+
fileName: result.invalidFileName,
|
|
357
|
+
message: this.invalidFormatError,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (this.maxFileSize !== undefined && this.maxFileSize !== Infinity && this.maxFileSize > 0) {
|
|
362
|
+
const result = this.validationService.filterBySize(filesArray, this.maxFileSize);
|
|
363
|
+
filesArray = result.valid;
|
|
364
|
+
if (result.oversizedFileName) {
|
|
365
|
+
this.invalidSizeError = `File too large: ${result.oversizedFileName} (max ${this.maxFileSize} MB)`;
|
|
366
|
+
this.validationError.emit({
|
|
367
|
+
type: 'size',
|
|
368
|
+
fileName: result.oversizedFileName,
|
|
369
|
+
message: this.invalidSizeError,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
if (this.variant === 'multiple') {
|
|
374
|
+
const availableSlots = Math.max(this.maxFiles - this._files.length, 0);
|
|
375
|
+
if (availableSlots < filesArray.length) {
|
|
376
|
+
this.overLimitError = `Maximum ${this.maxFiles} files allowed`;
|
|
377
|
+
this.validationError.emit({
|
|
378
|
+
type: 'limit',
|
|
379
|
+
message: this.overLimitError,
|
|
380
|
+
});
|
|
381
|
+
filesArray = filesArray.slice(0, availableSlots);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
if (filesArray.length === 0) {
|
|
385
|
+
this.cdr.markForCheck();
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
const newItems = filesArray.map((file) => ({
|
|
389
|
+
file,
|
|
390
|
+
progress: 0,
|
|
391
|
+
status: 'pending',
|
|
392
|
+
}));
|
|
393
|
+
if (this.variant === 'single') {
|
|
394
|
+
this._files = newItems.slice(0, 1);
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
this._files = [...this._files, ...newItems].slice(0, this.maxFiles);
|
|
398
|
+
}
|
|
399
|
+
this.filesChange.emit(this._files);
|
|
400
|
+
this.cdr.markForCheck();
|
|
401
|
+
}
|
|
402
|
+
clearValidationErrors() {
|
|
403
|
+
this.invalidFormatError = undefined;
|
|
404
|
+
this.invalidSizeError = undefined;
|
|
405
|
+
this.overLimitError = undefined;
|
|
406
|
+
}
|
|
407
|
+
/** @nocollapse */ static { this.ɵfac = function DrFileUploadComponent_Factory(t) { return new (t || DrFileUploadComponent)(); }; }
|
|
408
|
+
/** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DrFileUploadComponent, selectors: [["dr-file-upload"]], contentQueries: function DrFileUploadComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
409
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
410
|
+
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
|
411
|
+
i0.ɵɵcontentQuery(dirIndex, _c2, 5);
|
|
412
|
+
i0.ɵɵcontentQuery(dirIndex, _c3, 5);
|
|
413
|
+
} if (rf & 2) {
|
|
414
|
+
let _t;
|
|
415
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropzoneTemplate = _t.first);
|
|
416
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileItemTemplate = _t.first);
|
|
417
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.browseButtonTemplate = _t.first);
|
|
418
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.uploadTemplate = _t.first);
|
|
419
|
+
} }, viewQuery: function DrFileUploadComponent_Query(rf, ctx) { if (rf & 1) {
|
|
420
|
+
i0.ɵɵviewQuery(_c4, 7);
|
|
421
|
+
} if (rf & 2) {
|
|
422
|
+
let _t;
|
|
423
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first);
|
|
424
|
+
} }, hostVars: 10, hostBindings: function DrFileUploadComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
425
|
+
i0.ɵɵclassProp("dr-file-upload--disabled", ctx.isDisabled)("dr-file-upload--dragover", ctx.hasDragover)("dr-file-upload--has-files", ctx.hasFiles)("dr-file-upload--single", ctx.isSingle)("dr-file-upload--multiple", ctx.isMultiple);
|
|
426
|
+
} }, inputs: { variant: "variant", accept: "accept", maxFileSize: "maxFileSize", maxFiles: "maxFiles", disabled: ["disabled", "disabled", booleanAttribute], validateFormats: ["validateFormats", "validateFormats", booleanAttribute], dropzoneText: "dropzoneText", dropzoneSubtext: "dropzoneSubtext", errorMessage: "errorMessage", customAriaLabel: ["aria-label", "customAriaLabel"], files: "files" }, outputs: { filesChange: "filesChange", fileRemove: "fileRemove", validationError: "validationError" }, standalone: true, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature], decls: 6, vars: 8, consts: [["type", "file", "hidden", "", 3, "accept", "multiple", "change"], ["fileInput", ""], ["class", "dr-file-upload__dropzone", "role", "button", "drDragDrop", "", 3, "fileDrop", "dragStateChange", "click", "keydown.enter", "keydown.space", 4, "ngIf"], [4, "ngIf"], ["id", "file-upload-error", "class", "dr-file-upload__error", "role", "alert", "aria-live", "assertive", 4, "ngIf"], ["role", "button", "drDragDrop", "", 1, "dr-file-upload__dropzone", 3, "fileDrop", "dragStateChange", "click", "keydown.enter", "keydown.space"], [4, "ngIf", "ngIfElse"], ["defaultDropzone", ""], [4, "ngTemplateOutlet"], [1, "dr-file-upload__dropzone-content"], [1, "dr-file-upload__dropzone-text"], [1, "dr-file-upload__dropzone-title"], ["class", "dr-file-upload__dropzone-subtitle", 4, "ngIf"], ["aria-hidden", "true", 1, "dr-file-upload__dropzone-or"], ["defaultBrowseButton", ""], [1, "dr-file-upload__dropzone-subtitle"], ["theme", "secondary", "icon", "dr-icon-add", 3, "click"], ["defaultSingleFileItem", ""], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["role", "group", 1, "dr-file-upload__single-item-container"], ["type", "button", 1, "dr-file-upload__single-item-close", 3, "click"], ["aria-hidden", "true", 1, "dr-icon-exit"], [3, "item", "removable"], ["role", "region", "aria-label", "Uploaded files", 1, "dr-file-upload__files-section"], ["aria-live", "polite", 1, "dr-file-upload__files-header"], ["role", "list", 1, "dr-file-upload__files-list"], ["role", "listitem", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "dr-file-upload__partial-error", "role", "alert", "aria-live", "assertive", 4, "ngIf"], ["role", "listitem"], ["defaultMultipleFileItem", ""], [3, "item", "removable", "compact", "remove"], ["role", "alert", "aria-live", "assertive", 1, "dr-file-upload__partial-error"], ["id", "file-upload-error", "role", "alert", "aria-live", "assertive", 1, "dr-file-upload__error"]], template: function DrFileUploadComponent_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
+
i0.ɵɵelementStart(0, "input", 0, 1);
|
|
428
|
+
i0.ɵɵlistener("change", function DrFileUploadComponent_Template_input_change_0_listener($event) { return ctx.onFileInputChange($event); });
|
|
429
|
+
i0.ɵɵelementEnd();
|
|
430
|
+
i0.ɵɵtemplate(2, DrFileUploadComponent_div_2_Template, 4, 6, "div", 2);
|
|
431
|
+
i0.ɵɵtemplate(3, DrFileUploadComponent_ng_container_3_Template, 4, 2, "ng-container", 3);
|
|
432
|
+
i0.ɵɵtemplate(4, DrFileUploadComponent_ng_container_4_Template, 7, 6, "ng-container", 3);
|
|
433
|
+
i0.ɵɵtemplate(5, DrFileUploadComponent_div_5_Template, 2, 1, "div", 4);
|
|
434
|
+
} if (rf & 2) {
|
|
435
|
+
i0.ɵɵproperty("accept", ctx.accept)("multiple", ctx.variant === "multiple");
|
|
436
|
+
i0.ɵɵattribute("aria-label", ctx.ariaLabel)("aria-describedby", ctx.validationErrorMessage ? "file-upload-error" : null);
|
|
437
|
+
i0.ɵɵadvance(2);
|
|
438
|
+
i0.ɵɵproperty("ngIf", ctx.showDropzone);
|
|
439
|
+
i0.ɵɵadvance(1);
|
|
440
|
+
i0.ɵɵproperty("ngIf", ctx.variant === "single" && ctx.files.length > 0);
|
|
441
|
+
i0.ɵɵadvance(1);
|
|
442
|
+
i0.ɵɵproperty("ngIf", ctx.variant === "multiple" && ctx.files.length > 0);
|
|
443
|
+
i0.ɵɵadvance(1);
|
|
444
|
+
i0.ɵɵproperty("ngIf", ctx.validationErrorMessage);
|
|
445
|
+
} }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, DrDragDropDirective, DrFileUploadItemComponent, DrButtonComponent], styles: ["[_nghost-%COMP%]{display:flex;flex-direction:column;gap:24px;width:100%}.dr-file-upload__dropzone[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px 32px;background:#fff;border:1px dashed #9ea1aa;border-radius:4px;cursor:pointer;transition:all .2s ease}.dr-file-upload__dropzone[_ngcontent-%COMP%]:hover{border-color:#4646ce;background-color:#f5f5f5}.dr-file-upload__dropzone[_ngcontent-%COMP%]:focus{outline:2px solid #4646ce;outline-offset:2px}.dr-file-upload__dropzone[_ngcontent-%COMP%]:focus:not(:focus-visible){outline:none}.dr-file-upload__dropzone[_ngcontent-%COMP%]:focus-visible{outline:2px solid #4646ce;outline-offset:2px;border-color:#4646ce}.dr-file-upload__dropzone-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:8px}.dr-file-upload__dropzone-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:4px}.dr-file-upload__dropzone-title[_ngcontent-%COMP%]{font-size:14px;line-height:24px;font-weight:400;color:#6d6e6f}.dr-file-upload__dropzone-subtitle[_ngcontent-%COMP%]{font-size:12px;line-height:16px;font-weight:400;color:#6d6e6f}.dr-file-upload__dropzone-or[_ngcontent-%COMP%]{font-size:14px;line-height:24px;font-weight:400;color:#6d6e6f}.dr-file-upload__files-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.dr-file-upload__files-header[_ngcontent-%COMP%]{font-size:14px;line-height:24px;font-weight:400;color:#333}.dr-file-upload__files-list[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0}.dr-file-upload__files-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:contents}.dr-file-upload__partial-error[_ngcontent-%COMP%], .dr-file-upload__error[_ngcontent-%COMP%]{font-size:12px;line-height:16px;font-weight:400;color:#bf1d30}.dr-file-upload__single-item-container[_ngcontent-%COMP%]{position:relative;padding:32px 16px;background:#fff;border:1px dashed #9ea1aa;border-radius:4px;min-height:126px;display:flex;align-items:center}.dr-file-upload__single-item-container[_ngcontent-%COMP%] dr-file-upload-item[_ngcontent-%COMP%]{border:none;padding:0;background:transparent}.dr-file-upload__single-item-close[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;position:absolute;top:4px;right:4px;padding:0;margin:0;border:none;background:transparent;cursor:pointer;z-index:1;border-radius:2px}.dr-file-upload__single-item-close[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:16px;color:#333}.dr-file-upload__single-item-close[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]{color:#333}.dr-file-upload__single-item-close[_ngcontent-%COMP%]:focus{outline:2px solid #4646ce;outline-offset:2px}.dr-file-upload__single-item-close[_ngcontent-%COMP%]:focus:not(:focus-visible){outline:none}.dr-file-upload__single-item-close[_ngcontent-%COMP%]:focus-visible{outline:2px solid #4646ce;outline-offset:2px}.dr-file-upload--dragover[_nghost-%COMP%] .dr-file-upload__dropzone[_ngcontent-%COMP%]{background:#f5f5f5;border-color:#4646ce}.dr-file-upload--disabled[_nghost-%COMP%] .dr-file-upload__dropzone[_ngcontent-%COMP%]{pointer-events:none;opacity:.6}.dr-file-upload--disabled[_nghost-%COMP%] .dr-file-upload__dropzone[_ngcontent-%COMP%]:hover{border-color:#9ea1aa}.dr-file-upload--single[_nghost-%COMP%] .dr-file-upload__dropzone[_ngcontent-%COMP%]{min-height:148px}.dr-file-upload--multiple[_nghost-%COMP%] .dr-file-upload__dropzone[_ngcontent-%COMP%]{min-height:100px}"], changeDetection: 0 }); }
|
|
446
|
+
}
|
|
447
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrFileUploadComponent, [{
|
|
448
|
+
type: Component,
|
|
449
|
+
args: [{ selector: 'dr-file-upload', standalone: true, imports: [CommonModule, DrDragDropDirective, DrFileUploadItemComponent, DrButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n #fileInput\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"variant === 'multiple'\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"validationErrorMessage ? 'file-upload-error' : null\"\n (change)=\"onFileInputChange($event)\"\n hidden />\n\n<div\n *ngIf=\"showDropzone\"\n class=\"dr-file-upload__dropzone\"\n role=\"button\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-label]=\"dropzoneAriaLabel\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-describedby]=\"validationErrorMessage ? 'file-upload-error' : null\"\n drDragDrop\n (fileDrop)=\"onFileDrop($event)\"\n (dragStateChange)=\"onDragStateChange($event)\"\n (click)=\"onBrowseClick()\"\n (keydown.enter)=\"onBrowseClick()\"\n (keydown.space)=\"onBrowseClick(); $event.preventDefault()\">\n <ng-container *ngIf=\"dropzoneTemplate; else defaultDropzone\">\n <ng-container *ngTemplateOutlet=\"dropzoneTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #defaultDropzone>\n <div class=\"dr-file-upload__dropzone-content\">\n <div class=\"dr-file-upload__dropzone-text\">\n <span class=\"dr-file-upload__dropzone-title\">{{ dropzoneText }}</span>\n <span *ngIf=\"computedDropzoneSubtext\" class=\"dr-file-upload__dropzone-subtitle\">{{\n computedDropzoneSubtext\n }}</span>\n </div>\n <span class=\"dr-file-upload__dropzone-or\" aria-hidden=\"true\">Or</span>\n <ng-container *ngIf=\"browseButtonTemplate; else defaultBrowseButton\">\n <ng-container *ngTemplateOutlet=\"browseButtonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultBrowseButton>\n <dr-button\n theme=\"secondary\"\n icon=\"dr-icon-add\"\n [attr.aria-label]=\"'Browse files. ' + acceptDescription\"\n (click)=\"onBrowseClick(); $event.stopPropagation()\">\n Browse\n </dr-button>\n </ng-template>\n </div>\n </ng-template>\n</div>\n\n<ng-container *ngIf=\"variant === 'single' && files.length > 0\">\n <ng-container *ngIf=\"fileItemTemplate; else defaultSingleFileItem\">\n <ng-container *ngTemplateOutlet=\"fileItemTemplate; context: { $implicit: files[0], remove: onFileRemove.bind(this) }\">\n </ng-container>\n </ng-container>\n\n <ng-template #defaultSingleFileItem>\n <div\n class=\"dr-file-upload__single-item-container\"\n role=\"group\"\n [attr.aria-label]=\"'Uploaded file: ' + files[0].file.name\">\n <button\n type=\"button\"\n class=\"dr-file-upload__single-item-close\"\n [attr.aria-label]=\"'Remove file ' + files[0].file.name\"\n (click)=\"onFileRemove(files[0])\">\n <i class=\"dr-icon-exit\" aria-hidden=\"true\"></i>\n </button>\n <dr-file-upload-item [item]=\"files[0]\" [removable]=\"false\"> </dr-file-upload-item>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"variant === 'multiple' && files.length > 0\">\n <div class=\"dr-file-upload__files-section\" role=\"region\" aria-label=\"Uploaded files\">\n <div class=\"dr-file-upload__files-header\" aria-live=\"polite\">\n {{ uploadedFiles.length }} {{ uploadedFiles.length === 1 ? 'File' : 'Files' }} uploaded\n </div>\n <ul class=\"dr-file-upload__files-list\" role=\"list\" [attr.aria-label]=\"files.length + ' files in upload queue'\">\n <li *ngFor=\"let item of files; trackBy: trackByFile\" role=\"listitem\">\n <ng-container *ngIf=\"fileItemTemplate; else defaultMultipleFileItem\">\n <ng-container\n *ngTemplateOutlet=\"fileItemTemplate; context: { $implicit: item, remove: onFileRemove.bind(this) }\">\n </ng-container>\n </ng-container>\n\n <ng-template #defaultMultipleFileItem>\n <dr-file-upload-item [item]=\"item\" [removable]=\"true\" [compact]=\"true\" (remove)=\"onFileRemove(item)\">\n </dr-file-upload-item>\n </ng-template>\n </li>\n </ul>\n <div *ngIf=\"hasPartialSuccess\" class=\"dr-file-upload__partial-error\" role=\"alert\" aria-live=\"assertive\">\n {{ failedFilesCount }} {{ failedFilesCount === 1 ? 'file' : 'files' }} could not be uploaded. Please try again\n </div>\n </div>\n</ng-container>\n\n<div\n *ngIf=\"validationErrorMessage\"\n id=\"file-upload-error\"\n class=\"dr-file-upload__error\"\n role=\"alert\"\n aria-live=\"assertive\">\n {{ validationErrorMessage }}\n</div>\n", styles: [":host{display:flex;flex-direction:column;gap:24px;width:100%}.dr-file-upload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px 32px;background:#fff;border:1px dashed #9ea1aa;border-radius:4px;cursor:pointer;transition:all .2s ease}.dr-file-upload__dropzone:hover{border-color:#4646ce;background-color:#f5f5f5}.dr-file-upload__dropzone:focus{outline:2px solid #4646ce;outline-offset:2px}.dr-file-upload__dropzone:focus:not(:focus-visible){outline:none}.dr-file-upload__dropzone:focus-visible{outline:2px solid #4646ce;outline-offset:2px;border-color:#4646ce}.dr-file-upload__dropzone-content{display:flex;flex-direction:column;align-items:center;gap:8px}.dr-file-upload__dropzone-text{display:flex;flex-direction:column;align-items:center;gap:4px}.dr-file-upload__dropzone-title{font-size:14px;line-height:24px;font-weight:400;color:#6d6e6f}.dr-file-upload__dropzone-subtitle{font-size:12px;line-height:16px;font-weight:400;color:#6d6e6f}.dr-file-upload__dropzone-or{font-size:14px;line-height:24px;font-weight:400;color:#6d6e6f}.dr-file-upload__files-section{display:flex;flex-direction:column;gap:8px}.dr-file-upload__files-header{font-size:14px;line-height:24px;font-weight:400;color:#333}.dr-file-upload__files-list{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0}.dr-file-upload__files-list li{display:contents}.dr-file-upload__partial-error,.dr-file-upload__error{font-size:12px;line-height:16px;font-weight:400;color:#bf1d30}.dr-file-upload__single-item-container{position:relative;padding:32px 16px;background:#fff;border:1px dashed #9ea1aa;border-radius:4px;min-height:126px;display:flex;align-items:center}.dr-file-upload__single-item-container dr-file-upload-item{border:none;padding:0;background:transparent}.dr-file-upload__single-item-close{display:flex;align-items:center;justify-content:center;position:absolute;top:4px;right:4px;padding:0;margin:0;border:none;background:transparent;cursor:pointer;z-index:1;border-radius:2px}.dr-file-upload__single-item-close i{font-size:16px;color:#333}.dr-file-upload__single-item-close:hover i{color:#333}.dr-file-upload__single-item-close:focus{outline:2px solid #4646ce;outline-offset:2px}.dr-file-upload__single-item-close:focus:not(:focus-visible){outline:none}.dr-file-upload__single-item-close:focus-visible{outline:2px solid #4646ce;outline-offset:2px}:host(.dr-file-upload--dragover) .dr-file-upload__dropzone{background:#f5f5f5;border-color:#4646ce}:host(.dr-file-upload--disabled) .dr-file-upload__dropzone{pointer-events:none;opacity:.6}:host(.dr-file-upload--disabled) .dr-file-upload__dropzone:hover{border-color:#9ea1aa}:host(.dr-file-upload--single) .dr-file-upload__dropzone{min-height:148px}:host(.dr-file-upload--multiple) .dr-file-upload__dropzone{min-height:100px}\n"] }]
|
|
450
|
+
}], null, { variant: [{
|
|
451
|
+
type: Input
|
|
452
|
+
}], accept: [{
|
|
453
|
+
type: Input
|
|
454
|
+
}], maxFileSize: [{
|
|
455
|
+
type: Input
|
|
456
|
+
}], maxFiles: [{
|
|
457
|
+
type: Input
|
|
458
|
+
}], disabled: [{
|
|
459
|
+
type: Input,
|
|
460
|
+
args: [{ transform: booleanAttribute }]
|
|
461
|
+
}], validateFormats: [{
|
|
462
|
+
type: Input,
|
|
463
|
+
args: [{ transform: booleanAttribute }]
|
|
464
|
+
}], dropzoneText: [{
|
|
465
|
+
type: Input
|
|
466
|
+
}], dropzoneSubtext: [{
|
|
467
|
+
type: Input
|
|
468
|
+
}], errorMessage: [{
|
|
469
|
+
type: Input
|
|
470
|
+
}], customAriaLabel: [{
|
|
471
|
+
type: Input,
|
|
472
|
+
args: ['aria-label']
|
|
473
|
+
}], files: [{
|
|
474
|
+
type: Input
|
|
475
|
+
}], filesChange: [{
|
|
476
|
+
type: Output
|
|
477
|
+
}], fileRemove: [{
|
|
478
|
+
type: Output
|
|
479
|
+
}], validationError: [{
|
|
480
|
+
type: Output
|
|
481
|
+
}], dropzoneTemplate: [{
|
|
482
|
+
type: ContentChild,
|
|
483
|
+
args: ['dropzoneTemplate']
|
|
484
|
+
}], fileItemTemplate: [{
|
|
485
|
+
type: ContentChild,
|
|
486
|
+
args: ['fileItemTemplate']
|
|
487
|
+
}], browseButtonTemplate: [{
|
|
488
|
+
type: ContentChild,
|
|
489
|
+
args: ['browseButtonTemplate']
|
|
490
|
+
}], uploadTemplate: [{
|
|
491
|
+
type: ContentChild,
|
|
492
|
+
args: ['uploadTemplate']
|
|
493
|
+
}], fileInput: [{
|
|
494
|
+
type: ViewChild,
|
|
495
|
+
args: ['fileInput', { static: true }]
|
|
496
|
+
}], isDisabled: [{
|
|
497
|
+
type: HostBinding,
|
|
498
|
+
args: ['class.dr-file-upload--disabled']
|
|
499
|
+
}], hasDragover: [{
|
|
500
|
+
type: HostBinding,
|
|
501
|
+
args: ['class.dr-file-upload--dragover']
|
|
502
|
+
}], hasFiles: [{
|
|
503
|
+
type: HostBinding,
|
|
504
|
+
args: ['class.dr-file-upload--has-files']
|
|
505
|
+
}], isSingle: [{
|
|
506
|
+
type: HostBinding,
|
|
507
|
+
args: ['class.dr-file-upload--single']
|
|
508
|
+
}], isMultiple: [{
|
|
509
|
+
type: HostBinding,
|
|
510
|
+
args: ['class.dr-file-upload--multiple']
|
|
511
|
+
}] }); })();
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZmlsZS11cGxvYWQvZHItZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZmlsZS11cGxvYWQvZHItZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7OztJQ0loRix3QkFBa0U7OztJQUR0RSw2QkFBNkQ7SUFDekQsNkdBQWtFO0lBQ3RFLDBCQUFlOzs7SUFESSxlQUFrQztJQUFsQywwREFBa0M7OztJQU96QyxnQ0FBZ0Y7SUFBQSxZQUU5RTtJQUFBLGlCQUFPOzs7SUFGdUUsZUFFOUU7SUFGOEUsb0RBRTlFOzs7SUFJRix3QkFBc0U7OztJQUQxRSw2QkFBcUU7SUFDakUsMkhBQXNFO0lBQzFFLDBCQUFlOzs7SUFESSxlQUFzQztJ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TixlQUFlO2tCQURkLEtBQUs7bUJBQUMsWUFBWTtZQUdmLEtBQUs7a0JBRFIsS0FBSztZQVNHLFdBQVc7a0JBRG5CLE1BQU07WUFHRSxVQUFVO2tCQURsQixNQUFNO1lBR0UsZUFBZTtrQkFEdkIsTUFBTTtZQVNQLGdCQUFnQjtrQkFEZixZQUFZO21CQUFDLGtCQUFrQjtZQUdoQyxnQkFBZ0I7a0JBRGYsWUFBWTttQkFBQyxrQkFBa0I7WUFHaEMsb0JBQW9CO2tCQURuQixZQUFZO21CQUFDLHNCQUFzQjtZQUdwQyxjQUFjO2tCQURiLFlBQVk7bUJBQUMsZ0JBQWdCO1lBSTlCLFNBQVM7a0JBRFIsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBY3BDLFVBQVU7a0JBRGIsV0FBVzttQkFBQyxnQ0FBZ0M7WUFNekMsV0FBVztrQkFEZCxXQUFXO21CQUFDLGdDQUFnQztZQU16QyxRQUFRO2tCQURYLFdBQVc7bUJBQUMsaUNBQWlDO1lBTTFDLFFBQVE7a0JBRFgsV0FBVzttQkFBQyw4QkFBOEI7WUFNdkMsVUFBVTtrQkFEYixXQUFXO21CQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZpbGVVcGxvYWRWYXJpYW50LCBGaWxlVXBsb2FkSXRlbSwgRmlsZVVwbG9hZFRlbXBsYXRlIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQubW9kZWxzJztcbmltcG9ydCB7IERyRHJhZ0Ryb3BEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEckZpbGVVcGxvYWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kci1maWxlLXVwbG9hZC1pdGVtL2RyLWZpbGUtdXBsb2FkLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IERyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItaW5wdXRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVVcGxvYWRWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmlsZS11cGxvYWQtdmFsaWRhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1maWxlLXVwbG9hZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEckRyYWdEcm9wRGlyZWN0aXZlLCBEckZpbGVVcGxvYWRJdGVtQ29tcG9uZW50LCBEckJ1dHRvbkNvbXBvbmVudF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEckZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0aW9uU2VydmljZSA9IGluamVjdChGaWxlVXBsb2FkVmFsaWRhdGlvblNlcnZpY2UpO1xuXG4gICAgQElucHV0KClcbiAgICB2YXJpYW50OiBGaWxlVXBsb2FkVmFyaWFudCA9ICdzaW5nbGUnO1xuICAgIEBJbnB1dCgpXG4gICAgYWNjZXB0ID0gJy54bHN4LC54bHMnO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgaW4gbWVnYWJ5dGVzIChNQikuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIG1heEZpbGVzID0gMTA7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB2YWxpZGF0ZUZvcm1hdHMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBkcm9wem9uZVRleHQgPSAnRHJhZyAmIGRyb3AgeW91ciAueGxzeCBvciAueGxzIGZpbGVzIGhlcmUnO1xuICAgIEBJbnB1dCgpXG4gICAgZHJvcHpvbmVTdWJ0ZXh0Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgnYXJpYS1sYWJlbCcpXG4gICAgY3VzdG9tQXJpYUxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbGVzKHZhbHVlOiBGaWxlVXBsb2FkSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBmaWxlcygpOiBGaWxlVXBsb2FkSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGZpbGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlVXBsb2FkSXRlbVtdPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGZpbGVSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgdmFsaWRhdGlvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU6ICdmb3JtYXQnIHwgJ3NpemUnIHwgJ2xpbWl0JzsgZmlsZU5hbWU/OiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9PigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVVcGxvYWRJdGVtW10gPSBbXTtcbiAgICBpbnZhbGlkRm9ybWF0RXJyb3I/OiBzdHJpbmc7XG4gICAgaW52YWxpZFNpemVFcnJvcj86IHN0cmluZztcbiAgICBvdmVyTGltaXRFcnJvcj86IHN0cmluZztcblxuICAgIEBDb250ZW50Q2hpbGQoJ2Ryb3B6b25lVGVtcGxhdGUnKVxuICAgIGRyb3B6b25lVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgICBAQ29udGVudENoaWxkKCdmaWxlSXRlbVRlbXBsYXRlJylcbiAgICBmaWxlSXRlbVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gICAgQENvbnRlbnRDaGlsZCgnYnJvd3NlQnV0dG9uVGVtcGxhdGUnKVxuICAgIGJyb3dzZUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gICAgQENvbnRlbnRDaGlsZCgndXBsb2FkVGVtcGxhdGUnKVxuICAgIHVwbG9hZFRlbXBsYXRlPzogRmlsZVVwbG9hZFRlbXBsYXRlO1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgaXNEcmFnb3ZlciA9IGZhbHNlO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5kcm9wem9uZVRlbXBsYXRlID0gdGhpcy51cGxvYWRUZW1wbGF0ZS5kcm9wem9uZVRlbXBsYXRlO1xuICAgICAgICAgICAgdGhpcy5maWxlSXRlbVRlbXBsYXRlID0gdGhpcy51cGxvYWRUZW1wbGF0ZS5maWxlSXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kci1maWxlLXVwbG9hZC0tZGlzYWJsZWQnKVxuICAgIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyLWZpbGUtdXBsb2FkLS1kcmFnb3ZlcicpXG4gICAgZ2V0IGhhc0RyYWdvdmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0RyYWdvdmVyO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHItZmlsZS11cGxvYWQtLWhhcy1maWxlcycpXG4gICAgZ2V0IGhhc0ZpbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHItZmlsZS11cGxvYWQtLXNpbmdsZScpXG4gICAgZ2V0IGlzU2luZ2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSAnc2luZ2xlJztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyLWZpbGUtdXBsb2FkLS1tdWx0aXBsZScpXG4gICAgZ2V0IGlzTXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdtdWx0aXBsZSc7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkRHJvcHpvbmVTdWJ0ZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmRyb3B6b25lU3VidGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcHpvbmVTdWJ0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhhc01heFNpemUgPSB0aGlzLm1heEZpbGVTaXplICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tYXhGaWxlU2l6ZSAhPT0gSW5maW5pdHkgJiYgdGhpcy5tYXhGaWxlU2l6ZSA+IDA7XG4gICAgICAgIGNvbnN0IGhhc01heEZpbGVzID0gdGhpcy5tYXhGaWxlcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMubWF4RmlsZXMgIT09IEluZmluaXR5ICYmIHRoaXMubWF4RmlsZXMgPiAwO1xuXG4gICAgICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzV29yZCA9IHRoaXMubWF4RmlsZXMgPT09IDEgPyAnZmlsZScgOiAnZmlsZXMnO1xuICAgICAgICAgICAgaWYgKGhhc01heEZpbGVzICYmIGhhc01heFNpemUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCh1cCB0byAke3RoaXMubWF4RmlsZXN9ICR7ZmlsZXNXb3JkfSwgJHt0aGlzLm1heEZpbGVTaXplfSBNQiBlYWNoKWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzTWF4RmlsZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCh1cCB0byAke3RoaXMubWF4RmlsZXN9ICR7ZmlsZXNXb3JkfSlgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc01heFNpemUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCh1cCB0byAke3RoaXMubWF4RmlsZVNpemV9IE1CIHBlciBmaWxlKWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc01heFNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBgKHVwIHRvICR7dGhpcy5tYXhGaWxlU2l6ZX0gTUIpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZ2V0IHZhbGlkYXRpb25FcnJvck1lc3NhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZEZvcm1hdEVycm9yIHx8IHRoaXMuaW52YWxpZFNpemVFcnJvciB8fCB0aGlzLm92ZXJMaW1pdEVycm9yIHx8IHRoaXMuZXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIGdldCBzaG93RHJvcHpvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBnZXQgdXBsb2FkZWRGaWxlcygpOiBGaWxlVXBsb2FkSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKChmKSA9PiBmLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKTtcbiAgICB9XG5cbiAgICBnZXQgZmFpbGVkRmlsZXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5maWx0ZXIoKGYpID0+IGYuc3RhdHVzID09PSAnZXJyb3InKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1BhcnRpYWxTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRlZEZpbGVzLmxlbmd0aCA+IDAgJiYgdGhpcy5mYWlsZWRGaWxlc0NvdW50ID4gMDtcbiAgICB9XG5cbiAgICBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUFyaWFMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tQXJpYUxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGVUeXBlID0gdGhpcy52YXJpYW50ID09PSAnc2luZ2xlJyA/ICdmaWxlJyA6ICdmaWxlcyc7XG4gICAgICAgIHJldHVybiBgVXBsb2FkICR7ZmlsZVR5cGV9LiAke3RoaXMuYWNjZXB0RGVzY3JpcHRpb259YDtcbiAgICB9XG5cbiAgICBnZXQgZHJvcHpvbmVBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy52YXJpYW50ID09PSAnc2luZ2xlJyA/ICdDbGljayBvciBkcmFnIGFuZCBkcm9wIGEgZmlsZScgOiAnQ2xpY2sgb3IgZHJhZyBhbmQgZHJvcCBmaWxlcyc7XG4gICAgICAgIHJldHVybiBgJHthY3Rpb259LiAke3RoaXMuYWNjZXB0RGVzY3JpcHRpb259YDtcbiAgICB9XG5cbiAgICBnZXQgYWNjZXB0RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9ucyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0QWNjZXB0ZWRFeHRlbnNpb25zKHRoaXMuYWNjZXB0KTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGBBY2NlcHRlZCBmb3JtYXRzOiAke2V4dGVuc2lvbnMubWFwKChlKSA9PiAnLicgKyBlKS5qb2luKCcsICcpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWltZXMgPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEFjY2VwdGVkTWltZXModGhpcy5hY2NlcHQpO1xuICAgICAgICBpZiAobWltZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGBBY2NlcHRlZCB0eXBlczogJHttaW1lcy5qb2luKCcsICcpfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdBbGwgZmlsZSB0eXBlcyBhY2NlcHRlZCc7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZpbGUoX2luZGV4OiBudW1iZXIsIGl0ZW06IEZpbGVVcGxvYWRJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uZmlsZS5uYW1lICsgaXRlbS5maWxlLnNpemUgKyBpdGVtLmZpbGUubGFzdE1vZGlmaWVkO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXRlQ2hhbmdlKGlzRHJhZ292ZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0RyYWdvdmVyID0gaXNEcmFnb3ZlcjtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25GaWxlRHJvcChmaWxlTGlzdDogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVGaWxlcyhmaWxlTGlzdCk7XG4gICAgfVxuXG4gICAgb25Ccm93c2VDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dD8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRmlsZUlucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWxlcyhpbnB1dC5maWxlcyk7XG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25GaWxlUmVtb3ZlKGl0ZW06IEZpbGVVcGxvYWRJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gdGhpcy5fZmlsZXMuZmlsdGVyKChmKSA9PiBmICE9PSBpdGVtKTtcbiAgICAgICAgdGhpcy5maWxlUmVtb3ZlLmVtaXQoaXRlbS5maWxlKTtcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KHRoaXMuX2ZpbGVzKTtcbiAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uRXJyb3JzKCk7XG5cbiAgICAgICAgbGV0IGZpbGVzQXJyYXkgPSBBcnJheS5mcm9tKGZpbGVMaXN0KTtcblxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUZvcm1hdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZmlsdGVyQnlGb3JtYXQoZmlsZXNBcnJheSwgdGhpcy5hY2NlcHQpO1xuICAgICAgICAgICAgZmlsZXNBcnJheSA9IHJlc3VsdC52YWxpZDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaW52YWxpZEZpbGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRm9ybWF0RXJyb3IgPSBgSW52YWxpZCBmaWxlIGZvcm1hdDogJHtyZXN1bHQuaW52YWxpZEZpbGVOYW1lfWA7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdmb3JtYXQnLFxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTogcmVzdWx0LmludmFsaWRGaWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5pbnZhbGlkRm9ybWF0RXJyb3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXhGaWxlU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMubWF4RmlsZVNpemUgIT09IEluZmluaXR5ICYmIHRoaXMubWF4RmlsZVNpemUgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmZpbHRlckJ5U2l6ZShmaWxlc0FycmF5LCB0aGlzLm1heEZpbGVTaXplKTtcbiAgICAgICAgICAgIGZpbGVzQXJyYXkgPSByZXN1bHQudmFsaWQ7XG4gICAgICAgICAgICBpZiAocmVzdWx0Lm92ZXJzaXplZEZpbGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkU2l6ZUVycm9yID0gYEZpbGUgdG9vIGxhcmdlOiAke3Jlc3VsdC5vdmVyc2l6ZWRGaWxlTmFtZX0gKG1heCAke3RoaXMubWF4RmlsZVNpemV9IE1CKWA7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IHJlc3VsdC5vdmVyc2l6ZWRGaWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5pbnZhbGlkU2l6ZUVycm9yLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlU2xvdHMgPSBNYXRoLm1heCh0aGlzLm1heEZpbGVzIC0gdGhpcy5fZmlsZXMubGVuZ3RoLCAwKTtcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVTbG90cyA8IGZpbGVzQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyTGltaXRFcnJvciA9IGBNYXhpbXVtICR7dGhpcy5tYXhGaWxlc30gZmlsZXMgYWxsb3dlZGA7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdsaW1pdCcsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMub3ZlckxpbWl0RXJyb3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZmlsZXNBcnJheSA9IGZpbGVzQXJyYXkuc2xpY2UoMCwgYXZhaWxhYmxlU2xvdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zOiBGaWxlVXBsb2FkSXRlbVtdID0gZmlsZXNBcnJheS5tYXAoKGZpbGUpID0+ICh7XG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBzdGF0dXM6ICdwZW5kaW5nJyBhcyBjb25zdCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLl9maWxlcyA9IG5ld0l0ZW1zLnNsaWNlKDAsIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmlsZXMgPSBbLi4udGhpcy5fZmlsZXMsIC4uLm5ld0l0ZW1zXS5zbGljZSgwLCB0aGlzLm1heEZpbGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLl9maWxlcyk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJWYWxpZGF0aW9uRXJyb3JzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmludmFsaWRGb3JtYXRFcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pbnZhbGlkU2l6ZUVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm92ZXJMaW1pdEVycm9yID0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiIsIjxpbnB1dFxuICAgICNmaWxlSW5wdXRcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgIFttdWx0aXBsZV09XCJ2YXJpYW50ID09PSAnbXVsdGlwbGUnXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJ2YWxpZGF0aW9uRXJyb3JNZXNzYWdlID8gJ2ZpbGUtdXBsb2FkLWVycm9yJyA6IG51bGxcIlxuICAgIChjaGFuZ2UpPVwib25GaWxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgaGlkZGVuIC8+XG5cbjxkaXZcbiAgICAqbmdJZj1cInNob3dEcm9wem9uZVwiXG4gICAgY2xhc3M9XCJkci1maWxlLXVwbG9hZF9fZHJvcHpvbmVcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRyb3B6b25lQXJpYUxhYmVsXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInZhbGlkYXRpb25FcnJvck1lc3NhZ2UgPyAnZmlsZS11cGxvYWQtZXJyb3InIDogbnVsbFwiXG4gICAgZHJEcmFnRHJvcFxuICAgIChmaWxlRHJvcCk9XCJvbkZpbGVEcm9wKCRldmVudClcIlxuICAgIChkcmFnU3RhdGVDaGFuZ2UpPVwib25EcmFnU3RhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9uQnJvd3NlQ2xpY2soKVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwib25Ccm93c2VDbGljaygpXCJcbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJvbkJyb3dzZUNsaWNrKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRyb3B6b25lVGVtcGxhdGU7IGVsc2UgZGVmYXVsdERyb3B6b25lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wem9uZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREcm9wem9uZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyLWZpbGUtdXBsb2FkX19kcm9wem9uZS1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHItZmlsZS11cGxvYWRfX2Ryb3B6b25lLXRleHRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyLWZpbGUtdXBsb2FkX19kcm9wem9uZS10aXRsZVwiPnt7IGRyb3B6b25lVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbXB1dGVkRHJvcHpvbmVTdWJ0ZXh0XCIgY2xhc3M9XCJkci1maWxlLXVwbG9hZF9fZHJvcHpvbmUtc3VidGl0bGVcIj57e1xuICAgICAgICAgICAgICAgICAgICBjb21wdXRlZERyb3B6b25lU3VidGV4dFxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyLWZpbGUtdXBsb2FkX19kcm9wem9uZS1vclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPk9yPC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyb3dzZUJ1dHRvblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRCcm93c2VCdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJvd3NlQnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QnJvd3NlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkci1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZHItaWNvbi1hZGRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidCcm93c2UgZmlsZXMuICcgKyBhY2NlcHREZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJyb3dzZUNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICBCcm93c2VcbiAgICAgICAgICAgICAgICA8L2RyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhcmlhbnQgPT09ICdzaW5nbGUnICYmIGZpbGVzLmxlbmd0aCA+IDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZUl0ZW1UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0U2luZ2xlRmlsZUl0ZW1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBmaWxlc1swXSwgcmVtb3ZlOiBvbkZpbGVSZW1vdmUuYmluZCh0aGlzKSB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2luZ2xlRmlsZUl0ZW0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHItZmlsZS11cGxvYWRfX3NpbmdsZS1pdGVtLWNvbnRhaW5lclwiXG4gICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVXBsb2FkZWQgZmlsZTogJyArIGZpbGVzWzBdLmZpbGUubmFtZVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHItZmlsZS11cGxvYWRfX3NpbmdsZS1pdGVtLWNsb3NlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUgZmlsZSAnICsgZmlsZXNbMF0uZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWxlUmVtb3ZlKGZpbGVzWzBdKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZHItaWNvbi1leGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZHItZmlsZS11cGxvYWQtaXRlbSBbaXRlbV09XCJmaWxlc1swXVwiIFtyZW1vdmFibGVdPVwiZmFsc2VcIj4gPC9kci1maWxlLXVwbG9hZC1pdGVtPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2YXJpYW50ID09PSAnbXVsdGlwbGUnICYmIGZpbGVzLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHItZmlsZS11cGxvYWRfX2ZpbGVzLXNlY3Rpb25cIiByb2xlPVwicmVnaW9uXCIgYXJpYS1sYWJlbD1cIlVwbG9hZGVkIGZpbGVzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkci1maWxlLXVwbG9hZF9fZmlsZXMtaGVhZGVyXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICB7eyB1cGxvYWRlZEZpbGVzLmxlbmd0aCB9fSB7eyB1cGxvYWRlZEZpbGVzLmxlbmd0aCA9PT0gMSA/ICdGaWxlJyA6ICdGaWxlcycgfX0gdXBsb2FkZWRcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzcz1cImRyLWZpbGUtdXBsb2FkX19maWxlcy1saXN0XCIgcm9sZT1cImxpc3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVzLmxlbmd0aCArICcgZmlsZXMgaW4gdXBsb2FkIHF1ZXVlJ1wiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbGVzOyB0cmFja0J5OiB0cmFja0J5RmlsZVwiIHJvbGU9XCJsaXN0aXRlbVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlSXRlbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRNdWx0aXBsZUZpbGVJdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIHJlbW92ZTogb25GaWxlUmVtb3ZlLmJpbmQodGhpcykgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE11bHRpcGxlRmlsZUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxkci1maWxlLXVwbG9hZC1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbcmVtb3ZhYmxlXT1cInRydWVcIiBbY29tcGFjdF09XCJ0cnVlXCIgKHJlbW92ZSk9XCJvbkZpbGVSZW1vdmUoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kci1maWxlLXVwbG9hZC1pdGVtPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzUGFydGlhbFN1Y2Nlc3NcIiBjbGFzcz1cImRyLWZpbGUtdXBsb2FkX19wYXJ0aWFsLWVycm9yXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XG4gICAgICAgICAgICB7eyBmYWlsZWRGaWxlc0NvdW50IH19IHt7IGZhaWxlZEZpbGVzQ291bnQgPT09IDEgPyAnZmlsZScgOiAnZmlsZXMnIH19IGNvdWxkIG5vdCBiZSB1cGxvYWRlZC4gUGxlYXNlIHRyeSBhZ2FpblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2XG4gICAgKm5nSWY9XCJ2YWxpZGF0aW9uRXJyb3JNZXNzYWdlXCJcbiAgICBpZD1cImZpbGUtdXBsb2FkLWVycm9yXCJcbiAgICBjbGFzcz1cImRyLWZpbGUtdXBsb2FkX19lcnJvclwiXG4gICAgcm9sZT1cImFsZXJ0XCJcbiAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cbiAgICB7eyB2YWxpZGF0aW9uRXJyb3JNZXNzYWdlIH19XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './dr-file-upload.component';
|
|
2
|
+
export * from './dr-file-upload-item/dr-file-upload-item.component';
|
|
3
|
+
export * from './models/file-upload.models';
|
|
4
|
+
export * from './templates/dr-file-upload-image-template/dr-file-upload-image-template.component';
|
|
5
|
+
export * from './services/file-upload-validation.service';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1maWxlLXVwbG9hZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RyLWZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RyLWZpbGUtdXBsb2FkLWl0ZW0vZHItZmlsZS11cGxvYWQtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGVzL2RyLWZpbGUtdXBsb2FkLWltYWdlLXRlbXBsYXRlL2RyLWZpbGUtdXBsb2FkLWltYWdlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpbGUtdXBsb2FkLXZhbGlkYXRpb24uc2VydmljZSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZmlsZS11cGxvYWQvbW9kZWxzL2ZpbGUtdXBsb2FkLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgRmlsZVVwbG9hZFZhcmlhbnQgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XG5cbmV4cG9ydCB0eXBlIEZpbGVVcGxvYWRJdGVtU3RhdHVzID0gJ2lkbGUnIHwgJ3BlbmRpbmcnIHwgJ3VwbG9hZGluZycgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRJdGVtIHtcbiAgICBmaWxlOiBGaWxlO1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgc3RhdHVzOiBGaWxlVXBsb2FkSXRlbVN0YXR1cztcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZFRlbXBsYXRlIHtcbiAgICBkcm9wem9uZVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gICAgZmlsZUl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xufVxuIl19
|