UNPKG

ng-gapi

Version:
61 lines 7.33 kB
import { __decorate, __param } from "tslib"; import { Inject, Injectable, InjectionToken } from '@angular/core'; import { GoogleApiConfig } from './config/GoogleApiConfig'; import { Observable } from 'rxjs'; export let NG_GAPI_CONFIG = new InjectionToken('ng-gapi.config'); let GoogleApiService = class GoogleApiService { constructor(config) { this.gapiUrl = 'https://apis.google.com/js/api.js'; this.observers = []; this.config = new GoogleApiConfig(config); this.loadGapi().subscribe(); } onLoad() { return this.loadGapi(); } getConfig() { return this.config; } loadGapi() { return new Observable((observer) => { if (this.gapiLoaded) { observer.next(true); observer.complete(); } else if (!this.node) { /** * script element has not yet been added to document */ this.node = document.createElement('script'); this.node.async = true; this.node.src = this.gapiUrl; this.node.type = 'text/javascript'; this.node.onload = () => { this.gapiLoaded = true; while (this.observers.length) { const observer = this.observers.shift(); observer.next(true); observer.complete(); } this.node = undefined; }; this.node.onerror = () => { this.node = undefined; }; document.getElementsByTagName('head')[0].appendChild(this.node); } else { /** * script is in the middle of being loaded */ this.observers.push(observer); } }); } }; GoogleApiService = __decorate([ Injectable(), __param(0, Inject(NG_GAPI_CONFIG)) ], GoogleApiService); export { GoogleApiService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR29vZ2xlQXBpU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Hb29nbGVBcGlTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsVUFBVSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FDdkIsSUFBSSxjQUFjLENBQXFCLGdCQUFnQixDQUFDLENBQUM7QUFHM0QsSUFBYSxnQkFBZ0IsR0FBN0IsTUFBYSxnQkFBZ0I7SUFPM0IsWUFBb0MsTUFBMEI7UUFON0MsWUFBTyxHQUFXLG1DQUFtQyxDQUFDO1FBSS9ELGNBQVMsR0FBd0IsRUFBRSxDQUFDO1FBRzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVPLFFBQVE7UUFDZCxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQ3BELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JCO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNyQjs7bUJBRUc7Z0JBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO3dCQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUN4QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ3JCO29CQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO2dCQUN4QixDQUFDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO29CQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztnQkFDeEIsQ0FBQyxDQUFBO2dCQUNELFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNO2dCQUNMOzttQkFFRztnQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMvQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUE7QUF0RFksZ0JBQWdCO0lBRDVCLFVBQVUsRUFBRTtJQVFFLFdBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0dBUHhCLGdCQUFnQixDQXNENUI7U0F0RFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R29vZ2xlQXBpQ29uZmlnLCBOZ0dhcGlDbGllbnRDb25maWd9IGZyb20gJy4vY29uZmlnL0dvb2dsZUFwaUNvbmZpZyc7XG5pbXBvcnQge09ic2VydmFibGUsIE9ic2VydmVyfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGxldCBOR19HQVBJX0NPTkZJRzogSW5qZWN0aW9uVG9rZW48TmdHYXBpQ2xpZW50Q29uZmlnPiA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0dhcGlDbGllbnRDb25maWc+KCduZy1nYXBpLmNvbmZpZycpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR29vZ2xlQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2FwaVVybDogc3RyaW5nID0gJ2h0dHBzOi8vYXBpcy5nb29nbGUuY29tL2pzL2FwaS5qcyc7XG4gIHByaXZhdGUgY29uZmlnOiBHb29nbGVBcGlDb25maWc7XG4gIHByaXZhdGUgZ2FwaUxvYWRlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBub2RlOiBIVE1MU2NyaXB0RWxlbWVudDtcbiAgcHJpdmF0ZSBvYnNlcnZlcnM6IE9ic2VydmVyPGJvb2xlYW4+W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HX0dBUElfQ09ORklHKSBjb25maWc6IE5nR2FwaUNsaWVudENvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gbmV3IEdvb2dsZUFwaUNvbmZpZyhjb25maWcpO1xuICAgIHRoaXMubG9hZEdhcGkoKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxvYWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEdhcGkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKTogR29vZ2xlQXBpQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cblxuICBwcml2YXRlIGxvYWRHYXBpKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPGJvb2xlYW4+KSA9PiB7XG4gICAgICBpZiAodGhpcy5nYXBpTG9hZGVkKSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLm5vZGUpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHNjcmlwdCBlbGVtZW50IGhhcyBub3QgeWV0IGJlZW4gYWRkZWQgdG8gZG9jdW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICB0aGlzLm5vZGUuYXN5bmMgPSB0cnVlO1xuICAgICAgICB0aGlzLm5vZGUuc3JjID0gdGhpcy5nYXBpVXJsO1xuICAgICAgICB0aGlzLm5vZGUudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICB0aGlzLm5vZGUub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2FwaUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgd2hpbGUgKHRoaXMub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLm9ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ub2RlLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub2RlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodGhpcy5ub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBzY3JpcHQgaXMgaW4gdGhlIG1pZGRsZSBvZiBiZWluZyBsb2FkZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=