@ng-maps/core
Version:
**@ng-maps/core** is a simple, modular and tree-shakable library for displaying google-maps inside an angular application
101 lines • 12 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { Inject, Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class ScriptLoaderService {
constructor(document) {
this.alreadyLoaded = new Map();
this.document = document;
this.head = this.document.head;
}
observeLoad(element) {
return new Promise((resolve, reject) => {
function successHandler(event) {
const readyState = element.readyState;
// For IE we have readyState, other browsers just call the load event and we proccede
if (readyState === 'complete' ||
readyState === 'loaded' ||
event.type === 'load') {
resolve(event);
}
}
function errorHandler(event) {
reject(event);
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
element.addEventListener('readystatechange', successHandler);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
element.addEventListener('load', successHandler);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
element.addEventListener('error', errorHandler);
});
}
createScriptElement(src) {
const script = document.createElement('script');
script.src = src;
script.type = 'text/javascript';
script.async = true;
script.defer = true;
return script;
}
// eslint-disable-next-line
createCSSElement(href) {
const style = document.createElement('link');
style.rel = 'stylesheet';
style.type = 'text/css';
style.href = href;
return style;
}
/**
* Dynamically loads the given script
*
* @param src The url of the script to load dynamically
* @param integrity set integrity check value
* @returns Observable<UIEvent> Observable that will be resolved once the script has been loaded.
*/
loadScript(src, integrity) {
if (this.alreadyLoaded.has(src)) {
return this.alreadyLoaded.get(src);
}
else {
const script = this.createScriptElement(src);
const promise = this.observeLoad(script);
this.head.appendChild(script);
this.alreadyLoaded.set(src, promise);
return promise;
}
}
/**
* Dynamically loads the given CSS file
*
* @param href The url of the CSS to load dynamically
* @returns Observable<UIEvent> Promise that will be resolved once the CSS file has been loaded.
*/
loadCSS(href) {
// eslint-disable-line
if (this.alreadyLoaded.has(href)) {
return this.alreadyLoaded.get(href);
}
else {
const style = this.createCSSElement(href);
const promise = this.observeLoad(style);
this.head.appendChild(style);
this.alreadyLoaded.set(href, promise);
return promise;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScriptLoaderService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScriptLoaderService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScriptLoaderService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvc2NyaXB0LWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUE4QixRQUFhO1FBRm5DLGtCQUFhLEdBQThCLElBQUksR0FBRyxFQUFFLENBQUM7UUFHM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFvQixDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVPLFdBQVcsQ0FDakIsT0FBNEM7UUFFNUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxTQUFTLGNBQWMsQ0FBQyxLQUFjO2dCQUNwQyxNQUFNLFVBQVUsR0FBWSxPQUFlLENBQUMsVUFBVSxDQUFDO2dCQUN2RCxxRkFBcUY7Z0JBQ3JGLElBQ0UsVUFBVSxLQUFLLFVBQVU7b0JBQ3pCLFVBQVUsS0FBSyxRQUFRO29CQUN2QixLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFDckIsQ0FBQztvQkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDO1lBRUQsU0FBUyxZQUFZLENBQUMsS0FBYztnQkFDbEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUM7WUFFRCw2REFBNkQ7WUFDN0QsYUFBYTtZQUNiLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUM3RCw2REFBNkQ7WUFDN0QsYUFBYTtZQUNiLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDakQsNkRBQTZEO1lBQzdELGFBQWE7WUFDYixPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVc7UUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwyQkFBMkI7SUFDbkIsZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWxCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBQyxHQUFXLEVBQUUsU0FBa0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLHNCQUFzQjtRQUN0QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN0QyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQzs4R0FsR1UsbUJBQW1CLGtCQUtWLFFBQVE7a0hBTGpCLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNYyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjcmlwdExvYWRlclNlcnZpY2Uge1xuICBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIGhlYWQ6IEhUTUxIZWFkRWxlbWVudDtcbiAgcHJpdmF0ZSBhbHJlYWR5TG9hZGVkOiBNYXA8c3RyaW5nLCBQcm9taXNlPGFueT4+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnkpIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQgYXMgRG9jdW1lbnQ7XG4gICAgdGhpcy5oZWFkID0gdGhpcy5kb2N1bWVudC5oZWFkO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTG9hZChcbiAgICBlbGVtZW50OiBIVE1MU2NyaXB0RWxlbWVudCB8IEhUTUxMaW5rRWxlbWVudCxcbiAgKTogUHJvbWlzZTxVSUV2ZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGZ1bmN0aW9uIHN1Y2Nlc3NIYW5kbGVyKGV2ZW50OiBVSUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHJlYWR5U3RhdGU6IHN0cmluZyA9IChlbGVtZW50IGFzIGFueSkucmVhZHlTdGF0ZTtcbiAgICAgICAgLy8gRm9yIElFIHdlIGhhdmUgcmVhZHlTdGF0ZSwgb3RoZXIgYnJvd3NlcnMganVzdCBjYWxsIHRoZSBsb2FkIGV2ZW50IGFuZCB3ZSBwcm9jY2VkZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fFxuICAgICAgICAgIHJlYWR5U3RhdGUgPT09ICdsb2FkZWQnIHx8XG4gICAgICAgICAgZXZlbnQudHlwZSA9PT0gJ2xvYWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc29sdmUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGVycm9ySGFuZGxlcihldmVudDogVUlFdmVudCkge1xuICAgICAgICByZWplY3QoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCBzdWNjZXNzSGFuZGxlcik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdWNjZXNzSGFuZGxlcik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JIYW5kbGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU2NyaXB0RWxlbWVudChzcmM6IHN0cmluZyk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgIHJldHVybiBzY3JpcHQ7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJpdmF0ZSBjcmVhdGVDU1NFbGVtZW50KGhyZWY6IHN0cmluZyk6IEhUTUxMaW5rRWxlbWVudCB7XG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG5cbiAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgc3R5bGUuaHJlZiA9IGhyZWY7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogRHluYW1pY2FsbHkgbG9hZHMgdGhlIGdpdmVuIHNjcmlwdFxuICAgKlxuICAgKiBAcGFyYW0gc3JjIFRoZSB1cmwgb2YgdGhlIHNjcmlwdCB0byBsb2FkIGR5bmFtaWNhbGx5XG4gICAqIEBwYXJhbSBpbnRlZ3JpdHkgc2V0IGludGVncml0eSBjaGVjayB2YWx1ZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFVJRXZlbnQ+IE9ic2VydmFibGUgdGhhdCB3aWxsIGJlIHJlc29sdmVkIG9uY2UgdGhlIHNjcmlwdCBoYXMgYmVlbiBsb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgbG9hZFNjcmlwdChzcmM6IHN0cmluZywgaW50ZWdyaXR5Pzogc3RyaW5nKTogUHJvbWlzZTxVSUV2ZW50IHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLmFscmVhZHlMb2FkZWQuaGFzKHNyYykpIHtcbiAgICAgIHJldHVybiB0aGlzLmFscmVhZHlMb2FkZWQuZ2V0KHNyYykhO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmNyZWF0ZVNjcmlwdEVsZW1lbnQoc3JjKTtcbiAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLm9ic2VydmVMb2FkKHNjcmlwdCk7XG4gICAgICB0aGlzLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgIHRoaXMuYWxyZWFkeUxvYWRlZC5zZXQoc3JjLCBwcm9taXNlKTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBsb2FkcyB0aGUgZ2l2ZW4gQ1NTIGZpbGVcbiAgICpcbiAgICogQHBhcmFtIGhyZWYgVGhlIHVybCBvZiB0aGUgQ1NTIHRvIGxvYWQgZHluYW1pY2FsbHlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxVSUV2ZW50PiBQcm9taXNlIHRoYXQgd2lsbCBiZSByZXNvbHZlZCBvbmNlIHRoZSBDU1MgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgbG9hZENTUyhocmVmOiBzdHJpbmcpOiBQcm9taXNlPFVJRXZlbnQgfCB2b2lkPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGlmICh0aGlzLmFscmVhZHlMb2FkZWQuaGFzKGhyZWYpKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbHJlYWR5TG9hZGVkLmdldChocmVmKSE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5jcmVhdGVDU1NFbGVtZW50KGhyZWYpO1xuICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMub2JzZXJ2ZUxvYWQoc3R5bGUpO1xuICAgICAgdGhpcy5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICAgIHRoaXMuYWxyZWFkeUxvYWRlZC5zZXQoaHJlZiwgcHJvbWlzZSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==