@ng-nest/ui 15.0.8 → 15.0.9
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/base-form/base-form.property.d.ts +2 -2
- package/core/config/config.d.ts +4 -0
- package/date-picker/date-picker.component.d.ts +5 -1
- package/date-picker/date-picker.module.d.ts +6 -5
- package/date-picker/date-picker.property.d.ts +139 -9
- package/date-picker/date-range-portal.component.d.ts +20 -13
- package/date-picker/date-range.component.d.ts +14 -4
- package/date-picker/picker-month.component.d.ts +15 -4
- package/date-picker/picker-year.component.d.ts +15 -5
- package/esm2020/base-form/base-form.property.mjs +1 -1
- package/esm2020/core/config/config.mjs +1 -1
- package/esm2020/date-picker/date-picker-portal.component.mjs +8 -7
- package/esm2020/date-picker/date-picker.component.mjs +32 -10
- package/esm2020/date-picker/date-picker.module.mjs +5 -1
- package/esm2020/date-picker/date-picker.property.mjs +178 -15
- package/esm2020/date-picker/date-range-portal.component.mjs +123 -52
- package/esm2020/date-picker/date-range.component.mjs +99 -34
- package/esm2020/date-picker/picker-date.component.mjs +4 -4
- package/esm2020/date-picker/picker-month.component.mjs +151 -11
- package/esm2020/date-picker/picker-year.component.mjs +151 -13
- package/esm2020/i18n/i18n.property.mjs +1 -1
- package/esm2020/i18n/languages/en_GB.mjs +11 -2
- package/esm2020/i18n/languages/en_US.mjs +11 -2
- package/esm2020/i18n/languages/zh_CN.mjs +11 -2
- package/esm2020/i18n/languages/zh_TW.mjs +11 -2
- package/esm2020/link/link.component.mjs +19 -5
- package/esm2020/link/link.property.mjs +10 -4
- package/esm2020/slider/slider.component.mjs +3 -3
- package/esm2020/time-picker/time-picker-frame.component.mjs +28 -11
- package/esm2020/time-picker/time-picker-portal.component.mjs +2 -2
- package/fesm2015/ng-nest-ui-base-form.mjs +0 -1
- package/fesm2015/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-date-picker.mjs +726 -124
- package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-i18n.mjs +40 -5
- package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-link.mjs +28 -9
- package/fesm2015/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-slider.mjs +2 -3
- package/fesm2015/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-switch.mjs +1 -0
- package/fesm2015/ng-nest-ui-table.mjs +1 -0
- package/fesm2015/ng-nest-ui-time-picker.mjs +28 -12
- package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-base-form.mjs +0 -1
- package/fesm2020/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-date-picker.mjs +722 -124
- package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-i18n.mjs +40 -5
- package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-link.mjs +27 -9
- package/fesm2020/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-slider.mjs +2 -3
- package/fesm2020/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-switch.mjs +1 -0
- package/fesm2020/ng-nest-ui-table.mjs +1 -0
- package/fesm2020/ng-nest-ui-time-picker.mjs +28 -12
- package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
- package/i18n/i18n.property.d.ts +9 -0
- package/i18n/languages/en_GB.d.ts +9 -0
- package/i18n/languages/en_US.d.ts +9 -0
- package/i18n/languages/zh_CN.d.ts +9 -0
- package/i18n/languages/zh_TW.d.ts +9 -0
- package/link/link.component.d.ts +5 -2
- package/link/link.property.d.ts +6 -1
- package/package.json +1 -1
- package/time-picker/time-picker-frame.component.d.ts +8 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { XTimePickerFramePrefix } from './time-picker.property';
|
|
3
|
-
import { reqAnimFrame, XIsChange, XIsEmpty } from '@ng-nest/ui/core';
|
|
3
|
+
import { reqAnimFrame, XIsChange, XIsEmpty, XIsNull } from '@ng-nest/ui/core';
|
|
4
4
|
import { takeUntil, map } from 'rxjs/operators';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -16,11 +16,8 @@ export class XTimePickerFrameComponent {
|
|
|
16
16
|
this.hourStep = 1;
|
|
17
17
|
this.minuteStep = 1;
|
|
18
18
|
this.secondStep = 1;
|
|
19
|
+
this.defaultNow = true;
|
|
19
20
|
this.nodeEmit = new EventEmitter();
|
|
20
|
-
this.now = new Date();
|
|
21
|
-
this.hour = 0;
|
|
22
|
-
this.minute = 0;
|
|
23
|
-
this.second = 0;
|
|
24
21
|
this.use12Hour = 'am';
|
|
25
22
|
this.scrollAnimating = {};
|
|
26
23
|
this.hourData = [];
|
|
@@ -106,17 +103,32 @@ export class XTimePickerFrameComponent {
|
|
|
106
103
|
init() {
|
|
107
104
|
if (!XIsEmpty(this.value)) {
|
|
108
105
|
this.setDefault();
|
|
106
|
+
this.setTime(this.model);
|
|
109
107
|
}
|
|
110
108
|
else {
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
if (this.defaultNow) {
|
|
110
|
+
this.model = this.setNow();
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.hour = null;
|
|
114
|
+
this.minute = null;
|
|
115
|
+
this.second = null;
|
|
116
|
+
}
|
|
113
117
|
}
|
|
114
|
-
this.setTime(this.model);
|
|
115
118
|
this.cdr.detectChanges();
|
|
116
119
|
}
|
|
117
120
|
setDefault() {
|
|
118
121
|
this.model = new Date(this.value);
|
|
119
122
|
}
|
|
123
|
+
setNow() {
|
|
124
|
+
const def = new Date('1970-01-01');
|
|
125
|
+
const now = new Date();
|
|
126
|
+
return new Date(def.getFullYear(), def.getMonth(), def.getDate(), now.getHours(), now.getMinutes(), now.getSeconds());
|
|
127
|
+
}
|
|
128
|
+
setZero() {
|
|
129
|
+
const def = new Date('1970-01-01');
|
|
130
|
+
return new Date(def.getFullYear(), def.getMonth(), def.getDate(), 0, 0, 0);
|
|
131
|
+
}
|
|
120
132
|
setTime(date) {
|
|
121
133
|
if (this.use12Hours) {
|
|
122
134
|
let hour = date.getHours();
|
|
@@ -149,7 +161,7 @@ export class XTimePickerFrameComponent {
|
|
|
149
161
|
this.selected('use12Hour', this.use12HoursRef?.nativeElement, this.use12Hour, animating);
|
|
150
162
|
}
|
|
151
163
|
selected(type, ele, num, animating = false) {
|
|
152
|
-
if (!ele)
|
|
164
|
+
if (!ele || XIsNull(num))
|
|
153
165
|
return;
|
|
154
166
|
if (this.scrollAnimating[ele.className])
|
|
155
167
|
return;
|
|
@@ -182,6 +194,9 @@ export class XTimePickerFrameComponent {
|
|
|
182
194
|
return data.indexOf(item) === data.length - 1;
|
|
183
195
|
}
|
|
184
196
|
itemClick(type) {
|
|
197
|
+
if (XIsEmpty(this.model)) {
|
|
198
|
+
this.model = this.setZero();
|
|
199
|
+
}
|
|
185
200
|
switch (type) {
|
|
186
201
|
case 'minute':
|
|
187
202
|
this.model.setMinutes(this.minute);
|
|
@@ -239,7 +254,7 @@ export class XTimePickerFrameComponent {
|
|
|
239
254
|
}
|
|
240
255
|
}
|
|
241
256
|
/** @nocollapse */ XTimePickerFrameComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTimePickerFrameComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
242
|
-
/** @nocollapse */ XTimePickerFrameComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: { type: "type", value: "value", use12Hours: "use12Hours", hourStep: "hourStep", minuteStep: "minuteStep", secondStep: "secondStep" }, outputs: { nodeEmit: "nodeEmit" }, viewQueries: [{ propertyName: "hourRef", first: true, predicate: ["hourRef"], descendants: true }, { propertyName: "minuteRef", first: true, predicate: ["minuteRef"], descendants: true }, { propertyName: "secondRef", first: true, predicate: ["secondRef"], descendants: true }, { propertyName: "use12HoursRef", first: true, predicate: ["use12HoursRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"x-time-picker-frame\">\r\n <div class=\"x-time-picker-frame-hour\" #hourRef>\r\n <x-list [data]=\"hourData\" [(ngModel)]=\"hour\" (nodeClick)=\"itemClick('hour')\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-minute\" #minuteRef *ngIf=\"type !== 'hour'\">\r\n <x-list [data]=\"minuteData\" [(ngModel)]=\"minute\" (nodeClick)=\"itemClick('minute')\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-second\" #secondRef *ngIf=\"type === 'time'\">\r\n <x-list [data]=\"secondData\" [(ngModel)]=\"second\" (nodeClick)=\"itemClick('second')\"></x-list>\r\n </div>\r\n <div *ngIf=\"use12Hours\" class=\"x-time-picker-frame-use12Hours\" #use12HoursRef>\r\n <x-list [data]=\"use12HoursData\" [(ngModel)]=\"use12Hour\" (nodeClick)=\"itemClick('use12Hours')\"></x-list>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-time-picker-frame{margin:0;padding:0;margin:.0625rem 0;display:block;height:100%}.x-time-picker-frame>div:not(:first-child){border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-time-picker-frame-hour,.x-time-picker-frame-minute,.x-time-picker-frame-second,.x-time-picker-frame-use12Hours{position:relative;float:left;overflow:hidden;width:3.625rem;max-height:15rem;padding-bottom:calc(var(--x-border-width) * 2 + 13.125rem)}.x-time-picker-frame-hour:hover,.x-time-picker-frame-minute:hover,.x-time-picker-frame-second:hover,.x-time-picker-frame-use12Hours:hover{overflow-y:auto}.x-time-picker-frame-hour>x-list>.x-list,.x-time-picker-frame-minute>x-list>.x-list,.x-time-picker-frame-second>x-list>.x-list,.x-time-picker-frame-use12Hours>x-list>.x-list{width:3.625rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option,.x-time-picker-frame-minute>x-list>.x-list>x-list-option,.x-time-picker-frame-second>x-list>.x-list>x-list-option,.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option{min-width:3.625rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-minute>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-second>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option>.x-list-option{padding-left:.6rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-minute>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-second>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option>.x-list-option:not(:first-child){margin-top:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i4.XListComponent, selector: "x-list" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
257
|
+
/** @nocollapse */ XTimePickerFrameComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: { type: "type", value: "value", use12Hours: "use12Hours", hourStep: "hourStep", minuteStep: "minuteStep", secondStep: "secondStep", defaultNow: "defaultNow" }, outputs: { nodeEmit: "nodeEmit" }, viewQueries: [{ propertyName: "hourRef", first: true, predicate: ["hourRef"], descendants: true }, { propertyName: "minuteRef", first: true, predicate: ["minuteRef"], descendants: true }, { propertyName: "secondRef", first: true, predicate: ["secondRef"], descendants: true }, { propertyName: "use12HoursRef", first: true, predicate: ["use12HoursRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"x-time-picker-frame\">\r\n <div class=\"x-time-picker-frame-hour\" #hourRef>\r\n <x-list [data]=\"hourData\" [(ngModel)]=\"hour\" (nodeClick)=\"itemClick('hour')\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-minute\" #minuteRef *ngIf=\"type !== 'hour'\">\r\n <x-list [data]=\"minuteData\" [(ngModel)]=\"minute\" (nodeClick)=\"itemClick('minute')\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-second\" #secondRef *ngIf=\"type === 'time'\">\r\n <x-list [data]=\"secondData\" [(ngModel)]=\"second\" (nodeClick)=\"itemClick('second')\"></x-list>\r\n </div>\r\n <div *ngIf=\"use12Hours\" class=\"x-time-picker-frame-use12Hours\" #use12HoursRef>\r\n <x-list [data]=\"use12HoursData\" [(ngModel)]=\"use12Hour\" (nodeClick)=\"itemClick('use12Hours')\"></x-list>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-time-picker-frame{margin:0;padding:0;margin:.0625rem 0;display:block;height:100%}.x-time-picker-frame>div:not(:first-child){border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-time-picker-frame-hour,.x-time-picker-frame-minute,.x-time-picker-frame-second,.x-time-picker-frame-use12Hours{position:relative;float:left;overflow:hidden;width:3.625rem;max-height:15rem;padding-bottom:calc(var(--x-border-width) * 2 + 13.125rem)}.x-time-picker-frame-hour:hover,.x-time-picker-frame-minute:hover,.x-time-picker-frame-second:hover,.x-time-picker-frame-use12Hours:hover{overflow-y:auto}.x-time-picker-frame-hour>x-list>.x-list,.x-time-picker-frame-minute>x-list>.x-list,.x-time-picker-frame-second>x-list>.x-list,.x-time-picker-frame-use12Hours>x-list>.x-list{width:3.625rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option,.x-time-picker-frame-minute>x-list>.x-list>x-list-option,.x-time-picker-frame-second>x-list>.x-list>x-list-option,.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option{min-width:3.625rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-minute>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-second>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option>.x-list-option{padding-left:.6rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-minute>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-second>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option>.x-list-option:not(:first-child){margin-top:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i4.XListComponent, selector: "x-list" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
243
258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTimePickerFrameComponent, decorators: [{
|
|
244
259
|
type: Component,
|
|
245
260
|
args: [{ selector: `${XTimePickerFramePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-time-picker-frame\">\r\n <div class=\"x-time-picker-frame-hour\" #hourRef>\r\n <x-list [data]=\"hourData\" [(ngModel)]=\"hour\" (nodeClick)=\"itemClick('hour')\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-minute\" #minuteRef *ngIf=\"type !== 'hour'\">\r\n <x-list [data]=\"minuteData\" [(ngModel)]=\"minute\" (nodeClick)=\"itemClick('minute')\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-second\" #secondRef *ngIf=\"type === 'time'\">\r\n <x-list [data]=\"secondData\" [(ngModel)]=\"second\" (nodeClick)=\"itemClick('second')\"></x-list>\r\n </div>\r\n <div *ngIf=\"use12Hours\" class=\"x-time-picker-frame-use12Hours\" #use12HoursRef>\r\n <x-list [data]=\"use12HoursData\" [(ngModel)]=\"use12Hour\" (nodeClick)=\"itemClick('use12Hours')\"></x-list>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-time-picker-frame{margin:0;padding:0;margin:.0625rem 0;display:block;height:100%}.x-time-picker-frame>div:not(:first-child){border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-time-picker-frame-hour,.x-time-picker-frame-minute,.x-time-picker-frame-second,.x-time-picker-frame-use12Hours{position:relative;float:left;overflow:hidden;width:3.625rem;max-height:15rem;padding-bottom:calc(var(--x-border-width) * 2 + 13.125rem)}.x-time-picker-frame-hour:hover,.x-time-picker-frame-minute:hover,.x-time-picker-frame-second:hover,.x-time-picker-frame-use12Hours:hover{overflow-y:auto}.x-time-picker-frame-hour>x-list>.x-list,.x-time-picker-frame-minute>x-list>.x-list,.x-time-picker-frame-second>x-list>.x-list,.x-time-picker-frame-use12Hours>x-list>.x-list{width:3.625rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option,.x-time-picker-frame-minute>x-list>.x-list>x-list-option,.x-time-picker-frame-second>x-list>.x-list>x-list-option,.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option{min-width:3.625rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-minute>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-second>x-list>.x-list>x-list-option>.x-list-option,.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option>.x-list-option{padding-left:.6rem}.x-time-picker-frame-hour>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-minute>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-second>x-list>.x-list>x-list-option>.x-list-option:not(:first-child),.x-time-picker-frame-use12Hours>x-list>.x-list>x-list-option>.x-list-option:not(:first-child){margin-top:0}\n"] }]
|
|
@@ -255,6 +270,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
255
270
|
type: Input
|
|
256
271
|
}], secondStep: [{
|
|
257
272
|
type: Input
|
|
273
|
+
}], defaultNow: [{
|
|
274
|
+
type: Input
|
|
258
275
|
}], nodeEmit: [{
|
|
259
276
|
type: Output
|
|
260
277
|
}], hourRef: [{
|
|
@@ -270,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
270
287
|
type: ViewChild,
|
|
271
288
|
args: ['use12HoursRef']
|
|
272
289
|
}] } });
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBdUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx5QkFBeUI7SUEyRHBDLFlBQW9CLEdBQXNCLEVBQVUsSUFBa0I7UUFBbEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFjO1FBMUQ3RCxTQUFJLEdBQW9CLE1BQU0sQ0FBQztRQUcvQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU05QyxRQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLFdBQU0sR0FBVyxDQUFDLENB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R0FBRyxLQUFLLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQzNDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5SUFyUFUseUJBQXlCOzZIQUF6Qix5QkFBeUIsd25CQ3pCdEMseTBCQWNBOzJGRFdhLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSxHQUFHLHNCQUFzQixFQUFFLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO21JQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDZSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNFLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDTSxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRpbWVQaWNrZXJGcmFtZVByZWZpeCwgWFRpbWVQaWNrZXJUeXBlIH0gZnJvbSAnLi90aW1lLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IHJlcUFuaW1GcmFtZSwgWEJvb2xlYW4sIFhJZGVudGl0eSwgWElzQ2hhbmdlLCBYSXNFbXB0eSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UsIFhJMThuVGltZVBpY2tlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUaW1lUGlja2VyRnJhbWVQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLWZyYW1lLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRpbWVQaWNrZXJGcmFtZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdHlwZTogWFRpbWVQaWNrZXJUeXBlID0gJ3RpbWUnO1xyXG4gIEBJbnB1dCgpIHZhbHVlITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHVzZTEySG91cnMhOiBYQm9vbGVhbjtcclxuICBASW5wdXQoKSBob3VyU3RlcCA9IDE7XHJcbiAgQElucHV0KCkgbWludXRlU3RlcCA9IDE7XHJcbiAgQElucHV0KCkgc2Vjb25kU3RlcCA9IDE7XHJcbiAgQE91dHB1dCgpIG5vZGVFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2hvdXJSZWYnKSBob3VyUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnbWludXRlUmVmJykgbWludXRlUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnc2Vjb25kUmVmJykgc2Vjb25kUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgndXNlMTJIb3Vyc1JlZicpIHVzZTEySG91cnNSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBtb2RlbCE6IERhdGU7XHJcbiAgbm93ID0gbmV3IERhdGUoKTtcclxuICBob3VyOiBudW1iZXIgPSAwO1xyXG4gIG1pbnV0ZTogbnVtYmVyID0gMDtcclxuICBzZWNvbmQ6IG51bWJlciA9IDA7XHJcbiAgdXNlMTJIb3VyOiBzdHJpbmcgPSAnYW0nO1xyXG4gIHNjcm9sbEFuaW1hdGluZzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuICBob3VyRGF0YTogWElkZW50aXR5W10gPSBbXTtcclxuICBtaW51dGVEYXRhOiBYSWRlbnRpdHlbXSA9IFtdO1xyXG4gIHNlY29uZERhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgdXNlMTJIb3Vyc0RhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgbG9jYWxlOiBYSTE4blRpbWVQaWNrZXIgPSB7fTtcclxuICBpc0luaXQgPSBmYWxzZTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBjaGFuZ2VzO1xyXG4gICAgaWYgKFhJc0NoYW5nZSh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEhvdXJEYXRhKCk7XHJcbiAgICB0aGlzLnNldE1pbnV0ZURhdGEoKTtcclxuICAgIHRoaXMuc2V0U2Vjb25kRGF0YSgpO1xyXG4gICAgdGhpcy5zZXRVc2UxMkhvdXJzRGF0YSgpO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT4geC50aW1lUGlja2VyIGFzIFhJMThuVGltZVBpY2tlciksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIGlmICh0aGlzLnVzZTEySG91cnMpIHtcclxuICAgICAgICAgIHRoaXMuc2V0VXNlMTJIb3Vyc0RhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zZXRTY3JvbGxUb3AoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBpMThuOiBYSTE4blNlcnZpY2UpIHt9XHJcblxyXG4gIHNldEhvdXJEYXRhKCkge1xyXG4gICAgbGV0IGxlbmd0aCA9IHRoaXMudXNlMTJIb3VycyA/IDEyIDogMjQ7XHJcbiAgICB0aGlzLmhvdXJEYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5jZWlsKGxlbmd0aCAvIHRoaXMuaG91clN0ZXApIH0pLm1hcCgoXywgaSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy51c2UxMkhvdXJzICYmIGkgPT09IDApIHtcclxuICAgICAgICBpID0gMTI7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnByZWZpeFplcm8oaSwgMiksXHJcbiAgICAgICAgICBpZDogaVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnByZWZpeFplcm8oaSAqIHRoaXMuaG91clN0ZXAsIDIpLFxyXG4gICAgICAgICAgaWQ6IGkgKiB0aGlzLmhvdXJTdGVwXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNaW51dGVEYXRhKCkge1xyXG4gICAgdGhpcy5taW51dGVEYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5jZWlsKDYwIC8gdGhpcy5taW51dGVTdGVwKSB9KS5tYXAoKF8sIGkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5wcmVmaXhaZXJvKGkgKiB0aGlzLm1pbnV0ZVN0ZXAsIDIpLFxyXG4gICAgICAgIGlkOiBpICogdGhpcy5taW51dGVTdGVwXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFNlY29uZERhdGEoKSB7XHJcbiAgICB0aGlzLnNlY29uZERhdGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLmNlaWwoNjAgLyB0aGlzLnNlY29uZFN0ZXApIH0pLm1hcCgoXywgaSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnByZWZpeFplcm8oaSAqIHRoaXMuc2Vjb25kU3RlcCwgMiksXHJcbiAgICAgICAgaWQ6IGkgKiB0aGlzLnNlY29uZFN0ZXBcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlMTJIb3Vyc0RhdGEoKSB7XHJcbiAgICB0aGlzLnVzZTEySG91cnNEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6ICdhbScsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxlLmFtXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ3BtJyxcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGUucG1cclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGVmID0gbmV3IERhdGUoJzE5NzAtMDEtMDEnKTtcclxuICAgICAgdGhpcy5tb2RlbCA9IG5ldyBEYXRlKFxyXG4gICAgICAgIGRlZi5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRlZi5nZXRNb250aCgpLFxyXG4gICAgICAgIGRlZi5nZXREYXRlKCksXHJcbiAgICAgICAgdGhpcy5ub3cuZ2V0SG91cnMoKSxcclxuICAgICAgICB0aGlzLm5vdy5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgdGhpcy5ub3cuZ2V0U2Vjb25kcygpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFRpbWUodGhpcy5tb2RlbCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0KCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy51c2UxMkhvdXJzKSB7XHJcbiAgICAgIGxldCBob3VyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgICBpZiAoaG91ciA+IDEyKSB7XHJcbiAgICAgICAgdGhpcy5ob3VyID0gaG91ciAtIDEyO1xyXG4gICAgICAgIHRoaXMudXNlMTJIb3VyID0gJ3BtJztcclxuICAgICAgfSBlbHNlIGlmIChob3VyID09PSAxMikge1xyXG4gICAgICAgIHRoaXMuaG91ciA9IDEyO1xyXG4gICAgICAgIHRoaXMudXNlMTJIb3VyID0gJ3BtJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhvdXIgPSBob3VyID09PSAwID8gMTIgOiBob3VyO1xyXG4gICAgICAgIHRoaXMudXNlMTJIb3VyID0gJ2FtJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ob3VyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5taW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgIHRoaXMuc2Vjb25kID0gZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICBwcmVmaXhaZXJvKG51bTogbnVtYmVyLCBuOiBudW1iZXIpIHtcclxuICAgIHJldHVybiAoQXJyYXkobikuam9pbignMCcpICsgbnVtKS5zbGljZSgtbik7XHJcbiAgfVxyXG5cclxuICBzZXRTY3JvbGxUb3AoYW5pbWF0aW5nID0gZmFsc2UpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ2hvdXInLCB0aGlzLmhvdXJSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuaG91ciwgYW5pbWF0aW5nKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ21pbnV0ZScsIHRoaXMubWludXRlUmVmPy5uYXRpdmVFbGVtZW50LCB0aGlzLm1pbnV0ZSwgYW5pbWF0aW5nKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ3NlY29uZCcsIHRoaXMuc2Vjb25kUmVmPy5uYXRpdmVFbGVtZW50LCB0aGlzLnNlY29uZCwgYW5pbWF0aW5nKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ3VzZTEySG91cicsIHRoaXMudXNlMTJIb3Vyc1JlZj8ubmF0aXZlRWxlbWVudCwgdGhpcy51c2UxMkhvdXIsIGFuaW1hdGluZyk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZCh0eXBlOiAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnIHwgJ3VzZTEySG91cicsIGVsZT86IEhUTUxFbGVtZW50LCBudW0/OiBudW1iZXIgfCBzdHJpbmcsIGFuaW1hdGluZyA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIWVsZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsQW5pbWF0aW5nW2VsZS5jbGFzc05hbWVdKSByZXR1cm47XHJcbiAgICBsZXQgbGVuID0gTnVtYmVyKG51bSk7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgbGVuID0gdGhpcy5ob3VyRGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XHJcbiAgICAgICAgbGVuID0gdGhpcy5taW51dGVEYXRhLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbnVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc2Vjb25kJzpcclxuICAgICAgICBsZW4gPSB0aGlzLnNlY29uZERhdGEuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBudW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd1c2UxMkhvdXInOlxyXG4gICAgICAgIGxlbiA9IHRoaXMudXNlMTJIb3Vyc0RhdGEuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBudW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnQgPSBlbGUucXVlcnlTZWxlY3RvcihgLngtbGlzdCB4LWxpc3Qtb3B0aW9uOm50aC1jaGlsZCgke2xlbiArIDF9KWApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGN1cnJlbnQpIHtcclxuICAgICAgaWYgKGFuaW1hdGluZykge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG8oZWxlLCBjdXJyZW50Lm9mZnNldFRvcCwgMTIwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlbGUuc2Nyb2xsVG9wID0gY3VycmVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzTGFzdEl0ZW0oZGF0YTogWElkZW50aXR5W10sIGl0ZW06IFhJZGVudGl0eSkge1xyXG4gICAgcmV0dXJuIGRhdGEuaW5kZXhPZihpdGVtKSA9PT0gZGF0YS5sZW5ndGggLSAxO1xyXG4gIH1cclxuXHJcbiAgaXRlbUNsaWNrKHR5cGU6ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCcgfCAndXNlMTJIb3VycycpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgIHRoaXMubW9kZWwuc2V0TWludXRlcyh0aGlzLm1pbnV0ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NlY29uZCc6XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zZXRTZWNvbmRzKHRoaXMuc2Vjb25kKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgaWYgKHRoaXMudXNlMTJIb3Vycykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudXNlMTJIb3VyID09PSAncG0nICYmIHRoaXMuaG91ciAhPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIgKyAxMik7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNlMTJIb3VyID09PSAnYW0nICYmIHRoaXMuaG91ciA9PT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3VycygwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndXNlMTJIb3Vycyc6XHJcbiAgICAgICAgaWYgKHRoaXMudXNlMTJIb3VyID09PSAncG0nICYmIHRoaXMuaG91ciAhPT0gMTIpIHtcclxuICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyICsgMTIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdhbScgJiYgdGhpcy5ob3VyID09PSAxMikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3VycygwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHRydWUpO1xyXG4gICAgdGhpcy5ub2RlRW1pdC5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxUbyhlbGVtZW50OiBIVE1MRWxlbWVudCwgdG86IG51bWJlciwgZHVyYXRpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgY2xzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lO1xyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRvIC0gZWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBwZXJUaWNrID0gKGRpZmZlcmVuY2UgLyBkdXJhdGlvbikgKiAxMDtcclxuICAgIHRoaXMuc2Nyb2xsQW5pbWF0aW5nW2Nsc05hbWVdID0gdHJ1ZTtcclxuICAgIHJlcUFuaW1GcmFtZSgoKSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3AgKyBwZXJUaWNrO1xyXG4gICAgICBpZiAoZWxlbWVudC5zY3JvbGxUb3AgPT09IHRvIHx8IGR1cmF0aW9uIDw9IDApIHtcclxuICAgICAgICB0aGlzLnNjcm9sbEFuaW1hdGluZ1tjbHNOYW1lXSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvKGVsZW1lbnQsIHRvLCBkdXJhdGlvbiAtIDEwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtdGltZS1waWNrZXItZnJhbWUtaG91clwiICNob3VyUmVmPlxyXG4gICAgPHgtbGlzdCBbZGF0YV09XCJob3VyRGF0YVwiIFsobmdNb2RlbCldPVwiaG91clwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCdob3VyJylcIj48L3gtbGlzdD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10aW1lLXBpY2tlci1mcmFtZS1taW51dGVcIiAjbWludXRlUmVmICpuZ0lmPVwidHlwZSAhPT0gJ2hvdXInXCI+XHJcbiAgICA8eC1saXN0IFtkYXRhXT1cIm1pbnV0ZURhdGFcIiBbKG5nTW9kZWwpXT1cIm1pbnV0ZVwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCdtaW51dGUnKVwiPjwveC1saXN0PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lLXNlY29uZFwiICNzZWNvbmRSZWYgKm5nSWY9XCJ0eXBlID09PSAndGltZSdcIj5cclxuICAgIDx4LWxpc3QgW2RhdGFdPVwic2Vjb25kRGF0YVwiIFsobmdNb2RlbCldPVwic2Vjb25kXCIgKG5vZGVDbGljayk9XCJpdGVtQ2xpY2soJ3NlY29uZCcpXCI+PC94LWxpc3Q+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInVzZTEySG91cnNcIiBjbGFzcz1cIngtdGltZS1waWNrZXItZnJhbWUtdXNlMTJIb3Vyc1wiICN1c2UxMkhvdXJzUmVmPlxyXG4gICAgPHgtbGlzdCBbZGF0YV09XCJ1c2UxMkhvdXJzRGF0YVwiIFsobmdNb2RlbCldPVwidXNlMTJIb3VyXCIgKG5vZGVDbGljayk9XCJpdGVtQ2xpY2soJ3VzZTEySG91cnMnKVwiPjwveC1saXN0PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBdUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVMvQixNQUFNLE9BQU8seUJBQXlCO0lBMkRwQyxZQUFvQixHQUFzQixFQUFVLElBQWtCO1FBQWxELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBYztRQTFEN0QsU0FBSSxHQUFvQixNQUFNLENBQUM7UUFHL0IsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVM5QyxjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLG9CQUFlLEdBQStCLEVBQUUs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O2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDZSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNFLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDTSxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRpbWVQaWNrZXJGcmFtZVByZWZpeCwgWFRpbWVQaWNrZXJUeXBlIH0gZnJvbSAnLi90aW1lLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IHJlcUFuaW1GcmFtZSwgWEJvb2xlYW4sIFhJZGVudGl0eSwgWElzQ2hhbmdlLCBYSXNFbXB0eSwgWElzTnVsbCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UsIFhJMThuVGltZVBpY2tlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUaW1lUGlja2VyRnJhbWVQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLWZyYW1lLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRpbWVQaWNrZXJGcmFtZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdHlwZTogWFRpbWVQaWNrZXJUeXBlID0gJ3RpbWUnO1xyXG4gIEBJbnB1dCgpIHZhbHVlITogbnVtYmVyIHwgbnVsbDtcclxuICBASW5wdXQoKSB1c2UxMkhvdXJzITogWEJvb2xlYW47XHJcbiAgQElucHV0KCkgaG91clN0ZXAgPSAxO1xyXG4gIEBJbnB1dCgpIG1pbnV0ZVN0ZXAgPSAxO1xyXG4gIEBJbnB1dCgpIHNlY29uZFN0ZXAgPSAxO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHROb3cgPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBub2RlRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICBAVmlld0NoaWxkKCdob3VyUmVmJykgaG91clJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ21pbnV0ZVJlZicpIG1pbnV0ZVJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlY29uZFJlZicpIHNlY29uZFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3VzZTEySG91cnNSZWYnKSB1c2UxMkhvdXJzUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgbW9kZWwhOiBEYXRlO1xyXG4gIGhvdXIhOiBudW1iZXIgfCBudWxsO1xyXG4gIG1pbnV0ZSE6IG51bWJlciB8IG51bGw7XHJcbiAgc2Vjb25kITogbnVtYmVyIHwgbnVsbDtcclxuICB1c2UxMkhvdXI6IHN0cmluZyA9ICdhbSc7XHJcbiAgc2Nyb2xsQW5pbWF0aW5nOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gIGhvdXJEYXRhOiBYSWRlbnRpdHlbXSA9IFtdO1xyXG4gIG1pbnV0ZURhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgc2Vjb25kRGF0YTogWElkZW50aXR5W10gPSBbXTtcclxuICB1c2UxMkhvdXJzRGF0YTogWElkZW50aXR5W10gPSBbXTtcclxuICBsb2NhbGU6IFhJMThuVGltZVBpY2tlciA9IHt9O1xyXG4gIGlzSW5pdCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgdmFsdWUgfSA9IGNoYW5nZXM7XHJcbiAgICBpZiAoWElzQ2hhbmdlKHZhbHVlKSkge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgdGhpcy5zZXRTY3JvbGxUb3AodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0SG91ckRhdGEoKTtcclxuICAgIHRoaXMuc2V0TWludXRlRGF0YSgpO1xyXG4gICAgdGhpcy5zZXRTZWNvbmREYXRhKCk7XHJcbiAgICB0aGlzLnNldFVzZTEySG91cnNEYXRhKCk7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4LnRpbWVQaWNrZXIgYXMgWEkxOG5UaW1lUGlja2VyKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IHg7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlMTJIb3Vycykge1xyXG4gICAgICAgICAgdGhpcy5zZXRVc2UxMkhvdXJzRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldFNjcm9sbFRvcCgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGkxOG46IFhJMThuU2VydmljZSkge31cclxuXHJcbiAgc2V0SG91ckRhdGEoKSB7XHJcbiAgICBsZXQgbGVuZ3RoID0gdGhpcy51c2UxMkhvdXJzID8gMTIgOiAyNDtcclxuICAgIHRoaXMuaG91ckRhdGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLmNlaWwobGVuZ3RoIC8gdGhpcy5ob3VyU3RlcCkgfSkubWFwKChfLCBpKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnVzZTEySG91cnMgJiYgaSA9PT0gMCkge1xyXG4gICAgICAgIGkgPSAxMjtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhpLCAyKSxcclxuICAgICAgICAgIGlkOiBpXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhpICogdGhpcy5ob3VyU3RlcCwgMiksXHJcbiAgICAgICAgICBpZDogaSAqIHRoaXMuaG91clN0ZXBcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE1pbnV0ZURhdGEoKSB7XHJcbiAgICB0aGlzLm1pbnV0ZURhdGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLmNlaWwoNjAgLyB0aGlzLm1pbnV0ZVN0ZXApIH0pLm1hcCgoXywgaSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnByZWZpeFplcm8oaSAqIHRoaXMubWludXRlU3RlcCwgMiksXHJcbiAgICAgICAgaWQ6IGkgKiB0aGlzLm1pbnV0ZVN0ZXBcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2Vjb25kRGF0YSgpIHtcclxuICAgIHRoaXMuc2Vjb25kRGF0YSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbCg2MCAvIHRoaXMuc2Vjb25kU3RlcCkgfSkubWFwKChfLCBpKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhpICogdGhpcy5zZWNvbmRTdGVwLCAyKSxcclxuICAgICAgICBpZDogaSAqIHRoaXMuc2Vjb25kU3RlcFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRVc2UxMkhvdXJzRGF0YSgpIHtcclxuICAgIHRoaXMudXNlMTJIb3Vyc0RhdGEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ2FtJyxcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGUuYW1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAncG0nLFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsZS5wbVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuc2V0VGltZSh0aGlzLm1vZGVsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRlZmF1bHROb3cpIHtcclxuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5zZXROb3coKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhvdXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMubWludXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlY29uZCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHQoKSB7XHJcbiAgICB0aGlzLm1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZSEpO1xyXG4gIH1cclxuXHJcbiAgc2V0Tm93KCkge1xyXG4gICAgY29uc3QgZGVmID0gbmV3IERhdGUoJzE5NzAtMDEtMDEnKTtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGVmLmdldEZ1bGxZZWFyKCksIGRlZi5nZXRNb250aCgpLCBkZWYuZ2V0RGF0ZSgpLCBub3cuZ2V0SG91cnMoKSwgbm93LmdldE1pbnV0ZXMoKSwgbm93LmdldFNlY29uZHMoKSk7XHJcbiAgfVxyXG5cclxuICBzZXRaZXJvKCkge1xyXG4gICAgY29uc3QgZGVmID0gbmV3IERhdGUoJzE5NzAtMDEtMDEnKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkZWYuZ2V0RnVsbFllYXIoKSwgZGVmLmdldE1vbnRoKCksIGRlZi5nZXREYXRlKCksIDAsIDAsIDApO1xyXG4gIH1cclxuXHJcbiAgc2V0VGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy51c2UxMkhvdXJzKSB7XHJcbiAgICAgIGxldCBob3VyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgICBpZiAoaG91ciA+IDEyKSB7XHJcbiAgICAgICAgdGhpcy5ob3VyID0gaG91ciAtIDEyO1xyXG4gICAgICAgIHRoaXMudXNlMTJIb3VyID0gJ3BtJztcclxuICAgICAgfSBlbHNlIGlmIChob3VyID09PSAxMikge1xyXG4gICAgICAgIHRoaXMuaG91ciA9IDEyO1xyXG4gICAgICAgIHRoaXMudXNlMTJIb3VyID0gJ3BtJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhvdXIgPSBob3VyID09PSAwID8gMTIgOiBob3VyO1xyXG4gICAgICAgIHRoaXMudXNlMTJIb3VyID0gJ2FtJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ob3VyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5taW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgIHRoaXMuc2Vjb25kID0gZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICBwcmVmaXhaZXJvKG51bTogbnVtYmVyLCBuOiBudW1iZXIpIHtcclxuICAgIHJldHVybiAoQXJyYXkobikuam9pbignMCcpICsgbnVtKS5zbGljZSgtbik7XHJcbiAgfVxyXG5cclxuICBzZXRTY3JvbGxUb3AoYW5pbWF0aW5nID0gZmFsc2UpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ2hvdXInLCB0aGlzLmhvdXJSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuaG91ciEsIGFuaW1hdGluZyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkKCdtaW51dGUnLCB0aGlzLm1pbnV0ZVJlZj8ubmF0aXZlRWxlbWVudCwgdGhpcy5taW51dGUhLCBhbmltYXRpbmcpO1xyXG4gICAgdGhpcy5zZWxlY3RlZCgnc2Vjb25kJywgdGhpcy5zZWNvbmRSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc2Vjb25kISwgYW5pbWF0aW5nKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ3VzZTEySG91cicsIHRoaXMudXNlMTJIb3Vyc1JlZj8ubmF0aXZlRWxlbWVudCwgdGhpcy51c2UxMkhvdXIsIGFuaW1hdGluZyk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZCh0eXBlOiAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnIHwgJ3VzZTEySG91cicsIGVsZT86IEhUTUxFbGVtZW50LCBudW0/OiBudW1iZXIgfCBzdHJpbmcsIGFuaW1hdGluZyA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIWVsZSB8fCBYSXNOdWxsKG51bSkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnNjcm9sbEFuaW1hdGluZ1tlbGUuY2xhc3NOYW1lXSkgcmV0dXJuO1xyXG4gICAgbGV0IGxlbiA9IE51bWJlcihudW0pO1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2hvdXInOlxyXG4gICAgICAgIGxlbiA9IHRoaXMuaG91ckRhdGEuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBudW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgIGxlbiA9IHRoaXMubWludXRlRGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NlY29uZCc6XHJcbiAgICAgICAgbGVuID0gdGhpcy5zZWNvbmREYXRhLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbnVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndXNlMTJIb3VyJzpcclxuICAgICAgICBsZW4gPSB0aGlzLnVzZTEySG91cnNEYXRhLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbnVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50ID0gZWxlLnF1ZXJ5U2VsZWN0b3IoYC54LWxpc3QgeC1saXN0LW9wdGlvbjpudGgtY2hpbGQoJHtsZW4gKyAxfSlgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChjdXJyZW50KSB7XHJcbiAgICAgIGlmIChhbmltYXRpbmcpIHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvKGVsZSwgY3VycmVudC5vZmZzZXRUb3AsIDEyMCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWxlLnNjcm9sbFRvcCA9IGN1cnJlbnQub2Zmc2V0VG9wO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0xhc3RJdGVtKGRhdGE6IFhJZGVudGl0eVtdLCBpdGVtOiBYSWRlbnRpdHkpIHtcclxuICAgIHJldHVybiBkYXRhLmluZGV4T2YoaXRlbSkgPT09IGRhdGEubGVuZ3RoIC0gMTtcclxuICB9XHJcblxyXG4gIGl0ZW1DbGljayh0eXBlOiAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnIHwgJ3VzZTEySG91cnMnKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5tb2RlbCkpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuc2V0WmVybygpO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zZXRNaW51dGVzKHRoaXMubWludXRlISk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NlY29uZCc6XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zZXRTZWNvbmRzKHRoaXMuc2Vjb25kISk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2hvdXInOlxyXG4gICAgICAgIGlmICh0aGlzLnVzZTEySG91cnMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnVzZTEySG91ciA9PT0gJ3BtJyAmJiB0aGlzLmhvdXIgIT09IDEyKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyISArIDEyKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdhbScgJiYgdGhpcy5ob3VyID09PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNldEhvdXJzKDApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3VzZTEySG91cnMnOlxyXG4gICAgICAgIGlmICh0aGlzLnVzZTEySG91ciA9PT0gJ3BtJyAmJiB0aGlzLmhvdXIgIT09IDEyKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsLnNldEhvdXJzKHRoaXMuaG91ciEgKyAxMik7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVzZTEySG91ciA9PT0gJ2FtJyAmJiB0aGlzLmhvdXIgPT09IDEyKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsLnNldEhvdXJzKDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsLnNldEhvdXJzKHRoaXMuaG91ciEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHRydWUpO1xyXG4gICAgdGhpcy5ub2RlRW1pdC5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxUbyhlbGVtZW50OiBIVE1MRWxlbWVudCwgdG86IG51bWJlciwgZHVyYXRpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgY2xzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lO1xyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRvIC0gZWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBwZXJUaWNrID0gKGRpZmZlcmVuY2UgLyBkdXJhdGlvbikgKiAxMDtcclxuICAgIHRoaXMuc2Nyb2xsQW5pbWF0aW5nW2Nsc05hbWVdID0gdHJ1ZTtcclxuICAgIHJlcUFuaW1GcmFtZSgoKSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3AgKyBwZXJUaWNrO1xyXG4gICAgICBpZiAoZWxlbWVudC5zY3JvbGxUb3AgPT09IHRvIHx8IGR1cmF0aW9uIDw9IDApIHtcclxuICAgICAgICB0aGlzLnNjcm9sbEFuaW1hdGluZ1tjbHNOYW1lXSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvKGVsZW1lbnQsIHRvLCBkdXJhdGlvbiAtIDEwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtdGltZS1waWNrZXItZnJhbWUtaG91clwiICNob3VyUmVmPlxyXG4gICAgPHgtbGlzdCBbZGF0YV09XCJob3VyRGF0YVwiIFsobmdNb2RlbCldPVwiaG91clwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCdob3VyJylcIj48L3gtbGlzdD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10aW1lLXBpY2tlci1mcmFtZS1taW51dGVcIiAjbWludXRlUmVmICpuZ0lmPVwidHlwZSAhPT0gJ2hvdXInXCI+XHJcbiAgICA8eC1saXN0IFtkYXRhXT1cIm1pbnV0ZURhdGFcIiBbKG5nTW9kZWwpXT1cIm1pbnV0ZVwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCdtaW51dGUnKVwiPjwveC1saXN0PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lLXNlY29uZFwiICNzZWNvbmRSZWYgKm5nSWY9XCJ0eXBlID09PSAndGltZSdcIj5cclxuICAgIDx4LWxpc3QgW2RhdGFdPVwic2Vjb25kRGF0YVwiIFsobmdNb2RlbCldPVwic2Vjb25kXCIgKG5vZGVDbGljayk9XCJpdGVtQ2xpY2soJ3NlY29uZCcpXCI+PC94LWxpc3Q+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInVzZTEySG91cnNcIiBjbGFzcz1cIngtdGltZS1waWNrZXItZnJhbWUtdXNlMTJIb3Vyc1wiICN1c2UxMkhvdXJzUmVmPlxyXG4gICAgPHgtbGlzdCBbZGF0YV09XCJ1c2UxMkhvdXJzRGF0YVwiIFsobmdNb2RlbCldPVwidXNlMTJIb3VyXCIgKG5vZGVDbGljayk9XCJpdGVtQ2xpY2soJ3VzZTEySG91cnMnKVwiPjwveC1saXN0PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -59,7 +59,7 @@ export class XTimePickerPortalComponent {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
/** @nocollapse */ XTimePickerPortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTimePickerPortalComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
/** @nocollapse */ XTimePickerPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTimePickerPortalComponent, selector: "x-time-picker-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, ngImport: i0, template: "<div class=\"x-time-picker-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-time-picker-frame\r\n [type]=\"type\"\r\n [value]=\"value\"\r\n [use12Hours]=\"use12Hours\"\r\n [hourStep]=\"hourStep\"\r\n [minuteStep]=\"minuteStep\"\r\n [secondStep]=\"secondStep\"\r\n (nodeEmit)=\"nodeEmit($event)\"\r\n ></x-time-picker-frame>\r\n <div *ngIf=\"preset\" class=\"x-time-picker-portal-preset\">\r\n <ng-container *ngFor=\"let item of preset\">\r\n <x-button type=\"text\" *ngIf=\"!item.func && item.id === 'now'\" (click)=\"onNow()\">{{ locale.now }}</x-button>\r\n <x-button type=\"text\" *ngIf=\"item.func\" (click)=\"onPresetFunc(item)\">{{ item.label }}</x-button>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-time-picker-portal{display:flex;flex-direction:column;height:100%;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background)}.x-time-picker-portal-preset{display:flex;align-items:center;justify-content:center;border-top:var(--x-border-width) solid var(--x-border)}.x-time-picker-portal-preset>x-button{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XButtonComponent, selector: "x-button" }, { kind: "component", type: i4.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep"], outputs: ["nodeEmit"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
62
|
+
/** @nocollapse */ XTimePickerPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTimePickerPortalComponent, selector: "x-time-picker-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, ngImport: i0, template: "<div class=\"x-time-picker-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-time-picker-frame\r\n [type]=\"type\"\r\n [value]=\"value\"\r\n [use12Hours]=\"use12Hours\"\r\n [hourStep]=\"hourStep\"\r\n [minuteStep]=\"minuteStep\"\r\n [secondStep]=\"secondStep\"\r\n (nodeEmit)=\"nodeEmit($event)\"\r\n ></x-time-picker-frame>\r\n <div *ngIf=\"preset\" class=\"x-time-picker-portal-preset\">\r\n <ng-container *ngFor=\"let item of preset\">\r\n <x-button type=\"text\" *ngIf=\"!item.func && item.id === 'now'\" (click)=\"onNow()\">{{ locale.now }}</x-button>\r\n <x-button type=\"text\" *ngIf=\"item.func\" (click)=\"onPresetFunc(item)\">{{ item.label }}</x-button>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-time-picker-portal{display:flex;flex-direction:column;height:100%;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background)}.x-time-picker-portal-preset{display:flex;align-items:center;justify-content:center;border-top:var(--x-border-width) solid var(--x-border)}.x-time-picker-portal-preset>x-button{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XButtonComponent, selector: "x-button" }, { kind: "component", type: i4.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow"], outputs: ["nodeEmit"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTimePickerPortalComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
65
|
args: [{ selector: `${XTimePickerPortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], template: "<div class=\"x-time-picker-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-time-picker-frame\r\n [type]=\"type\"\r\n [value]=\"value\"\r\n [use12Hours]=\"use12Hours\"\r\n [hourStep]=\"hourStep\"\r\n [minuteStep]=\"minuteStep\"\r\n [secondStep]=\"secondStep\"\r\n (nodeEmit)=\"nodeEmit($event)\"\r\n ></x-time-picker-frame>\r\n <div *ngIf=\"preset\" class=\"x-time-picker-portal-preset\">\r\n <ng-container *ngFor=\"let item of preset\">\r\n <x-button type=\"text\" *ngIf=\"!item.func && item.id === 'now'\" (click)=\"onNow()\">{{ locale.now }}</x-button>\r\n <x-button type=\"text\" *ngIf=\"item.func\" (click)=\"onPresetFunc(item)\">{{ item.label }}</x-button>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-time-picker-portal{display:flex;flex-direction:column;height:100%;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background)}.x-time-picker-portal-preset{display:flex;align-items:center;justify-content:center;border-top:var(--x-border-width) solid var(--x-border)}.x-time-picker-portal-preset>x-button{flex:1}\n"] }]
|
|
@@ -73,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
73
73
|
type: HostListener,
|
|
74
74
|
args: ['@x-connect-base-animation.start', ['$event']]
|
|
75
75
|
}] } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcG9ydGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXBvcnRhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90aW1lLXBpY2tlci90aW1lLXBpY2tlci1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFzQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JHLE9BQU8sRUFBWSxxQkFBcUIsRUFBc0IsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQVloRCxNQUFNLE9BQU8sMEJBQTBCO0lBMkJyQyxZQUFtQixRQUFtQixFQUFTLEdBQXNCLEVBQVUsSUFBa0I7UUFBOUUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBYztRQWxCakcsU0FBSSxHQUFvQixNQUFNLENBQUM7UUFZL0IsV0FBTSxHQUF3QixFQUFFLENBQUM7UUFFakMsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFFckIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFMkQsQ0FBQztJQXpCekMsSUFBSSxDQUFDLEtBQXVCO1FBQ3RGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFDNEQsS0FBSztRQUNoRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFxQkQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO2FBQ25CLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUE2QixDQUFDLEVBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFZO1FBQzFCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXVCO1FBQ2xDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7OzBJQW5FVSwwQkFBMEI7OEhBQTFCLDBCQUEwQiwwUEMxQnZDLHl3QkFpQkEsc2pDRE9jLENBQUMscUJBQXFCLENBQUM7MkZBRXhCLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSxHQUFHLHVCQUF1QixFQUFFLGlCQUd2QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMscUJBQXFCLENBQUM7MkpBR2MsU0FBUztzQkFBekQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBQ29CLElBQUk7c0JBQS9ELFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUcsS0FBSztzQkFBakUsWUFBWTt1QkFBQyxpQ0FBaUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgT25EZXN0cm95LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlclBvcnRhbFByZWZpeCwgWFRpbWVQaWNrZXJQcmVzZXQsIFhUaW1lUGlja2VyVHlwZSB9IGZyb20gJy4vdGltZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYQm9vbGVhbiwgWENvbm5lY3RCYXNlQW5pbWF0aW9uLCBYUG9zaXRpb25Ub3BCb3R0b20gfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWElucHV0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UsIFhJMThuVGltZVBpY2tlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUaW1lUGlja2VyUG9ydGFsUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLXBvcnRhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXItcG9ydGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbWENvbm5lY3RCYXNlQW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRpbWVQaWNrZXJQb3J0YWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQEhvc3RCaW5kaW5nKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uJykgcHVibGljIHBsYWNlbWVudCE6IFhQb3NpdGlvblRvcEJvdHRvbTtcclxuICBASG9zdExpc3RlbmVyKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uLmRvbmUnLCBbJyRldmVudCddKSBkb25lKGV2ZW50OiB7IHRvU3RhdGU6IGFueSB9KSB7XHJcbiAgICB0aGlzLmFuaW1hdGluZyhmYWxzZSk7XHJcbiAgICBldmVudC50b1N0YXRlID09PSAndm9pZCcgJiYgdGhpcy5kZXN0cm95UG9ydGFsKCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uc3RhcnQnLCBbJyRldmVudCddKSBzdGFydCgpIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKHRydWUpO1xyXG4gIH1cclxuICB0eXBlOiBYVGltZVBpY2tlclR5cGUgPSAndGltZSc7XHJcbiAgdmFsdWU6IGFueTtcclxuICB2YWx1ZUNoYW5nZSE6IFN1YmplY3Q8YW55PjtcclxuICBwb3NpdGlvbkNoYW5nZSE6IFN1YmplY3Q8YW55PjtcclxuICBjbG9zZVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGRlc3Ryb3lQb3J0YWwhOiBGdW5jdGlvbjtcclxuICBhbmltYXRpbmchOiBGdW5jdGlvbjtcclxuICBpbnB1dENvbSE6IFhJbnB1dENvbXBvbmVudDtcclxuICB1c2UxMkhvdXJzITogWEJvb2xlYW47XHJcbiAgaG91clN0ZXAhOiBudW1iZXI7XHJcbiAgbWludXRlU3RlcCE6IG51bWJlcjtcclxuICBzZWNvbmRTdGVwITogbnVtYmVyO1xyXG4gIHByZXNldDogWFRpbWVQaWNrZXJQcmVzZXRbXSA9IFtdO1xyXG4gIG5vZGVFbWl0ITogKGRhdGU6IERhdGUpID0+IHZvaWQ7XHJcbiAgbG9jYWxlOiBYSTE4blRpbWVQaWNrZXIgPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGkxOG46IFhJMThuU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB4O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnBsYWNlbWVudCA9IHg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHgudGltZVBpY2tlciBhcyBYSTE4blRpbWVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgb25QcmVzZXRGdW5jKGl0ZW06IFhUaW1lUGlja2VyUHJlc2V0KSB7XHJcbiAgICBsZXQgZGF0ZSA9IGl0ZW0uZnVuYygpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KGRhdGUpO1xyXG4gICAgdGhpcy5ub2RlRW1pdChkYXRlKTtcclxuICB9XHJcblxyXG4gIG9uTm93KCkge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KGRhdGUpO1xyXG4gICAgdGhpcy5ub2RlRW1pdChkYXRlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtdGltZS1waWNrZXItcG9ydGFsXCIgKGNsaWNrKT1cImlucHV0Q29tLmlucHV0Rm9jdXMoKTsgc3RvcFByb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICA8eC10aW1lLXBpY2tlci1mcmFtZVxyXG4gICAgW3R5cGVdPVwidHlwZVwiXHJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgW3VzZTEySG91cnNdPVwidXNlMTJIb3Vyc1wiXHJcbiAgICBbaG91clN0ZXBdPVwiaG91clN0ZXBcIlxyXG4gICAgW21pbnV0ZVN0ZXBdPVwibWludXRlU3RlcFwiXHJcbiAgICBbc2Vjb25kU3RlcF09XCJzZWNvbmRTdGVwXCJcclxuICAgIChub2RlRW1pdCk9XCJub2RlRW1pdCgkZXZlbnQpXCJcclxuICA+PC94LXRpbWUtcGlja2VyLWZyYW1lPlxyXG4gIDxkaXYgKm5nSWY9XCJwcmVzZXRcIiBjbGFzcz1cIngtdGltZS1waWNrZXItcG9ydGFsLXByZXNldFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcmVzZXRcIj5cclxuICAgICAgPHgtYnV0dG9uIHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhaXRlbS5mdW5jICYmIGl0ZW0uaWQgPT09ICdub3cnXCIgKGNsaWNrKT1cIm9uTm93KClcIj57eyBsb2NhbGUubm93IH19PC94LWJ1dHRvbj5cclxuICAgICAgPHgtYnV0dG9uIHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCJpdGVtLmZ1bmNcIiAoY2xpY2spPVwib25QcmVzZXRGdW5jKGl0ZW0pXCI+e3sgaXRlbS5sYWJlbCB9fTwveC1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -232,4 +232,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
232
232
|
|
|
233
233
|
export { XBaseFormModule, XControlValueAccessor, XFormInputValidator, XFormProp, XValueAccessor };
|
|
234
234
|
//# sourceMappingURL=ng-nest-ui-base-form.mjs.map
|
|
235
|
-
//# sourceMappingURL=ng-nest-ui-base-form.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-base-form.mjs","sources":["../../../../lib/ng-nest/ui/base-form/base-form.property.ts","../../../../lib/ng-nest/ui/base-form/base-form.component.ts","../../../../lib/ng-nest/ui/base-form/base-form.module.ts","../../../../lib/ng-nest/ui/base-form/ng-nest-ui-base-form.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { XAlign, XBoolean, XDirection, XInputBoolean, XJustify, XProperty, XSize, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * 表单对象共有的参数\r\n */\r\n@Component({ template: '' })\r\nexport class XFormProp extends XProperty {\r\n /**\r\n * 标签\r\n */\r\n @Input() label?: string = '';\r\n /**\r\n * 标签宽度\r\n */\r\n @Input() labelWidth?: string = '';\r\n /**\r\n * 标签文字对齐方式\r\n */\r\n @Input() labelAlign?: XAlign = 'start';\r\n /**\r\n * flex 布局下的子元素水平排列方式\r\n */\r\n @Input() justify?: XJustify = 'start';\r\n /**\r\n * flex 布局下的子元素垂直排列方式\r\n */\r\n @Input() align?: XAlign = 'start';\r\n /**\r\n * flex 布局下的子元素排列方向\r\n */\r\n @Input() direction?: XDirection = 'column';\r\n /**\r\n * 尺寸\r\n */\r\n @Input() size?: XSize = 'medium';\r\n /**\r\n * 输入提示信息\r\n */\r\n @Input() placeholder?: string = '';\r\n /**\r\n * 禁用\r\n */\r\n @Input() @XInputBoolean() disabled: XBoolean = false;\r\n /**\r\n * 必填\r\n */\r\n @Input() @XInputBoolean() required: XBoolean = false;\r\n /**\r\n * 只读\r\n */\r\n @Input() @XInputBoolean() readonly: XBoolean = false;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n @Input() valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n @Input() valueTplContext: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n @Input() before!: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n @Input() after!: XTemplate;\r\n /**\r\n * 正则验证规则\r\n */\r\n @Input() pattern?: any;\r\n /**\r\n * 验证不通过提示文字\r\n */\r\n @Input() message?: string | string[];\r\n /**\r\n * 激活状态\r\n */\r\n @Input() @XInputBoolean() active: XBoolean = false;\r\n /**\r\n * 输入框点击样式\r\n */\r\n @Input() @XInputBoolean() pointer: XBoolean = false;\r\n /**\r\n * 输入验证函数\r\n */\r\n @Input() inputValidator!: (value: any) => boolean;\r\n /**\r\n * 激活状态\r\n */\r\n @Output() activeChange = new EventEmitter<XBoolean>();\r\n}\r\n\r\nexport interface XFormOption {\r\n /**\r\n * 标签\r\n */\r\n label?: any;\r\n /**\r\n * 标签宽度\r\n */\r\n labelWidth?: string;\r\n /**\r\n * 标签文字对齐方式\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * flex 布局下的子元素水平排列方式\r\n */\r\n justify?: XJustify;\r\n /**\r\n * flex 布局下的子元素垂直排列方式\r\n */\r\n align?: XAlign;\r\n /**\r\n * flex 布局下的子元素排列方向\r\n */\r\n direction?: XDirection;\r\n /**\r\n * 尺寸\r\n */\r\n size?: XSize;\r\n /**\r\n * 输入提示信息\r\n */\r\n placeholder?: string;\r\n /**\r\n * 禁用\r\n */\r\n disabled?: XBoolean;\r\n /**\r\n * 必填\r\n */\r\n required?: XBoolean;\r\n /**\r\n * 正则验证规则\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * 验证不通过提示文字\r\n */\r\n message?: string | string[];\r\n /**\r\n * 激活状态\r\n */\r\n active?: XBoolean;\r\n /**\r\n * 输入框点击样式\r\n */\r\n pointer?: XBoolean;\r\n /**\r\n * 输入验证函数\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n","import { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { ChangeDetectorRef, Component, forwardRef, Renderer2, Type } from '@angular/core';\r\nimport { XJustify, XAlign, XDirection, XIsEmpty, XClassMap, XSetFlex, XBoolean, XIsUndefined, XIsFunction } from '@ng-nest/ui/core';\r\nimport { XFormProp } from './base-form.property';\r\n\r\n@Component({ template: '' })\r\nexport class XControlValueAccessor<T> extends XFormProp implements ControlValueAccessor {\r\n get invalid() {\r\n return this.validator && ((!XIsEmpty(this.value) && this.invalidPattern) || this.invalidInputValidator);\r\n }\r\n get invalidPattern(): boolean {\r\n if (!this.validator || XIsUndefined(this.pattern)) return false;\r\n let result = false;\r\n let index = 0;\r\n if (Array.isArray(this.pattern)) {\r\n for (const pt of this.pattern) {\r\n result = !new RegExp(pt).test(this.value as any);\r\n if (result) {\r\n this.invalidIndex = index;\r\n break;\r\n }\r\n index++;\r\n }\r\n } else {\r\n result = !new RegExp(this.pattern as RegExp).test(this.value as any);\r\n }\r\n return result;\r\n }\r\n get requiredIsEmpty() {\r\n return this.validator && this.required && XIsEmpty(this.value);\r\n }\r\n get invalidMessage(): string {\r\n if (!this.validator) return '';\r\n if (Array.isArray(this.message)) {\r\n return this.message.length > this.invalidIndex ? this.message[this.invalidIndex] : '';\r\n } else {\r\n return this.message as string;\r\n }\r\n }\r\n cdr!: ChangeDetectorRef;\r\n invalidIndex: number = 0;\r\n labelMap: XClassMap = {};\r\n value!: T;\r\n validator: XBoolean = false;\r\n invalidInputValidator = false;\r\n onChange!: (value: T) => void;\r\n onTouched!: () => void;\r\n writeValue(value: T): void {\r\n this.value = value;\r\n }\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean) {\r\n this.disabled = disabled;\r\n }\r\n setFlex(ele: Element, renderer: Renderer2, justify?: XJustify, align?: XAlign, direction?: XDirection) {\r\n return XSetFlex(ele, renderer, justify, align, direction);\r\n }\r\n formControlValidator() {\r\n this.validator = true;\r\n }\r\n}\r\n\r\nexport function XValueAccessor<T>(component: Type<T>) {\r\n return { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => component), multi: true };\r\n}\r\n\r\nexport function XFormInputValidator(func: (value: any) => boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!XIsFunction(func)) return null;\r\n const invalid = !func(control.value);\r\n return invalid ? { inputValidator: true } : null;\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XControlValueAccessor } from './base-form.component';\r\nimport { XFormProp } from './base-form.property';\r\n\r\n@NgModule({\r\n declarations: [XControlValueAccessor, XFormProp],\r\n exports: [XControlValueAccessor, XFormProp]\r\n})\r\nexport class XBaseFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-base-form.mjs","sources":["../../../../lib/ng-nest/ui/base-form/base-form.property.ts","../../../../lib/ng-nest/ui/base-form/base-form.component.ts","../../../../lib/ng-nest/ui/base-form/base-form.module.ts","../../../../lib/ng-nest/ui/base-form/ng-nest-ui-base-form.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { XAlign, XBoolean, XDirection, XInputBoolean, XJustify, XProperty, XSize, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * 表单对象共有的参数\r\n */\r\n@Component({ template: '' })\r\nexport class XFormProp extends XProperty {\r\n /**\r\n * 标签\r\n */\r\n @Input() label?: string = '';\r\n /**\r\n * 标签宽度\r\n */\r\n @Input() labelWidth?: string = '';\r\n /**\r\n * 标签文字对齐方式\r\n */\r\n @Input() labelAlign?: XAlign = 'start';\r\n /**\r\n * flex 布局下的子元素水平排列方式\r\n */\r\n @Input() justify?: XJustify = 'start';\r\n /**\r\n * flex 布局下的子元素垂直排列方式\r\n */\r\n @Input() align?: XAlign = 'start';\r\n /**\r\n * flex 布局下的子元素排列方向\r\n */\r\n @Input() direction?: XDirection = 'column';\r\n /**\r\n * 尺寸\r\n */\r\n @Input() size?: XSize = 'medium';\r\n /**\r\n * 输入提示信息\r\n */\r\n @Input() placeholder?: string | string[] = '';\r\n /**\r\n * 禁用\r\n */\r\n @Input() @XInputBoolean() disabled: XBoolean = false;\r\n /**\r\n * 必填\r\n */\r\n @Input() @XInputBoolean() required: XBoolean = false;\r\n /**\r\n * 只读\r\n */\r\n @Input() @XInputBoolean() readonly: XBoolean = false;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n @Input() valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n @Input() valueTplContext: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n @Input() before!: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n @Input() after!: XTemplate;\r\n /**\r\n * 正则验证规则\r\n */\r\n @Input() pattern?: any;\r\n /**\r\n * 验证不通过提示文字\r\n */\r\n @Input() message?: string | string[];\r\n /**\r\n * 激活状态\r\n */\r\n @Input() @XInputBoolean() active: XBoolean = false;\r\n /**\r\n * 输入框点击样式\r\n */\r\n @Input() @XInputBoolean() pointer: XBoolean = false;\r\n /**\r\n * 输入验证函数\r\n */\r\n @Input() inputValidator!: (value: any) => boolean;\r\n /**\r\n * 激活状态\r\n */\r\n @Output() activeChange = new EventEmitter<XBoolean>();\r\n}\r\n\r\nexport interface XFormOption {\r\n /**\r\n * 标签\r\n */\r\n label?: any;\r\n /**\r\n * 标签宽度\r\n */\r\n labelWidth?: string;\r\n /**\r\n * 标签文字对齐方式\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * flex 布局下的子元素水平排列方式\r\n */\r\n justify?: XJustify;\r\n /**\r\n * flex 布局下的子元素垂直排列方式\r\n */\r\n align?: XAlign;\r\n /**\r\n * flex 布局下的子元素排列方向\r\n */\r\n direction?: XDirection;\r\n /**\r\n * 尺寸\r\n */\r\n size?: XSize;\r\n /**\r\n * 输入提示信息\r\n */\r\n placeholder?: string | string[];\r\n /**\r\n * 禁用\r\n */\r\n disabled?: XBoolean;\r\n /**\r\n * 必填\r\n */\r\n required?: XBoolean;\r\n /**\r\n * 正则验证规则\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * 验证不通过提示文字\r\n */\r\n message?: string | string[];\r\n /**\r\n * 激活状态\r\n */\r\n active?: XBoolean;\r\n /**\r\n * 输入框点击样式\r\n */\r\n pointer?: XBoolean;\r\n /**\r\n * 输入验证函数\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n","import { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { ChangeDetectorRef, Component, forwardRef, Renderer2, Type } from '@angular/core';\r\nimport { XJustify, XAlign, XDirection, XIsEmpty, XClassMap, XSetFlex, XBoolean, XIsUndefined, XIsFunction } from '@ng-nest/ui/core';\r\nimport { XFormProp } from './base-form.property';\r\n\r\n@Component({ template: '' })\r\nexport class XControlValueAccessor<T> extends XFormProp implements ControlValueAccessor {\r\n get invalid() {\r\n return this.validator && ((!XIsEmpty(this.value) && this.invalidPattern) || this.invalidInputValidator);\r\n }\r\n get invalidPattern(): boolean {\r\n if (!this.validator || XIsUndefined(this.pattern)) return false;\r\n let result = false;\r\n let index = 0;\r\n if (Array.isArray(this.pattern)) {\r\n for (const pt of this.pattern) {\r\n result = !new RegExp(pt).test(this.value as any);\r\n if (result) {\r\n this.invalidIndex = index;\r\n break;\r\n }\r\n index++;\r\n }\r\n } else {\r\n result = !new RegExp(this.pattern as RegExp).test(this.value as any);\r\n }\r\n return result;\r\n }\r\n get requiredIsEmpty() {\r\n return this.validator && this.required && XIsEmpty(this.value);\r\n }\r\n get invalidMessage(): string {\r\n if (!this.validator) return '';\r\n if (Array.isArray(this.message)) {\r\n return this.message.length > this.invalidIndex ? this.message[this.invalidIndex] : '';\r\n } else {\r\n return this.message as string;\r\n }\r\n }\r\n cdr!: ChangeDetectorRef;\r\n invalidIndex: number = 0;\r\n labelMap: XClassMap = {};\r\n value!: T;\r\n validator: XBoolean = false;\r\n invalidInputValidator = false;\r\n onChange!: (value: T) => void;\r\n onTouched!: () => void;\r\n writeValue(value: T): void {\r\n this.value = value;\r\n }\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean) {\r\n this.disabled = disabled;\r\n }\r\n setFlex(ele: Element, renderer: Renderer2, justify?: XJustify, align?: XAlign, direction?: XDirection) {\r\n return XSetFlex(ele, renderer, justify, align, direction);\r\n }\r\n formControlValidator() {\r\n this.validator = true;\r\n }\r\n}\r\n\r\nexport function XValueAccessor<T>(component: Type<T>) {\r\n return { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => component), multi: true };\r\n}\r\n\r\nexport function XFormInputValidator(func: (value: any) => boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!XIsFunction(func)) return null;\r\n const invalid = !func(control.value);\r\n return invalid ? { inputValidator: true } : null;\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XControlValueAccessor } from './base-form.component';\r\nimport { XFormProp } from './base-form.property';\r\n\r\n@NgModule({\r\n declarations: [XControlValueAccessor, XFormProp],\r\n exports: [XControlValueAccessor, XFormProp]\r\n})\r\nexport class XBaseFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|