@kushki/ng-suka
Version:
<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>
244 lines • 16.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, ElementRef, TemplateRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
var DatePickerInput = /** @class */ (function () {
function DatePickerInput(elementRef) {
this.elementRef = elementRef;
/**
* Select a calendar type for the `model`.
*/
this.type = 'simple';
/**
* Sets the id for the `DatePickerInput`.
*/
this.id = "datepicker-" + DatePickerInput.datePickerCount++;
/**
* Set to `true` to display a calendar icon
*/
this.hasIcon = false;
/**
* Sets the input's placeholder.
*/
this.placeholder = 'dd/mm/yyyy';
/**
* Sets the pattern to follow.
*/
this.pattern = '^\\d{1,2}/\\d{1,2}/\\d{4}$';
/**
* Emits event notifying other classes of a value change.
*/
this.valueChange = new EventEmitter();
/**
* Set to `true` to disable the input
*/
this.disabled = false;
/**
* Set to `true` to display invalid state.
*/
this.invalid = false;
/**
* Sets a time picker icon for input
*/
this.timePicker = false;
/**
* Skeleton state.
*/
this.skeleton = false;
/**
* Sets the `DatepickerInput` value.
*/
this.value = '';
this.onTouched = (/**
* @return {?}
*/
function () { });
this.propagateChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { });
}
/**
* Sets the value, marks the input as touched and emits a value change event.
*/
/**
* Sets the value, marks the input as touched and emits a value change event.
* @param {?} event
* @return {?}
*/
DatePickerInput.prototype.onChange = /**
* Sets the value, marks the input as touched and emits a value change event.
* @param {?} event
* @return {?}
*/
function (event) {
this.value = event.target.value;
this.valueChange.emit(this.value);
this.propagateChange(this.value);
this.onTouched();
};
/**
* @param {?} value
* @return {?}
*/
DatePickerInput.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.value = value;
};
/**
* @param {?} fn
* @return {?}
*/
DatePickerInput.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.propagateChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
DatePickerInput.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @param {?} value
* @return {?}
*/
DatePickerInput.prototype.isTemplate = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value instanceof TemplateRef;
};
DatePickerInput.datePickerCount = 0;
DatePickerInput.decorators = [
{ type: Component, args: [{
selector: 'suka-date-picker-input',
template: "\n <div class=\"date-picker-input\"\n [ngClass]=\"{\n 'date-picker--single' : type === 'single',\n 'date-picker--range' : type === 'range',\n 'skeleton' : skeleton\n }\">\n <div class=\"date-picker-input-container\">\n <label *ngIf=\"label\" [for]=\"id\" class=\"label\">\n <ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n <ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n </label>\n <div class=\"date-picker-input__wrapper\">\n <input\n *ngIf=\"!skeleton\"\n autocomplete=\"off\"\n type=\"text\"\n class=\"date-picker__input\"\n [value]=\"value\"\n [pattern]=\"pattern\"\n [placeholder]=\"placeholder\"\n [id]= \"id\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"/>\n <suka-icon\n icon=\"calendar\"\n class=\"date-picker__icon\"\n *ngIf=\"!timePicker\"\n >\n </suka-icon>\n <suka-icon\n icon=\"clock\"\n class=\"date-picker__icon\"\n *ngIf=\"timePicker\"\n >\n </suka-icon>\n </div>\n <div *ngIf=\"invalid\" class=\"form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n <ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n </div>\n </div>\n </div>\n ",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: DatePickerInput,
multi: true
}
]
}] }
];
/** @nocollapse */
DatePickerInput.ctorParameters = function () { return [
{ type: ElementRef }
]; };
DatePickerInput.propDecorators = {
type: [{ type: Input }],
id: [{ type: Input }],
hasIcon: [{ type: Input }],
label: [{ type: Input }],
placeholder: [{ type: Input }],
pattern: [{ type: Input }],
valueChange: [{ type: Output }],
disabled: [{ type: Input }],
invalid: [{ type: Input }],
invalidText: [{ type: Input }],
timePicker: [{ type: Input }],
skeleton: [{ type: Input }],
value: [{ type: Input }]
};
return DatePickerInput;
}());
export { DatePickerInput };
if (false) {
/**
* @type {?}
* @private
*/
DatePickerInput.datePickerCount;
/**
* Select a calendar type for the `model`.
* @type {?}
*/
DatePickerInput.prototype.type;
/**
* Sets the id for the `DatePickerInput`.
* @type {?}
*/
DatePickerInput.prototype.id;
/**
* Set to `true` to display a calendar icon
* @type {?}
*/
DatePickerInput.prototype.hasIcon;
/**
* label content.
* @type {?}
*/
DatePickerInput.prototype.label;
/**
* Sets the input's placeholder.
* @type {?}
*/
DatePickerInput.prototype.placeholder;
/**
* Sets the pattern to follow.
* @type {?}
*/
DatePickerInput.prototype.pattern;
/**
* Emits event notifying other classes of a value change.
* @type {?}
*/
DatePickerInput.prototype.valueChange;
/**
* Set to `true` to disable the input
* @type {?}
*/
DatePickerInput.prototype.disabled;
/**
* Set to `true` to display invalid state.
* @type {?}
*/
DatePickerInput.prototype.invalid;
/**
* Feedback message to display when `DatepickerInput` is invalid.
* @type {?}
*/
DatePickerInput.prototype.invalidText;
/**
* Sets a time picker icon for input
* @type {?}
*/
DatePickerInput.prototype.timePicker;
/**
* Skeleton state.
* @type {?}
*/
DatePickerInput.prototype.skeleton;
/**
* Sets the `DatepickerInput` value.
* @type {?}
*/
DatePickerInput.prototype.value;
/** @type {?} */
DatePickerInput.prototype.onTouched;
/** @type {?} */
DatePickerInput.prototype.propagateChange;
/**
* @type {?}
* @protected
*/
DatePickerInput.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3VzaGtpL25nLXN1a2EvIiwic291cmNlcyI6WyJsaWIvZGF0ZXBpY2tlci1pbnB1dC9kYXRlcGlja2VyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5EO0lBMEhFLHlCQUFzQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZOzs7O1FBOURuQyxTQUFJLEdBQWtDLFFBQVEsQ0FBQzs7OztRQUsvQyxPQUFFLEdBQUcsZ0JBQWMsZUFBZSxDQUFDLGVBQWUsRUFBSSxDQUFDOzs7O1FBS3ZELFlBQU8sR0FBRyxLQUFLLENBQUM7Ozs7UUFVaEIsZ0JBQVcsR0FBRyxZQUFZLENBQUM7Ozs7UUFLM0IsWUFBTyxHQUFHLDRCQUE0QixDQUFDOzs7O1FBS3RDLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7Ozs7UUFLeEQsYUFBUSxHQUFHLEtBQUssQ0FBQzs7OztRQUtqQixZQUFPLEdBQUcsS0FBSyxDQUFDOzs7O1FBVWhCLGVBQVUsR0FBRyxLQUFLLENBQUM7Ozs7UUFLbkIsYUFBUSxHQUFHLEtBQUssQ0FBQzs7OztRQUtqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBMEJwQixjQUFTOzs7UUFBYyxjQUFRLENBQUMsRUFBQztRQUVqQyxvQkFBZTs7OztRQUFHLFVBQUMsQ0FBTSxJQUFPLENBQUMsRUFBQztJQTFCYyxDQUFDO0lBRWpEOztPQUVHOzs7Ozs7SUFDSCxrQ0FBUTs7Ozs7SUFBUixVQUFTLEtBQUs7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Ozs7SUFFTSxvQ0FBVTs7OztJQUFqQixVQUFrQixLQUFVO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRU0sMENBQWdCOzs7O0lBQXZCLFVBQXdCLEVBQU87UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7Ozs7SUFFTSwyQ0FBaUI7Ozs7SUFBeEIsVUFBeUIsRUFBTztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7OztJQU1NLG9DQUFVOzs7O0lBQWpCLFVBQWtCLEtBQUs7UUFDckIsT0FBTyxLQUFLLFlBQVksV0FBVyxDQUFDO0lBQ3RDLENBQUM7SUFqR2MsK0JBQWUsR0FBRyxDQUFDLENBQUM7O2dCQXZEcEMsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRSx3a0RBMkNUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsZUFBZTs0QkFDNUIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7Ozs7Z0JBMURDLFVBQVU7Ozt1QkFpRVQsS0FBSztxQkFLTCxLQUFLOzBCQUtMLEtBQUs7d0JBS0wsS0FBSzs4QkFLTCxLQUFLOzBCQUtMLEtBQUs7OEJBS0wsTUFBTTsyQkFLTixLQUFLOzBCQUtMLEtBQUs7OEJBS0wsS0FBSzs2QkFLTCxLQUFLOzJCQUtMLEtBQUs7d0JBS0wsS0FBSzs7SUFpQ1Isc0JBQUM7Q0FBQSxBQXpKRCxJQXlKQztTQW5HWSxlQUFlOzs7Ozs7SUFDMUIsZ0NBQW1DOzs7OztJQUtuQywrQkFBd0Q7Ozs7O0lBS3hELDZCQUFnRTs7Ozs7SUFLaEUsa0NBQXlCOzs7OztJQUt6QixnQ0FBMEM7Ozs7O0lBSzFDLHNDQUFvQzs7Ozs7SUFLcEMsa0NBQWdEOzs7OztJQUtoRCxzQ0FBaUU7Ozs7O0lBS2pFLG1DQUEwQjs7Ozs7SUFLMUIsa0NBQXlCOzs7OztJQUt6QixzQ0FBZ0Q7Ozs7O0lBS2hELHFDQUE0Qjs7Ozs7SUFLNUIsbUNBQTBCOzs7OztJQUsxQixnQ0FBb0I7O0lBMEJwQixvQ0FBaUM7O0lBRWpDLDBDQUFrQzs7Ozs7SUExQnRCLHFDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBFbGVtZW50UmVmLFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdWthLWRhdGUtcGlja2VyLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItaW5wdXRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZGF0ZS1waWNrZXItLXNpbmdsZScgOiB0eXBlID09PSAnc2luZ2xlJyxcbiAgICAgICAgJ2RhdGUtcGlja2VyLS1yYW5nZScgOiB0eXBlID09PSAncmFuZ2UnLFxuICAgICAgICAnc2tlbGV0b24nIDogc2tlbGV0b25cbiAgICAgIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCIgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShsYWJlbClcIj57e2xhYmVsfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGxhYmVsKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWlucHV0X193cmFwcGVyXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdJZj1cIiFza2VsZXRvblwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlcl9faW5wdXRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cInBhdHRlcm5cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtpZF09IFwiaWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiLz5cbiAgICAgICAgICAgIDxzdWthLWljb25cbiAgICAgICAgICAgICAgaWNvbj1cImNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlcl9faWNvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXRpbWVQaWNrZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zdWthLWljb24+XG4gICAgICAgICAgICA8c3VrYS1pY29uXG4gICAgICAgICAgICAgIGljb249XCJjbG9ja1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXJfX2ljb25cIlxuICAgICAgICAgICAgICAqbmdJZj1cInRpbWVQaWNrZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zdWthLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW52YWxpZFwiIGNsYXNzPVwiZm9ybS1yZXF1aXJlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIj57e2ludmFsaWRUZXh0fX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogRGF0ZVBpY2tlcklucHV0LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlcklucHV0IHtcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZVBpY2tlckNvdW50ID0gMDtcblxuICAvKipcbiAgICogU2VsZWN0IGEgY2FsZW5kYXIgdHlwZSBmb3IgdGhlIGBtb2RlbGAuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiAnc2ltcGxlJyB8ICdzaW5nbGUnIHwgJ3JhbmdlJyA9ICdzaW1wbGUnO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpZCBmb3IgdGhlIGBEYXRlUGlja2VySW5wdXRgLlxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgZGF0ZXBpY2tlci0ke0RhdGVQaWNrZXJJbnB1dC5kYXRlUGlja2VyQ291bnQrK31gO1xuXG4gIC8qKlxuICAgKiAgU2V0IHRvIGB0cnVlYCB0byBkaXNwbGF5IGEgY2FsZW5kYXIgaWNvblxuICAgKi9cbiAgQElucHV0KCkgaGFzSWNvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBsYWJlbCBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGlucHV0J3MgcGxhY2Vob2xkZXIuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdkZC9tbS95eXl5JztcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGF0dGVybiB0byBmb2xsb3cuXG4gICAqL1xuICBASW5wdXQoKSBwYXR0ZXJuID0gJ15cXFxcZHsxLDJ9L1xcXFxkezEsMn0vXFxcXGR7NH0kJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgbm90aWZ5aW5nIG90aGVyIGNsYXNzZXMgb2YgYSB2YWx1ZSBjaGFuZ2UuXG4gICAqL1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdGhlIGlucHV0XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIHRvIGRpc3BsYXkgaW52YWxpZCBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRmVlZGJhY2sgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gYERhdGVwaWNrZXJJbnB1dGAgaXMgaW52YWxpZC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWRUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgdGltZSBwaWNrZXIgaWNvbiBmb3IgaW5wdXRcbiAgICovXG4gIEBJbnB1dCgpIHRpbWVQaWNrZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogU2tlbGV0b24gc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgRGF0ZXBpY2tlcklucHV0YCB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSwgbWFya3MgdGhlIGlucHV0IGFzIHRvdWNoZWQgYW5kIGVtaXRzIGEgdmFsdWUgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgb25DaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7IH07XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuXG4gIHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cbn1cbiJdfQ==