UNPKG

ng-zorro-antd-mobile

Version:

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

293 lines (292 loc) 27 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, Input, Output, EventEmitter, HostListener, ViewContainerRef, ElementRef, Injector, ComponentFactoryResolver, Renderer2, TemplateRef } from '@angular/core'; import { PopoverComponent } from './popover.component'; import { PopoverOptions } from './popover-options.provider'; import { PopoverComponentOptions } from './popover-component-options.provider'; import * as Positioning from '../core/util/position'; var PopoverDirective = /** @class */ (function () { function PopoverDirective(_viewContainerRef, _elm, _defaultOptions, _cfr, _renderer) { this._viewContainerRef = _viewContainerRef; this._elm = _elm; this._defaultOptions = _defaultOptions; this._cfr = _cfr; this._renderer = _renderer; this._eventListeners = []; this.onVisibleChange = new EventEmitter(true); this.onSelect = new EventEmitter(); } /** * @return {?} */ PopoverDirective.prototype.togglePopover = /** * @return {?} */ function () { if (!this.popover) { this.showPopover(); } else { this.hidePopover(); } }; /** * @param {?} placement * @return {?} */ PopoverDirective.prototype.positionMap = /** * @param {?} placement * @return {?} */ function (placement) { switch (placement) { case 'topLeft': return 'top-left'; case 'topRight': return 'top-right'; case 'bottomLeft': return 'bottom-left'; case 'bottomRight': return 'bottom-right'; case 'leftTop': return 'left-top'; case 'leftBottom': return 'left-bottom'; case 'rightTop': return 'right-top'; case 'rightBottom': return 'right-bottom'; case 'fullScreen': case 'landScape': return 'bottom'; default: return placement; } }; /** * @return {?} */ PopoverDirective.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @return {?} */ PopoverDirective.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; if (this.visible) { setTimeout(function () { _this.showPopover(); }, 0); } }; /** * @return {?} */ PopoverDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.hidePopover(); }; /** * @param {?} event * @return {?} */ PopoverDirective.prototype.onDocumentClick = /** * @param {?} event * @return {?} */ function (event) { if (this.popover && !this._elm.nativeElement.contains(event.target) && !this.popover.location.nativeElement.contains(event.target)) { this.hidePopover(); } }; /** * @return {?} */ PopoverDirective.prototype.showPopover = /** * @return {?} */ function () { var _this = this; if (!this.popover) { setTimeout(function () { _this._eventListeners = [ _this._renderer.listen('document', 'click', function (event) { return _this.onDocumentClick(event); }), _this._renderer.listen('document', 'touchend', function (event) { return _this.onDocumentClick(event); }), _this._renderer.listen('window', 'resize', function () { return _this.positionPopover(); }) ]; }); /** @type {?} */ var options_1 = new PopoverComponentOptions(); options_1.placement = this.placement; Object.assign(options_1, this._defaultOptions, { hidePopover: function (event) { _this.hidePopover(); }, onAfterViewInit: function () { _this.positionPopover(); /** @type {?} */ var children = document.getElementsByClassName('am-popover-inner-wrapper')[0].children; if (children.length > 0) { var _loop_1 = function (i) { children[i].id = "" + i; children[i].addEventListener('click', function () { if (_this.onSelect) { _this.onSelect.emit(children[i]); _this.hidePopover(); } }, false); }; // 首先我们检查它是否包含子节点 for (var i = 0; i < children.length; i++) { _loop_1(i); } } } }); /** @type {?} */ var optionalParams = [ 'mask', 'showArrow', 'placement', 'appendToBody', 'overlay' ]; optionalParams.forEach(function (param) { if (typeof _this[param] !== 'undefined') { (/** @type {?} */ (options_1))[param] = _this[param]; } }); /** @type {?} */ var componentFactory = this._cfr.resolveComponentFactory(PopoverComponent); /** @type {?} */ var childInjector = Injector.create([ { provide: PopoverComponentOptions, useValue: options_1 } ], this._viewContainerRef.parentInjector); this.popover = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, childInjector); if (options_1.appendToBody) { document.body.appendChild(this.popover.location.nativeElement); } this.onVisibleChange.emit(true); } }; /** * @return {?} */ PopoverDirective.prototype.positionPopover = /** * @return {?} */ function () { if (this.popover) { /** @type {?} */ var popoverElement = this.popover.location.nativeElement.children[1]; /** @type {?} */ var popoverPosition = Positioning.getPositionElements(this._elm.nativeElement, popoverElement, this.positionMap(this.placement) || this._defaultOptions.placement, this.appendToBody || this._defaultOptions.appendToBody); if (this.placement === 'landScape') { this._renderer.setStyle(popoverElement, 'top', popoverPosition.top + "px"); this._renderer.setStyle(popoverElement, 'left', "0px"); this._renderer.setStyle(popoverElement, 'width', window.innerWidth + "px"); this._renderer.setStyle(popoverElement, 'max-height', window.innerHeight - popoverPosition.height + "px"); } else if (this.placement === 'fullScreen') { this._renderer.setStyle(popoverElement, 'top', 0 + "px"); this._renderer.setStyle(popoverElement, 'left', "0px"); this._renderer.setStyle(popoverElement, 'width', window.innerWidth + "px"); this._renderer.setStyle(popoverElement, 'max-height', window.innerHeight - popoverPosition.height + "px"); } else { this._renderer.setStyle(popoverElement, 'top', popoverPosition.top + "px"); this._renderer.setStyle(popoverElement, 'left', popoverPosition.left + "px"); } } }; /** * @return {?} */ PopoverDirective.prototype.hidePopover = /** * @return {?} */ function () { if (this.popover) { this.popover.destroy(); delete this.popover; this.onVisibleChange.emit(false); this._eventListeners.forEach(function (fn) { return fn(); }); this._eventListeners = []; } }; PopoverDirective.decorators = [ { type: Directive, args: [{ selector: '[Popover], [nzm-popover]', providers: [PopoverOptions] },] } ]; /** @nocollapse */ PopoverDirective.ctorParameters = function () { return [ { type: ViewContainerRef }, { type: ElementRef }, { type: PopoverOptions }, { type: ComponentFactoryResolver }, { type: Renderer2 } ]; }; PopoverDirective.propDecorators = { mask: [{ type: Input }], showArrow: [{ type: Input }], visible: [{ type: Input }], placement: [{ type: Input }], overlay: [{ type: Input }], onVisibleChange: [{ type: Output }], onSelect: [{ type: Output }], appendToBody: [{ type: Input }], togglePopover: [{ type: HostListener, args: ['click',] }] }; return PopoverDirective; }()); export { PopoverDirective }; if (false) { /** @type {?} */ PopoverDirective.prototype.popover; /** @type {?} */ PopoverDirective.prototype._eventListeners; /** @type {?} */ PopoverDirective.prototype.mask; /** @type {?} */ PopoverDirective.prototype.showArrow; /** @type {?} */ PopoverDirective.prototype.visible; /** @type {?} */ PopoverDirective.prototype.placement; /** @type {?} */ PopoverDirective.prototype.overlay; /** @type {?} */ PopoverDirective.prototype.onVisibleChange; /** @type {?} */ PopoverDirective.prototype.onSelect; /** @type {?} */ PopoverDirective.prototype.appendToBody; /** @type {?} */ PopoverDirective.prototype._viewContainerRef; /** @type {?} */ PopoverDirective.prototype._elm; /** @type {?} */ PopoverDirective.prototype._defaultOptions; /** @type {?} */ PopoverDirective.prototype._cfr; /** @type {?} */ PopoverDirective.prototype._renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbInBvcG92ZXIvcG9wb3Zlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLGdCQUFnQixFQUdoQixVQUFVLEVBRVYsUUFBUSxFQUNSLHdCQUF3QixFQUN4QixTQUFTLEVBQ1QsV0FBVyxFQUdaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDOztJQXFDbkQsMEJBQ1UsbUJBQ0EsTUFDQSxpQkFDQSxNQUNBO1FBSkEsc0JBQWlCLEdBQWpCLGlCQUFpQjtRQUNqQixTQUFJLEdBQUosSUFBSTtRQUNKLG9CQUFlLEdBQWYsZUFBZTtRQUNmLFNBQUksR0FBSixJQUFJO1FBQ0osY0FBUyxHQUFULFNBQVM7K0JBakMwQixFQUFFOytCQWFOLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFFakMsSUFBSSxZQUFZLEVBQUU7S0FtQjVDOzs7O0lBZEosd0NBQWE7OztJQURiO1FBRUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7S0FDRjs7Ozs7SUFVRCxzQ0FBVzs7OztJQUFYLFVBQVksU0FBUztRQUNuQixRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLFNBQVM7Z0JB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QUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1NBQzNCOzs7Z0JBek1KLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzVCOzs7O2dCQXBCQyxnQkFBZ0I7Z0JBR2hCLFVBQVU7Z0JBVUgsY0FBYztnQkFQckIsd0JBQXdCO2dCQUN4QixTQUFTOzs7dUJBbUJSLEtBQUs7NEJBRUwsS0FBSzswQkFFTCxLQUFLOzRCQUVMLEtBQUs7MEJBRUwsS0FBSztrQ0FFTCxNQUFNOzJCQUVOLE1BQU07K0JBRU4sS0FBSztnQ0FHTCxZQUFZLFNBQUMsT0FBTzs7MkJBakR2Qjs7U0EyQmEsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbiAgSW5qZWN0b3IsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgQ29tcG9uZW50RmFjdG9yeSxcbiAgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb25zIH0gZnJvbSAnLi9wb3BvdmVyLW9wdGlvbnMucHJvdmlkZXInO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudE9wdGlvbnMgfSBmcm9tICcuL3BvcG92ZXItY29tcG9uZW50LW9wdGlvbnMucHJvdmlkZXInO1xuaW1wb3J0ICogYXMgUG9zaXRpb25pbmcgZnJvbSAnLi4vY29yZS91dGlsL3Bvc2l0aW9uJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW1BvcG92ZXJdLCBbbnptLXBvcG92ZXJdJyxcbiAgcHJvdmlkZXJzOiBbUG9wb3Zlck9wdGlvbnNdXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHBvcG92ZXI6IENvbXBvbmVudFJlZjxQb3BvdmVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIF9ldmVudExpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBASW5wdXQoKVxuICBtYXNrOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBzaG93QXJyb3c6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHZpc2libGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBvdmVybGF5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAT3V0cHV0KClcbiAgb25WaXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKHRydWUpO1xuICBAT3V0cHV0KClcbiAgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKVxuICBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wb3BvdmVyKSB7XG4gICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZVBvcG92ZXIoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgX2VsbTogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9kZWZhdWx0T3B0aW9uczogUG9wb3Zlck9wdGlvbnMsXG4gICAgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgcG9zaXRpb25NYXAocGxhY2VtZW50KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgICAgY2FzZSAndG9wTGVmdCc6XG4gICAgICAgIHJldHVybiAndG9wLWxlZnQnO1xuICAgICAgY2FzZSAndG9wUmlnaHQnOlxuICAgICAgICByZXR1cm4gJ3RvcC1yaWdodCc7XG4gICAgICBjYXNlICdib3R0b21MZWZ0JzpcbiAgICAgICAgcmV0dXJuICdib3R0b20tbGVmdCc7XG4gICAgICBjYXNlICdib3R0b21SaWdodCc6XG4gICAgICAgIHJldHVybiAnYm90dG9tLXJpZ2h0JztcbiAgICAgIGNhc2UgJ2xlZnRUb3AnOlxuICAgICAgICByZXR1cm4gJ2xlZnQtdG9wJztcbiAgICAgIGNhc2UgJ2xlZnRCb3R0b20nOlxuICAgICAgICByZXR1cm4gJ2xlZnQtYm90dG9tJztcbiAgICAgIGNhc2UgJ3JpZ2h0VG9wJzpcbiAgICAgICAgcmV0dXJuICdyaWdodC10b3AnO1xuICAgICAgY2FzZSAncmlnaHRCb3R0b20nOlxuICAgICAgICByZXR1cm4gJ3JpZ2h0LWJvdHRvbSc7XG4gICAgICBjYXNlICdmdWxsU2NyZWVuJzpcbiAgICAgIGNhc2UgJ2xhbmRTY2FwZSc6XG4gICAgICAgIHJldHVybiAnYm90dG9tJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBwbGFjZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1BvcG92ZXIoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaGlkZVBvcG92ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMucG9wb3ZlciAmJlxuICAgICAgIXRoaXMuX2VsbS5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLnBvcG92ZXIubG9jYXRpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93UG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucG9wb3Zlcikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gW1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayhldmVudCkpLFxuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hlbmQnLCAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayhldmVudCkpLFxuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHRoaXMucG9zaXRpb25Qb3BvdmVyKCkpXG4gICAgICAgIF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBQb3BvdmVyQ29tcG9uZW50T3B0aW9ucygpO1xuICAgICAgb3B0aW9ucy5wbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcbiAgICAgIE9iamVjdC5hc3NpZ24ob3B0aW9ucywgdGhpcy5fZGVmYXVsdE9wdGlvbnMsIHtcbiAgICAgICAgaGlkZVBvcG92ZXI6IChldmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZVBvcG92ZXIoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25BZnRlclZpZXdJbml0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvblBvcG92ZXIoKTtcbiAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FtLXBvcG92ZXItaW5uZXItd3JhcHBlcicpWzBdLmNoaWxkcmVuO1xuICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyDpppblhYjmiJHku6zmo4Dmn6XlroPmmK/lkKbljIXlkKvlrZDoioLngrlcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW5baV0uaWQgPSBgJHtpfWA7XG4gICAgICAgICAgICAgIGNoaWxkcmVuW2ldLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5vblNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoY2hpbGRyZW5baV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG9wdGlvbmFsUGFyYW1zOiBBcnJheTxrZXlvZiBQb3BvdmVyRGlyZWN0aXZlPiA9IFtcbiAgICAgICAgJ21hc2snLFxuICAgICAgICAnc2hvd0Fycm93JyxcbiAgICAgICAgJ3BsYWNlbWVudCcsXG4gICAgICAgICdhcHBlbmRUb0JvZHknLFxuICAgICAgICAnb3ZlcmxheSdcbiAgICAgIF07XG4gICAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKHBhcmFtID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzW3BhcmFtXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAob3B0aW9ucyBhcyBhbnkpW3BhcmFtXSA9IHRoaXNbcGFyYW1dO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxQb3BvdmVyQ29tcG9uZW50PiA9IHRoaXMuX2Nmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShQb3BvdmVyQ29tcG9uZW50KTtcbiAgICAgIGNvbnN0IGNoaWxkSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBQb3BvdmVyQ29tcG9uZW50T3B0aW9ucyxcbiAgICAgICAgICAgIHVzZVZhbHVlOiBvcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLnBhcmVudEluamVjdG9yXG4gICAgICApO1xuICAgICAgdGhpcy5wb3BvdmVyID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnksXG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoLFxuICAgICAgICBjaGlsZEluamVjdG9yXG4gICAgICApO1xuICAgICAgaWYgKG9wdGlvbnMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5wb3BvdmVyLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uUG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wb3BvdmVyKSB7XG4gICAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMucG9wb3Zlci5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzFdO1xuICAgICAgY29uc3QgcG9wb3ZlclBvc2l0aW9uID0gUG9zaXRpb25pbmcuZ2V0UG9zaXRpb25FbGVtZW50cyhcbiAgICAgICAgdGhpcy5fZWxtLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHBvcG92ZXJFbGVtZW50LFxuICAgICAgICB0aGlzLnBvc2l0aW9uTWFwKHRoaXMucGxhY2VtZW50KSB8fCB0aGlzLl9kZWZhdWx0T3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICAgIHRoaXMuYXBwZW5kVG9Cb2R5IHx8IHRoaXMuX2RlZmF1bHRPcHRpb25zLmFwcGVuZFRvQm9keVxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gJ2xhbmRTY2FwZScpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUocG9wb3ZlckVsZW1lbnQsICd0b3AnLCBgJHtwb3BvdmVyUG9zaXRpb24udG9wfXB4YCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHBvcG92ZXJFbGVtZW50LCAnbGVmdCcsIGAwcHhgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUocG9wb3ZlckVsZW1lbnQsICd3aWR0aCcsIGAke3dpbmRvdy5pbm5lcldpZHRofXB4YCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHBvcG92ZXJFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke3dpbmRvdy5pbm5lckhlaWdodCAtIHBvcG92ZXJQb3NpdGlvbi5oZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT09ICdmdWxsU2NyZWVuJykge1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShwb3BvdmVyRWxlbWVudCwgJ3RvcCcsIGAkezB9cHhgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUocG9wb3ZlckVsZW1lbnQsICdsZWZ0JywgYDBweGApO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShwb3BvdmVyRWxlbWVudCwgJ3dpZHRoJywgYCR7d2luZG93LmlubmVyV2lkdGh9cHhgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUocG9wb3ZlckVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7d2luZG93LmlubmVySGVpZ2h0IC0gcG9wb3ZlclBvc2l0aW9uLmhlaWdodH1weGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUocG9wb3ZlckVsZW1lbnQsICd0b3AnLCBgJHtwb3BvdmVyUG9zaXRpb24udG9wfXB4YCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHBvcG92ZXJFbGVtZW50LCAnbGVmdCcsIGAke3BvcG92ZXJQb3NpdGlvbi5sZWZ0fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wb3BvdmVyKSB7XG4gICAgICB0aGlzLnBvcG92ZXIuZGVzdHJveSgpO1xuICAgICAgZGVsZXRlIHRoaXMucG9wb3ZlcjtcbiAgICAgIHRoaXMub25WaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaChmbiA9PiBmbigpKTtcbiAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gW107XG4gICAgfVxuICB9XG59XG4iXX0=