carbon-components-angular
Version:
Next generation components
214 lines • 16.2 kB
JavaScript
import { Component, Input, Output, EventEmitter, HostBinding, TemplateRef, HostListener } from "@angular/core";
import { NG_VALUE_ACCESSOR } from "@angular/forms";
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
/**
* Get started with importing the module:
*
* ```typescript
* import { TimePickerModule } from 'carbon-components-angular';
* ```
*
* [See demo](../../?path=/story/components-time-picker--simple)
*/
export class TimePicker {
constructor() {
this.invalid = false;
this.hideLabel = false;
this.placeholder = "hh:mm";
this.pattern = "(1[012]|[0-9]):[0-5][0-9]";
this.id = `timepicker-${TimePicker.timePickerCount++}`;
this.disabled = false;
this.maxLength = 5;
/**
* Set to true for a loading select.
*/
this.skeleton = false;
/**
* @deprecated since v5 - Use `cdsLayer` directive instead
*/
this.theme = "dark";
/**
* `sm`, `md` (default), or `lg` select size
*/
this.size = "md";
this.valueChange = new EventEmitter();
/**
* Ensures component is properly styled when used standalone.
*/
this.timepickerClass = true;
this.onChangeHandler = (_) => { };
this.onTouchedHandler = () => { };
}
writeValue(value) {
this.value = value;
}
registerOnChange(callback) {
this.onChangeHandler = callback;
}
registerOnTouched(callback) {
this.onTouchedHandler = callback;
}
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
onChange(event) {
this.onChangeHandler(event.target.value);
this.valueChange.emit(event.target.value);
}
focusOut() {
this.onTouchedHandler();
}
isTemplate(value) {
return value instanceof TemplateRef;
}
}
/**
* Tracks the total number of selects instantiated. Used to generate unique IDs
*/
TimePicker.timePickerCount = 0;
TimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
TimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TimePicker, selector: "cds-timepicker, ibm-timepicker", inputs: { invalid: "invalid", invalidText: "invalidText", label: "label", hideLabel: "hideLabel", placeholder: "placeholder", pattern: "pattern", id: "id", disabled: "disabled", value: "value", maxLength: "maxLength", skeleton: "skeleton", theme: "theme", size: "size" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "focusout": "focusOut()" }, properties: { "class.cds--form-item": "this.timepickerClass" } }, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: TimePicker,
multi: true
}
], ngImport: i0, template: `
<label
*ngIf="!skeleton && label"
[for]="id"
class="cds--label"
[ngClass]="{
'cds--label--disabled': disabled,
'cds--visually-hidden': hideLabel
}">
<ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
<ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
</label>
<div
class="cds--time-picker"
[ngClass]="{
'cds--time-picker--invalid' : invalid,
'cds--time-picker--sm': size === 'sm',
'cds--time-picker--md': size === 'md',
'cds--time-picker--lg': size === 'lg',
'cds--time-picker--light': theme === 'light'
}">
<div class="cds--time-picker__input">
<input
[ngClass]="{
'cds--text-input--light': theme === 'light',
'cds--skeleton': skeleton
}"
[value]="value"
[placeholder]="placeholder"
[attr.data-invalid]="invalid ? true : undefined"
[pattern]="pattern"
[attr.id]="id"
[disabled]="disabled"
[attr.maxlength]="maxLength"
(change)="onChange($event)"
type="text"
class="cds--time-picker__input-field cds--text-input">
</div>
<ng-content></ng-content>
</div>
<div *ngIf="invalid" class="cds--form-requirement">
<ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
<ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
</div>
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TimePicker, decorators: [{
type: Component,
args: [{
selector: "cds-timepicker, ibm-timepicker",
template: `
<label
*ngIf="!skeleton && label"
[for]="id"
class="cds--label"
[ngClass]="{
'cds--label--disabled': disabled,
'cds--visually-hidden': hideLabel
}">
<ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
<ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
</label>
<div
class="cds--time-picker"
[ngClass]="{
'cds--time-picker--invalid' : invalid,
'cds--time-picker--sm': size === 'sm',
'cds--time-picker--md': size === 'md',
'cds--time-picker--lg': size === 'lg',
'cds--time-picker--light': theme === 'light'
}">
<div class="cds--time-picker__input">
<input
[ngClass]="{
'cds--text-input--light': theme === 'light',
'cds--skeleton': skeleton
}"
[value]="value"
[placeholder]="placeholder"
[attr.data-invalid]="invalid ? true : undefined"
[pattern]="pattern"
[attr.id]="id"
[disabled]="disabled"
[attr.maxlength]="maxLength"
(change)="onChange($event)"
type="text"
class="cds--time-picker__input-field cds--text-input">
</div>
<ng-content></ng-content>
</div>
<div *ngIf="invalid" class="cds--form-requirement">
<ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
<ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
</div>
`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: TimePicker,
multi: true
}
]
}]
}], propDecorators: { invalid: [{
type: Input
}], invalidText: [{
type: Input
}], label: [{
type: Input
}], hideLabel: [{
type: Input
}], placeholder: [{
type: Input
}], pattern: [{
type: Input
}], id: [{
type: Input
}], disabled: [{
type: Input
}], value: [{
type: Input
}], maxLength: [{
type: Input
}], skeleton: [{
type: Input
}], theme: [{
type: Input
}], size: [{
type: Input
}], valueChange: [{
type: Output
}], timepickerClass: [{
type: HostBinding,
args: ["class.cds--form-item"]
}], focusOut: [{
type: HostListener,
args: ["focusout"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGltZXBpY2tlci90aW1lcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXpFOzs7Ozs7OztHQVFHO0FBd0RILE1BQU0sT0FBTyxVQUFVO0lBdkR2QjtRQTZEVSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBR2hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFDdEIsWUFBTyxHQUFHLDJCQUEyQixDQUFDO1FBQ3RDLE9BQUUsR0FBRyxjQUFjLFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2xELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUV2Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxVQUFLLEdBQXFCLE1BQU0sQ0FBQztRQUUxQzs7V0FFRztRQUNNLFNBQUksR0FBdUIsSUFBSSxDQUFDO1FBRS9CLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFakU7O1dBRUc7UUFDa0Msb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFnQ2xELG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdkM7SUFoQ0EsVUFBVSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWE7UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWE7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdELFFBQVE7UUFDUCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQUs7UUFDdEIsT0FBTyxLQUFLLFlBQVksV0FBVyxDQUFDO0lBQ3JDLENBQUM7O0FBbEVEOztHQUVHO0FBQ0ksMEJBQWUsR0FBRyxDQUFDLENBQUM7dUdBSmYsVUFBVTsyRkFBVixVQUFVLHFlQVJYO1FBQ1Y7WUFDQyxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLEtBQUssRUFBRSxJQUFJO1NBQ1g7S0FDRCwwQkFuRFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNENUOzJGQVNXLFVBQVU7a0JBdkR0QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE0Q1Q7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsWUFBWTs0QkFDdkIsS0FBSyxFQUFFLElBQUk7eUJBQ1g7cUJBQ0Q7aUJBQ0Q7OEJBT1MsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBSzhCLGVBQWU7c0JBQW5ELFdBQVc7dUJBQUMsc0JBQXNCO2dCQXdCbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRIb3N0TGlzdGVuZXJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG4vKipcbiAqIEdldCBzdGFydGVkIHdpdGggaW1wb3J0aW5nIHRoZSBtb2R1bGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy10aW1lLXBpY2tlci0tc2ltcGxlKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLXRpbWVwaWNrZXIsIGlibS10aW1lcGlja2VyXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGxhYmVsXG5cdFx0Km5nSWY9XCIhc2tlbGV0b24gJiYgbGFiZWxcIlxuXHRcdFtmb3JdPVwiaWRcIlxuXHRcdGNsYXNzPVwiY2RzLS1sYWJlbFwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0J2Nkcy0tbGFiZWwtLWRpc2FibGVkJzogZGlzYWJsZWQsXG5cdFx0XHQnY2RzLS12aXN1YWxseS1oaWRkZW4nOiBoaWRlTGFiZWxcblx0XHR9XCI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUobGFiZWwpXCI+e3tsYWJlbH19PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGxhYmVsKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2xhYmVsPlxuXHRcdDxkaXZcblx0XHRcdGNsYXNzPVwiY2RzLS10aW1lLXBpY2tlclwiXG5cdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdCdjZHMtLXRpbWUtcGlja2VyLS1pbnZhbGlkJyA6IGludmFsaWQsXG5cdFx0XHRcdCdjZHMtLXRpbWUtcGlja2VyLS1zbSc6IHNpemUgPT09ICdzbScsXG5cdFx0XHRcdCdjZHMtLXRpbWUtcGlja2VyLS1tZCc6IHNpemUgPT09ICdtZCcsXG5cdFx0XHRcdCdjZHMtLXRpbWUtcGlja2VyLS1sZyc6IHNpemUgPT09ICdsZycsXG5cdFx0XHRcdCdjZHMtLXRpbWUtcGlja2VyLS1saWdodCc6IHRoZW1lID09PSAnbGlnaHQnXG5cdFx0XHR9XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS10aW1lLXBpY2tlcl9faW5wdXRcIj5cblx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdFx0J2Nkcy0tdGV4dC1pbnB1dC0tbGlnaHQnOiB0aGVtZSA9PT0gJ2xpZ2h0Jyxcblx0XHRcdFx0XHRcdCdjZHMtLXNrZWxldG9uJzogc2tlbGV0b25cblx0XHRcdFx0XHR9XCJcblx0XHRcdFx0XHRbdmFsdWVdPVwidmFsdWVcIlxuXHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG5cdFx0XHRcdFx0W2F0dHIuZGF0YS1pbnZhbGlkXT1cImludmFsaWQgPyB0cnVlIDogdW5kZWZpbmVkXCJcblx0XHRcdFx0XHRbcGF0dGVybl09XCJwYXR0ZXJuXCJcblx0XHRcdFx0XHRbYXR0ci5pZF09XCJpZFwiXG5cdFx0XHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFx0XHRbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcblx0XHRcdFx0XHQoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuXHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tdGltZS1waWNrZXJfX2lucHV0LWZpZWxkIGNkcy0tdGV4dC1pbnB1dFwiPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cImludmFsaWRcIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7aW52YWxpZFRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0PC9kaXY+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IFRpbWVQaWNrZXIsXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXHQvKipcblx0ICogVHJhY2tzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0cyBpbnN0YW50aWF0ZWQuIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEc1xuXHQgKi9cblx0c3RhdGljIHRpbWVQaWNrZXJDb3VudCA9IDA7XG5cblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdEBJbnB1dCgpIGhpZGVMYWJlbCA9IGZhbHNlO1xuXHRASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiaGg6bW1cIjtcblx0QElucHV0KCkgcGF0dGVybiA9IFwiKDFbMDEyXXxbMC05XSk6WzAtNV1bMC05XVwiO1xuXHRASW5wdXQoKSBpZCA9IGB0aW1lcGlja2VyLSR7VGltZVBpY2tlci50aW1lUGlja2VyQ291bnQrK31gO1xuXHRASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXHRASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXHRASW5wdXQoKSBtYXhMZW5ndGggPSA1O1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gdHJ1ZSBmb3IgYSBsb2FkaW5nIHNlbGVjdC5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEBkZXByZWNhdGVkIHNpbmNlIHY1IC0gVXNlIGBjZHNMYXllcmAgZGlyZWN0aXZlIGluc3RlYWRcblx0ICovXG5cdEBJbnB1dCgpIHRoZW1lOiBcImxpZ2h0XCIgfCBcImRhcmtcIiA9IFwiZGFya1wiO1xuXG5cdC8qKlxuXHQgKiBgc21gLCBgbWRgIChkZWZhdWx0KSwgb3IgYGxnYCBzZWxlY3Qgc2l6ZVxuXHQgKi9cblx0QElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJtZFwiO1xuXG5cdEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0LyoqXG5cdCAqIEVuc3VyZXMgY29tcG9uZW50IGlzIHByb3Blcmx5IHN0eWxlZCB3aGVuIHVzZWQgc3RhbmRhbG9uZS5cblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tZm9ybS1pdGVtXCIpIHRpbWVwaWNrZXJDbGFzcyA9IHRydWU7XG5cblx0d3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogYW55KSB7XG5cdFx0dGhpcy5vbkNoYW5nZUhhbmRsZXIgPSBjYWxsYmFjaztcblx0fVxuXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZEhhbmRsZXIgPSBjYWxsYmFjaztcblx0fVxuXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXHR9XG5cblx0b25DaGFuZ2UoZXZlbnQpIHtcblx0XHR0aGlzLm9uQ2hhbmdlSGFuZGxlcihldmVudC50YXJnZXQudmFsdWUpO1xuXHRcdHRoaXMudmFsdWVDaGFuZ2UuZW1pdChldmVudC50YXJnZXQudmFsdWUpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImZvY3Vzb3V0XCIpXG5cdGZvY3VzT3V0KCkge1xuXHRcdHRoaXMub25Ub3VjaGVkSGFuZGxlcigpO1xuXHR9XG5cblx0cHVibGljIGlzVGVtcGxhdGUodmFsdWUpIHtcblx0XHRyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcblx0fVxuXG5cdHByb3RlY3RlZCBvbkNoYW5nZUhhbmRsZXIgPSAoXzogYW55KSA9PiB7IH07XG5cdHByb3RlY3RlZCBvblRvdWNoZWRIYW5kbGVyID0gKCkgPT4geyB9O1xufVxuIl19