@ngx-performance-ui/core
Version:
Ngx Performance UI - Core
61 lines • 5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Inject } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { DOCUMENT } from '@angular/common';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class LazyLoadScriptService {
/**
* @param {?} document
*/
constructor(document) {
this.document = document;
this._loadedLibraries = {};
}
/**
* @param {?} url
* @return {?}
*/
loadScript(url) {
if (this._loadedLibraries[url]) {
return this._loadedLibraries[url].asObservable();
}
this._loadedLibraries[url] = new ReplaySubject();
/** @type {?} */
const script = this.document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.onload = (/**
* @return {?}
*/
() => {
this._loadedLibraries[url].next();
this._loadedLibraries[url].complete();
});
this.document.body.appendChild(script);
return this._loadedLibraries[url].asObservable();
}
}
LazyLoadScriptService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
/** @nocollapse */
LazyLoadScriptService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
];
/** @nocollapse */ LazyLoadScriptService.ngInjectableDef = i0.defineInjectable({ factory: function LazyLoadScriptService_Factory() { return new LazyLoadScriptService(i0.inject(i1.DOCUMENT)); }, token: LazyLoadScriptService, providedIn: "root" });
if (false) {
/** @type {?} */
LazyLoadScriptService.prototype._loadedLibraries;
/**
* @type {?}
* @private
*/
LazyLoadScriptService.prototype.document;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLXNjcmlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wZXJmb3JtYW5jZS11aS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2xhenktbG9hZC1zY3JpcHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUszQyxNQUFNLE9BQU8scUJBQXFCOzs7O0lBR2hDLFlBQStDLFFBQWE7UUFBYixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBRjVELHFCQUFnQixHQUEwQyxFQUFFLENBQUM7SUFFRSxDQUFDOzs7OztJQUVoRSxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNsRDtRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDOztjQUUzQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsTUFBTSxDQUFDLE1BQU07OztRQUFHLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLENBQUMsQ0FBQSxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7OztZQTFCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7NENBSWMsTUFBTSxTQUFDLFFBQVE7Ozs7O0lBRjVCLGlEQUE2RDs7Ozs7SUFFakQseUNBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMYXp5TG9hZFNjcmlwdFNlcnZpY2Uge1xuICBfbG9hZGVkTGlicmFyaWVzOiB7IFt1cmw6IHN0cmluZ106IFJlcGxheVN1YmplY3Q8YW55PiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogYW55KSB7fVxuXG4gIGxvYWRTY3JpcHQodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLl9sb2FkZWRMaWJyYXJpZXNbdXJsXSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xvYWRlZExpYnJhcmllc1t1cmxdLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX2xvYWRlZExpYnJhcmllc1t1cmxdID0gbmV3IFJlcGxheVN1YmplY3QoKTtcblxuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9sb2FkZWRMaWJyYXJpZXNbdXJsXS5uZXh0KCk7XG4gICAgICB0aGlzLl9sb2FkZWRMaWJyYXJpZXNbdXJsXS5jb21wbGV0ZSgpO1xuICAgIH07XG5cbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuICAgIHJldHVybiB0aGlzLl9sb2FkZWRMaWJyYXJpZXNbdXJsXS5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuXG4vKiBVc2FnZVxudGhpcy5sYXp5TG9hZFNlcnZpY2UubG9hZFNjcmlwdCgnL2Fzc2V0cy9zY3JpcHRzL3NvbWUtc2NyaXB0LmpzJykuc3Vic2NyaWJlKCgpID0+IHtcbiAgLy8gY29kZVxufSk7XG4qL1xuIl19