UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

342 lines 23.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,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'; export class PickerDirective { /** * @param {?} _viewContainerRef * @param {?} _elm * @param {?} _defaultOptions * @param {?} _cfr * @param {?} _renderer * @param {?} _zone */ constructor(_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 {?} */ () => null); this.onTouched = (/** * @return {?} */ () => null); } /** * @return {?} */ togglePicker() { if (!this.picker) { this.showPicker(); } else { this.hidePicker(); } } /** * @return {?} */ ngOnInit() { this.onVisibleChange.emit(false); } /** * @param {?} value * @return {?} */ ngOnChanges(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 {?} */ ngOnDestroy() { this.hidePicker(); } /** * @private * @param {?} event * @return {?} */ onDocumentClick(event) { if (this.picker && !this._elm.nativeElement.contains(event.target) && !this.picker.location.nativeElement.contains(event.target)) { this.hidePicker(); } } /** * @private * @return {?} */ showPicker() { if (this.picker) { this._zone.run((/** * @return {?} */ () => { this.picker.instance.init(); })); } else if (!this.picker && !this.disabled) { setTimeout((/** * @return {?} */ () => { this._eventListeners = [ this._renderer.listen('document', 'click', (/** * @param {?} event * @return {?} */ (event) => this.onDocumentClick(event))), this._renderer.listen('document', 'touchend', (/** * @param {?} event * @return {?} */ (event) => this.onDocumentClick(event))) ]; })); /** @type {?} */ const options = new PickerOptions(); Object.assign(options, this._defaultOptions, { hidePicker: (/** * @param {?} event * @return {?} */ (event) => { this.hidePicker(); }), updateNgModel: (/** * @param {?} value * @return {?} */ (value) => { this.onChange(value); }) }); /** @type {?} */ const optionalParams = [ 'data', 'value', 'cols', 'mask', 'title', 'okText', 'dismissText', 'disabled', 'cascade', 'appendToBody', 'indicatorStyle', 'onPickerChange', 'onVisibleChange', 'onDismiss' ]; optionalParams.forEach((/** * @param {?} param * @return {?} */ param => { if (typeof this[param] !== 'undefined') { ((/** @type {?} */ (options)))[param] = this[param]; } })); /** @type {?} */ const componentFactory = this._cfr.resolveComponentFactory(PickerComponent); /** @type {?} */ const childInjector = Injector.create([ { provide: PickerOptions, useValue: options } ]); this.picker = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, childInjector); if (options.appendToBody) { document.body.appendChild(this.picker.location.nativeElement); } this.onVisibleChange.emit(true); } } /** * @private * @return {?} */ hidePicker() { if (this.picker) { this.picker.destroy(); delete this.picker; this.onVisibleChange.emit(false); this._eventListeners.forEach((/** * @param {?} fn * @return {?} */ fn => fn())); this._eventListeners = []; } } /** * @param {?} value * @return {?} */ writeValue(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 {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.disabled = isDisabled; } } PickerDirective.decorators = [ { type: Directive, args: [{ selector: '[Picker], [nzm-picker]', providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => PickerDirective)), multi: true } ] },] } ]; /** @nocollapse */ PickerDirective.ctorParameters = () => [ { 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',] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsicGlja2VyL3BpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUdULFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBRVosZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVl6RSxNQUFNLE9BQU8sZUFBZTs7Ozs7Ozs7O0lBOEMxQixZQUNVLGlCQUFtQyxFQUNuQyxJQUFnQixFQUNoQixlQUE4QixFQUM5QixJQUE4QixFQUM5QixTQUFvQixFQUNwQixLQUFhO1FBTGIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUFlO1FBQzlCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQWpEZixvQkFBZSxHQUFzQixFQUFFLENBQUM7UUF5QmhELG9CQUFlLEdBQTBCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhFLG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkQsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxELGFBQVE7OztRQUEyQixHQUFHLEVBQUUsQ0FBQyxJQUFJ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R0FBRyxFQUFFLENBQUMsZUFBZSxFQUFDO3dCQUM5QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7O1lBakJDLGdCQUFnQjtZQUxoQixVQUFVO1lBVUgsYUFBYTtZQUhwQix3QkFBd0I7WUFYeEIsU0FBUztZQUZULE1BQU07OzttQkFrQ0wsS0FBSzttQkFFTCxLQUFLO21CQUVMLEtBQUs7b0JBRUwsS0FBSztzQkFFTCxLQUFLO3FCQUVMLEtBQUs7MEJBRUwsS0FBSzt1QkFFTCxLQUFLO3NCQUVMLEtBQUs7MkJBRUwsS0FBSzs2QkFFTCxLQUFLOzhCQUVMLE1BQU07NkJBRU4sTUFBTTt3QkFFTixNQUFNOzJCQU1OLFlBQVksU0FBQyxPQUFPOzs7O0lBcENyQixpQ0FBc0M7O0lBQ3RDLGdDQUFrQjs7Ozs7SUFDbEIsMENBQWdEOztJQUVoRCwrQkFDaUI7O0lBQ2pCLCtCQUNhOztJQUNiLCtCQUNjOztJQUNkLGdDQUNjOztJQUNkLGtDQUNpQjs7SUFDakIsaUNBQ2U7O0lBQ2Ysc0NBQ29COztJQUNwQixtQ0FDa0I7O0lBQ2xCLGtDQUNpQjs7SUFDakIsdUNBQ3NCOztJQUN0Qix5Q0FDdUI7O0lBQ3ZCLDBDQUNnRTs7SUFDaEUseUNBQ3VEOztJQUN2RCxvQ0FDa0Q7O0lBRWxELG1DQUE4Qzs7SUFDOUMsb0NBQW1DOzs7OztJQVlqQyw0Q0FBMkM7Ozs7O0lBQzNDLCtCQUF3Qjs7Ozs7SUFDeEIsMENBQXNDOzs7OztJQUN0QywrQkFBc0M7Ozs7O0lBQ3RDLG9DQUE0Qjs7Ozs7SUFDNUIsZ0NBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25Jbml0LFxuICBOZ1pvbmUsXG4gIEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRXZlbnRFbWl0dGVyLFxuICBDb21wb25lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi9waWNrZXItb3B0aW9ucy5wcm92aWRlcic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tQaWNrZXJdLCBbbnptLXBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBpY2tlckRpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQaWNrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHBpY2tlcjogQ29tcG9uZW50UmVmPFBpY2tlckNvbXBvbmVudD47XG4gIHZhbHVlOiBBcnJheTxhbnk+O1xuICBwcml2YXRlIF9ldmVudExpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBASW5wdXQoKVxuICBkYXRhOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKVxuICBjb2xzOiBOdW1iZXI7XG4gIEBJbnB1dCgpXG4gIG1hc2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHZpc2libGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIG9rVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBkaXNtaXNzVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgY2FzY2FkZTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgYXBwZW5kVG9Cb2R5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBpbmRpY2F0b3JTdHlsZTogb2JqZWN0O1xuICBAT3V0cHV0KClcbiAgb25WaXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKHRydWUpO1xuICBAT3V0cHV0KClcbiAgb25QaWNrZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvbkNoYW5nZTogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICB0b2dnbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5zaG93UGlja2VyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfZWxtOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2RlZmF1bHRPcHRpb25zOiBQaWNrZXJPcHRpb25zLFxuICAgIHByaXZhdGUgX2NmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlLmNvbHMgJiYgdGhpcy5waWNrZXIpIHtcbiAgICAgIHRoaXMucGlja2VyLmluc3RhbmNlLm9wdGlvbnMuY29scyA9IHZhbHVlLmNvbHMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZGF0YSAmJiB0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5waWNrZXIuaW5zdGFuY2Uub3B0aW9ucy5kYXRhID0gdmFsdWUuZGF0YS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmhpZGVQaWNrZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMucGlja2VyICYmXG4gICAgICAhdGhpcy5fZWxtLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMucGlja2VyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5oaWRlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93UGlja2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnBpY2tlci5pbnN0YW5jZS5pbml0KCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBpY2tlciAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gW1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayhldmVudCkpLFxuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hlbmQnLCAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayhldmVudCkpXG4gICAgICAgIF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBQaWNrZXJPcHRpb25zKCk7XG4gICAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHRoaXMuX2RlZmF1bHRPcHRpb25zLCB7XG4gICAgICAgIGhpZGVQaWNrZXI6IChldmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVOZ01vZGVsOiAodmFsdWU6IGFueVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBvcHRpb25hbFBhcmFtczogQXJyYXk8a2V5b2YgUGlja2VyRGlyZWN0aXZlPiA9IFtcbiAgICAgICAgJ2RhdGEnLFxuICAgICAgICAndmFsdWUnLFxuICAgICAgICAnY29scycsXG4gICAgICAgICdtYXNrJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ29rVGV4dCcsXG4gICAgICAgICdkaXNtaXNzVGV4dCcsXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICdjYXNjYWRlJyxcbiAgICAgICAgJ2FwcGVuZFRvQm9keScsXG4gICAgICAgICdpbmRpY2F0b3JTdHlsZScsXG4gICAgICAgICdvblBpY2tlckNoYW5nZScsXG4gICAgICAgICdvblZpc2libGVDaGFuZ2UnLFxuICAgICAgICAnb25EaXNtaXNzJ1xuICAgICAgXTtcbiAgICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2gocGFyYW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXNbcGFyYW1dICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIChvcHRpb25zIGFzIGFueSlbcGFyYW1dID0gdGhpc1twYXJhbV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxQaWNrZXJDb21wb25lbnQ+ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBpY2tlckNvbXBvbmVudCk7XG4gICAgICBjb25zdCBjaGlsZEluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFBpY2tlck9wdGlvbnMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgXSk7XG4gICAgICB0aGlzLnBpY2tlciA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5LFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aCxcbiAgICAgICAgY2hpbGRJbmplY3RvclxuICAgICAgKTtcbiAgICAgIGlmIChvcHRpb25zLmFwcGVuZFRvQm9keSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucGlja2VyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VyKSB7XG4gICAgICB0aGlzLnBpY2tlci5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5waWNrZXI7XG4gICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLmZvckVhY2goZm4gPT4gZm4oKSk7XG4gICAgICB0aGlzLl9ldmVudExpc3RlbmVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICBpZiAodGhpcy5waWNrZXIpIHtcbiAgICAgIHRoaXMucGlja2VyLmluc3RhbmNlLm9wdGlvbnMudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy5zaG93UGlja2VyKCk7XG4gICAgICB0aGlzLnBpY2tlci5pbnN0YW5jZS5yZWxvYWRQaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==