ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
379 lines • 25.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Input, Output, NgZone, Injector, Renderer2, Directive, ElementRef, forwardRef, HostListener, EventEmitter, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
import { PickerComponent } from './picker.component';
import { PickerOptions } from './picker-options.provider';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
var PickerDirective = /** @class */ (function () {
function PickerDirective(_viewContainerRef, _elm, _defaultOptions, _cfr, _renderer, _zone) {
this._viewContainerRef = _viewContainerRef;
this._elm = _elm;
this._defaultOptions = _defaultOptions;
this._cfr = _cfr;
this._renderer = _renderer;
this._zone = _zone;
this._eventListeners = [];
this.onVisibleChange = new EventEmitter(true);
this.onPickerChange = new EventEmitter();
this.onDismiss = new EventEmitter();
this.onChange = (/**
* @return {?}
*/
function () { return null; });
this.onTouched = (/**
* @return {?}
*/
function () { return null; });
}
/**
* @return {?}
*/
PickerDirective.prototype.togglePicker = /**
* @return {?}
*/
function () {
if (!this.picker) {
this.showPicker();
}
else {
this.hidePicker();
}
};
/**
* @return {?}
*/
PickerDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.onVisibleChange.emit(false);
};
/**
* @param {?} value
* @return {?}
*/
PickerDirective.prototype.ngOnChanges = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value.cols && this.picker) {
this.picker.instance.options.cols = value.cols.currentValue;
}
if (value.data && this.picker) {
this.picker.instance.options.data = value.data.currentValue;
this.showPicker();
}
};
/**
* @return {?}
*/
PickerDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.hidePicker();
};
/**
* @private
* @param {?} event
* @return {?}
*/
PickerDirective.prototype.onDocumentClick = /**
* @private
* @param {?} event
* @return {?}
*/
function (event) {
if (this.picker &&
!this._elm.nativeElement.contains(event.target) &&
!this.picker.location.nativeElement.contains(event.target)) {
this.hidePicker();
}
};
/**
* @private
* @return {?}
*/
PickerDirective.prototype.showPicker = /**
* @private
* @return {?}
*/
function () {
var _this = this;
if (this.picker) {
this._zone.run((/**
* @return {?}
*/
function () {
_this.picker.instance.init();
}));
}
else if (!this.picker && !this.disabled) {
setTimeout((/**
* @return {?}
*/
function () {
_this._eventListeners = [
_this._renderer.listen('document', 'click', (/**
* @param {?} event
* @return {?}
*/
function (event) { return _this.onDocumentClick(event); })),
_this._renderer.listen('document', 'touchend', (/**
* @param {?} event
* @return {?}
*/
function (event) { return _this.onDocumentClick(event); }))
];
}));
/** @type {?} */
var options_1 = new PickerOptions();
Object.assign(options_1, this._defaultOptions, {
hidePicker: (/**
* @param {?} event
* @return {?}
*/
function (event) {
_this.hidePicker();
}),
updateNgModel: (/**
* @param {?} value
* @return {?}
*/
function (value) {
_this.onChange(value);
})
});
/** @type {?} */
var optionalParams = [
'data',
'value',
'cols',
'mask',
'title',
'okText',
'dismissText',
'disabled',
'cascade',
'appendToBody',
'indicatorStyle',
'onPickerChange',
'onVisibleChange',
'onDismiss'
];
optionalParams.forEach((/**
* @param {?} param
* @return {?}
*/
function (param) {
if (typeof _this[param] !== 'undefined') {
((/** @type {?} */ (options_1)))[param] = _this[param];
}
}));
/** @type {?} */
var componentFactory = this._cfr.resolveComponentFactory(PickerComponent);
/** @type {?} */
var childInjector = Injector.create([
{
provide: PickerOptions,
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);
}
};
/**
* @private
* @return {?}
*/
PickerDirective.prototype.hidePicker = /**
* @private
* @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 {?}
*/
PickerDirective.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.value = Array.isArray(value) ? value : [];
if (this.picker) {
this.picker.instance.options.value = this.value;
this.showPicker();
this.picker.instance.reloadPicker();
}
};
/**
* @param {?} fn
* @return {?}
*/
PickerDirective.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
PickerDirective.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @param {?} isDisabled
* @return {?}
*/
PickerDirective.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.disabled = isDisabled;
};
PickerDirective.decorators = [
{ type: Directive, args: [{
selector: '[Picker], [nzm-picker]',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return PickerDirective; })),
multi: true
}
]
},] }
];
/** @nocollapse */
PickerDirective.ctorParameters = function () { return [
{ type: ViewContainerRef },
{ type: ElementRef },
{ type: PickerOptions },
{ type: ComponentFactoryResolver },
{ type: Renderer2 },
{ type: NgZone }
]; };
PickerDirective.propDecorators = {
data: [{ type: Input }],
cols: [{ type: Input }],
mask: [{ type: Input }],
title: [{ type: Input }],
visible: [{ type: Input }],
okText: [{ type: Input }],
dismissText: [{ type: Input }],
disabled: [{ type: Input }],
cascade: [{ type: Input }],
appendToBody: [{ type: Input }],
indicatorStyle: [{ type: Input }],
onVisibleChange: [{ type: Output }],
onPickerChange: [{ type: Output }],
onDismiss: [{ type: Output }],
togglePicker: [{ type: HostListener, args: ['click',] }]
};
return PickerDirective;
}());
export { PickerDirective };
if (false) {
/** @type {?} */
PickerDirective.prototype.picker;
/** @type {?} */
PickerDirective.prototype.value;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._eventListeners;
/** @type {?} */
PickerDirective.prototype.data;
/** @type {?} */
PickerDirective.prototype.cols;
/** @type {?} */
PickerDirective.prototype.mask;
/** @type {?} */
PickerDirective.prototype.title;
/** @type {?} */
PickerDirective.prototype.visible;
/** @type {?} */
PickerDirective.prototype.okText;
/** @type {?} */
PickerDirective.prototype.dismissText;
/** @type {?} */
PickerDirective.prototype.disabled;
/** @type {?} */
PickerDirective.prototype.cascade;
/** @type {?} */
PickerDirective.prototype.appendToBody;
/** @type {?} */
PickerDirective.prototype.indicatorStyle;
/** @type {?} */
PickerDirective.prototype.onVisibleChange;
/** @type {?} */
PickerDirective.prototype.onPickerChange;
/** @type {?} */
PickerDirective.prototype.onDismiss;
/** @type {?} */
PickerDirective.prototype.onChange;
/** @type {?} */
PickerDirective.prototype.onTouched;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._viewContainerRef;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._elm;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._defaultOptions;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._cfr;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._renderer;
/**
* @type {?}
* @private
*/
PickerDirective.prototype._zone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsicGlja2VyL3BpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUdULFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBRVosZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RTtJQXdERSx5QkFDVSxpQkFBbUMsRUFDbkMsSUFBZ0IsRUFDaEIsZUFBOEIsRUFDOUIsSUFBOEIsRUFDOUIsU0FBb0IsRUFDcEIsS0FBYTtRQUxiLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZTtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFqRGYsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBeUJoRCxvQkFBZSxHQUEwQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRSxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsRCxhQUFROzs7UUFBMkIsY0FBTSxPQUFBLElBQUksRUFBSixDQUFJLEVBQUM7UUFDOUMsY0FBUzs7O1FBQWUsY0FBTSxPQUFBLElBQUksRUFBSixDQUFJLEVBQUM7SUFrQmhDLENBQUM7Ozs7SUFmSixzQ0FBWTs7O0lBRFo7UUFFRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7Ozs7SUFXRCxrQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzs7OztJQUVELHFDQUFXOzs7O0lBQVgsVUFBWSxLQUFLO1FBQ2YsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUM3RDtRQUNELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7OztJQUVELHFDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7Ozs7SUFFTyx5Q0FBZTs7Ozs7SUFBdkIsVUFBd0IsS0FBWTtRQUNsQyxJQUNFLElBQUksQ0FBQyxNQUFNO1lBQ1gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMvQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUMxRDtZQUNBLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7Ozs7O0lBRU8sb0NBQVU7Ozs7SUFBbEI7UUFBQSxpQkE2REM7UUE1REMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7WUFBQztnQkFDYixLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixDQUFDLEVBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pDLFVBQVU7OztZQUFDO2dCQUNULEtBQUksQ0FBQyxlQUFlLEdBQUc7b0JBQ3JCLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPOzs7O29CQUFFLFVBQUMsS0FBWSxJQUFLLE9BQUEsS0FBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBM0IsQ0FBMkIsRUFBQztvQkFDekYsS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVU7Ozs7b0JBQUUsVUFBQyxLQUFZLElBQUssT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUEzQixDQUEyQixFQUFDO2lCQUM3RixDQUFDO1lBQ0osQ0FBQyxFQUFDLENBQUM7O2dCQUVHLFNBQU8sR0FBRyxJQUFJLGFBQWEsRUFBRTtZQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUMzQyxVQUFVOzs7O2dCQUFFLFVBQUMsS0FBSztvQkFDaEIsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixDQUFDLENBQUE7Z0JBQ0QsYUFBYTs7OztnQkFBRSxVQUFDLEtBQVk7b0JBQzFCLEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQTthQUNGLENBQUMsQ0FBQzs7Z0JBRUcsY0FBYyxHQUFpQztnQkFDbkQsTUFBTTtnQkFDTixPQUFPO2dCQUNQLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixPQUFPO2dCQUNQLFFBQVE7Z0JBQ1IsYUFBYTtnQkFDYixVQUFVO2dCQUNWLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxnQkFBZ0I7Z0JBQ2hCLGdCQUFnQjtnQkFDaEIsaUJBQWlCO2dCQUNqQixXQUFXO2FBQ1o7WUFDRCxjQUFjLENBQUMsT0FBTzs7OztZQUFDLFVBQUEsS0FBSztnQkFDMUIsSUFBSSxPQUFPLEtBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLEVBQUU7b0JBQ3RDLENBQUMsbUJBQUEsU0FBTyxFQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3ZDO1lBQ0gsQ0FBQyxFQUFDLENBQUM7O2dCQUNHLGdCQUFnQixHQUFzQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQzs7Z0JBQ3hHLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNwQztvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsUUFBUSxFQUFFLFNBQU87aUJBQ2xCO2FBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDbEQsZ0JBQWdCLEVBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQzdCLGFBQWEsQ0FDZCxDQUFDO1lBQ0YsSUFBSSxTQUFPLENBQUMsWUFBWSxFQUFFO2dCQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMvRDtZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7Ozs7SUFFTyxvQ0FBVTs7OztJQUFsQjtRQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTzs7OztZQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsRUFBRSxFQUFFLEVBQUosQ0FBSSxFQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDOzs7OztJQUVELG9DQUFVOzs7O0lBQVYsVUFBVyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7Ozs7O0lBRUQsMENBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQTBCO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsMkNBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7Ozs7SUFFRCwwQ0FBZ0I7Ozs7SUFBaEIsVUFBaUIsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQzs7Z0JBekxGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozs0QkFBQyxjQUFNLE9BQUEsZUFBZSxFQUFmLENBQWUsRUFBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7Ozs7Z0JBakJDLGdCQUFnQjtnQkFMaEIsVUFBVTtnQkFVSCxhQUFhO2dCQUhwQix3QkFBd0I7Z0JBWHhCLFNBQVM7Z0JBRlQsTUFBTTs7O3VCQWtDTCxLQUFLO3VCQUVMLEtBQUs7dUJBRUwsS0FBSzt3QkFFTCxLQUFLOzBCQUVMLEtBQUs7eUJBRUwsS0FBSzs4QkFFTCxLQUFLOzJCQUVMLEtBQUs7MEJBRUwsS0FBSzsrQkFFTCxLQUFLO2lDQUVMLEtBQUs7a0NBRUwsTUFBTTtpQ0FFTixNQUFNOzRCQUVOLE1BQU07K0JBTU4sWUFBWSxTQUFDLE9BQU87O0lBMkl2QixzQkFBQztDQUFBLEFBMUxELElBMExDO1NBaExZLGVBQWU7OztJQUMxQixpQ0FBc0M7O0lBQ3RDLGdDQUFrQjs7Ozs7SUFDbEIsMENBQWdEOztJQUVoRCwrQkFDaUI7O0lBQ2pCLCtCQUNhOztJQUNiLCtCQUNjOztJQUNkLGdDQUNjOztJQUNkLGtDQUNpQjs7SUFDakIsaUNBQ2U7O0lBQ2Ysc0NBQ29COztJQUNwQixtQ0FDa0I7O0lBQ2xCLGtDQUNpQjs7SUFDakIsdUNBQ3NCOztJQUN0Qix5Q0FDdUI7O0lBQ3ZCLDBDQUNnRTs7SUFDaEUseUNBQ3VEOztJQUN2RCxvQ0FDa0Q7O0lBRWxELG1DQUE4Qzs7SUFDOUMsb0NBQW1DOzs7OztJQVlqQyw0Q0FBMkM7Ozs7O0lBQzNDLCtCQUF3Qjs7Ozs7SUFDeEIsMENBQXNDOzs7OztJQUN0QywrQkFBc0M7Ozs7O0lBQ3RDLG9DQUE0Qjs7Ozs7SUFDNUIsZ0NBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25Jbml0LFxuICBOZ1pvbmUsXG4gIEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRXZlbnRFbWl0dGVyLFxuICBDb21wb25lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi9waWNrZXItb3B0aW9ucy5wcm92aWRlcic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tQaWNrZXJdLCBbbnptLXBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBpY2tlckRpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQaWNrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHBpY2tlcjogQ29tcG9uZW50UmVmPFBpY2tlckNvbXBvbmVudD47XG4gIHZhbHVlOiBBcnJheTxhbnk+O1xuICBwcml2YXRlIF9ldmVudExpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBASW5wdXQoKVxuICBkYXRhOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKVxuICBjb2xzOiBOdW1iZXI7XG4gIEBJbnB1dCgpXG4gIG1hc2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHZpc2libGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIG9rVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBkaXNtaXNzVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgY2FzY2FkZTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgYXBwZW5kVG9Cb2R5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBpbmRpY2F0b3JTdHlsZTogb2JqZWN0O1xuICBAT3V0cHV0KClcbiAgb25WaXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKHRydWUpO1xuICBAT3V0cHV0KClcbiAgb25QaWNrZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvbkNoYW5nZTogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICB0b2dnbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5zaG93UGlja2VyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfZWxtOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2RlZmF1bHRPcHRpb25zOiBQaWNrZXJPcHRpb25zLFxuICAgIHByaXZhdGUgX2NmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlLmNvbHMgJiYgdGhpcy5waWNrZXIpIHtcbiAgICAgIHRoaXMucGlja2VyLmluc3RhbmNlLm9wdGlvbnMuY29scyA9IHZhbHVlLmNvbHMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZGF0YSAmJiB0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5waWNrZXIuaW5zdGFuY2Uub3B0aW9ucy5kYXRhID0gdmFsdWUuZGF0YS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmhpZGVQaWNrZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMucGlja2VyICYmXG4gICAgICAhdGhpcy5fZWxtLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMucGlja2VyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5oaWRlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93UGlja2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnBpY2tlci5pbnN0YW5jZS5pbml0KCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBpY2tlciAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gW1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayhldmVudCkpLFxuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hlbmQnLCAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayhldmVudCkpXG4gICAgICAgIF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBQaWNrZXJPcHRpb25zKCk7XG4gICAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHRoaXMuX2RlZmF1bHRPcHRpb25zLCB7XG4gICAgICAgIGhpZGVQaWNrZXI6IChldmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVOZ01vZGVsOiAodmFsdWU6IGFueVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBvcHRpb25hbFBhcmFtczogQXJyYXk8a2V5b2YgUGlja2VyRGlyZWN0aXZlPiA9IFtcbiAgICAgICAgJ2RhdGEnLFxuICAgICAgICAndmFsdWUnLFxuICAgICAgICAnY29scycsXG4gICAgICAgICdtYXNrJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ29rVGV4dCcsXG4gICAgICAgICdkaXNtaXNzVGV4dCcsXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICdjYXNjYWRlJyxcbiAgICAgICAgJ2FwcGVuZFRvQm9keScsXG4gICAgICAgICdpbmRpY2F0b3JTdHlsZScsXG4gICAgICAgICdvblBpY2tlckNoYW5nZScsXG4gICAgICAgICdvblZpc2libGVDaGFuZ2UnLFxuICAgICAgICAnb25EaXNtaXNzJ1xuICAgICAgXTtcbiAgICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2gocGFyYW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXNbcGFyYW1dICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIChvcHRpb25zIGFzIGFueSlbcGFyYW1dID0gdGhpc1twYXJhbV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxQaWNrZXJDb21wb25lbnQ+ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBpY2tlckNvbXBvbmVudCk7XG4gICAgICBjb25zdCBjaGlsZEluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFBpY2tlck9wdGlvbnMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgXSk7XG4gICAgICB0aGlzLnBpY2tlciA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5LFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aCxcbiAgICAgICAgY2hpbGRJbmplY3RvclxuICAgICAgKTtcbiAgICAgIGlmIChvcHRpb25zLmFwcGVuZFRvQm9keSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucGlja2VyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VyKSB7XG4gICAgICB0aGlzLnBpY2tlci5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5waWNrZXI7XG4gICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLmZvckVhY2goZm4gPT4gZm4oKSk7XG4gICAgICB0aGlzLl9ldmVudExpc3RlbmVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICBpZiAodGhpcy5waWNrZXIpIHtcbiAgICAgIHRoaXMucGlja2VyLmluc3RhbmNlLm9wdGlvbnMudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy5zaG93UGlja2VyKCk7XG4gICAgICB0aGlzLnBpY2tlci5pbnN0YW5jZS5yZWxvYWRQaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==