ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
388 lines • 26.3 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 * as tslib_1 from "tslib";
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 {?} */
var TAG = 'amap-info-window';
/** @type {?} */
var ALL_OPTIONS = [
'isCustom',
'autoMove',
'closeWhenClickMap',
'content',
'size',
'anchor',
'offset',
'position',
'showShadow',
];
var AmapInfoWindowComponent = /** @class */ (function () {
function AmapInfoWindowComponent(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 {?} */
var 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 {?}
*/
AmapInfoWindowComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
/** @type {?} */
var filter = ChangeFilter.of(changes);
/** @type {?} */
var iw = this.get();
if (!this.inited) {
this.amaps.get().subscribe((/**
* @return {?}
*/
function () {
_this.logger.d(TAG, 'initializing ...');
// bind isOpenChange events:
_this.subscriptions = _this.binder.bindEvent(iw, 'open').subscribe((/**
* @return {?}
*/
function () {
if (!_this.isOpen) {
_this.isOpen = true;
_this.isOpenChange.emit(true);
}
}));
_this.subscriptions.add(_this.binder.bindEvent(iw, 'close').subscribe((/**
* @return {?}
*/
function () {
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 {?} */
var 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 {?}
*/
function (m) {
_this.ngZone.run((/**
* @return {?}
*/
function () {
_this.toggleOpen();
_this.naReady.emit(m);
}));
_this.logger.d(TAG, 'InfoWindow is ready.');
}));
_this.inited = true;
}));
}
else {
filter.has('isOpen').subscribe((/**
* @return {?}
*/
function () { return _this.toggleOpen(); }));
zip(filter.has('content'), iw).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1];
return w.setContent(v);
}));
zip(filter.notEmpty('position'), iw).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1];
return w.setPosition(v);
}));
zip(filter.notEmpty('size'), iw).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1];
return w.setSize(_this.sizes.create(v));
}));
zip(filter.notEmpty('anchor'), iw).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1];
return w.setAnchor(v);
}));
}
};
/**
* @return {?}
*/
AmapInfoWindowComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.subscriptions) {
this.subscriptions.unsubscribe();
}
this.os.destroy();
};
/**
* 获取已创建的 AMap.InfoWindow 对象
*/
/**
* 获取已创建的 AMap.InfoWindow 对象
* @return {?}
*/
AmapInfoWindowComponent.prototype.get = /**
* 获取已创建的 AMap.InfoWindow 对象
* @return {?}
*/
function () {
return this.os.get();
};
/**
* 开关窗体
*/
/**
* 开关窗体
* @return {?}
*/
AmapInfoWindowComponent.prototype.toggleOpen = /**
* 开关窗体
* @return {?}
*/
function () {
this.logger.d(TAG, 'toggle open');
this.isOpen ? this.open() : this.close();
};
/**
* 打开窗体
*/
/**
* 打开窗体
* @return {?}
*/
AmapInfoWindowComponent.prototype.open = /**
* 打开窗体
* @return {?}
*/
function () {
if (this.hostMarker) {
this.os.openOnMark(this.hostMarker);
}
else {
this.os.open();
}
};
/**
* 关闭窗体
*/
/**
* 关闭窗体
* @return {?}
*/
AmapInfoWindowComponent.prototype.close = /**
* 关闭窗体
* @return {?}
*/
function () {
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 = function () { return [
{ 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 }]
};
return AmapInfoWindowComponent;
}());
export { AmapInfoWindowComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1pbmZvLXdpbmRvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvYW1hcC1pbmZvLXdpbmRvdy9hbWFwLWluZm8td2luZG93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQUVsRCxHQUFHLEdBQUcsa0JBQWtCOztJQUN4QixXQUFXLEdBQUc7SUFDbEIsVUFBVTtJQUNWLFVBQVU7SUFDVixtQkFBbUI7SUFDbkIsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsUUFBUTtJQUNSLFVBQVU7SUFDVixZQUFZO0NBQ2I7QUFFRDtJQTJERSxpQ0FDWSxFQUF5QixFQUN6QixNQUEwQixFQUM1QixLQUFrQixFQUNsQixFQUFjLEVBQ2QsTUFBcUIsRUFDckIsTUFBb0IsRUFDcEIsS0FBa0IsRUFDbEIsTUFBYztRQVBaLE9BQUUsR0FBRixFQUFFLENBQXVCO1FB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eUNBQW9DOztJQUNwQywwQ0FBcUM7O0lBQ3JDLDJDQUFzQzs7SUFDdEMsK0NBQXFEOztJQUVyRCw2Q0FBZ0Q7Ozs7O0lBQ2hELHlDQUF1Qjs7Ozs7SUFDdkIsZ0RBQW9DOzs7OztJQUdsQyxxQ0FBbUM7Ozs7O0lBQ25DLHlDQUFvQzs7Ozs7SUFDcEMsd0NBQTBCOzs7OztJQUMxQixxQ0FBc0I7Ozs7O0lBQ3RCLHlDQUE2Qjs7Ozs7SUFDN0IseUNBQTRCOzs7OztJQUM1Qix3Q0FBMEI7Ozs7O0lBQzFCLHlDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHppcCwgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudEJpbmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXZlbnQtYmluZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0T3B0aW9ucywgQ2hhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQW1hcEluZm9XaW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi9hbWFwLWluZm8td2luZG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBpeGVsLCBJU2l6ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGl4ZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpeGVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2l6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFNYXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FtYXAuc2VydmljZSc7XG5cbmNvbnN0IFRBRyA9ICdhbWFwLWluZm8td2luZG93JztcbmNvbnN0IEFMTF9PUFRJT05TID0gW1xuICAnaXNDdXN0b20nLFxuICAnYXV0b01vdmUnLFxuICAnY2xvc2VXaGVuQ2xpY2tNYXAnLFxuICAnY29udGVudCcsXG4gICdzaXplJyxcbiAgJ2FuY2hvcicsXG4gICdvZmZzZXQnLFxuICAncG9zaXRpb24nLFxuICAnc2hvd1NoYWRvdycsXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbWFwLWluZm8td2luZG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FtYXAtaW5mby13aW5kb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbWFwLWluZm8td2luZG93LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0FtYXBJbmZvV2luZG93U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBJbmZvV2luZG93Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyAtLS0tIE9wdGlvbnMgLS0tLVxuICAvKipcbiAgICog5piv5ZCm6Ieq5a6a5LmJ56qX5L2TXG4gICAqL1xuICBASW5wdXQoKSBpc0N1c3RvbTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOaYr+WQpuiHquWKqOiwg+aVtOeql+S9k+WIsOinhumHjuWGhVxuICAgKi9cbiAgQElucHV0KCkgYXV0b01vdmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmjqfliLbmmK/lkKblnKjpvKDmoIfngrnlh7vlnLDlm77lkI7lhbPpl63kv6Hmga/nqpfkvZNcbiAgICovXG4gIEBJbnB1dCgpIGNsb3NlV2hlbkNsaWNrTWFwOiBib29sZWFuO1xuICAvKipcbiAgICog5pi+56S65YaF5a65XG4gICAqL1xuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcbiAgLyoqXG4gICAqIOS/oeaBr+eql+S9k+WwuuWvuFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogQU1hcC5TaXplVmFsdWUgfCBJU2l6ZTtcbiAgLyoqXG4gICAqIOS/oeaBr+eql+S9k+mUmueCuVxuICAgKi9cbiAgQElucHV0KCkgYW5jaG9yOiBBTWFwLkluZm9XaW5kb3cuQW5jaG9yO1xuICAvKipcbiAgICog5L+h5oGv56qX5L2T5pi+56S65L2N572u5YGP56e76YePXG4gICAqL1xuICBASW5wdXQoKSBvZmZzZXQ6IEFNYXAuUGl4ZWwgfCBJUGl4ZWw7XG4gIC8qKlxuICAgKiDkv6Hmga/nqpfkvZPmmL7npLrln7rngrnkvY3nva5cbiAgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uOiBBTWFwLkxvY2F0aW9uVmFsdWU7XG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrkv6Hmga/nqpfkvZPpmLTlvbFcbiAgICovXG4gIEBJbnB1dCgpIHNob3dTaGFkb3c6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDpop3lpJbvvJrmmK/lkKblvIDlkK9cbiAgICovXG4gIEBJbnB1dCgpIGlzT3BlbiA9IGZhbHNlO1xuICAvLyAtLS0tIEV2ZW50cyAtLS0tXG4gIEBPdXRwdXQoKSBuYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbmFPcGVuOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGhvc3RNYXJrZXI6IE9ic2VydmFibGU8QU1hcC5NYXJrZXIgfCBBTWFwLlRleHQ+O1xuICBwcml2YXRlIGluaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3M6IEFtYXBJbmZvV2luZG93U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbWFwczogQU1hcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBpeGVsczogUGl4ZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2l6ZXM6IFNpemVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIGNvbnN0IHcgPSB0aGlzLm9zLmdldCgpO1xuICAgIHRoaXMubmFPcGVuID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHcsICdvcGVuJyk7XG4gICAgdGhpcy5uYUNsb3NlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHcsICdjbG9zZScpO1xuICAgIHRoaXMubmFDaGFuZ2UgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQodywgJ2NoYW5nZScpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCBpdyA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5hbWFwcy5nZXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2luaXRpYWxpemluZyAuLi4nKTtcbiAgICAgICAgLy8gYmluZCBpc09wZW5DaGFuZ2UgZXZlbnRzOlxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoaXcsICdvcGVuJykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgdGhpcy5iaW5kZXIuYmluZEV2ZW50KGl3LCAnY2xvc2UnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmNvbnRlbnRcbiAgICAgICAgICA/IHRoaXMuY29udGVudFxuICAgICAgICAgIDogdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hbWFwLWluZm8td2luZG93LWNvbnRlbnQnKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnM8QU1hcC5JbmZvV2luZG93Lk9wdGlvbnM+KHRoaXMsIEFMTF9PUFRJT05TKTtcbiAgICAgICAgaWYgKHRoaXMub2Zmc2V0KSB7XG4gICAgICAgICAgb3B0aW9ucy5vZmZzZXQgPSB0aGlzLnBpeGVscy5jcmVhdGUodGhpcy5vZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNpemUpIHtcbiAgICAgICAgICBvcHRpb25zLnNpemUgPSB0aGlzLnNpemVzLmNyZWF0ZSh0aGlzLnNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnb3B0aW9uczonLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcy5jcmVhdGUob3B0aW9ucykuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZU9wZW4oKTtcbiAgICAgICAgICAgIHRoaXMubmFSZWFkeS5lbWl0KG0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnSW5mb1dpbmRvdyBpcyByZWFkeS4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuaGFzPGJvb2xlYW4+KCdpc09wZW4nKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVPcGVuKCkpO1xuICAgICAgemlwKGZpbHRlci5oYXM8YW55PignY29udGVudCcpLCBpdykuc3Vic2NyaWJlKChbdiwgd10pID0+IHcuc2V0Q29udGVudCh2KSk7XG4gICAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PEFNYXAuTG9jYXRpb25WYWx1ZT4oJ3Bvc2l0aW9uJyksIGl3KS5zdWJzY3JpYmUoKFt2LCB3XSkgPT5cbiAgICAgICAgdy5zZXRQb3NpdGlvbih2KSxcbiAgICAgICk7XG4gICAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PEFNYXAuU2l6ZVZhbHVlIHwgSVNpemU+KCdzaXplJyksIGl3KS5zdWJzY3JpYmUoKFt2LCB3XSkgPT5cbiAgICAgICAgdy5zZXRTaXplKHRoaXMuc2l6ZXMuY3JlYXRlKHYpKSxcbiAgICAgICk7XG4gICAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PEFNYXAuSW5mb1dpbmRvdy5BbmNob3I+KCdhbmNob3InKSwgaXcpLnN1YnNjcmliZSgoW3YsIHddKSA9PlxuICAgICAgICB3LnNldEFuY2hvcih2KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMub3MuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluW3suWIm+W7uueahCBBTWFwLkluZm9XaW5kb3cg5a+56LGhXG4gICAqL1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3MuZ2V0KCk7XG4gIH1cblxuICAvKipcbiAgICog5byA5YWz56qX5L2TXG4gICAqL1xuICB0b2dnbGVPcGVuKCkge1xuICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAndG9nZ2xlIG9wZW4nKTtcbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJk+W8gOeql+S9k1xuICAgKi9cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy5ob3N0TWFya2VyKSB7XG4gICAgICB0aGlzLm9zLm9wZW5Pbk1hcmsodGhpcy5ob3N0TWFya2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWFs+mXreeql+S9k1xuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5vcy5jbG9zZSgpO1xuICB9XG59XG4iXX0=