@beshkari/mb-ui 0.5.0-alpha.1
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/LICENSE +21 -0
- package/README.md +98 -0
- package/esm2022/beshkari-mb-ui.mjs +5 -0
- package/esm2022/lib/accordion/mb-accordion.component.mjs +37 -0
- package/esm2022/lib/alert/mb-alert.component.mjs +28 -0
- package/esm2022/lib/avatar/mb-avatar.component.mjs +32 -0
- package/esm2022/lib/badge/mb-badge.component.mjs +28 -0
- package/esm2022/lib/breadcrumb/mb-breadcrumb.component.mjs +23 -0
- package/esm2022/lib/button/mb-button.component.mjs +48 -0
- package/esm2022/lib/card/mb-card.component.mjs +28 -0
- package/esm2022/lib/checkbox/mb-checkbox.component.mjs +75 -0
- package/esm2022/lib/chip/mb-chip.component.mjs +33 -0
- package/esm2022/lib/combobox/mb-combobox.component.mjs +235 -0
- package/esm2022/lib/confirm/mb-confirm-dialog.component.mjs +44 -0
- package/esm2022/lib/confirm/mb-confirm.service.mjs +39 -0
- package/esm2022/lib/confirm/mb-confirm.types.mjs +2 -0
- package/esm2022/lib/datepicker/mb-datepicker.component.mjs +382 -0
- package/esm2022/lib/dialog/mb-dialog-container.component.mjs +37 -0
- package/esm2022/lib/dialog/mb-dialog-ref.mjs +17 -0
- package/esm2022/lib/dialog/mb-dialog.component.mjs +87 -0
- package/esm2022/lib/dialog/mb-dialog.service.mjs +61 -0
- package/esm2022/lib/dialog/mb-dialog.tokens.mjs +3 -0
- package/esm2022/lib/divider/mb-divider.component.mjs +18 -0
- package/esm2022/lib/drawer/mb-drawer.component.mjs +34 -0
- package/esm2022/lib/dropdown/mb-dropdown.component.mjs +24 -0
- package/esm2022/lib/empty/mb-empty.component.mjs +27 -0
- package/esm2022/lib/form-field/mb-form-field.component.mjs +24 -0
- package/esm2022/lib/grid/mb-grid-data.mjs +266 -0
- package/esm2022/lib/grid/mb-grid-export.mjs +36 -0
- package/esm2022/lib/grid/mb-grid-messages.mjs +10 -0
- package/esm2022/lib/grid/mb-grid-state-adapter.mjs +97 -0
- package/esm2022/lib/grid/mb-grid-state.service.mjs +47 -0
- package/esm2022/lib/grid/mb-grid-template.directive.mjs +109 -0
- package/esm2022/lib/grid/mb-grid.component.mjs +998 -0
- package/esm2022/lib/grid/mb-grid.types.mjs +2 -0
- package/esm2022/lib/i18n/mb-ui-locale.mjs +18 -0
- package/esm2022/lib/i18n/mb-ui-messages-en.mjs +103 -0
- package/esm2022/lib/i18n/mb-ui-messages-fa.mjs +103 -0
- package/esm2022/lib/i18n/mb-ui-messages.mjs +34 -0
- package/esm2022/lib/i18n/mb-ui-messages.types.mjs +2 -0
- package/esm2022/lib/i18n/provide-mb-ui.mjs +20 -0
- package/esm2022/lib/input/mb-input.component.mjs +86 -0
- package/esm2022/lib/pagination/mb-pagination.component.mjs +47 -0
- package/esm2022/lib/progress/mb-progress.component.mjs +29 -0
- package/esm2022/lib/radio/mb-radio-group.component.mjs +63 -0
- package/esm2022/lib/select/mb-select.component.mjs +73 -0
- package/esm2022/lib/skeleton/mb-skeleton.component.mjs +24 -0
- package/esm2022/lib/spinner/mb-spinner.component.mjs +21 -0
- package/esm2022/lib/switch/mb-switch.component.mjs +59 -0
- package/esm2022/lib/tabs/mb-tabs.component.mjs +31 -0
- package/esm2022/lib/textarea/mb-textarea.component.mjs +83 -0
- package/esm2022/lib/toast/mb-toast-container.component.mjs +21 -0
- package/esm2022/lib/toast/mb-toast.service.mjs +47 -0
- package/esm2022/lib/toast/mb-toast.types.mjs +2 -0
- package/esm2022/lib/tokens/mb-ui-config.token.mjs +11 -0
- package/esm2022/lib/tooltip/mb-tooltip.directive.mjs +48 -0
- package/esm2022/lib/utils/coerce.mjs +10 -0
- package/esm2022/lib/utils/mb-jalali-date.mjs +120 -0
- package/esm2022/public-api.mjs +56 -0
- package/fesm2022/beshkari-mb-ui.mjs +3828 -0
- package/fesm2022/beshkari-mb-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/accordion/mb-accordion.component.d.ts +19 -0
- package/lib/alert/mb-alert.component.d.ts +12 -0
- package/lib/avatar/mb-avatar.component.d.ts +12 -0
- package/lib/badge/mb-badge.component.d.ts +12 -0
- package/lib/breadcrumb/mb-breadcrumb.component.d.ts +15 -0
- package/lib/button/mb-button.component.d.ts +19 -0
- package/lib/card/mb-card.component.d.ts +10 -0
- package/lib/checkbox/mb-checkbox.component.d.ts +25 -0
- package/lib/chip/mb-chip.component.d.ts +12 -0
- package/lib/combobox/mb-combobox.component.d.ts +65 -0
- package/lib/confirm/mb-confirm-dialog.component.d.ts +17 -0
- package/lib/confirm/mb-confirm.service.d.ts +12 -0
- package/lib/confirm/mb-confirm.types.d.ts +10 -0
- package/lib/datepicker/mb-datepicker.component.d.ts +87 -0
- package/lib/dialog/mb-dialog-container.component.d.ts +14 -0
- package/lib/dialog/mb-dialog-ref.d.ts +9 -0
- package/lib/dialog/mb-dialog.component.d.ts +27 -0
- package/lib/dialog/mb-dialog.service.d.ts +14 -0
- package/lib/dialog/mb-dialog.tokens.d.ts +13 -0
- package/lib/divider/mb-divider.component.d.ts +7 -0
- package/lib/drawer/mb-drawer.component.d.ts +14 -0
- package/lib/dropdown/mb-dropdown.component.d.ts +10 -0
- package/lib/empty/mb-empty.component.d.ts +10 -0
- package/lib/form-field/mb-form-field.component.d.ts +9 -0
- package/lib/grid/mb-grid-data.d.ts +20 -0
- package/lib/grid/mb-grid-export.d.ts +9 -0
- package/lib/grid/mb-grid-messages.d.ts +6 -0
- package/lib/grid/mb-grid-state-adapter.d.ts +24 -0
- package/lib/grid/mb-grid-state.service.d.ts +10 -0
- package/lib/grid/mb-grid-template.directive.d.ts +43 -0
- package/lib/grid/mb-grid.component.d.ts +233 -0
- package/lib/grid/mb-grid.types.d.ts +255 -0
- package/lib/i18n/mb-ui-locale.d.ts +2 -0
- package/lib/i18n/mb-ui-messages-en.d.ts +3 -0
- package/lib/i18n/mb-ui-messages-fa.d.ts +3 -0
- package/lib/i18n/mb-ui-messages.d.ts +5 -0
- package/lib/i18n/mb-ui-messages.types.d.ts +90 -0
- package/lib/i18n/provide-mb-ui.d.ts +7 -0
- package/lib/input/mb-input.component.d.ts +30 -0
- package/lib/pagination/mb-pagination.component.d.ts +16 -0
- package/lib/progress/mb-progress.component.d.ts +11 -0
- package/lib/radio/mb-radio-group.component.d.ts +30 -0
- package/lib/select/mb-select.component.d.ts +31 -0
- package/lib/skeleton/mb-skeleton.component.d.ts +9 -0
- package/lib/spinner/mb-spinner.component.d.ts +9 -0
- package/lib/switch/mb-switch.component.d.ts +22 -0
- package/lib/tabs/mb-tabs.component.d.ts +19 -0
- package/lib/textarea/mb-textarea.component.d.ts +29 -0
- package/lib/toast/mb-toast-container.component.d.ts +10 -0
- package/lib/toast/mb-toast.service.d.ts +15 -0
- package/lib/toast/mb-toast.types.d.ts +8 -0
- package/lib/tokens/mb-ui-config.token.d.ts +12 -0
- package/lib/tooltip/mb-tooltip.directive.d.ts +13 -0
- package/lib/utils/coerce.d.ts +3 -0
- package/lib/utils/mb-jalali-date.d.ts +18 -0
- package/package.json +50 -0
- package/public-api.d.ts +55 -0
- package/theme/_components.scss +19 -0
- package/theme/_dark.scss +1 -0
- package/theme/_density.scss +1 -0
- package/theme/_tokens.scss +57 -0
- package/theme/mb-ui.scss +28 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, forwardRef, inject, } from '@angular/core';
|
|
2
|
+
import { NgClass, NgFor, NgIf } from '@angular/common';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';
|
|
5
|
+
import { MB_UI_CONFIG } from '../tokens/mb-ui-config.token';
|
|
6
|
+
import { MB_JALALI_MONTH_NAMES, mbFormatJalali, mbGregorianToJalali, mbJalaliMonthLength, mbJalaliToGregorian, mbParseIsoDate, mbToIsoDate, } from '../utils/mb-jalali-date';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class MbDatepickerComponent {
|
|
9
|
+
cdr;
|
|
10
|
+
host;
|
|
11
|
+
messages = inject(MB_UI_MESSAGES);
|
|
12
|
+
uiConfig = inject(MB_UI_CONFIG);
|
|
13
|
+
mode = 'date';
|
|
14
|
+
calendar = 'gregorian';
|
|
15
|
+
placeholder;
|
|
16
|
+
min;
|
|
17
|
+
max;
|
|
18
|
+
size = 'md';
|
|
19
|
+
disabled = false;
|
|
20
|
+
invalid = false;
|
|
21
|
+
clearable = true;
|
|
22
|
+
firstDayOfWeek = 0;
|
|
23
|
+
locale;
|
|
24
|
+
monthNames;
|
|
25
|
+
weekdayNames;
|
|
26
|
+
disabledDates = () => false;
|
|
27
|
+
valueChange = new EventEmitter();
|
|
28
|
+
openedChange = new EventEmitter();
|
|
29
|
+
hostClass = 'mb-datepicker-host';
|
|
30
|
+
value = '';
|
|
31
|
+
opened = false;
|
|
32
|
+
viewDate = this.startOfMonth(new Date());
|
|
33
|
+
viewJalali = mbGregorianToJalali(this.toGregorian(new Date()));
|
|
34
|
+
days = [];
|
|
35
|
+
years = Array.from({ length: 21 }, (_, index) => new Date().getFullYear() - 10 + index);
|
|
36
|
+
jalaliYears = Array.from({ length: 21 }, (_, index) => this.viewJalali.year - 10 + index);
|
|
37
|
+
onChange = () => undefined;
|
|
38
|
+
onTouched = () => undefined;
|
|
39
|
+
constructor(cdr, host) {
|
|
40
|
+
this.cdr = cdr;
|
|
41
|
+
this.host = host;
|
|
42
|
+
this.rebuildCalendar();
|
|
43
|
+
}
|
|
44
|
+
get effectivePlaceholder() {
|
|
45
|
+
return this.placeholder ?? this.messages.datepicker.placeholder;
|
|
46
|
+
}
|
|
47
|
+
get effectiveLocale() {
|
|
48
|
+
return this.locale ?? this.uiConfig.locale;
|
|
49
|
+
}
|
|
50
|
+
get effectiveWeekdayNames() {
|
|
51
|
+
return this.weekdayNames ?? this.messages.datepicker.weekdayNames;
|
|
52
|
+
}
|
|
53
|
+
get effectiveGregorianMonthNames() {
|
|
54
|
+
return this.monthNames ?? this.messages.datepicker.monthNamesGregorian;
|
|
55
|
+
}
|
|
56
|
+
get activeMonthNames() {
|
|
57
|
+
return this.calendar === 'jalali' ? MB_JALALI_MONTH_NAMES : this.effectiveGregorianMonthNames;
|
|
58
|
+
}
|
|
59
|
+
get activeYears() {
|
|
60
|
+
if (this.calendar === 'jalali') {
|
|
61
|
+
const center = this.viewJalali.year;
|
|
62
|
+
return Array.from({ length: 21 }, (_, index) => center - 10 + index);
|
|
63
|
+
}
|
|
64
|
+
return this.years;
|
|
65
|
+
}
|
|
66
|
+
onDocumentClick(event) {
|
|
67
|
+
if (this.opened && !this.host.nativeElement.contains(event.target)) {
|
|
68
|
+
this.close();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
writeValue(value) {
|
|
72
|
+
if (value instanceof Date) {
|
|
73
|
+
this.value = this.toIso(value);
|
|
74
|
+
this.viewDate = this.startOfMonth(value);
|
|
75
|
+
this.viewJalali = mbGregorianToJalali(this.toGregorian(value));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.value = value ?? '';
|
|
79
|
+
const parsed = this.parseIso(this.value);
|
|
80
|
+
if (parsed) {
|
|
81
|
+
this.viewDate = this.startOfMonth(parsed);
|
|
82
|
+
this.viewJalali = mbGregorianToJalali(this.toGregorian(parsed));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
this.rebuildCalendar();
|
|
86
|
+
this.cdr.markForCheck();
|
|
87
|
+
}
|
|
88
|
+
registerOnChange(fn) {
|
|
89
|
+
this.onChange = fn;
|
|
90
|
+
}
|
|
91
|
+
registerOnTouched(fn) {
|
|
92
|
+
this.onTouched = fn;
|
|
93
|
+
}
|
|
94
|
+
setDisabledState(isDisabled) {
|
|
95
|
+
this.disabled = isDisabled;
|
|
96
|
+
this.cdr.markForCheck();
|
|
97
|
+
}
|
|
98
|
+
toggle() {
|
|
99
|
+
if (!this.disabled) {
|
|
100
|
+
this.opened ? this.close() : this.open();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
open() {
|
|
104
|
+
if (this.disabled)
|
|
105
|
+
return;
|
|
106
|
+
this.opened = true;
|
|
107
|
+
this.openedChange.emit(true);
|
|
108
|
+
this.rebuildCalendar();
|
|
109
|
+
this.cdr.markForCheck();
|
|
110
|
+
}
|
|
111
|
+
close() {
|
|
112
|
+
this.opened = false;
|
|
113
|
+
this.onTouched();
|
|
114
|
+
this.openedChange.emit(false);
|
|
115
|
+
this.cdr.markForCheck();
|
|
116
|
+
}
|
|
117
|
+
clear(event) {
|
|
118
|
+
event?.stopPropagation();
|
|
119
|
+
if (this.disabled)
|
|
120
|
+
return;
|
|
121
|
+
this.commit('');
|
|
122
|
+
this.close();
|
|
123
|
+
}
|
|
124
|
+
select(day) {
|
|
125
|
+
if (day.disabled)
|
|
126
|
+
return;
|
|
127
|
+
this.commit(day.iso);
|
|
128
|
+
this.close();
|
|
129
|
+
}
|
|
130
|
+
selectToday() {
|
|
131
|
+
const today = new Date();
|
|
132
|
+
if (!this.isDisabled(today)) {
|
|
133
|
+
this.viewDate = this.startOfMonth(today);
|
|
134
|
+
this.viewJalali = mbGregorianToJalali(this.toGregorian(today));
|
|
135
|
+
this.commit(this.toIso(today));
|
|
136
|
+
this.close();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
prevMonth() {
|
|
140
|
+
if (this.calendar === 'jalali') {
|
|
141
|
+
const month = this.viewJalali.month === 1 ? 12 : this.viewJalali.month - 1;
|
|
142
|
+
const year = this.viewJalali.month === 1 ? this.viewJalali.year - 1 : this.viewJalali.year;
|
|
143
|
+
this.viewJalali = { year, month, day: 1 };
|
|
144
|
+
this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() - 1, 1);
|
|
148
|
+
}
|
|
149
|
+
this.rebuildCalendar();
|
|
150
|
+
}
|
|
151
|
+
nextMonth() {
|
|
152
|
+
if (this.calendar === 'jalali') {
|
|
153
|
+
const month = this.viewJalali.month === 12 ? 1 : this.viewJalali.month + 1;
|
|
154
|
+
const year = this.viewJalali.month === 12 ? this.viewJalali.year + 1 : this.viewJalali.year;
|
|
155
|
+
this.viewJalali = { year, month, day: 1 };
|
|
156
|
+
this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() + 1, 1);
|
|
160
|
+
}
|
|
161
|
+
this.rebuildCalendar();
|
|
162
|
+
}
|
|
163
|
+
setMonth(value) {
|
|
164
|
+
const month = Number(value);
|
|
165
|
+
if (this.calendar === 'jalali') {
|
|
166
|
+
this.viewJalali = { ...this.viewJalali, month: month + 1 };
|
|
167
|
+
this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));
|
|
168
|
+
if (this.mode === 'month') {
|
|
169
|
+
const gregorian = mbJalaliToGregorian({ year: this.viewJalali.year, month: this.viewJalali.month, day: 1 });
|
|
170
|
+
this.commit(`${gregorian.year}-${String(gregorian.month).padStart(2, '0')}`);
|
|
171
|
+
this.close();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.viewDate = new Date(this.viewDate.getFullYear(), month, 1);
|
|
177
|
+
if (this.mode === 'month') {
|
|
178
|
+
this.commit(`${this.viewDate.getFullYear()}-${String(month + 1).padStart(2, '0')}`);
|
|
179
|
+
this.close();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
this.rebuildCalendar();
|
|
184
|
+
}
|
|
185
|
+
setYear(value) {
|
|
186
|
+
const year = Number(value);
|
|
187
|
+
if (this.calendar === 'jalali') {
|
|
188
|
+
this.viewJalali = { ...this.viewJalali, year };
|
|
189
|
+
this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
this.viewDate = new Date(year, this.viewDate.getMonth(), 1);
|
|
193
|
+
}
|
|
194
|
+
this.rebuildCalendar();
|
|
195
|
+
}
|
|
196
|
+
displayValue() {
|
|
197
|
+
if (!this.value)
|
|
198
|
+
return '';
|
|
199
|
+
if (this.mode === 'month') {
|
|
200
|
+
if (this.calendar === 'jalali') {
|
|
201
|
+
const parsed = mbParseIsoDate(this.value.length === 7 ? `${this.value}-01` : this.value);
|
|
202
|
+
if (!parsed)
|
|
203
|
+
return this.value;
|
|
204
|
+
const jalali = mbGregorianToJalali(parsed);
|
|
205
|
+
return `${MB_JALALI_MONTH_NAMES[jalali.month - 1]} ${jalali.year}`;
|
|
206
|
+
}
|
|
207
|
+
const [year, month] = this.value.split('-');
|
|
208
|
+
return `${this.monthNames[Number(month) - 1] ?? month} ${year}`;
|
|
209
|
+
}
|
|
210
|
+
const parsed = this.parseIso(this.value);
|
|
211
|
+
if (!parsed)
|
|
212
|
+
return this.value;
|
|
213
|
+
if (this.calendar === 'jalali') {
|
|
214
|
+
return mbFormatJalali(mbGregorianToJalali(this.toGregorian(parsed)));
|
|
215
|
+
}
|
|
216
|
+
try {
|
|
217
|
+
return new Intl.DateTimeFormat(this.effectiveLocale, { dateStyle: 'medium' }).format(parsed);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return this.value;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
currentMonthIndex() {
|
|
224
|
+
return this.calendar === 'jalali' ? this.viewJalali.month - 1 : this.viewDate.getMonth();
|
|
225
|
+
}
|
|
226
|
+
currentYear() {
|
|
227
|
+
return this.calendar === 'jalali' ? this.viewJalali.year : this.viewDate.getFullYear();
|
|
228
|
+
}
|
|
229
|
+
commit(value, emit = true) {
|
|
230
|
+
this.value = value;
|
|
231
|
+
this.onChange(value);
|
|
232
|
+
if (emit)
|
|
233
|
+
this.valueChange.emit(value);
|
|
234
|
+
this.rebuildCalendar();
|
|
235
|
+
this.cdr.markForCheck();
|
|
236
|
+
}
|
|
237
|
+
rebuildCalendar() {
|
|
238
|
+
this.days = this.calendar === 'jalali' ? this.buildJalaliCalendar() : this.buildGregorianCalendar();
|
|
239
|
+
this.cdr.markForCheck();
|
|
240
|
+
}
|
|
241
|
+
buildGregorianCalendar() {
|
|
242
|
+
const first = this.startOfMonth(this.viewDate);
|
|
243
|
+
const start = new Date(first);
|
|
244
|
+
const offset = (start.getDay() - this.firstDayOfWeek + 7) % 7;
|
|
245
|
+
start.setDate(start.getDate() - offset);
|
|
246
|
+
const selected = this.parseIso(this.value);
|
|
247
|
+
const todayIso = this.toIso(new Date());
|
|
248
|
+
return Array.from({ length: 42 }, (_, index) => {
|
|
249
|
+
const date = new Date(start);
|
|
250
|
+
date.setDate(start.getDate() + index);
|
|
251
|
+
const iso = this.toIso(date);
|
|
252
|
+
return {
|
|
253
|
+
date,
|
|
254
|
+
iso,
|
|
255
|
+
label: date.getDate(),
|
|
256
|
+
currentMonth: date.getMonth() === first.getMonth(),
|
|
257
|
+
today: iso === todayIso,
|
|
258
|
+
selected: !!selected && iso === this.toIso(selected),
|
|
259
|
+
disabled: this.isDisabled(date),
|
|
260
|
+
};
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
buildJalaliCalendar() {
|
|
264
|
+
const month = this.viewJalali.month;
|
|
265
|
+
const year = this.viewJalali.year;
|
|
266
|
+
const firstGregorian = this.jalaliToDate({ year, month, day: 1 });
|
|
267
|
+
const start = new Date(firstGregorian);
|
|
268
|
+
const offset = (start.getDay() - this.firstDayOfWeek + 7) % 7;
|
|
269
|
+
start.setDate(start.getDate() - offset);
|
|
270
|
+
const selected = this.parseIso(this.value);
|
|
271
|
+
const todayIso = this.toIso(new Date());
|
|
272
|
+
return Array.from({ length: 42 }, (_, index) => {
|
|
273
|
+
const date = new Date(start);
|
|
274
|
+
date.setDate(start.getDate() + index);
|
|
275
|
+
const jalali = mbGregorianToJalali(this.toGregorian(date));
|
|
276
|
+
const iso = this.toIso(date);
|
|
277
|
+
return {
|
|
278
|
+
date,
|
|
279
|
+
iso,
|
|
280
|
+
label: jalali.day,
|
|
281
|
+
jalali,
|
|
282
|
+
currentMonth: jalali.month === month && jalali.year === year,
|
|
283
|
+
today: iso === todayIso,
|
|
284
|
+
selected: !!selected && iso === this.toIso(selected),
|
|
285
|
+
disabled: this.isDisabled(date),
|
|
286
|
+
};
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
jalaliToDate(date) {
|
|
290
|
+
const gregorian = mbJalaliToGregorian(date);
|
|
291
|
+
return new Date(gregorian.year, gregorian.month - 1, gregorian.day);
|
|
292
|
+
}
|
|
293
|
+
toGregorian(date) {
|
|
294
|
+
return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };
|
|
295
|
+
}
|
|
296
|
+
isDisabled(date) {
|
|
297
|
+
const iso = this.toIso(date);
|
|
298
|
+
if (this.min && iso < this.min)
|
|
299
|
+
return true;
|
|
300
|
+
if (this.max && iso > this.max)
|
|
301
|
+
return true;
|
|
302
|
+
if (this.calendar === 'jalali') {
|
|
303
|
+
const jalali = mbGregorianToJalali(this.toGregorian(date));
|
|
304
|
+
const monthLength = mbJalaliMonthLength(jalali.year, jalali.month);
|
|
305
|
+
if (jalali.day > monthLength)
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
return this.disabledDates(date);
|
|
309
|
+
}
|
|
310
|
+
parseIso(value) {
|
|
311
|
+
if (!value)
|
|
312
|
+
return null;
|
|
313
|
+
const parts = value.split('-').map(Number);
|
|
314
|
+
if (parts.length < 2 || parts.some(Number.isNaN))
|
|
315
|
+
return null;
|
|
316
|
+
const [year, month, day = 1] = parts;
|
|
317
|
+
return new Date(year, month - 1, day);
|
|
318
|
+
}
|
|
319
|
+
toIso(date) {
|
|
320
|
+
return mbToIsoDate(this.toGregorian(date));
|
|
321
|
+
}
|
|
322
|
+
startOfMonth(date) {
|
|
323
|
+
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
324
|
+
}
|
|
325
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbDatepickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
326
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbDatepickerComponent, isStandalone: true, selector: "mb-datepicker", inputs: { mode: "mode", calendar: "calendar", placeholder: "placeholder", min: "min", max: "max", size: "size", disabled: "disabled", invalid: "invalid", clearable: "clearable", firstDayOfWeek: "firstDayOfWeek", locale: "locale", monthNames: "monthNames", weekdayNames: "weekdayNames", disabledDates: "disabledDates" }, outputs: { valueChange: "valueChange", openedChange: "openedChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "this.hostClass" } }, providers: [
|
|
327
|
+
{
|
|
328
|
+
provide: NG_VALUE_ACCESSOR,
|
|
329
|
+
useExisting: forwardRef(() => MbDatepickerComponent),
|
|
330
|
+
multi: true,
|
|
331
|
+
},
|
|
332
|
+
], ngImport: i0, template: "<div class=\"mb-datepicker-shell\" [class.mb-datepicker-shell--open]=\"opened\">\n <button\n type=\"button\"\n class=\"mb-datepicker-trigger\"\n [class.mb-datepicker-trigger--invalid]=\"invalid\"\n [ngClass]=\"'mb-datepicker-trigger--' + size\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\">\n <span class=\"mb-datepicker-value\" [class.mb-datepicker-value--placeholder]=\"!value\">{{ value ? displayValue() : effectivePlaceholder }}</span>\n <span class=\"mb-datepicker-actions\">\n <button\n *ngIf=\"clearable && value && !disabled\"\n type=\"button\"\n class=\"mb-datepicker-clear\"\n [attr.aria-label]=\"messages.datepicker.clear\"\n (click)=\"clear($event)\">\u00D7</button>\n <span class=\"mb-datepicker-icon\" aria-hidden=\"true\">\uD83D\uDCC5</span>\n </span>\n </button>\n\n <div *ngIf=\"opened\" class=\"mb-datepicker-panel\" role=\"dialog\" [attr.aria-label]=\"messages.datepicker.pickDate\">\n <div class=\"mb-datepicker-header\">\n <button type=\"button\" class=\"mb-datepicker-nav\" (click)=\"prevMonth()\">\u2039</button>\n <div class=\"mb-datepicker-title\">\n <select [value]=\"currentMonthIndex()\" (change)=\"setMonth($any($event.target).value)\">\n <option *ngFor=\"let month of activeMonthNames; index as monthIndex\" [value]=\"monthIndex\">{{ month }}</option>\n </select>\n <select [value]=\"currentYear()\" (change)=\"setYear($any($event.target).value)\">\n <option *ngFor=\"let year of activeYears\" [value]=\"year\">{{ year }}</option>\n </select>\n </div>\n <button type=\"button\" class=\"mb-datepicker-nav\" (click)=\"nextMonth()\">\u203A</button>\n </div>\n\n <ng-container *ngIf=\"mode === 'date'; else monthPicker\">\n <div class=\"mb-datepicker-weekdays\">\n <span *ngFor=\"let weekday of effectiveWeekdayNames\">{{ weekday }}</span>\n </div>\n <div class=\"mb-datepicker-grid\">\n <button\n *ngFor=\"let day of days\"\n type=\"button\"\n class=\"mb-datepicker-day\"\n [class.mb-datepicker-day--muted]=\"!day.currentMonth\"\n [class.mb-datepicker-day--today]=\"day.today\"\n [class.mb-datepicker-day--selected]=\"day.selected\"\n [disabled]=\"day.disabled\"\n (click)=\"select(day)\">{{ day.label }}</button>\n </div>\n </ng-container>\n\n <ng-template #monthPicker>\n <div class=\"mb-datepicker-months\">\n <button *ngFor=\"let month of activeMonthNames; index as monthIndex\" type=\"button\" class=\"mb-datepicker-month\" (click)=\"setMonth(monthIndex)\">{{ month }}</button>\n </div>\n </ng-template>\n\n <div class=\"mb-datepicker-footer\">\n <button type=\"button\" (click)=\"selectToday()\">{{ messages.datepicker.today }}</button>\n <button type=\"button\" (click)=\"close()\">{{ messages.common.close }}</button>\n </div>\n </div>\n</div>\n", styles: [":host{display:inline-block;min-width:14rem;position:relative}.mb-datepicker-shell{position:relative;width:100%}.mb-datepicker-trigger{width:100%;min-height:var(--mb-control-height-md, 2.5rem);display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;border:1px solid var(--mb-color-border, #d0d5dd);border-radius:var(--mb-radius-md, .625rem);padding-inline:.75rem;background:var(--mb-color-surface, #fff);color:var(--mb-color-text, #101828);cursor:pointer}.mb-datepicker-trigger:hover{border-color:var(--mb-color-primary, #2563eb)}.mb-datepicker-trigger--invalid{border-color:var(--mb-color-danger, #dc2626)}.mb-datepicker-value--placeholder{color:var(--mb-color-muted, #667085)}.mb-datepicker-actions{display:inline-flex;align-items:center;gap:.25rem}.mb-datepicker-clear{border:0;background:transparent;color:var(--mb-color-muted, #667085);cursor:pointer;font-size:1.2rem}.mb-datepicker-panel{position:absolute;z-index:1000;inset-block-start:calc(100% + .4rem);inset-inline-start:0;inline-size:20rem;max-inline-size:min(20rem,100vw - 2rem);border:1px solid var(--mb-color-border, #e2e8f0);border-radius:var(--mb-radius-lg, .875rem);background:var(--mb-color-surface, #fff);color:var(--mb-color-text, #101828);box-shadow:var(--mb-shadow-lg, 0 18px 45px rgba(15, 23, 42, .16));padding:.75rem}.mb-datepicker-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-block-end:.75rem}.mb-datepicker-nav,.mb-datepicker-footer button,.mb-datepicker-month,.mb-datepicker-day{border:1px solid transparent;border-radius:var(--mb-radius-md, .625rem);background:transparent;color:inherit;cursor:pointer}.mb-datepicker-nav{inline-size:2rem;block-size:2rem;font-size:1.4rem}.mb-datepicker-nav:hover,.mb-datepicker-footer button:hover,.mb-datepicker-month:hover,.mb-datepicker-day:hover:not(:disabled){background:var(--mb-color-surface-muted, #f1f5f9)}.mb-datepicker-title{display:flex;gap:.4rem}.mb-datepicker-title select{border:1px solid var(--mb-color-border, #e2e8f0);border-radius:var(--mb-radius-sm, .5rem);background:var(--mb-color-surface, #fff);color:inherit;padding:.25rem .45rem}.mb-datepicker-weekdays,.mb-datepicker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem}.mb-datepicker-weekdays{color:var(--mb-color-muted, #64748b);font-size:.75rem;text-align:center;margin-block-end:.25rem}.mb-datepicker-day{aspect-ratio:1;font-variant-numeric:tabular-nums}.mb-datepicker-day--muted{color:var(--mb-color-muted, #64748b);opacity:.65}.mb-datepicker-day--today{border-color:var(--mb-color-primary, #2563eb)}.mb-datepicker-day--selected{background:var(--mb-color-primary, #2563eb);color:var(--mb-color-primary-contrast, #fff)}.mb-datepicker-day:disabled{opacity:.35;cursor:not-allowed}.mb-datepicker-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.mb-datepicker-month{padding:.6rem .35rem}.mb-datepicker-footer{display:flex;justify-content:space-between;gap:.5rem;margin-block-start:.75rem;border-block-start:1px solid var(--mb-color-border, #e2e8f0);padding-block-start:.75rem}.mb-datepicker-footer button{padding:.45rem .75rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
333
|
+
}
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbDatepickerComponent, decorators: [{
|
|
335
|
+
type: Component,
|
|
336
|
+
args: [{ selector: 'mb-datepicker', standalone: true, imports: [NgClass, NgFor, NgIf], providers: [
|
|
337
|
+
{
|
|
338
|
+
provide: NG_VALUE_ACCESSOR,
|
|
339
|
+
useExisting: forwardRef(() => MbDatepickerComponent),
|
|
340
|
+
multi: true,
|
|
341
|
+
},
|
|
342
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-datepicker-shell\" [class.mb-datepicker-shell--open]=\"opened\">\n <button\n type=\"button\"\n class=\"mb-datepicker-trigger\"\n [class.mb-datepicker-trigger--invalid]=\"invalid\"\n [ngClass]=\"'mb-datepicker-trigger--' + size\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\">\n <span class=\"mb-datepicker-value\" [class.mb-datepicker-value--placeholder]=\"!value\">{{ value ? displayValue() : effectivePlaceholder }}</span>\n <span class=\"mb-datepicker-actions\">\n <button\n *ngIf=\"clearable && value && !disabled\"\n type=\"button\"\n class=\"mb-datepicker-clear\"\n [attr.aria-label]=\"messages.datepicker.clear\"\n (click)=\"clear($event)\">\u00D7</button>\n <span class=\"mb-datepicker-icon\" aria-hidden=\"true\">\uD83D\uDCC5</span>\n </span>\n </button>\n\n <div *ngIf=\"opened\" class=\"mb-datepicker-panel\" role=\"dialog\" [attr.aria-label]=\"messages.datepicker.pickDate\">\n <div class=\"mb-datepicker-header\">\n <button type=\"button\" class=\"mb-datepicker-nav\" (click)=\"prevMonth()\">\u2039</button>\n <div class=\"mb-datepicker-title\">\n <select [value]=\"currentMonthIndex()\" (change)=\"setMonth($any($event.target).value)\">\n <option *ngFor=\"let month of activeMonthNames; index as monthIndex\" [value]=\"monthIndex\">{{ month }}</option>\n </select>\n <select [value]=\"currentYear()\" (change)=\"setYear($any($event.target).value)\">\n <option *ngFor=\"let year of activeYears\" [value]=\"year\">{{ year }}</option>\n </select>\n </div>\n <button type=\"button\" class=\"mb-datepicker-nav\" (click)=\"nextMonth()\">\u203A</button>\n </div>\n\n <ng-container *ngIf=\"mode === 'date'; else monthPicker\">\n <div class=\"mb-datepicker-weekdays\">\n <span *ngFor=\"let weekday of effectiveWeekdayNames\">{{ weekday }}</span>\n </div>\n <div class=\"mb-datepicker-grid\">\n <button\n *ngFor=\"let day of days\"\n type=\"button\"\n class=\"mb-datepicker-day\"\n [class.mb-datepicker-day--muted]=\"!day.currentMonth\"\n [class.mb-datepicker-day--today]=\"day.today\"\n [class.mb-datepicker-day--selected]=\"day.selected\"\n [disabled]=\"day.disabled\"\n (click)=\"select(day)\">{{ day.label }}</button>\n </div>\n </ng-container>\n\n <ng-template #monthPicker>\n <div class=\"mb-datepicker-months\">\n <button *ngFor=\"let month of activeMonthNames; index as monthIndex\" type=\"button\" class=\"mb-datepicker-month\" (click)=\"setMonth(monthIndex)\">{{ month }}</button>\n </div>\n </ng-template>\n\n <div class=\"mb-datepicker-footer\">\n <button type=\"button\" (click)=\"selectToday()\">{{ messages.datepicker.today }}</button>\n <button type=\"button\" (click)=\"close()\">{{ messages.common.close }}</button>\n </div>\n </div>\n</div>\n", styles: [":host{display:inline-block;min-width:14rem;position:relative}.mb-datepicker-shell{position:relative;width:100%}.mb-datepicker-trigger{width:100%;min-height:var(--mb-control-height-md, 2.5rem);display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;border:1px solid var(--mb-color-border, #d0d5dd);border-radius:var(--mb-radius-md, .625rem);padding-inline:.75rem;background:var(--mb-color-surface, #fff);color:var(--mb-color-text, #101828);cursor:pointer}.mb-datepicker-trigger:hover{border-color:var(--mb-color-primary, #2563eb)}.mb-datepicker-trigger--invalid{border-color:var(--mb-color-danger, #dc2626)}.mb-datepicker-value--placeholder{color:var(--mb-color-muted, #667085)}.mb-datepicker-actions{display:inline-flex;align-items:center;gap:.25rem}.mb-datepicker-clear{border:0;background:transparent;color:var(--mb-color-muted, #667085);cursor:pointer;font-size:1.2rem}.mb-datepicker-panel{position:absolute;z-index:1000;inset-block-start:calc(100% + .4rem);inset-inline-start:0;inline-size:20rem;max-inline-size:min(20rem,100vw - 2rem);border:1px solid var(--mb-color-border, #e2e8f0);border-radius:var(--mb-radius-lg, .875rem);background:var(--mb-color-surface, #fff);color:var(--mb-color-text, #101828);box-shadow:var(--mb-shadow-lg, 0 18px 45px rgba(15, 23, 42, .16));padding:.75rem}.mb-datepicker-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-block-end:.75rem}.mb-datepicker-nav,.mb-datepicker-footer button,.mb-datepicker-month,.mb-datepicker-day{border:1px solid transparent;border-radius:var(--mb-radius-md, .625rem);background:transparent;color:inherit;cursor:pointer}.mb-datepicker-nav{inline-size:2rem;block-size:2rem;font-size:1.4rem}.mb-datepicker-nav:hover,.mb-datepicker-footer button:hover,.mb-datepicker-month:hover,.mb-datepicker-day:hover:not(:disabled){background:var(--mb-color-surface-muted, #f1f5f9)}.mb-datepicker-title{display:flex;gap:.4rem}.mb-datepicker-title select{border:1px solid var(--mb-color-border, #e2e8f0);border-radius:var(--mb-radius-sm, .5rem);background:var(--mb-color-surface, #fff);color:inherit;padding:.25rem .45rem}.mb-datepicker-weekdays,.mb-datepicker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem}.mb-datepicker-weekdays{color:var(--mb-color-muted, #64748b);font-size:.75rem;text-align:center;margin-block-end:.25rem}.mb-datepicker-day{aspect-ratio:1;font-variant-numeric:tabular-nums}.mb-datepicker-day--muted{color:var(--mb-color-muted, #64748b);opacity:.65}.mb-datepicker-day--today{border-color:var(--mb-color-primary, #2563eb)}.mb-datepicker-day--selected{background:var(--mb-color-primary, #2563eb);color:var(--mb-color-primary-contrast, #fff)}.mb-datepicker-day:disabled{opacity:.35;cursor:not-allowed}.mb-datepicker-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.mb-datepicker-month{padding:.6rem .35rem}.mb-datepicker-footer{display:flex;justify-content:space-between;gap:.5rem;margin-block-start:.75rem;border-block-start:1px solid var(--mb-color-border, #e2e8f0);padding-block-start:.75rem}.mb-datepicker-footer button{padding:.45rem .75rem}\n"] }]
|
|
343
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { mode: [{
|
|
344
|
+
type: Input
|
|
345
|
+
}], calendar: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], placeholder: [{
|
|
348
|
+
type: Input
|
|
349
|
+
}], min: [{
|
|
350
|
+
type: Input
|
|
351
|
+
}], max: [{
|
|
352
|
+
type: Input
|
|
353
|
+
}], size: [{
|
|
354
|
+
type: Input
|
|
355
|
+
}], disabled: [{
|
|
356
|
+
type: Input
|
|
357
|
+
}], invalid: [{
|
|
358
|
+
type: Input
|
|
359
|
+
}], clearable: [{
|
|
360
|
+
type: Input
|
|
361
|
+
}], firstDayOfWeek: [{
|
|
362
|
+
type: Input
|
|
363
|
+
}], locale: [{
|
|
364
|
+
type: Input
|
|
365
|
+
}], monthNames: [{
|
|
366
|
+
type: Input
|
|
367
|
+
}], weekdayNames: [{
|
|
368
|
+
type: Input
|
|
369
|
+
}], disabledDates: [{
|
|
370
|
+
type: Input
|
|
371
|
+
}], valueChange: [{
|
|
372
|
+
type: Output
|
|
373
|
+
}], openedChange: [{
|
|
374
|
+
type: Output
|
|
375
|
+
}], hostClass: [{
|
|
376
|
+
type: HostBinding,
|
|
377
|
+
args: ['class']
|
|
378
|
+
}], onDocumentClick: [{
|
|
379
|
+
type: HostListener,
|
|
380
|
+
args: ['document:click', ['$event']]
|
|
381
|
+
}] } });
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RhdGVwaWNrZXIvbWItZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RhdGVwaWNrZXIvbWItZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUNMLHFCQUFxQixFQUdyQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDOztBQWdDakMsTUFBTSxPQUFPLHFCQUFxQjtJQW9DYjtJQUNBO0lBcENWLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUV4QyxJQUFJLEdBQXFCLE1BQU0sQ0FBQztJQUNoQyxRQUFRLEdBQXFCLFdBQVcsQ0FBQztJQUN6QyxXQUFXLENBQVU7SUFDckIsR0FBRyxDQUFVO0lBQ2IsR0FBRyxDQUFVO0lBQ2IsSUFBSSxHQUFXLElBQUks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QUFJLENBQUM7WUFDM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUMzRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDNUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FB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QkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFZSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBaURwQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUJfVUlfTUVTU0FHRVMgfSBmcm9tICcuLi9pMThuL21iLXVpLW1lc3NhZ2VzJztcbmltcG9ydCB7IE1CX1VJX0NPTkZJRywgTWJTaXplIH0gZnJvbSAnLi4vdG9rZW5zL21iLXVpLWNvbmZpZy50b2tlbic7XG5pbXBvcnQge1xuICBNQl9KQUxBTElfTU9OVEhfTkFNRVMsXG4gIE1iR3JlZ29yaWFuRGF0ZSxcbiAgTWJKYWxhbGlEYXRlLFxuICBtYkZvcm1hdEphbGFsaSxcbiAgbWJHcmVnb3JpYW5Ub0phbGFsaSxcbiAgbWJKYWxhbGlNb250aExlbmd0aCxcbiAgbWJKYWxhbGlUb0dyZWdvcmlhbixcbiAgbWJQYXJzZUlzb0RhdGUsXG4gIG1iVG9Jc29EYXRlLFxufSBmcm9tICcuLi91dGlscy9tYi1qYWxhbGktZGF0ZSc7XG5cbmV4cG9ydCB0eXBlIE1iRGF0ZXBpY2tlck1vZGUgPSAnZGF0ZScgfCAnbW9udGgnO1xuZXhwb3J0IHR5cGUgTWJDYWxlbmRhclN5c3RlbSA9ICdncmVnb3JpYW4nIHwgJ2phbGFsaSc7XG5leHBvcnQgdHlwZSBNYkRhdGVWYWx1ZSA9IHN0cmluZyB8IERhdGUgfCBudWxsO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1iQ2FsZW5kYXJEYXkge1xuICBkYXRlOiBEYXRlO1xuICBpc286IHN0cmluZztcbiAgbGFiZWw6IG51bWJlcjtcbiAgY3VycmVudE1vbnRoOiBib29sZWFuO1xuICB0b2RheTogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBqYWxhbGk/OiBNYkphbGFsaURhdGU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21iLWRhdGVwaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdGb3IsIE5nSWZdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWItZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tYi1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYkRhdGVwaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1iRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcmVhZG9ubHkgbWVzc2FnZXMgPSBpbmplY3QoTUJfVUlfTUVTU0FHRVMpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVpQ29uZmlnID0gaW5qZWN0KE1CX1VJX0NPTkZJRyk7XG5cbiAgQElucHV0KCkgbW9kZTogTWJEYXRlcGlja2VyTW9kZSA9ICdkYXRlJztcbiAgQElucHV0KCkgY2FsZW5kYXI6IE1iQ2FsZW5kYXJTeXN0ZW0gPSAnZ3JlZ29yaWFuJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1pbj86IHN0cmluZztcbiAgQElucHV0KCkgbWF4Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBNYlNpemUgPSAnbWQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrOiAwIHwgMSB8IDYgPSAwO1xuICBASW5wdXQoKSBsb2NhbGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1vbnRoTmFtZXM/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgd2Vla2RheU5hbWVzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGRpc2FibGVkRGF0ZXM6IChkYXRlOiBEYXRlKSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvcGVuZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGhvc3RDbGFzcyA9ICdtYi1kYXRlcGlja2VyLWhvc3QnO1xuXG4gIHZhbHVlID0gJyc7XG4gIG9wZW5lZCA9IGZhbHNlO1xuICB2aWV3RGF0ZSA9IHRoaXMuc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpO1xuICB2aWV3SmFsYWxpOiBNYkphbGFsaURhdGUgPSBtYkdyZWdvcmlhblRvSmFsYWxpKHRoaXMudG9HcmVnb3JpYW4obmV3IERhdGUoKSkpO1xuICBkYXlzOiBNYkNhbGVuZGFyRGF5W10gPSBbXTtcbiAgcmVhZG9ubHkgeWVhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAyMSB9LCAoXywgaW5kZXgpID0+IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDEwICsgaW5kZXgpO1xuICByZWFkb25seSBqYWxhbGlZZWFycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDIxIH0sIChfLCBpbmRleCkgPT4gdGhpcy52aWV3SmFsYWxpLnllYXIgLSAxMCArIGluZGV4KTtcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICkge1xuICAgIHRoaXMucmVidWlsZENhbGVuZGFyKCk7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciA/PyB0aGlzLm1lc3NhZ2VzLmRhdGVwaWNrZXIucGxhY2Vob2xkZXI7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxlID8/IHRoaXMudWlDb25maWcubG9jYWxlO1xuICB9XG5cbiAgZ2V0IGVmZmVjdGl2ZVdlZWtkYXlOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMud2Vla2RheU5hbWVzID8/IHRoaXMubWVzc2FnZXMuZGF0ZXBpY2tlci53ZWVrZGF5TmFtZXM7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlR3JlZ29yaWFuTW9udGhOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhOYW1lcyA/PyB0aGlzLm1lc3NhZ2VzLmRhdGVwaWNrZXIubW9udGhOYW1lc0dyZWdvcmlhbjtcbiAgfVxuXG4gIGdldCBhY3RpdmVNb250aE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhciA9PT0gJ2phbGFsaScgPyBNQl9KQUxBTElfTU9OVEhfTkFNRVMgOiB0aGlzLmVmZmVjdGl2ZUdyZWdvcmlhbk1vbnRoTmFtZXM7XG4gIH1cblxuICBnZXQgYWN0aXZlWWVhcnMoKTogbnVtYmVyW10ge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyID09PSAnamFsYWxpJykge1xuICAgICAgY29uc3QgY2VudGVyID0gdGhpcy52aWV3SmFsYWxpLnllYXI7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjEgfSwgKF8sIGluZGV4KSA9PiBjZW50ZXIgLSAxMCArIGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMueWVhcnM7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wZW5lZCAmJiAhdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogTWJEYXRlVmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy50b0lzbyh2YWx1ZSk7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gdGhpcy5zdGFydE9mTW9udGgodmFsdWUpO1xuICAgICAgdGhpcy52aWV3SmFsYWxpID0gbWJHcmVnb3JpYW5Ub0phbGFsaSh0aGlzLnRvR3JlZ29yaWFuKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyAnJztcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VJc28odGhpcy52YWx1ZSk7XG4gICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLnN0YXJ0T2ZNb250aChwYXJzZWQpO1xuICAgICAgICB0aGlzLnZpZXdKYWxhbGkgPSBtYkdyZWdvcmlhblRvSmFsYWxpKHRoaXMudG9HcmVnb3JpYW4ocGFyc2VkKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVidWlsZENhbGVuZGFyKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuZWQgPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xuICAgIHRoaXMub3BlbmVkQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5yZWJ1aWxkQ2FsZW5kYXIoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9wZW5lZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNsZWFyKGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbW1pdCgnJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc2VsZWN0KGRheTogTWJDYWxlbmRhckRheSk6IHZvaWQge1xuICAgIGlmIChkYXkuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbW1pdChkYXkuaXNvKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzZWxlY3RUb2RheSgpOiB2b2lkIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQodG9kYXkpKSB7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gdGhpcy5zdGFydE9mTW9udGgodG9kYXkpO1xuICAgICAgdGhpcy52aWV3SmFsYWxpID0gbWJHcmVnb3JpYW5Ub0phbGFsaSh0aGlzLnRvR3JlZ29yaWFuKHRvZGF5KSk7XG4gICAgICB0aGlzLmNvbW1pdCh0aGlzLnRvSXNvKHRvZGF5KSk7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJldk1vbnRoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyID09PSAnamFsYWxpJykge1xuICAgICAgY29uc3QgbW9udGggPSB0aGlzLnZpZXdKYWxhbGkubW9udGggPT09IDEgPyAxMiA6IHRoaXMudmlld0phbGFsaS5tb250aCAtIDE7XG4gICAgICBjb25zdCB5ZWFyID0gdGhpcy52aWV3SmFsYWxpLm1vbnRoID09PSAxID8gdGhpcy52aWV3SmFsYWxpLnllYXIgLSAxIDogdGhpcy52aWV3SmFsYWxpLnllYXI7XG4gICAgICB0aGlzLnZpZXdKYWxhbGkgPSB7IHllYXIsIG1vbnRoLCBkYXk6IDEgfTtcbiAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLnN0YXJ0T2ZNb250aCh0aGlzLmphbGFsaVRvRGF0ZSh0aGlzLnZpZXdKYWxhbGkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSwgdGhpcy52aWV3RGF0ZS5nZXRNb250aCgpIC0gMSwgMSk7XG4gICAgfVxuICAgIHRoaXMucmVidWlsZENhbGVuZGFyKCk7XG4gIH1cblxuICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXIgPT09ICdqYWxhbGknKSB7XG4gICAgICBjb25zdCBtb250aCA9IHRoaXMudmlld0phbGFsaS5tb250aCA9PT0gMTIgPyAxIDogdGhpcy52aWV3SmFsYWxpLm1vbnRoICsgMTtcbiAgICAgIGNvbnN0IHllYXIgPSB0aGlzLnZpZXdKYWxhbGkubW9udGggPT09IDEyID8gdGhpcy52aWV3SmFsYWxpLnllYXIgKyAxIDogdGhpcy52aWV3SmFsYWxpLnllYXI7XG4gICAgICB0aGlzLnZpZXdKYWxhbGkgPSB7IHllYXIsIG1vbnRoLCBkYXk6IDEgfTtcbiAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLnN0YXJ0T2ZNb250aCh0aGlzLmphbGFsaVRvRGF0ZSh0aGlzLnZpZXdKYWxhbGkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSwgdGhpcy52aWV3RGF0ZS5nZXRNb250aCgpICsgMSwgMSk7XG4gICAgfVxuICAgIHRoaXMucmVidWlsZENhbGVuZGFyKCk7XG4gIH1cblxuICBzZXRNb250aCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbW9udGggPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLmNhbGVuZGFyID09PSAnamFsYWxpJykge1xuICAgICAgdGhpcy52aWV3SmFsYWxpID0geyAuLi50aGlzLnZpZXdKYWxhbGksIG1vbnRoOiBtb250aCArIDEgfTtcbiAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLnN0YXJ0T2ZNb250aCh0aGlzLmphbGFsaVRvRGF0ZSh0aGlzLnZpZXdKYWxhbGkpKTtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgICAgY29uc3QgZ3JlZ29yaWFuID0gbWJKYWxhbGlUb0dyZWdvcmlhbih7IHllYXI6IHRoaXMudmlld0phbGFsaS55ZWFyLCBtb250aDogdGhpcy52aWV3SmFsYWxpLm1vbnRoLCBkYXk6IDEgfSk7XG4gICAgICAgIHRoaXMuY29tbWl0KGAke2dyZWdvcmlhbi55ZWFyfS0ke1N0cmluZyhncmVnb3JpYW4ubW9udGgpLnBhZFN0YXJ0KDIsICcwJyl9YCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCwgMSk7XG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKSB7XG4gICAgICAgIHRoaXMuY29tbWl0KGAke3RoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKX0tJHtTdHJpbmcobW9udGggKyAxKS5wYWRTdGFydCgyLCAnMCcpfWApO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZWJ1aWxkQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIHNldFllYXIodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHllYXIgPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLmNhbGVuZGFyID09PSAnamFsYWxpJykge1xuICAgICAgdGhpcy52aWV3SmFsYWxpID0geyAuLi50aGlzLnZpZXdKYWxhbGksIHllYXIgfTtcbiAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLnN0YXJ0T2ZNb250aCh0aGlzLmphbGFsaVRvRGF0ZSh0aGlzLnZpZXdKYWxhbGkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3RGF0ZSA9IG5ldyBEYXRlKHllYXIsIHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSwgMSk7XG4gICAgfVxuICAgIHRoaXMucmVidWlsZENhbGVuZGFyKCk7XG4gIH1cblxuICBkaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHJldHVybiAnJztcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBpZiAodGhpcy5jYWxlbmRhciA9PT0gJ2phbGFsaScpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gbWJQYXJzZUlzb0RhdGUodGhpcy52YWx1ZS5sZW5ndGggPT09IDcgPyBgJHt0aGlzLnZhbHVlfS0wMWAgOiB0aGlzLnZhbHVlKTtcbiAgICAgICAgaWYgKCFwYXJzZWQpIHJldHVybiB0aGlzLnZhbHVlO1xuICAgICAgICBjb25zdCBqYWxhbGkgPSBtYkdyZWdvcmlhblRvSmFsYWxpKHBhcnNlZCk7XG4gICAgICAgIHJldHVybiBgJHtNQl9KQUxBTElfTU9OVEhfTkFNRVNbamFsYWxpLm1vbnRoIC0gMV19ICR7amFsYWxpLnllYXJ9YDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IFt5ZWFyLCBtb250aF0gPSB0aGlzLnZhbHVlLnNwbGl0KCctJyk7XG4gICAgICByZXR1cm4gYCR7dGhpcy5tb250aE5hbWVzW051bWJlcihtb250aCkgLSAxXSA/PyBtb250aH0gJHt5ZWFyfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUlzbyh0aGlzLnZhbHVlKTtcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuIHRoaXMudmFsdWU7XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhciA9PT0gJ2phbGFsaScpIHtcbiAgICAgIHJldHVybiBtYkZvcm1hdEphbGFsaShtYkdyZWdvcmlhblRvSmFsYWxpKHRoaXMudG9HcmVnb3JpYW4ocGFyc2VkKSkpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5lZmZlY3RpdmVMb2NhbGUsIHsgZGF0ZVN0eWxlOiAnbWVkaXVtJyB9KS5mb3JtYXQocGFyc2VkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGN1cnJlbnRNb250aEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXIgPT09ICdqYWxhbGknID8gdGhpcy52aWV3SmFsYWxpLm1vbnRoIC0gMSA6IHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKTtcbiAgfVxuXG4gIGN1cnJlbnRZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXIgPT09ICdqYWxhbGknID8gdGhpcy52aWV3SmFsYWxpLnllYXIgOiB0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1pdCh2YWx1ZTogc3RyaW5nLCBlbWl0ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICBpZiAoZW1pdCkgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLnJlYnVpbGRDYWxlbmRhcigpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWJ1aWxkQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgdGhpcy5kYXlzID0gdGhpcy5jYWxlbmRhciA9PT0gJ2phbGFsaScgPyB0aGlzLmJ1aWxkSmFsYWxpQ2FsZW5kYXIoKSA6IHRoaXMuYnVpbGRHcmVnb3JpYW5DYWxlbmRhcigpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEdyZWdvcmlhbkNhbGVuZGFyKCk6IE1iQ2FsZW5kYXJEYXlbXSB7XG4gICAgY29uc3QgZmlyc3QgPSB0aGlzLnN0YXJ0T2ZNb250aCh0aGlzLnZpZXdEYXRlKTtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZpcnN0KTtcbiAgICBjb25zdCBvZmZzZXQgPSAoc3RhcnQuZ2V0RGF5KCkgLSB0aGlzLmZpcnN0RGF5T2ZXZWVrICsgNykgJSA3O1xuICAgIHN0YXJ0LnNldERhdGUoc3RhcnQuZ2V0RGF0ZSgpIC0gb2Zmc2V0KTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMucGFyc2VJc28odGhpcy52YWx1ZSk7XG4gICAgY29uc3QgdG9kYXlJc28gPSB0aGlzLnRvSXNvKG5ldyBEYXRlKCkpO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDQyIH0sIChfLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0KTtcbiAgICAgIGRhdGUuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgKyBpbmRleCk7XG4gICAgICBjb25zdCBpc28gPSB0aGlzLnRvSXNvKGRhdGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZSxcbiAgICAgICAgaXNvLFxuICAgICAgICBsYWJlbDogZGF0ZS5nZXREYXRlKCksXG4gICAgICAgIGN1cnJlbnRNb250aDogZGF0ZS5nZXRNb250aCgpID09PSBmaXJzdC5nZXRNb250aCgpLFxuICAgICAgICB0b2RheTogaXNvID09PSB0b2RheUlzbyxcbiAgICAgICAgc2VsZWN0ZWQ6ICEhc2VsZWN0ZWQgJiYgaXNvID09PSB0aGlzLnRvSXNvKHNlbGVjdGVkKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChkYXRlKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSmFsYWxpQ2FsZW5kYXIoKTogTWJDYWxlbmRhckRheVtdIHtcbiAgICBjb25zdCBtb250aCA9IHRoaXMudmlld0phbGFsaS5tb250aDtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy52aWV3SmFsYWxpLnllYXI7XG4gICAgY29uc3QgZmlyc3RHcmVnb3JpYW4gPSB0aGlzLmphbGFsaVRvRGF0ZSh7IHllYXIsIG1vbnRoLCBkYXk6IDEgfSk7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmaXJzdEdyZWdvcmlhbik7XG4gICAgY29uc3Qgb2Zmc2V0ID0gKHN0YXJ0LmdldERheSgpIC0gdGhpcy5maXJzdERheU9mV2VlayArIDcpICUgNztcbiAgICBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIG9mZnNldCk7XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMucGFyc2VJc28odGhpcy52YWx1ZSk7XG4gICAgY29uc3QgdG9kYXlJc28gPSB0aGlzLnRvSXNvKG5ldyBEYXRlKCkpO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDQyIH0sIChfLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0KTtcbiAgICAgIGRhdGUuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgKyBpbmRleCk7XG4gICAgICBjb25zdCBqYWxhbGkgPSBtYkdyZWdvcmlhblRvSmFsYWxpKHRoaXMudG9HcmVnb3JpYW4oZGF0ZSkpO1xuICAgICAgY29uc3QgaXNvID0gdGhpcy50b0lzbyhkYXRlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGUsXG4gICAgICAgIGlzbyxcbiAgICAgICAgbGFiZWw6IGphbGFsaS5kYXksXG4gICAgICAgIGphbGFsaSxcbiAgICAgICAgY3VycmVudE1vbnRoOiBqYWxhbGkubW9udGggPT09IG1vbnRoICYmIGphbGFsaS55ZWFyID09PSB5ZWFyLFxuICAgICAgICB0b2RheTogaXNvID09PSB0b2RheUlzbyxcbiAgICAgICAgc2VsZWN0ZWQ6ICEhc2VsZWN0ZWQgJiYgaXNvID09PSB0aGlzLnRvSXNvKHNlbGVjdGVkKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChkYXRlKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGphbGFsaVRvRGF0ZShkYXRlOiBNYkphbGFsaURhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBncmVnb3JpYW4gPSBtYkphbGFsaVRvR3JlZ29yaWFuKGRhdGUpO1xuICAgIHJldHVybiBuZXcgRGF0ZShncmVnb3JpYW4ueWVhciwgZ3JlZ29yaWFuLm1vbnRoIC0gMSwgZ3JlZ29yaWFuLmRheSk7XG4gIH1cblxuICBwcml2YXRlIHRvR3JlZ29yaWFuKGRhdGU6IERhdGUpOiBNYkdyZWdvcmlhbkRhdGUge1xuICAgIHJldHVybiB7IHllYXI6IGRhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGg6IGRhdGUuZ2V0TW9udGgoKSArIDEsIGRheTogZGF0ZS5nZXREYXRlKCkgfTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNhYmxlZChkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNvID0gdGhpcy50b0lzbyhkYXRlKTtcbiAgICBpZiAodGhpcy5taW4gJiYgaXNvIDwgdGhpcy5taW4pIHJldHVybiB0cnVlO1xuICAgIGlmICh0aGlzLm1heCAmJiBpc28gPiB0aGlzLm1heCkgcmV0dXJuIHRydWU7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXIgPT09ICdqYWxhbGknKSB7XG4gICAgICBjb25zdCBqYWxhbGkgPSBtYkdyZWdvcmlhblRvSmFsYWxpKHRoaXMudG9HcmVnb3JpYW4oZGF0ZSkpO1xuICAgICAgY29uc3QgbW9udGhMZW5ndGggPSBtYkphbGFsaU1vbnRoTGVuZ3RoKGphbGFsaS55ZWFyLCBqYWxhbGkubW9udGgpO1xuICAgICAgaWYgKGphbGFsaS5kYXkgPiBtb250aExlbmd0aCkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMoZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSXNvKHZhbHVlOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnLScpLm1hcChOdW1iZXIpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyIHx8IHBhcnRzLnNvbWUoTnVtYmVyLmlzTmFOKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXkgPSAxXSA9IHBhcnRzO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gIH1cblxuICBwcml2YXRlIHRvSXNvKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtYlRvSXNvRGF0ZSh0aGlzLnRvR3JlZ29yaWFuKGRhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRPZk1vbnRoKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWItZGF0ZXBpY2tlci1zaGVsbFwiIFtjbGFzcy5tYi1kYXRlcGlja2VyLXNoZWxsLS1vcGVuXT1cIm9wZW5lZFwiPlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJtYi1kYXRlcGlja2VyLXRyaWdnZXJcIlxuICAgIFtjbGFzcy5tYi1kYXRlcGlja2VyLXRyaWdnZXItLWludmFsaWRdPVwiaW52YWxpZFwiXG4gICAgW25nQ2xhc3NdPVwiJ21iLWRhdGVwaWNrZXItdHJpZ2dlci0tJyArIHNpemVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYi1kYXRlcGlja2VyLXZhbHVlXCIgW2NsYXNzLm1iLWRhdGVwaWNrZXItdmFsdWUtLXBsYWNlaG9sZGVyXT1cIiF2YWx1ZVwiPnt7IHZhbHVlID8gZGlzcGxheVZhbHVlKCkgOiBlZmZlY3RpdmVQbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm1iLWRhdGVwaWNrZXItYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNsZWFyYWJsZSAmJiB2YWx1ZSAmJiAhZGlzYWJsZWRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJtYi1kYXRlcGlja2VyLWNsZWFyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtZXNzYWdlcy5kYXRlcGlja2VyLmNsZWFyXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIj7DlzwvYnV0dG9uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYi1kYXRlcGlja2VyLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj7wn5OFPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiAqbmdJZj1cIm9wZW5lZFwiIGNsYXNzPVwibWItZGF0ZXBpY2tlci1wYW5lbFwiIHJvbGU9XCJkaWFsb2dcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm1lc3NhZ2VzLmRhdGVwaWNrZXIucGlja0RhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItZGF0ZXBpY2tlci1oZWFkZXJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItZGF0ZXBpY2tlci1uYXZcIiAoY2xpY2spPVwicHJldk1vbnRoKClcIj7igLk8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1kYXRlcGlja2VyLXRpdGxlXCI+XG4gICAgICAgIDxzZWxlY3QgW3ZhbHVlXT1cImN1cnJlbnRNb250aEluZGV4KClcIiAoY2hhbmdlKT1cInNldE1vbnRoKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbW9udGggb2YgYWN0aXZlTW9udGhOYW1lczsgaW5kZXggYXMgbW9udGhJbmRleFwiIFt2YWx1ZV09XCJtb250aEluZGV4XCI+e3sgbW9udGggfX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxzZWxlY3QgW3ZhbHVlXT1cImN1cnJlbnRZZWFyKClcIiAoY2hhbmdlKT1cInNldFllYXIoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB5ZWFyIG9mIGFjdGl2ZVllYXJzXCIgW3ZhbHVlXT1cInllYXJcIj57eyB5ZWFyIH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLWRhdGVwaWNrZXItbmF2XCIgKGNsaWNrKT1cIm5leHRNb250aCgpXCI+4oC6PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ2RhdGUnOyBlbHNlIG1vbnRoUGlja2VyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItZGF0ZXBpY2tlci13ZWVrZGF5c1wiPlxuICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiBlZmZlY3RpdmVXZWVrZGF5TmFtZXNcIj57eyB3ZWVrZGF5IH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItZGF0ZXBpY2tlci1ncmlkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibWItZGF0ZXBpY2tlci1kYXlcIlxuICAgICAgICAgIFtjbGFzcy5tYi1kYXRlcGlja2VyLWRheS0tbXV0ZWRdPVwiIWRheS5jdXJyZW50TW9udGhcIlxuICAgICAgICAgIFtjbGFzcy5tYi1kYXRlcGlja2VyLWRheS0tdG9kYXldPVwiZGF5LnRvZGF5XCJcbiAgICAgICAgICBbY2xhc3MubWItZGF0ZXBpY2tlci1kYXktLXNlbGVjdGVkXT1cImRheS5zZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRheS5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChkYXkpXCI+e3sgZGF5LmxhYmVsIH19PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbW9udGhQaWNrZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItZGF0ZXBpY2tlci1tb250aHNcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgbW9udGggb2YgYWN0aXZlTW9udGhOYW1lczsgaW5kZXggYXMgbW9udGhJbmRleFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLWRhdGVwaWNrZXItbW9udGhcIiAoY2xpY2spPVwic2V0TW9udGgobW9udGhJbmRleClcIj57eyBtb250aCB9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1kYXRlcGlja2VyLWZvb3RlclwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNlbGVjdFRvZGF5KClcIj57eyBtZXNzYWdlcy5kYXRlcGlja2VyLnRvZGF5IH19PC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPnt7IG1lc3NhZ2VzLmNvbW1vbi5jbG9zZSB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';
|
|
3
|
+
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/portal";
|
|
6
|
+
export class MbDialogContainerComponent {
|
|
7
|
+
ariaLabel = 'Dialog';
|
|
8
|
+
width = '560px';
|
|
9
|
+
maxWidth = 'calc(100vw - 2rem)';
|
|
10
|
+
minWidth = '280px';
|
|
11
|
+
portalOutlet;
|
|
12
|
+
hostClass = 'mb-dialog-host';
|
|
13
|
+
attachComponentPortal(portal) {
|
|
14
|
+
return this.portalOutlet.attachComponentPortal(portal);
|
|
15
|
+
}
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbDialogContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbDialogContainerComponent, isStandalone: true, selector: "mb-dialog-container", inputs: { ariaLabel: "ariaLabel", width: "width", maxWidth: "maxWidth", minWidth: "minWidth" }, host: { properties: { "class": "this.hostClass" } }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], ngImport: i0, template: "<section\n class=\"mb-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [style.width]=\"width\"\n [style.max-width]=\"maxWidth\"\n [style.min-width]=\"minWidth\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n", styles: [":host{display:block}.mb-dialog{background:var(--mb-color-surface-elevated);color:var(--mb-color-text);border:1px solid var(--mb-color-border);border-radius:var(--mb-radius-xl);box-shadow:var(--mb-shadow-lg);overflow:hidden;outline:none}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbDialogContainerComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ selector: 'mb-dialog-container', standalone: true, imports: [PortalModule, CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n class=\"mb-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [style.width]=\"width\"\n [style.max-width]=\"maxWidth\"\n [style.min-width]=\"minWidth\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n", styles: [":host{display:block}.mb-dialog{background:var(--mb-color-surface-elevated);color:var(--mb-color-text);border:1px solid var(--mb-color-border);border-radius:var(--mb-radius-xl);box-shadow:var(--mb-shadow-lg);overflow:hidden;outline:none}\n"] }]
|
|
22
|
+
}], propDecorators: { ariaLabel: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], width: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], maxWidth: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], minWidth: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], portalOutlet: [{
|
|
31
|
+
type: ViewChild,
|
|
32
|
+
args: [CdkPortalOutlet, { static: true }]
|
|
33
|
+
}], hostClass: [{
|
|
34
|
+
type: HostBinding,
|
|
35
|
+
args: ['class']
|
|
36
|
+
}] } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZGlhbG9nLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RpYWxvZy9tYi1kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlhbG9nL21iLWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFtQixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVdqRCxNQUFNLE9BQU8sMEJBQTBCO0lBQzVCLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDckIsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUNoQixRQUFRLEdBQUcsb0JBQW9CLENBQUM7SUFDaEMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUUwQixZQUFZLENBQW1CO0lBRS9ELFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUVuRCxxQkFBcUIsQ0FBSSxNQUEwQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQzt3R0FaVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixrUkFNMUIsZUFBZSw4RENuQjVCLGlVQVlBLHVTREpZLFlBQVksa01BQUUsWUFBWTs7NEZBS3pCLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxtQkFHcEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVnRCxZQUFZO3NCQUFqRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXRCLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIENvbXBvbmVudFBvcnRhbCwgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDZGtUcmFwRm9jdXMgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWItZGlhbG9nLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtQb3J0YWxNb2R1bGUsIENka1RyYXBGb2N1c10sXG4gIHRlbXBsYXRlVXJsOiAnLi9tYi1kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21iLWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWJEaWFsb2dDb250YWluZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBhcmlhTGFiZWwgPSAnRGlhbG9nJztcbiAgQElucHV0KCkgd2lkdGggPSAnNTYwcHgnO1xuICBASW5wdXQoKSBtYXhXaWR0aCA9ICdjYWxjKDEwMHZ3IC0gMnJlbSknO1xuICBASW5wdXQoKSBtaW5XaWR0aCA9ICcyODBweCc7XG5cbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcG9ydGFsT3V0bGV0ITogQ2RrUG9ydGFsT3V0bGV0O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAnbWItZGlhbG9nLWhvc3QnO1xuXG4gIGF0dGFjaENvbXBvbmVudFBvcnRhbDxUPihwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPik6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgcmV0dXJuIHRoaXMucG9ydGFsT3V0bGV0LmF0dGFjaENvbXBvbmVudFBvcnRhbChwb3J0YWwpO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBjbGFzcz1cIm1iLWRpYWxvZ1wiXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgY2RrVHJhcEZvY3VzXG4gIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcbiAgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcbiAgW3N0eWxlLm1heC13aWR0aF09XCJtYXhXaWR0aFwiXG4gIFtzdHlsZS5taW4td2lkdGhdPVwibWluV2lkdGhcIj5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
export class MbDialogRef {
|
|
3
|
+
overlayRef;
|
|
4
|
+
closedSubject = new Subject();
|
|
5
|
+
afterClosed$ = this.closedSubject.asObservable();
|
|
6
|
+
constructor(overlayRef) {
|
|
7
|
+
this.overlayRef = overlayRef;
|
|
8
|
+
}
|
|
9
|
+
close(result) {
|
|
10
|
+
if (!this.overlayRef.hasAttached())
|
|
11
|
+
return;
|
|
12
|
+
this.overlayRef.dispose();
|
|
13
|
+
this.closedSubject.next(result);
|
|
14
|
+
this.closedSubject.complete();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZGlhbG9nLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlhbG9nL21iLWRpYWxvZy1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxNQUFNLE9BQU8sV0FBVztJQUtPO0lBSlosYUFBYSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0lBRTNELFlBQVksR0FBb0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUzRixZQUE2QixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUV2RCxLQUFLLENBQUMsTUFBZ0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTztRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIE1iRGlhbG9nUmVmPFRSZXN1bHQgPSB1bmtub3duPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xvc2VkU3ViamVjdCA9IG5ldyBTdWJqZWN0PFRSZXN1bHQgfCB1bmRlZmluZWQ+KCk7XG5cbiAgcmVhZG9ubHkgYWZ0ZXJDbG9zZWQkOiBPYnNlcnZhYmxlPFRSZXN1bHQgfCB1bmRlZmluZWQ+ID0gdGhpcy5jbG9zZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheVJlZjogT3ZlcmxheVJlZikge31cblxuICBjbG9zZShyZXN1bHQ/OiBUUmVzdWx0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkgcmV0dXJuO1xuICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgdGhpcy5jbG9zZWRTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICB0aGlzLmNsb3NlZFN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|