UNPKG

@agencycoda/ngx-paypal

Version:
48 lines 5.24 kB
import { Injectable, NgZone } from '@angular/core'; export class ScriptService { constructor(zone) { this.zone = zone; } registerScript(url, globalVar, onReady) { const existingGlobalVar = window[globalVar]; if (existingGlobalVar) { // global variable is present = script was already loaded this.zone.run(() => { onReady(existingGlobalVar); }); return; } // prepare script elem const scriptElem = document.createElement('script'); scriptElem.id = this.getElemId(globalVar); scriptElem.innerHTML = ''; scriptElem.onload = () => { this.zone.run(() => { onReady(window[globalVar]); }); }; scriptElem.src = url; scriptElem.async = true; scriptElem.defer = true; // add script to header document.getElementsByTagName('head')[0].appendChild(scriptElem); } cleanup(globalVar) { // remove script from DOM const scriptElem = document.getElementById(this.getElemId(globalVar)); if (scriptElem) { scriptElem.remove(); } } getElemId(globalVar) { return `ngx-paypal-script-elem-${globalVar}`; } } ScriptService.decorators = [ { type: Injectable } ]; /** @nocollapse */ ScriptService.ctorParameters = () => [ { type: NgZone } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3NjcmlwdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE1BQU0sT0FBTyxhQUFhO0lBRXRCLFlBQ2MsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFFMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRSxPQUFpQztRQUM1RSxNQUFNLGlCQUFpQixHQUFJLE1BQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxJQUFJLGlCQUFpQixFQUFFO1lBQ25CLHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1Y7UUFHRCxzQkFBc0I7UUFDdEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDMUIsVUFBVSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNmLE9BQU8sQ0FBRSxNQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztRQUNGLFVBQVUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXhCLHVCQUF1QjtRQUN2QixRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUI7UUFDckIseUJBQXlCO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksVUFBVSxFQUFFO1lBQ1osVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxTQUFpQjtRQUMvQixPQUFPLDBCQUEwQixTQUFTLEVBQUUsQ0FBQztJQUNqRCxDQUFDOzs7WUEvQ0osVUFBVTs7OztZQUZVLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcmlwdFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJTY3JpcHQodXJsOiBzdHJpbmcsIGdsb2JhbFZhcjogc3RyaW5nLCBvblJlYWR5OiAoZ2xvYmFsVmFyOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdHbG9iYWxWYXIgPSAod2luZG93IGFzIGFueSlbZ2xvYmFsVmFyXTtcbiAgICAgICAgaWYgKGV4aXN0aW5nR2xvYmFsVmFyKSB7XG4gICAgICAgICAgICAvLyBnbG9iYWwgdmFyaWFibGUgaXMgcHJlc2VudCA9IHNjcmlwdCB3YXMgYWxyZWFkeSBsb2FkZWRcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uUmVhZHkoZXhpc3RpbmdHbG9iYWxWYXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIHByZXBhcmUgc2NyaXB0IGVsZW1cbiAgICAgICAgY29uc3Qgc2NyaXB0RWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHRFbGVtLmlkID0gdGhpcy5nZXRFbGVtSWQoZ2xvYmFsVmFyKTtcbiAgICAgICAgc2NyaXB0RWxlbS5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgc2NyaXB0RWxlbS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBvblJlYWR5KCh3aW5kb3cgYXMgYW55KVtnbG9iYWxWYXJdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBzY3JpcHRFbGVtLnNyYyA9IHVybDtcbiAgICAgICAgc2NyaXB0RWxlbS5hc3luYyA9IHRydWU7XG4gICAgICAgIHNjcmlwdEVsZW0uZGVmZXIgPSB0cnVlO1xuXG4gICAgICAgIC8vIGFkZCBzY3JpcHQgdG8gaGVhZGVyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxlbSk7XG4gICAgfVxuXG4gICAgY2xlYW51cChnbG9iYWxWYXI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyByZW1vdmUgc2NyaXB0IGZyb20gRE9NXG4gICAgICAgIGNvbnN0IHNjcmlwdEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmdldEVsZW1JZChnbG9iYWxWYXIpKTtcblxuICAgICAgICBpZiAoc2NyaXB0RWxlbSkge1xuICAgICAgICAgICAgc2NyaXB0RWxlbS5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RWxlbUlkKGdsb2JhbFZhcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBuZ3gtcGF5cGFsLXNjcmlwdC1lbGVtLSR7Z2xvYmFsVmFyfWA7XG4gICAgfVxufVxuIl19