ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
85 lines • 6.07 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: shared/amap-plugin-loader.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { switchMap } from 'rxjs/operators';
import { LoggerService } from './logger/logger.service';
import { AMapLoaderService } from './amap-loader.service';
/** @type {?} */
const TAG = 'PluginLoader';
export class AmapPluginLoaderService {
/**
* @param {?} mapLoader
* @param {?} logger
*/
constructor(mapLoader, logger) {
this.mapLoader = mapLoader;
this.logger = logger;
this.state = new Map();
}
/**
* 加载一个或多个插件
* @param {?} name
* @return {?}
*/
load(name) {
/** @type {?} */
let pKey = '';
if (Array.isArray(name)) {
pKey = name.join(',');
}
else {
pKey = name;
}
if (this.state.has(pKey)) {
return this.state.get(pKey).asObservable();
}
this.logger.d(TAG, 'loading plugin:', pKey, '...');
return this.mapLoader.load().pipe(switchMap((/**
* @return {?}
*/
() => {
/** @type {?} */
const loading$ = new ReplaySubject(1);
AMap.plugin(name, (/**
* @return {?}
*/
() => {
this.logger.d(TAG, 'loading plugin:', pKey, 'COMPLETE');
loading$.next();
loading$.complete();
}));
this.state.set(pKey, loading$);
return loading$.asObservable();
})));
}
}
AmapPluginLoaderService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AmapPluginLoaderService.ctorParameters = () => [
{ type: AMapLoaderService },
{ type: LoggerService }
];
if (false) {
/**
* @type {?}
* @private
*/
AmapPluginLoaderService.prototype.state;
/**
* @type {?}
* @private
*/
AmapPluginLoaderService.prototype.mapLoader;
/**
* @type {?}
* @private
*/
AmapPluginLoaderService.prototype.logger;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1wbHVnaW4tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbInNoYXJlZC9hbWFwLXBsdWdpbi1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztNQUVwRCxHQUFHLEdBQUcsY0FBYztBQUcxQixNQUFNLE9BQU8sdUJBQXVCOzs7OztJQUdsQyxZQUFvQixTQUE0QixFQUFVLE1BQXFCO1FBQTNELGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUZ2RSxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFFMkIsQ0FBQzs7Ozs7O0lBS25GLElBQUksQ0FBQyxJQUF1Qjs7WUFDdEIsSUFBSSxHQUFHLEVBQUU7UUFDYixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLElBQUksR0FBRyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FDL0IsU0FBUzs7O1FBQUMsR0FBRyxFQUFFOztrQkFDUCxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTs7O1lBQUUsR0FBRyxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixDQUFDLEVBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQixPQUFPLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNqQyxDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7O1lBakNGLFVBQVU7Ozs7WUFKRixpQkFBaUI7WUFEakIsYUFBYTs7Ozs7OztJQU9wQix3Q0FBdUQ7Ozs7O0lBRTNDLDRDQUFvQzs7Ozs7SUFBRSx5Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQU1hcExvYWRlclNlcnZpY2UgfSBmcm9tICcuL2FtYXAtbG9hZGVyLnNlcnZpY2UnO1xuXG5jb25zdCBUQUcgPSAnUGx1Z2luTG9hZGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFtYXBQbHVnaW5Mb2FkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0ZSA9IG5ldyBNYXA8c3RyaW5nLCBSZXBsYXlTdWJqZWN0PHZvaWQ+PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwTG9hZGVyOiBBTWFwTG9hZGVyU2VydmljZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIOWKoOi9veS4gOS4quaIluWkmuS4quaPkuS7tlxuICAgKi9cbiAgbG9hZChuYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBwS2V5ID0gJyc7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmFtZSkpIHtcbiAgICAgIHBLZXkgPSBuYW1lLmpvaW4oJywnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcEtleSA9IG5hbWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlLmhhcyhwS2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2V0KHBLZXkpLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbG9hZGluZyBwbHVnaW46JywgcEtleSwgJy4uLicpO1xuICAgIHJldHVybiB0aGlzLm1hcExvYWRlci5sb2FkKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvYWRpbmckID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgICAgIEFNYXAucGx1Z2luKG5hbWUsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2xvYWRpbmcgcGx1Z2luOicsIHBLZXksICdDT01QTEVURScpO1xuICAgICAgICAgIGxvYWRpbmckLm5leHQoKTtcbiAgICAgICAgICBsb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQocEtleSwgbG9hZGluZyQpO1xuICAgICAgICByZXR1cm4gbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=