@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
211 lines • 17.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: two-datepicker/two-datepicker-end.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, HostListener, ElementRef, forwardRef, Renderer2, Output, EventEmitter } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { TwoDatePickerComponent } from './two-datepicker.component';
import { fromEvent } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
export class TwoDatePickerEndDirective {
/**
* @param {?} twoDatePicker
* @param {?} renderer
* @param {?} el
*/
constructor(twoDatePicker, renderer, el) {
this.twoDatePicker = twoDatePicker;
this.renderer = renderer;
this.el = el;
this.selectEnd = new EventEmitter();
this.onChange = (/**
* @param {?} _
* @return {?}
*/
(_) => null);
this.twoDateSub = this.twoDatePicker.selectDateSubject.subscribe((/**
* @param {?} data
* @return {?}
*/
data => {
if (data.side === 'end') {
if (this.el.nativeElement.tagName === 'INPUT') {
this.writeValue(data.date);
}
else {
this.el.nativeElement.innerHTML = data.date ? this.twoDatePicker.formatDate(data.date) : this.userHtml;
}
if (!data.onlyWrite) {
this.selectEnd.emit(data.date);
}
}
}));
this.switchSub = this.twoDatePicker.switchOpenSub.subscribe((/**
* @param {?} side
* @return {?}
*/
side => {
if (this.el.nativeElement.tagName === 'INPUT') {
if (side === 'end') {
if (!this.el.nativeElement.classList.contains('devui-input-focus')) {
this.el.nativeElement.classList.add('devui-input-focus');
}
}
else {
this.el.nativeElement.classList.remove('devui-input-focus');
}
}
}));
this.inputSub = fromEvent(this.el.nativeElement, 'input')
.pipe(debounceTime(300)).subscribe((/**
* @param {?} event
* @return {?}
*/
event => {
this.transUserInputToDatePicker(event);
}));
}
/**
* @param {?} event
* @return {?}
*/
toggleDropdown(event) {
event.stopPropagation();
this.twoDatePicker.toggle(event, 'end');
}
/**
* @return {?}
*/
ngOnInit() {
this.userHtml = this.el.nativeElement.innerHTML;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
return;
}
/**
* @param {?} selectedEnd
* @return {?}
*/
writeValue(selectedEnd) {
if (selectedEnd) {
this.renderer.setProperty(this.el.nativeElement, 'value', this.twoDatePicker.dateConverter.format(selectedEnd, this.twoDatePicker.dateFormat, this.twoDatePicker.locale));
}
else {
this.renderer.setProperty(this.el.nativeElement, 'value', '');
}
}
/**
* @param {?} event
* @return {?}
*/
transUserInputToDatePicker(event) {
if (!this.twoDatePicker.showTime) {
/** @type {?} */
const value = event.target.value;
/** @type {?} */
const valueDate = new Date(value);
/** @type {?} */
const valueFormat = this.twoDatePicker.dateConverter.format(valueDate, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);
if (value && value === valueFormat) {
this.twoDatePicker.selectEnd(valueDate);
[this.twoDatePicker.rangeStart, this.twoDatePicker.rangeEnd] = this.twoDatePicker.selectedRange;
}
}
else {
this.el.nativeElement.value =
this.twoDatePicker.dateConverter.format(this.twoDatePicker.rangeEnd, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);
}
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.twoDateSub) {
this.twoDateSub.unsubscribe();
}
if (this.switchSub) {
this.switchSub.unsubscribe();
}
if (this.inputSub) {
this.inputSub.unsubscribe();
}
}
}
TwoDatePickerEndDirective.decorators = [
{ type: Directive, args: [{
selector: '[dTwoDatePickerEnd]',
exportAs: 'twoDatePickerEnd',
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => TwoDatePickerEndDirective)),
multi: true
}]
},] }
];
/** @nocollapse */
TwoDatePickerEndDirective.ctorParameters = () => [
{ type: TwoDatePickerComponent },
{ type: Renderer2 },
{ type: ElementRef }
];
TwoDatePickerEndDirective.propDecorators = {
selectEnd: [{ type: Output }],
toggleDropdown: [{ type: HostListener, args: ['click', ['$event'],] }]
};
if (false) {
/** @type {?} */
TwoDatePickerEndDirective.prototype.selectEnd;
/** @type {?} */
TwoDatePickerEndDirective.prototype.userHtml;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.inputSub;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.switchSub;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.twoDateSub;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.onChange;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.twoDatePicker;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.renderer;
/**
* @type {?}
* @private
*/
TwoDatePickerEndDirective.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRhdGVwaWNrZXItZW5kLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2RhdGVwaWNrZXIvIiwic291cmNlcyI6WyJ0d28tZGF0ZXBpY2tlci90d28tZGF0ZXBpY2tlci1lbmQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMkIsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVc5QyxNQUFNLE9BQU8seUJBQXlCOzs7Ozs7SUFXcEMsWUFBb0IsYUFBcUMsRUFBVSxRQUFtQixFQUM3RSxFQUFjO1FBREgsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUM3RSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBVmIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFPdEMsYUFBUTs7OztRQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUM7UUFJbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTtZQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUN2QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7b0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2lCQUN4RztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQzthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVM7Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTtZQUNqRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQzdDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtvQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTt3QkFDbEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3FCQUMxRDtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7aUJBQzdEO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQzthQUN0RCxJQUFJLENBQ0gsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUNsQixDQUFDLFNBQVM7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUdNLGNBQWMsQ0FBQyxLQUFpQjtRQUNyQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7SUFDbEQsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixPQUFPO0lBQ1QsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsV0FBVztRQUNwQixJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFDckIsT0FBTyxFQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FDL0csQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDOzs7OztJQUVELDBCQUEwQixDQUFDLEtBQUs7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFOztrQkFDMUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSzs7a0JBQzFCLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7O2tCQUMzQixXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUNoSSxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssV0FBVyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2FBQ2pHO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUs7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pJO0lBQ0gsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7WUE1R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLEVBQUM7d0JBQ3hELEtBQUssRUFBRSxJQUFJO3FCQUNaLENBQUM7YUFDSDs7OztZQVpRLHNCQUFzQjtZQUZvRCxTQUFTO1lBQWpDLFVBQVU7Ozt3QkFpQmxFLE1BQU07NkJBMENOLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Ozs7SUExQ2pDLDhDQUE4Qzs7SUFFOUMsNkNBQVM7Ozs7O0lBQ1QsNkNBQStCOzs7OztJQUMvQiw4Q0FBZ0M7Ozs7O0lBQ2hDLCtDQUFpQzs7Ozs7SUFFakMsNkNBQW9DOzs7OztJQUV4QixrREFBNkM7Ozs7O0lBQUUsNkNBQTJCOzs7OztJQUNyRix1Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIFJlbmRlcmVyMiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUd29EYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90d28tZGF0ZXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkVHdvRGF0ZVBpY2tlckVuZF0nLFxyXG4gIGV4cG9ydEFzOiAndHdvRGF0ZVBpY2tlckVuZCcsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUd29EYXRlUGlja2VyRW5kRGlyZWN0aXZlKSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFR3b0RhdGVQaWNrZXJFbmREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0RW5kID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHVzZXJIdG1sO1xyXG4gIHByaXZhdGUgaW5wdXRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHN3aXRjaFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgdHdvRGF0ZVN1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0d29EYXRlUGlja2VyOiBUd29EYXRlUGlja2VyQ29tcG9uZW50LCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMudHdvRGF0ZVN1YiA9IHRoaXMudHdvRGF0ZVBpY2tlci5zZWxlY3REYXRlU3ViamVjdC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGlmIChkYXRhLnNpZGUgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnSU5QVVQnKSB7XHJcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoZGF0YS5kYXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGEuZGF0ZSA/IHRoaXMudHdvRGF0ZVBpY2tlci5mb3JtYXREYXRlKGRhdGEuZGF0ZSkgOiB0aGlzLnVzZXJIdG1sO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRhdGEub25seVdyaXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEVuZC5lbWl0KGRhdGEuZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3dpdGNoU3ViID0gdGhpcy50d29EYXRlUGlja2VyLnN3aXRjaE9wZW5TdWIuc3Vic2NyaWJlKHNpZGUgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcclxuICAgICAgICBpZiAoc2lkZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGV2dWktaW5wdXQtZm9jdXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGV2dWktaW5wdXQtZm9jdXMnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2RldnVpLWlucHV0LWZvY3VzJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaW5wdXRTdWIgPSBmcm9tRXZlbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc1VzZXJJbnB1dFRvRGF0ZVBpY2tlcihldmVudCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnR3b0RhdGVQaWNrZXIudG9nZ2xlKGV2ZW50LCAnZW5kJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXNlckh0bWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHNlbGVjdGVkRW5kKTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWRFbmQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgJ3ZhbHVlJyxcclxuICAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUNvbnZlcnRlci5mb3JtYXQoc2VsZWN0ZWRFbmQsIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LCB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsICcnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYW5zVXNlcklucHV0VG9EYXRlUGlja2VyKGV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMudHdvRGF0ZVBpY2tlci5zaG93VGltZSkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgY29uc3QgdmFsdWVEYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICBjb25zdCB2YWx1ZUZvcm1hdCA9IHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlQ29udmVydGVyLmZvcm1hdCh2YWx1ZURhdGUsIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LCB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlKTtcclxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlID09PSB2YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5zZWxlY3RFbmQodmFsdWVEYXRlKTtcclxuICAgICAgICBbdGhpcy50d29EYXRlUGlja2VyLnJhbmdlU3RhcnQsIHRoaXMudHdvRGF0ZVBpY2tlci5yYW5nZUVuZF0gPSB0aGlzLnR3b0RhdGVQaWNrZXIuc2VsZWN0ZWRSYW5nZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID1cclxuICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlQ29udmVydGVyLmZvcm1hdCh0aGlzLnR3b0RhdGVQaWNrZXIucmFuZ2VFbmQsIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LCB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMudHdvRGF0ZVN1Yikge1xyXG4gICAgICB0aGlzLnR3b0RhdGVTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN3aXRjaFN1Yikge1xyXG4gICAgICB0aGlzLnN3aXRjaFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaW5wdXRTdWIpIHtcclxuICAgICAgdGhpcy5pbnB1dFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=