UNPKG

@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
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==