Changeset 2227828
- Timestamp:
- 01/15/2020 02:27:16 PM (5 years ago)
- Location:
- woo-paypalplus/trunk
- Files:
-
- 16 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
woo-paypalplus/trunk/paypalplus-woocommerce.php
r2100278 r2227828 7 7 * Author: Inpsyde GmbH 8 8 * Author URI: https://inpsyde.com/ 9 * Version: 2. 0.49 * Version: 2. 10 10 * WC requires at least: 3.2.0 11 11 * WC tested up to: 3.6.4 … … 17 17 namespace WCPayPalPlus; 18 18 19 use WCPayPalPlus\Service\Container; 20 use WCPayPalPlus\Service\ServiceProvidersCollection; 19 use Closure; 21 20 22 const ACTION_ACTIVATION = 'wcpaypalplus.activation'; 23 const ACTION_ADD_SERVICE_PROVIDERS = 'wcpaypalplus.add_service_providers'; 24 const ACTION_LOG = 'wcpaypalplus.log'; 25 26 $bootstrap = \Closure::bind(function () { 21 $bootstrap = Closure::bind( 22 function () { 27 23 28 24 /** … … 35 31 /** @noinspection PhpIncludeInspection */ 36 32 require $autoloader; 33 34 37 35 } 38 36 39 37 return class_exists(PayPalPlus::class); 40 }41 42 /**43 * Admin Message44 * @param $message45 */46 function adminNotice($message)47 {48 add_action('admin_notices', function () use ($message) {49 $class = 'notice notice-error';50 printf('<div class="%1$s"><p>%2$s</p></div>', esc_attr($class), esc_html($message));51 });52 }53 54 /**55 * @return bool56 */57 function versionCheck()58 {59 $minPhpVersion = '5.6';60 if (PHP_VERSION < $minPhpVersion) {61 adminNotice(62 sprintf(63 __(64 'PayPal PLUS requires PHP version %1$1s or higher. You are running version %2$2s ',65 'woo-paypalplus'66 ),67 $minPhpVersion,68 PHP_VERSION69 )70 );71 72 return false;73 }74 75 return true;76 }77 78 /**79 * @return bool80 */81 function wooCommerceCheck()82 {83 if (!function_exists('WC')) {84 adminNotice(__('PayPal PLUS requires WooCommerce to be active.', 'woo-paypalplus'));85 return false;86 }87 88 if (version_compare(wc()->version, '3.2.0', '<')) {89 adminNotice(90 __(91 'PayPal PLUS requires WooCommerce version 3.2 or higher.',92 'woo-paypalplus'93 )94 );95 return false;96 }97 98 return true;99 }100 101 /**102 * Bootstraps PayPal PLUS for WooCommerce103 *104 * @return bool105 *106 * @wp-hook plugins_loaded107 * @return bool108 * @throws \Exception109 */110 function bootstrap()111 {112 if (!versionCheck()) {113 return false;114 }115 if (!wooCommerceCheck()) {116 return false;117 }118 // Plugin doesn't work well with cron because of WooCommerce Session.119 // To now spread conditional here and there since we don't actually need to do stuffs120 // during cron I have disabled the plugin here.121 if (defined('DOING_CRON') && DOING_CRON) {122 return false;123 }124 125 /** @noinspection BadExceptionsProcessingInspection */126 try {127 /** @var Container $container */128 $container = resolve();129 $container = $container->shareValue(130 PluginProperties::class,131 new PluginProperties(__FILE__)132 );133 134 $providers = new ServiceProvidersCollection();135 $providers136 ->add(new Install\ServiceProvider())137 ->add(new Utils\ServiceProvider())138 ->add(new Notice\ServiceProvider())139 ->add(new Assets\ServiceProvider())140 ->add(new Session\ServiceProvider())141 ->add(new Setting\ServiceProvider())142 ->add(new Request\ServiceProvider())143 ->add(new Admin\ServiceProvider())144 ->add(new Gateway\ServiceProvider())145 ->add(new WC\ServiceProvider())146 ->add(new Ipn\ServiceProvider())147 ->add(new Pui\ServiceProvider())148 ->add(new Log\ServiceProvider())149 ->add(new Api\ServiceProvider())150 ->add(new Order\ServiceProvider())151 ->add(new Refund\ServiceProvider())152 ->add(new Payment\ServiceProvider())153 ->add(new ExpressCheckoutGateway\ServiceProvider())154 ->add(new PlusGateway\ServiceProvider());155 156 $payPalPlus = new PayPalPlus($container, $providers);157 158 /**159 * Fires right before MultilingualPress gets bootstrapped.160 *161 * Hook here to add custom service providers via162 * `ServiceProviderCollection::add_service_provider()`.163 *164 * @param ServiceProvidersCollection $providers165 */166 do_action(ACTION_ADD_SERVICE_PROVIDERS, $providers);167 168 $bootstrapped = $payPalPlus->bootstrap();169 170 unset($providers);171 } catch (\Exception $exc) {172 do_action(ACTION_LOG, \WC_Log_Levels::ERROR, $exc->getMessage(), compact($exc));173 174 if (defined('WP_DEBUG') && WP_DEBUG) {175 throw $exc;176 }177 178 $bootstrapped = false;179 }180 181 return $bootstrapped;182 38 } 183 39 … … 186 42 } 187 43 188 add_action('plugins_loaded', __NAMESPACE__ . '\\bootstrap', 0); 44 $bootstrapper = new Bootstrapper(resolve(), __FILE__); 45 46 add_action('plugins_loaded', [$bootstrapper, 'bootstrap'], 0); 189 47 add_action('init', function () { 190 48 load_plugin_textdomain('woo-paypalplus'); 191 49 }); 192 }, null); 50 }, 51 null 52 ); 193 53 194 54 $bootstrap(); -
woo-paypalplus/trunk/public/js/expressCheckout.min.js
r2095829 r2227828 1 !function(Q){var n={};function F(t){if(n[t])return n[t].exports;var B=n[t]={i:t,l:!1,exports:{}};return Q[t].call(B.exports,B,B.exports,F),B.l=!0,B.exports}F.m=Q,F.c=n,F.d=function(Q,n,t){F.o(Q,n)||Object.defineProperty(Q,n,{enumerable:!0,get:t})},F.r=function(Q){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(Q,"__esModule",{value:!0})},F.t=function(Q,n){if(1&n&&(Q=F(Q)),8&n)return Q;if(4&n&&"object"==typeof Q&&Q&&Q.__esModule)return Q;var t=Object.create(null);if(F.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:Q}),2&n&&"string"!=typeof Q)for(var B in Q)F.d(t,B,function(n){return Q[n]}.bind(null,B));return t},F.n=function(Q){var n=Q&&Q.__esModule?function(){return Q.default}:function(){return Q};return F.d(n,"a",n),n},F.o=function(Q,n){return Object.prototype.hasOwnProperty.call(Q,n)},F.p="",F(F.s=2)}([function(module,exports){eval("/**\n * Build Redirect Url By Ajax Request\n *\n * @param response\n * @param defaultUrl\n * @returns {string|*|string}\n */\nfunction redirectUrlByRequest(response) {\n var defaultUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (!'data' in response) {\n return defaultUrl;\n }\n\n var redirectUrl = 'redirectUrl' in response.data ? response.data.redirectUrl : defaultUrl;\n return redirectUrl;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdXRpbHMuanM/YTM0MyJdLCJuYW1lcyI6WyJyZWRpcmVjdFVybEJ5UmVxdWVzdCIsInJlc3BvbnNlIiwiZGVmYXVsdFVybCIsInJlZGlyZWN0VXJsIiwiZGF0YSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7QUFPQSxTQUFTQSxvQkFBVCxDQUErQkMsUUFBL0IsRUFDQTtBQUFBLE1BRHlDQyxVQUN6Qyx1RUFEc0QsRUFDdEQ7O0FBQ0UsTUFBSSxDQUFDLE1BQUQsSUFBV0QsUUFBZixFQUF5QjtBQUN2QixXQUFPQyxVQUFQO0FBQ0Q7O0FBRUQsTUFBTUMsV0FBVyxHQUFJLGlCQUFpQkYsUUFBUSxDQUFDRyxJQUEzQixHQUFtQ0gsUUFBUSxDQUFDRyxJQUFULENBQWNELFdBQWpELEdBQStERCxVQUFuRjtBQUVBLFNBQU9DLFdBQVA7QUFDRCIsImZpbGUiOiIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWlsZCBSZWRpcmVjdCBVcmwgQnkgQWpheCBSZXF1ZXN0XG4gKlxuICogQHBhcmFtIHJlc3BvbnNlXG4gKiBAcGFyYW0gZGVmYXVsdFVybFxuICogQHJldHVybnMge3N0cmluZ3wqfHN0cmluZ31cbiAqL1xuZnVuY3Rpb24gcmVkaXJlY3RVcmxCeVJlcXVlc3QgKHJlc3BvbnNlLCBkZWZhdWx0VXJsID0gJycpXG57XG4gIGlmICghJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRVcmxcbiAgfVxuXG4gIGNvbnN0IHJlZGlyZWN0VXJsID0gKCdyZWRpcmVjdFVybCcgaW4gcmVzcG9uc2UuZGF0YSkgPyByZXNwb25zZS5kYXRhLnJlZGlyZWN0VXJsIDogZGVmYXVsdFVybFxuXG4gIHJldHVybiByZWRpcmVjdFVybFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n")},,function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./resources/js/expressCheckout/Request.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * Class Request\n *\n * @type {Request}\n */\nvar Request =\n/*#__PURE__*/\nfunction () {\n // TODO Make the fields private if possible.\n function Request(ajaxUrl, action) {\n _classCallCheck(this, Request);\n\n this.ajaxUrl = ajaxUrl;\n this.action = action;\n }\n\n _createClass(Request, [{\n key: \"submit\",\n value: function submit(formData) {\n var _this = this;\n\n // TODO Extract specific data such as: action, nonce, task, context and\n // put the rest within a specific object.\n // Make a separation for data controls and real request data.\n if (_.isEmpty(formData)) {\n return Promise.reject('No formData to send to the server.');\n }\n\n var data = {};\n formData = formData.concat([{\n name: 'action',\n value: encodeURIComponent(this.action)\n }]);\n formData.forEach(function (item) {\n data[item.name] = item.value;\n });\n return new Promise(function (resolve, reject) {\n jQuery.ajax({\n traditional: true,\n url: _this.ajaxUrl,\n method: 'POST',\n data: data,\n error: reject,\n success: resolve\n });\n });\n }\n }]);\n\n return Request;\n}();\n/**\n * Request Factory\n *\n * @param ajaxUrl\n * @param action\n * @returns {Request}\n */\n\n\nfunction RequestFactory(ajaxUrl, action) {\n if (!ajaxUrl || !action) {\n throw new Error('Invalid parameters when construct Request instance');\n }\n\n var object = new Request(ajaxUrl, action);\n Object.freeze(object);\n return object;\n}\n// CONCATENATED MODULE: ./resources/js/expressCheckout/context.js\n/**\n * Retrieve Context by Element\n *\n * @param element\n * @returns {string}\n */\nfunction contextByElement(element) {\n return 'context' in element.dataset ? element.dataset.context : '';\n}\n// CONCATENATED MODULE: ./resources/js/expressCheckout/form.js\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _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; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nvar CART_BUTTON_SELECTOR = 'woo-paypalplus-checkout-nonce';\n/**\n * Create a FormData object by the closest form of the given element\n *\n * @param element\n * @returns {String}\n */\n\nfunction formDataByElement(element) {\n var $form = jQuery(element).closest('form');\n\n if (!$form.length) {\n throw new Error('Unable to retrieve form. Form element does not exists or is not a parent of the given element.');\n }\n\n var formData = $form.serializeArray();\n var context = contextByElement(element);\n formData = formData.concat([{\n name: 'context',\n value: context\n }]);\n formData = formData.filter(function (item) {\n return item.name !== 'add-to-cart';\n });\n return formData;\n}\n/**\n * Create a FormData for the Cart\n * WooCommerce mini cart doesn't have any form associated with it\n *\n * @param element\n * @returns {Array}\n */\n\nfunction formDataForCart(element) {\n try {\n var _retrieveNonceForCart = retrieveNonceForCart(element),\n _retrieveNonceForCart2 = _slicedToArray(_retrieveNonceForCart, 2),\n nonceName = _retrieveNonceForCart2[0],\n nonceValue = _retrieveNonceForCart2[1];\n\n var context = contextByElement(element);\n return [{\n name: 'context',\n value: encodeURIComponent(context)\n }, {\n name: nonceName,\n value: encodeURIComponent(nonceValue)\n }];\n } catch (err) {\n return [];\n }\n}\n\nfunction retrieveNonceForCart(element) {\n var nonceElement = element.parentNode.querySelector(\".\".concat(CART_BUTTON_SELECTOR));\n\n if (!nonceElement) {\n throw new Error('Cannot build the form data, missing security nonce.');\n }\n\n var nonceName = 'noncename' in nonceElement.dataset ? nonceElement.dataset.noncename : '';\n var nonceValue = 'noncevalue' in nonceElement.dataset ? nonceElement.dataset.noncevalue : '';\n\n if (!nonceName || !nonceValue) {\n throw new Error('Cannot build the form data, missing security nonce.');\n }\n\n return [nonceName, nonceValue];\n}\n// EXTERNAL MODULE: ./resources/js/utils.js\nvar utils = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./resources/js/expressCheckout/smartPaymentButton.js\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction smartPaymentButton_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction smartPaymentButton_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction smartPaymentButton_createClass(Constructor, protoProps, staticProps) { if (protoProps) smartPaymentButton_defineProperties(Constructor.prototype, protoProps); if (staticProps) smartPaymentButton_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar SINGLE_PRODUCT_BUTTON = 'paypalplus_ecs_single_product_button';\nvar CART_BUTTON = 'paypalplus_ecs_cart_button';\nvar TASK_CREATE_ORDER = 'createOrder';\nvar TASK_STORE_PAYMENT_DATA = 'storePaymentData';\n/**\n * Retrieve Form Data values by the Given Element and context\n *\n * @params element\n * @params {Array} context\n * @returns {Array}\n */\n\nfunction formDataByContext(element, validContexts) {\n var formData = [];\n var context = contextByElement(element);\n\n if (-1 === validContexts.indexOf(context)) {\n throw new Error('Invalid context when try to retrieve the form data during express checkout request.');\n }\n\n try {\n switch (context) {\n case 'cart':\n formData = formDataForCart(element);\n break;\n\n case 'product':\n formData = formDataByElement(element);\n break;\n }\n } catch (err) {}\n\n return formData;\n}\n/**\n * Class Smart Payment Button Renderer\n *\n * @type {SmartPaymentButtonRenderer}\n */\n\n\nvar smartPaymentButton_SmartPaymentButtonRenderer =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n *\n * @param buttonConfiguration\n * @param validContexts\n * @param request\n */\n function SmartPaymentButtonRenderer(buttonConfiguration, validContexts, request) {\n smartPaymentButton_classCallCheck(this, SmartPaymentButtonRenderer);\n\n this.buttonConfiguration = buttonConfiguration;\n this.cancelUrl = this.buttonConfiguration.redirect_urls.cancel_url;\n this.validContexts = validContexts;\n this.request = request;\n }\n /**\n * Render button for single product\n */\n\n\n smartPaymentButton_createClass(SmartPaymentButtonRenderer, [{\n key: \"singleProductButtonRender\",\n value: function singleProductButtonRender() {\n var element = document.querySelector(\"#\".concat(SINGLE_PRODUCT_BUTTON));\n element && this.render(element);\n }\n /**\n * Render Button for Cart\n */\n\n }, {\n key: \"cartButtonRender\",\n value: function cartButtonRender() {\n var element = document.querySelector(\"#\".concat(CART_BUTTON));\n element && this.render(element);\n }\n /**\n * Render Button for the Given Element\n *\n * @param element\n * @returns {*}\n */\n // TODO Make it private\n\n }, {\n key: \"render\",\n value: function render(element) {\n var _this = this;\n\n if (_.isUndefined(paypal)) {\n return;\n }\n\n var button = element.querySelector('.paypal-button');\n button && button.parentNode.removeChild(button);\n paypal.Button.render(_objectSpread({}, this.buttonConfiguration, {\n /**\n * Do Payment\n *\n * @returns {*}\n */\n payment: function payment() {\n var formData = formDataByContext(element, _this.validContexts);\n formData = formData.concat([{\n name: 'task',\n value: TASK_CREATE_ORDER\n }]);\n return _this.request.submit(formData).then(function (response) {\n if (!'data' in response) {\n console.warn('Unable to process the payment, server did not response with valid data');\n\n try {\n window.location = _this.cancelUrl;\n } catch (e) {\n return;\n }\n }\n\n if (!response.success) {\n try {\n window.location = utils[\"redirectUrlByRequest\"](response, _this.cancelUrl);\n } catch (e) {\n return;\n }\n }\n\n var orderId = 'orderId' in response.data ? response.data.orderId : '';\n\n if (!orderId) {\n try {\n window.location = utils[\"redirectUrlByRequest\"](response, _this.cancelUrl);\n } catch (e) {\n return;\n }\n }\n\n return orderId;\n }).catch(function (error) {\n var textStatus = 'textStatus' in error ? error.textStatus : 'Unknown Error during payment';\n console.warn(textStatus);\n });\n },\n\n /**\n * Execute Authorization\n *\n * @param {Array} data\n * @param actions\n * @returns {*}\n */\n onAuthorize: function onAuthorize(data, actions) {\n // TODO Ensure return_url exists.\n var formData = formDataByContext(element, _this.validContexts);\n formData = formData.concat(formData, [{\n name: 'task',\n value: TASK_STORE_PAYMENT_DATA\n }, {\n name: 'orderId',\n value: encodeURIComponent(data.OrderID)\n }, {\n name: 'PayerID',\n value: encodeURIComponent(data.payerID)\n }, {\n name: 'paymentId',\n value: encodeURIComponent(data.paymentID)\n }, {\n name: 'token',\n value: encodeURIComponent(data.paymentToken)\n }]);\n return _this.request.submit(formData).then(function (response) {\n if (!response.success) {\n try {\n window.location = utils[\"redirectUrlByRequest\"](response, _this.cancelUrl);\n } catch (e) {\n return;\n }\n }\n\n var returnUrl = '';\n\n if ('redirect_urls' in _this.buttonConfiguration && 'return_url' in _this.buttonConfiguration.redirect_urls) {\n returnUrl = _this.buttonConfiguration.redirect_urls.return_url;\n }\n\n returnUrl && actions.redirect(null, returnUrl);\n });\n },\n\n /**\n * Perform Action when a Payment get Cancelled\n *\n * @param data\n * @param actions\n */\n onCancel: function onCancel(data, actions) {\n actions.close();\n var cancelUrl = 'cancelUrl' in data ? data.cancelUrl : '';\n cancelUrl && actions.redirect(null, cancelUrl);\n },\n onError: function onError(data, actions) {\n console.log('ON ERROR', data, actions); // TODO Redirect to cart and show customizable notice with message.\n }\n }), element);\n }\n }]);\n\n return SmartPaymentButtonRenderer;\n}();\n/**\n * Smart Payment Button Renderer Factory\n *\n * @param buttonConfiguration\n * @param validContexts\n * @param request\n * @returns {SmartPaymentButtonRenderer}\n * @constructor\n */\n\n\nfunction SmartPaymentButtonRendererFactory(buttonConfiguration, validContexts, request) {\n var object = new smartPaymentButton_SmartPaymentButtonRenderer(buttonConfiguration, validContexts, request);\n Object.freeze(object);\n return object;\n}\n// CONCATENATED MODULE: ./resources/js/expressCheckout.js\n\n\n\n(function (jQuery, _, expressCheckoutData) {\n /**\n * Ensure the Global Express Checkout is a Valid Value\n * @returns {boolean}\n */\n function isValidExpressCheckoutData() {\n return !_.isUndefined(expressCheckoutData) && !_.isEmpty(expressCheckoutData);\n }\n /**\n * Bootstrap Express checkout\n * @returns void\n */\n\n\n function bootstrapExpressCheckout() {\n if (!isValidExpressCheckoutData()) {\n return;\n }\n\n var requestData = expressCheckoutData.request;\n\n if (!_.isObject(requestData)) {\n return;\n }\n\n var validContexts = expressCheckoutData.validContexts;\n\n if (!_.isArray(validContexts)) {\n return;\n }\n\n var request = RequestFactory(requestData.ajaxUrl, requestData.action);\n var smartPaymentButton = SmartPaymentButtonRendererFactory(expressCheckoutData, validContexts, request);\n smartPaymentButton.singleProductButtonRender();\n smartPaymentButton.cartButtonRender();\n jQuery(document.body).on('wc_fragments_refreshed wc_fragments_loaded removed_from_cart added_to_cart', function () {\n smartPaymentButton.cartButtonRender();\n });\n }\n\n window.addEventListener('load', function () {\n bootstrapExpressCheckout();\n });\n})(jQuery, window._, window.wooPayPalPlusExpressCheckout);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L1JlcXVlc3QuanM/OGQ1ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L2NvbnRleHQuanM/NjhkMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L2Zvcm0uanM/ZWE1ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L3NtYXJ0UGF5bWVudEJ1dHRvbi5qcz9mM2IyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9leHByZXNzQ2hlY2tvdXQuanM/ZGNjMyJdLCJuYW1lcyI6WyJSZXF1ZXN0IiwiYWpheFVybCIsImFjdGlvbiIsImZvcm1EYXRhIiwiXyIsImlzRW1wdHkiLCJQcm9taXNlIiwicmVqZWN0IiwiZGF0YSIsImNvbmNhdCIsIm5hbWUiLCJ2YWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImZvckVhY2giLCJpdGVtIiwicmVzb2x2ZSIsImpRdWVyeSIsImFqYXgiLCJ0cmFkaXRpb25hbCIsInVybCIsIm1ldGhvZCIsImVycm9yIiwic3VjY2VzcyIsIlJlcXVlc3RGYWN0b3J5IiwiRXJyb3IiLCJvYmplY3QiLCJPYmplY3QiLCJmcmVlemUiLCJjb250ZXh0QnlFbGVtZW50IiwiZWxlbWVudCIsImRhdGFzZXQiLCJjb250ZXh0IiwiQ0FSVF9CVVRUT05fU0VMRUNUT1IiLCJmb3JtRGF0YUJ5RWxlbWVudCIsIiRmb3JtIiwiY2xvc2VzdCIsImxlbmd0aCIsInNlcmlhbGl6ZUFycmF5IiwiZmlsdGVyIiwiZm9ybURhdGFGb3JDYXJ0IiwicmV0cmlldmVOb25jZUZvckNhcnQiLCJub25jZU5hbWUiLCJub25jZVZhbHVlIiwiZXJyIiwibm9uY2VFbGVtZW50IiwicGFyZW50Tm9kZSIsInF1ZXJ5U2VsZWN0b3IiLCJub25jZW5hbWUiLCJub25jZXZhbHVlIiwiU0lOR0xFX1BST0RVQ1RfQlVUVE9OIiwiQ0FSVF9CVVRUT04iLCJUQVNLX0NSRUFURV9PUkRFUiIsIlRBU0tfU1RPUkVfUEFZTUVOVF9EQVRBIiwiZm9ybURhdGFCeUNvbnRleHQiLCJ2YWxpZENvbnRleHRzIiwiaW5kZXhPZiIsIlNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyIiwiYnV0dG9uQ29uZmlndXJhdGlvbiIsInJlcXVlc3QiLCJjYW5jZWxVcmwiLCJyZWRpcmVjdF91cmxzIiwiY2FuY2VsX3VybCIsImRvY3VtZW50IiwicmVuZGVyIiwiaXNVbmRlZmluZWQiLCJwYXlwYWwiLCJidXR0b24iLCJyZW1vdmVDaGlsZCIsIkJ1dHRvbiIsInBheW1lbnQiLCJzdWJtaXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJjb25zb2xlIiwid2FybiIsIndpbmRvdyIsImxvY2F0aW9uIiwiZSIsInV0aWxzIiwib3JkZXJJZCIsImNhdGNoIiwidGV4dFN0YXR1cyIsIm9uQXV0aG9yaXplIiwiYWN0aW9ucyIsIk9yZGVySUQiLCJwYXllcklEIiwicGF5bWVudElEIiwicGF5bWVudFRva2VuIiwicmV0dXJuVXJsIiwicmV0dXJuX3VybCIsInJlZGlyZWN0Iiwib25DYW5jZWwiLCJjbG9zZSIsIm9uRXJyb3IiLCJsb2ciLCJTbWFydFBheW1lbnRCdXR0b25SZW5kZXJlckZhY3RvcnkiLCJleHByZXNzQ2hlY2tvdXREYXRhIiwiaXNWYWxpZEV4cHJlc3NDaGVja291dERhdGEiLCJib290c3RyYXBFeHByZXNzQ2hlY2tvdXQiLCJyZXF1ZXN0RGF0YSIsImlzT2JqZWN0IiwiaXNBcnJheSIsInNtYXJ0UGF5bWVudEJ1dHRvbiIsInNpbmdsZVByb2R1Y3RCdXR0b25SZW5kZXIiLCJjYXJ0QnV0dG9uUmVuZGVyIiwiYm9keSIsIm9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsIndvb1BheVBhbFBsdXNFeHByZXNzQ2hlY2tvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7OztBQUtBLElBQU1BLE9BQU87QUFBQTtBQUFBO0FBRVg7QUFDQSxt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cXVlc3RcbiAqXG4gKiBAdHlwZSB7UmVxdWVzdH1cbiAqL1xuY29uc3QgUmVxdWVzdCA9IGNsYXNzIFJlcXVlc3RcbntcbiAgLy8gVE9ETyBNYWtlIHRoZSBmaWVsZHMgcHJpdmF0ZSBpZiBwb3NzaWJsZS5cbiAgY29uc3RydWN0b3IgKGFqYXhVcmwsIGFjdGlvbilcbiAge1xuICAgIHRoaXMuYWpheFVybCA9IGFqYXhVcmxcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvblxuICB9XG5cbiAgc3VibWl0IChmb3JtRGF0YSlcbiAge1xuICAgIC8vIFRPRE8gRXh0cmFjdCBzcGVjaWZpYyBkYXRhIHN1Y2ggYXM6IGFjdGlvbiwgbm9uY2UsIHRhc2ssIGNvbnRleHQgYW5kXG4gICAgLy8gICAgICBwdXQgdGhlIHJlc3Qgd2l0aGluIGEgc3BlY2lmaWMgb2JqZWN0LlxuICAgIC8vICAgICAgTWFrZSBhIHNlcGFyYXRpb24gZm9yIGRhdGEgY29udHJvbHMgYW5kIHJlYWwgcmVxdWVzdCBkYXRhLlxuXG4gICAgaWYgKF8uaXNFbXB0eShmb3JtRGF0YSkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnTm8gZm9ybURhdGEgdG8gc2VuZCB0byB0aGUgc2VydmVyLicpXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIGZvcm1EYXRhID0gZm9ybURhdGEuY29uY2F0KFt7bmFtZTogJ2FjdGlvbicsIHZhbHVlOiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5hY3Rpb24pfV0pXG4gICAgZm9ybURhdGEuZm9yRWFjaChpdGVtID0+IHtkYXRhW2l0ZW0ubmFtZV0gPSBpdGVtLnZhbHVlfSlcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgIHRyYWRpdGlvbmFsOiB0cnVlLFxuICAgICAgICB1cmw6IHRoaXMuYWpheFVybCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgIHN1Y2Nlc3M6IHJlc29sdmUsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBSZXF1ZXN0IEZhY3RvcnlcbiAqXG4gKiBAcGFyYW0gYWpheFVybFxuICogQHBhcmFtIGFjdGlvblxuICogQHJldHVybnMge1JlcXVlc3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0RmFjdG9yeSAoYWpheFVybCwgYWN0aW9uKVxue1xuICBpZiAoIWFqYXhVcmwgfHwgIWFjdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXJzIHdoZW4gY29uc3RydWN0IFJlcXVlc3QgaW5zdGFuY2UnKVxuICB9XG5cbiAgbGV0IG9iamVjdCA9IG5ldyBSZXF1ZXN0KGFqYXhVcmwsIGFjdGlvbilcbiAgT2JqZWN0LmZyZWV6ZShvYmplY3QpXG5cbiAgcmV0dXJuIG9iamVjdFxufVxuIiwiLyoqXG4gKiBSZXRyaWV2ZSBDb250ZXh0IGJ5IEVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gZWxlbWVudFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRCeUVsZW1lbnQgKGVsZW1lbnQpXG57XG4gIHJldHVybiAoJ2NvbnRleHQnIGluIGVsZW1lbnQuZGF0YXNldCA/IGVsZW1lbnQuZGF0YXNldC5jb250ZXh0IDogJycpXG59XG4iLCJpbXBvcnQgeyBjb250ZXh0QnlFbGVtZW50IH0gZnJvbSAnLi9jb250ZXh0J1xuXG5jb25zdCBDQVJUX0JVVFRPTl9TRUxFQ1RPUiA9ICd3b28tcGF5cGFscGx1cy1jaGVja291dC1ub25jZSdcblxuLyoqXG4gKiBDcmVhdGUgYSBGb3JtRGF0YSBvYmplY3QgYnkgdGhlIGNsb3Nlc3QgZm9ybSBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICpcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybURhdGFCeUVsZW1lbnQgKGVsZW1lbnQpXG57XG4gIGNvbnN0ICRmb3JtID0galF1ZXJ5KGVsZW1lbnQpLmNsb3Nlc3QoJ2Zvcm0nKVxuXG4gIGlmICghJGZvcm0ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1VuYWJsZSB0byByZXRyaWV2ZSBmb3JtLiBGb3JtIGVsZW1lbnQgZG9lcyBub3QgZXhpc3RzIG9yIGlzIG5vdCBhIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZWxlbWVudC4nLFxuICAgIClcbiAgfVxuXG4gIGxldCBmb3JtRGF0YSA9ICRmb3JtLnNlcmlhbGl6ZUFycmF5KClcbiAgY29uc3QgY29udGV4dCA9IGNvbnRleHRCeUVsZW1lbnQoZWxlbWVudClcblxuICBmb3JtRGF0YSA9IGZvcm1EYXRhLmNvbmNhdChbe25hbWU6ICdjb250ZXh0JywgdmFsdWU6IGNvbnRleHR9XSlcbiAgZm9ybURhdGEgPSBmb3JtRGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgIT09ICdhZGQtdG8tY2FydCcpXG5cbiAgcmV0dXJuIGZvcm1EYXRhXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgRm9ybURhdGEgZm9yIHRoZSBDYXJ0XG4gKiBXb29Db21tZXJjZSBtaW5pIGNhcnQgZG9lc24ndCBoYXZlIGFueSBmb3JtIGFzc29jaWF0ZWQgd2l0aCBpdFxuICpcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtRGF0YUZvckNhcnQgKGVsZW1lbnQpXG57XG4gIHRyeSB7XG4gICAgY29uc3QgW25vbmNlTmFtZSwgbm9uY2VWYWx1ZV0gPSByZXRyaWV2ZU5vbmNlRm9yQ2FydChlbGVtZW50KVxuICAgIGNvbnN0IGNvbnRleHQgPSBjb250ZXh0QnlFbGVtZW50KGVsZW1lbnQpXG5cbiAgICByZXR1cm4gW1xuICAgICAge25hbWU6ICdjb250ZXh0JywgdmFsdWU6IGVuY29kZVVSSUNvbXBvbmVudChjb250ZXh0KX0sXG4gICAgICB7bmFtZTogbm9uY2VOYW1lLCB2YWx1ZTogZW5jb2RlVVJJQ29tcG9uZW50KG5vbmNlVmFsdWUpfSxcbiAgICBdXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlTm9uY2VGb3JDYXJ0IChlbGVtZW50KVxue1xuICBjb25zdCBub25jZUVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcihgLiR7Q0FSVF9CVVRUT05fU0VMRUNUT1J9YClcblxuICBpZiAoIW5vbmNlRWxlbWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGJ1aWxkIHRoZSBmb3JtIGRhdGEsIG1pc3Npbmcgc2VjdXJpdHkgbm9uY2UuJylcbiAgfVxuXG4gIGNvbnN0IG5vbmNlTmFtZSA9ICgnbm9uY2VuYW1lJyBpbiBub25jZUVsZW1lbnQuZGF0YXNldCkgPyBub25jZUVsZW1lbnQuZGF0YXNldC5ub25jZW5hbWUgOiAnJ1xuICBjb25zdCBub25jZVZhbHVlID0gKCdub25jZXZhbHVlJyBpbiBub25jZUVsZW1lbnQuZGF0YXNldCkgPyBub25jZUVsZW1lbnQuZGF0YXNldC5ub25jZXZhbHVlIDogJydcblxuICBpZiAoIW5vbmNlTmFtZSB8fCAhbm9uY2VWYWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGJ1aWxkIHRoZSBmb3JtIGRhdGEsIG1pc3Npbmcgc2VjdXJpdHkgbm9uY2UuJylcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgbm9uY2VOYW1lLFxuICAgIG5vbmNlVmFsdWUsXG4gIF1cbn1cbiIsImltcG9ydCB7IGZvcm1EYXRhQnlFbGVtZW50LCBmb3JtRGF0YUZvckNhcnQgfSBmcm9tICcuL2Zvcm0nXG5pbXBvcnQgeyBjb250ZXh0QnlFbGVtZW50IH0gZnJvbSAnLi9jb250ZXh0J1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi4vdXRpbHMnXG5cbmNvbnN0IFNJTkdMRV9QUk9EVUNUX0JVVFRPTiA9ICdwYXlwYWxwbHVzX2Vjc19zaW5nbGVfcHJvZHVjdF9idXR0b24nXG5jb25zdCBDQVJUX0JVVFRPTiA9ICdwYXlwYWxwbHVzX2Vjc19jYXJ0X2J1dHRvbidcblxuY29uc3QgVEFTS19DUkVBVEVfT1JERVIgPSAnY3JlYXRlT3JkZXInXG5jb25zdCBUQVNLX1NUT1JFX1BBWU1FTlRfREFUQSA9ICdzdG9yZVBheW1lbnREYXRhJ1xuXG4vKipcbiAqIFJldHJpZXZlIEZvcm0gRGF0YSB2YWx1ZXMgYnkgdGhlIEdpdmVuIEVsZW1lbnQgYW5kIGNvbnRleHRcbiAqXG4gKiBAcGFyYW1zIGVsZW1lbnRcbiAqIEBwYXJhbXMge0FycmF5fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIGZvcm1EYXRhQnlDb250ZXh0IChlbGVtZW50LCB2YWxpZENvbnRleHRzKVxue1xuICBsZXQgZm9ybURhdGEgPSBbXVxuICBjb25zdCBjb250ZXh0ID0gY29udGV4dEJ5RWxlbWVudChlbGVtZW50KVxuXG4gIGlmICgtMSA9PT0gdmFsaWRDb250ZXh0cy5pbmRleE9mKGNvbnRleHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludmFsaWQgY29udGV4dCB3aGVuIHRyeSB0byByZXRyaWV2ZSB0aGUgZm9ybSBkYXRhIGR1cmluZyBleHByZXNzIGNoZWNrb3V0IHJlcXVlc3QuJyxcbiAgICApXG4gIH1cblxuICB0cnkge1xuICAgIHN3aXRjaCAoY29udGV4dCkge1xuICAgICAgY2FzZSAnY2FydCc6XG4gICAgICAgIGZvcm1EYXRhID0gZm9ybURhdGFGb3JDYXJ0KGVsZW1lbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwcm9kdWN0JzpcbiAgICAgICAgZm9ybURhdGEgPSBmb3JtRGF0YUJ5RWxlbWVudChlbGVtZW50KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gIH1cblxuICByZXR1cm4gZm9ybURhdGFcbn1cblxuLyoqXG4gKiBDbGFzcyBTbWFydCBQYXltZW50IEJ1dHRvbiBSZW5kZXJlclxuICpcbiAqIEB0eXBlIHtTbWFydFBheW1lbnRCdXR0b25SZW5kZXJlcn1cbiAqL1xuY29uc3QgU21hcnRQYXltZW50QnV0dG9uUmVuZGVyZXIgPSBjbGFzcyBTbWFydFBheW1lbnRCdXR0b25SZW5kZXJlclxue1xuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICpcbiAgICogQHBhcmFtIGJ1dHRvbkNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHZhbGlkQ29udGV4dHNcbiAgICogQHBhcmFtIHJlcXVlc3RcbiAgICovXG4gIGNvbnN0cnVjdG9yIChidXR0b25Db25maWd1cmF0aW9uLCB2YWxpZENvbnRleHRzLCByZXF1ZXN0KVxuICB7XG4gICAgdGhpcy5idXR0b25Db25maWd1cmF0aW9uID0gYnV0dG9uQ29uZmlndXJhdGlvblxuICAgIHRoaXMuY2FuY2VsVXJsID0gdGhpcy5idXR0b25Db25maWd1cmF0aW9uLnJlZGlyZWN0X3VybHMuY2FuY2VsX3VybFxuICAgIHRoaXMudmFsaWRDb250ZXh0cyA9IHZhbGlkQ29udGV4dHNcbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGJ1dHRvbiBmb3Igc2luZ2xlIHByb2R1Y3RcbiAgICovXG4gIHNpbmdsZVByb2R1Y3RCdXR0b25SZW5kZXIgKClcbiAge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtTSU5HTEVfUFJPRFVDVF9CVVRUT059YClcbiAgICBlbGVtZW50ICYmIHRoaXMucmVuZGVyKGVsZW1lbnQpXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIEJ1dHRvbiBmb3IgQ2FydFxuICAgKi9cbiAgY2FydEJ1dHRvblJlbmRlciAoKVxuICB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0NBUlRfQlVUVE9OfWApXG4gICAgZWxlbWVudCAmJiB0aGlzLnJlbmRlcihlbGVtZW50KVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBCdXR0b24gZm9yIHRoZSBHaXZlbiBFbGVtZW50XG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEByZXR1cm5zIHsqfVxuICAgKi9cbiAgLy8gVE9ETyBNYWtlIGl0IHByaXZhdGVcbiAgcmVuZGVyIChlbGVtZW50KVxuICB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQocGF5cGFsKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYnV0dG9uID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucGF5cGFsLWJ1dHRvbicpXG4gICAgYnV0dG9uICYmIGJ1dHRvbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGJ1dHRvbilcblxuICAgIHBheXBhbC5CdXR0b24ucmVuZGVyKHtcbiAgICAgIC4uLnRoaXMuYnV0dG9uQ29uZmlndXJhdGlvbixcblxuICAgICAgLyoqXG4gICAgICAgKiBEbyBQYXltZW50XG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMgeyp9XG4gICAgICAgKi9cbiAgICAgIHBheW1lbnQ6ICgpID0+IHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gZm9ybURhdGFCeUNvbnRleHQoZWxlbWVudCwgdGhpcy52YWxpZENvbnRleHRzKVxuICAgICAgICBmb3JtRGF0YSA9IGZvcm1EYXRhLmNvbmNhdChbe25hbWU6ICd0YXNrJywgdmFsdWU6IFRBU0tfQ1JFQVRFX09SREVSfV0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFxuICAgICAgICAgIC5zdWJtaXQoZm9ybURhdGEpXG4gICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gcHJvY2VzcyB0aGUgcGF5bWVudCwgc2VydmVyIGRpZCBub3QgcmVzcG9uc2Ugd2l0aCB2YWxpZCBkYXRhJylcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSB0aGlzLmNhbmNlbFVybFxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXRpbHMucmVkaXJlY3RVcmxCeVJlcXVlc3QocmVzcG9uc2UsIHRoaXMuY2FuY2VsVXJsKVxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb3JkZXJJZCA9ICdvcmRlcklkJyBpbiByZXNwb25zZS5kYXRhID8gcmVzcG9uc2UuZGF0YS5vcmRlcklkIDogJydcblxuICAgICAgICAgICAgaWYgKCFvcmRlcklkKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXRpbHMucmVkaXJlY3RVcmxCeVJlcXVlc3QocmVzcG9uc2UsIHRoaXMuY2FuY2VsVXJsKVxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9yZGVySWRcbiAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0U3RhdHVzID0gJ3RleHRTdGF0dXMnIGluIGVycm9yID8gZXJyb3IudGV4dFN0YXR1cyA6ICdVbmtub3duIEVycm9yIGR1cmluZyBwYXltZW50J1xuICAgICAgICAgICAgY29uc29sZS53YXJuKHRleHRTdGF0dXMpXG4gICAgICAgICAgfSlcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRXhlY3V0ZSBBdXRob3JpemF0aW9uXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtBcnJheX0gZGF0YVxuICAgICAgICogQHBhcmFtIGFjdGlvbnNcbiAgICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAgICovXG4gICAgICBvbkF1dGhvcml6ZTogKGRhdGEsIGFjdGlvbnMpID0+IHtcbiAgICAgICAgLy8gVE9ETyBFbnN1cmUgcmV0dXJuX3VybCBleGlzdHMuXG4gICAgICAgIGxldCBmb3JtRGF0YSA9IGZvcm1EYXRhQnlDb250ZXh0KGVsZW1lbnQsIHRoaXMudmFsaWRDb250ZXh0cylcblxuICAgICAgICBmb3JtRGF0YSA9IGZvcm1EYXRhLmNvbmNhdChmb3JtRGF0YSwgW1xuICAgICAgICAgIHtuYW1lOiAndGFzaycsIHZhbHVlOiBUQVNLX1NUT1JFX1BBWU1FTlRfREFUQX0sXG4gICAgICAgICAge25hbWU6ICdvcmRlcklkJywgdmFsdWU6IGVuY29kZVVSSUNvbXBvbmVudChkYXRhLk9yZGVySUQpfSxcbiAgICAgICAgICB7bmFtZTogJ1BheWVySUQnLCB2YWx1ZTogZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEucGF5ZXJJRCl9LFxuICAgICAgICAgIHtuYW1lOiAncGF5bWVudElkJywgdmFsdWU6IGVuY29kZVVSSUNvbXBvbmVudChkYXRhLnBheW1lbnRJRCl9LFxuICAgICAgICAgIHtuYW1lOiAndG9rZW4nLCB2YWx1ZTogZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEucGF5bWVudFRva2VuKX0sXG4gICAgICAgIF0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdC5zdWJtaXQoZm9ybURhdGEpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXRpbHMucmVkaXJlY3RVcmxCeVJlcXVlc3QocmVzcG9uc2UsIHRoaXMuY2FuY2VsVXJsKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcmV0dXJuVXJsID0gJydcblxuICAgICAgICAgIGlmICgncmVkaXJlY3RfdXJscycgaW4gdGhpcy5idXR0b25Db25maWd1cmF0aW9uXG4gICAgICAgICAgICAmJiAncmV0dXJuX3VybCcgaW4gdGhpcy5idXR0b25Db25maWd1cmF0aW9uLnJlZGlyZWN0X3VybHNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVyblVybCA9IHRoaXMuYnV0dG9uQ29uZmlndXJhdGlvbi5yZWRpcmVjdF91cmxzLnJldHVybl91cmxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm5VcmwgJiYgYWN0aW9ucy5yZWRpcmVjdChudWxsLCByZXR1cm5VcmwpXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFBlcmZvcm0gQWN0aW9uIHdoZW4gYSBQYXltZW50IGdldCBDYW5jZWxsZWRcbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAgICogQHBhcmFtIGFjdGlvbnNcbiAgICAgICAqL1xuICAgICAgb25DYW5jZWw6IChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgIGFjdGlvbnMuY2xvc2UoKVxuICAgICAgICBjb25zdCBjYW5jZWxVcmwgPSAnY2FuY2VsVXJsJyBpbiBkYXRhID8gZGF0YS5jYW5jZWxVcmwgOiAnJ1xuICAgICAgICBjYW5jZWxVcmwgJiYgYWN0aW9ucy5yZWRpcmVjdChudWxsLCBjYW5jZWxVcmwpXG4gICAgICB9LFxuXG4gICAgICBvbkVycm9yOiAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnT04gRVJST1InLCBkYXRhLCBhY3Rpb25zKVxuICAgICAgICAvLyBUT0RPIFJlZGlyZWN0IHRvIGNhcnQgYW5kIHNob3cgY3VzdG9taXphYmxlIG5vdGljZSB3aXRoIG1lc3NhZ2UuXG4gICAgICB9LFxuXG4gICAgfSwgZWxlbWVudClcbiAgfVxufVxuXG4vKipcbiAqIFNtYXJ0IFBheW1lbnQgQnV0dG9uIFJlbmRlcmVyIEZhY3RvcnlcbiAqXG4gKiBAcGFyYW0gYnV0dG9uQ29uZmlndXJhdGlvblxuICogQHBhcmFtIHZhbGlkQ29udGV4dHNcbiAqIEBwYXJhbSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7U21hcnRQYXltZW50QnV0dG9uUmVuZGVyZXJ9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyRmFjdG9yeSAoYnV0dG9uQ29uZmlndXJhdGlvbiwgdmFsaWRDb250ZXh0cywgcmVxdWVzdClcbntcbiAgY29uc3Qgb2JqZWN0ID0gbmV3IFNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyKGJ1dHRvbkNvbmZpZ3VyYXRpb24sIHZhbGlkQ29udGV4dHMsIHJlcXVlc3QpXG5cbiAgT2JqZWN0LmZyZWV6ZShvYmplY3QpXG5cbiAgcmV0dXJuIG9iamVjdFxufVxuIiwiaW1wb3J0IHsgUmVxdWVzdEZhY3RvcnkgfSBmcm9tICcuL2V4cHJlc3NDaGVja291dC9SZXF1ZXN0J1xuaW1wb3J0IHsgU21hcnRQYXltZW50QnV0dG9uUmVuZGVyZXJGYWN0b3J5IH0gZnJvbSAnLi9leHByZXNzQ2hlY2tvdXQvc21hcnRQYXltZW50QnV0dG9uJ1xuXG4oZnVuY3Rpb24gKGpRdWVyeSwgXywgZXhwcmVzc0NoZWNrb3V0RGF0YSkge1xuICAvKipcbiAgICogRW5zdXJlIHRoZSBHbG9iYWwgRXhwcmVzcyBDaGVja291dCBpcyBhIFZhbGlkIFZhbHVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZnVuY3Rpb24gaXNWYWxpZEV4cHJlc3NDaGVja291dERhdGEgKClcbiAge1xuICAgIHJldHVybiAhXy5pc1VuZGVmaW5lZChleHByZXNzQ2hlY2tvdXREYXRhKSAmJiAhXy5pc0VtcHR5KGV4cHJlc3NDaGVja291dERhdGEpXG4gIH1cblxuICAvKipcbiAgICogQm9vdHN0cmFwIEV4cHJlc3MgY2hlY2tvdXRcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgZnVuY3Rpb24gYm9vdHN0cmFwRXhwcmVzc0NoZWNrb3V0ICgpXG4gIHtcbiAgICBpZiAoIWlzVmFsaWRFeHByZXNzQ2hlY2tvdXREYXRhKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gZXhwcmVzc0NoZWNrb3V0RGF0YS5yZXF1ZXN0XG4gICAgaWYgKCFfLmlzT2JqZWN0KHJlcXVlc3REYXRhKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRDb250ZXh0cyA9IGV4cHJlc3NDaGVja291dERhdGEudmFsaWRDb250ZXh0c1xuICAgIGlmICghXy5pc0FycmF5KHZhbGlkQ29udGV4dHMpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gUmVxdWVzdEZhY3RvcnkocmVxdWVzdERhdGEuYWpheFVybCwgcmVxdWVzdERhdGEuYWN0aW9uKVxuICAgIGNvbnN0IHNtYXJ0UGF5bWVudEJ1dHRvbiA9IFNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyRmFjdG9yeShcbiAgICAgIGV4cHJlc3NDaGVja291dERhdGEsXG4gICAgICB2YWxpZENvbnRleHRzLFxuICAgICAgcmVxdWVzdCxcbiAgICApXG5cbiAgICBzbWFydFBheW1lbnRCdXR0b24uc2luZ2xlUHJvZHVjdEJ1dHRvblJlbmRlcigpXG4gICAgc21hcnRQYXltZW50QnV0dG9uLmNhcnRCdXR0b25SZW5kZXIoKVxuICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbihcbiAgICAgICd3Y19mcmFnbWVudHNfcmVmcmVzaGVkIHdjX2ZyYWdtZW50c19sb2FkZWQgcmVtb3ZlZF9mcm9tX2NhcnQgYWRkZWRfdG9fY2FydCcsICgpID0+IHtcbiAgICAgICAgc21hcnRQYXltZW50QnV0dG9uLmNhcnRCdXR0b25SZW5kZXIoKVxuICAgICAgfSlcbiAgfVxuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgIGJvb3RzdHJhcEV4cHJlc3NDaGVja291dCgpXG4gIH0pXG59KShqUXVlcnksIHdpbmRvdy5fLCB3aW5kb3cud29vUGF5UGFsUGx1c0V4cHJlc3NDaGVja291dClcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n")}]);1 !function(Q){var n={};function F(t){if(n[t])return n[t].exports;var =\n//# sourceURL=webpack-internal:///2\n")}]); 2 2 //# sourceMappingURL=expressCheckout.min.js.map -
woo-paypalplus/trunk/public/js/front.min.js
r2095829 r2227828 1 !function(n){var e={};function Q(B){if(e[B])return e[B].exports;var t=e[B]={i:B,l:!1,exports:{}};return n[B].call(t.exports,t,t.exports,Q),t.l=!0,t.exports}Q.m=n,Q.c=e,Q.d=function(n,e,B){Q.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:B})},Q.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},Q.t=function(n,e){if(1&e&&(n=Q(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var B=Object.create(null);if(Q.r(B),Object.defineProperty(B,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var t in n)Q.d(B,t,function(e){return n[e]}.bind(null,t));return B},Q.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return Q.d(e,"a",e),e},Q.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},Q.p="",Q(Q.s=4)}({4:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./resources/js/plusFrameView.js\nvar FRAME_SELECTOR = 'ppplus';\n/**\n * Retrieve the configuration from the json string attached to an element\n * @param frameElement\n * @returns {*}\n */\n\nfunction appConfigurationFromElement(frameElement) {\n if (!frameElement) {\n return null;\n }\n\n try {\n return JSON.parse(frameElement.dataset.config);\n } catch (e) {\n return null;\n }\n}\n/**\n * Setup the PayPal Application\n * @returns {*}\n */\n\n\nfunction bootstrapPayPalApp() {\n var frameElement = document.querySelector(\"#\".concat(FRAME_SELECTOR));\n var appConfiguration = appConfigurationFromElement(frameElement);\n\n if (typeof PAYPAL === 'undefined') {\n return;\n }\n\n if (!frameElement || !appConfiguration) {\n return;\n }\n\n return PAYPAL.apps.PPP(appConfiguration);\n}\n// CONCATENATED MODULE: ./resources/js/front.js\n\n\n(function (jQuery, _) {\n window.addEventListener('load', function () {\n // Isn't possible to listen on a jQuery event by using `addEventListener`\n jQuery(document.body).on('updated_checkout', function () {\n bootstrapPayPalApp();\n });\n });\n})(jQuery, _);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvcGx1c0ZyYW1lVmlldy5qcz8wNWFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9mcm9udC5qcz8xNGE4Il0sIm5hbWVzIjpbIkZSQU1FX1NFTEVDVE9SIiwiYXBwQ29uZmlndXJhdGlvbkZyb21FbGVtZW50IiwiZnJhbWVFbGVtZW50IiwiSlNPTiIsInBhcnNlIiwiZGF0YXNldCIsImNvbmZpZyIsImUiLCJib290c3RyYXBQYXlQYWxBcHAiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJhcHBDb25maWd1cmF0aW9uIiwiUEFZUEFMIiwiYXBwcyIsIlBQUCIsImpRdWVyeSIsIl8iLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiYm9keSIsIm9uIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNQSxjQUFjLEdBQUcsUUFBdkI7QUFFQTs7Ozs7O0FBS0EsU0FBU0MsMkJBQVQsQ0FBc0NDLFlBQXRDLEVBQ0E7QUFDRSxNQUFJLENBQUNBLFlBQUwsRUFBbUI7QUFDakIsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsTUFBSTtBQUNGLFdBQU9DLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixZQUFZLENBQUNHLE9BQWIsQ0FBcUJDLE1BQWhDLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1YsV0FBTyxJQUFQO0FBQ0Q7QUFDRjtBQUVEOzs7Ozs7QUFJTyxTQUFTQyxrQkFBVCxHQUNQO0FBQ0UsTUFBTU4sWUFBWSxHQUFHTyxRQUFRLENBQUNDLGFBQVQsWUFBMkJWLGNBQTNCLEVBQXJCO0FBQ0EsTUFBTVcsZ0JBQWdCLEdBQUdWLDJCQUEyQixDQUFDQyxZQUFELENBQXBEOztBQUVBLE1BQUksT0FBT1UsTUFBUCxLQUFrQixXQUF0QixFQUFtQztBQUNqQztBQUNEOztBQUNELE1BQUksQ0FBQ1YsWUFBRCxJQUFpQixDQUFDUyxnQkFBdEIsRUFBd0M7QUFDdEM7QUFDRDs7QUFFRCxTQUFPQyxNQUFNLENBQUNDLElBQVAsQ0FBWUMsR0FBWixDQUFnQkgsZ0JBQWhCLENBQVA7QUFDRCxDOztBQ3JDRDs7QUFFQSxDQUFDLFVBQVVJLE1BQVYsRUFBa0JDLENBQWxCLEVBQXFCO0FBQ3BCQyxRQUFNLENBQUNDLGdCQUFQLENBQXdCLE1BQXhCLEVBQWdDLFlBQU07QUFDcEM7QUFDQUgsVUFBTSxDQUFDTixRQUFRLENBQUNVLElBQVYsQ0FBTixDQUFzQkMsRUFBdEIsQ0FBeUIsa0JBQXpCLEVBQTZDLFlBQU07QUFDakRaLHdCQUFrQjtBQUNuQixLQUZEO0FBR0QsR0FMRDtBQU1ELENBUEQsRUFPR08sTUFQSCxFQU9XQyxDQVBYIiwiZmlsZSI6IjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBGUkFNRV9TRUxFQ1RPUiA9ICdwcHBsdXMnXG5cbi8qKlxuICogUmV0cmlldmUgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUganNvbiBzdHJpbmcgYXR0YWNoZWQgdG8gYW4gZWxlbWVudFxuICogQHBhcmFtIGZyYW1lRWxlbWVudFxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGFwcENvbmZpZ3VyYXRpb25Gcm9tRWxlbWVudCAoZnJhbWVFbGVtZW50KVxue1xuICBpZiAoIWZyYW1lRWxlbWVudCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGZyYW1lRWxlbWVudC5kYXRhc2V0LmNvbmZpZylcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBTZXR1cCB0aGUgUGF5UGFsIEFwcGxpY2F0aW9uXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcFBheVBhbEFwcCAoKVxue1xuICBjb25zdCBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtGUkFNRV9TRUxFQ1RPUn1gKVxuICBjb25zdCBhcHBDb25maWd1cmF0aW9uID0gYXBwQ29uZmlndXJhdGlvbkZyb21FbGVtZW50KGZyYW1lRWxlbWVudClcblxuICBpZiAodHlwZW9mIFBBWVBBTCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWZyYW1lRWxlbWVudCB8fCAhYXBwQ29uZmlndXJhdGlvbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgcmV0dXJuIFBBWVBBTC5hcHBzLlBQUChhcHBDb25maWd1cmF0aW9uKVxufVxuIiwiaW1wb3J0IHsgYm9vdHN0cmFwUGF5UGFsQXBwIH0gZnJvbSAnLi9wbHVzRnJhbWVWaWV3J1xuXG4oZnVuY3Rpb24gKGpRdWVyeSwgXykge1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAvLyBJc24ndCBwb3NzaWJsZSB0byBsaXN0ZW4gb24gYSBqUXVlcnkgZXZlbnQgYnkgdXNpbmcgYGFkZEV2ZW50TGlzdGVuZXJgXG4gICAgalF1ZXJ5KGRvY3VtZW50LmJvZHkpLm9uKCd1cGRhdGVkX2NoZWNrb3V0JywgKCkgPT4ge1xuICAgICAgYm9vdHN0cmFwUGF5UGFsQXBwKClcbiAgICB9KVxuICB9KVxufSkoalF1ZXJ5LCBfKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")}});1 !function(n){var KVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")}}); 2 2 //# sourceMappingURL=front.min.js.map -
woo-paypalplus/trunk/readme.txt
r2100278 r2227828 4 4 Requires at least: 4.4 5 5 Tested up to: 5.2 6 Stable tag: 2. 0.46 Stable tag: 2. 7 7 Requires PHP: 5.6 8 8 License: GPLv2+ … … 155 155 156 156 == Changelog == 157 158 159 160 161 162 163 164 165 157 166 = 2.0.4 = 158 167 - Fix: Compatibility with WooCommerce Admin plugin -
woo-paypalplus/trunk/src/Assets/AssetManager.php
r2095829 r2227828 17 17 { 18 18 use AssetManagerTrait; 19 20 19 21 20 22 /** … … 100 102 true 101 103 ); 104 105 106 107 108 109 110 111 102 112 103 113 $this->enqueuePayPalFrontEndScripts(); … … 178 188 'ajaxUrl' => home_url('/wp-admin/admin-ajax.php'), 179 189 ], 190 191 192 193 194 195 196 180 197 ]; 198 199 200 201 202 203 204 181 205 182 206 /** @noinspection AdditionOperationOnArraysInspection */ -
woo-paypalplus/trunk/src/Assets/PayPalAssetManager.php
r2069229 r2227828 48 48 public function enqueueFrontEndScripts() 49 49 { 50 51 52 53 54 55 56 57 58 59 60 50 61 if (!isGatewayDisabled($this->expressCheckoutGateway) 51 62 && !areAllExpressCheckoutButtonsDisabled() 52 63 ) { 53 wp_enqueue_script( 54 'paypal-express-checkout', 55 'https://www.paypalobjects.com/api/checkout.js', 56 [], 57 null, 58 true 59 ); 64 $fileUrl = 'https://www.paypalobjects.com/api/checkout.js'; 65 $fileVersion = null; 66 67 if (file_exists($expressCheckoutFilePath)) { 68 $fileUrl = "{$uploadUrl}/woo-paypalplus/resources/js/paypal/expressCheckout.min.js"; 69 $fileVersion = filemtime($expressCheckoutFilePath); 70 } 71 72 wp_enqueue_script('paypal-express-checkout', $fileUrl, [], $fileVersion, true); 60 73 } 61 74 62 if ($this->isCheckout() && !isGatewayDisabled($this->plusGateway)) { 63 wp_enqueue_script( 64 'ppplus', 65 'https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js', 66 [], 67 null 68 ); 75 if ($this->isCheckout() 76 && !isGatewayDisabled($this->plusGateway) 77 ) { 78 $fileUrl = 'https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js'; 79 $fileVersion = null; 80 81 if (file_exists($paypalPlusFilePath)) { 82 $fileUrl = "{$uploadUrl}/woo-paypalplus/resources/js/paypal/payPalplus.min.js"; 83 $fileVersion = filemtime($paypalPlusFilePath); 84 } 85 86 wp_enqueue_script('ppplus', $fileUrl, [], $fileVersion, true); 69 87 } 70 88 } -
woo-paypalplus/trunk/src/ExpressCheckoutGateway/Gateway.php
r2069229 r2227828 14 14 use WCPayPalPlus\Gateway\MethodsTrait; 15 15 use WCPayPalPlus\Order\OrderFactory; 16 16 17 use WCPayPalPlus\Payment\PaymentPatcher; 17 18 use WCPayPalPlus\Payment\PaymentPatchFactory; 18 19 use WCPayPalPlus\Payment\PaymentProcessException; 20 19 21 use WCPayPalPlus\Session\SessionCleaner; 20 22 use WCPayPalPlus\Setting\ExpressCheckoutRepositoryTrait; … … 114 116 115 117 /** 118 119 120 121 122 123 124 125 126 127 116 128 * Gateway constructor. 117 129 * @param WooCommerce $wooCommerce … … 127 139 * @param ApiErrorExtractor $apiErrorDataExtractor 128 140 * @param SessionCleaner $sessionCleaner 141 142 129 143 */ 130 144 public function __construct( … … 140 154 Logger $logger, 141 155 ApiErrorExtractor $apiErrorDataExtractor, 142 SessionCleaner $sessionCleaner 156 SessionCleaner $sessionCleaner, 157 PaymentIdValidator $paymentIdValidator, 158 PaymentSessionDestructor $paymentSessionDestructor 143 159 ) { 144 160 … … 174 190 'refunds', 175 191 ]; 192 193 176 194 } 177 195 … … 194 212 $this->session->set(Session::ORDER_ID, $orderId); 195 213 196 if (!$payerId || !$ paymentId || !$orderId) {214 if (!$payerId || !$orderId) { 197 215 throw PaymentProcessException::forInsufficientData(); 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 198 236 } 199 237 -
woo-paypalplus/trunk/src/ExpressCheckoutGateway/ServiceProvider.php
r2095829 r2227828 15 15 use WCPayPalPlus\Nonce; 16 16 use WCPayPalPlus\Payment\PaymentCreatorFactory; 17 17 18 use WCPayPalPlus\Payment\PaymentPatchFactory; 19 18 20 use WCPayPalPlus\Session\Session; 19 21 use WCPayPalPlus\Session\SessionCleaner; … … 65 67 $container[Logger::class], 66 68 $container[ApiErrorExtractor::class], 67 $container[SessionCleaner::class] 69 $container[SessionCleaner::class], 70 $container[PaymentIdValidator::class], 71 $container[PaymentSessionDestructor::class] 68 72 ); 69 73 }; -
woo-paypalplus/trunk/src/Install/Installer.php
r2069229 r2227828 6 6 namespace WCPayPalPlus\Install; 7 7 8 8 9 use WCPayPalPlus\Setting\SharedPersistor; 9 10 … … 22 23 23 24 /** 25 26 27 28 29 24 30 * Installer constructor. 25 31 * @param SharedPersistor $sharedPersistor 32 26 33 */ 27 public function __construct(SharedPersistor $sharedPersistor) 28 { 34 public function __construct( 35 SharedPersistor $sharedPersistor, 36 AssetsStoreUpdater $assetsStoreUpdater 37 ) { 38 29 39 $this->sharedPersistor = $sharedPersistor; 40 30 41 } 31 42 … … 36 47 { 37 48 $this->migrateSharedOptions(); 49 38 50 } 39 51 -
woo-paypalplus/trunk/src/Install/ServiceProvider.php
r2069229 r2227828 7 7 8 8 use WCPayPalPlus\ExpressCheckoutGateway\Gateway as ExpressCheckoutGateway; 9 9 10 use WCPayPalPlus\Service\BootstrappableServiceProvider; 10 11 use WCPayPalPlus\Service\Container; … … 24 25 $container[Installer::class] = function (Container $container) { 25 26 return new Installer( 26 $container[SharedPersistor::class] 27 $container[SharedPersistor::class], 28 $container->get(AssetsStoreUpdater::class) 27 29 ); 28 30 }; -
woo-paypalplus/trunk/src/Order/OrderFactory.php
r2100278 r2227828 27 27 assert(is_string($orderKey)); 28 28 29 29 30 $orderKey = $this->orderKeyByJson($orderKey); 30 31 // Cast to int because the function return a int as string. … … 70 71 * @param $customData 71 72 * @return string 72 * @deprecated since 2.0.0 This will be removed in a future version73 73 */ 74 74 private function orderKeyByJson($customData) -
woo-paypalplus/trunk/src/Payment/PatchProvider.php
r2069229 r2227828 21 21 use ItemsProviderTrait; 22 22 23 24 23 25 const RECEIPT_NAME = 'recipient_name'; 24 26 const LINE_ONE = 'line1'; … … 29 31 const COUNTRY_CODE = 'country_code'; 30 32 33 34 35 36 37 38 31 39 /** 32 40 * WooCommerce Order object. … … 79 87 public function custom() 80 88 { 81 $custom_patch = new Patch(); 82 $custom_patch 83 ->setOp('add') 84 ->setPath('/transactions/0/custom') 85 ->setValue($this->order->get_order_key()); 86 87 return $custom_patch; 89 $patch = new Patch(); 90 $orderId = $this->order->get_id(); 91 $value = $orderKey = $this->order->get_order_key(); 92 93 $patch 94 ->setOp(self::CUSTOM_OPERATION) 95 ->setPath(self::CUSTOM_PATH); 96 97 /** 98 * Use Legacy Custom Patch Data 99 * 100 * Use the solution provided in version 1.x 101 * 102 * @param bool $false True must be returned in order to use the old approach 103 */ 104 $useLegacyCustomPatchData = apply_filters(self::FILTER_USE_LEGACY_CUSTOM_PATCH_DATA, false); 105 106 if ($useLegacyCustomPatchData) { 107 $value = wp_json_encode( 108 [ 109 self::WOOCOMMERCE_ORDER_ID_NAME => $orderId, 110 self::WOOCOMMERCE_ORDER_KEY_NAME => $orderKey, 111 ] 112 ); 113 } 114 115 $patch->setValue($value); 116 117 return $patch; 88 118 } 89 119 -
woo-paypalplus/trunk/src/Payment/ServiceProvider.php
r2069229 r2227828 6 6 namespace WCPayPalPlus\Payment; 7 7 8 8 9 use WCPayPalPlus\Gateway\CurrentPaymentMethod; 9 10 use WCPayPalPlus\Order\OrderDataProviderFactory; 10 11 use WCPayPalPlus\Session\Session; 11 use WCPayPalPlus\Order\OrderFactory;12 12 use WCPayPalPlus\Service\BootstrappableServiceProvider; 13 13 use WCPayPalPlus\Service\Container; … … 41 41 ); 42 42 }; 43 44 45 46 47 48 43 49 } 44 50 -
woo-paypalplus/trunk/src/PlusGateway/PaymentExecution.php
r2069229 r2227828 13 13 use WCPayPalPlus\Order\OrderFactory; 14 14 use WCPayPalPlus\Payment\PaymentExecutionFactory; 15 15 16 use WCPayPalPlus\Payment\PaymentPatcher; 17 16 18 use WCPayPalPlus\Request\Request; 17 19 use WCPayPalPlus\Session\Session; … … 58 60 59 61 /** 62 63 64 65 66 67 68 69 70 71 60 72 * PaymentExecution constructor. 61 73 * @param OrderFactory $orderFactory … … 65 77 * @param CheckoutDropper $checkoutDropper 66 78 * @param ApiErrorExtractor $apiErrorDataExtractor 79 80 67 81 */ 68 82 public function __construct( … … 72 86 Logger $logger, 73 87 CheckoutDropper $checkoutDropper, 74 ApiErrorExtractor $apiErrorDataExtractor 88 ApiErrorExtractor $apiErrorDataExtractor, 89 PaymentIdValidator $paymentIdValidator, 90 PaymentSessionDestructor $paymentSessionDestructor 75 91 ) { 76 92 … … 81 97 $this->checkoutDropper = $checkoutDropper; 82 98 $this->apiErrorDataExtractor = $apiErrorDataExtractor; 99 100 83 101 } 84 102 … … 97 115 $paymentId = $this->session->get(Session::PAYMENT_ID); 98 116 } 99 if (!$payerId || !$ paymentId || !$orderId) {117 if (!$payerId || !$orderId) { 100 118 return; 119 120 121 122 123 124 125 126 127 128 129 101 130 } 102 131 -
woo-paypalplus/trunk/src/PlusGateway/ServiceProvider.php
r2069755 r2227828 12 12 use WCPayPalPlus\Api\CredentialValidator; 13 13 use WCPayPalPlus\Order\OrderFactory; 14 15 14 16 use WCPayPalPlus\Refund\RefundFactory; 15 17 use WCPayPalPlus\Service\BootstrappableServiceProvider; … … 71 73 $container[Logger::class], 72 74 $container[CheckoutDropper::class], 73 $container[ApiErrorExtractor::class] 75 $container[ApiErrorExtractor::class], 76 $container[PaymentIdValidator::class], 77 $container[PaymentSessionDestructor::class] 74 78 ); 75 79 }; -
woo-paypalplus/trunk/src/Service/Container.php
r2069229 r2227828 9 9 * Append-only container implementation to be used for dependency management. 10 10 */ 11 finalclass Container implements \ArrayAccess11 class Container implements \ArrayAccess 12 12 { 13 13 /** -
woo-paypalplus/trunk/src/Uninstall/Uninstaller.php
r2069229 r2227828 6 6 namespace WCPayPalPlus\Uninstall; 7 7 8 8 9 use WCPayPalPlus\Notice\DismissibleNoticeOption; 9 10 use WCPayPalPlus\Setting\SharedPersistor; 10 11 use WCPayPalPlus\Utils\NetworkState; 12 11 13 use wpdb; 12 14 … … 28 30 29 31 /** 32 33 34 35 36 37 38 39 40 41 30 42 * Uninstaller constructor. 31 43 * @param wpdb $wpdb 44 32 45 */ 33 public function __construct(wpdb $wpdb )46 public function __construct(wpdb $wpdb) 34 47 { 35 48 $this->wpdb = $wpdb; 49 36 50 } 37 51 … … 56 70 57 71 $this->cleanUp(); 72 58 73 } 59 74 … … 65 80 $this->deleteOptions(); 66 81 $this->cleanUp(); 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 67 102 } 68 103 -
woo-paypalplus/trunk/src/WC/RedirectablePatcher.php
r2069229 r2227828 11 11 use WCPayPalPlus\Api\ErrorData\ApiErrorExtractor; 12 12 use WCPayPalPlus\Order\OrderFactory; 13 14 13 15 use WCPayPalPlus\Setting\PlusStorable; 14 16 use WCPayPalPlus\Payment\PaymentPatchFactory; … … 58 60 59 61 /** 62 63 64 65 66 67 68 69 70 71 60 72 * ReceiptPageRenderer constructor. 61 73 * @param OrderFactory $orderFactory … … 66 78 * @param Logger $logger 67 79 * @param ApiErrorExtractor $apiErrorDataExtractor 80 81 68 82 */ 69 83 public function __construct( … … 74 88 CheckoutDropper $checkoutDropper, 75 89 Logger $logger, 76 ApiErrorExtractor $apiErrorDataExtractor 90 ApiErrorExtractor $apiErrorDataExtractor, 91 PaymentIdValidator $paymentIdValidator, 92 PaymentSessionDestructor $paymentSessionDestructor 77 93 ) { 78 94 … … 84 100 $this->logger = $logger; 85 101 $this->apiErrorDataExtractor = $apiErrorDataExtractor; 102 103 86 104 } 87 105 … … 100 118 101 119 $paymentId or $this->abortPatchingBecausePaymentId($paymentId); 120 121 122 123 124 125 102 126 103 127 $paymentPatcher = $this->paymentPatchFactory->create( -
woo-paypalplus/trunk/src/WC/ServiceProvider.php
r2069229 r2227828 9 9 use WCPayPalPlus\Api\ErrorData\ApiErrorExtractor; 10 10 use WCPayPalPlus\Order\OrderFactory; 11 12 11 13 use WCPayPalPlus\PlusGateway\Gateway; 12 14 use WCPayPalPlus\Service\Container; … … 46 48 $container[CheckoutDropper::class], 47 49 $container[Logger::class], 48 $container[ApiErrorExtractor::class] 50 $container[ApiErrorExtractor::class], 51 $container[PaymentIdValidator::class], 52 $container[PaymentSessionDestructor::class] 49 53 ); 50 54 }; -
woo-paypalplus/trunk/uninstall.php
r2056778 r2227828 10 10 11 11 $autoload = __DIR__ . '/vendor/autoload.php'; 12 12 13 13 14 if (file_exists($autoload)) { … … 19 20 } 20 21 21 global $wpdb; 22 $container = resolve(); 23 $bootstrapper = new Bootstrapper($container, __DIR__ . '/paypalplus-woocommerce.php'); 24 $bootstrapper->bootstrap(); 22 25 23 $uninstaller = new Uninstaller($wpdb);26 $uninstaller = ); 24 27 25 28 is_multisite() -
woo-paypalplus/trunk/vendor/autoload.php
r2100278 r2227828 5 5 require_once __DIR__ . '/composer/autoload_real.php'; 6 6 7 return ComposerAutoloaderInit d82b2a1638ef3528ffa365d01a10c77a::getLoader();7 return ComposerAutoloaderInit::getLoader(); -
woo-paypalplus/trunk/vendor/composer/autoload_classmap.php
r2072938 r2227828 214 214 'WCPayPalPlus\\Assets\\ServiceProvider' => $baseDir . '/src/Assets/ServiceProvider.php', 215 215 'WCPayPalPlus\\Assets\\SmartButtonArguments' => $baseDir . '/src/Assets/SmartButtonArguments.php', 216 217 218 219 216 220 'WCPayPalPlus\\ExpressCheckoutGateway\\AjaxHandler' => $baseDir . '/src/ExpressCheckoutGateway/AjaxHandler.php', 217 221 'WCPayPalPlus\\ExpressCheckoutGateway\\CartButtonView' => $baseDir . '/src/ExpressCheckoutGateway/CartButtonView.php', … … 230 234 'WCPayPalPlus\\Gateway\\MethodsTrait' => $baseDir . '/src/Gateway/MethodsTrait.php', 231 235 'WCPayPalPlus\\Gateway\\ServiceProvider' => $baseDir . '/src/Gateway/ServiceProvider.php', 236 237 238 239 240 232 241 'WCPayPalPlus\\Install\\Installer' => $baseDir . '/src/Install/Installer.php', 233 242 'WCPayPalPlus\\Install\\ServiceProvider' => $baseDir . '/src/Install/ServiceProvider.php', … … 269 278 'WCPayPalPlus\\Payment\\PaymentExecutionFactory' => $baseDir . '/src/Payment/PaymentExecutionFactory.php', 270 279 'WCPayPalPlus\\Payment\\PaymentExecutionSuccess' => $baseDir . '/src/Payment/PaymentExecutionSuccess.php', 280 271 281 'WCPayPalPlus\\Payment\\PaymentPatchData' => $baseDir . '/src/Payment/PaymentPatchData.php', 272 282 'WCPayPalPlus\\Payment\\PaymentPatchFactory' => $baseDir . '/src/Payment/PaymentPatchFactory.php', … … 274 284 'WCPayPalPlus\\Payment\\PaymentPerformer' => $baseDir . '/src/Payment/PaymentPerformer.php', 275 285 'WCPayPalPlus\\Payment\\PaymentProcessException' => $baseDir . '/src/Payment/PaymentProcessException.php', 286 276 287 'WCPayPalPlus\\Payment\\ServiceProvider' => $baseDir . '/src/Payment/ServiceProvider.php', 277 288 'WCPayPalPlus\\PluginProperties' => $baseDir . '/src/PluginProperties.php', … … 329 340 'WCPayPalPlus\\Setting\\SharedSettingsModel' => $baseDir . '/src/Setting/SharedSettingsModel.php', 330 341 'WCPayPalPlus\\Setting\\Storable' => $baseDir . '/src/Setting/Storable.php', 342 331 343 'WCPayPalPlus\\Uninstall\\Uninstaller' => $baseDir . '/src/Uninstall/Uninstaller.php', 332 344 'WCPayPalPlus\\Utils\\AjaxJsonRequest' => $baseDir . '/src/Utils/AjaxJsonRequest.php', -
woo-paypalplus/trunk/vendor/composer/autoload_files.php
r2056778 r2227828 8 8 return array( 9 9 'ae8941c661623a45e24109134a8c2b19' => $vendorDir . '/brain/nonces/inc/helpers.php', 10 '20f86fbd3fee21c74310ef0ebd64eec8' => $baseDir . '/src/inc/functions.php',11 10 ); -
woo-paypalplus/trunk/vendor/composer/autoload_real.php
r2100278 r2227828 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit d82b2a1638ef3528ffa365d01a10c77a5 class ComposerAutoloaderInit 6 6 { 7 7 private static $loader; … … 20 20 } 21 21 22 spl_autoload_register(array('ComposerAutoloaderInit d82b2a1638ef3528ffa365d01a10c77a', 'loadClassLoader'), true, true);22 spl_autoload_register(array('ComposerAutoloaderInit', 'loadClassLoader'), true, true); 23 23 self::$loader = $loader = new \Composer\Autoload\ClassLoader(); 24 spl_autoload_unregister(array('ComposerAutoloaderInit d82b2a1638ef3528ffa365d01a10c77a', 'loadClassLoader'));24 spl_autoload_unregister(array('ComposerAutoloaderInit', 'loadClassLoader')); 25 25 26 26 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); … … 28 28 require_once __DIR__ . '/autoload_static.php'; 29 29 30 call_user_func(\Composer\Autoload\ComposerStaticInit d82b2a1638ef3528ffa365d01a10c77a::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit::getInitializer($loader)); 31 31 } else { 32 32 $map = require __DIR__ . '/autoload_namespaces.php'; … … 49 49 50 50 if ($useStaticLoader) { 51 $includeFiles = Composer\Autoload\ComposerStaticInit d82b2a1638ef3528ffa365d01a10c77a::$files;51 $includeFiles = Composer\Autoload\ComposerStaticInit::$files; 52 52 } else { 53 53 $includeFiles = require __DIR__ . '/autoload_files.php'; 54 54 } 55 55 foreach ($includeFiles as $fileIdentifier => $file) { 56 composerRequire d82b2a1638ef3528ffa365d01a10c77a($fileIdentifier, $file);56 composerRequire($fileIdentifier, $file); 57 57 } 58 58 … … 61 61 } 62 62 63 function composerRequire d82b2a1638ef3528ffa365d01a10c77a($fileIdentifier, $file)63 function composerRequire($fileIdentifier, $file) 64 64 { 65 65 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
woo-paypalplus/trunk/vendor/composer/autoload_static.php
r2100278 r2227828 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit d82b2a1638ef3528ffa365d01a10c77a7 class ComposerStaticInit 8 8 { 9 9 public static $files = array ( 10 10 'ae8941c661623a45e24109134a8c2b19' => __DIR__ . '/..' . '/brain/nonces/inc/helpers.php', 11 '20f86fbd3fee21c74310ef0ebd64eec8' => __DIR__ . '/../..' . '/src/inc/functions.php',12 11 ); 13 12 … … 250 249 'WCPayPalPlus\\Assets\\ServiceProvider' => __DIR__ . '/../..' . '/src/Assets/ServiceProvider.php', 251 250 'WCPayPalPlus\\Assets\\SmartButtonArguments' => __DIR__ . '/../..' . '/src/Assets/SmartButtonArguments.php', 251 252 253 254 252 255 'WCPayPalPlus\\ExpressCheckoutGateway\\AjaxHandler' => __DIR__ . '/../..' . '/src/ExpressCheckoutGateway/AjaxHandler.php', 253 256 'WCPayPalPlus\\ExpressCheckoutGateway\\CartButtonView' => __DIR__ . '/../..' . '/src/ExpressCheckoutGateway/CartButtonView.php', … … 266 269 'WCPayPalPlus\\Gateway\\MethodsTrait' => __DIR__ . '/../..' . '/src/Gateway/MethodsTrait.php', 267 270 'WCPayPalPlus\\Gateway\\ServiceProvider' => __DIR__ . '/../..' . '/src/Gateway/ServiceProvider.php', 271 272 273 274 275 268 276 'WCPayPalPlus\\Install\\Installer' => __DIR__ . '/../..' . '/src/Install/Installer.php', 269 277 'WCPayPalPlus\\Install\\ServiceProvider' => __DIR__ . '/../..' . '/src/Install/ServiceProvider.php', … … 305 313 'WCPayPalPlus\\Payment\\PaymentExecutionFactory' => __DIR__ . '/../..' . '/src/Payment/PaymentExecutionFactory.php', 306 314 'WCPayPalPlus\\Payment\\PaymentExecutionSuccess' => __DIR__ . '/../..' . '/src/Payment/PaymentExecutionSuccess.php', 315 307 316 'WCPayPalPlus\\Payment\\PaymentPatchData' => __DIR__ . '/../..' . '/src/Payment/PaymentPatchData.php', 308 317 'WCPayPalPlus\\Payment\\PaymentPatchFactory' => __DIR__ . '/../..' . '/src/Payment/PaymentPatchFactory.php', … … 310 319 'WCPayPalPlus\\Payment\\PaymentPerformer' => __DIR__ . '/../..' . '/src/Payment/PaymentPerformer.php', 311 320 'WCPayPalPlus\\Payment\\PaymentProcessException' => __DIR__ . '/../..' . '/src/Payment/PaymentProcessException.php', 321 312 322 'WCPayPalPlus\\Payment\\ServiceProvider' => __DIR__ . '/../..' . '/src/Payment/ServiceProvider.php', 313 323 'WCPayPalPlus\\PluginProperties' => __DIR__ . '/../..' . '/src/PluginProperties.php', … … 365 375 'WCPayPalPlus\\Setting\\SharedSettingsModel' => __DIR__ . '/../..' . '/src/Setting/SharedSettingsModel.php', 366 376 'WCPayPalPlus\\Setting\\Storable' => __DIR__ . '/../..' . '/src/Setting/Storable.php', 377 367 378 'WCPayPalPlus\\Uninstall\\Uninstaller' => __DIR__ . '/../..' . '/src/Uninstall/Uninstaller.php', 368 379 'WCPayPalPlus\\Utils\\AjaxJsonRequest' => __DIR__ . '/../..' . '/src/Utils/AjaxJsonRequest.php', … … 380 391 { 381 392 return \Closure::bind(function () use ($loader) { 382 $loader->prefixLengthsPsr4 = ComposerStaticInit d82b2a1638ef3528ffa365d01a10c77a::$prefixLengthsPsr4;383 $loader->prefixDirsPsr4 = ComposerStaticInit d82b2a1638ef3528ffa365d01a10c77a::$prefixDirsPsr4;384 $loader->classMap = ComposerStaticInit d82b2a1638ef3528ffa365d01a10c77a::$classMap;393 $loader->prefixLengthsPsr4 = ComposerStaticInit::$prefixLengthsPsr4; 394 $loader->prefixDirsPsr4 = ComposerStaticInit::$prefixDirsPsr4; 395 $loader->classMap = ComposerStaticInit::$classMap; 385 396 386 397 }, null, ClassLoader::class);
Note: See TracChangeset
for help on using the changeset viewer.