ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
347 lines • 24.6 kB
JavaScript
/**
* @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==