@yoozsoft/yoozsoft-ng 1.3.2-alpha.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -9
- package/datepicker/public-api.d.ts +2 -0
- package/datepicker/src/ys-datepicker/ys-datepicker.component.d.ts +32 -0
- package/datepicker/src/ys-datepicker-persian/ys-datepicker-persian.component.d.ts +38 -0
- package/datepicker/src/ys-datepicker-popup/ys-datepicker-popup.component.d.ts +3 -2
- package/datepicker/src/ys-datepicker-popup-persian/ys-datepicker-popup-persian.component.d.ts +3 -2
- package/datepicker/src/ys-datepicker-range-popup/ys-datepicker-range-popup.component.d.ts +3 -2
- package/datepicker/src/ys-datepicker-range-popup-persian/ys-datepicker-range-popup-persian.component.d.ts +3 -2
- package/directives/src/password-mismatch/password-mismatch.directive.d.ts +1 -1
- package/esm2022/datepicker/public-api.mjs +3 -1
- package/esm2022/datepicker/src/models/jalali-date.mjs +2 -3
- package/esm2022/datepicker/src/services/ys-date-parser-formatter.service.mjs +5 -6
- package/esm2022/datepicker/src/services/ys-datepicker-i18n.service.mjs +10 -12
- package/esm2022/datepicker/src/ys-datepicker/ys-datepicker.component.mjs +108 -0
- package/esm2022/datepicker/src/ys-datepicker-persian/ys-datepicker-persian.component.mjs +127 -0
- package/esm2022/datepicker/src/ys-datepicker-popup/ys-datepicker-popup.component.mjs +12 -10
- package/esm2022/datepicker/src/ys-datepicker-popup-persian/ys-datepicker-popup-persian.component.mjs +12 -10
- package/esm2022/datepicker/src/ys-datepicker-range-popup/ys-datepicker-range-popup.component.mjs +12 -10
- package/esm2022/datepicker/src/ys-datepicker-range-popup-persian/ys-datepicker-range-popup-persian.component.mjs +12 -10
- package/esm2022/directives/src/password-mismatch/password-mismatch.directive.mjs +5 -6
- package/esm2022/footer/src/ys-footer/ys-footer.component.mjs +5 -6
- package/esm2022/layout/src/ys-layout/ys-layout.component.mjs +6 -7
- package/esm2022/loading/src/ys-loading-mask/ys-loading-mask.component.mjs +5 -6
- package/esm2022/navbar/src/ys-navbar/ys-navbar.component.mjs +7 -8
- package/esm2022/overlay/src/ys-overlay/ys-overlay.component.mjs +6 -7
- package/esm2022/progress/src/services/progress.service.mjs +5 -6
- package/esm2022/progress/src/ys-progress/ys-progress.component.mjs +6 -7
- package/esm2022/select/src/ys-select/ys-select.component.mjs +5 -6
- package/esm2022/sidebar/src/services/sidebar.service.mjs +5 -6
- package/esm2022/sidebar/src/ys-sidebar/ys-sidebar.component.mjs +7 -8
- package/esm2022/toasts/src/services/toast.service.mjs +5 -6
- package/esm2022/toasts/src/ys-toasts/ys-toasts.component.mjs +8 -9
- package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs +269 -40
- package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs +3 -3
- package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs +3 -3
- package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-layout.mjs +4 -4
- package/fesm2022/yoozsoft-yoozsoft-ng-layout.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs +3 -3
- package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs +5 -5
- package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs +4 -4
- package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs +7 -7
- package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs +3 -3
- package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs +8 -8
- package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs.map +1 -1
- package/fesm2022/yoozsoft-yoozsoft-ng-toasts.mjs +9 -9
- package/fesm2022/yoozsoft-yoozsoft-ng-toasts.mjs.map +1 -1
- package/footer/src/ys-footer/ys-footer.component.d.ts +1 -1
- package/layout/src/ys-layout/ys-layout.component.d.ts +1 -1
- package/loading/src/ys-loading-mask/ys-loading-mask.component.d.ts +1 -1
- package/navbar/src/ys-navbar/ys-navbar.component.d.ts +1 -1
- package/overlay/src/ys-overlay/ys-overlay.component.d.ts +1 -1
- package/package.json +15 -15
- package/progress/src/ys-progress/ys-progress.component.d.ts +1 -1
- package/select/src/ys-select/ys-select.component.d.ts +1 -1
- package/sidebar/src/ys-sidebar/ys-sidebar.component.d.ts +1 -1
- package/toasts/src/ys-toasts/ys-toasts.component.d.ts +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { JsonPipe, NgIf } from '@angular/common';
|
|
2
|
+
import { Component, Input, forwardRef, inject } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { NgbCalendar, NgbCalendarPersian, NgbDateParserFormatter, NgbDatepickerI18n, NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { JalaliDate } from '../models';
|
|
6
|
+
import { I18n, LanguageType, YsDateParserFormatterService, YsDatepickerI18nService } from '../services';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../services";
|
|
9
|
+
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
10
|
+
import * as i3 from "@angular/forms";
|
|
11
|
+
export class YsDatepickerPersianComponent {
|
|
12
|
+
get language() {
|
|
13
|
+
return this._language;
|
|
14
|
+
}
|
|
15
|
+
set language(value) {
|
|
16
|
+
this._language = value;
|
|
17
|
+
this.i18N.language = this._language;
|
|
18
|
+
}
|
|
19
|
+
get value() {
|
|
20
|
+
return this._value;
|
|
21
|
+
}
|
|
22
|
+
set value(val) {
|
|
23
|
+
this._value = val;
|
|
24
|
+
}
|
|
25
|
+
constructor(i18N) {
|
|
26
|
+
this.i18N = i18N;
|
|
27
|
+
this.calendar = inject(NgbCalendar);
|
|
28
|
+
this.today = inject(NgbCalendar).getToday();
|
|
29
|
+
this.firstDayOfWeek = 6;
|
|
30
|
+
this.weekend = [5];
|
|
31
|
+
this._language = LanguageType[LanguageType.fa];
|
|
32
|
+
this.isFooter = true;
|
|
33
|
+
this.todayLabel = "امروز";
|
|
34
|
+
this.footer = null;
|
|
35
|
+
this._value = null;
|
|
36
|
+
this.disabled = false;
|
|
37
|
+
this.onChange = () => { };
|
|
38
|
+
this.onTouched = () => { };
|
|
39
|
+
this.markDisabled = (date, current) => date.month !== current?.month;
|
|
40
|
+
this.isWeekend = (date) => this.weekend.includes(this.calendar.getWeekday(date));
|
|
41
|
+
this.language = LanguageType[LanguageType.fa];
|
|
42
|
+
}
|
|
43
|
+
writeValue(obj) {
|
|
44
|
+
if (!obj) {
|
|
45
|
+
this.value = null;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
var date = obj;
|
|
49
|
+
let persianDate = JalaliDate.gregorianToJalali(date.getFullYear(), date.getMonth() + 1, date.getDate());
|
|
50
|
+
this.value = { year: persianDate[0], month: persianDate[1], day: persianDate[2] };
|
|
51
|
+
}
|
|
52
|
+
registerOnChange(fn) {
|
|
53
|
+
this.onChange = fn;
|
|
54
|
+
}
|
|
55
|
+
registerOnTouched(fn) {
|
|
56
|
+
this.onTouched = fn;
|
|
57
|
+
}
|
|
58
|
+
setDisabledState(isDisabled) {
|
|
59
|
+
this.disabled = isDisabled;
|
|
60
|
+
}
|
|
61
|
+
valueChanged(newDate) {
|
|
62
|
+
if (newDate) {
|
|
63
|
+
if (typeof newDate == 'string') {
|
|
64
|
+
let temp = newDate.split('/');
|
|
65
|
+
let convertedDate = JalaliDate.jalaliToGregorian(+temp[0], (+temp[1]) - 1, +temp[2]);
|
|
66
|
+
let res = new Date(+convertedDate[0], (+convertedDate[1]) - 1, +convertedDate[2]);
|
|
67
|
+
this.onChange(res);
|
|
68
|
+
this.onTouched(res);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
let convertedDate = JalaliDate.jalaliToGregorian(newDate.year, newDate.month, newDate.day);
|
|
72
|
+
var res = new Date(+convertedDate[0], +convertedDate[1] - 1, +convertedDate[2]);
|
|
73
|
+
this.onChange(res);
|
|
74
|
+
this.onTouched(res);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.onChange(null);
|
|
79
|
+
this.onTouched(null);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
setToday() {
|
|
83
|
+
this.value = this.today;
|
|
84
|
+
this.valueChanged(this.value);
|
|
85
|
+
}
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerPersianComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: YsDatepickerPersianComponent, isStandalone: true, selector: "ys-datepicker-persian", inputs: { firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", todayLabel: "todayLabel", footer: "footer", disabled: "disabled" }, providers: [
|
|
88
|
+
{
|
|
89
|
+
provide: NG_VALUE_ACCESSOR,
|
|
90
|
+
useExisting: forwardRef(() => YsDatepickerPersianComponent),
|
|
91
|
+
multi: true
|
|
92
|
+
},
|
|
93
|
+
I18n,
|
|
94
|
+
{ provide: NgbCalendar, useClass: NgbCalendarPersian },
|
|
95
|
+
{ provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
|
|
96
|
+
{ provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
|
|
97
|
+
], ngImport: i0, template: "<ngb-datepicker #dp [(ngModel)]=\"value\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n [footerTemplate]=\"footerTemplate\" placeholder=\"yyyy/mm/dd\" [disabled]=\"disabled\" (ngModelChange)=\"valueChanged(value)\" />\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\" [class.bg-primary]=\"selected\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday();\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.custom-day:hover,.custom-day.focused{background-color:var(--bs-gray-300)}.hidden{display:none}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "component", type: i2.NgbDatepicker, selector: "ngb-datepicker", inputs: ["contentTemplate", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekNumbers", "startDate", "weekdays"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerPersianComponent, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{ selector: 'ys-datepicker-persian', standalone: true, imports: [NgbDatepickerModule, FormsModule, JsonPipe, NgIf], providers: [
|
|
102
|
+
{
|
|
103
|
+
provide: NG_VALUE_ACCESSOR,
|
|
104
|
+
useExisting: forwardRef(() => YsDatepickerPersianComponent),
|
|
105
|
+
multi: true
|
|
106
|
+
},
|
|
107
|
+
I18n,
|
|
108
|
+
{ provide: NgbCalendar, useClass: NgbCalendarPersian },
|
|
109
|
+
{ provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
|
|
110
|
+
{ provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
|
|
111
|
+
], template: "<ngb-datepicker #dp [(ngModel)]=\"value\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n [footerTemplate]=\"footerTemplate\" placeholder=\"yyyy/mm/dd\" [disabled]=\"disabled\" (ngModelChange)=\"valueChanged(value)\" />\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\" [class.bg-primary]=\"selected\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday();\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.custom-day:hover,.custom-day.focused{background-color:var(--bs-gray-300)}.hidden{display:none}\n"] }]
|
|
112
|
+
}], ctorParameters: () => [{ type: i1.I18n }], propDecorators: { firstDayOfWeek: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], weekend: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], language: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], isFooter: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], todayLabel: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], footer: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], disabled: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}] } });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1wZXJzaWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2RhdGVwaWNrZXIvc3JjL3lzLWRhdGVwaWNrZXItcGVyc2lhbi95cy1kYXRlcGlja2VyLXBlcnNpYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1wZXJzaWFuL3lzLWRhdGVwaWNrZXItcGVyc2lhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFXLHNCQUFzQixFQUFpQixpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBb0J4RyxNQUFNLE9BQU8sNEJBQTRCO0lBU3ZDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJ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QUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JDYWxlbmRhclBlcnNpYW4sIE5nYkRhdGUsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVTdHJ1Y3QsIE5nYkRhdGVwaWNrZXJJMThuLCBOZ2JEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBKYWxhbGlEYXRlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSTE4biwgTGFuZ3VhZ2VUeXBlLCBZc0RhdGVQYXJzZXJGb3JtYXR0ZXJTZXJ2aWNlLCBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAneXMtZGF0ZXBpY2tlci1wZXJzaWFuJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtOZ2JEYXRlcGlja2VyTW9kdWxlLCBGb3Jtc01vZHVsZSwgSnNvblBpcGUsIE5nSWZdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi95cy1kYXRlcGlja2VyLXBlcnNpYW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3lzLWRhdGVwaWNrZXItcGVyc2lhbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gWXNEYXRlcGlja2VyUGVyc2lhbkNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgSTE4bixcclxuICAgIHsgcHJvdmlkZTogTmdiQ2FsZW5kYXIsIHVzZUNsYXNzOiBOZ2JDYWxlbmRhclBlcnNpYW4gfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCB1c2VDbGFzczogWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWXNEYXRlcGlja2VyUGVyc2lhbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xyXG4gIHRvZGF5ID0gaW5qZWN0KE5nYkNhbGVuZGFyKS5nZXRUb2RheSgpO1xyXG5cclxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB3ZWVrZW5kOiBudW1iZXJbXSA9IFs1XTtcclxuXHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZyA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZmFdO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG4gIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5pMThOLmxhbmd1YWdlID0gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBpc0Zvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdG9kYXlMYWJlbDogc3RyaW5nID0gXCLYp9mF2LHZiNiyXCI7XHJcbiAgQElucHV0KCkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF92YWx1ZTogTmdiRGF0ZVN0cnVjdCB8IG51bGwgPSBudWxsO1xyXG4gIGdldCB2YWx1ZSgpOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZSh2YWw6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfVxyXG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4TjogSTE4bikge1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZmFdO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZGF0ZTogRGF0ZSA9IG9iajtcclxuICAgIGxldCBwZXJzaWFuRGF0ZTogbnVtYmVyW10gPSBKYWxhbGlEYXRlLmdyZWdvcmlhblRvSmFsYWxpKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpICsgMSwgZGF0ZS5nZXREYXRlKCkpO1xyXG4gICAgdGhpcy52YWx1ZSA9IHsgeWVhcjogcGVyc2lhbkRhdGVbMF0sIG1vbnRoOiBwZXJzaWFuRGF0ZVsxXSwgZGF5OiBwZXJzaWFuRGF0ZVsyXSB9O1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBtYXJrRGlzYWJsZWQgPSAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudD86IHsgbW9udGg6IG51bWJlcjsgeWVhcjogbnVtYmVyIH0pID0+IGRhdGUubW9udGggIT09IGN1cnJlbnQ/Lm1vbnRoO1xyXG4gIGlzV2Vla2VuZCA9IChkYXRlOiBOZ2JEYXRlKSA9PiB0aGlzLndlZWtlbmQuaW5jbHVkZXModGhpcy5jYWxlbmRhci5nZXRXZWVrZGF5KGRhdGUpKTtcclxuXHJcbiAgdmFsdWVDaGFuZ2VkKG5ld0RhdGU6IE5nYkRhdGVTdHJ1Y3QgfCBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAobmV3RGF0ZSkge1xyXG4gICAgICBpZiAodHlwZW9mIG5ld0RhdGUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBsZXQgdGVtcCA9IG5ld0RhdGUuc3BsaXQoJy8nKTtcclxuICAgICAgICBsZXQgY29udmVydGVkRGF0ZTogbnVtYmVyW10gPSBKYWxhbGlEYXRlLmphbGFsaVRvR3JlZ29yaWFuKCt0ZW1wWzBdLCAoK3RlbXBbMV0pIC0gMSwgK3RlbXBbMl0pO1xyXG4gICAgICAgIGxldCByZXM6IERhdGUgPSBuZXcgRGF0ZSgrY29udmVydGVkRGF0ZVswXSwgKCtjb252ZXJ0ZWREYXRlWzFdKSAtIDEsICtjb252ZXJ0ZWREYXRlWzJdKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHJlcyk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQocmVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgY29udmVydGVkRGF0ZTogbnVtYmVyW10gPSBKYWxhbGlEYXRlLmphbGFsaVRvR3JlZ29yaWFuKG5ld0RhdGUueWVhciwgbmV3RGF0ZS5tb250aCwgbmV3RGF0ZS5kYXkpO1xyXG4gICAgICAgIHZhciByZXM6IERhdGUgPSBuZXcgRGF0ZSgrY29udmVydGVkRGF0ZVswXSwgK2NvbnZlcnRlZERhdGVbMV0gLSAxLCArY29udmVydGVkRGF0ZVsyXSk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShyZXMpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VG9kYXkoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy50b2RheTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nYi1kYXRlcGlja2VyICNkcCBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCIgW2RheVRlbXBsYXRlXT1cImN1c3RvbURheVwiXHJcbiAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQodmFsdWUpXCIgLz5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRGF5IGxldC1kYXRlIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCJcclxuICAgIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLndlZWtlbmRdPVwiaXNXZWVrZW5kKGRhdGUpXCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5iZy1wcmltYXJ5XT1cInNlbGVjdGVkXCJcclxuICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImRhdGUubW9udGggIT09IGN1cnJlbnRNb250aFwiIFtjbGFzcy50ZXh0LW11dGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICA8c3BhbiAqbmdJZj1cImlzRm9vdGVyXCI+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAge3tmb290ZXJ9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFmb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXN0YXJ0XCIgKGNsaWNrKT1cInNldFRvZGF5KCk7XCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPnt7dG9kYXlMYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
import * as i1 from "../services";
|
|
8
8
|
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
9
9
|
import * as i3 from "@angular/forms";
|
|
10
|
-
class YsDatepickerPopupComponent {
|
|
10
|
+
export class YsDatepickerPopupComponent {
|
|
11
11
|
get value() {
|
|
12
12
|
return this._value;
|
|
13
13
|
}
|
|
@@ -26,7 +26,7 @@ class YsDatepickerPopupComponent {
|
|
|
26
26
|
this.calendar = inject(NgbCalendar);
|
|
27
27
|
this.today = inject(NgbCalendar).getToday();
|
|
28
28
|
this._value = null;
|
|
29
|
-
this.container =
|
|
29
|
+
this.container = null;
|
|
30
30
|
this.firstDayOfWeek = 1;
|
|
31
31
|
this.weekend = [6, 7];
|
|
32
32
|
this._language = LanguageType[LanguageType.en];
|
|
@@ -34,6 +34,7 @@ class YsDatepickerPopupComponent {
|
|
|
34
34
|
this.closeLabel = "Close";
|
|
35
35
|
this.todayLabel = "Today";
|
|
36
36
|
this.footer = null;
|
|
37
|
+
this.calendarIconClass = "fa-solid fa-calendar-days";
|
|
37
38
|
this.disabled = false;
|
|
38
39
|
this.onChange = () => { };
|
|
39
40
|
this.onTouched = () => { };
|
|
@@ -81,8 +82,8 @@ class YsDatepickerPopupComponent {
|
|
|
81
82
|
this.value = this.today;
|
|
82
83
|
this.valueChanged(this.value);
|
|
83
84
|
}
|
|
84
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerPopupComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: YsDatepickerPopupComponent, isStandalone: true, selector: "ys-datepicker-popup", inputs: { container: "container", firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", closeLabel: "closeLabel", todayLabel: "todayLabel", footer: "footer", calendarIconClass: "calendarIconClass", disabled: "disabled" }, providers: [
|
|
86
87
|
{
|
|
87
88
|
provide: NG_VALUE_ACCESSOR,
|
|
88
89
|
useExisting: forwardRef(() => YsDatepickerPopupComponent),
|
|
@@ -91,10 +92,9 @@ class YsDatepickerPopupComponent {
|
|
|
91
92
|
I18n,
|
|
92
93
|
{ provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
|
|
93
94
|
{ provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
|
|
94
|
-
], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"
|
|
95
|
+
], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\" [class.bg-primary]=\"selected\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.custom-day:hover,.custom-day.focused{background-color:var(--bs-gray-300)}.hidden{display:none}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
95
96
|
}
|
|
96
|
-
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsDatepickerPopupComponent, decorators: [{
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerPopupComponent, decorators: [{
|
|
98
98
|
type: Component,
|
|
99
99
|
args: [{ selector: 'ys-datepicker-popup', standalone: true, imports: [NgbDatepickerModule, FormsModule, JsonPipe, NgIf], providers: [
|
|
100
100
|
{
|
|
@@ -105,8 +105,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
105
105
|
I18n,
|
|
106
106
|
{ provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
|
|
107
107
|
{ provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
|
|
108
|
-
], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"
|
|
109
|
-
}], ctorParameters:
|
|
108
|
+
], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\" [class.bg-primary]=\"selected\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.custom-day:hover,.custom-day.focused{background-color:var(--bs-gray-300)}.hidden{display:none}\n"] }]
|
|
109
|
+
}], ctorParameters: () => [{ type: i1.I18n }], propDecorators: { container: [{
|
|
110
110
|
type: Input
|
|
111
111
|
}], firstDayOfWeek: [{
|
|
112
112
|
type: Input
|
|
@@ -122,7 +122,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
122
122
|
type: Input
|
|
123
123
|
}], footer: [{
|
|
124
124
|
type: Input
|
|
125
|
+
}], calendarIconClass: [{
|
|
126
|
+
type: Input
|
|
125
127
|
}], disabled: [{
|
|
126
128
|
type: Input
|
|
127
129
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95b296c29mdC95b296c29mdC1uZy9kYXRlcGlja2VyL3NyYy95cy1kYXRlcGlja2VyLXBvcHVwL3lzLWRhdGVwaWNrZXItcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1wb3B1cC95cy1kYXRlcGlja2VyLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQVcsc0JBQXNCLEVBQWlCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakosT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBRXhHLE1BaUJhLDBCQUEwQjtJQU1yQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEdBQXlCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFNRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElB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QUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDJCQUEyQixDQUFDOzRCQUN6RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxJQUFJO3dCQUNKLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTt3QkFDakUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFO3FCQUM1RTsyRkFlUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdGLFFBQVE7c0JBRFgsS0FBSztnQkFTRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiRGF0ZSwgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgTmdiRGF0ZVN0cnVjdCwgTmdiRGF0ZXBpY2tlckkxOG4sIE5nYkRhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEkxOG4sIExhbmd1YWdlVHlwZSwgWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSwgWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3lzLWRhdGVwaWNrZXItcG9wdXAnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nYkRhdGVwaWNrZXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBKc29uUGlwZSwgTmdJZl0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3lzLWRhdGVwaWNrZXItcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3lzLWRhdGVwaWNrZXItcG9wdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFlzRGF0ZXBpY2tlclBvcHVwQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IFlzRGF0ZXBpY2tlckkxOG5TZXJ2aWNlIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBZc0RhdGVQYXJzZXJGb3JtYXR0ZXJTZXJ2aWNlIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBZc0RhdGVwaWNrZXJQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xyXG4gIHRvZGF5ID0gaW5qZWN0KE5nYkNhbGVuZGFyKS5nZXRUb2RheSgpO1xyXG5cclxuICBfdmFsdWU6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsID0gbnVsbDtcclxuICBnZXQgdmFsdWUoKTogTmdiRGF0ZVN0cnVjdCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBjb250YWluZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHdlZWtlbmQ6IG51bWJlcltdID0gWzYsIDddO1xyXG4gIHByaXZhdGUgX2xhbmd1YWdlOiBzdHJpbmcgPSBMYW5ndWFnZVR5cGVbTGFuZ3VhZ2VUeXBlLmVuXTtcclxuICBASW5wdXQoKVxyXG4gIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuICBzZXQgbGFuZ3VhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fbGFuZ3VhZ2UgPSB2YWx1ZTtcclxuICAgIHRoaXMuaTE4Ti5sYW5ndWFnZSA9IHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgaXNGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWw6IHN0cmluZyA9IFwiQ2xvc2VcIjtcclxuICBASW5wdXQoKSB0b2RheUxhYmVsOiBzdHJpbmcgPSBcIlRvZGF5XCI7XHJcbiAgQElucHV0KCkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfVxyXG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4TjogSTE4bikge1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZW5dO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZGF0ZTogRGF0ZSA9IG9iajtcclxuICAgIHRoaXMudmFsdWUgPSB7IHllYXI6IGRhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGg6IChkYXRlLmdldE1vbnRoKCkgKyAxKSwgZGF5OiBkYXRlLmdldERhdGUoKSB9O1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBtYXJrRGlzYWJsZWQgPSAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudD86IHsgbW9udGg6IG51bWJlcjsgeWVhcjogbnVtYmVyIH0pID0+IGRhdGUubW9udGggIT09IGN1cnJlbnQ/Lm1vbnRoO1xyXG4gIGlzV2Vla2VuZCA9IChkYXRlOiBOZ2JEYXRlKSA9PiB0aGlzLndlZWtlbmQuaW5jbHVkZXModGhpcy5jYWxlbmRhci5nZXRXZWVrZGF5KGRhdGUpKTtcclxuXHJcbiAgdmFsdWVDaGFuZ2VkKG5ld0RhdGU6IE5nYkRhdGVTdHJ1Y3QgfCBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAobmV3RGF0ZSkge1xyXG4gICAgICBpZiAodHlwZW9mIG5ld0RhdGUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBsZXQgdGVtcCA9IG5ld0RhdGUuc3BsaXQoJy8nKTtcclxuICAgICAgICBsZXQgcmVzOiBEYXRlID0gbmV3IERhdGUoK3RlbXBbMF0sICgrdGVtcFsxXSkgLSAxLCArdGVtcFsyXSk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShyZXMpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHJlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHJlczogRGF0ZSA9IG5ldyBEYXRlKG5ld0RhdGUueWVhciwgbmV3RGF0ZS5tb250aCAtIDEsIG5ld0RhdGUuZGF5KTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHJlcyk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUb2RheSgpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRvZGF5O1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZWQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cInJvdyByb3ctY29scy1zbS1hdXRvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwieXl5eS9tbS9kZFwiIG5hbWU9XCJkcFwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjZGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIiBbY29udGFpbmVyXT1cImNvbnRhaW5lclwiIFttYXJrRGlzYWJsZWRdPVwibWFya0Rpc2FibGVkXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiIFtkYXlUZW1wbGF0ZV09XCJjdXN0b21EYXlcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKHZhbHVlKVwiIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNhbGVuZGFyLWRheXNcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRGF5IGxldC1kYXRlIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCJcclxuICAgIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLndlZWtlbmRdPVwiaXNXZWVrZW5kKGRhdGUpXCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5iZy1wcmltYXJ5XT1cInNlbGVjdGVkXCJcclxuICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImRhdGUubW9udGggIT09IGN1cnJlbnRNb250aFwiIFtjbGFzcy50ZXh0LW11dGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICA8c3BhbiAqbmdJZj1cImlzRm9vdGVyXCI+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAge3tmb290ZXJ9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFmb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXN0YXJ0XCIgKGNsaWNrKT1cInNldFRvZGF5KCk7IGRhdGVwaWNrZXIuY2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj57e3RvZGF5TGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIG0tMiBmbG9hdC1lbmRcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci5jbG9zZSgpXCI+e3tjbG9zZUxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95b296c29mdC95b296c29mdC1uZy9kYXRlcGlja2VyL3NyYy95cy1kYXRlcGlja2VyLXBvcHVwL3lzLWRhdGVwaWNrZXItcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1wb3B1cC95cy1kYXRlcGlja2VyLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQVcsc0JBQXNCLEVBQWlCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakosT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBbUJ4RyxNQUFNLE9BQU8sMEJBQTBCO0lBTXJDLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsR0FBeUI7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQU1ELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lB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QixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUdoRDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsSUFBSTt3QkFDSixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUU7d0JBQ2pFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRTtxQkFDNUU7eUVBZVEsU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBU0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlU3RydWN0LCBOZ2JEYXRlcGlja2VySTE4biwgTmdiRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgSTE4biwgTGFuZ3VhZ2VUeXBlLCBZc0RhdGVQYXJzZXJGb3JtYXR0ZXJTZXJ2aWNlLCBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAneXMtZGF0ZXBpY2tlci1wb3B1cCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdiRGF0ZXBpY2tlck1vZHVsZSwgRm9ybXNNb2R1bGUsIEpzb25QaXBlLCBOZ0lmXSxcclxuICB0ZW1wbGF0ZVVybDogJy4veXMtZGF0ZXBpY2tlci1wb3B1cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4veXMtZGF0ZXBpY2tlci1wb3B1cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gWXNEYXRlcGlja2VyUG9wdXBDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IFlzRGF0ZVBhcnNlckZvcm1hdHRlclNlcnZpY2UgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFlzRGF0ZXBpY2tlclBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBjYWxlbmRhciA9IGluamVjdChOZ2JDYWxlbmRhcik7XHJcbiAgdG9kYXkgPSBpbmplY3QoTmdiQ2FsZW5kYXIpLmdldFRvZGF5KCk7XHJcblxyXG4gIF92YWx1ZTogTmdiRGF0ZVN0cnVjdCB8IG51bGwgPSBudWxsO1xyXG4gIGdldCB2YWx1ZSgpOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZSh2YWw6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogXCJib2R5XCIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcclxuICBASW5wdXQoKSB3ZWVrZW5kOiBudW1iZXJbXSA9IFs2LCA3XTtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5lbl07XHJcbiAgQElucHV0KClcclxuICBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcbiAgc2V0IGxhbmd1YWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhbmd1YWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLmkxOE4ubGFuZ3VhZ2UgPSB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGlzRm9vdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjbG9zZUxhYmVsOiBzdHJpbmcgPSBcIkNsb3NlXCI7XHJcbiAgQElucHV0KCkgdG9kYXlMYWJlbDogc3RyaW5nID0gXCJUb2RheVwiO1xyXG4gIEBJbnB1dCgpIGZvb3RlcjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGNhbGVuZGFySWNvbkNsYXNzOiBzdHJpbmcgPSBcImZhLXNvbGlkIGZhLWNhbGVuZGFyLWRheXNcIjtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThOOiBJMThuKSB7XHJcbiAgICB0aGlzLmxhbmd1YWdlID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5lbl07XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIW9iaikge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkYXRlOiBEYXRlID0gb2JqO1xyXG4gICAgdGhpcy52YWx1ZSA9IHsgeWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aDogKGRhdGUuZ2V0TW9udGgoKSArIDEpLCBkYXk6IGRhdGUuZ2V0RGF0ZSgpIH07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG1hcmtEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfSkgPT4gZGF0ZS5tb250aCAhPT0gY3VycmVudD8ubW9udGg7XHJcbiAgaXNXZWVrZW5kID0gKGRhdGU6IE5nYkRhdGUpID0+IHRoaXMud2Vla2VuZC5pbmNsdWRlcyh0aGlzLmNhbGVuZGFyLmdldFdlZWtkYXkoZGF0ZSkpO1xyXG5cclxuICB2YWx1ZUNoYW5nZWQobmV3RGF0ZTogTmdiRGF0ZVN0cnVjdCB8IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmIChuZXdEYXRlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgbmV3RGF0ZSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGxldCB0ZW1wID0gbmV3RGF0ZS5zcGxpdCgnLycpO1xyXG4gICAgICAgIGxldCByZXM6IERhdGUgPSBuZXcgRGF0ZSgrdGVtcFswXSwgKCt0ZW1wWzFdKSAtIDEsICt0ZW1wWzJdKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHJlcyk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQocmVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcmVzOiBEYXRlID0gbmV3IERhdGUobmV3RGF0ZS55ZWFyLCBuZXdEYXRlLm1vbnRoIC0gMSwgbmV3RGF0ZS5kYXkpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UocmVzKTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZChyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRvZGF5KCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudG9kYXk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwicm93IHJvdy1jb2xzLXNtLWF1dG9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiIFtjb250YWluZXJdPVwiY29udGFpbmVyXCIgW21hcmtEaXNhYmxlZF09XCJtYXJrRGlzYWJsZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCIgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCIgW2RheVRlbXBsYXRlXT1cImN1c3RvbURheVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQodmFsdWUpXCIgLz5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tjYWxlbmRhckljb25DbGFzc319XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bmctdGVtcGxhdGUgI2N1c3RvbURheSBsZXQtZGF0ZSBsZXQtY3VycmVudE1vbnRoPVwiY3VycmVudE1vbnRoXCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXHJcbiAgICBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRheVwiIFtjbGFzcy53ZWVrZW5kXT1cImlzV2Vla2VuZChkYXRlKVwiIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIiBbY2xhc3MuYmctcHJpbWFyeV09XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJkYXRlLm1vbnRoICE9PSBjdXJyZW50TW9udGhcIiBbY2xhc3MudGV4dC1tdXRlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIHt7IGRhdGUuZGF5IH19XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpc0Zvb3RlclwiPlxyXG4gICAgICAgIDxociBjbGFzcz1cIm15LTBcIiAvPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIHt7Zm9vdGVyfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG0tMiBmbG9hdC1zdGFydFwiIChjbGljayk9XCJzZXRUb2RheSgpOyBkYXRlcGlja2VyLmNsb3NlKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+e3t0b2RheUxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbSBtLTIgZmxvYXQtZW5kXCIgKGNsaWNrKT1cImRhdGVwaWNrZXIuY2xvc2UoKVwiPnt7Y2xvc2VMYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
package/esm2022/datepicker/src/ys-datepicker-popup-persian/ys-datepicker-popup-persian.component.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
import * as i1 from "../services";
|
|
9
9
|
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
10
10
|
import * as i3 from "@angular/forms";
|
|
11
|
-
class YsDatepickerPopupPersianComponent {
|
|
11
|
+
export class YsDatepickerPopupPersianComponent {
|
|
12
12
|
get value() {
|
|
13
13
|
return this._value;
|
|
14
14
|
}
|
|
@@ -27,7 +27,7 @@ class YsDatepickerPopupPersianComponent {
|
|
|
27
27
|
this.calendar = inject(NgbCalendar);
|
|
28
28
|
this.today = inject(NgbCalendar).getToday();
|
|
29
29
|
this._value = null;
|
|
30
|
-
this.container =
|
|
30
|
+
this.container = null;
|
|
31
31
|
this.firstDayOfWeek = 6;
|
|
32
32
|
this.weekend = [5];
|
|
33
33
|
this._language = LanguageType[LanguageType.fa];
|
|
@@ -35,6 +35,7 @@ class YsDatepickerPopupPersianComponent {
|
|
|
35
35
|
this.closeLabel = "بستن";
|
|
36
36
|
this.todayLabel = "امروز";
|
|
37
37
|
this.footer = null;
|
|
38
|
+
this.calendarIconClass = "fa-solid fa-calendar-days";
|
|
38
39
|
this.disabled = false;
|
|
39
40
|
this.onChange = () => { };
|
|
40
41
|
this.onTouched = () => { };
|
|
@@ -85,8 +86,8 @@ class YsDatepickerPopupPersianComponent {
|
|
|
85
86
|
this.value = this.today;
|
|
86
87
|
this.valueChanged(this.value);
|
|
87
88
|
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerPopupPersianComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: YsDatepickerPopupPersianComponent, isStandalone: true, selector: "ys-datepicker-popup-persian", inputs: { container: "container", firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", closeLabel: "closeLabel", todayLabel: "todayLabel", footer: "footer", calendarIconClass: "calendarIconClass", disabled: "disabled" }, providers: [
|
|
90
91
|
{
|
|
91
92
|
provide: NG_VALUE_ACCESSOR,
|
|
92
93
|
useExisting: forwardRef(() => YsDatepickerPopupPersianComponent),
|
|
@@ -96,10 +97,9 @@ class YsDatepickerPopupPersianComponent {
|
|
|
96
97
|
{ provide: NgbCalendar, useClass: NgbCalendarPersian },
|
|
97
98
|
{ provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
|
|
98
99
|
{ provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
|
|
99
|
-
], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"
|
|
100
|
+
], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\" [class.bg-primary]=\"selected\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.custom-day:hover,.custom-day.focused{background-color:var(--bs-gray-300)}.hidden{display:none}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
100
101
|
}
|
|
101
|
-
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsDatepickerPopupPersianComponent, decorators: [{
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerPopupPersianComponent, decorators: [{
|
|
103
103
|
type: Component,
|
|
104
104
|
args: [{ selector: 'ys-datepicker-popup-persian', standalone: true, imports: [NgbDatepickerModule, FormsModule, JsonPipe, NgIf], providers: [
|
|
105
105
|
{
|
|
@@ -111,8 +111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
111
111
|
{ provide: NgbCalendar, useClass: NgbCalendarPersian },
|
|
112
112
|
{ provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
|
|
113
113
|
{ provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
|
|
114
|
-
], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"
|
|
115
|
-
}], ctorParameters:
|
|
114
|
+
], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dp\" [(ngModel)]=\"value\" ngbDatepicker\r\n #datepicker=\"ngbDatepicker\" [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" [dayTemplate]=\"customDay\"\r\n (ngModelChange)=\"valueChanged(value)\" />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\" [class.bg-primary]=\"selected\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.custom-day:hover,.custom-day.focused{background-color:var(--bs-gray-300)}.hidden{display:none}\n"] }]
|
|
115
|
+
}], ctorParameters: () => [{ type: i1.I18n }], propDecorators: { container: [{
|
|
116
116
|
type: Input
|
|
117
117
|
}], firstDayOfWeek: [{
|
|
118
118
|
type: Input
|
|
@@ -128,7 +128,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
128
128
|
type: Input
|
|
129
129
|
}], footer: [{
|
|
130
130
|
type: Input
|
|
131
|
+
}], calendarIconClass: [{
|
|
132
|
+
type: Input
|
|
131
133
|
}], disabled: [{
|
|
132
134
|
type: Input
|
|
133
135
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2RhdGVwaWNrZXIvc3JjL3lzLWRhdGVwaWNrZXItcG9wdXAtcGVyc2lhbi95cy1kYXRlcGlja2VyLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1wb3B1cC1wZXJzaWFuL3lzLWRhdGVwaWNrZXItcG9wdXAtcGVyc2lhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFXLHNCQUFzQixFQUFpQixpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBRXhHLE1Ba0JhLGlDQUFpQztJQU01QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEdBQXlCO1FBQ2pDLElBQUksQ0FBQyxN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SztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBU0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkNhbGVuZGFyUGVyc2lhbiwgTmdiRGF0ZSwgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgTmdiRGF0ZVN0cnVjdCwgTmdiRGF0ZXBpY2tlckkxOG4sIE5nYkRhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEphbGFsaURhdGUgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJMThuLCBMYW5ndWFnZVR5cGUsIFlzRGF0ZVBhcnNlckZvcm1hdHRlclNlcnZpY2UsIFlzRGF0ZXBpY2tlckkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd5cy1kYXRlcGlja2VyLXBvcHVwLXBlcnNpYW4nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nYkRhdGVwaWNrZXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBKc29uUGlwZSwgTmdJZl0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3lzLWRhdGVwaWNrZXItcG9wdXAtcGVyc2lhbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4veXMtZGF0ZXBpY2tlci1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBZc0RhdGVwaWNrZXJQb3B1cFBlcnNpYW5Db21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkNhbGVuZGFyLCB1c2VDbGFzczogTmdiQ2FsZW5kYXJQZXJzaWFuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IFlzRGF0ZVBhcnNlckZvcm1hdHRlclNlcnZpY2UgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFlzRGF0ZXBpY2tlclBvcHVwUGVyc2lhbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xyXG4gIHRvZGF5ID0gaW5qZWN0KE5nYkNhbGVuZGFyKS5nZXRUb2RheSgpO1xyXG5cclxuICBfdmFsdWU6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsID0gbnVsbDtcclxuICBnZXQgdmFsdWUoKTogTmdiRGF0ZVN0cnVjdCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBjb250YWluZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSA2O1xyXG4gIEBJbnB1dCgpIHdlZWtlbmQ6IG51bWJlcltdID0gWzVdO1xyXG4gIHByaXZhdGUgX2xhbmd1YWdlOiBzdHJpbmcgPSBMYW5ndWFnZVR5cGVbTGFuZ3VhZ2VUeXBlLmZhXTtcclxuICBASW5wdXQoKVxyXG4gIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuICBzZXQgbGFuZ3VhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fbGFuZ3VhZ2UgPSB2YWx1ZTtcclxuICAgIHRoaXMuaTE4Ti5sYW5ndWFnZSA9IHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgaXNGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWw6IHN0cmluZyA9IFwi2KjYs9iq2YZcIjtcclxuICBASW5wdXQoKSB0b2RheUxhYmVsOiBzdHJpbmcgPSBcItin2YXYsdmI2LJcIjtcclxuICBASW5wdXQoKSBmb290ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThOOiBJMThuKSB7XHJcbiAgICB0aGlzLmxhbmd1YWdlID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5mYV07XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIW9iaikge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkYXRlOiBEYXRlID0gb2JqO1xyXG4gICAgbGV0IHBlcnNpYW5EYXRlOiBudW1iZXJbXSA9IEphbGFsaURhdGUuZ3JlZ29yaWFuVG9KYWxhbGkoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyAxLCBkYXRlLmdldERhdGUoKSk7XHJcbiAgICB0aGlzLnZhbHVlID0geyB5ZWFyOiBwZXJzaWFuRGF0ZVswXSwgbW9udGg6IHBlcnNpYW5EYXRlWzFdLCBkYXk6IHBlcnNpYW5EYXRlWzJdIH07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG1hcmtEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfSkgPT4gZGF0ZS5tb250aCAhPT0gY3VycmVudD8ubW9udGg7XHJcbiAgaXNXZWVrZW5kID0gKGRhdGU6IE5nYkRhdGUpID0+IHRoaXMud2Vla2VuZC5pbmNsdWRlcyh0aGlzLmNhbGVuZGFyLmdldFdlZWtkYXkoZGF0ZSkpO1xyXG5cclxuICB2YWx1ZUNoYW5nZWQobmV3RGF0ZTogTmdiRGF0ZVN0cnVjdCB8IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmIChuZXdEYXRlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgbmV3RGF0ZSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGxldCB0ZW1wID0gbmV3RGF0ZS5zcGxpdCgnLycpO1xyXG4gICAgICAgIGxldCBjb252ZXJ0ZWREYXRlOiBudW1iZXJbXSA9IEphbGFsaURhdGUuamFsYWxpVG9HcmVnb3JpYW4oK3RlbXBbMF0sICgrdGVtcFsxXSkgLSAxLCArdGVtcFsyXSk7XHJcbiAgICAgICAgbGV0IHJlczogRGF0ZSA9IG5ldyBEYXRlKCtjb252ZXJ0ZWREYXRlWzBdLCAoK2NvbnZlcnRlZERhdGVbMV0pIC0gMSwgK2NvbnZlcnRlZERhdGVbMl0pO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UocmVzKTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZChyZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBjb252ZXJ0ZWREYXRlOiBudW1iZXJbXSA9IEphbGFsaURhdGUuamFsYWxpVG9HcmVnb3JpYW4obmV3RGF0ZS55ZWFyLCBuZXdEYXRlLm1vbnRoLCBuZXdEYXRlLmRheSk7XHJcbiAgICAgICAgdmFyIHJlczogRGF0ZSA9IG5ldyBEYXRlKCtjb252ZXJ0ZWREYXRlWzBdLCArY29udmVydGVkRGF0ZVsxXSAtIDEsICtjb252ZXJ0ZWREYXRlWzJdKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHJlcyk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUb2RheSgpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRvZGF5O1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZWQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxufSIsIjxmb3JtIGNsYXNzPVwicm93IHJvdy1jb2xzLXNtLWF1dG9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiIFtjb250YWluZXJdPVwiY29udGFpbmVyXCIgW21hcmtEaXNhYmxlZF09XCJtYXJrRGlzYWJsZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCIgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCIgW2RheVRlbXBsYXRlXT1cImN1c3RvbURheVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQodmFsdWUpXCIgLz5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5c1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjdXN0b21EYXkgbGV0LWRhdGUgbGV0LWN1cnJlbnRNb250aD1cImN1cnJlbnRNb250aFwiIGxldC1zZWxlY3RlZD1cInNlbGVjdGVkXCIgbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIlxyXG4gICAgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kYXlcIiBbY2xhc3Mud2Vla2VuZF09XCJpc1dlZWtlbmQoZGF0ZSlcIiBbY2xhc3MuZm9jdXNlZF09XCJmb2N1c2VkXCIgW2NsYXNzLmJnLXByaW1hcnldPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiZGF0ZS5tb250aCAhPT0gY3VycmVudE1vbnRoXCIgW2NsYXNzLnRleHQtbXV0ZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNGb290ZXJcIj5cclxuICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICB7e2Zvb3Rlcn19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtLTIgZmxvYXQtc3RhcnRcIiAoY2xpY2spPVwic2V0VG9kYXkoKTsgZGF0ZXBpY2tlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPnt7dG9kYXlMYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gbS0yIGZsb2F0LWVuZFwiIChjbGljayk9XCJkYXRlcGlja2VyLmNsb3NlKClcIj57e2Nsb3NlTGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2RhdGVwaWNrZXIvc3JjL3lzLWRhdGVwaWNrZXItcG9wdXAtcGVyc2lhbi95cy1kYXRlcGlja2VyLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1wb3B1cC1wZXJzaWFuL3lzLWRhdGVwaWNrZXItcG9wdXAtcGVyc2lhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFXLHNCQUFzQixFQUFpQixpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBb0J4RyxNQUFNLE9BQU8saUNBQWlDO0lBTTVDLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsR0FBeUI7UUFDakMsSUFBSSxD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cUJBQzVFO3lFQWVRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiQ2FsZW5kYXJQZXJzaWFuLCBOZ2JEYXRlLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlU3RydWN0LCBOZ2JEYXRlcGlja2VySTE4biwgTmdiRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgSmFsYWxpRGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEkxOG4sIExhbmd1YWdlVHlwZSwgWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSwgWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3lzLWRhdGVwaWNrZXItcG9wdXAtcGVyc2lhbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdiRGF0ZXBpY2tlck1vZHVsZSwgRm9ybXNNb2R1bGUsIEpzb25QaXBlLCBOZ0lmXSxcclxuICB0ZW1wbGF0ZVVybDogJy4veXMtZGF0ZXBpY2tlci1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi95cy1kYXRlcGlja2VyLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFlzRGF0ZXBpY2tlclBvcHVwUGVyc2lhbkNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgSTE4bixcclxuICAgIHsgcHJvdmlkZTogTmdiQ2FsZW5kYXIsIHVzZUNsYXNzOiBOZ2JDYWxlbmRhclBlcnNpYW4gfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCB1c2VDbGFzczogWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWXNEYXRlcGlja2VyUG9wdXBQZXJzaWFuQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBjYWxlbmRhciA9IGluamVjdChOZ2JDYWxlbmRhcik7XHJcbiAgdG9kYXkgPSBpbmplY3QoTmdiQ2FsZW5kYXIpLmdldFRvZGF5KCk7XHJcblxyXG4gIF92YWx1ZTogTmdiRGF0ZVN0cnVjdCB8IG51bGwgPSBudWxsO1xyXG4gIGdldCB2YWx1ZSgpOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZSh2YWw6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogXCJib2R5XCIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB3ZWVrZW5kOiBudW1iZXJbXSA9IFs1XTtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5mYV07XHJcbiAgQElucHV0KClcclxuICBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcbiAgc2V0IGxhbmd1YWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhbmd1YWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLmkxOE4ubGFuZ3VhZ2UgPSB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGlzRm9vdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjbG9zZUxhYmVsOiBzdHJpbmcgPSBcItio2LPYqtmGXCI7XHJcbiAgQElucHV0KCkgdG9kYXlMYWJlbDogc3RyaW5nID0gXCLYp9mF2LHZiNiyXCI7XHJcbiAgQElucHV0KCkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uQ2xhc3M6IHN0cmluZyA9IFwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5c1wiO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH1cclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGkxOE46IEkxOG4pIHtcclxuICAgIHRoaXMubGFuZ3VhZ2UgPSBMYW5ndWFnZVR5cGVbTGFuZ3VhZ2VUeXBlLmZhXTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghb2JqKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRhdGU6IERhdGUgPSBvYmo7XHJcbiAgICBsZXQgcGVyc2lhbkRhdGU6IG51bWJlcltdID0gSmFsYWxpRGF0ZS5ncmVnb3JpYW5Ub0phbGFsaShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIGRhdGUuZ2V0RGF0ZSgpKTtcclxuICAgIHRoaXMudmFsdWUgPSB7IHllYXI6IHBlcnNpYW5EYXRlWzBdLCBtb250aDogcGVyc2lhbkRhdGVbMV0sIGRheTogcGVyc2lhbkRhdGVbMl0gfTtcclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgbWFya0Rpc2FibGVkID0gKGRhdGU6IE5nYkRhdGUsIGN1cnJlbnQ/OiB7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlciB9KSA9PiBkYXRlLm1vbnRoICE9PSBjdXJyZW50Py5tb250aDtcclxuICBpc1dlZWtlbmQgPSAoZGF0ZTogTmdiRGF0ZSkgPT4gdGhpcy53ZWVrZW5kLmluY2x1ZGVzKHRoaXMuY2FsZW5kYXIuZ2V0V2Vla2RheShkYXRlKSk7XHJcblxyXG4gIHZhbHVlQ2hhbmdlZChuZXdEYXRlOiBOZ2JEYXRlU3RydWN0IHwgc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKG5ld0RhdGUpIHtcclxuICAgICAgaWYgKHR5cGVvZiBuZXdEYXRlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgbGV0IHRlbXAgPSBuZXdEYXRlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgbGV0IGNvbnZlcnRlZERhdGU6IG51bWJlcltdID0gSmFsYWxpRGF0ZS5qYWxhbGlUb0dyZWdvcmlhbigrdGVtcFswXSwgKCt0ZW1wWzFdKSAtIDEsICt0ZW1wWzJdKTtcclxuICAgICAgICBsZXQgcmVzOiBEYXRlID0gbmV3IERhdGUoK2NvbnZlcnRlZERhdGVbMF0sICgrY29udmVydGVkRGF0ZVsxXSkgLSAxLCArY29udmVydGVkRGF0ZVsyXSk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShyZXMpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHJlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGNvbnZlcnRlZERhdGU6IG51bWJlcltdID0gSmFsYWxpRGF0ZS5qYWxhbGlUb0dyZWdvcmlhbihuZXdEYXRlLnllYXIsIG5ld0RhdGUubW9udGgsIG5ld0RhdGUuZGF5KTtcclxuICAgICAgICB2YXIgcmVzOiBEYXRlID0gbmV3IERhdGUoK2NvbnZlcnRlZERhdGVbMF0sICtjb252ZXJ0ZWREYXRlWzFdIC0gMSwgK2NvbnZlcnRlZERhdGVbMl0pO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UocmVzKTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZChyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRvZGF5KCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudG9kYXk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG59IiwiPGZvcm0gY2xhc3M9XCJyb3cgcm93LWNvbHMtc20tYXV0b1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIiBuYW1lPVwiZHBcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCIgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIiBbbWFya0Rpc2FibGVkXT1cIm1hcmtEaXNhYmxlZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIiBbZGF5VGVtcGxhdGVdPVwiY3VzdG9tRGF5XCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZCh2YWx1ZSlcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2NhbGVuZGFySWNvbkNsYXNzfX1cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRGF5IGxldC1kYXRlIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCJcclxuICAgIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLndlZWtlbmRdPVwiaXNXZWVrZW5kKGRhdGUpXCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5iZy1wcmltYXJ5XT1cInNlbGVjdGVkXCJcclxuICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImRhdGUubW9udGggIT09IGN1cnJlbnRNb250aFwiIFtjbGFzcy50ZXh0LW11dGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICA8c3BhbiAqbmdJZj1cImlzRm9vdGVyXCI+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAge3tmb290ZXJ9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFmb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXN0YXJ0XCIgKGNsaWNrKT1cInNldFRvZGF5KCk7IGRhdGVwaWNrZXIuY2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj57e3RvZGF5TGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIG0tMiBmbG9hdC1lbmRcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci5jbG9zZSgpXCI+e3tjbG9zZUxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+Il19
|