@agencycoda/ngx-paypal
Version:
Paypal integration for Angular
48 lines • 5.24 kB
JavaScript
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