@tolle_/tolle-ui 0.0.28-beta → 0.0.29-beta
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/esm2022/lib/calendar.component.mjs +278 -81
- package/esm2022/lib/date-picker.component.mjs +126 -29
- package/esm2022/lib/date-range-picker.component.mjs +76 -24
- package/esm2022/lib/multi-select.component.mjs +220 -26
- package/esm2022/lib/pagination.component.mjs +1 -1
- package/esm2022/lib/select-item.component.mjs +98 -14
- package/esm2022/lib/select.component.mjs +29 -36
- package/fesm2022/tolle-ui.mjs +817 -201
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/button.component.d.ts +1 -1
- package/lib/calendar.component.d.ts +23 -2
- package/lib/date-picker.component.d.ts +16 -2
- package/lib/date-range-picker.component.d.ts +3 -1
- package/lib/multi-select.component.d.ts +13 -1
- package/lib/select-item.component.d.ts +4 -1
- package/package.json +1 -1
|
@@ -15,6 +15,15 @@ export class DatePickerComponent {
|
|
|
15
15
|
disabled = false;
|
|
16
16
|
class = '';
|
|
17
17
|
disablePastDates = false;
|
|
18
|
+
showClear = true;
|
|
19
|
+
showQuickActions = true;
|
|
20
|
+
minDate;
|
|
21
|
+
maxDate;
|
|
22
|
+
mode = 'date';
|
|
23
|
+
formatMonthFn;
|
|
24
|
+
formatYearFn;
|
|
25
|
+
// Format functions for display
|
|
26
|
+
displayFormat;
|
|
18
27
|
triggerContainer;
|
|
19
28
|
popover;
|
|
20
29
|
value = null;
|
|
@@ -24,12 +33,56 @@ export class DatePickerComponent {
|
|
|
24
33
|
constructor(cdr) {
|
|
25
34
|
this.cdr = cdr;
|
|
26
35
|
}
|
|
27
|
-
|
|
36
|
+
getMask() {
|
|
37
|
+
switch (this.mode) {
|
|
38
|
+
case 'date': return '00/00/0000';
|
|
39
|
+
case 'month': return '00/0000';
|
|
40
|
+
case 'year': return '0000';
|
|
41
|
+
default: return '00/00/0000';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
getPlaceholder() {
|
|
45
|
+
switch (this.mode) {
|
|
46
|
+
case 'date': return 'MM/DD/YYYY';
|
|
47
|
+
case 'month': return 'MM/YYYY';
|
|
48
|
+
case 'year': return 'YYYY';
|
|
49
|
+
default: return 'MM/DD/YYYY';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
getFormatString() {
|
|
53
|
+
switch (this.mode) {
|
|
54
|
+
case 'date': return 'MM/dd/yyyy';
|
|
55
|
+
case 'month': return 'MM/yyyy';
|
|
56
|
+
case 'year': return 'yyyy';
|
|
57
|
+
default: return 'MM/dd/yyyy';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
formatDate(date) {
|
|
61
|
+
if (this.displayFormat) {
|
|
62
|
+
return this.displayFormat(date, this.mode);
|
|
63
|
+
}
|
|
64
|
+
switch (this.mode) {
|
|
65
|
+
case 'date': return format(date, 'MM/dd/yyyy');
|
|
66
|
+
case 'month': return format(date, 'MM/yyyy');
|
|
67
|
+
case 'year': return format(date, 'yyyy');
|
|
68
|
+
default: return format(date, 'MM/dd/yyyy');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
parseDate(str) {
|
|
72
|
+
try {
|
|
73
|
+
const parsed = parse(str, this.getFormatString(), new Date());
|
|
74
|
+
return isValid(parsed) ? startOfDay(parsed) : null;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
28
80
|
onInputChange(str) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
81
|
+
const expectedLength = this.getFormatString().replace(/[^0]/g, '').length;
|
|
82
|
+
if (str?.length === expectedLength) {
|
|
83
|
+
const parsed = this.parseDate(str);
|
|
84
|
+
if (parsed) {
|
|
85
|
+
this.value = parsed;
|
|
33
86
|
this.onChange(this.value);
|
|
34
87
|
}
|
|
35
88
|
}
|
|
@@ -40,12 +93,17 @@ export class DatePickerComponent {
|
|
|
40
93
|
}
|
|
41
94
|
onCalendarChange(date) {
|
|
42
95
|
this.value = date;
|
|
43
|
-
|
|
96
|
+
if (date) {
|
|
97
|
+
this.inputValue = this.formatDate(date);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.inputValue = '';
|
|
101
|
+
}
|
|
44
102
|
this.onChange(this.value);
|
|
45
103
|
this.close();
|
|
46
104
|
}
|
|
47
105
|
togglePopover(event) {
|
|
48
|
-
event.stopPropagation();
|
|
106
|
+
event.stopPropagation();
|
|
49
107
|
if (this.disabled)
|
|
50
108
|
return;
|
|
51
109
|
this.isOpen ? this.close() : this.open();
|
|
@@ -60,22 +118,27 @@ export class DatePickerComponent {
|
|
|
60
118
|
this.cleanupAutoUpdate();
|
|
61
119
|
}
|
|
62
120
|
clear(event) {
|
|
63
|
-
event.stopPropagation();
|
|
121
|
+
event.stopPropagation();
|
|
64
122
|
this.value = null;
|
|
65
123
|
this.inputValue = '';
|
|
66
124
|
this.onChange(null);
|
|
67
125
|
this.cdr.markForCheck();
|
|
68
126
|
}
|
|
69
|
-
// --- Positioning ---
|
|
70
127
|
updatePosition() {
|
|
71
128
|
if (!this.triggerContainer || !this.popover)
|
|
72
129
|
return;
|
|
73
130
|
this.cleanupAutoUpdate = autoUpdate(this.triggerContainer.nativeElement, this.popover.nativeElement, () => {
|
|
74
131
|
computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
132
|
+
strategy: 'fixed', // ADDED: Fixed strategy
|
|
133
|
+
placement: 'bottom-start', // Changed to bottom-start to align with input left edge
|
|
134
|
+
middleware: [
|
|
135
|
+
offset(4),
|
|
136
|
+
flip(),
|
|
137
|
+
shift({ padding: 8 })
|
|
138
|
+
],
|
|
139
|
+
}).then(({ x, y, strategy }) => {
|
|
78
140
|
Object.assign(this.popover.nativeElement.style, {
|
|
141
|
+
position: strategy,
|
|
79
142
|
left: `${x}px`,
|
|
80
143
|
top: `${y}px`,
|
|
81
144
|
visibility: 'visible',
|
|
@@ -90,7 +153,7 @@ export class DatePickerComponent {
|
|
|
90
153
|
this.close();
|
|
91
154
|
}
|
|
92
155
|
}
|
|
93
|
-
//
|
|
156
|
+
// CVA Implementation
|
|
94
157
|
onChange = () => { };
|
|
95
158
|
onTouched = () => { };
|
|
96
159
|
writeValue(val) {
|
|
@@ -98,7 +161,7 @@ export class DatePickerComponent {
|
|
|
98
161
|
const date = new Date(val);
|
|
99
162
|
if (isValid(date)) {
|
|
100
163
|
this.value = startOfDay(date);
|
|
101
|
-
this.inputValue =
|
|
164
|
+
this.inputValue = this.formatDate(this.value);
|
|
102
165
|
}
|
|
103
166
|
}
|
|
104
167
|
else {
|
|
@@ -112,7 +175,7 @@ export class DatePickerComponent {
|
|
|
112
175
|
setDisabledState(isDisabled) { this.disabled = isDisabled; }
|
|
113
176
|
cn = cn;
|
|
114
177
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatePickerComponent, isStandalone: true, selector: "tolle-date-picker", inputs: { placeholder: "placeholder", disabled: "disabled", class: "class", disablePastDates: "disablePastDates" }, host: { listeners: { "document:mousedown": "onClickOutside($event)" } }, providers: [
|
|
178
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatePickerComponent, isStandalone: true, selector: "tolle-date-picker", inputs: { placeholder: "placeholder", disabled: "disabled", class: "class", disablePastDates: "disablePastDates", showClear: "showClear", showQuickActions: "showQuickActions", minDate: "minDate", maxDate: "maxDate", mode: "mode", formatMonthFn: "formatMonthFn", formatYearFn: "formatYearFn", displayFormat: "displayFormat" }, host: { listeners: { "document:mousedown": "onClickOutside($event)" } }, providers: [
|
|
116
179
|
{
|
|
117
180
|
provide: NG_VALUE_ACCESSOR,
|
|
118
181
|
useExisting: forwardRef(() => DatePickerComponent),
|
|
@@ -122,8 +185,8 @@ export class DatePickerComponent {
|
|
|
122
185
|
<div class="relative w-full" #triggerContainer>
|
|
123
186
|
<tolle-masked-input
|
|
124
187
|
#maskInput
|
|
125
|
-
[mask]="
|
|
126
|
-
[placeholder]="
|
|
188
|
+
[mask]="getMask()"
|
|
189
|
+
[placeholder]="getPlaceholder()"
|
|
127
190
|
[disabled]="disabled"
|
|
128
191
|
[(ngModel)]="inputValue"
|
|
129
192
|
(ngModelChange)="onInputChange($event)"
|
|
@@ -131,14 +194,17 @@ export class DatePickerComponent {
|
|
|
131
194
|
>
|
|
132
195
|
<div suffix class="flex items-center gap-1.5 cursor-pointer">
|
|
133
196
|
<i
|
|
134
|
-
*ngIf="value && !disabled"
|
|
197
|
+
*ngIf="value && !disabled && showClear"
|
|
135
198
|
(click)="clear($event)"
|
|
136
199
|
class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
|
|
137
200
|
></i>
|
|
138
201
|
|
|
139
202
|
<i
|
|
140
203
|
(click)="togglePopover($event)"
|
|
141
|
-
class="
|
|
204
|
+
[class]="cn(
|
|
205
|
+
'cursor-pointer text-muted-foreground transition-colors',
|
|
206
|
+
'ri-calendar-line'
|
|
207
|
+
)"
|
|
142
208
|
></i>
|
|
143
209
|
</div>
|
|
144
210
|
</tolle-masked-input>
|
|
@@ -146,17 +212,23 @@ export class DatePickerComponent {
|
|
|
146
212
|
<div
|
|
147
213
|
#popover
|
|
148
214
|
*ngIf="isOpen"
|
|
149
|
-
class="
|
|
215
|
+
class="fixed z-[50]"
|
|
150
216
|
style="visibility: hidden; top: 0; left: 0;"
|
|
151
217
|
>
|
|
152
|
-
<tolle-calendar
|
|
218
|
+
<tolle-calendar class="shadow-lg"
|
|
153
219
|
[(ngModel)]="value"
|
|
154
220
|
(ngModelChange)="onCalendarChange($event)"
|
|
221
|
+
[mode]="mode"
|
|
155
222
|
[disablePastDates]="disablePastDates"
|
|
223
|
+
[minDate]="minDate"
|
|
224
|
+
[maxDate]="maxDate"
|
|
225
|
+
[showQuickActions]="showQuickActions"
|
|
226
|
+
[formatMonthFn]="formatMonthFn"
|
|
227
|
+
[formatYearFn]="formatYearFn"
|
|
156
228
|
></tolle-calendar>
|
|
157
229
|
</div>
|
|
158
230
|
</div>
|
|
159
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus"] }, { kind: "component", type: CalendarComponent, selector: "tolle-calendar", inputs: ["class", "disablePastDates"] }] });
|
|
231
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus"] }, { kind: "component", type: CalendarComponent, selector: "tolle-calendar", inputs: ["class", "mode", "disablePastDates", "showQuickActions", "minDate", "maxDate", "formatMonthFn", "formatYearFn", "formatDateFn"], outputs: ["dateSelect"] }] });
|
|
160
232
|
}
|
|
161
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
162
234
|
type: Component,
|
|
@@ -175,8 +247,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
175
247
|
<div class="relative w-full" #triggerContainer>
|
|
176
248
|
<tolle-masked-input
|
|
177
249
|
#maskInput
|
|
178
|
-
[mask]="
|
|
179
|
-
[placeholder]="
|
|
250
|
+
[mask]="getMask()"
|
|
251
|
+
[placeholder]="getPlaceholder()"
|
|
180
252
|
[disabled]="disabled"
|
|
181
253
|
[(ngModel)]="inputValue"
|
|
182
254
|
(ngModelChange)="onInputChange($event)"
|
|
@@ -184,14 +256,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
184
256
|
>
|
|
185
257
|
<div suffix class="flex items-center gap-1.5 cursor-pointer">
|
|
186
258
|
<i
|
|
187
|
-
*ngIf="value && !disabled"
|
|
259
|
+
*ngIf="value && !disabled && showClear"
|
|
188
260
|
(click)="clear($event)"
|
|
189
261
|
class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
|
|
190
262
|
></i>
|
|
191
263
|
|
|
192
264
|
<i
|
|
193
265
|
(click)="togglePopover($event)"
|
|
194
|
-
class="
|
|
266
|
+
[class]="cn(
|
|
267
|
+
'cursor-pointer text-muted-foreground transition-colors',
|
|
268
|
+
'ri-calendar-line'
|
|
269
|
+
)"
|
|
195
270
|
></i>
|
|
196
271
|
</div>
|
|
197
272
|
</tolle-masked-input>
|
|
@@ -199,13 +274,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
199
274
|
<div
|
|
200
275
|
#popover
|
|
201
276
|
*ngIf="isOpen"
|
|
202
|
-
class="
|
|
277
|
+
class="fixed z-[50]"
|
|
203
278
|
style="visibility: hidden; top: 0; left: 0;"
|
|
204
279
|
>
|
|
205
|
-
<tolle-calendar
|
|
280
|
+
<tolle-calendar class="shadow-lg"
|
|
206
281
|
[(ngModel)]="value"
|
|
207
282
|
(ngModelChange)="onCalendarChange($event)"
|
|
283
|
+
[mode]="mode"
|
|
208
284
|
[disablePastDates]="disablePastDates"
|
|
285
|
+
[minDate]="minDate"
|
|
286
|
+
[maxDate]="maxDate"
|
|
287
|
+
[showQuickActions]="showQuickActions"
|
|
288
|
+
[formatMonthFn]="formatMonthFn"
|
|
289
|
+
[formatYearFn]="formatYearFn"
|
|
209
290
|
></tolle-calendar>
|
|
210
291
|
</div>
|
|
211
292
|
</div>
|
|
@@ -219,6 +300,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
219
300
|
type: Input
|
|
220
301
|
}], disablePastDates: [{
|
|
221
302
|
type: Input
|
|
303
|
+
}], showClear: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], showQuickActions: [{
|
|
306
|
+
type: Input
|
|
307
|
+
}], minDate: [{
|
|
308
|
+
type: Input
|
|
309
|
+
}], maxDate: [{
|
|
310
|
+
type: Input
|
|
311
|
+
}], mode: [{
|
|
312
|
+
type: Input
|
|
313
|
+
}], formatMonthFn: [{
|
|
314
|
+
type: Input
|
|
315
|
+
}], formatYearFn: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], displayFormat: [{
|
|
318
|
+
type: Input
|
|
222
319
|
}], triggerContainer: [{
|
|
223
320
|
type: ViewChild,
|
|
224
321
|
args: ['triggerContainer']
|
|
@@ -229,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
229
326
|
type: HostListener,
|
|
230
327
|
args: ['document:mousedown', ['$event']]
|
|
231
328
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBcUR6RCxNQUFNLE9BQU8sbUJBQW1CO0lBY1Y7SUFiWCxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUVILGdCQUFnQixDQUFjO0lBQ3ZDLE9BQU8sQ0FBYztJQUUzQyxLQUFLLEdBQWdCLElBQUksQ0FBQztJQUMxQixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixpQkFBaUIsQ0FBYztJQUUvQixZQUFv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O29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ1Q7aUJBQ0Y7c0ZBRVUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRXlCLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ1AsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQStFcEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wdXRlUG9zaXRpb24sIGZsaXAsIHNoaWZ0LCBvZmZzZXQsIGF1dG9VcGRhdGUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGZvcm1hdCwgcGFyc2UsIGlzVmFsaWQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgTWFza2VkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL21hc2tlZC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWRhdGUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hc2tlZElucHV0Q29tcG9uZW50LCBDYWxlbmRhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCIgI3RyaWdnZXJDb250YWluZXI+XG4gICAgICA8dG9sbGUtbWFza2VkLWlucHV0XG4gICAgICAgICNtYXNrSW5wdXRcbiAgICAgICAgW21hc2tdPVwiJzAwLzAwLzAwMDAnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImNuKGNsYXNzKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc3VmZml4IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cInZhbHVlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cInJpLWNsb3NlLWxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPjwvaT5cblxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmktY2FsZW5kYXItbGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdG9sbGUtbWFza2VkLWlucHV0PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICNwb3BvdmVyXG4gICAgICAgICpuZ0lmPVwiaXNPcGVuXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB6LTUwIG1heC13LW1heCBsZWZ0LTAgcmlnaHQtMCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1tZFwiXG4gICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyB0b3A6IDA7IGxlZnQ6IDA7XCJcbiAgICAgID5cbiAgICAgICAgPHRvbGxlLWNhbGVuZGFyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DYWxlbmRhckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbZGlzYWJsZVBhc3REYXRlc109XCJkaXNhYmxlUGFzdERhdGVzXCJcbiAgICAgICAgPjwvdG9sbGUtY2FsZW5kYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdNTS9ERC9ZWVlZJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJDb250YWluZXInKSB0cmlnZ2VyQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9wb3ZlcicpIHBvcG92ZXIhOiBFbGVtZW50UmVmO1xuXG4gIHZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGlucHV0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBpc09wZW4gPSBmYWxzZTtcbiAgY2xlYW51cEF1dG9VcGRhdGU/OiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvLyAtLS0gTG9naWMgLS0tXG5cbiAgb25JbnB1dENoYW5nZShzdHI6IHN0cmluZykge1xuICAgIGlmIChzdHI/Lmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlKHN0ciwgJ01NL2RkL3l5eXknLCBuZXcgRGF0ZSgpKTtcbiAgICAgIGlmIChpc1ZhbGlkKHBhcnNlZCkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHN0YXJ0T2ZEYXkocGFyc2VkKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFzdHIpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBvbkNhbGVuZGFyQ2hhbmdlKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSBmb3JtYXQoZGF0ZSwgJ01NL2RkL3l5eXknKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHRvZ2dsZVBvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gUHJldmVudCBidWJibGluZyB0byBkb2N1bWVudFxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVQb3NpdGlvbigpKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuY2xlYW51cEF1dG9VcGRhdGUpIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUoKTtcbiAgfVxuXG4gIGNsZWFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIENSSVRJQ0FMOiBTdG9wIHRoZSBjYWxlbmRhciBmcm9tIG9wZW5pbmdcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gLS0tIFBvc2l0aW9uaW5nIC0tLVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXJDb250YWluZXIgfHwgIXRoaXMucG9wb3ZlcikgcmV0dXJuO1xuXG4gICAgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSA9IGF1dG9VcGRhdGUoXG4gICAgICB0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb21wdXRlUG9zaXRpb24odGhpcy50cmlnZ2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tLWVuZCcsIC8vIEFsaWduZWQgdG8gdGhlIHJpZ2h0IHdoZXJlIHRoZSBpY29uIGlzXG4gICAgICAgICAgbWlkZGxld2FyZTogW29mZnNldCg0KSwgZmxpcCgpLCBzaGlmdCh7IHBhZGRpbmc6IDggfSldLFxuICAgICAgICB9KS50aGVuKCh7IHgsIHkgfSkgPT4ge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmXG4gICAgICAhdGhpcy50cmlnZ2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyAtLS0gQ1ZBIC0tLVxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgaWYgKGlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHN0YXJ0T2ZEYXkoZGF0ZSk7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGZvcm1hdCh0aGlzLnZhbHVlLCAnTU0vZGQveXl5eScpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDsgfVxuICBwcm90ZWN0ZWQgY24gPSBjbjtcbn1cbiJdfQ==
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLFVBQVUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQThEdkUsTUFBTSxPQUFPLG1CQUFtQjtJQXdCVjtJQXZCWCxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixPQUFPLENBQVE7SUFDZixPQUFPLENBQVE7SUFDZixJQUFJLEdBQWlCLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQTBCO0lBQ3ZDLFlB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Ozs7Ozs7Ozs7Ozs7O0dBK0NUO2lCQUNGO3NGQUVVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUV5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNQLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkF3SXBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBzaGlmdCwgb2Zmc2V0LCBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlLCBpc1ZhbGlkLCBzdGFydE9mRGF5LCBwYXJzZUlTTyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBNYXNrZWRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vbWFza2VkLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgQ2FsZW5kYXJNb2RlIH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1kYXRlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXNrZWRJbnB1dENvbXBvbmVudCwgQ2FsZW5kYXJDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiICN0cmlnZ2VyQ29udGFpbmVyPlxuICAgICAgPHRvbGxlLW1hc2tlZC1pbnB1dFxuICAgICAgICAjbWFza0lucHV0XG4gICAgICAgIFttYXNrXT1cImdldE1hc2soKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImNuKGNsYXNzKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc3VmZml4IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cInZhbHVlICYmICFkaXNhYmxlZCAmJiBzaG93Q2xlYXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJyaS1jbG9zZS1saW5lIGN1cnNvci1wb2ludGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgID48L2k+XG5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICAncmktY2FsZW5kYXItbGluZSdcbiAgICAgICAgICAgIClcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90b2xsZS1tYXNrZWQtaW5wdXQ+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI3BvcG92ZXJcbiAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICBjbGFzcz1cImZpeGVkIHotWzUwXVwiXG4gICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyB0b3A6IDA7IGxlZnQ6IDA7XCJcbiAgICAgID5cbiAgICAgICAgPHRvbGxlLWNhbGVuZGFyIGNsYXNzPVwic2hhZG93LWxnXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNhbGVuZGFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtkaXNhYmxlUGFzdERhdGVzXT1cImRpc2FibGVQYXN0RGF0ZXNcIlxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgIFtzaG93UXVpY2tBY3Rpb25zXT1cInNob3dRdWlja0FjdGlvbnNcIlxuICAgICAgICAgIFtmb3JtYXRNb250aEZuXT1cImZvcm1hdE1vbnRoRm5cIlxuICAgICAgICAgIFtmb3JtYXRZZWFyRm5dPVwiZm9ybWF0WWVhckZuXCJcbiAgICAgICAgPjwvdG9sbGUtY2FsZW5kYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdNTS9ERC9ZWVlZJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2xlYXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93UXVpY2tBY3Rpb25zID0gdHJ1ZTtcbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBtb2RlOiBDYWxlbmRhck1vZGUgPSAnZGF0ZSc7XG4gIEBJbnB1dCgpIGZvcm1hdE1vbnRoRm4/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtYXRZZWFyRm4/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8vIEZvcm1hdCBmdW5jdGlvbnMgZm9yIGRpc3BsYXlcbiAgQElucHV0KCkgZGlzcGxheUZvcm1hdD86IChkYXRlOiBEYXRlLCBtb2RlOiBDYWxlbmRhck1vZGUpID0+IHN0cmluZztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQ29udGFpbmVyJykgdHJpZ2dlckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXInKSBwb3BvdmVyITogRWxlbWVudFJlZjtcblxuICB2YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgaXNPcGVuID0gZmFsc2U7XG4gIGNsZWFudXBBdXRvVXBkYXRlPzogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgZ2V0TWFzaygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICcwMC8wMC8wMDAwJztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICcwMC8wMDAwJztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJzAwMDAnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICcwMC8wMC8wMDAwJztcbiAgICB9XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICdNTS9ERC9ZWVlZJztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICdNTS9ZWVlZJztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJ1lZWVknO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdNTS9ERC9ZWVlZJztcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtYXRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiAnTU0vZGQveXl5eSc7XG4gICAgICBjYXNlICdtb250aCc6IHJldHVybiAnTU0veXl5eSc7XG4gICAgICBjYXNlICd5ZWFyJzogcmV0dXJuICd5eXl5JztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnTU0vZGQveXl5eSc7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5Rm9ybWF0KSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm9ybWF0KGRhdGUsIHRoaXMubW9kZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gZm9ybWF0KGRhdGUsICdNTS9kZC95eXl5Jyk7XG4gICAgICBjYXNlICdtb250aCc6IHJldHVybiBmb3JtYXQoZGF0ZSwgJ01NL3l5eXknKTtcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gZm9ybWF0KGRhdGUsICd5eXl5Jyk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gZm9ybWF0KGRhdGUsICdNTS9kZC95eXl5Jyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRlKHN0cjogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZShzdHIsIHRoaXMuZ2V0Rm9ybWF0U3RyaW5nKCksIG5ldyBEYXRlKCkpO1xuICAgICAgcmV0dXJuIGlzVmFsaWQocGFyc2VkKSA/IHN0YXJ0T2ZEYXkocGFyc2VkKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLmdldEZvcm1hdFN0cmluZygpLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aDtcblxuICAgIGlmIChzdHI/Lmxlbmd0aCA9PT0gZXhwZWN0ZWRMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VEYXRlKHN0cik7XG4gICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZWQ7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc3RyKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgb25DYWxlbmRhckNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUoZGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHRvZ2dsZVBvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlUG9zaXRpb24oKSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gIH1cblxuICBjbGVhcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy50cmlnZ2VyQ29udGFpbmVyIHx8ICF0aGlzLnBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUgPSBhdXRvVXBkYXRlKFxuICAgICAgdGhpcy50cmlnZ2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLCAvLyBBRERFRDogRml4ZWQgc3RyYXRlZ3lcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLCAvLyBDaGFuZ2VkIHRvIGJvdHRvbS1zdGFydCB0byBhbGlnbiB3aXRoIGlucHV0IGxlZnQgZWRnZVxuICAgICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgIG9mZnNldCg0KSxcbiAgICAgICAgICAgIGZsaXAoKSxcbiAgICAgICAgICAgIHNoaWZ0KHsgcGFkZGluZzogOCB9KVxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSwgc3RyYXRlZ3kgfSkgPT4ge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmXG4gICAgICAhdGhpcy50cmlnZ2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDVkEgSW1wbGVtZW50YXRpb25cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsKTtcbiAgICAgIGlmIChpc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, Input, forwardRef, ViewChild, HostListener } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
-
import { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';
|
|
4
|
+
import { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';
|
|
5
5
|
import { cn } from './utils/cn';
|
|
6
6
|
import { RangeCalendarComponent } from './range-calendar.component';
|
|
7
7
|
import { format } from 'date-fns';
|
|
@@ -15,7 +15,6 @@ export class DateRangePickerComponent {
|
|
|
15
15
|
placeholder = 'Pick a date range';
|
|
16
16
|
class = '';
|
|
17
17
|
disablePastDates = false;
|
|
18
|
-
// Standardized Sizes
|
|
19
18
|
size = 'default';
|
|
20
19
|
triggerContainer;
|
|
21
20
|
popover;
|
|
@@ -28,7 +27,7 @@ export class DateRangePickerComponent {
|
|
|
28
27
|
get displayValue() {
|
|
29
28
|
if (!this.value.start)
|
|
30
29
|
return '';
|
|
31
|
-
const startStr = format(this.value.start, 'MMM dd, yyyy');
|
|
30
|
+
const startStr = format(this.value.start, 'MMM dd, yyyy');
|
|
32
31
|
if (!this.value.end)
|
|
33
32
|
return startStr;
|
|
34
33
|
const endStr = format(this.value.end, 'MMM dd, yyyy');
|
|
@@ -39,12 +38,11 @@ export class DateRangePickerComponent {
|
|
|
39
38
|
this.onChange(this.value);
|
|
40
39
|
// Close only if range is complete
|
|
41
40
|
if (range.start && range.end) {
|
|
42
|
-
this.onChange(this.value);
|
|
43
|
-
// Small delay for UX
|
|
44
41
|
setTimeout(() => this.close(), 150);
|
|
45
42
|
}
|
|
46
43
|
}
|
|
47
|
-
togglePopover(
|
|
44
|
+
togglePopover(event) {
|
|
45
|
+
event.stopPropagation();
|
|
48
46
|
if (this.disabled)
|
|
49
47
|
return;
|
|
50
48
|
this.isOpen ? this.close() : this.open();
|
|
@@ -55,39 +53,75 @@ export class DateRangePickerComponent {
|
|
|
55
53
|
}
|
|
56
54
|
close() {
|
|
57
55
|
this.isOpen = false;
|
|
58
|
-
if (this.cleanupAutoUpdate)
|
|
56
|
+
if (this.cleanupAutoUpdate) {
|
|
59
57
|
this.cleanupAutoUpdate();
|
|
58
|
+
this.cleanupAutoUpdate = undefined;
|
|
59
|
+
}
|
|
60
60
|
}
|
|
61
61
|
clear(event) {
|
|
62
|
-
event.stopPropagation();
|
|
62
|
+
event.stopPropagation();
|
|
63
63
|
this.value = { start: null, end: null };
|
|
64
64
|
this.onChange(this.value);
|
|
65
|
+
this.cdr.markForCheck();
|
|
65
66
|
}
|
|
66
|
-
// --- Floating UI Positioning ---
|
|
67
|
+
// --- Floating UI Positioning with Fixed Strategy ---
|
|
67
68
|
updatePosition() {
|
|
68
69
|
if (!this.triggerContainer || !this.popover)
|
|
69
70
|
return;
|
|
70
71
|
this.cleanupAutoUpdate = autoUpdate(this.triggerContainer.nativeElement, this.popover.nativeElement, () => {
|
|
71
72
|
computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {
|
|
72
|
-
placement: 'bottom-
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
placement: 'bottom-end',
|
|
74
|
+
strategy: 'fixed', // Use fixed to escape column layout
|
|
75
|
+
middleware: [
|
|
76
|
+
offset(4),
|
|
77
|
+
flip({
|
|
78
|
+
fallbackAxisSideDirection: 'start',
|
|
79
|
+
padding: 8
|
|
80
|
+
}),
|
|
81
|
+
shift({ padding: 8 }),
|
|
82
|
+
size({
|
|
83
|
+
apply({ rects, elements, availableHeight }) {
|
|
84
|
+
// Constrain popover to available space
|
|
85
|
+
Object.assign(elements.floating.style, {
|
|
86
|
+
maxHeight: `${Math.min(400, availableHeight)}px`,
|
|
87
|
+
minWidth: `${Math.max(rects.reference.width, 320)}px`, // Calendar minimum width
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
],
|
|
92
|
+
}).then(({ x, y, placement }) => {
|
|
75
93
|
Object.assign(this.popover.nativeElement.style, {
|
|
76
94
|
left: `${x}px`,
|
|
77
95
|
top: `${y}px`,
|
|
78
96
|
visibility: 'visible',
|
|
79
97
|
});
|
|
98
|
+
// Optional: Add placement class for styling
|
|
99
|
+
this.popover.nativeElement.classList.remove('calendar-top', 'calendar-bottom');
|
|
100
|
+
if (placement.includes('top')) {
|
|
101
|
+
this.popover.nativeElement.classList.add('calendar-top');
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.popover.nativeElement.classList.add('calendar-bottom');
|
|
105
|
+
}
|
|
80
106
|
});
|
|
81
107
|
});
|
|
82
108
|
}
|
|
83
109
|
onClickOutside(event) {
|
|
84
110
|
if (this.isOpen &&
|
|
85
111
|
!this.triggerContainer.nativeElement.contains(event.target) &&
|
|
86
|
-
!this.popover
|
|
112
|
+
!this.popover?.nativeElement.contains(event.target)) {
|
|
87
113
|
this.close();
|
|
88
114
|
}
|
|
89
115
|
}
|
|
90
|
-
|
|
116
|
+
onWindowResize() {
|
|
117
|
+
if (this.isOpen) {
|
|
118
|
+
this.close(); // Close on resize for simplicity
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
onWindowScroll() {
|
|
122
|
+
// Floating-UI's autoUpdate handles scroll repositioning
|
|
123
|
+
}
|
|
124
|
+
// --- Control Value Accessor ---
|
|
91
125
|
onChange = () => { };
|
|
92
126
|
onTouched = () => { };
|
|
93
127
|
writeValue(val) {
|
|
@@ -104,7 +138,7 @@ export class DateRangePickerComponent {
|
|
|
104
138
|
setDisabledState(isDisabled) { this.disabled = isDisabled; }
|
|
105
139
|
cn = cn;
|
|
106
140
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateRangePickerComponent, isStandalone: true, selector: "tolle-date-range-picker", inputs: { disabled: "disabled", placeholder: "placeholder", class: "class", disablePastDates: "disablePastDates", size: "size" }, host: { listeners: { "document:mousedown": "onClickOutside($event)" } }, providers: [
|
|
141
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateRangePickerComponent, isStandalone: true, selector: "tolle-date-range-picker", inputs: { disabled: "disabled", placeholder: "placeholder", class: "class", disablePastDates: "disablePastDates", size: "size" }, host: { listeners: { "document:mousedown": "onClickOutside($event)", "window:resize": "onWindowResize()", "window:scroll": "onWindowScroll()" } }, providers: [
|
|
108
142
|
{
|
|
109
143
|
provide: NG_VALUE_ACCESSOR,
|
|
110
144
|
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
@@ -112,7 +146,12 @@ export class DateRangePickerComponent {
|
|
|
112
146
|
}
|
|
113
147
|
], viewQueries: [{ propertyName: "triggerContainer", first: true, predicate: ["triggerContainer"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: `
|
|
114
148
|
<div class="relative w-full" #triggerContainer>
|
|
115
|
-
<tolle-input
|
|
149
|
+
<tolle-input
|
|
150
|
+
[placeholder]="placeholder"
|
|
151
|
+
[disabled]="disabled"
|
|
152
|
+
[ngModel]="displayValue"
|
|
153
|
+
[class]="class"
|
|
154
|
+
>
|
|
116
155
|
<div suffix class="flex items-center gap-1.5 cursor-pointer">
|
|
117
156
|
<i
|
|
118
157
|
*ngIf="(value.start || value.end) && !disabled"
|
|
@@ -126,13 +165,14 @@ export class DateRangePickerComponent {
|
|
|
126
165
|
></i>
|
|
127
166
|
</div>
|
|
128
167
|
</tolle-input>
|
|
168
|
+
|
|
129
169
|
<div
|
|
130
170
|
#popover
|
|
131
171
|
*ngIf="isOpen"
|
|
132
|
-
class="
|
|
133
|
-
style="visibility: hidden;
|
|
172
|
+
class="fixed z-50"
|
|
173
|
+
style="visibility: hidden;"
|
|
134
174
|
>
|
|
135
|
-
<tolle-range-calendar
|
|
175
|
+
<tolle-range-calendar class="shadow-lg"
|
|
136
176
|
[ngModel]="value"
|
|
137
177
|
(rangeSelect)="onCalendarSelect($event)"
|
|
138
178
|
[disablePastDates]="disablePastDates"
|
|
@@ -156,7 +196,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
156
196
|
],
|
|
157
197
|
template: `
|
|
158
198
|
<div class="relative w-full" #triggerContainer>
|
|
159
|
-
<tolle-input
|
|
199
|
+
<tolle-input
|
|
200
|
+
[placeholder]="placeholder"
|
|
201
|
+
[disabled]="disabled"
|
|
202
|
+
[ngModel]="displayValue"
|
|
203
|
+
[class]="class"
|
|
204
|
+
>
|
|
160
205
|
<div suffix class="flex items-center gap-1.5 cursor-pointer">
|
|
161
206
|
<i
|
|
162
207
|
*ngIf="(value.start || value.end) && !disabled"
|
|
@@ -170,13 +215,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
170
215
|
></i>
|
|
171
216
|
</div>
|
|
172
217
|
</tolle-input>
|
|
218
|
+
|
|
173
219
|
<div
|
|
174
220
|
#popover
|
|
175
221
|
*ngIf="isOpen"
|
|
176
|
-
class="
|
|
177
|
-
style="visibility: hidden;
|
|
222
|
+
class="fixed z-50"
|
|
223
|
+
style="visibility: hidden;"
|
|
178
224
|
>
|
|
179
|
-
<tolle-range-calendar
|
|
225
|
+
<tolle-range-calendar class="shadow-lg"
|
|
180
226
|
[ngModel]="value"
|
|
181
227
|
(rangeSelect)="onCalendarSelect($event)"
|
|
182
228
|
[disablePastDates]="disablePastDates"
|
|
@@ -204,5 +250,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
204
250
|
}], onClickOutside: [{
|
|
205
251
|
type: HostListener,
|
|
206
252
|
args: ['document:mousedown', ['$event']]
|
|
253
|
+
}], onWindowResize: [{
|
|
254
|
+
type: HostListener,
|
|
255
|
+
args: ['window:resize']
|
|
256
|
+
}], onWindowScroll: [{
|
|
257
|
+
type: HostListener,
|
|
258
|
+
args: ['window:scroll']
|
|
207
259
|
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQTZDakQsTUFBTSxPQUFPLHdCQUF3QjtJQWdCZjtJQWZYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFbEMscUJBQXFCO0lBQ1osSUFBSSxHQUFtQyxTQUFTLENBQUM7SUFFM0IsZ0JBQWdCLENBQWM7SUFDdkMsT0FBTyxDQUFjO0lBRTNDLEtBQUssR0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sR0FBRyxL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OUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ1AsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQTBFcEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wdXRlUG9zaXRpb24sIGZsaXAsIHNoaWZ0LCBvZmZzZXQsIGF1dG9VcGRhdGUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBSYW5nZUNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9yYW5nZS1jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHtmb3JtYXR9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7SW5wdXRDb21wb25lbnR9IGZyb20gJy4vaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZVJhbmdlfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1kYXRlLXJhbmdlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSYW5nZUNhbGVuZGFyQ29tcG9uZW50LCBJbnB1dENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB3LWZ1bGxcIiAjdHJpZ2dlckNvbnRhaW5lcj5cbiAgICAgIDx0b2xsZS1pbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWVcIj5cbiAgICAgICAgPGRpdiBzdWZmaXggY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgICpuZ0lmPVwiKHZhbHVlLnN0YXJ0IHx8IHZhbHVlLmVuZCkgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmktY2xvc2UtbGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+PC9pPlxuXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJyaS1jYWxlbmRhci1saW5lIGN1cnNvci1wb2ludGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90b2xsZS1pbnB1dD5cbiAgICAgIDxkaXZcbiAgICAgICAgI3BvcG92ZXJcbiAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIHotNTAgbWluLXctNzJcIlxuICAgICAgICBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgdG9wOiAwOyBsZWZ0OiAwO1wiXG4gICAgICA+XG4gICAgICAgIDx0b2xsZS1yYW5nZS1jYWxlbmRhclxuICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICAocmFuZ2VTZWxlY3QpPVwib25DYWxlbmRhclNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICBbZGlzYWJsZVBhc3REYXRlc109XCJkaXNhYmxlUGFzdERhdGVzXCJcbiAgICAgICAgPjwvdG9sbGUtcmFuZ2UtY2FsZW5kYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1BpY2sgYSBkYXRlIHJhbmdlJztcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuXG4gIC8vIFN0YW5kYXJkaXplZCBTaXplc1xuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckNvbnRhaW5lcicpIHRyaWdnZXJDb250YWluZXIhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb3BvdmVyJykgcG9wb3ZlciE6IEVsZW1lbnRSZWY7XG5cbiAgdmFsdWU6IERhdGVSYW5nZSA9IHsgc3RhcnQ6IG51bGwsIGVuZDogbnVsbCB9O1xuICBpc09wZW4gPSBmYWxzZTtcbiAgY2xlYW51cEF1dG9VcGRhdGU/OiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBnZXQgZGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnZhbHVlLnN0YXJ0KSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBzdGFydFN0ciA9IGZvcm1hdCh0aGlzLnZhbHVlLnN0YXJ0LCAnTU1NIGRkLCB5eXl5Jyk7IC8vIFVzaW5nIGRhdGUtZm5zIGZvcm1hdFxuICAgIGlmICghdGhpcy52YWx1ZS5lbmQpIHJldHVybiBzdGFydFN0cjtcblxuICAgIGNvbnN0IGVuZFN0ciA9IGZvcm1hdCh0aGlzLnZhbHVlLmVuZCwgJ01NTSBkZCwgeXl5eScpO1xuICAgIHJldHVybiBgJHtzdGFydFN0cn0gLSAke2VuZFN0cn1gO1xuICB9XG5cbiAgb25DYWxlbmRhclNlbGVjdChyYW5nZTogRGF0ZVJhbmdlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICAvLyBDbG9zZSBvbmx5IGlmIHJhbmdlIGlzIGNvbXBsZXRlXG4gICAgaWYgKHJhbmdlLnN0YXJ0ICYmIHJhbmdlLmVuZCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIC8vIFNtYWxsIGRlbGF5IGZvciBVWFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsb3NlKCksIDE1MCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUG9wb3ZlcihfOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSkgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSgpO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gU3RvcCBidXR0b24gY2xpY2tcbiAgICB0aGlzLnZhbHVlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8vIC0tLSBGbG9hdGluZyBVSSBQb3NpdGlvbmluZyAtLS1cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlckNvbnRhaW5lciB8fCAhdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLCAvLyBBbGlnbmVkIHRvIHRoZSByaWdodCB3aGVyZSB0aGUgaWNvbiBpc1xuICAgICAgICAgIG1pZGRsZXdhcmU6IFtvZmZzZXQoNCksIGZsaXAoKSwgc2hpZnQoeyBwYWRkaW5nOiA4IH0pXSxcbiAgICAgICAgfSkudGhlbigoeyB4LCB5IH0pID0+IHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LnN0eWxlLCB7XG4gICAgICAgICAgICBsZWZ0OiBgJHt4fXB4YCxcbiAgICAgICAgICAgIHRvcDogYCR7eX1weGAsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3BlbiAmJlxuICAgICAgIXRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ1ZBXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbDogRGF0ZVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7IC4uLnZhbCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFtRG5ELE1BQU0sT0FBTyx3QkFBd0I7SUFjZjtJQWJYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsSUFBSSxHQUFtQyxTQUFTLENBQUM7SUFFM0IsZ0JBQWdCLENBQWM7SUFDdkMsT0FBTyxDQUFjO0lBRTNDLEtBQUssR0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sR0FBRyxLQUFL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Q0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFeUIsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDUCxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBc0dwQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTlDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlO2dCQVE3QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBzaGlmdCwgb2Zmc2V0LCBhdXRvVXBkYXRlLCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgUmFuZ2VDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vcmFuZ2UtY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtZGF0ZS1yYW5nZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmFuZ2VDYWxlbmRhckNvbXBvbmVudCwgSW5wdXRDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCIgI3RyaWdnZXJDb250YWluZXI+XG4gICAgICA8dG9sbGUtaW5wdXRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgW2NsYXNzXT1cImNsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBzdWZmaXggY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgICpuZ0lmPVwiKHZhbHVlLnN0YXJ0IHx8IHZhbHVlLmVuZCkgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmktY2xvc2UtbGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+PC9pPlxuXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJyaS1jYWxlbmRhci1saW5lIGN1cnNvci1wb2ludGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90b2xsZS1pbnB1dD5cblxuICAgICAgPGRpdlxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICAqbmdJZj1cImlzT3BlblwiXG4gICAgICAgIGNsYXNzPVwiZml4ZWQgei01MFwiXG4gICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiXG4gICAgICA+XG4gICAgICAgIDx0b2xsZS1yYW5nZS1jYWxlbmRhciBjbGFzcz1cInNoYWRvdy1sZ1wiXG4gICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgIChyYW5nZVNlbGVjdCk9XCJvbkNhbGVuZGFyU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgIFtkaXNhYmxlUGFzdERhdGVzXT1cImRpc2FibGVQYXN0RGF0ZXNcIlxuICAgICAgICA+PC90b2xsZS1yYW5nZS1jYWxlbmRhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGljayBhIGRhdGUgcmFuZ2UnO1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdERhdGVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICd4cycgfCAnc20nIHwgJ2RlZmF1bHQnIHwgJ2xnJyA9ICdkZWZhdWx0JztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQ29udGFpbmVyJykgdHJpZ2dlckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXInKSBwb3BvdmVyITogRWxlbWVudFJlZjtcblxuICB2YWx1ZTogRGF0ZVJhbmdlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gIGlzT3BlbiA9IGZhbHNlO1xuICBjbGVhbnVwQXV0b1VwZGF0ZT86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIGdldCBkaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmFsdWUuc3RhcnQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHN0YXJ0U3RyID0gZm9ybWF0KHRoaXMudmFsdWUuc3RhcnQsICdNTU0gZGQsIHl5eXknKTtcbiAgICBpZiAoIXRoaXMudmFsdWUuZW5kKSByZXR1cm4gc3RhcnRTdHI7XG5cbiAgICBjb25zdCBlbmRTdHIgPSBmb3JtYXQodGhpcy52YWx1ZS5lbmQsICdNTU0gZGQsIHl5eXknKTtcbiAgICByZXR1cm4gYCR7c3RhcnRTdHJ9IC0gJHtlbmRTdHJ9YDtcbiAgfVxuXG4gIG9uQ2FsZW5kYXJTZWxlY3QocmFuZ2U6IERhdGVSYW5nZSkge1xuICAgIHRoaXMudmFsdWUgPSByYW5nZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuXG4gICAgLy8gQ2xvc2Ugb25seSBpZiByYW5nZSBpcyBjb21wbGV0ZVxuICAgIGlmIChyYW5nZS5zdGFydCAmJiByYW5nZS5lbmQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCAxNTApO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVBvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlUG9zaXRpb24oKSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB7XG4gICAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gICAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy52YWx1ZSA9IHsgc3RhcnQ6IG51bGwsIGVuZDogbnVsbCB9O1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyAtLS0gRmxvYXRpbmcgVUkgUG9zaXRpb25pbmcgd2l0aCBGaXhlZCBTdHJhdGVneSAtLS1cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlckNvbnRhaW5lciB8fCAhdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJyxcbiAgICAgICAgICBzdHJhdGVneTogJ2ZpeGVkJywgLy8gVXNlIGZpeGVkIHRvIGVzY2FwZSBjb2x1bW4gbGF5b3V0XG4gICAgICAgICAgbWlkZGxld2FyZTogW1xuICAgICAgICAgICAgb2Zmc2V0KDQpLFxuICAgICAgICAgICAgZmxpcCh7XG4gICAgICAgICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246ICdzdGFydCcsXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDhcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hpZnQoeyBwYWRkaW5nOiA4IH0pLFxuICAgICAgICAgICAgc2l6ZSh7XG4gICAgICAgICAgICAgIGFwcGx5KHsgcmVjdHMsIGVsZW1lbnRzLCBhdmFpbGFibGVIZWlnaHQgfSkge1xuICAgICAgICAgICAgICAgIC8vIENvbnN0cmFpbiBwb3BvdmVyIHRvIGF2YWlsYWJsZSBzcGFjZVxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudHMuZmxvYXRpbmcuc3R5bGUsIHtcbiAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogYCR7TWF0aC5taW4oNDAwLCBhdmFpbGFibGVIZWlnaHQpfXB4YCxcbiAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBgJHtNYXRoLm1heChyZWN0cy5yZWZlcmVuY2Uud2lkdGgsIDMyMCl9cHhgLCAvLyBDYWxlbmRhciBtaW5pbXVtIHdpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkudGhlbigoeyB4LCB5LCBwbGFjZW1lbnQgfSkgPT4ge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIE9wdGlvbmFsOiBBZGQgcGxhY2VtZW50IGNsYXNzIGZvciBzdHlsaW5nXG4gICAgICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY2FsZW5kYXItdG9wJywgJ2NhbGVuZGFyLWJvdHRvbScpO1xuICAgICAgICAgIGlmIChwbGFjZW1lbnQuaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjYWxlbmRhci10b3AnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY2FsZW5kYXItYm90dG9tJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiZcbiAgICAgICF0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5wb3BvdmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7IC8vIENsb3NlIG9uIHJlc2l6ZSBmb3Igc2ltcGxpY2l0eVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICBvbldpbmRvd1Njcm9sbCgpIHtcbiAgICAvLyBGbG9hdGluZy1VSSdzIGF1dG9VcGRhdGUgaGFuZGxlcyBzY3JvbGwgcmVwb3NpdGlvbmluZ1xuICB9XG5cbiAgLy8gLS0tIENvbnRyb2wgVmFsdWUgQWNjZXNzb3IgLS0tXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbDogRGF0ZVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7IC4uLnZhbCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG59XG4iXX0=
|