@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
216 lines (215 loc) • 15.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AsiCalendarComponent } from './../asi-calendar/asi-calendar.component';
import { DefaultControlValueAccessor } from './../common/default-control-value-accessor';
import { NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
import { Component, forwardRef, Input, ElementRef, ViewChild, Renderer2 } from '@angular/core';
import moment from 'moment';
var AsiDatePickerComponent = /** @class */ (function (_super) {
tslib_1.__extends(AsiDatePickerComponent, _super);
function AsiDatePickerComponent(renderer, elementRef) {
var _this = _super.call(this) || this;
_this.renderer = renderer;
_this.elementRef = elementRef;
/**
* Label position
*/
_this.labelPosition = 'top';
/**
* placeholder if not null else will be the date display pattern
*/
_this.placeholder = null;
/**
* date display pattern
*/
_this.pattern = 'DD/MM/YYYY';
/**
* open automatically when the input is focused
*/
_this.autoOpen = true;
_this.inputControl = new FormControl();
return _this;
}
/**
* @return {?}
*/
AsiDatePickerComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition);
if (this.placeholder == null) {
this.placeholder = this.pattern.toLowerCase();
}
};
/**
* @return {?}
*/
AsiDatePickerComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
var _this = this;
this.inputControl.valueChanges.subscribe(function (val) {
if (val === '' || val == null) {
_this.value = null;
}
else {
/** @type {?} */
var momentTest = moment.utc(val, _this.pattern);
if (momentTest.isValid()) {
if (val.length === _this.pattern.length) {
_this.value = momentTest.toDate();
}
else {
_this.value = {
error: 'Invalid_Date',
value: val
};
}
}
else {
_this.value = {
error: 'Invalid_Date',
value: val
};
}
}
});
};
/**
* @return {?}
*/
AsiDatePickerComponent.prototype.openCalendar = /**
* @return {?}
*/
function () {
if (this.autoOpen) {
this.calendarElement.openCalendar();
}
};
/**
* @param {?} date
* @return {?}
*/
AsiDatePickerComponent.prototype.onDatePicked = /**
* @param {?} date
* @return {?}
*/
function (date) {
/** @type {?} */
var formattedValue = moment(date).format(this.pattern);
this.inputControl.setValue(formattedValue);
};
/**
* @param {?} value
* @return {?}
*/
AsiDatePickerComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value != null) {
/** @type {?} */
var momentValue = moment.utc(value);
this._value = momentValue.toDate();
/** @type {?} */
var formattedValue = momentValue.format(this.pattern);
this.inputControl.setValue(formattedValue, { emitEvent: false });
}
else {
this._value = value;
this.inputControl.setValue(null, { emitEvent: false });
}
};
AsiDatePickerComponent.decorators = [
{ type: Component, args: [{
selector: 'asi-datepicker',
host: { 'class': 'asi-component asi-datepicker' },
template: "<label class=\"input-label\" *ngIf=\"label != null\">{{label | translate}}</label>\n<div class=\"asi-datepicker-container\">\n <input #input [attr.disabled]=\"disabled ? '' : null\" class=\"asi-focus-error\" [placeholder]=\"placeholder\"\n (click)=\"openCalendar()\" [formControl]=\"inputControl\" />\n <asi-calendar #calendar [relativeTo]=\"inputElement\" [disableDayOfWeek]=\"disableDayOfWeek\" [disabled]=\"disabled\"\n [(ngModel)]=\"value\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" (onDatePicked)=\"onDatePicked($event)\"></asi-calendar>\n</div>\n",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return AsiDatePickerComponent; }),
multi: true
}
]
}] }
];
/** @nocollapse */
AsiDatePickerComponent.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: ElementRef }
]; };
AsiDatePickerComponent.propDecorators = {
label: [{ type: Input }],
labelPosition: [{ type: Input }],
placeholder: [{ type: Input }],
pattern: [{ type: Input }],
minDate: [{ type: Input }],
maxDate: [{ type: Input }],
autoOpen: [{ type: Input }],
disableDayOfWeek: [{ type: Input }],
inputElement: [{ type: ViewChild, args: ['input',] }],
calendarElement: [{ type: ViewChild, args: ['calendar',] }]
};
return AsiDatePickerComponent;
}(DefaultControlValueAccessor));
export { AsiDatePickerComponent };
if (false) {
/**
* Label to display (is translated)
* @type {?}
*/
AsiDatePickerComponent.prototype.label;
/**
* Label position
* @type {?}
*/
AsiDatePickerComponent.prototype.labelPosition;
/**
* placeholder if not null else will be the date display pattern
* @type {?}
*/
AsiDatePickerComponent.prototype.placeholder;
/**
* date display pattern
* @type {?}
*/
AsiDatePickerComponent.prototype.pattern;
/**
* min date available
* @type {?}
*/
AsiDatePickerComponent.prototype.minDate;
/**
* max date available
* @type {?}
*/
AsiDatePickerComponent.prototype.maxDate;
/**
* open automatically when the input is focused
* @type {?}
*/
AsiDatePickerComponent.prototype.autoOpen;
/**
* allow you to disable day of week exemple [disableDayOfWeek]="[1, 2]"" while disabled monday and tusday
* @type {?}
*/
AsiDatePickerComponent.prototype.disableDayOfWeek;
/** @type {?} */
AsiDatePickerComponent.prototype.inputControl;
/** @type {?} */
AsiDatePickerComponent.prototype.inputElement;
/** @type {?} */
AsiDatePickerComponent.prototype.calendarElement;
/** @type {?} */
AsiDatePickerComponent.prototype.renderer;
/** @type {?} */
AsiDatePickerComponent.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS1kYXRlcGlja2VyL2FzaS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUF5QixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7SUFjZ0Isa0RBQTJCO0lBNEJyRSxnQ0FBb0IsUUFBbUIsRUFBVSxVQUFzQjtRQUF2RSxZQUNFLGlCQUFPLFNBQ1I7UUFGbUIsY0FBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGdCQUFVLEdBQVYsVUFBVSxDQUFZOzs7OzhCQXZCd0IsS0FBSzs7Ozs0QkFFN0UsSUFBSTs7Ozt3QkFHUixZQUFZOzs7O3lCQVFYLElBQUk7NkJBS1QsSUFBSSxXQUFXLEVBQUU7O0tBTy9COzs7O0lBRUQseUNBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9DO0tBQ0Y7Ozs7SUFFRCxnREFBZTs7O0lBQWY7UUFBQSxpQkF1QkM7UUF0QkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQUMsR0FBRztZQUMzQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNuQjtZQUFDLElBQUksQ0FBQyxDQUFDOztnQkFDTixJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9DLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxLQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztxQkFDbEM7b0JBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ04sS0FBSSxDQUFDLEtBQUssR0FBRzs0QkFDWCxLQUFLLEVBQUUsY0FBYzs0QkFDckIsS0FBSyxFQUFFLEdBQUc7eUJBQ1gsQ0FBQztxQkFDSDtpQkFDRjtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixLQUFJLENBQUMsS0FBSyxHQUFHO3dCQUNYLEtBQUssRUFBRSxjQUFjO3dCQUNyQixLQUFLLEVBQUUsR0FBRztxQkFDWCxDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFDLENBQUM7S0FDSjs7OztJQUVELDZDQUFZOzs7SUFBWjtRQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckM7S0FDRjs7Ozs7SUFFRCw2Q0FBWTs7OztJQUFaLFVBQWEsSUFBVTs7UUFDckIsSUFBSSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDNUM7Ozs7O0lBRUQsMkNBQVU7Ozs7SUFBVixVQUFXLEtBQVc7UUFDcEIsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7O1lBQ2xCLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7O1lBQ25DLElBQUksY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2xFO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN4RDtLQUNGOztnQkFqR0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRTtvQkFDakQsOGpCQUE0QztvQkFDNUMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHNCQUFzQixFQUF0QixDQUFzQixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs7OztnQkFmb0YsU0FBUztnQkFBdkQsVUFBVTs7O3dCQW1COUMsS0FBSztnQ0FFTCxLQUFLOzhCQUVMLEtBQUs7MEJBR0wsS0FBSzswQkFHTCxLQUFLOzBCQUVMLEtBQUs7MkJBR0wsS0FBSzttQ0FHTCxLQUFLOytCQUlMLFNBQVMsU0FBQyxPQUFPO2tDQUNqQixTQUFTLFNBQUMsVUFBVTs7aUNBN0N2QjtFQW1CNEMsMkJBQTJCO1NBQTFELHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzaUNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9hc2ktY2FsZW5kYXIvYXNpLWNhbGVuZGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vLi4vY29tbW9uL2RlZmF1bHQtY29udHJvbC12YWx1ZS1hY2Nlc3Nvcic7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgRWxlbWVudFJlZiwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhc2ktZGF0ZXBpY2tlcicsXHJcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktZGF0ZXBpY2tlcicgfSxcclxuICB0ZW1wbGF0ZVVybDogJ2FzaS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFzaURhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFzaURhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0Q29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAvKiogTGFiZWwgdG8gZGlzcGxheSAoaXMgdHJhbnNsYXRlZCkgKi9cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBMYWJlbCBwb3NpdGlvbiAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2JvdHRvbS1jZW50ZXInIHwgJ3RvcC1jZW50ZXInID0gJ3RvcCc7XHJcbiAgLyoqIHBsYWNlaG9sZGVyIGlmIG5vdCBudWxsIGVsc2Ugd2lsbCBiZSB0aGUgZGF0ZSBkaXNwbGF5IHBhdHRlcm4gKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IG51bGw7XHJcblxyXG4gIC8qKiBkYXRlIGRpc3BsYXkgcGF0dGVybiAqL1xyXG4gIEBJbnB1dCgpIHBhdHRlcm4gPSAnREQvTU0vWVlZWSc7XHJcblxyXG4gIC8qKiBtaW4gZGF0ZSBhdmFpbGFibGUgKi9cclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xyXG4gIC8qKiBtYXggZGF0ZSBhdmFpbGFibGUgKi9cclxuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlO1xyXG5cclxuICAvKiogb3BlbiBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGlucHV0IGlzIGZvY3VzZWQqL1xyXG4gIEBJbnB1dCgpIGF1dG9PcGVuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIGFsbG93IHlvdSB0byBkaXNhYmxlIGRheSBvZiB3ZWVrIGV4ZW1wbGUgW2Rpc2FibGVEYXlPZldlZWtdPVwiWzEsIDJdXCJcIiB3aGlsZSBkaXNhYmxlZCBtb25kYXkgYW5kIHR1c2RheSAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVEYXlPZldlZWs6IG51bWJlciB8IEFycmF5PG51bWJlcj47XHJcblxyXG4gIGlucHV0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyRWxlbWVudDogQXNpQ2FsZW5kYXJDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGFiZWwtJyArIHRoaXMubGFiZWxQb3NpdGlvbik7XHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBhdHRlcm4udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBtb21lbnRUZXN0ID0gbW9tZW50LnV0Yyh2YWwsIHRoaXMucGF0dGVybik7XHJcbiAgICAgICAgaWYgKG1vbWVudFRlc3QuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgICBpZiAodmFsLmxlbmd0aCA9PT0gdGhpcy5wYXR0ZXJuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50VGVzdC50b0RhdGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgZXJyb3I6ICdJbnZhbGlkX0RhdGUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHtcclxuICAgICAgICAgICAgZXJyb3I6ICdJbnZhbGlkX0RhdGUnLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ2FsZW5kYXIoKSB7XHJcbiAgICBpZiAodGhpcy5hdXRvT3Blbikge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyRWxlbWVudC5vcGVuQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZVBpY2tlZChkYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBtb21lbnQoZGF0ZSkuZm9ybWF0KHRoaXMucGF0dGVybik7XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlKSB7XHJcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgbW9tZW50VmFsdWUgPSBtb21lbnQudXRjKHZhbHVlKTtcclxuICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnRWYWx1ZS50b0RhdGUoKTtcclxuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gbW9tZW50VmFsdWUuZm9ybWF0KHRoaXMucGF0dGVybik7XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==