ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
337 lines • 22 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Input, Output, Injector, Directive, forwardRef, EventEmitter, HostListener, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
import { DatePickerComponent } from './date-picker.component';
import { DatePickerOptions } from './date-picker-options.provider';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
var DatePickerDirective = /** @class */ (function () {
function DatePickerDirective(_viewContainerRef, _defaultOptions, _cfr) {
this._viewContainerRef = _viewContainerRef;
this._defaultOptions = _defaultOptions;
this._cfr = _cfr;
this._eventListeners = [];
this.minuteStep = 1;
this.value = new Date();
this.onVisibleChange = new EventEmitter(true);
this.onValueChange = new EventEmitter();
this.onOk = new EventEmitter();
this.onDismiss = new EventEmitter();
}
/**
* @return {?}
*/
DatePickerDirective.prototype.togglePicker = /**
* @return {?}
*/
function () {
if (!this.picker) {
this.showPicker();
}
else {
this.hidePicker();
}
};
/**
* @return {?}
*/
DatePickerDirective.prototype.showPicker = /**
* @return {?}
*/
function () {
var _this = this;
if (!this.picker && !this.disabled) {
setTimeout((/**
* @return {?}
*/
function () {
_this._eventListeners = [];
}));
/** @type {?} */
var options_1 = new DatePickerOptions();
Object.assign(options_1, this._defaultOptions, {
hidePicker: (/**
* @param {?} event
* @return {?}
*/
function (event) {
_this.hidePicker();
}),
updateNgModel: (/**
* @param {?} value
* @return {?}
*/
function (value) {
if (_this._ngModelOnChange) {
_this.value = value;
_this._ngModelOnChange(value);
}
})
});
/** @type {?} */
var optionalParams = [
'mode',
'minDate',
'maxDate',
'minuteStep',
'value',
'mask',
'title',
'okText',
'dismissText',
'disabled',
'locale',
'appendToBody',
'showErrorToast',
'showErrorToastInterval',
'onOk',
'onDismiss',
'onValueChange'
];
optionalParams.forEach((/**
* @param {?} param
* @return {?}
*/
function (param) {
if (typeof _this[param] !== 'undefined') {
((/** @type {?} */ (options_1)))[param] = _this[param];
}
}));
/** @type {?} */
var componentFactory = this._cfr.resolveComponentFactory(DatePickerComponent);
/** @type {?} */
var childInjector = Injector.create([
{
provide: DatePickerOptions,
useValue: options_1
}
]);
this.picker = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, childInjector);
if (options_1.appendToBody) {
document.body.appendChild(this.picker.location.nativeElement);
}
this.onVisibleChange.emit(true);
}
};
/**
* @return {?}
*/
DatePickerDirective.prototype.hidePicker = /**
* @return {?}
*/
function () {
if (this.picker) {
this.picker.destroy();
delete this.picker;
this.onVisibleChange.emit(false);
this._eventListeners.forEach((/**
* @param {?} fn
* @return {?}
*/
function (fn) { return fn(); }));
this._eventListeners = [];
}
};
/**
* @param {?} value
* @return {?}
*/
DatePickerDirective.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.value = value;
};
/**
* @param {?} fn
* @return {?}
*/
DatePickerDirective.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._ngModelOnChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
DatePickerDirective.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._ngModelOnTouched = fn;
};
/**
* @param {?} isDisabled
* @return {?}
*/
DatePickerDirective.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.disabled = isDisabled;
};
/**
* @return {?}
*/
DatePickerDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.onVisibleChange.emit(false);
};
/**
* @param {?} changes
* @return {?}
*/
DatePickerDirective.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes.isOpen) {
if (changes.isOpen.currentValue === true) {
this.showPicker();
}
else {
this.hidePicker();
}
}
};
/**
* @return {?}
*/
DatePickerDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.hidePicker();
};
DatePickerDirective.decorators = [
{ type: Directive, args: [{
selector: '[DatePicker]',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return DatePickerDirective; })),
multi: true
}
]
},] }
];
/** @nocollapse */
DatePickerDirective.ctorParameters = function () { return [
{ type: ViewContainerRef },
{ type: DatePickerOptions },
{ type: ComponentFactoryResolver }
]; };
DatePickerDirective.propDecorators = {
isOpen: [{ type: Input }],
mode: [{ type: Input }],
minDate: [{ type: Input }],
maxDate: [{ type: Input }],
use12Hours: [{ type: Input }],
minuteStep: [{ type: Input }],
value: [{ type: Input }],
mask: [{ type: Input }],
title: [{ type: Input }],
okText: [{ type: Input }],
dismissText: [{ type: Input }],
disabled: [{ type: Input }],
locale: [{ type: Input }],
appendToBody: [{ type: Input }],
showErrorToast: [{ type: Input }],
showErrorToastInterval: [{ type: Input }],
onVisibleChange: [{ type: Output }],
onValueChange: [{ type: Output }],
onOk: [{ type: Output }],
onDismiss: [{ type: Output }],
togglePicker: [{ type: HostListener, args: ['click',] }]
};
return DatePickerDirective;
}());
export { DatePickerDirective };
if (false) {
/** @type {?} */
DatePickerDirective.prototype.picker;
/**
* @type {?}
* @private
*/
DatePickerDirective.prototype._eventListeners;
/**
* @type {?}
* @private
*/
DatePickerDirective.prototype._ngModelOnChange;
/**
* @type {?}
* @private
*/
DatePickerDirective.prototype._ngModelOnTouched;
/** @type {?} */
DatePickerDirective.prototype.isOpen;
/** @type {?} */
DatePickerDirective.prototype.mode;
/** @type {?} */
DatePickerDirective.prototype.minDate;
/** @type {?} */
DatePickerDirective.prototype.maxDate;
/** @type {?} */
DatePickerDirective.prototype.use12Hours;
/** @type {?} */
DatePickerDirective.prototype.minuteStep;
/** @type {?} */
DatePickerDirective.prototype.value;
/** @type {?} */
DatePickerDirective.prototype.mask;
/** @type {?} */
DatePickerDirective.prototype.title;
/** @type {?} */
DatePickerDirective.prototype.okText;
/** @type {?} */
DatePickerDirective.prototype.dismissText;
/** @type {?} */
DatePickerDirective.prototype.disabled;
/** @type {?} */
DatePickerDirective.prototype.locale;
/** @type {?} */
DatePickerDirective.prototype.appendToBody;
/** @type {?} */
DatePickerDirective.prototype.showErrorToast;
/** @type {?} */
DatePickerDirective.prototype.showErrorToastInterval;
/** @type {?} */
DatePickerDirective.prototype.onVisibleChange;
/** @type {?} */
DatePickerDirective.prototype.onValueChange;
/** @type {?} */
DatePickerDirective.prototype.onOk;
/** @type {?} */
DatePickerDirective.prototype.onDismiss;
/**
* @type {?}
* @private
*/
DatePickerDirective.prototype._viewContainerRef;
/**
* @type {?}
* @private
*/
DatePickerDirective.prototype._defaultOptions;
/**
* @type {?}
* @private
*/
DatePickerDirective.prototype._cfr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC1tb2JpbGUvIiwic291cmNlcyI6WyJkYXRlLXBpY2tlci9kYXRlLXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFHUixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBSVosZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekU7SUFrRUUsNkJBQ1UsaUJBQW1DLEVBQ25DLGVBQWtDLEVBQ2xDLElBQThCO1FBRjlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLFNBQUksR0FBSixJQUFJLENBQTBCO1FBekRoQyxvQkFBZSxHQUFzQixFQUFFLENBQUM7UUFlaEQsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUV2QixVQUFLLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQW9CekIsb0JBQWUsR0FBMEIsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEUsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0MsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBZS9DLENBQUM7Ozs7SUFaSiwwQ0FBWTs7O0lBRFo7UUFFRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMs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QUFpQjtnQkFIeEIsd0JBQXdCOzs7eUJBcUJ2QixLQUFLO3VCQUVMLEtBQUs7MEJBRUwsS0FBSzswQkFFTCxLQUFLOzZCQUVMLEtBQUs7NkJBRUwsS0FBSzt3QkFFTCxLQUFLO3VCQUVMLEtBQUs7d0JBRUwsS0FBSzt5QkFFTCxLQUFLOzhCQUVMLEtBQUs7MkJBRUwsS0FBSzt5QkFFTCxLQUFLOytCQUVMLEtBQUs7aUNBRUwsS0FBSzt5Q0FFTCxLQUFLO2tDQUVMLE1BQU07Z0NBRU4sTUFBTTt1QkFFTixNQUFNOzRCQUVOLE1BQU07K0JBR04sWUFBWSxTQUFDLE9BQU87O0lBMEh2QiwwQkFBQztDQUFBLEFBbkxELElBbUxDO1NBektZLG1CQUFtQjs7O0lBQzlCLHFDQUEwQzs7Ozs7SUFDMUMsOENBQWdEOzs7OztJQUNoRCwrQ0FBOEM7Ozs7O0lBQzlDLGdEQUFvQzs7SUFFcEMscUNBQ2dCOztJQUNoQixtQ0FDYTs7SUFDYixzQ0FDZ0I7O0lBQ2hCLHNDQUNnQjs7SUFDaEIseUNBQ29COztJQUNwQix5Q0FDdUI7O0lBQ3ZCLG9DQUN5Qjs7SUFDekIsbUNBQ2M7O0lBQ2Qsb0NBQ2M7O0lBQ2QscUNBQ2U7O0lBQ2YsMENBQ29COztJQUNwQix1Q0FDa0I7O0lBQ2xCLHFDQUNZOztJQUNaLDJDQUNzQjs7SUFDdEIsNkNBQ3dCOztJQUN4QixxREFDK0I7O0lBQy9CLDhDQUNnRTs7SUFDaEUsNENBQ3NEOztJQUN0RCxtQ0FDNkM7O0lBQzdDLHdDQUNrRDs7Ozs7SUFZaEQsZ0RBQTJDOzs7OztJQUMzQyw4Q0FBMEM7Ozs7O0lBQzFDLG1DQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIE9uSW5pdCxcbiAgSW5qZWN0b3IsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBEaXJlY3RpdmUsXG4gIGZvcndhcmRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBDb21wb25lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJy4vZGF0ZS1waWNrZXItb3B0aW9ucy5wcm92aWRlcic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbRGF0ZVBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcGlja2VyOiBDb21wb25lbnRSZWY8RGF0ZVBpY2tlckNvbXBvbmVudD47XG4gIHByaXZhdGUgX2V2ZW50TGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICBwcml2YXRlIF9uZ01vZGVsT25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSkgPT4ge307XG4gIHByaXZhdGUgX25nTW9kZWxPblRvdWNoZWQ6ICgpID0+IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgbW9kZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtaW5EYXRlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IHN0cmluZztcbiAgQElucHV0KClcbiAgdXNlMTJIb3VyczogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgbWludXRlU3RlcDogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgdmFsdWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBASW5wdXQoKVxuICBtYXNrOiBib29sZWFuO1xuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBva1RleHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgZGlzbWlzc1RleHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGxvY2FsZTogYW55O1xuICBASW5wdXQoKVxuICBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHNob3dFcnJvclRvYXN0OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBzaG93RXJyb3JUb2FzdEludGVydmFsOiBudW1iZXI7XG4gIEBPdXRwdXQoKVxuICBvblZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIG9uT2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRvZ2dsZVBpY2tlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGlja2VyKSB7XG4gICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9kZWZhdWx0T3B0aW9uczogRGF0ZVBpY2tlck9wdGlvbnMsXG4gICAgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgKSB7fVxuXG4gIHNob3dQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBpY2tlciAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gW107XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB0aGlzLl9kZWZhdWx0T3B0aW9ucywge1xuICAgICAgICBoaWRlUGlja2VyOiAoZXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmhpZGVQaWNrZXIoKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlTmdNb2RlbDogKHZhbHVlOiBEYXRlKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX25nTW9kZWxPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fbmdNb2RlbE9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBvcHRpb25hbFBhcmFtczogQXJyYXk8a2V5b2YgRGF0ZVBpY2tlckRpcmVjdGl2ZT4gPSBbXG4gICAgICAgICdtb2RlJyxcbiAgICAgICAgJ21pbkRhdGUnLFxuICAgICAgICAnbWF4RGF0ZScsXG4gICAgICAgICdtaW51dGVTdGVwJyxcbiAgICAgICAgJ3ZhbHVlJyxcbiAgICAgICAgJ21hc2snLFxuICAgICAgICAndGl0bGUnLFxuICAgICAgICAnb2tUZXh0JyxcbiAgICAgICAgJ2Rpc21pc3NUZXh0JyxcbiAgICAgICAgJ2Rpc2FibGVkJyxcbiAgICAgICAgJ2xvY2FsZScsXG4gICAgICAgICdhcHBlbmRUb0JvZHknLFxuICAgICAgICAnc2hvd0Vycm9yVG9hc3QnLFxuICAgICAgICAnc2hvd0Vycm9yVG9hc3RJbnRlcnZhbCcsXG4gICAgICAgICdvbk9rJyxcbiAgICAgICAgJ29uRGlzbWlzcycsXG4gICAgICAgICdvblZhbHVlQ2hhbmdlJ1xuICAgICAgXTtcbiAgICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2gocGFyYW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXNbcGFyYW1dICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIChvcHRpb25zIGFzIGFueSlbcGFyYW1dID0gdGhpc1twYXJhbV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxEYXRlUGlja2VyQ29tcG9uZW50PiA9IHRoaXMuX2Nmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgRGF0ZVBpY2tlckNvbXBvbmVudFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNoaWxkSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRGF0ZVBpY2tlck9wdGlvbnMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgXSk7XG4gICAgICB0aGlzLnBpY2tlciA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5LFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aCxcbiAgICAgICAgY2hpbGRJbmplY3RvclxuICAgICAgKTtcbiAgICAgIGlmIChvcHRpb25zLmFwcGVuZFRvQm9keSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucGlja2VyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBoaWRlUGlja2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5waWNrZXIuZGVzdHJveSgpO1xuICAgICAgZGVsZXRlIHRoaXMucGlja2VyO1xuICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IERhdGUpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fbmdNb2RlbE9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9uZ01vZGVsT25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub25WaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmlzT3Blbikge1xuICAgICAgaWYgKGNoYW5nZXMuaXNPcGVuLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICB9XG59XG4iXX0=