ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
293 lines • 16 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: services/amap-autocomplete/amap-autocomplete.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, NgZone } from '@angular/core';
import { ReplaySubject, Observable } from 'rxjs';
import { map, switchMap } from 'rxjs/operators';
import { AmapPluginLoaderService } from '../../shared/amap-plugin-loader.service';
import { EventBinderService } from '../../shared/event-binder.service';
import { LoggerService } from '../../shared/logger/logger.service';
import * as i0 from "@angular/core";
import * as i1 from "../../shared/amap-plugin-loader.service";
import * as i2 from "../../shared/event-binder.service";
import * as i3 from "../../shared/logger/logger.service";
/** @type {?} */
var TAG = 'AmapAutocomplete';
export var AMapAutocomplete;
(function (AMapAutocomplete) {
/**
* @record
*/
function Options() { }
AMapAutocomplete.Options = Options;
if (false) {
/**
* 输入提示时限定POI类型,多个类型用“|”分隔
* @type {?|undefined}
*/
Options.prototype.type;
/**
* 输入提示时限定城市
* @type {?|undefined}
*/
Options.prototype.city;
/**
* 返回的数据类型
* @type {?|undefined}
*/
Options.prototype.datatype;
/**
* 是否强制限制在设置的城市内搜索
* @type {?|undefined}
*/
Options.prototype.citylimit;
/**
* 指定输入框
* @type {?|undefined}
*/
Options.prototype.input;
/**
* 指定输出面板
* @type {?|undefined}
*/
Options.prototype.output;
/**
* 是否在input位于页面较下方的时候自动将输入面板显示在input上方以避免被遮挡
* @type {?|undefined}
*/
Options.prototype.outPutDirAuto;
}
/**
* @record
*/
function Tip() { }
AMapAutocomplete.Tip = Tip;
if (false) {
/**
* 名称
* @type {?}
*/
Tip.prototype.name;
/**
* 所属区域
* @type {?}
*/
Tip.prototype.district;
/**
* 区域编码
* @type {?}
*/
Tip.prototype.adcode;
/**
* 地址
* @type {?}
*/
Tip.prototype.address;
/**
* 城市
* @type {?}
*/
Tip.prototype.city;
/**
* ID
* @type {?}
*/
Tip.prototype.id;
/**
* 坐标经纬度
* @type {?}
*/
Tip.prototype.location;
/**
* 类型编码
* @type {?}
*/
Tip.prototype.typecode;
}
/**
* @record
*/
function SearchResult() { }
AMapAutocomplete.SearchResult = SearchResult;
if (false) {
/**
* 查询状态说明
* @type {?}
*/
SearchResult.prototype.info;
/**
* 输入提示条数
* @type {?}
*/
SearchResult.prototype.count;
/**
* 输入提示列表
* @type {?}
*/
SearchResult.prototype.tips;
}
})(AMapAutocomplete || (AMapAutocomplete = {}));
/**
* @record
*/
export function AutocompleteSearchResult() { }
if (false) {
/** @type {?} */
AutocompleteSearchResult.prototype.status;
/** @type {?} */
AutocompleteSearchResult.prototype.result;
}
var AmapAutocompleteService = /** @class */ (function () {
function AmapAutocompleteService(plugin, binder, logger, ngZone) {
this.plugin = plugin;
this.binder = binder;
this.logger = logger;
this.ngZone = ngZone;
this.ac$ = new ReplaySubject(1);
}
/**
* 获取插件
*/
/**
* 获取插件
* @return {?}
*/
AmapAutocompleteService.prototype.get = /**
* 获取插件
* @return {?}
*/
function () {
return this.ac$.asObservable();
};
/**
* 侦听事件
*/
/**
* 侦听事件
* @param {?} event
* @return {?}
*/
AmapAutocompleteService.prototype.on = /**
* 侦听事件
* @param {?} event
* @return {?}
*/
function (event) {
return this.binder.bindEvent(this.get(), event);
};
/**
* 创建插件
*/
/**
* 创建插件
* @param {?} options
* @return {?}
*/
AmapAutocompleteService.prototype.create = /**
* 创建插件
* @param {?} options
* @return {?}
*/
function (options) {
var _this = this;
return this.plugin.load('AMap.Autocomplete').pipe(map((/**
* @return {?}
*/
function () {
_this.ac = _this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () { return new AMap.Autocomplete(options); }));
_this.logger.d(TAG, 'new autocomplete created.');
_this.ac$.next(_this.ac);
_this.ac$.complete();
return _this.ac;
})));
};
/**
* 搜索
*/
/**
* 搜索
* @param {?} address
* @return {?}
*/
AmapAutocompleteService.prototype.search = /**
* 搜索
* @param {?} address
* @return {?}
*/
function (address) {
return this.get().pipe(switchMap((/**
* @param {?} ac
* @return {?}
*/
function (ac) {
return new Observable((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
ac.search(address, (/**
* @param {?} status
* @param {?} result
* @return {?}
*/
function (status, result) {
observer.next({ status: status, result: result });
observer.complete();
}));
}));
})));
};
AmapAutocompleteService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
/** @nocollapse */
AmapAutocompleteService.ctorParameters = function () { return [
{ type: AmapPluginLoaderService },
{ type: EventBinderService },
{ type: LoggerService },
{ type: NgZone }
]; };
/** @nocollapse */ AmapAutocompleteService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AmapAutocompleteService_Factory() { return new AmapAutocompleteService(i0.ɵɵinject(i1.AmapPluginLoaderService), i0.ɵɵinject(i2.EventBinderService), i0.ɵɵinject(i3.LoggerService), i0.ɵɵinject(i0.NgZone)); }, token: AmapAutocompleteService, providedIn: "root" });
return AmapAutocompleteService;
}());
export { AmapAutocompleteService };
if (false) {
/**
* @type {?}
* @private
*/
AmapAutocompleteService.prototype.ac;
/**
* @type {?}
* @private
*/
AmapAutocompleteService.prototype.ac$;
/**
* @type {?}
* @private
*/
AmapAutocompleteService.prototype.plugin;
/**
* @type {?}
* @private
*/
AmapAutocompleteService.prototype.binder;
/**
* @type {?}
* @private
*/
AmapAutocompleteService.prototype.logger;
/**
* @type {?}
* @private
*/
AmapAutocompleteService.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1hdXRvY29tcGxldGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsic2VydmljZXMvYW1hcC1hdXRvY29tcGxldGUvYW1hcC1hdXRvY29tcGxldGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7SUFJN0QsR0FBRyxHQUFHLGtCQUFrQjtBQUU5QixNQUFNLEtBQVcsZ0JBQWdCLENBaUZoQztBQWpGRCxXQUFpQixnQkFBZ0I7Ozs7SUFFL0Isc0JBNkJDOzs7Ozs7O1FBekJDLHVCQUFjOzs7OztRQUlkLHVCQUFjOzs7OztRQUlkLDJCQUFvQjs7Ozs7UUFJcEIsNEJBQW9COzs7OztRQUlwQix3QkFBa0M7Ozs7O1FBSWxDLHlCQUFpQzs7Ozs7UUFJakMsZ0NBQXdCOzs7OztJQUUxQixrQkFpQ0M7Ozs7Ozs7UUE3QkMsbUJBQWE7Ozs7O1FBSWIsdUJBQWlCOzs7OztRQUlqQixxQkFBZTs7Ozs7UUFJZixzQkFBZ0I7Ozs7O1FBSWhCLG1CQUFZOzs7OztRQUlaLGlCQUFXOzs7OztRQUlYLHVCQUFzQjs7Ozs7UUFJdEIsdUJBQWlCOzs7OztJQUVuQiwyQkFhQzs7Ozs7OztRQVRDLDRCQUFhOzs7OztRQUliLDZCQUFjOzs7OztRQUlkLDRCQUFZOztBQUdoQixDQUFDLEVBakZnQixnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBaUZoQzs7OztBQUVELDhDQUdDOzs7SUFGQywwQ0FBc0M7O0lBQ3RDLDBDQUErQzs7QUFHakQ7SUFPRSxpQ0FDVSxNQUErQixFQUMvQixNQUEwQixFQUMxQixNQUFxQixFQUNyQixNQUFjO1FBSGQsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTmhCLFFBQUcsR0FBRyxJQUFJLGFBQWEsQ0FBTSxDQUFDLENBQUMsQ0FBQztJQU9yQyxDQUFDO0lBRUo7O09BRUc7Ozs7O0lBQ0gscUNBQUc7Ozs7SUFBSDtRQUNFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNILG9DQUFFOzs7OztJQUFGLFVBQUcsS0FBYTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRzs7Ozs7O0lBQ0gsd0NBQU07Ozs7O0lBQU4sVUFBTyxPQUFpQztRQUF4QyxpQkFVQztRQVRDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQy9DLEdBQUc7OztRQUFDO1lBQ0YsS0FBSSxDQUFDLEVBQUUsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjs7O1lBQUMsY0FBTSxPQUFBLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBOUIsQ0FBOEIsRUFBQyxDQUFDO1lBQzlFLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1lBQ2hELEtBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixLQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSSxDQUFDLEVBQUUsQ0FBQztRQUNqQixDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSCx3Q0FBTTs7Ozs7SUFBTixVQUFPLE9BQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNwQixTQUFTOzs7O1FBQ1AsVUFBQSxFQUFFO1lBQ0EsT0FBQSxJQUFJLFVBQVU7Ozs7WUFBQyxVQUFDLFFBQThDO2dCQUM1RCxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU87Ozs7O2dCQUFFLFVBQUMsTUFBTSxFQUFFLE1BQU07b0JBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLFFBQUEsRUFBRSxNQUFNLFFBQUEsRUFBRSxDQUFDLENBQUM7b0JBQ2xDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxFQUFDLENBQUM7WUFDTCxDQUFDLEVBQUM7UUFMRixDQUtFLEVBQ0wsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBMURGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBbEdRLHVCQUF1QjtnQkFDdkIsa0JBQWtCO2dCQUNsQixhQUFhO2dCQUxELE1BQU07OztrQ0FBM0I7Q0E4SkMsQUEzREQsSUEyREM7U0F4RFksdUJBQXVCOzs7Ozs7SUFDbEMscUNBQWdCOzs7OztJQUNoQixzQ0FBd0M7Ozs7O0lBR3RDLHlDQUF1Qzs7Ozs7SUFDdkMseUNBQWtDOzs7OztJQUNsQyx5Q0FBNkI7Ozs7O0lBQzdCLHlDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbWFwUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLXBsdWdpbi1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudEJpbmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXZlbnQtYmluZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5jb25zdCBUQUcgPSAnQW1hcEF1dG9jb21wbGV0ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQU1hcEF1dG9jb21wbGV0ZSB7XG4gIGV4cG9ydCB0eXBlIERhdGFUeXBlID0gJ2FsbCcgfCAnYnVzJyB8ICdwb2knIHwgJ2J1c2xpbmUnO1xuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIOi+k+WFpeaPkOekuuaXtumZkOWumlBPSeexu+Wei++8jOWkmuS4quexu+Wei+eUqOKAnHzigJ3liIbpmpRcbiAgICAgKi9cbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIOi+k+WFpeaPkOekuuaXtumZkOWumuWfjuW4glxuICAgICAqL1xuICAgIGNpdHk/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICog6L+U5Zue55qE5pWw5o2u57G75Z6LXG4gICAgICovXG4gICAgZGF0YXR5cGU/OiBEYXRhVHlwZTtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblvLrliLbpmZDliLblnKjorr7nva7nmoTln47luILlhoXmkJzntKJcbiAgICAgKi9cbiAgICBjaXR5bGltaXQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIOaMh+Wumui+k+WFpeahhlxuICAgICAqL1xuICAgIGlucHV0Pzogc3RyaW5nIHwgSFRNTElucHV0RWxlbWVudDtcbiAgICAvKipcbiAgICAgKiDmjIflrprovpPlh7rpnaLmnb9cbiAgICAgKi9cbiAgICBvdXRwdXQ/OiBzdHJpbmcgfCBIVE1MRGl2RWxlbWVudDtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblnKhpbnB1dOS9jeS6jumhtemdoui+g+S4i+aWueeahOaXtuWAmeiHquWKqOWwhui+k+WFpemdouadv+aYvuekuuWcqGlucHV05LiK5pa55Lul6YG/5YWN6KKr6YGu5oyhXG4gICAgICovXG4gICAgb3V0UHV0RGlyQXV0bz86IGJvb2xlYW47XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBUaXAge1xuICAgIC8qKlxuICAgICAqIOWQjeensFxuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiDmiYDlsZ7ljLrln59cbiAgICAgKi9cbiAgICBkaXN0cmljdDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIOWMuuWfn+e8lueggVxuICAgICAqL1xuICAgIGFkY29kZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIOWcsOWdgFxuICAgICAqL1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiDln47luIJcbiAgICAgKi9cbiAgICBjaXR5OiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBJRFxuICAgICAqL1xuICAgIGlkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICog5Z2Q5qCH57uP57qs5bqmXG4gICAgICovXG4gICAgbG9jYXRpb246IEFNYXAuTG5nTGF0O1xuICAgIC8qKlxuICAgICAqIOexu+Wei+e8lueggVxuICAgICAqL1xuICAgIHR5cGVjb2RlOiBzdHJpbmc7XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBTZWFyY2hSZXN1bHQge1xuICAgIC8qKlxuICAgICAqIOafpeivoueKtuaAgeivtOaYjlxuICAgICAqL1xuICAgIGluZm86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiDovpPlhaXmj5DnpLrmnaHmlbBcbiAgICAgKi9cbiAgICBjb3VudDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIOi+k+WFpeaPkOekuuWIl+ihqFxuICAgICAqL1xuICAgIHRpcHM6IFRpcFtdO1xuICB9XG4gIGV4cG9ydCB0eXBlIFNlYXJjaFN0YXR1cyA9ICdjb21wbGV0ZScgfCAnZXJyb3InIHwgJ25vX2RhdGEnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdCB7XG4gIHN0YXR1czogQU1hcEF1dG9jb21wbGV0ZS5TZWFyY2hTdGF0dXM7XG4gIHJlc3VsdDogc3RyaW5nIHwgQU1hcEF1dG9jb21wbGV0ZS5TZWFyY2hSZXN1bHQ7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBbWFwQXV0b2NvbXBsZXRlU2VydmljZSBpbXBsZW1lbnRzIEdldHRlcjxhbnk+IHtcbiAgcHJpdmF0ZSBhYzogYW55O1xuICBwcml2YXRlIGFjJCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IEFtYXBQbHVnaW5Mb2FkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiDojrflj5bmj5Lku7ZcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5hYyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5L6m5ZCs5LqL5Lu2XG4gICAqL1xuICBvbihldmVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYmluZGVyLmJpbmRFdmVudCh0aGlzLmdldCgpLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65o+S5Lu2XG4gICAqL1xuICBjcmVhdGUob3B0aW9uczogQU1hcEF1dG9jb21wbGV0ZS5PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLmxvYWQoJ0FNYXAuQXV0b2NvbXBsZXRlJykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWMgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgQU1hcC5BdXRvY29tcGxldGUob3B0aW9ucykpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ25ldyBhdXRvY29tcGxldGUgY3JlYXRlZC4nKTtcbiAgICAgICAgdGhpcy5hYyQubmV4dCh0aGlzLmFjKTtcbiAgICAgICAgdGhpcy5hYyQuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOaQnOe0olxuICAgKi9cbiAgc2VhcmNoKGFkZHJlc3M6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoXG4gICAgICAgIGFjID0+XG4gICAgICAgICAgbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBTdWJzY3JpYmVyPEF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdD4pID0+IHtcbiAgICAgICAgICAgIGFjLnNlYXJjaChhZGRyZXNzLCAoc3RhdHVzLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IHN0YXR1cywgcmVzdWx0IH0pO1xuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==