@shopgate/engage
Version:
Shopgate's ENGAGE library.
9 lines • 2.59 kB
JavaScript
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import{useEffect,useState}from'react';var SDK_ID='sg-paypal-sdk';var renderQueue=[];/**
* Asynchronously loads the javascript paypal sdk
* @param {Object} settings Payment method settings
* @param {Object} order The active order
* @returns {Promise}
* */export var loadWebSdk=function loadWebSdk(settings,order){return new Promise(function(resolve,reject){if(document.querySelector("#".concat(SDK_ID))){resolve();return;}var script=document.createElement('script');script.id=SDK_ID;script.setAttribute('data-partner-attribution-id','ShopgateGmbH_Cart_PPCP');script.onload=function(){resolve();renderQueue.forEach(function(cb){return cb();});renderQueue=[];};script.onerror=reject;var parameters=_extends({'client-id':settings.clientId,'merchant-id':settings.merchantIdInPayPal,'disable-funding':'credit,card','integration-date':'2020-12-07',commit:'true',currency:order.currencyCode,intent:'authorize',components:'buttons,funding-eligibility,marks'},settings.env==='sandbox'?{debug:'true'}:{});var parametersString=Object.entries(parameters).map(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];return"".concat(key,"=").concat(value);}).join('&');script.src="https://www.paypal.com/sdk/js?".concat(parametersString);document.head.appendChild(script);});};/**
* Hook that ensures that component will be supplied with the sdk once loaded.
* @returns {Object}
*/export var usePaypal=function usePaypal(){var _useState=useState(window.paypal||null),_useState2=_slicedToArray(_useState,2),paypal=_useState2[0],setPaypal=_useState2[1];useEffect(function(){if(paypal){return;}renderQueue.push(function(){return setPaypal(window.paypal);});},[paypal]);return paypal;};