@energinet/watt 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/picker/__shared/watt-picker-base.js +16 -12
- package/esm2022/picker/datepicker/watt-datepicker.component.js +55 -38
- package/esm2022/picker/timepicker/watt-timepicker.component.js +1 -1
- package/package.json +1 -1
- package/picker/__shared/watt-picker-base.d.ts +9 -8
- package/picker/datepicker/watt-datepicker.component.d.ts +15 -15
- package/picker/timepicker/watt-timepicker.component.d.ts +3 -3
|
@@ -16,22 +16,24 @@
|
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
18
|
//#endregion
|
|
19
|
-
import {
|
|
20
|
-
import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, HostBinding, Input, inject, } from '@angular/core';
|
|
19
|
+
import { Input, inject, Directive, ElementRef, DestroyRef, HostBinding, ChangeDetectorRef, input, } from '@angular/core';
|
|
21
20
|
import { NgControl } from '@angular/forms';
|
|
21
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
22
22
|
import { Subject } from 'rxjs';
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
export class WattPickerBase {
|
|
25
|
-
|
|
25
|
+
destroyRef = inject(DestroyRef);
|
|
26
26
|
changeDetectionRef = inject(ChangeDetectorRef);
|
|
27
27
|
ngControl = inject(NgControl, { optional: true });
|
|
28
|
+
elementRef = inject(ElementRef);
|
|
28
29
|
static nextId = 0;
|
|
29
30
|
id;
|
|
30
31
|
initialValue = null;
|
|
31
32
|
focused = false;
|
|
32
33
|
controlType = 'mat-date-range-input'; // We keep the controlType of Material Date Range Input as is, to keep some styling.
|
|
33
34
|
stateChanges = new Subject();
|
|
34
|
-
|
|
35
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
36
|
+
userAriaDescribedBy = input(undefined, ...(ngDevMode ? [{ debugName: "userAriaDescribedBy", alias: 'aria-describedby' }] : [{ alias: 'aria-describedby' }]));
|
|
35
37
|
get placeholder() {
|
|
36
38
|
return this._placeholder;
|
|
37
39
|
}
|
|
@@ -47,20 +49,22 @@ export class WattPickerBase {
|
|
|
47
49
|
return null;
|
|
48
50
|
}
|
|
49
51
|
set value(value) {
|
|
50
|
-
const
|
|
52
|
+
const input = this.input();
|
|
53
|
+
const startInput = this.startInput();
|
|
54
|
+
const endInput = this.endInput();
|
|
55
|
+
const inputNotToBeInTheDocument = !this.range ? !input : !startInput;
|
|
51
56
|
if (inputNotToBeInTheDocument) {
|
|
52
57
|
this.initialValue = value;
|
|
53
58
|
return;
|
|
54
59
|
}
|
|
55
|
-
const startInput = this.startInput();
|
|
56
|
-
const endInput = this.endInput();
|
|
57
|
-
const input = this.input();
|
|
58
|
-
if (!startInput || !endInput || !input)
|
|
59
|
-
return;
|
|
60
60
|
if (this.range) {
|
|
61
|
+
if (!startInput || !endInput)
|
|
62
|
+
return;
|
|
61
63
|
this.setRangeValue(value, startInput.nativeElement, endInput.nativeElement);
|
|
62
64
|
}
|
|
63
65
|
else {
|
|
66
|
+
if (!input)
|
|
67
|
+
return;
|
|
64
68
|
this.setSingleValue(value, input.nativeElement);
|
|
65
69
|
}
|
|
66
70
|
this.stateChanges.next();
|
|
@@ -174,7 +178,7 @@ export class WattPickerBase {
|
|
|
174
178
|
// Intentionally left empty
|
|
175
179
|
};
|
|
176
180
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPickerBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
177
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
181
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.3", type: WattPickerBase, isStandalone: true, inputs: { userAriaDescribedBy: { classPropertyName: "userAriaDescribedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.watt-field-disabled": "this.disabled" } }, ngImport: i0 });
|
|
178
182
|
}
|
|
179
183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPickerBase, decorators: [{
|
|
180
184
|
type: Directive
|
|
@@ -190,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
190
194
|
}, {
|
|
191
195
|
type: Input
|
|
192
196
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1waWNrZXItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9fX3NoYXJlZC93YXR0LXBpY2tlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxZQUFZO0FBQ1osT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vQixNQUFNLE9BQWdCLGNBQWM7SUFHeEIsVUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7SUFDekQsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQVE1RCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVsQixFQUFFLENBQVM7SUFFWCxZQUFZLEdBQW9CLElBQUksQ0FBQztJQUVyQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLG9GQUFvRjtJQUUxSCxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV6QixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTNDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixD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RCxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUF3QixDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxpQkFBaUIsR0FBRyxDQUFDLEtBQTZCLEVBQVEsRUFBRTtRQUNwRSwyQkFBMkI7SUFDN0IsQ0FBQyxDQUFDO0lBRVEsMEJBQTBCLEdBQUcsR0FBUyxFQUFFO1FBQ2hELDJCQUEyQjtJQUM3QixDQUFDLENBQUM7dUdBbE9rQixjQUFjOzJGQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRG5DLFNBQVM7MkVBd0NKLEtBQUs7c0JBRFIsS0FBSztnQkFxQ0YsS0FBSztzQkFEUixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFjRixRQUFRO3NCQUZYLFdBQVc7dUJBQUMsMEJBQTBCOztzQkFDdEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpZ25hbCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBXYXR0RGF0ZVJhbmdlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0UGlja2VyVmFsdWUgfSBmcm9tICcuL3dhdHQtcGlja2VyLXZhbHVlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2F0dFBpY2tlckJhc2VcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgcHJvdGVjdGVkIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0aW9uUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlucHV0OiBTaWduYWw8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHN0YXJ0SW5wdXQ6IFNpZ25hbDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkPjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZW5kSW5wdXQ6IFNpZ25hbDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkPjtcblxuICBzdGF0aWMgbmV4dElkID0gMDtcblxuICBpZDogc3RyaW5nO1xuXG4gIGluaXRpYWxWYWx1ZTogV2F0dFBpY2tlclZhbHVlID0gbnVsbDtcblxuICBmb2N1c2VkID0gZmFsc2U7XG5cbiAgY29udHJvbFR5cGUgPSAnbWF0LWRhdGUtcmFuZ2UtaW5wdXQnOyAvLyBXZSBrZWVwIHRoZSBjb250cm9sVHlwZSBvZiBNYXRlcmlhbCBEYXRlIFJhbmdlIElucHV0IGFzIGlzLCB0byBrZWVwIHNvbWUgc3R5bGluZy5cblxuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBXYXR0RGF0ZVJhbmdlIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sPy52YWxpZCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB2YWx1ZTogeyBzdGFydCwgZW5kIH0sXG4gICAgICB9ID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogV2F0dFBpY2tlclZhbHVlKSB7XG4gICAgY29uc3QgaW5wdXROb3RUb0JlSW5UaGVEb2N1bWVudCA9ICF0aGlzLnJhbmdlID8gIXRoaXMuaW5wdXQoKSA6ICF0aGlzLnN0YXJ0SW5wdXQoKTtcblxuICAgIGlmIChpbnB1dE5vdFRvQmVJblRoZURvY3VtZW50KSB7XG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0SW5wdXQgPSB0aGlzLnN0YXJ0SW5wdXQoKTtcbiAgICBjb25zdCBlbmRJbnB1dCA9IHRoaXMuZW5kSW5wdXQoKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXQoKTtcblxuICAgIGlmICghc3RhcnRJbnB1dCB8fCAhZW5kSW5wdXQgfHwgIWlucHV0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlKHZhbHVlIGFzIFdhdHREYXRlUmFuZ2UsIHN0YXJ0SW5wdXQubmF0aXZlRWxlbWVudCwgZW5kSW5wdXQubmF0aXZlRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U2luZ2xlVmFsdWUodmFsdWUgYXMgRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LCBpbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2UocmFuZ2U6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyYW5nZSk7XG4gIH1cbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JhbmdlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLndhdHQtZmllbGQtZGlzYWJsZWQnKVxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBnZXQgZW1wdHkoKSB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5zdGFydCAmJiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5lbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8udmFsdWU/Lmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gIH1cblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm5nQ29udHJvbD8uaW52YWxpZCAmJiAhIXRoaXMubmdDb250cm9sPy50b3VjaGVkO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdFJhbmdlSW5wdXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0U2luZ2xlSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRSYW5nZUlucHV0KCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRTaW5nbGVJbnB1dCgpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRTaW5nbGVWYWx1ZShcbiAgICB2YWx1ZTogRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFJhbmdlVmFsdWUoXG4gICAgdmFsdWU6IFdhdHREYXRlUmFuZ2UsXG4gICAgc3RhcnRJbnB1dDogSFRNTElucHV0RWxlbWVudCxcbiAgICBlbmRJbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApOiB2b2lkO1xuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMuam9pbignICcpKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soKSB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXYXR0UGlja2VyVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlRm46ICh2YWx1ZTogc3RyaW5nIHwgV2F0dERhdGVSYW5nZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlUGFyZW50VmFsdWUgPSBvbkNoYW5nZUZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaEZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9IG9uVG91Y2hGbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRm9jdXNJbigpIHtcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnYXJpYS1vd25zJyk7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGlkID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQudmFsdWUpIDogbnVsbDtcbiAgICBjb25zdCBpc0NoaWxkID0gb3ZlcmxheT8uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KTtcblxuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KSAmJiAhaXNDaGlsZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtQYXJlbnRDb250cm9sQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwcm90ZWN0ZWQgY2hhbmdlUGFyZW50VmFsdWUgPSAodmFsdWU6IHN0cmluZyB8IFdhdHREYXRlUmFuZ2UpOiB2b2lkID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICBwcm90ZWN0ZWQgbWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG59XG4iXX0=
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1waWNrZXItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9fX3NoYXJlZC93YXR0LXBpY2tlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxZQUFZO0FBQ1osT0FBTyxFQUNMLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUVYLGlCQUFpQixFQUNqQixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNL0IsTUFBTSxPQUFnQixjQUFjO0lBR3hCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxVQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQU1uRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVsQixFQUFFLENBQVM7SUFFWCxZQUFZLEdBQW9CLElBQUksQ0FBQztJQUVyQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLG9GQUFvRjtJQUUxSCxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVuQywyREFBMkQ7SUFDM0QsbUJBQW1CLEdBQUcsS0FBSyxDQUFTLFNB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UUFDOUUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlELE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQXdCLENBQUMsQ0FBQztRQUVsRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4RixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsNkRBQTZEO0lBQ25ELGlCQUFpQixHQUFHLENBQUMsS0FBNkIsRUFBUSxFQUFFO1FBQ3BFLDJCQUEyQjtJQUM3QixDQUFDLENBQUM7SUFFUSwwQkFBMEIsR0FBRyxHQUFTLEVBQUU7UUFDaEQsMkJBQTJCO0lBQzdCLENBQUMsQ0FBQzt1R0FsT2tCLGNBQWM7MkZBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEbkMsU0FBUzsyRUF3Q0osS0FBSztzQkFEUixLQUFLO2dCQXFDRixLQUFLO3NCQURSLEtBQUs7Z0JBV0YsUUFBUTtzQkFEWCxLQUFLO2dCQWNGLFFBQVE7c0JBRlgsV0FBVzt1QkFBQywwQkFBMEI7O3NCQUN0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgU2lnbmFsLFxuICBpbmplY3QsXG4gIERpcmVjdGl2ZSxcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBEZXN0cm95UmVmLFxuICBIb3N0QmluZGluZyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgV2F0dERhdGVSYW5nZSB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9jb3JlL2RhdGUnO1xuXG5pbXBvcnQgeyBXYXR0UGlja2VyVmFsdWUgfSBmcm9tICcuL3dhdHQtcGlja2VyLXZhbHVlJztcbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdhdHRQaWNrZXJCYXNlXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIHByb3RlY3RlZCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0aW9uUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByb3RlY3RlZCBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICBhYnN0cmFjdCBpbnB1dDogU2lnbmFsPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCB1bmRlZmluZWQ+O1xuICBhYnN0cmFjdCBlbmRJbnB1dDogU2lnbmFsPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCB1bmRlZmluZWQ+O1xuICBhYnN0cmFjdCBzdGFydElucHV0OiBTaWduYWw8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZD47XG5cbiAgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgaWQ6IHN0cmluZztcblxuICBpbml0aWFsVmFsdWU6IFdhdHRQaWNrZXJWYWx1ZSA9IG51bGw7XG5cbiAgZm9jdXNlZCA9IGZhbHNlO1xuXG4gIGNvbnRyb2xUeXBlID0gJ21hdC1kYXRlLXJhbmdlLWlucHV0JzsgLy8gV2Uga2VlcCB0aGUgY29udHJvbFR5cGUgb2YgTWF0ZXJpYWwgRGF0ZSBSYW5nZSBJbnB1dCBhcyBpcywgdG8ga2VlcCBzb21lIHN0eWxpbmcuXG5cbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICB1c2VyQXJpYURlc2NyaWJlZEJ5ID0gaW5wdXQ8c3RyaW5nPih1bmRlZmluZWQsIHsgYWxpYXM6ICdhcmlhLWRlc2NyaWJlZGJ5JyB9KTtcblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBXYXR0RGF0ZVJhbmdlIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sPy52YWxpZCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB2YWx1ZTogeyBzdGFydCwgZW5kIH0sXG4gICAgICB9ID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogV2F0dFBpY2tlclZhbHVlKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0KCk7XG4gICAgY29uc3Qgc3RhcnRJbnB1dCA9IHRoaXMuc3RhcnRJbnB1dCgpO1xuICAgIGNvbnN0IGVuZElucHV0ID0gdGhpcy5lbmRJbnB1dCgpO1xuXG4gICAgY29uc3QgaW5wdXROb3RUb0JlSW5UaGVEb2N1bWVudCA9ICF0aGlzLnJhbmdlID8gIWlucHV0IDogIXN0YXJ0SW5wdXQ7XG5cbiAgICBpZiAoaW5wdXROb3RUb0JlSW5UaGVEb2N1bWVudCkge1xuICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgaWYgKCFzdGFydElucHV0IHx8ICFlbmRJbnB1dCkgcmV0dXJuO1xuICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlKHZhbHVlIGFzIFdhdHREYXRlUmFuZ2UsIHN0YXJ0SW5wdXQubmF0aXZlRWxlbWVudCwgZW5kSW5wdXQubmF0aXZlRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaW5wdXQpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U2luZ2xlVmFsdWUodmFsdWUgYXMgRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LCBpbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2UocmFuZ2U6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyYW5nZSk7XG4gIH1cbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JhbmdlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLndhdHQtZmllbGQtZGlzYWJsZWQnKVxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBnZXQgZW1wdHkoKSB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5zdGFydCAmJiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5lbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8udmFsdWU/Lmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gIH1cblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm5nQ29udHJvbD8uaW52YWxpZCAmJiAhIXRoaXMubmdDb250cm9sPy50b3VjaGVkO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdFJhbmdlSW5wdXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0U2luZ2xlSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRSYW5nZUlucHV0KCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRTaW5nbGVJbnB1dCgpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRTaW5nbGVWYWx1ZShcbiAgICB2YWx1ZTogRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFJhbmdlVmFsdWUoXG4gICAgdmFsdWU6IFdhdHREYXRlUmFuZ2UsXG4gICAgc3RhcnRJbnB1dDogSFRNTElucHV0RWxlbWVudCxcbiAgICBlbmRJbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApOiB2b2lkO1xuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMuam9pbignICcpKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soKSB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXYXR0UGlja2VyVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlRm46ICh2YWx1ZTogc3RyaW5nIHwgV2F0dERhdGVSYW5nZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlUGFyZW50VmFsdWUgPSBvbkNoYW5nZUZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaEZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9IG9uVG91Y2hGbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRm9jdXNJbigpIHtcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnYXJpYS1vd25zJyk7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGlkID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQudmFsdWUpIDogbnVsbDtcbiAgICBjb25zdCBpc0NoaWxkID0gb3ZlcmxheT8uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KTtcblxuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KSAmJiAhaXNDaGlsZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtQYXJlbnRDb250cm9sQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwcm90ZWN0ZWQgY2hhbmdlUGFyZW50VmFsdWUgPSAodmFsdWU6IHN0cmluZyB8IFdhdHREYXRlUmFuZ2UpOiB2b2lkID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICBwcm90ZWN0ZWQgbWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG59XG4iXX0=
|
|
@@ -16,19 +16,19 @@
|
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
18
|
//#endregion
|
|
19
|
-
import {
|
|
20
|
-
import { NgControl } from '@angular/forms';
|
|
21
|
-
import { MatDateRangeInput, MatDateRangePicker, MatDatepickerInput, MatDatepickerModule, MatEndDate, MatStartDate, } from '@angular/material/datepicker';
|
|
22
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
19
|
+
import { input, effect, inject, computed, Component, LOCALE_ID, viewChild, ElementRef, linkedSignal, booleanAttribute, ChangeDetectorRef, ViewEncapsulation, } from '@angular/core';
|
|
23
20
|
import { MatInputModule } from '@angular/material/input';
|
|
21
|
+
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
22
|
+
import { NgControl } from '@angular/forms';
|
|
23
|
+
import { MatEndDate, MatStartDate, MatDateRangeInput, MatDateRangePicker, MatDatepickerInput, MatDatepickerModule, } from '@angular/material/datepicker';
|
|
24
24
|
import { maskitoDateOptionsGenerator, maskitoDateRangeOptionsGenerator } from '@maskito/kit';
|
|
25
|
+
import { dayjs, WattLocaleService, } from '@energinet/watt/core/date';
|
|
25
26
|
import { WattFieldComponent } from '@energinet/watt/field';
|
|
26
|
-
import { WattLocaleService, dayjs, } from '@energinet/watt/core/date';
|
|
27
27
|
import { WattButtonComponent } from '@energinet/watt/button';
|
|
28
28
|
import { WattPickerBase, WattPlaceholderMaskComponent, } from '@energinet/watt/picker/__shared';
|
|
29
29
|
import * as i0 from "@angular/core";
|
|
30
|
-
import * as i1 from "@angular/material/
|
|
31
|
-
import * as i2 from "@angular/material/
|
|
30
|
+
import * as i1 from "@angular/material/input";
|
|
31
|
+
import * as i2 from "@angular/material/datepicker";
|
|
32
32
|
const dateShortFormat = 'DD-MM-YYYY';
|
|
33
33
|
export const danishTimeZoneIdentifier = 'Europe/Copenhagen';
|
|
34
34
|
/**
|
|
@@ -46,20 +46,20 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
46
46
|
locale = inject(LOCALE_ID);
|
|
47
47
|
max = input(...(ngDevMode ? [undefined, { debugName: "max" }] : []));
|
|
48
48
|
min = input(...(ngDevMode ? [undefined, { debugName: "min" }] : []));
|
|
49
|
+
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
49
50
|
rangeMonthOnlyMode = input(false, ...(ngDevMode ? [{ debugName: "rangeMonthOnlyMode" }] : []));
|
|
50
51
|
startAt = input(null, ...(ngDevMode ? [{ debugName: "startAt" }] : []));
|
|
51
|
-
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
52
52
|
dateClass = input(() => '', ...(ngDevMode ? [{ debugName: "dateClass" }] : []));
|
|
53
53
|
canStepThroughDays = input(false, ...(ngDevMode ? [{ debugName: "canStepThroughDays", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
matDateRangeInput = viewChild
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
actualInput = viewChild
|
|
54
|
+
matEndDate = viewChild(MatEndDate, ...(ngDevMode ? [{ debugName: "matEndDate" }] : []));
|
|
55
|
+
matStartDate = viewChild(MatStartDate, ...(ngDevMode ? [{ debugName: "matStartDate" }] : []));
|
|
56
|
+
matDateRangeInput = viewChild(MatDateRangeInput, ...(ngDevMode ? [{ debugName: "matDateRangeInput" }] : []));
|
|
57
|
+
matDatepickerInput = viewChild(MatDatepickerInput, ...(ngDevMode ? [{ debugName: "matDatepickerInput" }] : []));
|
|
58
|
+
matDateRangePicker = viewChild(MatDateRangePicker, ...(ngDevMode ? [{ debugName: "matDateRangePicker" }] : []));
|
|
59
|
+
actualInput = viewChild('actualInput', ...(ngDevMode ? [{ debugName: "actualInput" }] : []));
|
|
60
60
|
input = viewChild('dateInput', ...(ngDevMode ? [{ debugName: "input" }] : []));
|
|
61
|
-
startInput = viewChild('startDateInput', ...(ngDevMode ? [{ debugName: "startInput" }] : []));
|
|
62
61
|
endInput = viewChild('endDateInput', ...(ngDevMode ? [{ debugName: "endInput" }] : []));
|
|
62
|
+
startInput = viewChild('startDateInput', ...(ngDevMode ? [{ debugName: "startInput" }] : []));
|
|
63
63
|
_placeholder = this.getPlaceholderByLocale(this.locale);
|
|
64
64
|
rangeSeparator = ' - ';
|
|
65
65
|
rangePlaceholder = this.getRangePlaceholder();
|
|
@@ -97,9 +97,9 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
97
97
|
}
|
|
98
98
|
ngAfterViewInit() {
|
|
99
99
|
super.ngAfterViewInit();
|
|
100
|
-
this.ngControl?.control?.addValidators(this.validate
|
|
100
|
+
this.ngControl?.control?.addValidators(this.validate);
|
|
101
101
|
}
|
|
102
|
-
validate({ value }) {
|
|
102
|
+
validate = ({ value }) => {
|
|
103
103
|
if (!value?.end || !value?.start)
|
|
104
104
|
return null;
|
|
105
105
|
if (!this.rangeMonthOnlyMode())
|
|
@@ -109,10 +109,11 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
109
109
|
return start.isSame(start.startOf('month')) && end.isSame(start.endOf('month'))
|
|
110
110
|
? null
|
|
111
111
|
: { monthOnly: true };
|
|
112
|
-
}
|
|
112
|
+
};
|
|
113
113
|
initSingleInput() {
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
const matDatepickerInput = this.matDatepickerInput();
|
|
115
|
+
if (this.initialValue && matDatepickerInput) {
|
|
116
|
+
matDatepickerInput.value = this.initialValue;
|
|
116
117
|
this.datepickerClosed();
|
|
117
118
|
}
|
|
118
119
|
}
|
|
@@ -131,7 +132,9 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
131
132
|
datepickerClosed() {
|
|
132
133
|
const matDatepickerInput = this.matDatepickerInput();
|
|
133
134
|
const actualInput = this.actualInput();
|
|
134
|
-
if (
|
|
135
|
+
if (!actualInput)
|
|
136
|
+
return;
|
|
137
|
+
if (matDatepickerInput && matDatepickerInput.value) {
|
|
135
138
|
this.control?.setValue(matDatepickerInput.value);
|
|
136
139
|
actualInput.nativeElement.value = this.formatDateTimeFromModelToView(this.formatDateFromViewToModel(matDatepickerInput.value));
|
|
137
140
|
}
|
|
@@ -144,22 +147,27 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
144
147
|
actualInput.nativeElement.dispatchEvent(new InputEvent('input'));
|
|
145
148
|
}
|
|
146
149
|
onMonthSelected(date) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
const matDateRangePicker = this.matDateRangePicker();
|
|
151
|
+
if (matDateRangePicker && this.rangeMonthOnlyMode() && date) {
|
|
152
|
+
matDateRangePicker.select(dayjs(date).startOf('month').toDate());
|
|
153
|
+
matDateRangePicker.select(dayjs(date).endOf('month').toDate());
|
|
154
|
+
matDateRangePicker.close();
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
157
|
initRangeInput() {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
const matStartDate = this.matStartDate();
|
|
159
|
+
const matEndDate = this.matEndDate();
|
|
160
|
+
if (this.initialValue && matStartDate && matEndDate) {
|
|
161
|
+
matStartDate.value = this.initialValue.start;
|
|
162
|
+
matEndDate.value = this.initialValue.end;
|
|
157
163
|
this.rangePickerClosed();
|
|
158
164
|
}
|
|
159
165
|
}
|
|
160
166
|
clearRangePicker() {
|
|
161
|
-
this.control?.setValue(null);
|
|
162
167
|
const actualInput = this.actualInput();
|
|
168
|
+
if (!actualInput)
|
|
169
|
+
return;
|
|
170
|
+
this.control?.setValue(null);
|
|
163
171
|
actualInput.nativeElement.value = '';
|
|
164
172
|
actualInput.nativeElement.dispatchEvent(new InputEvent('input'));
|
|
165
173
|
}
|
|
@@ -183,7 +191,9 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
183
191
|
rangePickerClosed() {
|
|
184
192
|
const matDateRangeInput = this.matDateRangeInput();
|
|
185
193
|
const actualInput = this.actualInput();
|
|
186
|
-
if (
|
|
194
|
+
if (!actualInput)
|
|
195
|
+
return;
|
|
196
|
+
if (matDateRangeInput?.value?.start && matDateRangeInput?.value?.end) {
|
|
187
197
|
actualInput.nativeElement.value =
|
|
188
198
|
this.formatDateTimeFromModelToView(this.formatDateFromViewToModel(matDateRangeInput.value?.start)) +
|
|
189
199
|
'-' +
|
|
@@ -200,12 +210,19 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
200
210
|
actualInput.nativeElement.dispatchEvent(new InputEvent('input'));
|
|
201
211
|
}
|
|
202
212
|
setSingleValue(value, input) {
|
|
203
|
-
|
|
213
|
+
const matDatepickerInput = this.matDatepickerInput();
|
|
214
|
+
if (matDatepickerInput) {
|
|
215
|
+
this.setValueToInput(value, input, matDatepickerInput);
|
|
216
|
+
}
|
|
204
217
|
}
|
|
205
218
|
setRangeValue(value, startInput, endInput) {
|
|
206
219
|
const { start, end } = value ?? {};
|
|
207
|
-
|
|
208
|
-
|
|
220
|
+
const matStartDate = this.matStartDate();
|
|
221
|
+
const matEndDate = this.matEndDate();
|
|
222
|
+
if (!matStartDate || !matEndDate)
|
|
223
|
+
return;
|
|
224
|
+
this.setValueToInput(start, startInput, matStartDate);
|
|
225
|
+
this.setValueToInput(end, endInput, matEndDate);
|
|
209
226
|
}
|
|
210
227
|
prevDay() {
|
|
211
228
|
this.changeDay(-1);
|
|
@@ -214,7 +231,7 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
214
231
|
this.changeDay(1);
|
|
215
232
|
}
|
|
216
233
|
changeDay(value) {
|
|
217
|
-
const currentDate = this.matDatepickerInput()
|
|
234
|
+
const currentDate = this.matDatepickerInput()?.value;
|
|
218
235
|
if (currentDate) {
|
|
219
236
|
const newDate = dayjs(currentDate).add(value, 'day').toISOString();
|
|
220
237
|
const newDateFormatted = this.formatDateTimeFromModelToView(newDate);
|
|
@@ -272,16 +289,16 @@ export class WattDatepickerComponent extends WattPickerBase {
|
|
|
272
289
|
return maybeDateInDanishTimeZone;
|
|
273
290
|
}
|
|
274
291
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattDatepickerComponent, isStandalone: true, selector: "watt-datepicker", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, rangeMonthOnlyMode: { classPropertyName: "rangeMonthOnlyMode", publicName: "rangeMonthOnlyMode", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, canStepThroughDays: { classPropertyName: "canStepThroughDays", publicName: "canStepThroughDays", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }], viewQueries: [{ propertyName: "matDatepickerInput", first: true, predicate: MatDatepickerInput, descendants: true, isSignal: true }, { propertyName: "matDateRangePicker", first: true, predicate: MatDateRangePicker, descendants: true, isSignal: true }, { propertyName: "matDateRangeInput", first: true, predicate: MatDateRangeInput, descendants: true, isSignal: true }, { propertyName: "matStartDate", first: true, predicate: MatStartDate, descendants: true, isSignal: true }, { propertyName: "matEndDate", first: true, predicate: MatEndDate, descendants: true, isSignal: true }, { propertyName: "actualInput", first: true, predicate: ["actualInput"], descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "startInput", first: true, predicate: ["startDateInput"], descendants: true, isSignal: true }, { propertyName: "endInput", first: true, predicate: ["endDateInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n", styles: ["watt-datepicker{display:flex;align-items:center;width:100%}watt-datepicker watt-button[variant=icon]{margin-left:auto}watt-datepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-datepicker mat-datepicker,watt-datepicker mat-date-range-picker{display:none}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker .mat-date-range-input-mirror,watt-datepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-datepicker input.mask-input{color:#000}watt-datepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-datepicker input.mask-input:focus-visible{outline:none}watt-datepicker .mat-date-range-input-container{align-items:initial}watt-datepicker .mat-date-range-input-start-wrapper,watt-datepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-datepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-datepicker .mat-date-range-input-separator-hidden,watt-datepicker .mat-date-range-input-separator{opacity:0!important}watt-datepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}watt-datepicker watt-button .mat-button{background:transparent}watt-datepicker:has(.watt-datepicker-single__step-through){align-items:flex-start}watt-datepicker:has(.watt-datepicker-single__step-through) .watt-datepicker-single__step-through{display:flex;margin-top:1px}watt-datepicker:has(.watt-datepicker-single__has-label) .watt-datepicker-single__step-through{margin-top:28px}.watt-datepicker-range__panel--month-only .mat-calendar-period-button{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
292
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattDatepickerComponent, isStandalone: true, selector: "watt-datepicker", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, rangeMonthOnlyMode: { classPropertyName: "rangeMonthOnlyMode", publicName: "rangeMonthOnlyMode", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, canStepThroughDays: { classPropertyName: "canStepThroughDays", publicName: "canStepThroughDays", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }], viewQueries: [{ propertyName: "matEndDate", first: true, predicate: MatEndDate, descendants: true, isSignal: true }, { propertyName: "matStartDate", first: true, predicate: MatStartDate, descendants: true, isSignal: true }, { propertyName: "matDateRangeInput", first: true, predicate: MatDateRangeInput, descendants: true, isSignal: true }, { propertyName: "matDatepickerInput", first: true, predicate: MatDatepickerInput, descendants: true, isSignal: true }, { propertyName: "matDateRangePicker", first: true, predicate: MatDateRangePicker, descendants: true, isSignal: true }, { propertyName: "actualInput", first: true, predicate: ["actualInput"], descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "endInput", first: true, predicate: ["endDateInput"], descendants: true, isSignal: true }, { propertyName: "startInput", first: true, predicate: ["startDateInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n", styles: ["watt-datepicker{display:flex;align-items:center;width:100%}watt-datepicker watt-button[variant=icon]{margin-left:auto}watt-datepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-datepicker mat-datepicker,watt-datepicker mat-date-range-picker{display:none}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker .mat-date-range-input-mirror,watt-datepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-datepicker input.mask-input{color:#000}watt-datepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-datepicker input.mask-input:focus-visible{outline:none}watt-datepicker .mat-date-range-input-container{align-items:initial}watt-datepicker .mat-date-range-input-start-wrapper,watt-datepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-datepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-datepicker .mat-date-range-input-separator-hidden,watt-datepicker .mat-date-range-input-separator{opacity:0!important}watt-datepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}watt-datepicker watt-button .mat-button{background:transparent}watt-datepicker:has(.watt-datepicker-single__step-through){align-items:flex-start}watt-datepicker:has(.watt-datepicker-single__step-through) .watt-datepicker-single__step-through{display:flex;margin-top:1px}watt-datepicker:has(.watt-datepicker-single__has-label) .watt-datepicker-single__step-through{margin-top:28px}.watt-datepicker-range__panel--month-only .mat-calendar-period-button{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
276
293
|
}
|
|
277
294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerComponent, decorators: [{
|
|
278
295
|
type: Component,
|
|
279
296
|
args: [{ selector: 'watt-datepicker', providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }], encapsulation: ViewEncapsulation.None, imports: [
|
|
280
|
-
MatDatepickerModule,
|
|
281
297
|
MatInputModule,
|
|
282
|
-
|
|
298
|
+
MatDatepickerModule,
|
|
283
299
|
WattFieldComponent,
|
|
300
|
+
WattButtonComponent,
|
|
284
301
|
WattPlaceholderMaskComponent,
|
|
285
302
|
], template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n", styles: ["watt-datepicker{display:flex;align-items:center;width:100%}watt-datepicker watt-button[variant=icon]{margin-left:auto}watt-datepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-datepicker mat-datepicker,watt-datepicker mat-date-range-picker{display:none}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker .mat-date-range-input-mirror,watt-datepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-datepicker input.mask-input{color:#000}watt-datepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-datepicker input.mask-input:focus-visible{outline:none}watt-datepicker .mat-date-range-input-container{align-items:initial}watt-datepicker .mat-date-range-input-start-wrapper,watt-datepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-datepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-datepicker .mat-date-range-input-separator-hidden,watt-datepicker .mat-date-range-input-separator{opacity:0!important}watt-datepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}watt-datepicker watt-button .mat-button{background:transparent}watt-datepicker:has(.watt-datepicker-single__step-through){align-items:flex-start}watt-datepicker:has(.watt-datepicker-single__step-through) .watt-datepicker-single__step-through{display:flex;margin-top:1px}watt-datepicker:has(.watt-datepicker-single__has-label) .watt-datepicker-single__step-through{margin-top:28px}.watt-datepicker-range__panel--month-only .mat-calendar-period-button{pointer-events:none}\n"] }]
|
|
286
303
|
}], ctorParameters: () => [] });
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9kYXRlcGlja2VyL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvZGF0ZXBpY2tlci93YXR0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGdCQUFnQixFQUNoQixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixZQUFZLEdBQ2IsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFFTCxpQkFBaUIsRUFHakIsS0FBSyxHQUNOLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0s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QixFQUFFLFdBQVcseUJBQXlCLEVBQUUsQ0FBQyxpQkFDcEUsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBMT0NBTEVfSUQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgZWZmZWN0LFxuICBsaW5rZWRTaWduYWwsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nQ29udHJvbCwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbixcbiAgTWF0RGF0ZVJhbmdlSW5wdXQsXG4gIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgTWF0RGF0ZXBpY2tlcklucHV0LFxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICBNYXRFbmREYXRlLFxuICBNYXRTdGFydERhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBtYXNraXRvRGF0ZU9wdGlvbnNHZW5lcmF0b3IsIG1hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcblxuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB7XG4gIFdhdHREYXRlUmFuZ2UsXG4gIFdhdHRMb2NhbGVTZXJ2aWNlLFxuICBXYXR0UmFuZ2UsXG4gIFdhdHRTdXBwb3J0ZWRMb2NhbGVzLFxuICBkYXlqcyxcbn0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIFdhdHRQaWNrZXJCYXNlLFxuICBXYXR0UGlja2VyVmFsdWUsXG4gIFdhdHRQbGFjZWhvbGRlck1hc2tDb21wb25lbnQsXG59IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9waWNrZXIvX19zaGFyZWQnO1xuXG5jb25zdCBkYXRlU2hvcnRGb3JtYXQgPSAnREQtTU0tWVlZWSc7XG5leHBvcnQgY29uc3QgZGFuaXNoVGltZVpvbmVJZGVudGlmaWVyID0gJ0V1cm9wZS9Db3BlbmhhZ2VuJztcblxuLyoqXG4gKiBVc2FnZTpcbiAqIGBpbXBvcnQgeyBXYXR0RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L2RhdGVwaWNrZXInO2BcbiAqXG4gKiBJTVBPUlRBTlQ6XG4gKiBUaGUgc3R5bGluZyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIG91ciBtb25vc3BhY2VkIGZvbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhdHQtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93YXR0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogV2F0dERhdGVwaWNrZXJDb21wb25lbnQgfV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIFdhdHRCdXR0b25Db21wb25lbnQsXG4gICAgV2F0dEZpZWxkQ29tcG9uZW50LFxuICAgIFdhdHRQbGFjZWhvbGRlck1hc2tDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHREYXRlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgV2F0dFBpY2tlckJhc2UgaW1wbGVtZW50cyBWYWxpZGF0b3IsIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBjaGFuZ2VEZXRlY3Rpb25SZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KFdhdHRMb2NhbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2NhbGUgPSBpbmplY3Q8V2F0dFN1cHBvcnRlZExvY2FsZXM+KExPQ0FMRV9JRCk7XG5cbiAgbWF4ID0gaW5wdXQ8RGF0ZT4oKTtcbiAgbWluID0gaW5wdXQ8RGF0ZT4oKTtcbiAgcmFuZ2VNb250aE9ubHlNb2RlID0gaW5wdXQoZmFsc2UpO1xuICBzdGFydEF0ID0gaW5wdXQ8RGF0ZSB8IG51bGw+KG51bGwpO1xuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBkYXRlQ2xhc3MgPSBpbnB1dDxNYXRDYWxlbmRhckNlbGxDbGFzc0Z1bmN0aW9uPERhdGU+PigoKSA9PiAnJyk7XG4gIGNhblN0ZXBUaHJvdWdoRGF5cyA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICBwcm90ZWN0ZWQgbWF0RGF0ZXBpY2tlcklucHV0ID1cbiAgICB2aWV3Q2hpbGQucmVxdWlyZWQ8TWF0RGF0ZXBpY2tlcklucHV0PERhdGUgfCBudWxsPj4oTWF0RGF0ZXBpY2tlcklucHV0KTtcbiAgcHJvdGVjdGVkIG1hdERhdGVSYW5nZVBpY2tlciA9XG4gICAgdmlld0NoaWxkLnJlcXVpcmVkPE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlIHwgbnVsbD4+KE1hdERhdGVSYW5nZVBpY2tlcik7XG4gIHByb3RlY3RlZCBtYXREYXRlUmFuZ2VJbnB1dCA9XG4gICAgdmlld0NoaWxkLnJlcXVpcmVkPE1hdERhdGVSYW5nZUlucHV0PERhdGUgfCBudWxsPj4oTWF0RGF0ZVJhbmdlSW5wdXQpO1xuXG4gIHByb3RlY3RlZCBtYXRTdGFydERhdGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8TWF0U3RhcnREYXRlPERhdGUgfCBudWxsPj4oTWF0U3RhcnREYXRlKTtcbiAgcHJvdGVjdGVkIG1hdEVuZERhdGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8TWF0RW5kRGF0ZTxEYXRlIHwgbnVsbD4+KE1hdEVuZERhdGUpO1xuICBwcm90ZWN0ZWQgYWN0dWFsSW5wdXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2FjdHVhbElucHV0Jyk7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbnB1dCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZGF0ZUlucHV0Jyk7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBzdGFydElucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdzdGFydERhdGVJbnB1dCcpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZW5kSW5wdXQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2VuZERhdGVJbnB1dCcpO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfcGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyQnlMb2NhbGUodGhpcy5sb2NhbGUpO1xuXG4gIHJhbmdlU2VwYXJhdG9yID0gJyAtICc7XG5cbiAgcmFuZ2VQbGFjZWhvbGRlciA9IHRoaXMuZ2V0UmFuZ2VQbGFjZWhvbGRlcigpO1xuXG4gIGlucHV0TWFzayA9IGNvbXB1dGVkKCgpID0+XG4gICAgbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgIG1vZGU6ICdkZC9tbS95eXl5JyxcbiAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgbWF4OiB0aGlzLm1heCgpLFxuICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgIH0pXG4gICk7XG5cbiAgcmFuZ2VJbnB1dE1hc2sgPSBjb21wdXRlZCgoKSA9PlxuICAgIG1hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgIG1vZGU6ICdkZC9tbS95eXl5JyxcbiAgICAgIGRhdGVTZXBhcmF0b3I6ICctJyxcbiAgICAgIG1heDogdGhpcy5tYXgoKSxcbiAgICAgIG1pbjogdGhpcy5taW4oKSxcbiAgICB9KVxuICApO1xuXG4gIGdldFBsYWNlaG9sZGVyQnlMb2NhbGUobG9jYWxlOiBXYXR0U3VwcG9ydGVkTG9jYWxlcyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsZSA9PT0gJ2RhJyA/ICdkZC1tbS3DpcOlw6XDpScgOiAnZGQtbW0teXl5eSc7XG4gIH1cblxuICBnZXRSYW5nZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIgKyB0aGlzLnJhbmdlU2VwYXJhdG9yICsgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIGlzUHJldkRheUJ1dHRvbkRpc2FibGVkID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMuaXNQcmV2RGF5QmVmb3JlT3JFcXVhbFRvTWluRGF0ZSgpKTtcbiAgaXNOZXh0RGF5QnV0dG9uRGlzYWJsZWQgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5pc05leHREYXlBZnRlck9yRXF1YWxUb01heERhdGUoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYHdhdHQtZGF0ZXBpY2tlci0ke1dhdHREYXRlcGlja2VyQ29tcG9uZW50Lm5leHRJZCsrfWApO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlU2VydmljZS5sb2NhbGUoKTtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyQnlMb2NhbGUobG9jYWxlKTtcbiAgICAgIHRoaXMucmFuZ2VQbGFjZWhvbGRlciA9IHRoaXMuZ2V0UmFuZ2VQbGFjZWhvbGRlcigpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMucmFuZ2VNb250aE9ubHlNb2RlKCk7XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmFkZFZhbGlkYXRvcnModGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHZhbGlkYXRlKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sPFdhdHRSYW5nZTxzdHJpbmc+Pikge1xuICAgIGlmICghdmFsdWU/LmVuZCB8fCAhdmFsdWU/LnN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIXRoaXMucmFuZ2VNb250aE9ubHlNb2RlKCkpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHN0YXJ0ID0gZGF5anModmFsdWUuc3RhcnQpO1xuICAgIGNvbnN0IGVuZCA9IGRheWpzKHZhbHVlLmVuZCk7XG4gICAgcmV0dXJuIHN0YXJ0LmlzU2FtZShzdGFydC5zdGFydE9mKCdtb250aCcpKSAmJiBlbmQuaXNTYW1lKHN0YXJ0LmVuZE9mKCdtb250aCcpKVxuICAgICAgPyBudWxsXG4gICAgICA6IHsgbW9udGhPbmx5OiB0cnVlIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFNpbmdsZUlucHV0KCkge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5tYXREYXRlcGlja2VySW5wdXQoKS52YWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlO1xuICAgICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkKCk7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdmFsdWUuc2xpY2UoMCwgdGhpcy5wbGFjZWhvbGRlci5sZW5ndGgpO1xuXG4gICAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRlU3RyaW5nLmxlbmd0aCAhPT0gdGhpcy5wbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZURhdGVTaG9ydEZvcm1hdChkYXRlU3RyaW5nKTtcbiAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbChkYXRlKSk7XG4gIH1cblxuICBkYXRlcGlja2VyQ2xvc2VkKCkge1xuICAgIGNvbnN0IG1hdERhdGVwaWNrZXJJbnB1dCA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0KCk7XG4gICAgY29uc3QgYWN0dWFsSW5wdXQgPSB0aGlzLmFjdHVhbElucHV0KCk7XG4gICAgaWYgKG1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZSkge1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZShtYXREYXRlcGlja2VySW5wdXQudmFsdWUpO1xuXG4gICAgICBhY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyhcbiAgICAgICAgdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKG1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1ByZXZEYXlCdXR0b25EaXNhYmxlZC5zZXQodGhpcy5pc1ByZXZEYXlCZWZvcmVPckVxdWFsVG9NaW5EYXRlKCkpO1xuICAgIHRoaXMuaXNOZXh0RGF5QnV0dG9uRGlzYWJsZWQuc2V0KHRoaXMuaXNOZXh0RGF5QWZ0ZXJPckVxdWFsVG9NYXhEYXRlKCkpO1xuXG4gICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcpKTtcbiAgfVxuXG4gIG9uTW9udGhTZWxlY3RlZChkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMucmFuZ2VNb250aE9ubHlNb2RlKCkgJiYgZGF0ZSkge1xuICAgICAgdGhpcy5tYXREYXRlUmFuZ2VQaWNrZXIoKS5zZWxlY3QoZGF5anMoZGF0ZSkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKSk7XG4gICAgICB0aGlzLm1hdERhdGVSYW5nZVBpY2tlcigpLnNlbGVjdChkYXlqcyhkYXRlKS5lbmRPZignbW9udGgnKS50b0RhdGUoKSk7XG4gICAgICB0aGlzLm1hdERhdGVSYW5nZVBpY2tlcigpLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRSYW5nZUlucHV0KCkge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5tYXRTdGFydERhdGUoKS52YWx1ZSA9ICh0aGlzLmluaXRpYWxWYWx1ZSBhcyBXYXR0RGF0ZVJhbmdlKS5zdGFydDtcbiAgICAgIHRoaXMubWF0RW5kRGF0ZSgpLnZhbHVlID0gKHRoaXMuaW5pdGlhbFZhbHVlIGFzIFdhdHREYXRlUmFuZ2UpLmVuZDtcbiAgICAgIHRoaXMucmFuZ2VQaWNrZXJDbG9zZWQoKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclJhbmdlUGlja2VyKCkge1xuICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgY29uc3QgYWN0dWFsSW5wdXQgPSB0aGlzLmFjdHVhbElucHV0KCk7XG4gICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIGFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnKSk7XG4gIH1cblxuICByYW5nZUlucHV0Q2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhcnREYXRlU3RyaW5nID0gdmFsdWUuc2xpY2UoMCwgdGhpcy5wbGFjZWhvbGRlci5sZW5ndGgpO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZVN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0RGF0ZVN0cmluZy5sZW5ndGggIT09IHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBhcnNlRGF0ZVNob3J0Rm9ybWF0KHN0YXJ0RGF0ZVN0cmluZyk7XG4gICAgY29uc3QgZW5kRGF0ZVN0cmluZyA9IHZhbHVlLnNsaWNlKHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoICsgdGhpcy5yYW5nZVNlcGFyYXRvci5sZW5ndGgpO1xuICAgIGxldCBlbmQgPSB0aGlzLnNldEVuZERhdGVUb0RhbmlzaFRpbWVab25lKGVuZERhdGVTdHJpbmcpO1xuXG4gICAgaWYgKGVuZCAhPT0gbnVsbCkge1xuICAgICAgZW5kID0gdGhpcy5zZXRUb0VuZE9mRGF5KGVuZCk7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHsgc3RhcnQsIGVuZCB9KTtcbiAgICB9XG4gIH1cblxuICByYW5nZVBpY2tlckNsb3NlZCgpIHtcbiAgICBjb25zdCBtYXREYXRlUmFuZ2VJbnB1dCA9IHRoaXMubWF0RGF0ZVJhbmdlSW5wdXQoKTtcbiAgICBjb25zdCBhY3R1YWxJbnB1dCA9IHRoaXMuYWN0dWFsSW5wdXQoKTtcbiAgICBpZiAobWF0RGF0ZVJhbmdlSW5wdXQudmFsdWU/LnN0YXJ0ICYmIG1hdERhdGVSYW5nZUlucHV0LnZhbHVlLmVuZCkge1xuICAgICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9XG4gICAgICAgIHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcoXG4gICAgICAgICAgdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKG1hdERhdGVSYW5nZUlucHV0LnZhbHVlPy5zdGFydClcbiAgICAgICAgKSArXG4gICAgICAgICctJyArXG4gICAgICAgIHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcoXG4gICAgICAgICAgdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKG1hdERhdGVSYW5nZUlucHV0LnZhbHVlLmVuZClcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7XG4gICAgICAgIHN0YXJ0OiB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwobWF0RGF0ZVJhbmdlSW5wdXQudmFsdWUuc3RhcnQpLFxuICAgICAgICBlbmQ6IHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbChtYXREYXRlUmFuZ2VJbnB1dC52YWx1ZS5lbmQpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTaW5nbGVWYWx1ZShcbiAgICB2YWx1ZTogRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICkge1xuICAgIHRoaXMuc2V0VmFsdWVUb0lucHV0KHZhbHVlLCBpbnB1dCwgdGhpcy5tYXREYXRlcGlja2VySW5wdXQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0UmFuZ2VWYWx1ZShcbiAgICB2YWx1ZTogV2F0dERhdGVSYW5nZSB8IG51bGwsXG4gICAgc3RhcnRJbnB1dDogSFRNTElucHV0RWxlbWVudCxcbiAgICBlbmRJbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApIHtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHZhbHVlID8/IHt9O1xuXG4gICAgdGhpcy5zZXRWYWx1ZVRvSW5wdXQoc3RhcnQsIHN0YXJ0SW5wdXQsIHRoaXMubWF0U3RhcnREYXRlKCkpO1xuICAgIHRoaXMuc2V0VmFsdWVUb0lucHV0KGVuZCwgZW5kSW5wdXQsIHRoaXMubWF0RW5kRGF0ZSgpKTtcbiAgfVxuICBwcmV2RGF5KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGF5KC0xKTtcbiAgfVxuICBuZXh0RGF5KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGF5KDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VEYXkodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5tYXREYXRlcGlja2VySW5wdXQoKS52YWx1ZTtcblxuICAgIGlmIChjdXJyZW50RGF0ZSkge1xuICAgICAgY29uc3QgbmV3RGF0ZSA9IGRheWpzKGN1cnJlbnREYXRlKS5hZGQodmFsdWUsICdkYXknKS50b0lTT1N0cmluZygpO1xuICAgICAgY29uc3QgbmV3RGF0ZUZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcobmV3RGF0ZSk7XG5cbiAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkKG5ld0RhdGVGb3JtYXR0ZWQpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ByZXZEYXlCZWZvcmVPckVxdWFsVG9NaW5EYXRlKCkge1xuICAgIGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gdGhpcy5tYXREYXRlcGlja2VySW5wdXQoKT8udmFsdWU7XG5cbiAgICBpZiAoIW1pbiB8fCAhc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBpc0JlZm9yZSA9IGRheWpzKHNlbGVjdGVkRGF0ZSkuaXNCZWZvcmUobWluLCAnZGF5Jyk7XG4gICAgY29uc3QgaXNTYW1lID0gZGF5anMoc2VsZWN0ZWREYXRlKS5pc1NhbWUobWluLCAnZGF5Jyk7XG5cbiAgICByZXR1cm4gaXNTYW1lIHx8IGlzQmVmb3JlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05leHREYXlBZnRlck9yRXF1YWxUb01heERhdGUoKSB7XG4gICAgY29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLm1hdERhdGVwaWNrZXJJbnB1dCgpPy52YWx1ZTtcblxuICAgIGlmICghbWF4IHx8ICFzZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlzQWZ0ZXIgPSBkYXlqcyhzZWxlY3RlZERhdGUpLmlzQWZ0ZXIobWF4LCAnZGF5Jyk7XG4gICAgY29uc3QgaXNTYW1lID0gZGF5anMoc2VsZWN0ZWREYXRlKS5pc1NhbWUobWF4LCAnZGF5Jyk7XG5cbiAgICByZXR1cm4gaXNTYW1lIHx8IGlzQWZ0ZXI7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZVNob3J0Rm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUsIGRhdGVTaG9ydEZvcm1hdCkudG9EYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlVG9JbnB1dDxEIGV4dGVuZHMgeyB2YWx1ZTogRGF0ZSB8IG51bGwgfT4oXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgbmF0aXZlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgbWF0RGF0ZUlucHV0OiBEXG4gICk6IHZvaWQge1xuICAgIG5hdGl2ZUlucHV0LnZhbHVlID0gdmFsdWUgPyB0aGlzLmZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KHZhbHVlKSA6ICcnO1xuICAgIG1hdERhdGVJbnB1dC52YWx1ZSA9IHZhbHVlID8gZGF5anModmFsdWUpLnV0YygpLnRvRGF0ZSgpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIEZvcm1hdHMgRGF0ZSB0byBmdWxsIElTTyA4NjAxIGZvcm1hdCAoZS5nLiBgMjAyMi0wOC0zMVQyMjowMDowMC4wMDBaYClcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbCh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzKHZhbHVlKS51dGMoKS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUpLnR6KGRhbmlzaFRpbWVab25lSWRlbnRpZmllcikuZm9ybWF0KGRhdGVTaG9ydEZvcm1hdCk7XG4gIH1cblxuICBwcml2YXRlIHRvRGFuaXNoVGltZVpvbmUodmFsdWU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUudG9JU09TdHJpbmcoKSkudHooZGFuaXNoVGltZVpvbmVJZGVudGlmaWVyKS50b0RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VG9FbmRPZkRheSh2YWx1ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSkuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFbmREYXRlVG9EYW5pc2hUaW1lWm9uZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IGRhdGVCYXNlZE9uU2hvcnRGb3JtYXQgPSB0aGlzLnBhcnNlRGF0ZVNob3J0Rm9ybWF0KHZhbHVlKTtcblxuICAgIGxldCBtYXliZURhdGVJbkRhbmlzaFRpbWVab25lOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoZGF5anMoZGF0ZUJhc2VkT25TaG9ydEZvcm1hdCkuaXNWYWxpZCgpKSB7XG4gICAgICBtYXliZURhdGVJbkRhbmlzaFRpbWVab25lID0gdGhpcy50b0RhbmlzaFRpbWVab25lKGRhdGVCYXNlZE9uU2hvcnRGb3JtYXQpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZURhdGVJbkRhbmlzaFRpbWVab25lO1xuICB9XG59XG4iLCI8IS0tXG5AbGljZW5zZVxuQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbi0tPlxuPHdhdHQtZmllbGQgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtsYWJlbF09XCJsYWJlbCgpXCI+XG4gIEBpZiAocmFuZ2UpIHtcbiAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXRcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcmFuZ2VQaWNrZXJdPVwicmFuZ2VEYXRlcGlja2VyXCJcbiAgICAgIFttaW5dPVwibWluKCkgPz8gbnVsbFwiXG4gICAgICBbbWF4XT1cIm1heCgpID8/IG51bGxcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIGluZXJ0XG4gICAgICAgIGFyaWEtbGFiZWw9XCJzdGFydC1kYXRlLWlucHV0XCJcbiAgICAgICAgbWF0U3RhcnREYXRlXG4gICAgICAgICNzdGFydERhdGVJbnB1dFxuICAgICAgICBbcmVhZE9ubHldPVwicmFuZ2VNb250aE9ubHlNb2RlKClcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICBbaGlkZGVuXT1cInRydWVcIlxuICAgICAgLz5cblxuICAgICAgPGlucHV0XG4gICAgICAgIGluZXJ0XG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbmQtZGF0ZS1pbnB1dFwiXG4gICAgICAgIG1hdEVuZERhdGVcbiAgICAgICAgI2VuZERhdGVJbnB1dFxuICAgICAgICBbcmVhZE9ubHldPVwicmFuZ2VNb250aE9ubHlNb2RlKClcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICBbaGlkZGVuXT1cInRydWVcIlxuICAgICAgLz5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgIDxpbnB1dCAjYWN0dWFsSW5wdXQgY2xhc3M9XCJtYXNrLWlucHV0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgLz5cbiAgICA8d2F0dC1wbGFjZWhvbGRlci1tYXNrXG4gICAgICBbcHJpbWFyeUlucHV0RWxlbWVudF09XCJhY3R1YWxJbnB1dFwiXG4gICAgICBbbWFza109XCJyYW5nZUlucHV0TWFzaygpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJyYW5nZVBsYWNlaG9sZGVyXCJcbiAgICAgIChtYXNrQXBwbGllZCk9XCJyYW5nZUlucHV0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPHdhdHQtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiaWNvblwiXG4gICAgICBpY29uPVwiZGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImZhbHNlXCJcbiAgICAgIChjbGljayk9XCJyYW5nZURhdGVwaWNrZXIub3BlbigpXCJcbiAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICBbcGFuZWxDbGFzc109XCJyYW5nZU1vbnRoT25seU1vZGUoKSA/ICd3YXR0LWRhdGVwaWNrZXItcmFuZ2VfX3BhbmVsLS1tb250aC1vbmx5JyA6ICcnXCJcbiAgICAgIFtzdGFydFZpZXddPVwicmFuZ2VNb250aE9ubHlNb2RlKCkgPyAnbXVsdGkteWVhcicgOiAnbW9udGgnXCJcbiAgICAgIFtzdGFydEF0XT1cInN0YXJ0QXQoKVwiXG4gICAgICAobW9udGhTZWxlY3RlZCk9XCJvbk1vbnRoU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2xvc2VkKT1cInJhbmdlUGlja2VyQ2xvc2VkKClcIlxuICAgICAgI3JhbmdlRGF0ZXBpY2tlclxuICAgIC8+XG4gIH0gQGVsc2Uge1xuICAgIDxpbnB1dFxuICAgICAgaW5lcnRcbiAgICAgIG1hdElucHV0XG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJkYXRlLWlucHV0XCJcbiAgICAgICNkYXRlSW5wdXRcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttaW5dPVwibWluKClcIlxuICAgICAgW21heF09XCJtYXgoKVwiXG4gICAgICBbbWF0RGF0ZXBpY2tlcl09XCJzaW5nbGVEYXRlcGlja2VyXCJcbiAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KCRldmVudClcIlxuICAgIC8+XG4gICAgPGlucHV0ICNhY3R1YWxJbnB1dCBjbGFzcz1cIm1hc2staW5wdXRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAvPlxuICAgIDx3YXR0LXBsYWNlaG9sZGVyLW1hc2tcbiAgICAgIFtwcmltYXJ5SW5wdXRFbGVtZW50XT1cImFjdHVhbElucHV0XCJcbiAgICAgIFttYXNrXT1cImlucHV0TWFzaygpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAobWFza0FwcGxpZWQpPVwiaW5wdXRDaGFuZ2VkKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8d2F0dC1idXR0b25cbiAgICAgIHdhdHRTdWZmaXhcbiAgICAgIHZhcmlhbnQ9XCJpY29uXCJcbiAgICAgIGljb249XCJkYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwic2luZ2xlRGF0ZXBpY2tlci5vcGVuKClcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgI3NpbmdsZURhdGVwaWNrZXJcbiAgICAgIHBhbmVsQ2xhc3M9XCJ3YXR0LWRhdGVwaWNrZXItc2luZ2xlX19wYW5lbFwiXG4gICAgICBbZGF0ZUNsYXNzXT1cImRhdGVDbGFzcygpXCJcbiAgICAgIFtzdGFydEF0XT1cInN0YXJ0QXQoKVwiXG4gICAgICAoY2xvc2VkKT1cImRhdGVwaWNrZXJDbG9zZWQoKVwiXG4gICAgLz5cbiAgfVxuXG4gIDxuZy1jb250ZW50IC8+XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1oaW50XCIgc2VsZWN0PVwid2F0dC1maWVsZC1oaW50XCIgLz5cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJ3YXR0LWZpZWxkLWVycm9yXCIgc2VsZWN0PVwid2F0dC1maWVsZC1lcnJvclwiIC8+XG48L3dhdHQtZmllbGQ+XG5cbkBpZiAoIXJhbmdlICYmIGNhblN0ZXBUaHJvdWdoRGF5cygpKSB7XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJ3YXR0LWRhdGVwaWNrZXItc2luZ2xlX19zdGVwLXRocm91Z2hcIlxuICAgIFtjbGFzcy53YXR0LWRhdGVwaWNrZXItc2luZ2xlX19oYXMtbGFiZWxdPVwiISFsYWJlbCgpXCJcbiAgPlxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cImxlZnRcIlxuICAgICAgKGNsaWNrKT1cInByZXZEYXkoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNQcmV2RGF5QnV0dG9uRGlzYWJsZWQoKVwiXG4gICAgLz5cbiAgICA8d2F0dC1idXR0b25cbiAgICAgIHZhcmlhbnQ9XCJpY29uXCJcbiAgICAgIGljb249XCJyaWdodFwiXG4gICAgICAoY2xpY2spPVwibmV4dERheSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBpc05leHREYXlCdXR0b25EaXNhYmxlZCgpXCJcbiAgICAvPlxuICA8L3NwYW4+XG59XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9kYXRlcGlja2VyL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvZGF0ZXBpY2tlci93YXR0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBbUIsU0FBUyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdGLE9BQU8sRUFDTCxLQUFLLEVBR0wsaUJBQWlCLEdBRWxCLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0s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QUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8seUJBQXlCLENBQUM7SUFDbkMsQ0FBQzt1R0E1VVUsdUJBQXVCOzJGQUF2Qix1QkFBdUIscytCQVh2QixDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLHNFQTBCbkMsVUFBVSwrRkFDTixZQUFZLG9HQUNGLGlCQUFpQixxR0FDZixrQkFBa0IscUdBQ2xCLGtCQUFrQixtZ0JDL0dwRiwwaklBNklBLDhrRUR6REksY0FBYyxpWUFDZCxtQkFBbUIsazVCQUVuQixrQkFBa0IsK0lBQ2xCLG1CQUFtQixzSUFDbkIsNEJBQTRCOzsyRkFHbkIsdUJBQXVCO2tCQWZuQyxTQUFTOytCQUNFLGlCQUFpQixhQUdoQixDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcseUJBQXlCLEVBQUUsQ0FBQyxpQkFDcEUsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxjQUFjO3dCQUNkLG1CQUFtQjt3QkFFbkIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBpbnB1dCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGNvbXB1dGVkLFxuICBDb21wb25lbnQsXG4gIExPQ0FMRV9JRCxcbiAgdmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBsaW5rZWRTaWduYWwsXG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgTWF0RW5kRGF0ZSxcbiAgTWF0U3RhcnREYXRlLFxuICBNYXREYXRlUmFuZ2VJbnB1dCxcbiAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICBNYXREYXRlcGlja2VySW5wdXQsXG4gIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gIE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb24sXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQgeyBtYXNraXRvRGF0ZU9wdGlvbnNHZW5lcmF0b3IsIG1hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcblxuaW1wb3J0IHtcbiAgZGF5anMsXG4gIFdhdHRSYW5nZSxcbiAgV2F0dERhdGVSYW5nZSxcbiAgV2F0dExvY2FsZVNlcnZpY2UsXG4gIFdhdHRTdXBwb3J0ZWRMb2NhbGVzLFxufSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY29yZS9kYXRlJztcblxuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB7IFdhdHRCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvYnV0dG9uJztcblxuaW1wb3J0IHtcbiAgV2F0dFBpY2tlckJhc2UsXG4gIFdhdHRQaWNrZXJWYWx1ZSxcbiAgV2F0dFBsYWNlaG9sZGVyTWFza0NvbXBvbmVudCxcbn0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3BpY2tlci9fX3NoYXJlZCc7XG5cbmNvbnN0IGRhdGVTaG9ydEZvcm1hdCA9ICdERC1NTS1ZWVlZJztcbmV4cG9ydCBjb25zdCBkYW5pc2hUaW1lWm9uZUlkZW50aWZpZXIgPSAnRXVyb3BlL0NvcGVuaGFnZW4nO1xuXG4vKipcbiAqIFVzYWdlOlxuICogYGltcG9ydCB7IFdhdHREYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC1kYXRhaHViL3dhdHQvZGF0ZXBpY2tlcic7YFxuICpcbiAqIElNUE9SVEFOVDpcbiAqIFRoZSBzdHlsaW5nIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gb3VyIG1vbm9zcGFjZWQgZm9udC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2F0dC1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBXYXR0RGF0ZXBpY2tlckNvbXBvbmVudCB9XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG5cbiAgICBXYXR0RmllbGRDb21wb25lbnQsXG4gICAgV2F0dEJ1dHRvbkNvbXBvbmVudCxcbiAgICBXYXR0UGxhY2Vob2xkZXJNYXNrQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0RGF0ZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIFdhdHRQaWNrZXJCYXNlIGltcGxlbWVudHMgVmFsaWRhdG9yLCBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2hhbmdlRGV0ZWN0aW9uUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgbG9jYWxlU2VydmljZSA9IGluamVjdChXYXR0TG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgbG9jYWxlID0gaW5qZWN0PFdhdHRTdXBwb3J0ZWRMb2NhbGVzPihMT0NBTEVfSUQpO1xuXG4gIG1heCA9IGlucHV0PERhdGU+KCk7XG4gIG1pbiA9IGlucHV0PERhdGU+KCk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJhbmdlTW9udGhPbmx5TW9kZSA9IGlucHV0KGZhbHNlKTtcbiAgc3RhcnRBdCA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcbiAgZGF0ZUNsYXNzID0gaW5wdXQ8TWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbjxEYXRlPj4oKCkgPT4gJycpO1xuICBjYW5TdGVwVGhyb3VnaERheXMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgbWF0RW5kRGF0ZSA9IHZpZXdDaGlsZDxNYXRFbmREYXRlPERhdGUgfCBudWxsPj4oTWF0RW5kRGF0ZSk7XG4gIG1hdFN0YXJ0RGF0ZSA9IHZpZXdDaGlsZDxNYXRTdGFydERhdGU8RGF0ZSB8IG51bGw+PihNYXRTdGFydERhdGUpO1xuICBtYXREYXRlUmFuZ2VJbnB1dCA9IHZpZXdDaGlsZDxNYXREYXRlUmFuZ2VJbnB1dDxEYXRlIHwgbnVsbD4+KE1hdERhdGVSYW5nZUlucHV0KTtcbiAgbWF0RGF0ZXBpY2tlcklucHV0ID0gdmlld0NoaWxkPE1hdERhdGVwaWNrZXJJbnB1dDxEYXRlIHwgbnVsbD4+KE1hdERhdGVwaWNrZXJJbnB1dCk7XG4gIG1hdERhdGVSYW5nZVBpY2tlciA9IHZpZXdDaGlsZDxNYXREYXRlUmFuZ2VQaWNrZXI8RGF0ZSB8IG51bGw+PihNYXREYXRlUmFuZ2VQaWNrZXIpO1xuXG4gIGFjdHVhbElucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdhY3R1YWxJbnB1dCcpO1xuICBvdmVycmlkZSBpbnB1dCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZGF0ZUlucHV0Jyk7XG4gIG92ZXJyaWRlIGVuZElucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdlbmREYXRlSW5wdXQnKTtcbiAgb3ZlcnJpZGUgc3RhcnRJbnB1dCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+Pignc3RhcnREYXRlSW5wdXQnKTtcblxuICBwcm90ZWN0ZWQgX3BsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlckJ5TG9jYWxlKHRoaXMubG9jYWxlKTtcblxuICByYW5nZVNlcGFyYXRvciA9ICcgLSAnO1xuXG4gIHJhbmdlUGxhY2Vob2xkZXIgPSB0aGlzLmdldFJhbmdlUGxhY2Vob2xkZXIoKTtcblxuICBpbnB1dE1hc2sgPSBjb21wdXRlZCgoKSA9PlxuICAgIG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICBtb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgIG1heDogdGhpcy5tYXgoKSxcbiAgICAgIG1pbjogdGhpcy5taW4oKSxcbiAgICB9KVxuICApO1xuXG4gIHJhbmdlSW5wdXRNYXNrID0gY29tcHV0ZWQoKCkgPT5cbiAgICBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICBtb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICBkYXRlU2VwYXJhdG9yOiAnLScsXG4gICAgICBtYXg6IHRoaXMubWF4KCksXG4gICAgICBtaW46IHRoaXMubWluKCksXG4gICAgfSlcbiAgKTtcblxuICBnZXRQbGFjZWhvbGRlckJ5TG9jYWxlKGxvY2FsZTogV2F0dFN1cHBvcnRlZExvY2FsZXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBsb2NhbGUgPT09ICdkYScgPyAnZGQtbW0tw6XDpcOlw6UnIDogJ2RkLW1tLXl5eXknO1xuICB9XG5cbiAgZ2V0UmFuZ2VQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyICsgdGhpcy5yYW5nZVNlcGFyYXRvciArIHRoaXMucGxhY2Vob2xkZXI7XG4gIH1cblxuICBpc1ByZXZEYXlCdXR0b25EaXNhYmxlZCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmlzUHJldkRheUJlZm9yZU9yRXF1YWxUb01pbkRhdGUoKSk7XG4gIGlzTmV4dERheUJ1dHRvbkRpc2FibGVkID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMuaXNOZXh0RGF5QWZ0ZXJPckVxdWFsVG9NYXhEYXRlKCkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGB3YXR0LWRhdGVwaWNrZXItJHtXYXR0RGF0ZXBpY2tlckNvbXBvbmVudC5uZXh0SWQrK31gKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZVNlcnZpY2UubG9jYWxlKCk7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlckJ5TG9jYWxlKGxvY2FsZSk7XG4gICAgICB0aGlzLnJhbmdlUGxhY2Vob2xkZXIgPSB0aGlzLmdldFJhbmdlUGxhY2Vob2xkZXIoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnJhbmdlTW9udGhPbmx5TW9kZSgpO1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5hZGRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGUpO1xuICB9XG5cbiAgdmFsaWRhdGUgPSAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2w8V2F0dFJhbmdlPHN0cmluZz4+KSA9PiB7XG4gICAgaWYgKCF2YWx1ZT8uZW5kIHx8ICF2YWx1ZT8uc3RhcnQpIHJldHVybiBudWxsO1xuICAgIGlmICghdGhpcy5yYW5nZU1vbnRoT25seU1vZGUoKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgc3RhcnQgPSBkYXlqcyh2YWx1ZS5zdGFydCk7XG4gICAgY29uc3QgZW5kID0gZGF5anModmFsdWUuZW5kKTtcbiAgICByZXR1cm4gc3RhcnQuaXNTYW1lKHN0YXJ0LnN0YXJ0T2YoJ21vbnRoJykpICYmIGVuZC5pc1NhbWUoc3RhcnQuZW5kT2YoJ21vbnRoJykpXG4gICAgICA/IG51bGxcbiAgICAgIDogeyBtb250aE9ubHk6IHRydWUgfTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaW5pdFNpbmdsZUlucHV0KCkge1xuICAgIGNvbnN0IG1hdERhdGVwaWNrZXJJbnB1dCA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0KCk7XG4gICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlICYmIG1hdERhdGVwaWNrZXJJbnB1dCkge1xuICAgICAgbWF0RGF0ZXBpY2tlcklucHV0LnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQoKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dENoYW5nZWQodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCk7XG5cbiAgICBpZiAoZGF0ZVN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoICE9PSB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGUgPSB0aGlzLnBhcnNlRGF0ZVNob3J0Rm9ybWF0KGRhdGVTdHJpbmcpO1xuICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUodGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKGRhdGUpKTtcbiAgfVxuXG4gIGRhdGVwaWNrZXJDbG9zZWQoKSB7XG4gICAgY29uc3QgbWF0RGF0ZXBpY2tlcklucHV0ID0gdGhpcy5tYXREYXRlcGlja2VySW5wdXQoKTtcbiAgICBjb25zdCBhY3R1YWxJbnB1dCA9IHRoaXMuYWN0dWFsSW5wdXQoKTtcblxuICAgIGlmICghYWN0dWFsSW5wdXQpIHJldHVybjtcblxuICAgIGlmIChtYXREYXRlcGlja2VySW5wdXQgJiYgbWF0RGF0ZXBpY2tlcklucHV0LnZhbHVlKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZSk7XG5cbiAgICAgIGFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KFxuICAgICAgICB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwobWF0RGF0ZXBpY2tlcklucHV0LnZhbHVlKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzUHJldkRheUJ1dHRvbkRpc2FibGVkLnNldCh0aGlzLmlzUHJldkRheUJlZm9yZU9yRXF1YWxUb01pbkRhdGUoKSk7XG4gICAgdGhpcy5pc05leHREYXlCdXR0b25EaXNhYmxlZC5zZXQodGhpcy5pc05leHREYXlBZnRlck9yRXF1YWxUb01heERhdGUoKSk7XG5cbiAgICBhY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICB9XG5cbiAgb25Nb250aFNlbGVjdGVkKGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBtYXREYXRlUmFuZ2VQaWNrZXIgPSB0aGlzLm1hdERhdGVSYW5nZVBpY2tlcigpO1xuICAgIGlmIChtYXREYXRlUmFuZ2VQaWNrZXIgJiYgdGhpcy5yYW5nZU1vbnRoT25seU1vZGUoKSAmJiBkYXRlKSB7XG4gICAgICBtYXREYXRlUmFuZ2VQaWNrZXIuc2VsZWN0KGRheWpzKGRhdGUpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCkpO1xuICAgICAgbWF0RGF0ZVJhbmdlUGlja2VyLnNlbGVjdChkYXlqcyhkYXRlKS5lbmRPZignbW9udGgnKS50b0RhdGUoKSk7XG4gICAgICBtYXREYXRlUmFuZ2VQaWNrZXIuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFJhbmdlSW5wdXQoKSB7XG4gICAgY29uc3QgbWF0U3RhcnREYXRlID0gdGhpcy5tYXRTdGFydERhdGUoKTtcbiAgICBjb25zdCBtYXRFbmREYXRlID0gdGhpcy5tYXRFbmREYXRlKCk7XG5cbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUgJiYgbWF0U3RhcnREYXRlICYmIG1hdEVuZERhdGUpIHtcbiAgICAgIG1hdFN0YXJ0RGF0ZS52YWx1ZSA9ICh0aGlzLmluaXRpYWxWYWx1ZSBhcyBXYXR0RGF0ZVJhbmdlKS5zdGFydDtcbiAgICAgIG1hdEVuZERhdGUudmFsdWUgPSAodGhpcy5pbml0aWFsVmFsdWUgYXMgV2F0dERhdGVSYW5nZSkuZW5kO1xuICAgICAgdGhpcy5yYW5nZVBpY2tlckNsb3NlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUmFuZ2VQaWNrZXIoKSB7XG4gICAgY29uc3QgYWN0dWFsSW5wdXQgPSB0aGlzLmFjdHVhbElucHV0KCk7XG5cbiAgICBpZiAoIWFjdHVhbElucHV0KSByZXR1cm47XG5cbiAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgIGFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICBhY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICB9XG5cbiAgcmFuZ2VJbnB1dENoYW5nZWQodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZVN0cmluZyA9IHZhbHVlLnNsaWNlKDAsIHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoKTtcblxuICAgIGlmIChzdGFydERhdGVTdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzdGFydERhdGVTdHJpbmcubGVuZ3RoICE9PSB0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wYXJzZURhdGVTaG9ydEZvcm1hdChzdGFydERhdGVTdHJpbmcpO1xuICAgIGNvbnN0IGVuZERhdGVTdHJpbmcgPSB2YWx1ZS5zbGljZSh0aGlzLnBsYWNlaG9sZGVyLmxlbmd0aCArIHRoaXMucmFuZ2VTZXBhcmF0b3IubGVuZ3RoKTtcbiAgICBsZXQgZW5kID0gdGhpcy5zZXRFbmREYXRlVG9EYW5pc2hUaW1lWm9uZShlbmREYXRlU3RyaW5nKTtcblxuICAgIGlmIChlbmQgIT09IG51bGwpIHtcbiAgICAgIGVuZCA9IHRoaXMuc2V0VG9FbmRPZkRheShlbmQpO1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgfVxuICB9XG5cbiAgcmFuZ2VQaWNrZXJDbG9zZWQoKSB7XG4gICAgY29uc3QgbWF0RGF0ZVJhbmdlSW5wdXQgPSB0aGlzLm1hdERhdGVSYW5nZUlucHV0KCk7XG4gICAgY29uc3QgYWN0dWFsSW5wdXQgPSB0aGlzLmFjdHVhbElucHV0KCk7XG5cbiAgICBpZiAoIWFjdHVhbElucHV0KSByZXR1cm47XG5cbiAgICBpZiAobWF0RGF0ZVJhbmdlSW5wdXQ/LnZhbHVlPy5zdGFydCAmJiBtYXREYXRlUmFuZ2VJbnB1dD8udmFsdWU/LmVuZCkge1xuICAgICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9XG4gICAgICAgIHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcoXG4gICAgICAgICAgdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKG1hdERhdGVSYW5nZUlucHV0LnZhbHVlPy5zdGFydClcbiAgICAgICAgKSArXG4gICAgICAgICctJyArXG4gICAgICAgIHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcoXG4gICAgICAgICAgdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKG1hdERhdGVSYW5nZUlucHV0LnZhbHVlLmVuZClcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7XG4gICAgICAgIHN0YXJ0OiB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwobWF0RGF0ZVJhbmdlSW5wdXQudmFsdWUuc3RhcnQpLFxuICAgICAgICBlbmQ6IHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbChtYXREYXRlUmFuZ2VJbnB1dC52YWx1ZS5lbmQpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTaW5nbGVWYWx1ZShcbiAgICB2YWx1ZTogRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICkge1xuICAgIGNvbnN0IG1hdERhdGVwaWNrZXJJbnB1dCA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0KCk7XG4gICAgaWYgKG1hdERhdGVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5zZXRWYWx1ZVRvSW5wdXQodmFsdWUsIGlucHV0LCBtYXREYXRlcGlja2VySW5wdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRSYW5nZVZhbHVlKFxuICAgIHZhbHVlOiBXYXR0RGF0ZVJhbmdlIHwgbnVsbCxcbiAgICBzdGFydElucHV0OiBIVE1MSW5wdXRFbGVtZW50LFxuICAgIGVuZElucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICkge1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdmFsdWUgPz8ge307XG5cbiAgICBjb25zdCBtYXRTdGFydERhdGUgPSB0aGlzLm1hdFN0YXJ0RGF0ZSgpO1xuICAgIGNvbnN0IG1hdEVuZERhdGUgPSB0aGlzLm1hdEVuZERhdGUoKTtcblxuICAgIGlmICghbWF0U3RhcnREYXRlIHx8ICFtYXRFbmREYXRlKSByZXR1cm47XG5cbiAgICB0aGlzLnNldFZhbHVlVG9JbnB1dChzdGFydCwgc3RhcnRJbnB1dCwgbWF0U3RhcnREYXRlKTtcbiAgICB0aGlzLnNldFZhbHVlVG9JbnB1dChlbmQsIGVuZElucHV0LCBtYXRFbmREYXRlKTtcbiAgfVxuXG4gIHByZXZEYXkoKSB7XG4gICAgdGhpcy5jaGFuZ2VEYXkoLTEpO1xuICB9XG5cbiAgbmV4dERheSgpIHtcbiAgICB0aGlzLmNoYW5nZURheSgxKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlRGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0KCk/LnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnREYXRlKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gZGF5anMoY3VycmVudERhdGUpLmFkZCh2YWx1ZSwgJ2RheScpLnRvSVNPU3RyaW5nKCk7XG4gICAgICBjb25zdCBuZXdEYXRlRm9ybWF0dGVkID0gdGhpcy5mb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyhuZXdEYXRlKTtcblxuICAgICAgdGhpcy5pbnB1dENoYW5nZWQobmV3RGF0ZUZvcm1hdHRlZCk7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUHJldkRheUJlZm9yZU9yRXF1YWxUb01pbkRhdGUoKSB7XG4gICAgY29uc3QgbWluID0gdGhpcy5taW4oKTtcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLm1hdERhdGVwaWNrZXJJbnB1dCgpPy52YWx1ZTtcblxuICAgIGlmICghbWluIHx8ICFzZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlzQmVmb3JlID0gZGF5anMoc2VsZWN0ZWREYXRlKS5pc0JlZm9yZShtaW4sICdkYXknKTtcbiAgICBjb25zdCBpc1NhbWUgPSBkYXlqcyhzZWxlY3RlZERhdGUpLmlzU2FtZShtaW4sICdkYXknKTtcblxuICAgIHJldHVybiBpc1NhbWUgfHwgaXNCZWZvcmU7XG4gIH1cblxuICBwcml2YXRlIGlzTmV4dERheUFmdGVyT3JFcXVhbFRvTWF4RGF0ZSgpIHtcbiAgICBjb25zdCBtYXggPSB0aGlzLm1heCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0KCk/LnZhbHVlO1xuXG4gICAgaWYgKCFtYXggfHwgIXNlbGVjdGVkRGF0ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgaXNBZnRlciA9IGRheWpzKHNlbGVjdGVkRGF0ZSkuaXNBZnRlcihtYXgsICdkYXknKTtcbiAgICBjb25zdCBpc1NhbWUgPSBkYXlqcyhzZWxlY3RlZERhdGUpLmlzU2FtZShtYXgsICdkYXknKTtcblxuICAgIHJldHVybiBpc1NhbWUgfHwgaXNBZnRlcjtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VEYXRlU2hvcnRGb3JtYXQodmFsdWU6IHN0cmluZyk6IERhdGUge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSwgZGF0ZVNob3J0Rm9ybWF0KS50b0RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVUb0lucHV0PEQgZXh0ZW5kcyB7IHZhbHVlOiBEYXRlIHwgbnVsbCB9PihcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBuYXRpdmVJbnB1dDogSFRNTElucHV0RWxlbWVudCxcbiAgICBtYXREYXRlSW5wdXQ6IERcbiAgKTogdm9pZCB7XG4gICAgbmF0aXZlSW5wdXQudmFsdWUgPSB2YWx1ZSA/IHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcodmFsdWUpIDogJyc7XG4gICAgbWF0RGF0ZUlucHV0LnZhbHVlID0gdmFsdWUgPyBkYXlqcyh2YWx1ZSkudXRjKCkudG9EYXRlKCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogRm9ybWF0cyBEYXRlIHRvIGZ1bGwgSVNPIDg2MDEgZm9ybWF0IChlLmcuIGAyMDIyLTA4LTMxVDIyOjAwOjAwLjAwMFpgKVxuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUpLnV0YygpLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSkudHooZGFuaXNoVGltZVpvbmVJZGVudGlmaWVyKS5mb3JtYXQoZGF0ZVNob3J0Rm9ybWF0KTtcbiAgfVxuXG4gIHByaXZhdGUgdG9EYW5pc2hUaW1lWm9uZSh2YWx1ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZS50b0lTT1N0cmluZygpKS50eihkYW5pc2hUaW1lWm9uZUlkZW50aWZpZXIpLnRvRGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUb0VuZE9mRGF5KHZhbHVlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIGRheWpzKHZhbHVlKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldEVuZERhdGVUb0RhbmlzaFRpbWVab25lKHZhbHVlOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgY29uc3QgZGF0ZUJhc2VkT25TaG9ydEZvcm1hdCA9IHRoaXMucGFyc2VEYXRlU2hvcnRGb3JtYXQodmFsdWUpO1xuXG4gICAgbGV0IG1heWJlRGF0ZUluRGFuaXNoVGltZVpvbmU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChkYXlqcyhkYXRlQmFzZWRPblNob3J0Rm9ybWF0KS5pc1ZhbGlkKCkpIHtcbiAgICAgIG1heWJlRGF0ZUluRGFuaXNoVGltZVpvbmUgPSB0aGlzLnRvRGFuaXNoVGltZVpvbmUoZGF0ZUJhc2VkT25TaG9ydEZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlRGF0ZUluRGFuaXNoVGltZVpvbmU7XG4gIH1cbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48d2F0dC1maWVsZCBbY29udHJvbF09XCJjb250cm9sXCIgW2xhYmVsXT1cImxhYmVsKClcIj5cbiAgQGlmIChyYW5nZSkge1xuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyYW5nZVBpY2tlcl09XCJyYW5nZURhdGVwaWNrZXJcIlxuICAgICAgW21pbl09XCJtaW4oKSA/PyBudWxsXCJcbiAgICAgIFttYXhdPVwibWF4KCkgPz8gbnVsbFwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgaW5lcnRcbiAgICAgICAgYXJpYS1sYWJlbD1cInN0YXJ0LWRhdGUtaW5wdXRcIlxuICAgICAgICBtYXRTdGFydERhdGVcbiAgICAgICAgI3N0YXJ0RGF0ZUlucHV0XG4gICAgICAgIFtyZWFkT25seV09XCJyYW5nZU1vbnRoT25seU1vZGUoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgIFtoaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgaW5lcnRcbiAgICAgICAgYXJpYS1sYWJlbD1cImVuZC1kYXRlLWlucHV0XCJcbiAgICAgICAgbWF0RW5kRGF0ZVxuICAgICAgICAjZW5kRGF0ZUlucHV0XG4gICAgICAgIFtyZWFkT25seV09XCJyYW5nZU1vbnRoT25seU1vZGUoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgIFtoaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAvPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgPGlucHV0ICNhY3R1YWxJbnB1dCBjbGFzcz1cIm1hc2staW5wdXRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAvPlxuICAgIDx3YXR0LXBsYWNlaG9sZGVyLW1hc2tcbiAgICAgIFtwcmltYXJ5SW5wdXRFbGVtZW50XT1cImFjdHVhbElucHV0XCJcbiAgICAgIFttYXNrXT1cInJhbmdlSW5wdXRNYXNrKClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInJhbmdlUGxhY2Vob2xkZXJcIlxuICAgICAgKG1hc2tBcHBsaWVkKT1cInJhbmdlSW5wdXRDaGFuZ2VkKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8d2F0dC1idXR0b25cbiAgICAgIHZhcmlhbnQ9XCJpY29uXCJcbiAgICAgIGljb249XCJkYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cInJhbmdlRGF0ZXBpY2tlci5vcGVuKClcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgIFtwYW5lbENsYXNzXT1cInJhbmdlTW9udGhPbmx5TW9kZSgpID8gJ3dhdHQtZGF0ZXBpY2tlci1yYW5nZV9fcGFuZWwtLW1vbnRoLW9ubHknIDogJydcIlxuICAgICAgW3N0YXJ0Vmlld109XCJyYW5nZU1vbnRoT25seU1vZGUoKSA/ICdtdWx0aS15ZWFyJyA6ICdtb250aCdcIlxuICAgICAgW3N0YXJ0QXRdPVwic3RhcnRBdCgpXCJcbiAgICAgIChtb250aFNlbGVjdGVkKT1cIm9uTW9udGhTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjbG9zZWQpPVwicmFuZ2VQaWNrZXJDbG9zZWQoKVwiXG4gICAgICAjcmFuZ2VEYXRlcGlja2VyXG4gICAgLz5cbiAgfSBAZWxzZSB7XG4gICAgPGlucHV0XG4gICAgICBpbmVydFxuICAgICAgbWF0SW5wdXRcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgYXJpYS1sYWJlbD1cImRhdGUtaW5wdXRcIlxuICAgICAgI2RhdGVJbnB1dFxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21pbl09XCJtaW4oKVwiXG4gICAgICBbbWF4XT1cIm1heCgpXCJcbiAgICAgIFttYXREYXRlcGlja2VyXT1cInNpbmdsZURhdGVwaWNrZXJcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8aW5wdXQgI2FjdHVhbElucHV0IGNsYXNzPVwibWFzay1pbnB1dFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XG4gICAgPHdhdHQtcGxhY2Vob2xkZXItbWFza1xuICAgICAgW3ByaW1hcnlJbnB1dEVsZW1lbnRdPVwiYWN0dWFsSW5wdXRcIlxuICAgICAgW21hc2tdPVwiaW5wdXRNYXNrKClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIChtYXNrQXBwbGllZCk9XCJpbnB1dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgd2F0dFN1ZmZpeFxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cImRhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChjbGljayk9XCJzaW5nbGVEYXRlcGlja2VyLm9wZW4oKVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAjc2luZ2xlRGF0ZXBpY2tlclxuICAgICAgcGFuZWxDbGFzcz1cIndhdHQtZGF0ZXBpY2tlci1zaW5nbGVfX3BhbmVsXCJcbiAgICAgIFtkYXRlQ2xhc3NdPVwiZGF0ZUNsYXNzKClcIlxuICAgICAgW3N0YXJ0QXRdPVwic3RhcnRBdCgpXCJcbiAgICAgIChjbG9zZWQpPVwiZGF0ZXBpY2tlckNsb3NlZCgpXCJcbiAgICAvPlxuICB9XG5cbiAgPG5nLWNvbnRlbnQgLz5cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJ3YXR0LWZpZWxkLWhpbnRcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWhpbnRcIiAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZXJyb3JcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWVycm9yXCIgLz5cbjwvd2F0dC1maWVsZD5cblxuQGlmICghcmFuZ2UgJiYgY2FuU3RlcFRocm91Z2hEYXlzKCkpIHtcbiAgPHNwYW5cbiAgICBjbGFzcz1cIndhdHQtZGF0ZXBpY2tlci1zaW5nbGVfX3N0ZXAtdGhyb3VnaFwiXG4gICAgW2NsYXNzLndhdHQtZGF0ZXBpY2tlci1zaW5nbGVfX2hhcy1sYWJlbF09XCIhIWxhYmVsKClcIlxuICA+XG4gICAgPHdhdHQtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiaWNvblwiXG4gICAgICBpY29uPVwibGVmdFwiXG4gICAgICAoY2xpY2spPVwicHJldkRheSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBpc1ByZXZEYXlCdXR0b25EaXNhYmxlZCgpXCJcbiAgICAvPlxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cInJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJuZXh0RGF5KClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzTmV4dERheUJ1dHRvbkRpc2FibGVkKClcIlxuICAgIC8+XG4gIDwvc3Bhbj5cbn1cbiJdfQ==
|
|
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
213
213
|
type: HostBinding,
|
|
214
214
|
args: ['attr.aria-owns']
|
|
215
215
|
}] } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10aW1lcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci90aW1lcGlja2VyL3dhdHQtdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvdGltZXBpY2tlci93YXR0LXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFt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Qzt1R0FuS1UsdUJBQXVCOzJGQUF2Qix1QkFBdUIseVlBYnZCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLENBQUMsK1hDaEZyRiwwdEdBNEdBLHMwRER6QkksbUJBQW1CLHdmQUNuQixjQUFjLGlZQUNkLGFBQWEsMnJDQUViLG1CQUFtQixzSUFDbkIsbUJBQW1CLDJIQUNuQixrQkFBa0IsK0lBQ2xCLDRCQUE0Qjs7MkZBR25CLHVCQUF1QjtrQkFqQm5DLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx5QkFBeUIsRUFBRSxDQUFDLGlCQUNwRSxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxhQUFhO3dCQUViLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLDRCQUE0QjtxQkFDN0I7d0RBd0JHLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tICdAbWFza2l0by9raXQnO1xuXG5pbXBvcnQgeyBXYXR0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2J1dHRvbic7XG5pbXBvcnQgeyBXYXR0RGF0ZVJhbmdlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0RmllbGRDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvZmllbGQnO1xuaW1wb3J0IHsgV2F0dFNsaWRlckNvbXBvbmVudCwgV2F0dFNsaWRlclZhbHVlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3NsaWRlcic7XG5cbmltcG9ydCB7IG1hc2tpdG9UaW1lUmFuZ2VPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnLi9tYXNraXRvLXRpbWUtcmFuZ2UtbWFzayc7XG5pbXBvcnQge1xuICBXYXR0UGlja2VyQmFzZSxcbiAgV2F0dFBpY2tlclZhbHVlLFxuICBXYXR0UGxhY2Vob2xkZXJNYXNrQ29tcG9uZW50LFxufSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvcGlja2VyL19fc2hhcmVkJztcblxuLy8gQ29uc3RhbnRzIGZvciB3b3JraW5nIHdpdGggdGltZSBpbnRlcnZhbHNcbmNvbnN0IG1pbnV0ZXNJbkFEYXkgPSAyNCAqIDYwO1xuY29uc3QgcXVhcnRlcnNJbkFEYXkgPSBtaW51dGVzSW5BRGF5IC8gMTU7XG5cbi8vIFNob3cgc2xpZGVyIGluaXRpYWxseSBhcyBcIjAwOjAwIC0gMjM6NTlcIlxuY29uc3QgaW5pdGlhbFNsaWRlclZhbHVlOiBXYXR0U2xpZGVyVmFsdWUgPSB7IG1pbjogMCwgbWF4OiBtaW51dGVzSW5BRGF5IC0gMSB9O1xuXG4vKiogQ29udmVydHMgc3RyaW5nIHRpbWUgZm9ybWF0IChISDpNTSkgdG8gbnVtYmVyIG9mIG1pbnV0ZXMuICovXG5mdW5jdGlvbiB0aW1lVG9NaW51dGVzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBbaG91cnMsIG1pbnV0ZXNdID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgcmV0dXJuIE51bWJlcihob3VycykgKiA2MCArIE51bWJlcihtaW51dGVzKTtcbn1cblxuLyoqIENvbnZlcnRzIG51bWJlciBvZiBtaW51dGVzIHRvIHN0cmluZyB0aW1lIGZvcm1hdCAoSEg6TU0pLiAqL1xuZnVuY3Rpb24gbWludXRlc1RvVGltZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgaG91cnMgPSBgJHtNYXRoLmZsb29yKHZhbHVlIC8gNjApfWA7XG4gIGNvbnN0IG1pbnV0ZXMgPSBgJHt2YWx1ZSAlIDYwfWA7XG4gIHJldHVybiBgJHtob3Vycy5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMucGFkU3RhcnQoMiwgJzAnKX1gO1xufVxuLyoqXG4gKiBVc2FnZTpcbiAqIGBpbXBvcnQgeyBXYXR0VGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RpbWVwaWNrZXInO2BcbiAqXG4gKiBJTVBPUlRBTlQ6XG4gKiBUaGUgc3R5bGluZyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIG91ciBtb25vc3BhY2VkIGZvbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhdHQtdGltZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93YXR0LXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LXRpbWVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogV2F0dFRpbWVwaWNrZXJDb21wb25lbnQgfV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG5cbiAgICBXYXR0QnV0dG9uQ29tcG9uZW50LFxuICAgIFdhdHRTbGlkZXJDb21wb25lbnQsXG4gICAgV2F0dEZpZWxkQ29tcG9uZW50LFxuICAgIFdhdHRQbGFjZWhvbGRlck1hc2tDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUaW1lcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgV2F0dFBpY2tlckJhc2Uge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBjaGFuZ2VEZXRlY3Rpb25SZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgbGFiZWwgPSBpbnB1dCgnJyk7XG4gIC8qKlxuICAgKiBUZXh0IHRvIGRpc3BsYXkgb24gbGFiZWwgZm9yIHRpbWUgcmFuZ2Ugc2xpZGVyLlxuICAgKi9cbiAgc2xpZGVyTGFiZWwgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCd0aW1lSW5wdXQnKTtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHN0YXJ0SW5wdXQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3N0YXJ0VGltZUlucHV0Jyk7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBlbmRJbnB1dCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZW5kVGltZUlucHV0Jyk7XG5cbiAgc2xpZGVySWQgPSBgJHt0aGlzLmlkfS1zbGlkZXJgO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBkZWZpbmluZyBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSB0aW1lIHBpY2tlciBhbmRcbiAgICogdGhlIHNsaWRlciBvdmVybGF5IChzaW5jZSB0aGUgRE9NIGhpZXJhcmNoeSBjYW5ub3QgYmUgdXNlZCkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW93bnMnKVxuICBnZXQgYXJpYU93bnMoKSB7XG4gICAgLy8gT25seSByYW5nZSBpbnB1dCBoYXMgc2xpZGVyXG4gICAgcmV0dXJuIHRoaXMucmFuZ2UgJiYgdGhpcy5zbGlkZXJPcGVuID8gdGhpcy5zbGlkZXJJZCA6IHVuZGVmaW5lZDtcbiAgfVxuICBob3Vyc01pbnV0ZXNQbGFjZWhvbGRlciA9ICdISDpNTSc7XG4gIHJhbmdlU2VwYXJhdG9yID0gJyAtICc7XG4gIHJhbmdlUGxhY2Vob2xkZXIgPVxuICAgIHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIgKyB0aGlzLnJhbmdlU2VwYXJhdG9yICsgdGhpcy5ob3Vyc01pbnV0ZXNQbGFjZWhvbGRlcjtcbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlciA9IHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBpcyBvcGVuLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzbGlkZXJPcGVuID0gZmFsc2U7XG5cbiAgc2xpZGVyU3RlcHMgPSBbLi4uQXJyYXkocXVhcnRlcnNJbkFEYXkpLmtleXMoKV0ubWFwKCh4KSA9PiB4ICogMTUpLmNvbmNhdChtaW51dGVzSW5BRGF5IC0gMSk7XG5cbiAgc2xpZGVyQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdhdHRTbGlkZXJWYWx1ZT4oKTtcblxuICBnZXQgc2xpZGVyVmFsdWUoKTogV2F0dFNsaWRlclZhbHVlIHtcbiAgICBpZiAodGhpcy52YWx1ZT8uc3RhcnQgJiYgdGhpcy52YWx1ZT8uZW5kKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHRpbWVUb01pbnV0ZXModGhpcy52YWx1ZS5zdGFydCksXG4gICAgICAgIG1heDogdGltZVRvTWludXRlcyh0aGlzLnZhbHVlLmVuZCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFJldGFpbiBsYXN0IHNsaWRlciB2YWx1ZSBpZiBpbnB1dCB2YWx1ZSBpcyBpbmNvbXBsZXRlXG4gICAgcmV0dXJuIGluaXRpYWxTbGlkZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzbGlkZXIgb3ZlcmxheS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdG9nZ2xlU2xpZGVyKCkge1xuICAgIHRoaXMuc2xpZGVyT3BlbiA9ICF0aGlzLnNsaWRlck9wZW47XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gYXV0b21hdGljYWxseSBjbG9zZSB0aGUgc2xpZGVyIG92ZXJsYXkgb24gYmx1ci5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgb25Gb2N1c091dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIHN1cGVyLm9uRm9jdXNPdXQoZXZlbnQpO1xuICAgIGlmICghdGhpcy5mb2N1c2VkKSB0aGlzLnNsaWRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGlucHV0TWFzayA9IG1hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvcih7IG1vZGU6ICdISDpNTScgfSk7XG4gIHJhbmdlSW5wdXRNYXNrID0gbWFza2l0b1RpbWVSYW5nZU9wdGlvbnNHZW5lcmF0b3IoKTtcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgd2F0dC10aW1lcGlja2VyLSR7V2F0dFRpbWVwaWNrZXJDb21wb25lbnQubmV4dElkKyt9YCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFNpbmdsZUlucHV0KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSAmJiBpbnB1dCkge1xuICAgICAgKGlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZSBhcyBzdHJpbmc7XG4gICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0Q2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGltZSA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIubGVuZ3RoKTtcbiAgICBpZiAodGltZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aW1lLmxlbmd0aCAhPT0gdGhpcy5ob3Vyc01pbnV0ZXNQbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh0aW1lKTtcbiAgfVxuXG4gIHJhbmdlSW5wdXRDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFydCA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIubGVuZ3RoKTtcbiAgICBpZiAoc3RhcnQubGVuZ3RoICE9PSB0aGlzLmhvdXJzTWludXRlc1BsYWNlaG9sZGVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7IHN0YXJ0OiAnJywgZW5kOiAnJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8IHRoaXMucmFuZ2VQbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydCwgZW5kOiAnJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGVuZCA9IHZhbHVlLnNsaWNlKHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIubGVuZ3RoICsgdGhpcy5yYW5nZVNlcGFyYXRvci5sZW5ndGgpO1xuICAgIGlmICh0aW1lVG9NaW51dGVzKGVuZCkgPiB0aW1lVG9NaW51dGVzKHN0YXJ0KSkge1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pbnV0ZXNUb1RpbWUodGltZVRvTWludXRlcyhzdGFydCkgKyAxKTtcbiAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZUFuZE5vdGlmeShzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFJhbmdlSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSB7XG4gICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHRoaXMuaW5pdGlhbFZhbHVlIGFzIFdhdHREYXRlUmFuZ2U7XG4gICAgICB0aGlzLnNldFJhbmdlVmFsdWVBbmROb3RpZnkoc3RhcnQsIGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydDogJycsIGVuZDogJycgfSk7XG4gICAgfVxuICAgIHRoaXMuc2xpZGVyQ2hhbmdlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHNsaWRlclZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IG1pbnV0ZXNUb1RpbWUoc2xpZGVyVmFsdWUubWluKTtcbiAgICAgIGNvbnN0IGVuZCA9IG1pbnV0ZXNUb1RpbWUoc2xpZGVyVmFsdWUubWF4KTtcbiAgICAgIGlmIChlbmQgPiBzdGFydCkge1xuICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWVBbmROb3RpZnkoc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRSYW5nZVZhbHVlQW5kTm90aWZ5KHN0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICghaW5wdXQpIHJldHVybjtcbiAgICAoaW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9IHN0YXJ0ICsgdGhpcy5yYW5nZVNlcGFyYXRvciArIGVuZDtcbiAgICBpbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNpbmdsZVZhbHVlKFxuICAgIHZhbHVlOiBFeGNsdWRlPFdhdHRQaWNrZXJWYWx1ZSwgV2F0dERhdGVSYW5nZT4sXG4gICAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnRcbiAgKSB7XG4gICAgaW5wdXQudmFsdWUgPSB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRSYW5nZVZhbHVlKFxuICAgIHZhbHVlOiBXYXR0RGF0ZVJhbmdlLFxuICAgIHN0YXJ0SW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgZW5kSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnRcbiAgKSB7XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSB2YWx1ZTtcblxuICAgIGlmIChzdGFydCkge1xuICAgICAgc3RhcnRJbnB1dC52YWx1ZSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmIChlbmQpIHtcbiAgICAgIGVuZElucHV0LnZhbHVlID0gZW5kO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx3YXR0LWZpZWxkIFtpZF09XCJpZFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbbGFiZWxdPVwibGFiZWwoKVwiPlxuICBAaWYgKCFyYW5nZSkge1xuICAgIDxpbnB1dFxuICAgICAgaW5lcnRcbiAgICAgIG1hdElucHV0XG4gICAgICBhcmlhLWxhYmVsPVwidGltZS1pbnB1dFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxpbnB1dCAjdGltZUlucHV0IGNsYXNzPVwibWFzay1pbnB1dFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XG4gICAgPHdhdHQtcGxhY2Vob2xkZXItbWFza1xuICAgICAgW3ByaW1hcnlJbnB1dEVsZW1lbnRdPVwidGltZUlucHV0XCJcbiAgICAgIFttYXNrXT1cImlucHV0TWFza1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaG91cnNNaW51dGVzUGxhY2Vob2xkZXJcIlxuICAgICAgKG1hc2tBcHBsaWVkKT1cImlucHV0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXRcbiAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIGluZXJ0XG4gICAgICAgIGFyaWEtbGFiZWw9XCJzdGFydC10aW1lLWlucHV0XCJcbiAgICAgICAgbWF0U3RhcnREYXRlXG4gICAgICAgICNzdGFydFRpbWVJbnB1dFxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpbmVydFxuICAgICAgICBhcmlhLWxhYmVsPVwiZW5kLXRpbWUtaW5wdXRcIlxuICAgICAgICBtYXRFbmREYXRlXG4gICAgICAgICNlbmRUaW1lSW5wdXRcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICA8aW5wdXQgI3RpbWVJbnB1dCBjbGFzcz1cIm1hc2staW5wdXRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAvPlxuICAgIDx3YXR0LXBsYWNlaG9sZGVyLW1hc2tcbiAgICAgIFtwcmltYXJ5SW5wdXRFbGVtZW50XT1cInRpbWVJbnB1dFwiXG4gICAgICBbbWFza109XCJyYW5nZUlucHV0TWFza1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmFuZ2VQbGFjZWhvbGRlclwiXG4gICAgICAobWFza0FwcGxpZWQpPVwicmFuZ2VJbnB1dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cInRpbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJzbGlkZXJPcGVuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVTbGlkZXIoKVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJzbGlkZXJPcGVuXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WV09XCIxMlwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwic2xpZGVySWRcIlxuICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LXRpbWVwaWNrZXItc2xpZGVyXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwid2F0dC1sYWJlbFwiPnt7IHNsaWRlckxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgIDx3YXR0LXNsaWRlclxuICAgICAgICAgIFttaW5dPVwic2xpZGVyU3RlcHNbMF1cIlxuICAgICAgICAgIFttYXhdPVwic2xpZGVyU3RlcHNbc2xpZGVyU3RlcHMubGVuZ3RoIC0gMV1cIlxuICAgICAgICAgIFtzdGVwXT1cIjFcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJWYWx1ZVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNsaWRlckNoYW5nZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH1cblxuICA8bmctY29udGVudCAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtaGludFwiIHNlbGVjdD1cIndhdHQtZmllbGQtaGludFwiIC8+XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1lcnJvclwiIHNlbGVjdD1cIndhdHQtZmllbGQtZXJyb3JcIiAvPlxuPC93YXR0LWZpZWxkPlxuIl19
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10aW1lcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci90aW1lcGlja2VyL3dhdHQtdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvdGltZXBpY2tlci93YXR0LXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFt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Qzt1R0FuS1UsdUJBQXVCOzJGQUF2Qix1QkFBdUIseVlBYnZCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLENBQUMsK1hDaEZyRiwwdEdBNEdBLHMwRER6QkksbUJBQW1CLHdmQUNuQixjQUFjLGlZQUNkLGFBQWEsMnJDQUViLG1CQUFtQixzSUFDbkIsbUJBQW1CLDJIQUNuQixrQkFBa0IsK0lBQ2xCLDRCQUE0Qjs7MkZBR25CLHVCQUF1QjtrQkFqQm5DLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx5QkFBeUIsRUFBRSxDQUFDLGlCQUNwRSxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxhQUFhO3dCQUViLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLDRCQUE0QjtxQkFDN0I7d0RBd0JHLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tICdAbWFza2l0by9raXQnO1xuXG5pbXBvcnQgeyBXYXR0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2J1dHRvbic7XG5pbXBvcnQgeyBXYXR0RGF0ZVJhbmdlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0RmllbGRDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvZmllbGQnO1xuaW1wb3J0IHsgV2F0dFNsaWRlckNvbXBvbmVudCwgV2F0dFNsaWRlclZhbHVlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3NsaWRlcic7XG5cbmltcG9ydCB7IG1hc2tpdG9UaW1lUmFuZ2VPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnLi9tYXNraXRvLXRpbWUtcmFuZ2UtbWFzayc7XG5pbXBvcnQge1xuICBXYXR0UGlja2VyQmFzZSxcbiAgV2F0dFBpY2tlclZhbHVlLFxuICBXYXR0UGxhY2Vob2xkZXJNYXNrQ29tcG9uZW50LFxufSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvcGlja2VyL19fc2hhcmVkJztcblxuLy8gQ29uc3RhbnRzIGZvciB3b3JraW5nIHdpdGggdGltZSBpbnRlcnZhbHNcbmNvbnN0IG1pbnV0ZXNJbkFEYXkgPSAyNCAqIDYwO1xuY29uc3QgcXVhcnRlcnNJbkFEYXkgPSBtaW51dGVzSW5BRGF5IC8gMTU7XG5cbi8vIFNob3cgc2xpZGVyIGluaXRpYWxseSBhcyBcIjAwOjAwIC0gMjM6NTlcIlxuY29uc3QgaW5pdGlhbFNsaWRlclZhbHVlOiBXYXR0U2xpZGVyVmFsdWUgPSB7IG1pbjogMCwgbWF4OiBtaW51dGVzSW5BRGF5IC0gMSB9O1xuXG4vKiogQ29udmVydHMgc3RyaW5nIHRpbWUgZm9ybWF0IChISDpNTSkgdG8gbnVtYmVyIG9mIG1pbnV0ZXMuICovXG5mdW5jdGlvbiB0aW1lVG9NaW51dGVzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBbaG91cnMsIG1pbnV0ZXNdID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgcmV0dXJuIE51bWJlcihob3VycykgKiA2MCArIE51bWJlcihtaW51dGVzKTtcbn1cblxuLyoqIENvbnZlcnRzIG51bWJlciBvZiBtaW51dGVzIHRvIHN0cmluZyB0aW1lIGZvcm1hdCAoSEg6TU0pLiAqL1xuZnVuY3Rpb24gbWludXRlc1RvVGltZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgaG91cnMgPSBgJHtNYXRoLmZsb29yKHZhbHVlIC8gNjApfWA7XG4gIGNvbnN0IG1pbnV0ZXMgPSBgJHt2YWx1ZSAlIDYwfWA7XG4gIHJldHVybiBgJHtob3Vycy5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMucGFkU3RhcnQoMiwgJzAnKX1gO1xufVxuLyoqXG4gKiBVc2FnZTpcbiAqIGBpbXBvcnQgeyBXYXR0VGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RpbWVwaWNrZXInO2BcbiAqXG4gKiBJTVBPUlRBTlQ6XG4gKiBUaGUgc3R5bGluZyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIG91ciBtb25vc3BhY2VkIGZvbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhdHQtdGltZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93YXR0LXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LXRpbWVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogV2F0dFRpbWVwaWNrZXJDb21wb25lbnQgfV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG5cbiAgICBXYXR0QnV0dG9uQ29tcG9uZW50LFxuICAgIFdhdHRTbGlkZXJDb21wb25lbnQsXG4gICAgV2F0dEZpZWxkQ29tcG9uZW50LFxuICAgIFdhdHRQbGFjZWhvbGRlck1hc2tDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUaW1lcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgV2F0dFBpY2tlckJhc2Uge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBjaGFuZ2VEZXRlY3Rpb25SZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgbGFiZWwgPSBpbnB1dCgnJyk7XG4gIC8qKlxuICAgKiBUZXh0IHRvIGRpc3BsYXkgb24gbGFiZWwgZm9yIHRpbWUgcmFuZ2Ugc2xpZGVyLlxuICAgKi9cbiAgc2xpZGVyTGFiZWwgPSBpbnB1dCgnJyk7XG5cbiAgb3ZlcnJpZGUgaW5wdXQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3RpbWVJbnB1dCcpO1xuICBvdmVycmlkZSBzdGFydElucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdzdGFydFRpbWVJbnB1dCcpO1xuICBvdmVycmlkZSBlbmRJbnB1dCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZW5kVGltZUlucHV0Jyk7XG5cbiAgc2xpZGVySWQgPSBgJHt0aGlzLmlkfS1zbGlkZXJgO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBkZWZpbmluZyBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSB0aW1lIHBpY2tlciBhbmRcbiAgICogdGhlIHNsaWRlciBvdmVybGF5IChzaW5jZSB0aGUgRE9NIGhpZXJhcmNoeSBjYW5ub3QgYmUgdXNlZCkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW93bnMnKVxuICBnZXQgYXJpYU93bnMoKSB7XG4gICAgLy8gT25seSByYW5nZSBpbnB1dCBoYXMgc2xpZGVyXG4gICAgcmV0dXJuIHRoaXMucmFuZ2UgJiYgdGhpcy5zbGlkZXJPcGVuID8gdGhpcy5zbGlkZXJJZCA6IHVuZGVmaW5lZDtcbiAgfVxuICBob3Vyc01pbnV0ZXNQbGFjZWhvbGRlciA9ICdISDpNTSc7XG4gIHJhbmdlU2VwYXJhdG9yID0gJyAtICc7XG4gIHJhbmdlUGxhY2Vob2xkZXIgPVxuICAgIHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIgKyB0aGlzLnJhbmdlU2VwYXJhdG9yICsgdGhpcy5ob3Vyc01pbnV0ZXNQbGFjZWhvbGRlcjtcbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlciA9IHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBpcyBvcGVuLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzbGlkZXJPcGVuID0gZmFsc2U7XG5cbiAgc2xpZGVyU3RlcHMgPSBbLi4uQXJyYXkocXVhcnRlcnNJbkFEYXkpLmtleXMoKV0ubWFwKCh4KSA9PiB4ICogMTUpLmNvbmNhdChtaW51dGVzSW5BRGF5IC0gMSk7XG5cbiAgc2xpZGVyQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdhdHRTbGlkZXJWYWx1ZT4oKTtcblxuICBnZXQgc2xpZGVyVmFsdWUoKTogV2F0dFNsaWRlclZhbHVlIHtcbiAgICBpZiAodGhpcy52YWx1ZT8uc3RhcnQgJiYgdGhpcy52YWx1ZT8uZW5kKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHRpbWVUb01pbnV0ZXModGhpcy52YWx1ZS5zdGFydCksXG4gICAgICAgIG1heDogdGltZVRvTWludXRlcyh0aGlzLnZhbHVlLmVuZCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFJldGFpbiBsYXN0IHNsaWRlciB2YWx1ZSBpZiBpbnB1dCB2YWx1ZSBpcyBpbmNvbXBsZXRlXG4gICAgcmV0dXJuIGluaXRpYWxTbGlkZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzbGlkZXIgb3ZlcmxheS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdG9nZ2xlU2xpZGVyKCkge1xuICAgIHRoaXMuc2xpZGVyT3BlbiA9ICF0aGlzLnNsaWRlck9wZW47XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gYXV0b21hdGljYWxseSBjbG9zZSB0aGUgc2xpZGVyIG92ZXJsYXkgb24gYmx1ci5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgb25Gb2N1c091dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIHN1cGVyLm9uRm9jdXNPdXQoZXZlbnQpO1xuICAgIGlmICghdGhpcy5mb2N1c2VkKSB0aGlzLnNsaWRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGlucHV0TWFzayA9IG1hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvcih7IG1vZGU6ICdISDpNTScgfSk7XG4gIHJhbmdlSW5wdXRNYXNrID0gbWFza2l0b1RpbWVSYW5nZU9wdGlvbnNHZW5lcmF0b3IoKTtcbiAgb3ZlcnJpZGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgd2F0dC10aW1lcGlja2VyLSR7V2F0dFRpbWVwaWNrZXJDb21wb25lbnQubmV4dElkKyt9YCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFNpbmdsZUlucHV0KCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSAmJiBpbnB1dCkge1xuICAgICAgKGlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZSBhcyBzdHJpbmc7XG4gICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0Q2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGltZSA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIubGVuZ3RoKTtcbiAgICBpZiAodGltZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aW1lLmxlbmd0aCAhPT0gdGhpcy5ob3Vyc01pbnV0ZXNQbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh0aW1lKTtcbiAgfVxuXG4gIHJhbmdlSW5wdXRDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFydCA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIubGVuZ3RoKTtcbiAgICBpZiAoc3RhcnQubGVuZ3RoICE9PSB0aGlzLmhvdXJzTWludXRlc1BsYWNlaG9sZGVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7IHN0YXJ0OiAnJywgZW5kOiAnJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8IHRoaXMucmFuZ2VQbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydCwgZW5kOiAnJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGVuZCA9IHZhbHVlLnNsaWNlKHRoaXMuaG91cnNNaW51dGVzUGxhY2Vob2xkZXIubGVuZ3RoICsgdGhpcy5yYW5nZVNlcGFyYXRvci5sZW5ndGgpO1xuICAgIGlmICh0aW1lVG9NaW51dGVzKGVuZCkgPiB0aW1lVG9NaW51dGVzKHN0YXJ0KSkge1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pbnV0ZXNUb1RpbWUodGltZVRvTWludXRlcyhzdGFydCkgKyAxKTtcbiAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZUFuZE5vdGlmeShzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFJhbmdlSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSB7XG4gICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHRoaXMuaW5pdGlhbFZhbHVlIGFzIFdhdHREYXRlUmFuZ2U7XG4gICAgICB0aGlzLnNldFJhbmdlVmFsdWVBbmROb3RpZnkoc3RhcnQsIGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydDogJycsIGVuZDogJycgfSk7XG4gICAgfVxuICAgIHRoaXMuc2xpZGVyQ2hhbmdlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHNsaWRlclZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IG1pbnV0ZXNUb1RpbWUoc2xpZGVyVmFsdWUubWluKTtcbiAgICAgIGNvbnN0IGVuZCA9IG1pbnV0ZXNUb1RpbWUoc2xpZGVyVmFsdWUubWF4KTtcbiAgICAgIGlmIChlbmQgPiBzdGFydCkge1xuICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWVBbmROb3RpZnkoc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRSYW5nZVZhbHVlQW5kTm90aWZ5KHN0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICghaW5wdXQpIHJldHVybjtcbiAgICAoaW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9IHN0YXJ0ICsgdGhpcy5yYW5nZVNlcGFyYXRvciArIGVuZDtcbiAgICBpbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNpbmdsZVZhbHVlKFxuICAgIHZhbHVlOiBFeGNsdWRlPFdhdHRQaWNrZXJWYWx1ZSwgV2F0dERhdGVSYW5nZT4sXG4gICAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnRcbiAgKSB7XG4gICAgaW5wdXQudmFsdWUgPSB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRSYW5nZVZhbHVlKFxuICAgIHZhbHVlOiBXYXR0RGF0ZVJhbmdlLFxuICAgIHN0YXJ0SW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgZW5kSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnRcbiAgKSB7XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSB2YWx1ZTtcblxuICAgIGlmIChzdGFydCkge1xuICAgICAgc3RhcnRJbnB1dC52YWx1ZSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmIChlbmQpIHtcbiAgICAgIGVuZElucHV0LnZhbHVlID0gZW5kO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx3YXR0LWZpZWxkIFtpZF09XCJpZFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbbGFiZWxdPVwibGFiZWwoKVwiPlxuICBAaWYgKCFyYW5nZSkge1xuICAgIDxpbnB1dFxuICAgICAgaW5lcnRcbiAgICAgIG1hdElucHV0XG4gICAgICBhcmlhLWxhYmVsPVwidGltZS1pbnB1dFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxpbnB1dCAjdGltZUlucHV0IGNsYXNzPVwibWFzay1pbnB1dFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XG4gICAgPHdhdHQtcGxhY2Vob2xkZXItbWFza1xuICAgICAgW3ByaW1hcnlJbnB1dEVsZW1lbnRdPVwidGltZUlucHV0XCJcbiAgICAgIFttYXNrXT1cImlucHV0TWFza1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaG91cnNNaW51dGVzUGxhY2Vob2xkZXJcIlxuICAgICAgKG1hc2tBcHBsaWVkKT1cImlucHV0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXRcbiAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIGluZXJ0XG4gICAgICAgIGFyaWEtbGFiZWw9XCJzdGFydC10aW1lLWlucHV0XCJcbiAgICAgICAgbWF0U3RhcnREYXRlXG4gICAgICAgICNzdGFydFRpbWVJbnB1dFxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpbmVydFxuICAgICAgICBhcmlhLWxhYmVsPVwiZW5kLXRpbWUtaW5wdXRcIlxuICAgICAgICBtYXRFbmREYXRlXG4gICAgICAgICNlbmRUaW1lSW5wdXRcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICA8aW5wdXQgI3RpbWVJbnB1dCBjbGFzcz1cIm1hc2staW5wdXRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAvPlxuICAgIDx3YXR0LXBsYWNlaG9sZGVyLW1hc2tcbiAgICAgIFtwcmltYXJ5SW5wdXRFbGVtZW50XT1cInRpbWVJbnB1dFwiXG4gICAgICBbbWFza109XCJyYW5nZUlucHV0TWFza1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmFuZ2VQbGFjZWhvbGRlclwiXG4gICAgICAobWFza0FwcGxpZWQpPVwicmFuZ2VJbnB1dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cInRpbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJzbGlkZXJPcGVuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVTbGlkZXIoKVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJzbGlkZXJPcGVuXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WV09XCIxMlwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwic2xpZGVySWRcIlxuICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LXRpbWVwaWNrZXItc2xpZGVyXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwid2F0dC1sYWJlbFwiPnt7IHNsaWRlckxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgIDx3YXR0LXNsaWRlclxuICAgICAgICAgIFttaW5dPVwic2xpZGVyU3RlcHNbMF1cIlxuICAgICAgICAgIFttYXhdPVwic2xpZGVyU3RlcHNbc2xpZGVyU3RlcHMubGVuZ3RoIC0gMV1cIlxuICAgICAgICAgIFtzdGVwXT1cIjFcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJWYWx1ZVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNsaWRlckNoYW5nZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH1cblxuICA8bmctY29udGVudCAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtaGludFwiIHNlbGVjdD1cIndhdHQtZmllbGQtaGludFwiIC8+XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1lcnJvclwiIHNlbGVjdD1cIndhdHQtZmllbGQtZXJyb3JcIiAvPlxuPC93YXR0LWZpZWxkPlxuIl19
|
package/package.json
CHANGED
|
@@ -14,27 +14,28 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import { AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, OnDestroy, OnInit, Signal } from '@angular/core';
|
|
17
|
+
import { OnInit, Signal, OnDestroy, ElementRef, DestroyRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
|
|
19
18
|
import { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';
|
|
19
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
20
20
|
import { Subject } from 'rxjs';
|
|
21
21
|
import { WattDateRange } from '@energinet/watt/core/date';
|
|
22
22
|
import { WattPickerValue } from './watt-picker-value';
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
export declare abstract class WattPickerBase implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {
|
|
25
|
-
protected
|
|
25
|
+
protected destroyRef: DestroyRef;
|
|
26
26
|
protected changeDetectionRef: ChangeDetectorRef;
|
|
27
27
|
protected ngControl: NgControl | null;
|
|
28
|
-
protected
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
protected elementRef: ElementRef<HTMLElement>;
|
|
29
|
+
abstract input: Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
30
|
+
abstract endInput: Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
31
|
+
abstract startInput: Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
31
32
|
static nextId: number;
|
|
32
33
|
id: string;
|
|
33
34
|
initialValue: WattPickerValue;
|
|
34
35
|
focused: boolean;
|
|
35
36
|
controlType: string;
|
|
36
37
|
stateChanges: Subject<void>;
|
|
37
|
-
|
|
38
|
+
userAriaDescribedBy: import("@angular/core").InputSignal<string | undefined>;
|
|
38
39
|
get placeholder(): string;
|
|
39
40
|
set placeholder(value: string);
|
|
40
41
|
protected abstract _placeholder: string;
|
|
@@ -76,5 +77,5 @@ export declare abstract class WattPickerBase implements OnInit, AfterViewInit, O
|
|
|
76
77
|
protected changeParentValue: (value: string | WattDateRange) => void;
|
|
77
78
|
protected markParentControlAsTouched: () => void;
|
|
78
79
|
static ɵfac: i0.ɵɵFactoryDeclaration<WattPickerBase, never>;
|
|
79
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<WattPickerBase, never, never, { "value": { "alias": "value"; "required": false; }; "range": { "alias": "range"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
|
|
80
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WattPickerBase, never, never, { "userAriaDescribedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; }; "range": { "alias": "range"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
|
|
80
81
|
}
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
17
|
+
import { ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
|
|
18
18
|
import { AbstractControl, NgControl, Validator } from '@angular/forms';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
19
|
+
import { MatEndDate, MatStartDate, MatDateRangeInput, MatDateRangePicker, MatDatepickerInput, MatCalendarCellClassFunction } from '@angular/material/datepicker';
|
|
20
|
+
import { WattRange, WattDateRange, WattSupportedLocales } from '@energinet/watt/core/date';
|
|
21
21
|
import { WattPickerBase, WattPickerValue } from '@energinet/watt/picker/__shared';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
23
23
|
export declare const danishTimeZoneIdentifier = "Europe/Copenhagen";
|
|
@@ -36,20 +36,20 @@ export declare class WattDatepickerComponent extends WattPickerBase implements V
|
|
|
36
36
|
private locale;
|
|
37
37
|
max: import("@angular/core").InputSignal<Date | undefined>;
|
|
38
38
|
min: import("@angular/core").InputSignal<Date | undefined>;
|
|
39
|
+
label: import("@angular/core").InputSignal<string>;
|
|
39
40
|
rangeMonthOnlyMode: import("@angular/core").InputSignal<boolean>;
|
|
40
41
|
startAt: import("@angular/core").InputSignal<Date | null>;
|
|
41
|
-
label: import("@angular/core").InputSignal<string>;
|
|
42
42
|
dateClass: import("@angular/core").InputSignal<MatCalendarCellClassFunction<Date>>;
|
|
43
43
|
canStepThroughDays: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
matEndDate: import("@angular/core").Signal<MatEndDate<Date | null> | undefined>;
|
|
45
|
+
matStartDate: import("@angular/core").Signal<MatStartDate<Date | null> | undefined>;
|
|
46
|
+
matDateRangeInput: import("@angular/core").Signal<MatDateRangeInput<Date | null> | undefined>;
|
|
47
|
+
matDatepickerInput: import("@angular/core").Signal<MatDatepickerInput<Date | null> | undefined>;
|
|
48
|
+
matDateRangePicker: import("@angular/core").Signal<MatDateRangePicker<Date | null> | undefined>;
|
|
49
|
+
actualInput: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
50
|
+
input: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
51
|
+
endInput: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
52
|
+
startInput: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
53
53
|
protected _placeholder: string;
|
|
54
54
|
rangeSeparator: string;
|
|
55
55
|
rangePlaceholder: string;
|
|
@@ -61,7 +61,7 @@ export declare class WattDatepickerComponent extends WattPickerBase implements V
|
|
|
61
61
|
isNextDayButtonDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
62
62
|
constructor();
|
|
63
63
|
ngAfterViewInit(): void;
|
|
64
|
-
validate({ value }: AbstractControl<WattRange<string>>)
|
|
64
|
+
validate: ({ value }: AbstractControl<WattRange<string>>) => {
|
|
65
65
|
monthOnly: boolean;
|
|
66
66
|
} | null;
|
|
67
67
|
protected initSingleInput(): void;
|
|
@@ -91,5 +91,5 @@ export declare class WattDatepickerComponent extends WattPickerBase implements V
|
|
|
91
91
|
private setToEndOfDay;
|
|
92
92
|
private setEndDateToDanishTimeZone;
|
|
93
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<WattDatepickerComponent, never>;
|
|
94
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<WattDatepickerComponent, "watt-datepicker", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WattDatepickerComponent, "watt-datepicker", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "rangeMonthOnlyMode": { "alias": "rangeMonthOnlyMode"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "dateClass": { "alias": "dateClass"; "required": false; "isSignal": true; }; "canStepThroughDays": { "alias": "canStepThroughDays"; "required": false; "isSignal": true; }; }, {}, never, ["*", "watt-field-hint", "watt-field-error"], true, never>;
|
|
95
95
|
}
|
|
@@ -21,9 +21,9 @@ export declare class WattTimepickerComponent extends WattPickerBase {
|
|
|
21
21
|
* Text to display on label for time range slider.
|
|
22
22
|
*/
|
|
23
23
|
sliderLabel: import("@angular/core").InputSignal<string>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
input: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
25
|
+
startInput: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
26
|
+
endInput: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
27
27
|
sliderId: string;
|
|
28
28
|
/**
|
|
29
29
|
* Used for defining a relationship between the time picker and
|