@taiga-ui/addon-mobile 3.56.0 → 3.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-addon-mobile-components-mobile-calendar-dialog.umd.js +10 -2
- package/bundles/taiga-ui-addon-mobile-components-mobile-calendar-dialog.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.js +19 -9
- package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.js +1 -1
- package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js +1 -1
- package/components/mobile-calendar/mobile-calendar.component.d.ts +6 -3
- package/components/mobile-calendar-dialog/mobile-calendar-dialog.component.d.ts +1 -0
- package/esm2015/components/mobile-calendar/mobile-calendar.component.js +20 -10
- package/esm2015/components/mobile-calendar-dialog/mobile-calendar-dialog.component.js +7 -3
- package/esm2015/components/pull-to-refresh/loader-android/loader-android.component.js +1 -1
- package/esm2015/components/sheet/components/sheet/sheet.component.js +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar-dialog.js +6 -2
- package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar-dialog.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar.js +19 -9
- package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-pull-to-refresh.js +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-sheet.js +1 -1
- package/package.json +7 -7
|
@@ -687,7 +687,7 @@
|
|
|
687
687
|
return TuiSheetComponent;
|
|
688
688
|
}());
|
|
689
689
|
TuiSheetComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: TuiSheetComponent, deps: [{ token: TUI_SHEET_SCROLL }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.TUI_IS_IOS }, { token: kit.TUI_MORE_WORD }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
690
|
-
TuiSheetComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiSheetComponent, selector: "tui-sheet", inputs: { item: "item" }, host: { attributes: { "role": "dialog" }, listeners: { "$.class._stuck": "stuck$", "tui-sheet-id": "onId($event.detail)" }, properties: { "attr.aria-labelledby": "id", "class._ios": "isIos", "$.class._stuck": "stuck$" } }, providers: TUI_SHEET_PROVIDERS, viewQueries: [{ propertyName: "sheet", first: true, predicate: ["sheet"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "stopsRefs", predicate: ["stops"], descendants: true }], ngImport: i0__namespace, template: "<div\n class=\"t-bumpers\"\n (click)=\"close()\"\n>\n <div\n *ngFor=\"let stop of item.stops\"\n #stops\n class=\"t-bumper\"\n [style.marginTop]=\"stop\"\n ></div>\n</div>\n<div\n #sheet\n class=\"t-wrapper\"\n [class.t-wrapper_shadow]=\"!item.image\"\n>\n <header\n *ngIf=\"item.image\"\n class=\"t-top\"\n [tuiSheetTop]=\"imageStop\"\n >\n <img\n *polymorpheusOutlet=\"item.image as src; context: context\"\n alt=\"\"\n class=\"t-image\"\n [src]=\"src\"\n />\n </header>\n <section\n #content\n tuiSheetStop\n class=\"t-sheet\"\n >\n <div class=\"t-bar\"></div>\n <tui-sheet-bar>\n <button\n type=\"button\"\n class=\"t-button\"\n [title]=\"moreWord$ | async\"\n (click)=\"scrollTo(stops[1])\"\n ></button>\n </tui-sheet-bar>\n <div class=\"t-content\">\n <h2\n *polymorpheusOutlet=\"item.content as text; context: context\"\n tuiSheetHeading\n class=\"t-heading\"\n >\n {{ text }}\n </h2>\n </div>\n </section>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:0;left:0;bottom:0;right:0;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;top:auto;border-radius:.75rem .75rem 0 0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;box-shadow:0 50vh var(--tui-elevation-01);padding-right:1rem;margin-left:-1rem;transform:scaleX(-1);-webkit-clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0);clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._stuck{scroll-snap-type:none}@supports (-moz-appearance: none){:host{scroll-snap-type:none}}.t-bumpers{display:flex;height:100%}:host-context(.t-wrapper_closeable) .t-bumpers{scroll-snap-stop:always;scroll-snap-align:start;scroll-margin:-1px}.t-bumper{scroll-snap-stop:always;scroll-snap-align:start;height:1rem;width:1rem}.t-wrapper{border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start}.t-wrapper_shadow{box-shadow:var(--tui-shadow)}.t-top{
|
|
690
|
+
TuiSheetComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiSheetComponent, selector: "tui-sheet", inputs: { item: "item" }, host: { attributes: { "role": "dialog" }, listeners: { "$.class._stuck": "stuck$", "tui-sheet-id": "onId($event.detail)" }, properties: { "attr.aria-labelledby": "id", "class._ios": "isIos", "$.class._stuck": "stuck$" } }, providers: TUI_SHEET_PROVIDERS, viewQueries: [{ propertyName: "sheet", first: true, predicate: ["sheet"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "stopsRefs", predicate: ["stops"], descendants: true }], ngImport: i0__namespace, template: "<div\n class=\"t-bumpers\"\n (click)=\"close()\"\n>\n <div\n *ngFor=\"let stop of item.stops\"\n #stops\n class=\"t-bumper\"\n [style.marginTop]=\"stop\"\n ></div>\n</div>\n<div\n #sheet\n class=\"t-wrapper\"\n [class.t-wrapper_shadow]=\"!item.image\"\n>\n <header\n *ngIf=\"item.image\"\n class=\"t-top\"\n [tuiSheetTop]=\"imageStop\"\n >\n <img\n *polymorpheusOutlet=\"item.image as src; context: context\"\n alt=\"\"\n class=\"t-image\"\n [src]=\"src\"\n />\n </header>\n <section\n #content\n tuiSheetStop\n class=\"t-sheet\"\n >\n <div class=\"t-bar\"></div>\n <tui-sheet-bar>\n <button\n type=\"button\"\n class=\"t-button\"\n [title]=\"moreWord$ | async\"\n (click)=\"scrollTo(stops[1])\"\n ></button>\n </tui-sheet-bar>\n <div class=\"t-content\">\n <h2\n *polymorpheusOutlet=\"item.content as text; context: context\"\n tuiSheetHeading\n class=\"t-heading\"\n >\n {{ text }}\n </h2>\n </div>\n </section>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:0;left:0;bottom:0;right:0;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;top:auto;border-radius:.75rem .75rem 0 0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;box-shadow:0 50vh var(--tui-elevation-01);padding-right:1rem;margin-left:-1rem;transform:scaleX(-1);-webkit-clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0);clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._stuck{scroll-snap-type:none}@supports (-moz-appearance: none){:host{scroll-snap-type:none}}.t-bumpers{display:flex;height:100%}:host-context(.t-wrapper_closeable) .t-bumpers{scroll-snap-stop:always;scroll-snap-align:start;scroll-margin:-1px}.t-bumper{scroll-snap-stop:always;scroll-snap-align:start;height:1rem;width:1rem}.t-wrapper{border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start}.t-wrapper_shadow{box-shadow:var(--tui-shadow)}.t-top{position:-webkit-sticky;position:sticky;top:0;border-radius:.8rem .8rem 0 0;box-shadow:var(--tui-shadow);transform:scaleX(-1);overflow:hidden}.t-top._clickthrough{pointer-events:none}:host-context(._overlay:not(._visible)) .t-top{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;transform:scaleX(-1)!important}.t-image{display:block;width:100%}.t-sheet{position:relative;border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start;transform:scaleX(-1)}.t-top:not(._rounded)~.t-sheet .t-bar{border-radius:0}.t-bar{transition-property:border-radius;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:-webkit-sticky;position:sticky;top:0;z-index:1;height:1.5rem;margin-bottom:-1.5rem;border-radius:inherit;background:var(--tui-elevation-01);box-shadow:inset 0 1px #ffffff40}.t-button{position:absolute;top:0;height:1.5rem;width:3rem;padding:0;border:0;opacity:0}.t-content{padding:1rem;margin-top:-1rem;border-radius:inherit;background:var(--tui-elevation-01)}.t-heading{padding-bottom:.5rem;background:var(--tui-elevation-01)}\n"], components: [{ type: TuiSheetBarComponent, selector: "tui-sheet-bar" }, { type: TuiSheetHeadingComponent, selector: "[tuiSheetHeading]" }], directives: [{ type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TuiSheetTopDirective, selector: "[tuiSheetTop]", inputs: ["tuiSheetTop"] }, { type: i5__namespace.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: TuiSheetStopDirective, selector: "[tuiSheetStop]" }], pipes: { "async": i2__namespace.AsyncPipe }, animations: [i1$1.tuiSlideInTop], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
691
691
|
__decorate([
|
|
692
692
|
i3.tuiPure
|
|
693
693
|
], TuiSheetComponent.prototype, "context", null);
|
|
@@ -13,7 +13,7 @@ export declare class TuiMobileCalendarComponent implements AfterViewInit {
|
|
|
13
13
|
readonly cancelWord$: Observable<string>;
|
|
14
14
|
readonly doneWord$: Observable<string>;
|
|
15
15
|
readonly unorderedWeekDays$: TuiInjectionTokenType<typeof TUI_SHORT_WEEK_DAYS>;
|
|
16
|
-
readonly chooseDayOrRangeTexts$: Observable<[string, string]>;
|
|
16
|
+
readonly chooseDayOrRangeTexts$: Observable<[string, string, string]>;
|
|
17
17
|
private readonly duration;
|
|
18
18
|
private readonly ngZone;
|
|
19
19
|
private readonly yearsScrollRef?;
|
|
@@ -22,6 +22,7 @@ export declare class TuiMobileCalendarComponent implements AfterViewInit {
|
|
|
22
22
|
private activeYear;
|
|
23
23
|
private activeMonth;
|
|
24
24
|
single: boolean;
|
|
25
|
+
multi: boolean;
|
|
25
26
|
min: TuiDay;
|
|
26
27
|
max: TuiDay;
|
|
27
28
|
disabledItemHandler: TuiBooleanHandler<TuiDay>;
|
|
@@ -30,7 +31,7 @@ export declare class TuiMobileCalendarComponent implements AfterViewInit {
|
|
|
30
31
|
value: TuiDay | TuiDayRange | readonly TuiDay[] | null;
|
|
31
32
|
readonly years: number[];
|
|
32
33
|
readonly months: TuiMonth[];
|
|
33
|
-
constructor(isIOS: boolean, isE2E: boolean, doc: Document, destroy$: TuiDestroyService, valueChanges: Observable<TuiDayRange | null>, icons: TuiCommonIcons, closeWord$: Observable<string>, cancelWord$: Observable<string>, doneWord$: Observable<string>, unorderedWeekDays$: TuiInjectionTokenType<typeof TUI_SHORT_WEEK_DAYS>, chooseDayOrRangeTexts$: Observable<[string, string]>, duration: number, ngZone: NgZone);
|
|
34
|
+
constructor(isIOS: boolean, isE2E: boolean, doc: Document, destroy$: TuiDestroyService, valueChanges: Observable<TuiDayRange | null>, icons: TuiCommonIcons, closeWord$: Observable<string>, cancelWord$: Observable<string>, doneWord$: Observable<string>, unorderedWeekDays$: TuiInjectionTokenType<typeof TUI_SHORT_WEEK_DAYS>, chooseDayOrRangeTexts$: Observable<[string, string, string]>, duration: number, ngZone: NgZone);
|
|
34
35
|
get yearWidth(): number;
|
|
35
36
|
ngAfterViewInit(): void;
|
|
36
37
|
onClose(): void;
|
|
@@ -44,6 +45,8 @@ export declare class TuiMobileCalendarComponent implements AfterViewInit {
|
|
|
44
45
|
TuiDay,
|
|
45
46
|
TuiDay
|
|
46
47
|
], TuiBooleanHandler<TuiDay>>;
|
|
48
|
+
private isMultiValue;
|
|
49
|
+
private isSingleValue;
|
|
47
50
|
private get initialYear();
|
|
48
51
|
private get initialMonth();
|
|
49
52
|
private getYearsViewportSize;
|
|
@@ -58,5 +61,5 @@ export declare class TuiMobileCalendarComponent implements AfterViewInit {
|
|
|
58
61
|
private monthToYear;
|
|
59
62
|
private getMonthOffset;
|
|
60
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendarComponent, [null, null, null, { self: true; }, null, null, null, null, null, null, null, null, null]>;
|
|
61
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendarComponent, "tui-mobile-calendar", never, { "single": "single"; "min": "min"; "max": "max"; "disabledItemHandler": "disabledItemHandler"; }, { "cancel": "cancel"; "confirm": "confirm"; }, never, never>;
|
|
64
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendarComponent, "tui-mobile-calendar", never, { "single": "single"; "multi": "multi"; "min": "min"; "max": "max"; "disabledItemHandler": "disabledItemHandler"; }, { "cancel": "cancel"; "confirm": "confirm"; }, never, never>;
|
|
62
65
|
}
|
|
@@ -6,6 +6,7 @@ export declare class TuiMobileCalendarDialogComponent {
|
|
|
6
6
|
readonly context: TuiDialogContext<TuiDay | TuiDayRange | readonly TuiDay[], TuiMobileCalendarData | undefined>;
|
|
7
7
|
constructor(context: TuiDialogContext<TuiDay | TuiDayRange | readonly TuiDay[], TuiMobileCalendarData | undefined>);
|
|
8
8
|
get single(): boolean;
|
|
9
|
+
get multi(): boolean;
|
|
9
10
|
get min(): TuiDay;
|
|
10
11
|
get max(): TuiDay;
|
|
11
12
|
get disabledItemHandler(): TuiBooleanHandler<TuiDay>;
|
|
@@ -34,6 +34,7 @@ export class TuiMobileCalendarComponent {
|
|
|
34
34
|
this.activeYear = 0;
|
|
35
35
|
this.activeMonth = 0;
|
|
36
36
|
this.single = true;
|
|
37
|
+
this.multi = false;
|
|
37
38
|
this.min = TUI_FIRST_DAY;
|
|
38
39
|
this.max = TUI_LAST_DAY;
|
|
39
40
|
this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
|
|
@@ -70,20 +71,21 @@ export class TuiMobileCalendarComponent {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
onDayClick(day) {
|
|
73
|
-
var _a, _b;
|
|
74
74
|
if (this.single) {
|
|
75
75
|
this.value = day;
|
|
76
|
-
return;
|
|
77
76
|
}
|
|
78
|
-
if (
|
|
79
|
-
this.value = tuiImmutableUpdateInputDateMulti(
|
|
80
|
-
return;
|
|
77
|
+
else if (this.isMultiValue(this.value)) {
|
|
78
|
+
this.value = tuiImmutableUpdateInputDateMulti(this.value, day);
|
|
81
79
|
}
|
|
82
|
-
if (this.
|
|
80
|
+
else if (this.isSingleValue(this.value)) {
|
|
81
|
+
this.value = new TuiDayRange(day, day);
|
|
82
|
+
}
|
|
83
|
+
else if (this.value instanceof TuiDayRange) {
|
|
84
|
+
this.value = TuiDayRange.sort(this.value.from, day);
|
|
85
|
+
}
|
|
86
|
+
else if (!this.value) {
|
|
83
87
|
this.value = new TuiDayRange(day, day);
|
|
84
|
-
return;
|
|
85
88
|
}
|
|
86
|
-
this.value = TuiDayRange.sort(this.value.from, day);
|
|
87
89
|
}
|
|
88
90
|
getState(index) {
|
|
89
91
|
if (this.isYearActive(index)) {
|
|
@@ -119,6 +121,12 @@ export class TuiMobileCalendarComponent {
|
|
|
119
121
|
setTimeout(() => this.scrollToActiveMonth());
|
|
120
122
|
});
|
|
121
123
|
}
|
|
124
|
+
isMultiValue(day) {
|
|
125
|
+
return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi;
|
|
126
|
+
}
|
|
127
|
+
isSingleValue(day) {
|
|
128
|
+
return day instanceof TuiDay || (day instanceof TuiDayRange && !day.isSingleDay);
|
|
129
|
+
}
|
|
122
130
|
get initialYear() {
|
|
123
131
|
var _a, _b, _c;
|
|
124
132
|
if (!this.value) {
|
|
@@ -230,7 +238,7 @@ export class TuiMobileCalendarComponent {
|
|
|
230
238
|
}
|
|
231
239
|
}
|
|
232
240
|
TuiMobileCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileCalendarComponent, deps: [{ token: TUI_IS_IOS }, { token: TUI_IS_E2E }, { token: DOCUMENT }, { token: TuiDestroyService, self: true }, { token: TUI_VALUE_STREAM }, { token: TUI_COMMON_ICONS }, { token: TUI_CLOSE_WORD }, { token: TUI_CANCEL_WORD }, { token: TUI_DONE_WORD }, { token: TUI_SHORT_WEEK_DAYS }, { token: TUI_CHOOSE_DAY_OR_RANGE_TEXTS }, { token: TUI_ANIMATIONS_DURATION }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
233
|
-
TuiMobileCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileCalendarComponent, selector: "tui-mobile-calendar", inputs: { single: "single", min: "min", max: "max", disabledItemHandler: "disabledItemHandler" }, outputs: { cancel: "cancel", confirm: "confirm" }, host: { properties: { "class._ios": "isIOS" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScrollRef", first: true, predicate: ["yearsScrollRef"], descendants: true }, { propertyName: "monthsScrollRef", first: true, predicate: ["monthsScrollRef"], descendants: true }], ngImport: i0, template: "<header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n shape=\"rounded\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [icon]=\"icons.close\"\n [title]=\"closeWord$ | async\"\n (click)=\"onClose()\"\n ></button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n *ngIf=\"chooseDayOrRangeTexts$ | async as texts\"\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n</header>\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-day\"\n >\n {{ day }}\n </div>\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-primitive-calendar-mobile\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n ></tui-primitive-calendar-mobile>\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;height:100%;font-family:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;color:var(--tui-text-01);-webkit-tap-highlight-color:transparent}.t-header{position:relative;display:flex;align-items:center;height:3.5rem;padding:0 1rem;border-bottom:.5px solid var(--tui-base-03)}:host._ios .t-header{height:2.75rem;border-bottom:none}.t-close{width:1.5rem;height:1.5rem;margin-right:2rem}:host._ios .t-close{display:none}.t-link{margin-left:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-link)}.t-link_close{display:none}:host._ios .t-link{min-width:3.75rem;text-align:right;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:left}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-left:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;height:4.0625rem;background-color:var(--tui-base-01);box-shadow:0 .5px var(--tui-base-03)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;height:4.0625rem}.t-year{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;outline:none;width:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-link);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;height:1.875rem;width:20.75rem;max-width:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{width:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-02)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;height:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-base-03);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._ios .t-months{height:calc(100% - 8.75rem)}.t-month-wrapper{margin:.625rem 0 -.625rem}.t-month{height:2.75rem;line-height:2.75rem;padding-left:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-bottom:.5px solid var(--tui-base-03)}:host._ios .t-month{height:3.125rem;margin:0;border-bottom:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;font-family:inherit;font-size:1.125rem;transition:opacity .2s}:host._ios .t-calendar{font-size:1.0625rem}\n"], components: [{ type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { type: i1.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i3.TuiPrimitiveCalendarMobileComponent, selector: "tui-primitive-calendar-mobile" }], directives: [{ type: i4.TuiRippleDirective, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { type: i5.TuiTouchableDirective, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i6.AsyncPipe, "tuiOrderWeekDays": i1.TuiOrderWeekDaysPipe, "tuiMonth": i1.TuiMonthPipe, "tuiMapper": i7.TuiMapperPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
241
|
+
TuiMobileCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileCalendarComponent, selector: "tui-mobile-calendar", inputs: { single: "single", multi: "multi", min: "min", max: "max", disabledItemHandler: "disabledItemHandler" }, outputs: { cancel: "cancel", confirm: "confirm" }, host: { properties: { "class._ios": "isIOS" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScrollRef", first: true, predicate: ["yearsScrollRef"], descendants: true }, { propertyName: "monthsScrollRef", first: true, predicate: ["monthsScrollRef"], descendants: true }], ngImport: i0, template: "<header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n shape=\"rounded\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [icon]=\"icons.close\"\n [title]=\"closeWord$ | async\"\n (click)=\"onClose()\"\n ></button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n *ngIf=\"chooseDayOrRangeTexts$ | async as texts\"\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts?.[0] : multi ? texts?.[2] : texts?.[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n</header>\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-day\"\n >\n {{ day }}\n </div>\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-primitive-calendar-mobile\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n ></tui-primitive-calendar-mobile>\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;height:100%;font-family:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;color:var(--tui-text-01);-webkit-tap-highlight-color:transparent}.t-header{position:relative;display:flex;align-items:center;height:3.5rem;padding:0 1rem;border-bottom:.5px solid var(--tui-base-03)}:host._ios .t-header{height:2.75rem;border-bottom:none}.t-close{width:1.5rem;height:1.5rem;margin-right:2rem}:host._ios .t-close{display:none}.t-link{margin-left:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-link)}.t-link_close{display:none}:host._ios .t-link{min-width:3.75rem;text-align:right;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:left}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-left:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;height:4.0625rem;background-color:var(--tui-base-01);box-shadow:0 .5px var(--tui-base-03)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;height:4.0625rem}.t-year{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;outline:none;width:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-link);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;height:1.875rem;width:20.75rem;max-width:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{width:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-02)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;height:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-base-03);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._ios .t-months{height:calc(100% - 8.75rem)}.t-month-wrapper{margin:.625rem 0 -.625rem}.t-month{height:2.75rem;line-height:2.75rem;padding-left:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-bottom:.5px solid var(--tui-base-03)}:host._ios .t-month{height:3.125rem;margin:0;border-bottom:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;font-family:inherit;font-size:1.125rem;transition:opacity .2s}:host._ios .t-calendar{font-size:1.0625rem}\n"], components: [{ type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { type: i1.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i3.TuiPrimitiveCalendarMobileComponent, selector: "tui-primitive-calendar-mobile" }], directives: [{ type: i4.TuiRippleDirective, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { type: i5.TuiTouchableDirective, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i6.AsyncPipe, "tuiOrderWeekDays": i1.TuiOrderWeekDaysPipe, "tuiMonth": i1.TuiMonthPipe, "tuiMapper": i7.TuiMapperPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
234
242
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileCalendarComponent, decorators: [{
|
|
235
243
|
type: Component,
|
|
236
244
|
args: [{
|
|
@@ -290,6 +298,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
290
298
|
args: ['monthsScrollRef']
|
|
291
299
|
}], single: [{
|
|
292
300
|
type: Input
|
|
301
|
+
}], multi: [{
|
|
302
|
+
type: Input
|
|
293
303
|
}], min: [{
|
|
294
304
|
type: Input
|
|
295
305
|
}], max: [{
|
|
@@ -301,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
301
311
|
}], confirm: [{
|
|
302
312
|
type: Output
|
|
303
313
|
}] } });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci9tb2JpbGUtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEVBRWpCLFFBQVEsRUFDUixpQkFBaUIsR0FFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUV0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCxlQUFlLEVBQ2YsNkJBQTZCLEVBQzdCLGFBQWEsRUFDYixnQ0FBZ0MsR0FDbkMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBd0MsSUFBSSxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQ0gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixTQUFT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QixRQUFROzBCQUEvQyxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsbUJBQW1COzswQkFFMUIsTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUVwQyxNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBQzlCLE1BQU07MkJBQUMsTUFBTTs0Q0F6REQsY0FBYztzQkFEOUIsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSVYsZUFBZTtzQkFEL0IsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBUTVCLE1BQU07c0JBREwsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJRyxNQUFNO3NCQURkLE1BQU07Z0JBSUUsT0FBTztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgTU9OVEhTX0lOX1lFQVIsXG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfSVNfRTJFLFxuICAgIFRVSV9JU19JT1MsXG4gICAgVFVJX0xBU1RfREFZLFxuICAgIFR1aUJvb2xlYW5IYW5kbGVyLFxuICAgIFR1aURheSxcbiAgICBUdWlEYXlSYW5nZSxcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICBUdWlJbmplY3Rpb25Ub2tlblR5cGUsXG4gICAgVHVpTW9udGgsXG4gICAgdHVpVHlwZWRGcm9tRXZlbnQsXG4gICAgVHVpVHlwZWRNYXBwZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfQU5JTUFUSU9OU19EVVJBVElPTixcbiAgICBUVUlfQ0xPU0VfV09SRCxcbiAgICBUVUlfQ09NTU9OX0lDT05TLFxuICAgIFRVSV9TSE9SVF9XRUVLX0RBWVMsXG4gICAgVHVpQ29tbW9uSWNvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7XG4gICAgVFVJX0NBTkNFTF9XT1JELFxuICAgIFRVSV9DSE9PU0VfREFZX09SX1JBTkdFX1RFWFRTLFxuICAgIFRVSV9ET05FX1dPUkQsXG4gICAgdHVpSW1tdXRhYmxlVXBkYXRlSW5wdXREYXRlTXVsdGksXG59IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHtpZGVudGl0eSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCByYWNlLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRlYm91bmNlVGltZSxcbiAgICBkZWxheSxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIG1lcmdlTWFwLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbiAgICB3aW5kb3dUb2dnbGUsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBSQU5HRSxcbiAgICBTQ1JPTExfREVCT1VOQ0VfVElNRSxcbiAgICBTVEFSVElOR19ZRUFSLFxuICAgIFlFQVJTX0lOX1JPVyxcbn0gZnJvbSAnLi9tb2JpbGUtY2FsZW5kYXIuY29uc3QnO1xuaW1wb3J0IHtcbiAgICBUVUlfTU9CSUxFX0NBTEVOREFSX1BST1ZJREVSUyxcbiAgICBUVUlfVkFMVUVfU1RSRUFNLFxufSBmcm9tICcuL21vYmlsZS1jYWxlbmRhci5wcm92aWRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1tb2JpbGUtY2FsZW5kYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2JpbGUtY2FsZW5kYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLWNhbGVuZGFyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVJTLFxuICAgIGhvc3Q6IHsnW2NsYXNzLl9pb3NdJzogJ2lzSU9TJ30sXG59KVxuZXhwb3J0IGNsYXNzIFR1aU1vYmlsZUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZCgneWVhcnNTY3JvbGxSZWYnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgeWVhcnNTY3JvbGxSZWY/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBAVmlld0NoaWxkKCdtb250aHNTY3JvbGxSZWYnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9udGhzU2Nyb2xsUmVmPzogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2RheSA9IFR1aURheS5jdXJyZW50TG9jYWwoKTtcbiAgICBwcml2YXRlIGFjdGl2ZVllYXIgPSAwO1xuICAgIHByaXZhdGUgYWN0aXZlTW9udGggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBzaW5nbGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBtaW4gPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBtYXggPSBUVUlfTEFTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10+KCk7XG5cbiAgICB2YWx1ZTogVHVpRGF5IHwgVHVpRGF5UmFuZ2UgfCByZWFkb25seSBUdWlEYXlbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgcmVhZG9ubHkgeWVhcnMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IFJBTkdFfSwgKF8sIGkpID0+IGkgKyBTVEFSVElOR19ZRUFSKTtcblxuICAgIHJlYWRvbmx5IG1vbnRocyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtsZW5ndGg6IFJBTkdFICogMTJ9LFxuICAgICAgICAoXywgaSkgPT5cbiAgICAgICAgICAgIG5ldyBUdWlNb250aChcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGkgLyBNT05USFNfSU5fWUVBUikgKyBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgIGkgJSBNT05USFNfSU5fWUVBUixcbiAgICAgICAgICAgICksXG4gICAgKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9JU19JT1MpIHJlYWRvbmx5IGlzSU9TOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19FMkUpIHJlYWRvbmx5IGlzRTJFOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvYzogRG9jdW1lbnQsXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChUdWlEZXN0cm95U2VydmljZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVFVJX1ZBTFVFX1NUUkVBTSkgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPFR1aURheVJhbmdlIHwgbnVsbD4sXG4gICAgICAgIEBJbmplY3QoVFVJX0NPTU1PTl9JQ09OUykgcmVhZG9ubHkgaWNvbnM6IFR1aUNvbW1vbkljb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9DTE9TRV9XT1JEKSByZWFkb25seSBjbG9zZVdvcmQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0NBTkNFTF9XT1JEKSByZWFkb25seSBjYW5jZWxXb3JkJDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICAgICBASW5qZWN0KFRVSV9ET05FX1dPUkQpIHJlYWRvbmx5IGRvbmVXb3JkJDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICAgICBASW5qZWN0KFRVSV9TSE9SVF9XRUVLX0RBWVMpXG4gICAgICAgIHJlYWRvbmx5IHVub3JkZXJlZFdlZWtEYXlzJDogVHVpSW5qZWN0aW9uVG9rZW5UeXBlPHR5cGVvZiBUVUlfU0hPUlRfV0VFS19EQVlTPixcbiAgICAgICAgQEluamVjdChUVUlfQ0hPT1NFX0RBWV9PUl9SQU5HRV9URVhUUylcbiAgICAgICAgcmVhZG9ubHkgY2hvb3NlRGF5T3JSYW5nZVRleHRzJDogT2JzZXJ2YWJsZTxbc3RyaW5nLCBzdHJpbmddPixcbiAgICAgICAgQEluamVjdChUVUlfQU5JTUFUSU9OU19EVVJBVElPTikgcHJpdmF0ZSByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyLFxuICAgICAgICBASW5qZWN0KE5nWm9uZSkgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICApIHtcbiAgICAgICAgdmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgeWVhcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLyBZRUFSU19JTl9ST1c7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSB0aGlzLmluaXRpYWxZZWFyO1xuICAgICAgICB0aGlzLmFjdGl2ZU1vbnRoID0gdGhpcy5pbml0aWFsTW9udGg7XG5cbiAgICAgICAgLy8gVmlydHVhbCBzY3JvbGwgaGFzIG5vdCB5ZXQgcmVuZGVyZWQgaXRlbXMgZXZlbiBpbiBuZ0FmdGVyVmlld0luaXRcbiAgICAgICAgdGhpcy53YWl0U2Nyb2xsZWRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25Db25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRheUNsaWNrKGRheTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNpbmdsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRheTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSAmJiAhKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdHVpSW1tdXRhYmxlVXBkYXRlSW5wdXREYXRlTXVsdGkodGhpcy52YWx1ZSA/PyBbXSwgZGF5KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkgfHwgIXRoaXMudmFsdWU/LmlzU2luZ2xlRGF5KSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IFR1aURheVJhbmdlKGRheSwgZGF5KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IFR1aURheVJhbmdlLnNvcnQodGhpcy52YWx1ZS5mcm9tLCBkYXkpO1xuICAgIH1cblxuICAgIGdldFN0YXRlKGluZGV4OiBudW1iZXIpOiAnYWN0aXZlJyB8ICdhZGphY2VudCcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4IC0gMSkgfHwgdGhpcy5pc1llYXJBY3RpdmUoaW5kZXggKyAxKSkge1xuICAgICAgICAgICAgcmV0dXJuICdhZGphY2VudCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbk1vbnRoQ2hhbmdlKG1vbnRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLy8gU2tpcHBpbmcgaW5pdGlhbCBjYWxsYmFjayB3aGVyZSBpbmRleCA9PT0gMFxuICAgICAgICBpZiAoIW1vbnRoIHx8IHRoaXMuYWN0aXZlTW9udGggPT09IG1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZU1vbnRoID0gbW9udGg7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlWWVhciA9IHRoaXMubW9udGhUb1llYXIobW9udGgpO1xuXG4gICAgICAgIGlmIChhY3RpdmVZZWFyID09PSB0aGlzLmFjdGl2ZVllYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IGFjdGl2ZVllYXI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCk7XG4gICAgfVxuXG4gICAgc2V0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlWWVhciA9PT0geWVhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCArPSB0aGlzLmdldE1vbnRoT2Zmc2V0KHllYXIpO1xuICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSB5ZWFyO1xuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlWWVhcignc21vb3RoJyk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgLy8gRGVsYXkgaXMgcmVxdWlyZWQgdG8gcnVuIG1vbnRocyBzY3JvbGwgaW4gdGhlIG5leHQgZnJhbWUgdG8gcHJldmVudCBmbGlja2VyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgZGlzYWJsZWRJdGVtSGFuZGxlck1hcHBlcjogVHVpVHlwZWRNYXBwZXI8XG4gICAgICAgIFtUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+LCBUdWlEYXksIFR1aURheV0sXG4gICAgICAgIFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT5cbiAgICA+ID0gKGRpc2FibGVkSXRlbUhhbmRsZXIsIG1pbiwgbWF4KSA9PiBpdGVtID0+XG4gICAgICAgIGl0ZW0uZGF5QmVmb3JlKG1pbikgfHxcbiAgICAgICAgKG1heCAhPT0gbnVsbCAmJiBpdGVtLmRheUFmdGVyKG1heCkpIHx8XG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSk7XG5cbiAgICBwcml2YXRlIGdldCBpbml0aWFsWWVhcigpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5LnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5bMF0/LnllYXIgPz8gdGhpcy50b2RheS55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuZnJvbS55ZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxNb250aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5Lm1vbnRoICsgKHRoaXMudG9kYXkueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubW9udGggKyAodGhpcy52YWx1ZS55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWU/LlswXT8ubW9udGggPz8gdGhpcy50b2RheS5tb250aCkgK1xuICAgICAgICAgICAgICAgICgodGhpcy52YWx1ZT8uWzBdPy55ZWFyID8/IHRoaXMudG9kYXkueWVhcikgLSBTVEFSVElOR19ZRUFSKSAqXG4gICAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudmFsdWUuZnJvbS5tb250aCArXG4gICAgICAgICAgICAodGhpcy52YWx1ZS5mcm9tLnllYXIgLSBTVEFSVElOR19ZRUFSKSAqIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRZZWFyc1ZpZXdwb3J0U2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyc1Njcm9sbFJlZj8uZ2V0Vmlld3BvcnRTaXplKCkgfHwgMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZpZXdwb3J0RGltZW5zaW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnllYXJzU2Nyb2xsUmVmPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhdGVJbml0KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnNWaWV3cG9ydFNpemUoKSA+IDAgPyBpZGVudGl0eSA6IGRlbGF5KDIwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0U2Nyb2xsZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnREaW1lbnNpb24oKTtcblxuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uc2Nyb2xsZWRJbmRleENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVsYXkodGhpcy5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlSW5pdCgpLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydERpbWVuc2lvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFllYXJTY3JvbGwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNb250aFNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRZZWFyU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7eWVhcnNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIXllYXJzU2Nyb2xsUmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3VjaHN0YXJ0JCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3RvdWNoc3RhcnQnLFxuICAgICAgICAgICAge3Bhc3NpdmU6IHRydWV9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0b3VjaGVuZCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNsaWNrJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBSZWZyZXNoIGFjdGl2ZVllYXJcbiAgICAgICAgeWVhcnNTY3JvbGxSZWZcbiAgICAgICAgICAgIC5lbGVtZW50U2Nyb2xsZWQoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHNtb290aCBzY3JvbGwgcmVzdWx0aW5nIGZyb20gY2xpY2sgb24gdGhlIGV4YWN0IHllYXJcbiAgICAgICAgICAgICAgICB3aW5kb3dUb2dnbGUodG91Y2hzdGFydCQsICgpID0+IGNsaWNrJCksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoeCA9PiB4KSxcbiAgICAgICAgICAgICAgICAvLyBEZWxheSBpcyByZXF1aXJlZCB0byBydW4gbW9udGhzIHNjcm9sbCBpbiB0aGUgbmV4dCBmcmFtZSB0byBwcmV2ZW50IGZsaWNrZXJcbiAgICAgICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLm1lYXN1cmVTY3JvbGxPZmZzZXQoKSAvIHRoaXMueWVhcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKFlFQVJTX0lOX1JPVyAvIDIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJUSU5HX1lFQVIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoYWN0aXZlWWVhciA9PiBhY3RpdmVZZWFyICE9PSB0aGlzLmFjdGl2ZVllYXIpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYWN0aXZlWWVhciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVNb250aCArPSB0aGlzLmdldE1vbnRoT2Zmc2V0KGFjdGl2ZVllYXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IGFjdGl2ZVllYXI7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBTbW9vdGggc2Nyb2xsIHRvIGFjdGl2ZVllYXIgYWZ0ZXIgc2Nyb2xsaW5nIGlzIGRvbmVcbiAgICAgICAgdG91Y2hzdGFydCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0b3VjaGVuZCQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICByYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9udGhTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHttb250aHNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIW1vbnRoc1Njcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2hzdGFydCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIG1vbnRoc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgbW9udGhzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byB0aGUgY2xvc2VzdCBtb250aCBhZnRlciBzY3JvbGxpbmcgaXMgZG9uZVxuICAgICAgICB0b3VjaHN0YXJ0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRvdWNoZW5kJCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aHNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgnc21vb3RoJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmVZZWFyKGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJyk6IHZvaWQge1xuICAgICAgICB0aGlzLnllYXJzU2Nyb2xsUmVmPy5zY3JvbGxUb0luZGV4KFxuICAgICAgICAgICAgTWF0aC5tYXgodGhpcy5hY3RpdmVZZWFyIC0gU1RBUlRJTkdfWUVBUiAtIDIsIDApLFxuICAgICAgICAgICAgdGhpcy5pc0UyRSA/ICdhdXRvJyA6IGJlaGF2aW9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmVNb250aChiZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IgPSAnYXV0bycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aHNTY3JvbGxSZWY/LnNjcm9sbFRvSW5kZXgoXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vbnRoLFxuICAgICAgICAgICAgdGhpcy5pc0UyRSA/ICdhdXRvJyA6IGJlaGF2aW9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNZZWFyQWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSB0aGlzLmFjdGl2ZVllYXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250aFRvWWVhcihtb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbCgobW9udGggKyAxKSAvIE1PTlRIU19JTl9ZRUFSKSArIFNUQVJUSU5HX1lFQVIgLSAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TW9udGhPZmZzZXQoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyIC0gdGhpcy5hY3RpdmVZZWFyKSAqIE1PTlRIU19JTl9ZRUFSO1xuICAgIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJ0LWhlYWRlclwiPlxuICAgIDxidXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cIlwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19jYW5jZWxcIlxuICAgICAgICBzaGFwZT1cInJvdW5kZWRcIlxuICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgIHR1aVJpcHBsZVxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LWNsb3NlXCJcbiAgICAgICAgW2ljb25dPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICBbdGl0bGVdPVwiY2xvc2VXb3JkJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpTGlua1xuICAgICAgICB0dWlUb3VjaGFibGU9XCJvcGFjaXR5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1saW5rIHQtbGlua19jbG9zZVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgID5cbiAgICAgICAge3sgY2FuY2VsV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxoMlxuICAgICAgICAqbmdJZj1cImNob29zZURheU9yUmFuZ2VUZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgPlxuICAgICAgICB7eyBzaW5nbGUgPyB0ZXh0c1swXSA6IHRleHRzWzFdIH19XG4gICAgPC9oMj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19jb25maXJtXCJcbiAgICAgICAgdHVpTGlua1xuICAgICAgICB0dWlUb3VjaGFibGU9XCJvcGFjaXR5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCJcbiAgICA+XG4gICAgICAgIHt7IGRvbmVXb3JkJCB8IGFzeW5jIH19XG4gICAgPC9idXR0b24+XG48L2hlYWRlcj5cbjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjeWVhcnNTY3JvbGxSZWZcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIGNsYXNzPVwidC15ZWFyc1wiXG4gICAgW2l0ZW1TaXplXT1cInllYXJXaWR0aFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cInQteWVhcnMtd3JhcHBlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBpbmRleCBvZiB5ZWFyc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC15ZWFyXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc3RhdGVdPVwiZ2V0U3RhdGUoaW5kZXgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRZZWFyKGluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGluZGV4IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG48ZGl2IGNsYXNzPVwidC13ZWVrXCI+XG4gICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHVub3JkZXJlZFdlZWtEYXlzJCB8IHR1aU9yZGVyV2Vla0RheXMgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwidC1kYXlcIlxuICAgID5cbiAgICAgICAge3sgZGF5IH19XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjbW9udGhzU2Nyb2xsUmVmXG4gICAgY2xhc3M9XCJ0LW1vbnRoc1wiXG4gICAgKHNjcm9sbGVkSW5kZXhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8c2VjdGlvblxuICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBtb250aCBvZiBtb250aHM7IHRlbXBsYXRlQ2FjaGVTaXplOiAxMFwiXG4gICAgICAgIGNsYXNzPVwidC1tb250aC13cmFwcGVyXCJcbiAgICA+XG4gICAgICAgIDxoMiBjbGFzcz1cInQtbW9udGhcIj57eyBtb250aCB8IHR1aU1vbnRoIHwgYXN5bmMgfX08L2gyPlxuICAgICAgICA8dHVpLXByaW1pdGl2ZS1jYWxlbmRhci1tb2JpbGVcbiAgICAgICAgICAgIGNsYXNzPVwidC1jYWxlbmRhclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyIHwgdHVpTWFwcGVyOiBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyIDogbWluIDogbWF4XCJcbiAgICAgICAgICAgIFttb250aF09XCJtb250aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgID48L3R1aS1wcmltaXRpdmUtY2FsZW5kYXItbW9iaWxlPlxuICAgIDwvc2VjdGlvbj5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuIl19
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci9tb2JpbGUtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEVBRWpCLFFBQVEsRUFDUixpQkFBaUIsR0FFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUV0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCxlQUFlLEVBQ2YsNkJBQTZCLEVBQzdCLGFBQWEsRUFDYixnQ0FBZ0MsR0FDbkMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBd0MsSUFBSSxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQ0gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixTQUFT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UUFIeEIsNkJBQTZCLGlQQ3hFNUMsdTZFQXFGQTs0RkRWYSwwQkFBMEI7a0JBUnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7b0JBQzNDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUUsNkJBQTZCO29CQUN4QyxJQUFJLEVBQUUsRUFBQyxjQUFjLEVBQUUsT0FBTyxFQUFDO2lCQUNsQzs7MEJBK0NRLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsVUFBVTs4QkFDc0IsUUFBUTswQkFBL0MsTUFBTTsyQkFBQyxRQUFROzswQkFDZixJQUFJOzswQkFDSixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBRTFCLE1BQU07MkJBQUMsNkJBQTZCOzswQkFFcEMsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLE1BQU07NENBNURELGNBQWM7c0JBRDlCLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUlWLGVBQWU7c0JBRC9CLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVE1QixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlHLE1BQU07c0JBRGQsTUFBTTtnQkFJRSxPQUFPO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBTFdBWVNfRkFMU0VfSEFORExFUixcbiAgICBNT05USFNfSU5fWUVBUixcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9JU19FMkUsXG4gICAgVFVJX0lTX0lPUyxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheVJhbmdlLFxuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIFR1aUluamVjdGlvblRva2VuVHlwZSxcbiAgICBUdWlNb250aCxcbiAgICB0dWlUeXBlZEZyb21FdmVudCxcbiAgICBUdWlUeXBlZE1hcHBlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9BTklNQVRJT05TX0RVUkFUSU9OLFxuICAgIFRVSV9DTE9TRV9XT1JELFxuICAgIFRVSV9DT01NT05fSUNPTlMsXG4gICAgVFVJX1NIT1JUX1dFRUtfREFZUyxcbiAgICBUdWlDb21tb25JY29ucyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBUVUlfQ0FOQ0VMX1dPUkQsXG4gICAgVFVJX0NIT09TRV9EQVlfT1JfUkFOR0VfVEVYVFMsXG4gICAgVFVJX0RPTkVfV09SRCxcbiAgICB0dWlJbW11dGFibGVVcGRhdGVJbnB1dERhdGVNdWx0aSxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQge2lkZW50aXR5LCBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUsIHJhY2UsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRlbGF5LFxuICAgIGZpbHRlcixcbiAgICBtYXAsXG4gICAgbWVyZ2VNYXAsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVVudGlsLFxuICAgIHdpbmRvd1RvZ2dsZSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIFJBTkdFLFxuICAgIFNDUk9MTF9ERUJPVU5DRV9USU1FLFxuICAgIFNUQVJUSU5HX1lFQVIsXG4gICAgWUVBUlNfSU5fUk9XLFxufSBmcm9tICcuL21vYmlsZS1jYWxlbmRhci5jb25zdCc7XG5pbXBvcnQge1xuICAgIFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVJTLFxuICAgIFRVSV9WQUxVRV9TVFJFQU0sXG59IGZyb20gJy4vbW9iaWxlLWNhbGVuZGFyLnByb3ZpZGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLW1vYmlsZS1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb2JpbGUtY2FsZW5kYXIuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogVFVJX01PQklMRV9DQUxFTkRBUl9QUk9WSURFUlMsXG4gICAgaG9zdDogeydbY2xhc3MuX2lvc10nOiAnaXNJT1MnfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTW9iaWxlQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCd5ZWFyc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSB5ZWFyc1Njcm9sbFJlZj86IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBWaWV3Q2hpbGQoJ21vbnRoc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb250aHNTY3JvbGxSZWY/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvZGF5ID0gVHVpRGF5LmN1cnJlbnRMb2NhbCgpO1xuICAgIHByaXZhdGUgYWN0aXZlWWVhciA9IDA7XG4gICAgcHJpdmF0ZSBhY3RpdmVNb250aCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHNpbmdsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIG11bHRpID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbiA9IFRVSV9GSVJTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiA9IEFMV0FZU19GQUxTRV9IQU5ETEVSO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpRGF5IHwgVHVpRGF5UmFuZ2UgfCByZWFkb25seSBUdWlEYXlbXT4oKTtcblxuICAgIHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdIHwgbnVsbCA9IG51bGw7XG5cbiAgICByZWFkb25seSB5ZWFycyA9IEFycmF5LmZyb20oe2xlbmd0aDogUkFOR0V9LCAoXywgaSkgPT4gaSArIFNUQVJUSU5HX1lFQVIpO1xuXG4gICAgcmVhZG9ubHkgbW9udGhzID0gQXJyYXkuZnJvbShcbiAgICAgICAge2xlbmd0aDogUkFOR0UgKiAxMn0sXG4gICAgICAgIChfLCBpKSA9PlxuICAgICAgICAgICAgbmV3IFR1aU1vbnRoKFxuICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoaSAvIE1PTlRIU19JTl9ZRUFSKSArIFNUQVJUSU5HX1lFQVIsXG4gICAgICAgICAgICAgICAgaSAlIE1PTlRIU19JTl9ZRUFSLFxuICAgICAgICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX0lPUykgcmVhZG9ubHkgaXNJT1M6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX0UyRSkgcmVhZG9ubHkgaXNFMkU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jOiBEb2N1bWVudCxcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkOiBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAgQEluamVjdChUVUlfVkFMVUVfU1RSRUFNKSB2YWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8VHVpRGF5UmFuZ2UgfCBudWxsPixcbiAgICAgICAgQEluamVjdChUVUlfQ09NTU9OX0lDT05TKSByZWFkb25seSBpY29uczogVHVpQ29tbW9uSWNvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX0NMT1NFX1dPUkQpIHJlYWRvbmx5IGNsb3NlV29yZCQ6IE9ic2VydmFibGU8c3RyaW5nPixcbiAgICAgICAgQEluamVjdChUVUlfQ0FOQ0VMX1dPUkQpIHJlYWRvbmx5IGNhbmNlbFdvcmQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0RPTkVfV09SRCkgcmVhZG9ubHkgZG9uZVdvcmQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX1NIT1JUX1dFRUtfREFZUylcbiAgICAgICAgcmVhZG9ubHkgdW5vcmRlcmVkV2Vla0RheXMkOiBUdWlJbmplY3Rpb25Ub2tlblR5cGU8dHlwZW9mIFRVSV9TSE9SVF9XRUVLX0RBWVM+LFxuICAgICAgICBASW5qZWN0KFRVSV9DSE9PU0VfREFZX09SX1JBTkdFX1RFWFRTKVxuICAgICAgICByZWFkb25seSBjaG9vc2VEYXlPclJhbmdlVGV4dHMkOiBPYnNlcnZhYmxlPFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXT4sXG4gICAgICAgIEBJbmplY3QoVFVJX0FOSU1BVElPTlNfRFVSQVRJT04pIHByaXZhdGUgcmVhZG9ubHkgZHVyYXRpb246IG51bWJlcixcbiAgICAgICAgQEluamVjdChOZ1pvbmUpIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgKSB7XG4gICAgICAgIHZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHllYXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gWUVBUlNfSU5fUk9XO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gdGhpcy5pbml0aWFsWWVhcjtcbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCA9IHRoaXMuaW5pdGlhbE1vbnRoO1xuXG4gICAgICAgIC8vIFZpcnR1YWwgc2Nyb2xsIGhhcyBub3QgeWV0IHJlbmRlcmVkIGl0ZW1zIGV2ZW4gaW4gbmdBZnRlclZpZXdJbml0XG4gICAgICAgIHRoaXMud2FpdFNjcm9sbGVkQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uQ29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EYXlDbGljayhkYXk6IFR1aURheSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zaW5nbGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpVmFsdWUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0dWlJbW11dGFibGVVcGRhdGVJbnB1dERhdGVNdWx0aSh0aGlzLnZhbHVlLCBkYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTaW5nbGVWYWx1ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBUdWlEYXlSYW5nZShkYXksIGRheSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uuc29ydCh0aGlzLnZhbHVlLmZyb20sIGRheSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgVHVpRGF5UmFuZ2UoZGF5LCBkYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U3RhdGUoaW5kZXg6IG51bWJlcik6ICdhY3RpdmUnIHwgJ2FkamFjZW50JyB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5pc1llYXJBY3RpdmUoaW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FjdGl2ZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1llYXJBY3RpdmUoaW5kZXggLSAxKSB8fCB0aGlzLmlzWWVhckFjdGl2ZShpbmRleCArIDEpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FkamFjZW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG9uTW9udGhDaGFuZ2UobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBTa2lwcGluZyBpbml0aWFsIGNhbGxiYWNrIHdoZXJlIGluZGV4ID09PSAwXG4gICAgICAgIGlmICghbW9udGggfHwgdGhpcy5hY3RpdmVNb250aCA9PT0gbW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggPSBtb250aDtcblxuICAgICAgICBjb25zdCBhY3RpdmVZZWFyID0gdGhpcy5tb250aFRvWWVhcihtb250aCk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVllYXIgPT09IHRoaXMuYWN0aXZlWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gYWN0aXZlWWVhcjtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoKTtcbiAgICB9XG5cbiAgICBzZXRZZWFyKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVZZWFyID09PSB5ZWFyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZU1vbnRoICs9IHRoaXMuZ2V0TW9udGhPZmZzZXQoeWVhcik7XG4gICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IHllYXI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAvLyBEZWxheSBpcyByZXF1aXJlZCB0byBydW4gbW9udGhzIHNjcm9sbCBpbiB0aGUgbmV4dCBmcmFtZSB0byBwcmV2ZW50IGZsaWNrZXJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyOiBUdWlUeXBlZE1hcHBlcjxcbiAgICAgICAgW1R1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4sIFR1aURheSwgVHVpRGF5XSxcbiAgICAgICAgVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PlxuICAgID4gPSAoZGlzYWJsZWRJdGVtSGFuZGxlciwgbWluLCBtYXgpID0+IGl0ZW0gPT5cbiAgICAgICAgaXRlbS5kYXlCZWZvcmUobWluKSB8fFxuICAgICAgICAobWF4ICE9PSBudWxsICYmIGl0ZW0uZGF5QWZ0ZXIobWF4KSkgfHxcbiAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKTtcblxuICAgIHByaXZhdGUgaXNNdWx0aVZhbHVlKGRheTogYW55KTogZGF5IGlzIHJlYWRvbmx5IFR1aURheVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuICEoZGF5IGluc3RhbmNlb2YgVHVpRGF5KSAmJiAhKGRheSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSAmJiB0aGlzLm11bHRpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTaW5nbGVWYWx1ZShkYXk6IGFueSk6IGRheSBpcyBUdWlEYXkge1xuICAgICAgICByZXR1cm4gZGF5IGluc3RhbmNlb2YgVHVpRGF5IHx8IChkYXkgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSAmJiAhZGF5LmlzU2luZ2xlRGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpbml0aWFsWWVhcigpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5LnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5bMF0/LnllYXIgPz8gdGhpcy50b2RheS55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuZnJvbS55ZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxNb250aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5Lm1vbnRoICsgKHRoaXMudG9kYXkueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubW9udGggKyAodGhpcy52YWx1ZS55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWU/LlswXT8ubW9udGggPz8gdGhpcy50b2RheS5tb250aCkgK1xuICAgICAgICAgICAgICAgICgodGhpcy52YWx1ZT8uWzBdPy55ZWFyID8/IHRoaXMudG9kYXkueWVhcikgLSBTVEFSVElOR19ZRUFSKSAqXG4gICAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudmFsdWUuZnJvbS5tb250aCArXG4gICAgICAgICAgICAodGhpcy52YWx1ZS5mcm9tLnllYXIgLSBTVEFSVElOR19ZRUFSKSAqIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRZZWFyc1ZpZXdwb3J0U2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyc1Njcm9sbFJlZj8uZ2V0Vmlld3BvcnRTaXplKCkgfHwgMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZpZXdwb3J0RGltZW5zaW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnllYXJzU2Nyb2xsUmVmPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhdGVJbml0KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnNWaWV3cG9ydFNpemUoKSA+IDAgPyBpZGVudGl0eSA6IGRlbGF5KDIwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0U2Nyb2xsZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnREaW1lbnNpb24oKTtcblxuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uc2Nyb2xsZWRJbmRleENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVsYXkodGhpcy5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlSW5pdCgpLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydERpbWVuc2lvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFllYXJTY3JvbGwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNb250aFNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRZZWFyU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7eWVhcnNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIXllYXJzU2Nyb2xsUmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3VjaHN0YXJ0JCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3RvdWNoc3RhcnQnLFxuICAgICAgICAgICAge3Bhc3NpdmU6IHRydWV9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0b3VjaGVuZCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNsaWNrJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBSZWZyZXNoIGFjdGl2ZVllYXJcbiAgICAgICAgeWVhcnNTY3JvbGxSZWZcbiAgICAgICAgICAgIC5lbGVtZW50U2Nyb2xsZWQoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHNtb290aCBzY3JvbGwgcmVzdWx0aW5nIGZyb20gY2xpY2sgb24gdGhlIGV4YWN0IHllYXJcbiAgICAgICAgICAgICAgICB3aW5kb3dUb2dnbGUodG91Y2hzdGFydCQsICgpID0+IGNsaWNrJCksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoeCA9PiB4KSxcbiAgICAgICAgICAgICAgICAvLyBEZWxheSBpcyByZXF1aXJlZCB0byBydW4gbW9udGhzIHNjcm9sbCBpbiB0aGUgbmV4dCBmcmFtZSB0byBwcmV2ZW50IGZsaWNrZXJcbiAgICAgICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLm1lYXN1cmVTY3JvbGxPZmZzZXQoKSAvIHRoaXMueWVhcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKFlFQVJTX0lOX1JPVyAvIDIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJUSU5HX1lFQVIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoYWN0aXZlWWVhciA9PiBhY3RpdmVZZWFyICE9PSB0aGlzLmFjdGl2ZVllYXIpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYWN0aXZlWWVhciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVNb250aCArPSB0aGlzLmdldE1vbnRoT2Zmc2V0KGFjdGl2ZVllYXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IGFjdGl2ZVllYXI7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBTbW9vdGggc2Nyb2xsIHRvIGFjdGl2ZVllYXIgYWZ0ZXIgc2Nyb2xsaW5nIGlzIGRvbmVcbiAgICAgICAgdG91Y2hzdGFydCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0b3VjaGVuZCQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICByYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9udGhTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHttb250aHNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIW1vbnRoc1Njcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2hzdGFydCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIG1vbnRoc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgbW9udGhzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byB0aGUgY2xvc2VzdCBtb250aCBhZnRlciBzY3JvbGxpbmcgaXMgZG9uZVxuICAgICAgICB0b3VjaHN0YXJ0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRvdWNoZW5kJCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aHNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgnc21vb3RoJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmVZZWFyKGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJyk6IHZvaWQge1xuICAgICAgICB0aGlzLnllYXJzU2Nyb2xsUmVmPy5zY3JvbGxUb0luZGV4KFxuICAgICAgICAgICAgTWF0aC5tYXgodGhpcy5hY3RpdmVZZWFyIC0gU1RBUlRJTkdfWUVBUiAtIDIsIDApLFxuICAgICAgICAgICAgdGhpcy5pc0UyRSA/ICdhdXRvJyA6IGJlaGF2aW9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmVNb250aChiZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IgPSAnYXV0bycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aHNTY3JvbGxSZWY/LnNjcm9sbFRvSW5kZXgoXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vbnRoLFxuICAgICAgICAgICAgdGhpcy5pc0UyRSA/ICdhdXRvJyA6IGJlaGF2aW9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNZZWFyQWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSB0aGlzLmFjdGl2ZVllYXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250aFRvWWVhcihtb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbCgobW9udGggKyAxKSAvIE1PTlRIU19JTl9ZRUFSKSArIFNUQVJUSU5HX1lFQVIgLSAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TW9udGhPZmZzZXQoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyIC0gdGhpcy5hY3RpdmVZZWFyKSAqIE1PTlRIU19JTl9ZRUFSO1xuICAgIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJ0LWhlYWRlclwiPlxuICAgIDxidXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cIlwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19jYW5jZWxcIlxuICAgICAgICBzaGFwZT1cInJvdW5kZWRcIlxuICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgIHR1aVJpcHBsZVxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LWNsb3NlXCJcbiAgICAgICAgW2ljb25dPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICBbdGl0bGVdPVwiY2xvc2VXb3JkJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpTGlua1xuICAgICAgICB0dWlUb3VjaGFibGU9XCJvcGFjaXR5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1saW5rIHQtbGlua19jbG9zZVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgID5cbiAgICAgICAge3sgY2FuY2VsV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxoMlxuICAgICAgICAqbmdJZj1cImNob29zZURheU9yUmFuZ2VUZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgPlxuICAgICAgICB7eyBzaW5nbGUgPyB0ZXh0cz8uWzBdIDogbXVsdGkgPyB0ZXh0cz8uWzJdIDogdGV4dHM/LlsxXSB9fVxuICAgIDwvaDI+XG4gICAgPGJ1dHRvblxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLW1vYmlsZS1jYWxlbmRhcl9fY29uZmlybVwiXG4gICAgICAgIHR1aUxpbmtcbiAgICAgICAgdHVpVG91Y2hhYmxlPVwib3BhY2l0eVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtbGlua1wiXG4gICAgICAgIChjbGljayk9XCJvbkNvbmZpcm0oKVwiXG4gICAgPlxuICAgICAgICB7eyBkb25lV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuPC9oZWFkZXI+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3llYXJzU2Nyb2xsUmVmXG4gICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICBjbGFzcz1cInQteWVhcnNcIlxuICAgIFtpdGVtU2l6ZV09XCJ5ZWFyV2lkdGhcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJ0LXllYXJzLXdyYXBwZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaW5kZXggb2YgeWVhcnNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQteWVhclwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImdldFN0YXRlKGluZGV4KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0WWVhcihpbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBpbmRleCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPGRpdiBjbGFzcz1cInQtd2Vla1wiPlxuICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB1bm9yZGVyZWRXZWVrRGF5cyQgfCB0dWlPcmRlcldlZWtEYXlzIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInQtZGF5XCJcbiAgICA+XG4gICAgICAgIHt7IGRheSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI21vbnRoc1Njcm9sbFJlZlxuICAgIGNsYXNzPVwidC1tb250aHNcIlxuICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPHNlY3Rpb25cbiAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTBcIlxuICAgICAgICBjbGFzcz1cInQtbW9udGgtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0LW1vbnRoXCI+e3sgbW9udGggfCB0dWlNb250aCB8IGFzeW5jIH19PC9oMj5cbiAgICAgICAgPHR1aS1wcmltaXRpdmUtY2FsZW5kYXItbW9iaWxlXG4gICAgICAgICAgICBjbGFzcz1cInQtY2FsZW5kYXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkSXRlbUhhbmRsZXJdPVwiZGlzYWJsZWRJdGVtSGFuZGxlciB8IHR1aU1hcHBlcjogZGlzYWJsZWRJdGVtSGFuZGxlck1hcHBlciA6IG1pbiA6IG1heFwiXG4gICAgICAgICAgICBbbW9udGhdPVwibW9udGhcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgICAgICA+PC90dWktcHJpbWl0aXZlLWNhbGVuZGFyLW1vYmlsZT5cbiAgICA8L3NlY3Rpb24+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiJdfQ==
|
|
@@ -9,7 +9,11 @@ export class TuiMobileCalendarDialogComponent {
|
|
|
9
9
|
}
|
|
10
10
|
get single() {
|
|
11
11
|
var _a;
|
|
12
|
-
return ((_a = this.context.data) === null || _a === void 0 ? void 0 : _a.single)
|
|
12
|
+
return ((_a = this.context.data) === null || _a === void 0 ? void 0 : _a.single) === true;
|
|
13
|
+
}
|
|
14
|
+
get multi() {
|
|
15
|
+
var _a;
|
|
16
|
+
return ((_a = this.context.data) === null || _a === void 0 ? void 0 : _a.multi) === true;
|
|
13
17
|
}
|
|
14
18
|
get min() {
|
|
15
19
|
var _a;
|
|
@@ -25,7 +29,7 @@ export class TuiMobileCalendarDialogComponent {
|
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
TuiMobileCalendarDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileCalendarDialogComponent, deps: [{ token: POLYMORPHEUS_CONTEXT }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
TuiMobileCalendarDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileCalendarDialogComponent, selector: "tui-mobile-calendar-dialog", ngImport: i0, template: "<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [single]=\"single\"\n (cancel)=\"context.$implicit.complete()\"\n (confirm)=\"context.completeWith($event)\"\n></tui-mobile-calendar>\n", styles: [":host{display:block;height:100vh;margin:-1.5rem -1.5rem -2rem}\n"], components: [{ type: i1.TuiMobileCalendarComponent, selector: "tui-mobile-calendar", inputs: ["single", "min", "max", "disabledItemHandler"], outputs: ["cancel", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
32
|
+
TuiMobileCalendarDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileCalendarDialogComponent, selector: "tui-mobile-calendar-dialog", ngImport: i0, template: "<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [multi]=\"multi\"\n [single]=\"single\"\n (cancel)=\"context.$implicit.complete()\"\n (confirm)=\"context.completeWith($event)\"\n></tui-mobile-calendar>\n", styles: [":host{display:block;height:100vh;margin:-1.5rem -1.5rem -2rem}\n"], components: [{ type: i1.TuiMobileCalendarComponent, selector: "tui-mobile-calendar", inputs: ["single", "multi", "min", "max", "disabledItemHandler"], outputs: ["cancel", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileCalendarDialogComponent, decorators: [{
|
|
30
34
|
type: Component,
|
|
31
35
|
args: [{
|
|
@@ -38,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
38
42
|
type: Inject,
|
|
39
43
|
args: [POLYMORPHEUS_CONTEXT]
|
|
40
44
|
}] }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1tb2JpbGUvY29tcG9uZW50cy9tb2JpbGUtY2FsZW5kYXItZGlhbG9nL21vYmlsZS1jYWxlbmRhci1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyLWRpYWxvZy9tb2JpbGUtY2FsZW5kYXItZGlhbG9nLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUNILG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsWUFBWSxHQUlmLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7QUFROUQsTUFBTSxPQUFPLGdDQUFnQztJQUN6QyxZQUVhLE9BR1I7UUFIUSxZQUFPLEdBQVAsT0FBTyxDQUdmO0lBQ0YsQ0FBQztJQUVKLElBQUksTUFBTTs7UUFDTixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksMENBQUUsTUFBTSxNQUFLLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxLQUFLOztRQUNMLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSwwQ0FBRSxLQUFLLE1BQUssSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLEdBQUc7O1FBQ0gsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLDBDQUFFLEdBQUcsS0FBSSxhQUFhLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksR0FBRzs7UUFDSCxPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksMENBQUUsR0FBRyxLQUFJLFlBQVksQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7O1FBQ25CLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSwwQ0FBRSxtQkFBbUIsS0FBSSxvQkFBb0IsQ0FBQztJQUMxRSxDQUFDOzs4SEEzQlEsZ0NBQWdDLGtCQUU3QixvQkFBb0I7a0hBRnZCLGdDQUFnQyxrRUNuQjdDLHlSQVNBOzRGRFVhLGdDQUFnQztrQkFONUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUsd0NBQXdDO29CQUNyRCxTQUFTLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztvQkFDbEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFHUSxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheVJhbmdlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpRGlhbG9nQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlNb2JpbGVDYWxlbmRhckRhdGF9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHtQT0xZTU9SUEhFVVNfQ09OVEVYVH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktbW9iaWxlLWNhbGVuZGFyLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS1jYWxlbmRhci1kaWFsb2cudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLWNhbGVuZGFyLWRpYWxvZy5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aU1vYmlsZUNhbGVuZGFyRGlhbG9nQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChQT0xZTU9SUEhFVVNfQ09OVEVYVClcbiAgICAgICAgcmVhZG9ubHkgY29udGV4dDogVHVpRGlhbG9nQ29udGV4dDxcbiAgICAgICAgICAgIFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10sXG4gICAgICAgICAgICBUdWlNb2JpbGVDYWxlbmRhckRhdGEgfCB1bmRlZmluZWRcbiAgICAgICAgPixcbiAgICApIHt9XG5cbiAgICBnZXQgc2luZ2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRhdGE/LnNpbmdsZSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXQgbXVsdGkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuZGF0YT8ubXVsdGkgPT09IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IG1pbigpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRhdGE/Lm1pbiB8fCBUVUlfRklSU1RfREFZO1xuICAgIH1cblxuICAgIGdldCBtYXgoKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5kYXRhPy5tYXggfHwgVFVJX0xBU1RfREFZO1xuICAgIH1cblxuICAgIGdldCBkaXNhYmxlZEl0ZW1IYW5kbGVyKCk6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRhdGE/LmRpc2FibGVkSXRlbUhhbmRsZXIgfHwgQUxXQVlTX0ZBTFNFX0hBTkRMRVI7XG4gICAgfVxufVxuIiwiPHR1aS1tb2JpbGUtY2FsZW5kYXJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICBbbWF4XT1cIm1heFwiXG4gICAgW21pbl09XCJtaW5cIlxuICAgIFttdWx0aV09XCJtdWx0aVwiXG4gICAgW3NpbmdsZV09XCJzaW5nbGVcIlxuICAgIChjYW5jZWwpPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgKGNvbmZpcm0pPVwiY29udGV4dC5jb21wbGV0ZVdpdGgoJGV2ZW50KVwiXG4+PC90dWktbW9iaWxlLWNhbGVuZGFyPlxuIl19
|
|
@@ -31,7 +31,7 @@ export class TuiMobileLoaderAndroidComponent {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
TuiMobileLoaderAndroidComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileLoaderAndroidComponent, deps: [{ token: POLYMORPHEUS_CONTEXT }, { token: TUI_PULL_TO_REFRESH_THRESHOLD }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
TuiMobileLoaderAndroidComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileLoaderAndroidComponent, selector: "tui-mobile-android-loader", host: { properties: { "class._visible": "this.percent", "class._dropped": "this.dropped", "style.transform": "this.hostTransform" } }, ngImport: i0, template: "<div class=\"t-wrapper\">\n <svg\n *ngIf=\"percent !== 100; else loading\"\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n</div>\n<ng-template #loading>\n <svg\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-loading\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"50\"\n stroke-dasharray=\"314\"\n class=\"t-circle\"\n ></circle>\n </svg>\n</ng-template>\n", styles: [":host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:-webkit-sticky;position:sticky;top:0;z-index:1;display:block;height:0;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-wrapper{
|
|
34
|
+
TuiMobileLoaderAndroidComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileLoaderAndroidComponent, selector: "tui-mobile-android-loader", host: { properties: { "class._visible": "this.percent", "class._dropped": "this.dropped", "style.transform": "this.hostTransform" } }, ngImport: i0, template: "<div class=\"t-wrapper\">\n <svg\n *ngIf=\"percent !== 100; else loading\"\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n</div>\n<ng-template #loading>\n <svg\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-loading\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"50\"\n stroke-dasharray=\"314\"\n class=\"t-circle\"\n ></circle>\n </svg>\n</ng-template>\n", styles: [":host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:-webkit-sticky;position:sticky;top:0;z-index:1;display:block;height:0;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-wrapper{position:absolute;top:-2.5rem;left:50%;display:flex;box-shadow:var(--tui-shadow-dropdown);height:2.25rem;width:2.25rem;background-color:var(--tui-secondary);border-radius:6.25rem;align-items:center;justify-content:center;margin-left:-1.125rem}.t-loading{display:block;width:1rem;border-radius:100%;animation:tuiLoaderRotate 3s linear infinite}.t-circle{fill:none;stroke:var(--tui-text-01);stroke-width:1.5rem;animation:tuiLoaderDashOffset 3s linear infinite}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileLoaderAndroidComponent, decorators: [{
|
|
36
36
|
type: Component,
|
|
37
37
|
args: [{
|
|
@@ -70,7 +70,7 @@ export class TuiSheetComponent {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
TuiSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiSheetComponent, deps: [{ token: TUI_SHEET_SCROLL }, { token: ElementRef }, { token: NgZone }, { token: TUI_IS_IOS }, { token: TUI_MORE_WORD }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
TuiSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiSheetComponent, selector: "tui-sheet", inputs: { item: "item" }, host: { attributes: { "role": "dialog" }, listeners: { "$.class._stuck": "stuck$", "tui-sheet-id": "onId($event.detail)" }, properties: { "attr.aria-labelledby": "id", "class._ios": "isIos", "$.class._stuck": "stuck$" } }, providers: TUI_SHEET_PROVIDERS, viewQueries: [{ propertyName: "sheet", first: true, predicate: ["sheet"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "stopsRefs", predicate: ["stops"], descendants: true }], ngImport: i0, template: "<div\n class=\"t-bumpers\"\n (click)=\"close()\"\n>\n <div\n *ngFor=\"let stop of item.stops\"\n #stops\n class=\"t-bumper\"\n [style.marginTop]=\"stop\"\n ></div>\n</div>\n<div\n #sheet\n class=\"t-wrapper\"\n [class.t-wrapper_shadow]=\"!item.image\"\n>\n <header\n *ngIf=\"item.image\"\n class=\"t-top\"\n [tuiSheetTop]=\"imageStop\"\n >\n <img\n *polymorpheusOutlet=\"item.image as src; context: context\"\n alt=\"\"\n class=\"t-image\"\n [src]=\"src\"\n />\n </header>\n <section\n #content\n tuiSheetStop\n class=\"t-sheet\"\n >\n <div class=\"t-bar\"></div>\n <tui-sheet-bar>\n <button\n type=\"button\"\n class=\"t-button\"\n [title]=\"moreWord$ | async\"\n (click)=\"scrollTo(stops[1])\"\n ></button>\n </tui-sheet-bar>\n <div class=\"t-content\">\n <h2\n *polymorpheusOutlet=\"item.content as text; context: context\"\n tuiSheetHeading\n class=\"t-heading\"\n >\n {{ text }}\n </h2>\n </div>\n </section>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:0;left:0;bottom:0;right:0;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;top:auto;border-radius:.75rem .75rem 0 0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;box-shadow:0 50vh var(--tui-elevation-01);padding-right:1rem;margin-left:-1rem;transform:scaleX(-1);-webkit-clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0);clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._stuck{scroll-snap-type:none}@supports (-moz-appearance: none){:host{scroll-snap-type:none}}.t-bumpers{display:flex;height:100%}:host-context(.t-wrapper_closeable) .t-bumpers{scroll-snap-stop:always;scroll-snap-align:start;scroll-margin:-1px}.t-bumper{scroll-snap-stop:always;scroll-snap-align:start;height:1rem;width:1rem}.t-wrapper{border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start}.t-wrapper_shadow{box-shadow:var(--tui-shadow)}.t-top{
|
|
73
|
+
TuiSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiSheetComponent, selector: "tui-sheet", inputs: { item: "item" }, host: { attributes: { "role": "dialog" }, listeners: { "$.class._stuck": "stuck$", "tui-sheet-id": "onId($event.detail)" }, properties: { "attr.aria-labelledby": "id", "class._ios": "isIos", "$.class._stuck": "stuck$" } }, providers: TUI_SHEET_PROVIDERS, viewQueries: [{ propertyName: "sheet", first: true, predicate: ["sheet"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "stopsRefs", predicate: ["stops"], descendants: true }], ngImport: i0, template: "<div\n class=\"t-bumpers\"\n (click)=\"close()\"\n>\n <div\n *ngFor=\"let stop of item.stops\"\n #stops\n class=\"t-bumper\"\n [style.marginTop]=\"stop\"\n ></div>\n</div>\n<div\n #sheet\n class=\"t-wrapper\"\n [class.t-wrapper_shadow]=\"!item.image\"\n>\n <header\n *ngIf=\"item.image\"\n class=\"t-top\"\n [tuiSheetTop]=\"imageStop\"\n >\n <img\n *polymorpheusOutlet=\"item.image as src; context: context\"\n alt=\"\"\n class=\"t-image\"\n [src]=\"src\"\n />\n </header>\n <section\n #content\n tuiSheetStop\n class=\"t-sheet\"\n >\n <div class=\"t-bar\"></div>\n <tui-sheet-bar>\n <button\n type=\"button\"\n class=\"t-button\"\n [title]=\"moreWord$ | async\"\n (click)=\"scrollTo(stops[1])\"\n ></button>\n </tui-sheet-bar>\n <div class=\"t-content\">\n <h2\n *polymorpheusOutlet=\"item.content as text; context: context\"\n tuiSheetHeading\n class=\"t-heading\"\n >\n {{ text }}\n </h2>\n </div>\n </section>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:0;left:0;bottom:0;right:0;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;top:auto;border-radius:.75rem .75rem 0 0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;box-shadow:0 50vh var(--tui-elevation-01);padding-right:1rem;margin-left:-1rem;transform:scaleX(-1);-webkit-clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0);clip-path:inset(0 1rem 0 0 round .75rem .75rem 0 0)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:transparent;width:0;height:0}:host._stuck{scroll-snap-type:none}@supports (-moz-appearance: none){:host{scroll-snap-type:none}}.t-bumpers{display:flex;height:100%}:host-context(.t-wrapper_closeable) .t-bumpers{scroll-snap-stop:always;scroll-snap-align:start;scroll-margin:-1px}.t-bumper{scroll-snap-stop:always;scroll-snap-align:start;height:1rem;width:1rem}.t-wrapper{border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start}.t-wrapper_shadow{box-shadow:var(--tui-shadow)}.t-top{position:-webkit-sticky;position:sticky;top:0;border-radius:.8rem .8rem 0 0;box-shadow:var(--tui-shadow);transform:scaleX(-1);overflow:hidden}.t-top._clickthrough{pointer-events:none}:host-context(._overlay:not(._visible)) .t-top{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;transform:scaleX(-1)!important}.t-image{display:block;width:100%}.t-sheet{position:relative;border-radius:inherit;scroll-snap-stop:always;scroll-snap-align:start;transform:scaleX(-1)}.t-top:not(._rounded)~.t-sheet .t-bar{border-radius:0}.t-bar{transition-property:border-radius;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:-webkit-sticky;position:sticky;top:0;z-index:1;height:1.5rem;margin-bottom:-1.5rem;border-radius:inherit;background:var(--tui-elevation-01);box-shadow:inset 0 1px #ffffff40}.t-button{position:absolute;top:0;height:1.5rem;width:3rem;padding:0;border:0;opacity:0}.t-content{padding:1rem;margin-top:-1rem;border-radius:inherit;background:var(--tui-elevation-01)}.t-heading{padding-bottom:.5rem;background:var(--tui-elevation-01)}\n"], components: [{ type: i1.TuiSheetBarComponent, selector: "tui-sheet-bar" }, { type: i2.TuiSheetHeadingComponent, selector: "[tuiSheetHeading]" }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiSheetTopDirective, selector: "[tuiSheetTop]", inputs: ["tuiSheetTop"] }, { type: i5.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i6.TuiSheetStopDirective, selector: "[tuiSheetStop]" }], pipes: { "async": i3.AsyncPipe }, animations: [tuiSlideInTop], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
74
74
|
__decorate([
|
|
75
75
|
tuiPure
|
|
76
76
|
], TuiSheetComponent.prototype, "context", null);
|
|
@@ -12,7 +12,11 @@ class TuiMobileCalendarDialogComponent {
|
|
|
12
12
|
}
|
|
13
13
|
get single() {
|
|
14
14
|
var _a;
|
|
15
|
-
return ((_a = this.context.data) === null || _a === void 0 ? void 0 : _a.single)
|
|
15
|
+
return ((_a = this.context.data) === null || _a === void 0 ? void 0 : _a.single) === true;
|
|
16
|
+
}
|
|
17
|
+
get multi() {
|
|
18
|
+
var _a;
|
|
19
|
+
return ((_a = this.context.data) === null || _a === void 0 ? void 0 : _a.multi) === true;
|
|
16
20
|
}
|
|
17
21
|
get min() {
|
|
18
22
|
var _a;
|
|
@@ -28,7 +32,7 @@ class TuiMobileCalendarDialogComponent {
|
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
34
|
TuiMobileCalendarDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileCalendarDialogComponent, deps: [{ token: POLYMORPHEUS_CONTEXT }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
-
TuiMobileCalendarDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileCalendarDialogComponent, selector: "tui-mobile-calendar-dialog", ngImport: i0, template: "<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [single]=\"single\"\n (cancel)=\"context.$implicit.complete()\"\n (confirm)=\"context.completeWith($event)\"\n></tui-mobile-calendar>\n", styles: [":host{display:block;height:100vh;margin:-1.5rem -1.5rem -2rem}\n"], components: [{ type: i1.TuiMobileCalendarComponent, selector: "tui-mobile-calendar", inputs: ["single", "min", "max", "disabledItemHandler"], outputs: ["cancel", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35
|
+
TuiMobileCalendarDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiMobileCalendarDialogComponent, selector: "tui-mobile-calendar-dialog", ngImport: i0, template: "<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [multi]=\"multi\"\n [single]=\"single\"\n (cancel)=\"context.$implicit.complete()\"\n (confirm)=\"context.completeWith($event)\"\n></tui-mobile-calendar>\n", styles: [":host{display:block;height:100vh;margin:-1.5rem -1.5rem -2rem}\n"], components: [{ type: i1.TuiMobileCalendarComponent, selector: "tui-mobile-calendar", inputs: ["single", "multi", "min", "max", "disabledItemHandler"], outputs: ["cancel", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
32
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiMobileCalendarDialogComponent, decorators: [{
|
|
33
37
|
type: Component,
|
|
34
38
|
args: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-dialog.js","sources":["../../../projects/addon-mobile/components/mobile-calendar-dialog/mobile-calendar-dialog.component.ts","../../../projects/addon-mobile/components/mobile-calendar-dialog/mobile-calendar-dialog.template.html","../../../projects/addon-mobile/components/mobile-calendar-dialog/mobile-calendar-dialog.module.ts","../../../projects/addon-mobile/components/mobile-calendar-dialog/taiga-ui-addon-mobile-components-mobile-calendar-dialog.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {\n ALWAYS_FALSE_HANDLER,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDay,\n TuiDayRange,\n} from '@taiga-ui/cdk';\nimport {TuiDialogContext} from '@taiga-ui/core';\nimport {TuiMobileCalendarData} from '@taiga-ui/kit';\nimport {POLYMORPHEUS_CONTEXT} from '@tinkoff/ng-polymorpheus';\n\n@Component({\n selector: 'tui-mobile-calendar-dialog',\n templateUrl: './mobile-calendar-dialog.template.html',\n styleUrls: ['./mobile-calendar-dialog.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileCalendarDialogComponent {\n constructor(\n @Inject(POLYMORPHEUS_CONTEXT)\n readonly context: TuiDialogContext<\n TuiDay | TuiDayRange | readonly TuiDay[],\n TuiMobileCalendarData | undefined\n >,\n ) {}\n\n get single(): boolean {\n return this.context.data?.single
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-dialog.js","sources":["../../../projects/addon-mobile/components/mobile-calendar-dialog/mobile-calendar-dialog.component.ts","../../../projects/addon-mobile/components/mobile-calendar-dialog/mobile-calendar-dialog.template.html","../../../projects/addon-mobile/components/mobile-calendar-dialog/mobile-calendar-dialog.module.ts","../../../projects/addon-mobile/components/mobile-calendar-dialog/taiga-ui-addon-mobile-components-mobile-calendar-dialog.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {\n ALWAYS_FALSE_HANDLER,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDay,\n TuiDayRange,\n} from '@taiga-ui/cdk';\nimport {TuiDialogContext} from '@taiga-ui/core';\nimport {TuiMobileCalendarData} from '@taiga-ui/kit';\nimport {POLYMORPHEUS_CONTEXT} from '@tinkoff/ng-polymorpheus';\n\n@Component({\n selector: 'tui-mobile-calendar-dialog',\n templateUrl: './mobile-calendar-dialog.template.html',\n styleUrls: ['./mobile-calendar-dialog.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileCalendarDialogComponent {\n constructor(\n @Inject(POLYMORPHEUS_CONTEXT)\n readonly context: TuiDialogContext<\n TuiDay | TuiDayRange | readonly TuiDay[],\n TuiMobileCalendarData | undefined\n >,\n ) {}\n\n get single(): boolean {\n return this.context.data?.single === true;\n }\n\n get multi(): boolean {\n return this.context.data?.multi === true;\n }\n\n get min(): TuiDay {\n return this.context.data?.min || TUI_FIRST_DAY;\n }\n\n get max(): TuiDay {\n return this.context.data?.max || TUI_LAST_DAY;\n }\n\n get disabledItemHandler(): TuiBooleanHandler<TuiDay> {\n return this.context.data?.disabledItemHandler || ALWAYS_FALSE_HANDLER;\n }\n}\n","<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [multi]=\"multi\"\n [single]=\"single\"\n (cancel)=\"context.$implicit.complete()\"\n (confirm)=\"context.completeWith($event)\"\n></tui-mobile-calendar>\n","import {NgModule} from '@angular/core';\nimport {TuiMobileCalendarModule} from '@taiga-ui/addon-mobile/components/mobile-calendar';\nimport {TUI_MOBILE_CALENDAR} from '@taiga-ui/kit';\n\nimport {TuiMobileCalendarDialogComponent} from './mobile-calendar-dialog.component';\n\n@NgModule({\n imports: [TuiMobileCalendarModule],\n declarations: [TuiMobileCalendarDialogComponent],\n providers: [\n {\n provide: TUI_MOBILE_CALENDAR,\n useValue: TuiMobileCalendarDialogComponent,\n },\n ],\n exports: [TuiMobileCalendarDialogComponent],\n})\nexport class TuiMobileCalendarDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|