said-ngx-paypal
Version:
Paypal integration for Angular
101 lines • 7.15 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, NgZone } from '@angular/core';
export class ScriptService {
/**
* @param {?} zone
*/
constructor(zone) {
this.zone = zone;
}
/**
* @param {?} url
* @param {?} globalVar
* @param {?} onReady
* @param {?} onError
* @return {?}
*/
registerScript(url, globalVar, onReady, onError) {
/** @type {?} */
const existingGlobalVar = ((/** @type {?} */ (window)))[globalVar];
if (existingGlobalVar) {
// global variable is present = script was already loaded
this.zone.run((/**
* @return {?}
*/
() => {
onReady(existingGlobalVar);
}));
return;
}
// prepare script elem
/** @type {?} */
const scriptElem = document.createElement('script');
scriptElem.id = this.getElemId(globalVar);
scriptElem.innerHTML = '';
scriptElem.onload = (/**
* @return {?}
*/
() => {
this.zone.run((/**
* @return {?}
*/
() => {
onReady(((/** @type {?} */ (window)))[globalVar]);
}));
});
scriptElem.onerror = (/**
* @return {?}
*/
() => {
this.zone.run((/**
* @return {?}
*/
() => {
onError(scriptElem.src);
}));
});
scriptElem.src = url;
scriptElem.async = true;
scriptElem.defer = true;
// add script to header
document.getElementsByTagName('head')[0].appendChild(scriptElem);
}
/**
* @param {?} globalVar
* @return {?}
*/
cleanup(globalVar) {
// remove script from DOM
/** @type {?} */
const scriptElem = document.getElementById(this.getElemId(globalVar));
if (scriptElem) {
scriptElem.remove();
}
}
/**
* @private
* @param {?} globalVar
* @return {?}
*/
getElemId(globalVar) {
return `ngx-paypal-script-elem-${globalVar}`;
}
}
ScriptService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
ScriptService.ctorParameters = () => [
{ type: NgZone }
];
if (false) {
/**
* @type {?}
* @protected
*/
ScriptService.prototype.zone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9zYWlkLW5neC1wYXlwYWwvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvc2NyaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE1BQU0sT0FBTyxhQUFhOzs7O0lBRXRCLFlBQ2MsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFFMUIsQ0FBQzs7Ozs7Ozs7SUFFRCxjQUFjLENBQUMsR0FBVyxFQUFFLFNBQWlCLEVBQUUsT0FBaUMsRUFBRSxPQUFvQzs7Y0FDNUcsaUJBQWlCLEdBQUcsQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNwRCxJQUFJLGlCQUFpQixFQUFFO1lBQ25CLHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7OztZQUFDLEdBQUcsRUFBRTtnQkFDZixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvQixDQUFDLEVBQUMsQ0FBQztZQUNILE9BQU87U0FDVjs7O2NBSUssVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUMxQixVQUFVLENBQUMsTUFBTTs7O1FBQUcsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRzs7O1lBQUMsR0FBRyxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxDQUFDLG1CQUFBLE1BQU0sRUFBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4QyxDQUFDLEVBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQSxDQUFDO1FBQ0YsVUFBVSxDQUFDLE9BQU87OztRQUFHLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7OztZQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixDQUFDLEVBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQSxDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDckIsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDeEIsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFeEIsdUJBQXVCO1FBQ3ZCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsU0FBaUI7OztjQUVmLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckUsSUFBSSxVQUFVLEVBQUU7WUFDWixVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDOzs7Ozs7SUFFTyxTQUFTLENBQUMsU0FBaUI7UUFDL0IsT0FBTywwQkFBMEIsU0FBUyxFQUFFLENBQUM7SUFDakQsQ0FBQzs7O1lBcERKLFVBQVU7Ozs7WUFGVSxNQUFNOzs7Ozs7O0lBTW5CLDZCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2NyaXB0U2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyU2NyaXB0KHVybDogc3RyaW5nLCBnbG9iYWxWYXI6IHN0cmluZywgb25SZWFkeTogKGdsb2JhbFZhcjogYW55KSA9PiB2b2lkLCBvbkVycm9yOiAoc2NyaXB0U3JjOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBleGlzdGluZ0dsb2JhbFZhciA9ICh3aW5kb3cgYXMgYW55KVtnbG9iYWxWYXJdO1xyXG4gICAgICAgIGlmIChleGlzdGluZ0dsb2JhbFZhcikge1xyXG4gICAgICAgICAgICAvLyBnbG9iYWwgdmFyaWFibGUgaXMgcHJlc2VudCA9IHNjcmlwdCB3YXMgYWxyZWFkeSBsb2FkZWRcclxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvblJlYWR5KGV4aXN0aW5nR2xvYmFsVmFyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvLyBwcmVwYXJlIHNjcmlwdCBlbGVtXHJcbiAgICAgICAgY29uc3Qgc2NyaXB0RWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgICAgIHNjcmlwdEVsZW0uaWQgPSB0aGlzLmdldEVsZW1JZChnbG9iYWxWYXIpO1xyXG4gICAgICAgIHNjcmlwdEVsZW0uaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0RWxlbS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25SZWFkeSgod2luZG93IGFzIGFueSlbZ2xvYmFsVmFyXSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgc2NyaXB0RWxlbS5vbmVycm9yID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIG9uRXJyb3Ioc2NyaXB0RWxlbS5zcmMpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBzY3JpcHRFbGVtLnNyYyA9IHVybDtcclxuICAgICAgICBzY3JpcHRFbGVtLmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHRFbGVtLmRlZmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gYWRkIHNjcmlwdCB0byBoZWFkZXJcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdEVsZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFudXAoZ2xvYmFsVmFyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyByZW1vdmUgc2NyaXB0IGZyb20gRE9NXHJcbiAgICAgICAgY29uc3Qgc2NyaXB0RWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZ2V0RWxlbUlkKGdsb2JhbFZhcikpO1xyXG5cclxuICAgICAgICBpZiAoc2NyaXB0RWxlbSkge1xyXG4gICAgICAgICAgICBzY3JpcHRFbGVtLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEVsZW1JZChnbG9iYWxWYXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGBuZ3gtcGF5cGFsLXNjcmlwdC1lbGVtLSR7Z2xvYmFsVmFyfWA7XHJcbiAgICB9XHJcbn1cclxuIl19