ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
328 lines • 23.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-marker-clusterer/amap-marker-clusterer.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, Input, Output, EventEmitter, ContentChildren, QueryList, NgZone, } from '@angular/core';
import { zip, combineLatest } from 'rxjs';
import { map } from 'rxjs/operators';
import { AmapMarkerClustererService } from './amap-marker-clusterer.service';
import { LoggerService } from '../../shared/logger/logger.service';
import { EventBinderService } from '../../shared/event-binder.service';
import { getOptions, ChangeFilter } from '../../utils';
import { PixelService } from '../../shared/pixel.service';
import { SizeService } from '../../shared/size.service';
import { AmapMarkerDirective } from '../amap-marker/amap-marker.directive';
import { AMapService } from '../../shared/amap.service';
/** @type {?} */
var TAG = 'amap-marker-clusterer';
/** @type {?} */
var MarkerClusterOptions = [
'gridSize',
'minClusterSize',
'maxZoom',
'averageCenter',
'styles',
'renderClusterMarker',
'zoomOnClick',
];
var AmapMarkerClustererDirective = /** @class */ (function () {
function AmapMarkerClustererDirective(os, binder, amaps, pixels, sizes, logger, ngZone) {
this.os = os;
this.binder = binder;
this.amaps = amaps;
this.pixels = pixels;
this.sizes = sizes;
this.logger = logger;
this.ngZone = ngZone;
// ---- Events ----
this.naReady = new EventEmitter();
// amap-marker directives:
this.markerList = new QueryList();
this.inited = false;
/** @type {?} */
var target = this.os.get();
this.naClick = this.binder.bindEvent(target, 'click');
}
/**
* @return {?}
*/
AmapMarkerClustererDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.os.destroy();
};
/**
* @return {?}
*/
AmapMarkerClustererDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.amaps.get().subscribe((/**
* @return {?}
*/
function () {
_this.logger.d(TAG, 'initializing ...');
/** @type {?} */
var options = getOptions(_this, MarkerClusterOptions);
if (options.styles) {
options.styles = options.styles.map((/**
* @param {?} style
* @return {?}
*/
function (style) {
if (style.size) {
style.size = (/** @type {?} */ (_this.sizes.create(style.size)));
}
if (style.offset) {
style.offset = _this.pixels.create(style.offset);
}
if (style.imageOffset) {
style.imageOffset = _this.pixels.create(style.imageOffset);
}
return style;
}));
}
_this.logger.d(TAG, 'options:', options);
_this.os.create(options).subscribe();
_this.inited = true;
}));
};
/**
* @param {?} changes
* @return {?}
*/
AmapMarkerClustererDirective.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (!this.inited) {
return;
}
/** @type {?} */
var filter = ChangeFilter.of(changes);
/** @type {?} */
var cluster = this.get();
zip(filter.notEmpty('gridSize'), cluster).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], c = _b[1];
return c.setGridSize(v);
}));
zip(filter.notEmpty('minClusterSize'), cluster).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], c = _b[1];
return c.setMinClusterSize(v);
}));
zip(filter.has('maxZoom'), cluster).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], c = _b[1];
return c.setMaxZoom(v);
}));
zip(filter.has('averageCenter'), cluster).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], c = _b[1];
return c.setAverageCenter(v);
}));
zip(filter.has('styles'), cluster).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], c = _b[1];
return c.setStyles(v);
}));
};
/**
* @return {?}
*/
AmapMarkerClustererDirective.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.updateMarkers().subscribe((/**
* @param {?} c
* @return {?}
*/
function (c) {
_this.ngZone.run((/**
* @return {?}
*/
function () { return _this.naReady.emit(c); }));
_this.logger.d(TAG, 'markerClusterer is ready.');
}));
this.markerList.changes.subscribe((/**
* @return {?}
*/
function () { return _this.updateMarkers().subscribe(); }));
};
/**
* @private
* @return {?}
*/
AmapMarkerClustererDirective.prototype.updateMarkers = /**
* @private
* @return {?}
*/
function () {
return zip(combineLatest(this.markerList.map((/**
* @param {?} d
* @return {?}
*/
function (d) { return d.get(); }))), this.get()).pipe(map((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), markers = _b[0], cluster = _b[1];
cluster.setMarkers(markers);
return cluster;
})));
};
/**
* 获取已创建的 AMap.MarkerClusterer 对象
*/
/**
* 获取已创建的 AMap.MarkerClusterer 对象
* @return {?}
*/
AmapMarkerClustererDirective.prototype.get = /**
* 获取已创建的 AMap.MarkerClusterer 对象
* @return {?}
*/
function () {
return this.os.get();
};
AmapMarkerClustererDirective.decorators = [
{ type: Directive, args: [{
selector: 'amap-marker-clusterer',
exportAs: 'marker-clusterer',
providers: [AmapMarkerClustererService],
},] }
];
/** @nocollapse */
AmapMarkerClustererDirective.ctorParameters = function () { return [
{ type: AmapMarkerClustererService },
{ type: EventBinderService },
{ type: AMapService },
{ type: PixelService },
{ type: SizeService },
{ type: LoggerService },
{ type: NgZone }
]; };
AmapMarkerClustererDirective.propDecorators = {
gridSize: [{ type: Input }],
minClusterSize: [{ type: Input }],
maxZoom: [{ type: Input }],
averageCenter: [{ type: Input }],
styles: [{ type: Input }],
renderClusterMarker: [{ type: Input }],
zoomOnClick: [{ type: Input }],
naReady: [{ type: Output }],
naClick: [{ type: Output }],
markerList: [{ type: ContentChildren, args: [AmapMarkerDirective,] }]
};
return AmapMarkerClustererDirective;
}());
export { AmapMarkerClustererDirective };
if (false) {
/**
* 聚合计算时网格的像素大小,默认60
* @type {?}
*/
AmapMarkerClustererDirective.prototype.gridSize;
/**
* 聚合的最小数量。默认值为2,即小于2个点则不能成为一个聚合
* @type {?}
*/
AmapMarkerClustererDirective.prototype.minClusterSize;
/**
* 最大的聚合级别,大于该级别就不进行相应的聚合。默认值为18
* @type {?}
*/
AmapMarkerClustererDirective.prototype.maxZoom;
/**
* 聚合点的图标位置是否是所有聚合内点的中心点。默认为否
* @type {?}
*/
AmapMarkerClustererDirective.prototype.averageCenter;
/**
* 指定聚合后的点标记的图标样式,可缺省,缺省时为默认样式
* @type {?}
*/
AmapMarkerClustererDirective.prototype.styles;
/**
* 该方法用来实现聚合点的自定义绘制
* @type {?}
*/
AmapMarkerClustererDirective.prototype.renderClusterMarker;
/**
* 点击聚合点时,是否散开,默认值为:true
* @type {?}
*/
AmapMarkerClustererDirective.prototype.zoomOnClick;
/** @type {?} */
AmapMarkerClustererDirective.prototype.naReady;
/** @type {?} */
AmapMarkerClustererDirective.prototype.naClick;
/** @type {?} */
AmapMarkerClustererDirective.prototype.markerList;
/**
* @type {?}
* @private
*/
AmapMarkerClustererDirective.prototype.inited;
/**
* @type {?}
* @protected
*/
AmapMarkerClustererDirective.prototype.os;
/**
* @type {?}
* @protected
*/
AmapMarkerClustererDirective.prototype.binder;
/**
* @type {?}
* @private
*/
AmapMarkerClustererDirective.prototype.amaps;
/**
* @type {?}
* @private
*/
AmapMarkerClustererDirective.prototype.pixels;
/**
* @type {?}
* @private
*/
AmapMarkerClustererDirective.prototype.sizes;
/**
* @type {?}
* @private
*/
AmapMarkerClustererDirective.prototype.logger;
/**
* @type {?}
* @private
*/
AmapMarkerClustererDirective.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1tYXJrZXItY2x1c3RlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9hbWFwLW1hcmtlci1jbHVzdGVyZXIvYW1hcC1tYXJrZXItY2x1c3RlcmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxNQUFNLEVBQ04sWUFBWSxFQUdaLGVBQWUsRUFDZixTQUFTLEVBRVQsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQUVsRCxHQUFHLEdBQUcsdUJBQXVCOztJQUM3QixvQkFBb0IsR0FBRztJQUMzQixVQUFVO0lBQ1YsZ0JBQWdCO0lBQ2hCLFNBQVM7SUFDVCxlQUFlO0lBQ2YsUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixhQUFhO0NBQ2Q7QUFFRDtJQWtERSxzQ0FDWSxFQUE4QixF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O2dCQUpYLGFBQWE7Z0JBTHBCLE1BQU07OzsyQkFtQ0wsS0FBSztpQ0FJTCxLQUFLOzBCQUlMLEtBQUs7Z0NBSUwsS0FBSzt5QkFJTCxLQUFLO3NDQUlMLEtBQUs7OEJBUUwsS0FBSzswQkFHTCxNQUFNOzBCQUNOLE1BQU07NkJBR04sZUFBZSxTQUFDLG1CQUFtQjs7SUFxRnRDLG1DQUFDO0NBQUEsQUFuSUQsSUFtSUM7U0E5SFksNEJBQTRCOzs7Ozs7SUFNdkMsZ0RBQTBCOzs7OztJQUkxQixzREFBZ0M7Ozs7O0lBSWhDLCtDQUF5Qjs7Ozs7SUFJekIscURBQWdDOzs7OztJQUloQyw4Q0FBbUQ7Ozs7O0lBSW5ELDJEQUlXOzs7OztJQUlYLG1EQUE4Qjs7SUFHOUIsK0NBQXVDOztJQUN2QywrQ0FBcUM7O0lBR3JDLGtEQUF3Rjs7Ozs7SUFFeEYsOENBQXVCOzs7OztJQUdyQiwwQ0FBd0M7Ozs7O0lBQ3hDLDhDQUFvQzs7Ozs7SUFDcEMsNkNBQTBCOzs7OztJQUMxQiw4Q0FBNEI7Ozs7O0lBQzVCLDZDQUEwQjs7Ozs7SUFDMUIsOENBQTZCOzs7OztJQUM3Qiw4Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB6aXAsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFtYXBNYXJrZXJDbHVzdGVyZXJTZXJ2aWNlLCBBTWFwTWFya2VyQ2x1c3RlcmVyIH0gZnJvbSAnLi9hbWFwLW1hcmtlci1jbHVzdGVyZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudEJpbmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXZlbnQtYmluZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0T3B0aW9ucywgQ2hhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGl4ZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpeGVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2l6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFtYXBNYXJrZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9hbWFwLW1hcmtlci9hbWFwLW1hcmtlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQU1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvYW1hcC5zZXJ2aWNlJztcblxuY29uc3QgVEFHID0gJ2FtYXAtbWFya2VyLWNsdXN0ZXJlcic7XG5jb25zdCBNYXJrZXJDbHVzdGVyT3B0aW9ucyA9IFtcbiAgJ2dyaWRTaXplJyxcbiAgJ21pbkNsdXN0ZXJTaXplJyxcbiAgJ21heFpvb20nLFxuICAnYXZlcmFnZUNlbnRlcicsXG4gICdzdHlsZXMnLFxuICAncmVuZGVyQ2x1c3Rlck1hcmtlcicsXG4gICd6b29tT25DbGljaycsXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhbWFwLW1hcmtlci1jbHVzdGVyZXInLFxuICBleHBvcnRBczogJ21hcmtlci1jbHVzdGVyZXInLFxuICBwcm92aWRlcnM6IFtBbWFwTWFya2VyQ2x1c3RlcmVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBNYXJrZXJDbHVzdGVyZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgLy8gLS0tLSBPcHRpb25zIC0tLS1cbiAgLyoqXG4gICAqIOiBmuWQiOiuoeeul+aXtue9keagvOeahOWDj+e0oOWkp+Wwj++8jOm7mOiupDYwXG4gICAqL1xuICBASW5wdXQoKSBncmlkU2l6ZTogbnVtYmVyO1xuICAvKipcbiAgICog6IGa5ZCI55qE5pyA5bCP5pWw6YeP44CC6buY6K6k5YC85Li6Mu+8jOWNs+Wwj+S6jjLkuKrngrnliJnkuI3og73miJDkuLrkuIDkuKrogZrlkIhcbiAgICovXG4gIEBJbnB1dCgpIG1pbkNsdXN0ZXJTaXplOiBudW1iZXI7XG4gIC8qKlxuICAgKiDmnIDlpKfnmoTogZrlkIjnuqfliKvvvIzlpKfkuo7or6XnuqfliKvlsLHkuI3ov5vooYznm7jlupTnmoTogZrlkIjjgILpu5jorqTlgLzkuLoxOFxuICAgKi9cbiAgQElucHV0KCkgbWF4Wm9vbTogbnVtYmVyO1xuICAvKipcbiAgICog6IGa5ZCI54K555qE5Zu+5qCH5L2N572u5piv5ZCm5piv5omA5pyJ6IGa5ZCI5YaF54K555qE5Lit5b+D54K544CC6buY6K6k5Li65ZCmXG4gICAqL1xuICBASW5wdXQoKSBhdmVyYWdlQ2VudGVyOiBib29sZWFuO1xuICAvKipcbiAgICog5oyH5a6a6IGa5ZCI5ZCO55qE54K55qCH6K6w55qE5Zu+5qCH5qC35byP77yM5Y+v57y655yB77yM57y655yB5pe25Li66buY6K6k5qC35byPXG4gICAqL1xuICBASW5wdXQoKSBzdHlsZXM6IEFNYXBNYXJrZXJDbHVzdGVyZXIuU3R5bGVPYmplY3RbXTtcbiAgLyoqXG4gICAqIOivpeaWueazleeUqOadpeWunueOsOiBmuWQiOeCueeahOiHquWumuS5iee7mOWItlxuICAgKi9cbiAgQElucHV0KCkgcmVuZGVyQ2x1c3Rlck1hcmtlcjogKG9iajoge1xuICAgIGNvdW50OiBudW1iZXI7XG4gICAgbWFya2VyczogQU1hcC5NYXJrZXI8YW55PltdO1xuICAgIG1hcmtlcjogQU1hcC5NYXJrZXI8YW55PjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIOeCueWHu+iBmuWQiOeCueaXtu+8jOaYr+WQpuaVo+W8gO+8jOm7mOiupOWAvOS4uu+8mnRydWVcbiAgICovXG4gIEBJbnB1dCgpIHpvb21PbkNsaWNrOiBib29sZWFuO1xuXG4gIC8vIC0tLS0gRXZlbnRzIC0tLS1cbiAgQE91dHB1dCgpIG5hUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBuYUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAvLyBhbWFwLW1hcmtlciBkaXJlY3RpdmVzOlxuICBAQ29udGVudENoaWxkcmVuKEFtYXBNYXJrZXJEaXJlY3RpdmUpIG1hcmtlckxpc3QgPSBuZXcgUXVlcnlMaXN0PEFtYXBNYXJrZXJEaXJlY3RpdmU+KCk7XG5cbiAgcHJpdmF0ZSBpbml0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3M6IEFtYXBNYXJrZXJDbHVzdGVyZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBiaW5kZXI6IEV2ZW50QmluZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGFtYXBzOiBBTWFwU2VydmljZSxcbiAgICBwcml2YXRlIHBpeGVsczogUGl4ZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2l6ZXM6IFNpemVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMub3MuZ2V0KCk7XG4gICAgdGhpcy5uYUNsaWNrID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHRhcmdldCwgJ2NsaWNrJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9zLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYW1hcHMuZ2V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnaW5pdGlhbGl6aW5nIC4uLicpO1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnM8QU1hcE1hcmtlckNsdXN0ZXJlci5PcHRpb25zPih0aGlzLCBNYXJrZXJDbHVzdGVyT3B0aW9ucyk7XG4gICAgICBpZiAob3B0aW9ucy5zdHlsZXMpIHtcbiAgICAgICAgb3B0aW9ucy5zdHlsZXMgPSBvcHRpb25zLnN0eWxlcy5tYXAoc3R5bGUgPT4ge1xuICAgICAgICAgIGlmIChzdHlsZS5zaXplKSB7XG4gICAgICAgICAgICBzdHlsZS5zaXplID0gdGhpcy5zaXplcy5jcmVhdGUoc3R5bGUuc2l6ZSkgYXMgQU1hcC5TaXplO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3R5bGUub2Zmc2V0KSB7XG4gICAgICAgICAgICBzdHlsZS5vZmZzZXQgPSB0aGlzLnBpeGVscy5jcmVhdGUoc3R5bGUub2Zmc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0eWxlLmltYWdlT2Zmc2V0KSB7XG4gICAgICAgICAgICBzdHlsZS5pbWFnZU9mZnNldCA9IHRoaXMucGl4ZWxzLmNyZWF0ZShzdHlsZS5pbWFnZU9mZnNldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ29wdGlvbnM6Jywgb3B0aW9ucyk7XG4gICAgICB0aGlzLm9zLmNyZWF0ZShvcHRpb25zKS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCBjbHVzdGVyID0gdGhpcy5nZXQoKTtcbiAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PG51bWJlcj4oJ2dyaWRTaXplJyksIGNsdXN0ZXIpLnN1YnNjcmliZSgoW3YsIGNdKSA9PiBjLnNldEdyaWRTaXplKHYpKTtcbiAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PG51bWJlcj4oJ21pbkNsdXN0ZXJTaXplJyksIGNsdXN0ZXIpLnN1YnNjcmliZSgoW3YsIGNdKSA9PlxuICAgICAgYy5zZXRNaW5DbHVzdGVyU2l6ZSh2KSxcbiAgICApO1xuICAgIHppcChmaWx0ZXIuaGFzPG51bWJlcj4oJ21heFpvb20nKSwgY2x1c3Rlcikuc3Vic2NyaWJlKChbdiwgY10pID0+IGMuc2V0TWF4Wm9vbSh2KSk7XG4gICAgemlwKGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2F2ZXJhZ2VDZW50ZXInKSwgY2x1c3Rlcikuc3Vic2NyaWJlKChbdiwgY10pID0+IGMuc2V0QXZlcmFnZUNlbnRlcih2KSk7XG4gICAgemlwKGZpbHRlci5oYXM8QU1hcE1hcmtlckNsdXN0ZXJlci5TdHlsZU9iamVjdFtdPignc3R5bGVzJyksIGNsdXN0ZXIpLnN1YnNjcmliZSgoW3YsIGNdKSA9PlxuICAgICAgYy5zZXRTdHlsZXModiksXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZU1hcmtlcnMoKS5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5uYVJlYWR5LmVtaXQoYykpO1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdtYXJrZXJDbHVzdGVyZXIgaXMgcmVhZHkuJyk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrZXJMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlTWFya2VycygpLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFya2VycygpIHtcbiAgICByZXR1cm4gemlwKGNvbWJpbmVMYXRlc3QodGhpcy5tYXJrZXJMaXN0Lm1hcChkID0+IGQuZ2V0KCkpKSwgdGhpcy5nZXQoKSkucGlwZShcbiAgICAgIG1hcCgoW21hcmtlcnMsIGNsdXN0ZXJdKSA9PiB7XG4gICAgICAgIGNsdXN0ZXIuc2V0TWFya2VycyhtYXJrZXJzKTtcbiAgICAgICAgcmV0dXJuIGNsdXN0ZXI7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluW3suWIm+W7uueahCBBTWFwLk1hcmtlckNsdXN0ZXJlciDlr7nosaFcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcy5nZXQoKTtcbiAgfVxufVxuIl19