UNPKG

ngx-amap

Version:

[![npm](https://img.shields.io/npm/v/ngx-amap.svg)][npm-badge-url] [![npm](https://img.shields.io/npm/dm/ngx-amap.svg)][npm-badge-url] [![Build Status](https://travis-ci.org/xieziyu/ngx-amap.svg?branch=master)][ci-url]

347 lines 24.6 kB
/** * @fileoverview added by tsickle * Generated from: components/amap-info-window/amap-info-window.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter, ElementRef, NgZone, } from '@angular/core'; import { zip } from 'rxjs'; import { LoggerService } from '../../shared/logger/logger.service'; import { EventBinderService } from '../../shared/event-binder.service'; import { getOptions, ChangeFilter } from '../../utils'; import { AmapInfoWindowService } from './amap-info-window.service'; import { PixelService } from '../../shared/pixel.service'; import { SizeService } from '../../shared/size.service'; import { AMapService } from '../../shared/amap.service'; /** @type {?} */ const TAG = 'amap-info-window'; /** @type {?} */ const ALL_OPTIONS = [ 'isCustom', 'autoMove', 'closeWhenClickMap', 'content', 'size', 'anchor', 'offset', 'position', 'showShadow', ]; export class AmapInfoWindowComponent { /** * @param {?} os * @param {?} binder * @param {?} amaps * @param {?} el * @param {?} logger * @param {?} pixels * @param {?} sizes * @param {?} ngZone */ constructor(os, binder, amaps, el, logger, pixels, sizes, ngZone) { this.os = os; this.binder = binder; this.amaps = amaps; this.el = el; this.logger = logger; this.pixels = pixels; this.sizes = sizes; this.ngZone = ngZone; /** * 额外:是否开启 */ this.isOpen = false; // ---- Events ---- this.naReady = new EventEmitter(); this.isOpenChange = new EventEmitter(); this.inited = false; /** @type {?} */ const w = this.os.get(); this.naOpen = this.binder.bindEvent(w, 'open'); this.naClose = this.binder.bindEvent(w, 'close'); this.naChange = this.binder.bindEvent(w, 'change'); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { /** @type {?} */ const filter = ChangeFilter.of(changes); /** @type {?} */ const iw = this.get(); if (!this.inited) { this.amaps.get().subscribe((/** * @return {?} */ () => { this.logger.d(TAG, 'initializing ...'); // bind isOpenChange events: this.subscriptions = this.binder.bindEvent(iw, 'open').subscribe((/** * @return {?} */ () => { if (!this.isOpen) { this.isOpen = true; this.isOpenChange.emit(true); } })); this.subscriptions.add(this.binder.bindEvent(iw, 'close').subscribe((/** * @return {?} */ () => { if (this.isOpen) { this.isOpen = false; this.isOpenChange.emit(false); } }))); this.content = this.content ? this.content : this.el.nativeElement.querySelector('.amap-info-window-content'); /** @type {?} */ const options = getOptions(this, ALL_OPTIONS); if (this.offset) { options.offset = this.pixels.create(this.offset); } if (this.size) { options.size = this.sizes.create(this.size); } this.logger.d(TAG, 'options:', options); this.os.create(options).subscribe((/** * @param {?} m * @return {?} */ m => { this.ngZone.run((/** * @return {?} */ () => { this.toggleOpen(); this.naReady.emit(m); })); this.logger.d(TAG, 'InfoWindow is ready.'); })); this.inited = true; })); } else { filter.has('isOpen').subscribe((/** * @return {?} */ () => this.toggleOpen())); zip(filter.has('content'), iw).subscribe((/** * @param {?} __0 * @return {?} */ ([v, w]) => w.setContent(v))); zip(filter.notEmpty('position'), iw).subscribe((/** * @param {?} __0 * @return {?} */ ([v, w]) => w.setPosition(v))); zip(filter.notEmpty('size'), iw).subscribe((/** * @param {?} __0 * @return {?} */ ([v, w]) => w.setSize(this.sizes.create(v)))); zip(filter.notEmpty('anchor'), iw).subscribe((/** * @param {?} __0 * @return {?} */ ([v, w]) => w.setAnchor(v))); } } /** * @return {?} */ ngOnDestroy() { if (this.subscriptions) { this.subscriptions.unsubscribe(); } this.os.destroy(); } /** * 获取已创建的 AMap.InfoWindow 对象 * @return {?} */ get() { return this.os.get(); } /** * 开关窗体 * @return {?} */ toggleOpen() { this.logger.d(TAG, 'toggle open'); this.isOpen ? this.open() : this.close(); } /** * 打开窗体 * @return {?} */ open() { if (this.hostMarker) { this.os.openOnMark(this.hostMarker); } else { this.os.open(); } } /** * 关闭窗体 * @return {?} */ close() { this.os.close(); } } AmapInfoWindowComponent.decorators = [ { type: Component, args: [{ selector: 'amap-info-window', template: "<div class='amap-info-window-inner'></div>\n<div class='amap-info-window-content'>\n <ng-content></ng-content>\n</div>", providers: [AmapInfoWindowService], styles: [""] }] } ]; /** @nocollapse */ AmapInfoWindowComponent.ctorParameters = () => [ { type: AmapInfoWindowService }, { type: EventBinderService }, { type: AMapService }, { type: ElementRef }, { type: LoggerService }, { type: PixelService }, { type: SizeService }, { type: NgZone } ]; AmapInfoWindowComponent.propDecorators = { isCustom: [{ type: Input }], autoMove: [{ type: Input }], closeWhenClickMap: [{ type: Input }], content: [{ type: Input }], size: [{ type: Input }], anchor: [{ type: Input }], offset: [{ type: Input }], position: [{ type: Input }], showShadow: [{ type: Input }], isOpen: [{ type: Input }], naReady: [{ type: Output }], naOpen: [{ type: Output }], naClose: [{ type: Output }], naChange: [{ type: Output }], isOpenChange: [{ type: Output }] }; if (false) { /** * 是否自定义窗体 * @type {?} */ AmapInfoWindowComponent.prototype.isCustom; /** * 是否自动调整窗体到视野内 * @type {?} */ AmapInfoWindowComponent.prototype.autoMove; /** * 控制是否在鼠标点击地图后关闭信息窗体 * @type {?} */ AmapInfoWindowComponent.prototype.closeWhenClickMap; /** * 显示内容 * @type {?} */ AmapInfoWindowComponent.prototype.content; /** * 信息窗体尺寸 * @type {?} */ AmapInfoWindowComponent.prototype.size; /** * 信息窗体锚点 * @type {?} */ AmapInfoWindowComponent.prototype.anchor; /** * 信息窗体显示位置偏移量 * @type {?} */ AmapInfoWindowComponent.prototype.offset; /** * 信息窗体显示基点位置 * @type {?} */ AmapInfoWindowComponent.prototype.position; /** * 是否显示信息窗体阴影 * @type {?} */ AmapInfoWindowComponent.prototype.showShadow; /** * 额外:是否开启 * @type {?} */ AmapInfoWindowComponent.prototype.isOpen; /** @type {?} */ AmapInfoWindowComponent.prototype.naReady; /** @type {?} */ AmapInfoWindowComponent.prototype.naOpen; /** @type {?} */ AmapInfoWindowComponent.prototype.naClose; /** @type {?} */ AmapInfoWindowComponent.prototype.naChange; /** @type {?} */ AmapInfoWindowComponent.prototype.isOpenChange; /** @type {?} */ AmapInfoWindowComponent.prototype.hostMarker; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.inited; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.subscriptions; /** * @type {?} * @protected */ AmapInfoWindowComponent.prototype.os; /** * @type {?} * @protected */ AmapInfoWindowComponent.prototype.binder; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.amaps; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.el; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.logger; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.pixels; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.sizes; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1pbmZvLXdpbmRvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvYW1hcC1pbmZvLXdpbmRvdy9hbWFwLWluZm8td2luZG93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBR1osVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O01BRWxELEdBQUcsR0FBRyxrQkFBa0I7O01BQ3hCLFdBQVcsR0FBRztJQUNsQixVQUFVO0lBQ1YsVUFBVTtJQUNWLG1CQUFtQjtJQUNuQixTQUFTO0lBQ1QsTUFBTTtJQUNOLFFBQVE7SUFDUixRQUFRO0lBQ1IsVUFBVTtJQUNWLFlBQVk7Q0FDYjtBQVFELE1BQU0sT0FBTyx1QkFBdUI7Ozs7Ozs7Ozs7O0lBcURsQyxZQUNZLEVBQXlCLEVBQ3pCLE1BQTBCLEVBQzVCLEtBQWtCLEVBQ2xCLEVBQWMsRUFDZCxNQUFxQixFQUNyQixNQUFvQixFQUNwQixLQUFrQixFQUNsQixNQUFjO1FB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dEIseUNBQTZCOzs7OztJQUM3Qix5Q0FBNEI7Ozs7O0lBQzVCLHdDQUEwQjs7Ozs7SUFDMUIseUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgemlwLCBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50QmluZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9ldmVudC1iaW5kZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRPcHRpb25zLCBDaGFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBBbWFwSW5mb1dpbmRvd1NlcnZpY2UgfSBmcm9tICcuL2FtYXAtaW5mby13aW5kb3cuc2VydmljZSc7XG5pbXBvcnQgeyBJUGl4ZWwsIElTaXplIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQaXhlbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvcGl4ZWwuc2VydmljZSc7XG5pbXBvcnQgeyBTaXplU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQU1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvYW1hcC5zZXJ2aWNlJztcblxuY29uc3QgVEFHID0gJ2FtYXAtaW5mby13aW5kb3cnO1xuY29uc3QgQUxMX09QVElPTlMgPSBbXG4gICdpc0N1c3RvbScsXG4gICdhdXRvTW92ZScsXG4gICdjbG9zZVdoZW5DbGlja01hcCcsXG4gICdjb250ZW50JyxcbiAgJ3NpemUnLFxuICAnYW5jaG9yJyxcbiAgJ29mZnNldCcsXG4gICdwb3NpdGlvbicsXG4gICdzaG93U2hhZG93Jyxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FtYXAtaW5mby13aW5kb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vYW1hcC1pbmZvLXdpbmRvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FtYXAtaW5mby13aW5kb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQW1hcEluZm9XaW5kb3dTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQW1hcEluZm9XaW5kb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8vIC0tLS0gT3B0aW9ucyAtLS0tXG4gIC8qKlxuICAgKiDmmK/lkKboh6rlrprkuYnnqpfkvZNcbiAgICovXG4gIEBJbnB1dCgpIGlzQ3VzdG9tOiBib29sZWFuO1xuICAvKipcbiAgICog5piv5ZCm6Ieq5Yqo6LCD5pW056qX5L2T5Yiw6KeG6YeO5YaFXG4gICAqL1xuICBASW5wdXQoKSBhdXRvTW92ZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOaOp+WItuaYr+WQpuWcqOm8oOagh+eCueWHu+WcsOWbvuWQjuWFs+mXreS/oeaBr+eql+S9k1xuICAgKi9cbiAgQElucHV0KCkgY2xvc2VXaGVuQ2xpY2tNYXA6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmmL7npLrlhoXlrrlcbiAgICovXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuICAvKipcbiAgICog5L+h5oGv56qX5L2T5bC65a+4XG4gICAqL1xuICBASW5wdXQoKSBzaXplOiBBTWFwLlNpemVWYWx1ZSB8IElTaXplO1xuICAvKipcbiAgICog5L+h5oGv56qX5L2T6ZSa54K5XG4gICAqL1xuICBASW5wdXQoKSBhbmNob3I6IEFNYXAuSW5mb1dpbmRvdy5BbmNob3I7XG4gIC8qKlxuICAgKiDkv6Hmga/nqpfkvZPmmL7npLrkvY3nva7lgY/np7vph49cbiAgICovXG4gIEBJbnB1dCgpIG9mZnNldDogQU1hcC5QaXhlbCB8IElQaXhlbDtcbiAgLyoqXG4gICAqIOS/oeaBr+eql+S9k+aYvuekuuWfuueCueS9jee9rlxuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb246IEFNYXAuTG9jYXRpb25WYWx1ZTtcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuuS/oeaBr+eql+S9k+mYtOW9sVxuICAgKi9cbiAgQElucHV0KCkgc2hvd1NoYWRvdzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOmineWklu+8muaYr+WQpuW8gOWQr1xuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIC8vIC0tLS0gRXZlbnRzIC0tLS1cbiAgQE91dHB1dCgpIG5hUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBuYU9wZW46IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBuYUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgaG9zdE1hcmtlcjogT2JzZXJ2YWJsZTxBTWFwLk1hcmtlciB8IEFNYXAuVGV4dD47XG4gIHByaXZhdGUgaW5pdGVkID0gZmFsc2U7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvczogQW1hcEluZm9XaW5kb3dTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBiaW5kZXI6IEV2ZW50QmluZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGFtYXBzOiBBTWFwU2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGl4ZWxzOiBQaXhlbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaXplczogU2l6ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgY29uc3QgdyA9IHRoaXMub3MuZ2V0KCk7XG4gICAgdGhpcy5uYU9wZW4gPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQodywgJ29wZW4nKTtcbiAgICB0aGlzLm5hQ2xvc2UgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQodywgJ2Nsb3NlJyk7XG4gICAgdGhpcy5uYUNoYW5nZSA9IHRoaXMuYmluZGVyLmJpbmRFdmVudCh3LCAnY2hhbmdlJyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgZmlsdGVyID0gQ2hhbmdlRmlsdGVyLm9mKGNoYW5nZXMpO1xuICAgIGNvbnN0IGl3ID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoIXRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLmFtYXBzLmdldCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnaW5pdGlhbGl6aW5nIC4uLicpO1xuICAgICAgICAvLyBiaW5kIGlzT3BlbkNoYW5nZSBldmVudHM6XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChpdywgJ29wZW4nKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICB0aGlzLmJpbmRlci5iaW5kRXZlbnQoaXcsICdjbG9zZScpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuY29udGVudFxuICAgICAgICAgID8gdGhpcy5jb250ZW50XG4gICAgICAgICAgOiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFtYXAtaW5mby13aW5kb3ctY29udGVudCcpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZ2V0T3B0aW9uczxBTWFwLkluZm9XaW5kb3cuT3B0aW9ucz4odGhpcywgQUxMX09QVElPTlMpO1xuICAgICAgICBpZiAodGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICBvcHRpb25zLm9mZnNldCA9IHRoaXMucGl4ZWxzLmNyZWF0ZSh0aGlzLm9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2l6ZSkge1xuICAgICAgICAgIG9wdGlvbnMuc2l6ZSA9IHRoaXMuc2l6ZXMuY3JlYXRlKHRoaXMuc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdvcHRpb25zOicsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9zLmNyZWF0ZShvcHRpb25zKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlT3BlbigpO1xuICAgICAgICAgICAgdGhpcy5uYVJlYWR5LmVtaXQobSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdJbmZvV2luZG93IGlzIHJlYWR5LicpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2lzT3BlbicpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU9wZW4oKSk7XG4gICAgICB6aXAoZmlsdGVyLmhhczxhbnk+KCdjb250ZW50JyksIGl3KS5zdWJzY3JpYmUoKFt2LCB3XSkgPT4gdy5zZXRDb250ZW50KHYpKTtcbiAgICAgIHppcChmaWx0ZXIubm90RW1wdHk8QU1hcC5Mb2NhdGlvblZhbHVlPigncG9zaXRpb24nKSwgaXcpLnN1YnNjcmliZSgoW3YsIHddKSA9PlxuICAgICAgICB3LnNldFBvc2l0aW9uKHYpLFxuICAgICAgKTtcbiAgICAgIHppcChmaWx0ZXIubm90RW1wdHk8QU1hcC5TaXplVmFsdWUgfCBJU2l6ZT4oJ3NpemUnKSwgaXcpLnN1YnNjcmliZSgoW3YsIHddKSA9PlxuICAgICAgICB3LnNldFNpemUodGhpcy5zaXplcy5jcmVhdGUodikpLFxuICAgICAgKTtcbiAgICAgIHppcChmaWx0ZXIubm90RW1wdHk8QU1hcC5JbmZvV2luZG93LkFuY2hvcj4oJ2FuY2hvcicpLCBpdykuc3Vic2NyaWJlKChbdiwgd10pID0+XG4gICAgICAgIHcuc2V0QW5jaG9yKHYpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5vcy5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5bey5Yib5bu655qEIEFNYXAuSW5mb1dpbmRvdyDlr7nosaFcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcy5nZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlvIDlhbPnqpfkvZNcbiAgICovXG4gIHRvZ2dsZU9wZW4oKSB7XG4gICAgdGhpcy5sb2dnZXIuZChUQUcsICd0b2dnbGUgb3BlbicpO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICog5omT5byA56qX5L2TXG4gICAqL1xuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLmhvc3RNYXJrZXIpIHtcbiAgICAgIHRoaXMub3Mub3Blbk9uTWFyayh0aGlzLmhvc3RNYXJrZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9zLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5YWz6Zet56qX5L2TXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICB0aGlzLm9zLmNsb3NlKCk7XG4gIH1cbn1cbiJdfQ==