File: //proc/thread-self/cwd/wp-content/plugins/woo-stripe-payment/packages/blocks/build/commons.js.map
{"version":3,"sources":["webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/construct.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/createClass.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/extends.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/inherits.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/typeof.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://wc_stripe.[name]/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://wc_stripe.[name]/./node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js","webpack://wc_stripe.[name]/./node_modules/@stripe/stripe-js/dist/stripe.esm.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/components/checkout/checkbox/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/components/checkout/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/components/checkout/payment-method-label/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/components/checkout/payment-method/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/components/checkout/radio-option/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/ach/hooks/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/ach/hooks/use-create-link-token.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/ach/hooks/use-initialize-plaid.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/ach/hooks/use-process-payment.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/ach/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/ach/payment-method.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/applepay/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/applepay/payment-method.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/credit-card/components/bootstrap/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/credit-card/components/custom-card-form.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/credit-card/components/simple/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/credit-card/components/stripe-card-form.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/credit-card/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/credit-card/payment-method.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/error-boundary.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/button.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/constants.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/hooks/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/hooks/use-error-message.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/hooks/use-payment-request.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/hooks/use-payments-client.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/payment-method.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/googlepay/util.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-after-process-payment.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-breakpoint-width.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-exported-values.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-payment-events.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-payment-request.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-process-checkout-error.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-process-payment-intent.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-setup-intent.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/hooks/use-stripe-error.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/afterpay.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/alipay.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/bancontact.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/becs.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/boleto.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/eps.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/fpx.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/giropay.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/grabpay.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/hooks/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/hooks/use-after-process-local-payment.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/hooks/use-create-source.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/hooks/use-validate-checkout.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/ideal.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/klarna.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/local-payment-method.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/multibanco.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/oxxo.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/p24.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/sepa.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/sofort.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/local-payment/wechat.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/payment-request/index.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/payment-request/payment-method.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/saved-card-component.js","webpack://wc_stripe.[name]/./packages/blocks/assets/js/payment-methods/util.js","webpack://wc_stripe.[name]/./node_modules/classnames/index.js"],"names":["module","exports","arr","len","length","i","arr2","Array","isArray","arrayLikeToArray","self","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","Class","Reflect","construct","a","push","Function","bind","prototype","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","obj","_extends","assign","source","hasOwnProperty","call","_getPrototypeOf","o","getPrototypeOf","__proto__","subClass","superClass","create","constructor","__esModule","toString","indexOf","sham","Proxy","Date","e","iter","Symbol","iterator","from","_arr","_n","_d","_e","_s","_i","next","objectWithoutPropertiesLoose","excluded","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","keys","_typeof","assertThisInitialized","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","n","slice","name","test","isNativeFunction","_wrapNativeSuper","_cache","Map","has","get","set","Wrapper","React","_objectWithoutProperties","_objectWithoutPropertiesLoose","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","emptyFunction","emptyFunctionWithReset","resetWarningCache","propTypes","shim","propName","componentName","location","propFullName","secret","Error","getShim","isRequired","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","factoryWithThrowingShims","isUnknownObject","raw","PLAIN_OBJECT_STR","isEqual","left","right","leftArray","leftPlainObject","leftKeys","rightKeys","keySet","allKeys","l","r","every","usePrevious","ref","useRef","useEffect","current","validateStripe","maybeStripe","elements","createToken","createPaymentMethod","confirmCardPayment","parseStripeProp","isPromise","tag","stripePromise","stripe","ElementsContext","createContext","displayName","Elements","_ref","rawStripeProp","options","children","_final","isMounted","parsed","useMemo","_React$useState2","useState","ctx","setContext","prevStripe","prevOptions","console","warn","anyStripe","_registerWrapper","version","createElement","Provider","useElementsContextWithUseCase","useCaseMessage","useCase","concat","parseElementsContext","useContext","ElementsConsumer","_ref2","useCallbackReference","cb","extractUpdateableOptions","paymentRequest","noop","createElementComponent","type","isServer","str","charAt","toUpperCase","Element","id","className","_ref$options","_ref$onBlur","onBlur","_ref$onFocus","onFocus","_ref$onReady","onReady","_ref$onChange","onChange","_ref$onEscape","onEscape","_ref$onClick","onClick","elementRef","domNode","callOnReady","callOnBlur","callOnFocus","callOnClick","callOnChange","callOnEscape","useLayoutEffect","mount","on","updateableOptions","update","destroy","__elementType","window","AuBankAccountElement","CardElement","CardNumberElement","CardExpiryElement","CardCvcElement","FpxBankElement","IbanElement","IdealBankElement","P24BankElement","EpsBankElement","PaymentRequestButtonElement","AfterpayClearpayMessageElement","useElements","useStripe","factory","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","initStripe","startTime","registerWrapper","stripePromise$1","params","Stripe","script","scripts","document","querySelectorAll","src","findScript","queryString","advancedFraudSignals","headOrBody","head","body","appendChild","injectScript","addEventListener","loadCalled","loadStripe","_len","_key","now","label","checked","aria-hidden","xmlns","viewBox","d","title","icons","paymentMethod","components","Label","PaymentMethodLabel","Icons","PaymentMethodIcons","text","align","getData","content","Content","desc","el","childNodes","classList","add","Description","payment_method","RadioControlOption","event","setValidationError","linkToken","setLinkToken","useCallback","url","getRoute","method","data","response","token","storeInCache","getFromCache","linkHandler","resolvePopup","openLinkPopup","open","Plaid","clientName","env","product","selectAccount","countryCodes","onSuccess","publicToken","metaData","onExit","getErrorMessage","error_message","onPaymentProcessing","responseTypes","unsubscribe","result","deleteFromCache","ensureSuccessResponse","meta","paymentMethodData","JSON","stringify","ensureErrorResponse","getSettings","ACHPaymentContent","eventRegistration","emitResponse","onSubmit","onCheckoutAfterProcessingWithError","ValidationInputError","validationError","useCreateLinkToken","useProcessCheckoutError","subscriber","useInitializePlaid","useProcessPayment","isTestMode","ACHTestModeCredentials","errorMessage","__","registerPaymentMethod","ariaLabel","canMakePayment","cartTotals","currency_code","PaymentMethod","savedTokenComponent","edit","placeOrderButtonLabel","supports","showSavedCards","showSaveOption","features","ApplePayContent","ApplePayButton","onClose","billing","shippingData","activePaymentMethod","noticeContexts","useStripeError","exportedValues","useExportedValues","useExpressBreakpointWidth","width","setPaymentMethod","useProcessPaymentIntent","useAfterProcessingPayment","messageContext","EXPRESS_PAYMENTS","usePaymentRequest","canPay","applePay","handleClick","show","style","ApplePayEdit","registerExpressPaymentMethod","currency","total_price","country","toLowerCase","total","amount","parseInt","Bootstrap","CardIcon","htmlFor","registerCreditCardForm","breakpoint","component","classes","focus","empty","invalid","eventChange","cardType","setCardType","elementOrder","container","setContainer","getCreditCardForm","CardForm","postalCodeEnabled","forEach","setElementOrder","includes","useBreakpointWidth","getCardIconSrc","cloneElement","brand","complete","idx","nextElement","getElement","sprintf","SimpleForm","data-tid","cardOptions","postalCode","billingData","postcode","hidePostalCode","isFieldRequired","iconStyle","displaySaveCard","customerId","isUserLoggedIn","cartContainsSubscription","cartContainsPreOrder","CreditCardContent","setError","catch","CreditCardElement","savePaymentMethod","setSavePaymentMethod","getPaymentMethodArgs","elType","card","useSetupIntent","cartTotal","setupIntent","removeSetupIntent","Tag","CustomCardForm","StripeCardForm","SavePaymentMethod","state","hasError","errorInfo","setState","componentStack","Component","publishableKey","setErrorMessage","checkoutStatus","merchantInfo","merchantId","merchantName","buttonContainer","buttonType","usePaymentsClient","button","removeButton","append","parameters","allowedAuthMethods","allowedCardNetworks","assuranceDetailsRequired","apiVersion","apiVersionMinor","shippingRates","processingCountry","totalPriceLabel","emailRequired","isEmpty","email","allowedPaymentMethods","tokenizationSpecification","gateway","BASE_PAYMENT_METHOD","shippingAddressRequired","needsShipping","transactionInfo","getTransactionInfo","callbackIntents","BASE_PAYMENT_REQUEST","billingAddressRequired","billingAddressParameters","format","phoneNumberRequired","phone","shippingOptionRequired","shippingOptionParameters","getShippingOptionParameters","shippingOptions","cartTotalItems","environment","paymentsClient","setPaymentsClient","setButton","currentBilling","currentShipping","addPaymentEvent","usePaymentEvents","setAddressData","paymentData","billingAddress","isAddressValid","phoneNumber","toCartAddress","shippingAddress","parentElement","firstChild","removeChild","loadPaymentData","parse","tokenizationData","billing_details","getBillingDetailsFromAddress","StripeError","statusCode","log","createButton","paymentOptions","paymentDataCallbacks","onPaymentAuthorized","transactionState","onPaymentDataChanged","shipping","address","shippingOptionData","intermediateAddress","selectedRates","getSelectedShippingOption","addressEqual","getIntermediateAddress","shippingEqual","success","getPaymentRequestUpdate","reason","message","intent","setShippingAddress","setSelectedRates","google","payments","api","PaymentsClient","isReadyToPayRequest","isReadyToPay","GooglePayContent","useErrorMessage","GooglePayEdit","isCartPage","getSetting","status","countryCode","currencyCode","code","totalPriceStatus","totalPrice","removeNumberPrecision","minorUnit","displayItems","getDisplayItems","newTransactionInfo","newShippingOptionParameters","unit","items","item","price","getShippingOptions","defaultSelectedOptionId","map","option","shift","shippingPackage","shipping_rates","rate","selected","getShippingOptionId","rate_id","rates","txt","innerHTML","formatPrice","description","first_name","split","join","last_name","pop","address1","address2","locality","administrativeArea","onCheckoutAfterProcessingWithSuccess","unsubscribeAfterProcessingWithSuccess","redirectUrl","handleCardAction","innerWidth","windowWidth","setWindowWith","getMaxWidth","maxWidth","setMaxWidth","clientWidth","remove","handleResize","removeEventListener","getElementById","parentNode","onShippingRateSuccess","onShippingRateFail","onShippingRateSelectSuccess","handler","setHandler","onShippingChanged","paymentEvents","setPaymentEvent","execute","removePaymentEvent","isSelectingRate","shippingRatesLoading","hasShippingRates","unsubscribeShippingRateSuccess","unsubscribeShippingRateSelectSuccess","unsubscribeShippingRateFail","hasInvalidAddress","setPaymentRequest","paymentRequestOptions","pending","requestPayerName","requestPayerEmail","requestPayerPhone","requestShipping","onShippingAddressChange","onShippingOptionChange","onPaymentMethodReceived","updatePaymentEvent","updateWith","shippingOption","paymentResponse","payerName","payerEmail","payerPhone","processingResponse","paymentDetails","stripeErrorMessage","ERROR","paymentType","currentPaymentMethodArgs","getCreatePaymentMethodArgs","getSuccessResponse","paymentMethodId","unsubscribeProcessingPayment","confirmCardSetup","client_secret","setSetupIntent","createSetupIntent","variablesHandler","isEligible","variables","setVariables","AfterpayPaymentMethod","settings","cartNeedsShipping","currency_minor_unit","requiredParams","accountCountry","requiredParamObj","available","LocalPaymentIntentContent","confirmationMethod","LocalPaymentSourceContent","taxId","setTaxId","isActive","setIsActive","callback","boleto","tax_id","currentBillingData","match","atob","decodeURIComponent","return_url","order","decodeURI","order_received_url","getSourceArgs","setSource","isValid","setIsValid","currentValues","getSourceArgsInternal","getDefaultSourceArgs","returnUrl","getSuccessData","sourceId","createSource","msg","countries","LocalPaymentIntentMethod","LocalPaymentSourceMethod","useCreateSource","LocalPaymentElementContainer","useValidateCheckout","useAfterProcessLocalPayment","PAYMENT","SepaPaymentMethod","mandate","notification_method","interval","sofort","WeChatComponent","WeChatPaymentMethod","size","deleteSourceFromStorage","QRCodeComponent","wechat","qr_code_url","height","colorDark","colorLight","correctLevel","QRCode","CorrectLevel","H","createSourceTimeoutId","clearTimeout","setTimeout","PaymentRequestContent","PaymentRequestButton","paymentRequestButton","PaymentRequestEdit","canvas","scale","devicePixelRatio","getContext","beginPath","arc","Math","PI","fillStyle","fill","handleSuccessResult","unsubscribeOnCheckoutAfterProcessingWithSuccess","account","messages","countryLocale","SHIPPING_OPTION_REGEX","routes","creditCardForms","localPaymentMethods","PAYMENT_REQUEST_ADDRESS_MAPPINGS","recipient","addressLine","address_1","address_2","line1","line2","city","region","postal_code","stripeAccount","route","SUCCESS","statusMessage","exclude","fields","getLocaleFields","entries","required","localeFields","default","reduce","locale","field","packageIdx","filter","Boolean","syncPaymentIntentWithOrder","order_id","order_key","redirect","address_mappings","cartAddress","filterEmptyValues","cartKey","values","getCurrency","prefix","suffix","decimalSeparator","thousandSeparator","fractional","index","replace","substr","RegExp","sort","packageId","rateId","cartItems","pre_order","subscription","owner","mode","getCacheKey","exp","floor","getTime","sessionStorage","setItem","getItem","removeItem","ver1","ver2","compare","page","hasOwn","classNames","argType","inner"],"mappings":"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","file":"commons.js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nfunction _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    module.exports = _construct = Reflect.construct;\n  } else {\n    module.exports = _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;","function _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nmodule.exports = _isNativeReflectConstruct;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties;","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n  (global = global || self, factory(global.ReactStripe = {}, global.React));\n}(this, (function (exports, React) { 'use strict';\n\n  React = React && Object.prototype.hasOwnProperty.call(React, 'default') ? React['default'] : React;\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _objectWithoutPropertiesLoose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n\n    for (i = 0; i < sourceKeys.length; i++) {\n      key = sourceKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      target[key] = source[key];\n    }\n\n    return target;\n  }\n\n  function _objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n\n    var target = _objectWithoutPropertiesLoose(source, excluded);\n\n    var key, i;\n\n    if (Object.getOwnPropertySymbols) {\n      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n      for (i = 0; i < sourceSymbolKeys.length; i++) {\n        key = sourceSymbolKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n        target[key] = source[key];\n      }\n    }\n\n    return target;\n  }\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  function createCommonjsModule(fn, module) {\n  \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n  }\n\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n\n  var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n  var ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\n  function emptyFunction() {}\n\n  function emptyFunctionWithReset() {}\n\n  emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n  var factoryWithThrowingShims = function () {\n    function shim(props, propName, componentName, location, propFullName, secret) {\n      if (secret === ReactPropTypesSecret_1) {\n        // It is still safe when called from React.\n        return;\n      }\n\n      var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n      err.name = 'Invariant Violation';\n      throw err;\n    }\n    shim.isRequired = shim;\n\n    function getShim() {\n      return shim;\n    }\n    // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n    var ReactPropTypes = {\n      array: shim,\n      bool: shim,\n      func: shim,\n      number: shim,\n      object: shim,\n      string: shim,\n      symbol: shim,\n      any: shim,\n      arrayOf: getShim,\n      element: shim,\n      elementType: shim,\n      instanceOf: getShim,\n      node: shim,\n      objectOf: getShim,\n      oneOf: getShim,\n      oneOfType: getShim,\n      shape: getShim,\n      exact: getShim,\n      checkPropTypes: emptyFunctionWithReset,\n      resetWarningCache: emptyFunction\n    };\n    ReactPropTypes.PropTypes = ReactPropTypes;\n    return ReactPropTypes;\n  };\n\n  var propTypes = createCommonjsModule(function (module) {\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n  {\n    // By explicitly using `prop-types` you are opting into new production behavior.\n    // http://fb.me/prop-types-in-prod\n    module.exports = factoryWithThrowingShims();\n  }\n  });\n\n  var isUnknownObject = function isUnknownObject(raw) {\n    return raw !== null && _typeof(raw) === 'object';\n  };\n  var isPromise = function isPromise(raw) {\n    return isUnknownObject(raw) && typeof raw.then === 'function';\n  }; // We are using types to enforce the `stripe` prop in this lib,\n  // but in an untyped integration `stripe` could be anything, so we need\n  // to do some sanity validation to prevent type errors.\n\n  var isStripe = function isStripe(raw) {\n    return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n  };\n\n  var PLAIN_OBJECT_STR = '[object Object]';\n  var isEqual = function isEqual(left, right) {\n    if (!isUnknownObject(left) || !isUnknownObject(right)) {\n      return left === right;\n    }\n\n    var leftArray = Array.isArray(left);\n    var rightArray = Array.isArray(right);\n    if (leftArray !== rightArray) return false;\n    var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n    var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n    if (leftPlainObject !== rightPlainObject) return false;\n    if (!leftPlainObject && !leftArray) return false;\n    var leftKeys = Object.keys(left);\n    var rightKeys = Object.keys(right);\n    if (leftKeys.length !== rightKeys.length) return false;\n    var keySet = {};\n\n    for (var i = 0; i < leftKeys.length; i += 1) {\n      keySet[leftKeys[i]] = true;\n    }\n\n    for (var _i = 0; _i < rightKeys.length; _i += 1) {\n      keySet[rightKeys[_i]] = true;\n    }\n\n    var allKeys = Object.keys(keySet);\n\n    if (allKeys.length !== leftKeys.length) {\n      return false;\n    }\n\n    var l = left;\n    var r = right;\n\n    var pred = function pred(key) {\n      return isEqual(l[key], r[key]);\n    };\n\n    return allKeys.every(pred);\n  };\n\n  var usePrevious = function usePrevious(value) {\n    var ref = React.useRef(value);\n    React.useEffect(function () {\n      ref.current = value;\n    }, [value]);\n    return ref.current;\n  };\n\n  var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n  // integration `stripe` could be anything, so we need to do some sanity\n  // validation to prevent type errors.\n\n  var validateStripe = function validateStripe(maybeStripe) {\n    if (maybeStripe === null || isStripe(maybeStripe)) {\n      return maybeStripe;\n    }\n\n    throw new Error(INVALID_STRIPE_ERROR);\n  };\n\n  var parseStripeProp = function parseStripeProp(raw) {\n    if (isPromise(raw)) {\n      return {\n        tag: 'async',\n        stripePromise: Promise.resolve(raw).then(validateStripe)\n      };\n    }\n\n    var stripe = validateStripe(raw);\n\n    if (stripe === null) {\n      return {\n        tag: 'empty'\n      };\n    }\n\n    return {\n      tag: 'sync',\n      stripe: stripe\n    };\n  };\n\n  var ElementsContext = /*#__PURE__*/React.createContext(null);\n  ElementsContext.displayName = 'ElementsContext';\n  var parseElementsContext = function parseElementsContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n    }\n\n    return ctx;\n  };\n  /**\n   * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n   * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n   *\n   * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n   * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n   * Pass the returned `Promise` to `Elements`.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n   */\n\n  var Elements = function Elements(_ref) {\n    var rawStripeProp = _ref.stripe,\n        options = _ref.options,\n        children = _ref.children;\n\n    var _final = React.useRef(false);\n\n    var isMounted = React.useRef(true);\n    var parsed = React.useMemo(function () {\n      return parseStripeProp(rawStripeProp);\n    }, [rawStripeProp]);\n\n    var _React$useState = React.useState(function () {\n      return {\n        stripe: null,\n        elements: null\n      };\n    }),\n        _React$useState2 = _slicedToArray(_React$useState, 2),\n        ctx = _React$useState2[0],\n        setContext = _React$useState2[1];\n\n    var prevStripe = usePrevious(rawStripeProp);\n    var prevOptions = usePrevious(options);\n\n    if (prevStripe !== null) {\n      if (prevStripe !== rawStripeProp) {\n        console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n      }\n\n      if (!isEqual(options, prevOptions)) {\n        console.warn('Unsupported prop change on Elements: You cannot change the `options` prop after setting the `stripe` prop.');\n      }\n    }\n\n    if (!_final.current) {\n      if (parsed.tag === 'sync') {\n        _final.current = true;\n        setContext({\n          stripe: parsed.stripe,\n          elements: parsed.stripe.elements(options)\n        });\n      }\n\n      if (parsed.tag === 'async') {\n        _final.current = true;\n        parsed.stripePromise.then(function (stripe) {\n          if (stripe && isMounted.current) {\n            // Only update Elements context if the component is still mounted\n            // and stripe is not null. We allow stripe to be null to make\n            // handling SSR easier.\n            setContext({\n              stripe: stripe,\n              elements: stripe.elements(options)\n            });\n          }\n        });\n      }\n    }\n\n    React.useEffect(function () {\n      return function () {\n        isMounted.current = false;\n      };\n    }, []);\n    React.useEffect(function () {\n      var anyStripe = ctx.stripe;\n\n      if (!anyStripe || !anyStripe._registerWrapper) {\n        return;\n      }\n\n      anyStripe._registerWrapper({\n        name: 'react-stripe-js',\n        version: \"1.4.0\"\n      });\n    }, [ctx.stripe]);\n    return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n      value: ctx\n    }, children);\n  };\n  Elements.propTypes = {\n    stripe: propTypes.any,\n    options: propTypes.object\n  };\n  var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n    var ctx = React.useContext(ElementsContext);\n    return parseElementsContext(ctx, useCaseMessage);\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n   */\n\n  var useElements = function useElements() {\n    var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n        elements = _useElementsContextWi.elements;\n\n    return elements;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n   */\n\n  var useStripe = function useStripe() {\n    var _useElementsContextWi2 = useElementsContextWithUseCase('calls useStripe()'),\n        stripe = _useElementsContextWi2.stripe;\n\n    return stripe;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n   */\n\n  var ElementsConsumer = function ElementsConsumer(_ref2) {\n    var children = _ref2.children;\n    var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>'); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n    return children(ctx);\n  };\n  ElementsConsumer.propTypes = {\n    children: propTypes.func.isRequired\n  };\n\n  var useCallbackReference = function useCallbackReference(cb) {\n    var ref = React.useRef(cb);\n    React.useEffect(function () {\n      ref.current = cb;\n    }, [cb]);\n    return function () {\n      if (ref.current) {\n        ref.current.apply(ref, arguments);\n      }\n    };\n  };\n\n  var extractUpdateableOptions = function extractUpdateableOptions(options) {\n    if (!isUnknownObject(options)) {\n      return {};\n    }\n\n    var _ = options.paymentRequest,\n        rest = _objectWithoutProperties(options, [\"paymentRequest\"]);\n\n    return rest;\n  };\n\n  var noop = function noop() {};\n\n  var capitalized = function capitalized(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  };\n\n  var createElementComponent = function createElementComponent(type, isServer) {\n    var displayName = \"\".concat(capitalized(type), \"Element\");\n\n    var ClientElement = function ClientElement(_ref) {\n      var id = _ref.id,\n          className = _ref.className,\n          _ref$options = _ref.options,\n          options = _ref$options === void 0 ? {} : _ref$options,\n          _ref$onBlur = _ref.onBlur,\n          onBlur = _ref$onBlur === void 0 ? noop : _ref$onBlur,\n          _ref$onFocus = _ref.onFocus,\n          onFocus = _ref$onFocus === void 0 ? noop : _ref$onFocus,\n          _ref$onReady = _ref.onReady,\n          onReady = _ref$onReady === void 0 ? noop : _ref$onReady,\n          _ref$onChange = _ref.onChange,\n          onChange = _ref$onChange === void 0 ? noop : _ref$onChange,\n          _ref$onEscape = _ref.onEscape,\n          onEscape = _ref$onEscape === void 0 ? noop : _ref$onEscape,\n          _ref$onClick = _ref.onClick,\n          onClick = _ref$onClick === void 0 ? noop : _ref$onClick;\n\n      var _useElementsContextWi = useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n          elements = _useElementsContextWi.elements;\n\n      var elementRef = React.useRef(null);\n      var domNode = React.useRef(null);\n      var callOnReady = useCallbackReference(onReady);\n      var callOnBlur = useCallbackReference(onBlur);\n      var callOnFocus = useCallbackReference(onFocus);\n      var callOnClick = useCallbackReference(onClick);\n      var callOnChange = useCallbackReference(onChange);\n      var callOnEscape = useCallbackReference(onEscape);\n      React.useLayoutEffect(function () {\n        if (elementRef.current == null && elements && domNode.current != null) {\n          var element = elements.create(type, options);\n          elementRef.current = element;\n          element.mount(domNode.current);\n          element.on('ready', function () {\n            return callOnReady(element);\n          });\n          element.on('change', callOnChange);\n          element.on('blur', callOnBlur);\n          element.on('focus', callOnFocus);\n          element.on('escape', callOnEscape); // Users can pass an an onClick prop on any Element component\n          // just as they could listen for the `click` event on any Element,\n          // but only the PaymentRequestButton will actually trigger the event.\n\n          element.on('click', callOnClick);\n        }\n      });\n      var prevOptions = React.useRef(options);\n      React.useEffect(function () {\n        if (prevOptions.current && prevOptions.current.paymentRequest !== options.paymentRequest) {\n          console.warn('Unsupported prop change: options.paymentRequest is not a customizable property.');\n        }\n\n        var updateableOptions = extractUpdateableOptions(options);\n\n        if (Object.keys(updateableOptions).length !== 0 && !isEqual(updateableOptions, extractUpdateableOptions(prevOptions.current))) {\n          if (elementRef.current) {\n            elementRef.current.update(updateableOptions);\n            prevOptions.current = options;\n          }\n        }\n      }, [options]);\n      React.useLayoutEffect(function () {\n        return function () {\n          if (elementRef.current) {\n            elementRef.current.destroy();\n          }\n        };\n      }, []);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className,\n        ref: domNode\n      });\n    }; // Only render the Element wrapper in a server environment.\n\n\n    var ServerElement = function ServerElement(props) {\n      // Validate that we are in the right context by calling useElementsContextWithUseCase.\n      useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      var id = props.id,\n          className = props.className;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className\n      });\n    };\n\n    var Element = isServer ? ServerElement : ClientElement;\n    Element.propTypes = {\n      id: propTypes.string,\n      className: propTypes.string,\n      onChange: propTypes.func,\n      onBlur: propTypes.func,\n      onFocus: propTypes.func,\n      onReady: propTypes.func,\n      onClick: propTypes.func,\n      options: propTypes.object\n    };\n    Element.displayName = displayName;\n    Element.__elementType = type;\n    return Element;\n  };\n\n  var isServer = typeof window === 'undefined';\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardElement = createElementComponent('card', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardNumberElement = createElementComponent('cardNumber', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardCvcElement = createElementComponent('cardCvc', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var FpxBankElement = createElementComponent('fpxBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IbanElement = createElementComponent('iban', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IdealBankElement = createElementComponent('idealBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var P24BankElement = createElementComponent('p24Bank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var EpsBankElement = createElementComponent('epsBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n  exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n  exports.AuBankAccountElement = AuBankAccountElement;\n  exports.CardCvcElement = CardCvcElement;\n  exports.CardElement = CardElement;\n  exports.CardExpiryElement = CardExpiryElement;\n  exports.CardNumberElement = CardNumberElement;\n  exports.Elements = Elements;\n  exports.ElementsConsumer = ElementsConsumer;\n  exports.EpsBankElement = EpsBankElement;\n  exports.FpxBankElement = FpxBankElement;\n  exports.IbanElement = IbanElement;\n  exports.IdealBankElement = IdealBankElement;\n  exports.P24BankElement = P24BankElement;\n  exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n  exports.useElements = useElements;\n  exports.useStripe = useStripe;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n  var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n  for (var i = 0; i < scripts.length; i++) {\n    var script = scripts[i];\n\n    if (!V3_URL_REGEX.test(script.src)) {\n      continue;\n    }\n\n    return script;\n  }\n\n  return null;\n};\n\nvar injectScript = function injectScript(params) {\n  var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n  var script = document.createElement('script');\n  script.src = \"\".concat(V3_URL).concat(queryString);\n  var headOrBody = document.head || document.body;\n\n  if (!headOrBody) {\n    throw new Error('Expected document.body not to be null. Stripe.js requires a <body> element.');\n  }\n\n  headOrBody.appendChild(script);\n  return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n  if (!stripe || !stripe._registerWrapper) {\n    return;\n  }\n\n  stripe._registerWrapper({\n    name: 'stripe-js',\n    version: \"1.12.1\",\n    startTime: startTime\n  });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n  // Ensure that we only attempt to load Stripe.js at most once\n  if (stripePromise !== null) {\n    return stripePromise;\n  }\n\n  stripePromise = new Promise(function (resolve, reject) {\n    if (typeof window === 'undefined') {\n      // Resolve to null when imported server side. This makes the module\n      // safe to import in an isomorphic code base.\n      resolve(null);\n      return;\n    }\n\n    if (window.Stripe && params) {\n      console.warn(EXISTING_SCRIPT_MESSAGE);\n    }\n\n    if (window.Stripe) {\n      resolve(window.Stripe);\n      return;\n    }\n\n    try {\n      var script = findScript();\n\n      if (script && params) {\n        console.warn(EXISTING_SCRIPT_MESSAGE);\n      } else if (!script) {\n        script = injectScript(params);\n      }\n\n      script.addEventListener('load', function () {\n        if (window.Stripe) {\n          resolve(window.Stripe);\n        } else {\n          reject(new Error('Stripe.js not available'));\n        }\n      });\n      script.addEventListener('error', function () {\n        reject(new Error('Failed to load Stripe.js'));\n      });\n    } catch (error) {\n      reject(error);\n      return;\n    }\n  });\n  return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n  if (maybeStripe === null) {\n    return null;\n  }\n\n  var stripe = maybeStripe.apply(undefined, args);\n  registerWrapper(stripe, startTime);\n  return stripe;\n};\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n  return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n  if (!loadCalled) {\n    console.warn(err);\n  }\n});\nvar loadStripe = function loadStripe() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  loadCalled = true;\n  var startTime = Date.now();\n  return stripePromise$1.then(function (maybeStripe) {\n    return initStripe(maybeStripe, args, startTime);\n  });\n};\n\nexport { loadStripe };\n","import classNames from 'classnames';\r\nimport './styles.scss';\r\n\r\nexport const SavePaymentMethod = ({label, onChange, checked}) => {\r\n    return (\r\n        <div className='wc-stripe-save-payment-method'>\r\n            <label>\r\n                <input type='checkbox' onChange={(e) => onChange(e.target.checked)}/>\r\n                <svg\r\n                    className={classNames('wc-stripe-components-checkbox__mark', {checked: checked})}\r\n                    aria-hidden=\"true\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 24 20\">\r\n                    <path d=\"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"/>\r\n                </svg>\r\n            </label>\r\n            <span>{label}</span>\r\n        </div>\r\n    )\r\n}","export * from './payment-method-label';\r\nexport * from './checkbox';\r\nexport * from './radio-option';\r\nexport * from './payment-method';","import './style.scss';\r\n\r\nexport const PaymentMethodLabel = ({title, icons, paymentMethod, ...props}) => {\r\n    const {PaymentMethodLabel: Label, PaymentMethodIcons: Icons} = props.components;\r\n    if (!Array.isArray(icons)) {\r\n        icons = [icons];\r\n    }\r\n    return (\r\n        <span className={`wc-stripe-label-container ${paymentMethod}`}>\r\n            <Label text={title}/>\r\n            <Icons icons={icons} align='left'/>\r\n        </span>\r\n    )\r\n}","import {useEffect, useRef} from '@wordpress/element';\r\n\r\nexport const PaymentMethod = ({getData, content, ...props}) => {\r\n    const Content = content;\r\n    const desc = getData('description');\r\n    const el = useRef(null);\r\n    useEffect(() => {\r\n        if (el.current && el.current.childNodes.length == 0) {\r\n            el.current.classList.add('no-content');\r\n        }\r\n    });\r\n    return (\r\n        <>\r\n            {desc && <Description desc={desc} payment_method={getData('name')}/>}\r\n            <div ref={el} className='wc-stripe-blocks-payment-method-content'>\r\n                <Content {...{...props, getData}}/>\r\n            </div>\r\n        </>);\r\n}\r\n\r\nconst Description = ({desc, payment_method}) => {\r\n    return (\r\n        <div className={`wc-stripe-blocks-payment-method__desc ${payment_method}`}>\r\n            <p>{desc}</p>\r\n        </div>\r\n    )\r\n}","import classnames from 'classnames';\r\n\r\nexport const RadioControlOption = ({checked, onChange, value, label}) => {\r\n    return (\r\n        <label\r\n            className={classnames('wc-stripe-blocks-radio-control__option', {\r\n                'wc-stripe-blocks-radio-control__option-checked': checked\r\n            })}>\r\n            <input\r\n                className='wc-stripe-blocks-radio-control__input'\r\n                type='radio'\r\n                value={value}\r\n                checked={checked}\r\n                onChange={(event) => onChange(event.target.value)}/>\r\n            <div className='wc-stripe-blocks-radio-control__label'>\r\n                <span>{label}</span>\r\n            </div>\r\n        </label>\r\n    )\r\n}\r\n\r\nexport default RadioControlOption;","export * from './use-create-link-token';\r\nexport * from './use-initialize-plaid';\r\nexport * from './use-process-payment';","import {useEffect, useState, useCallback} from '@wordpress/element';\r\nimport apiFetch from '@wordpress/api-fetch';\r\nimport {getRoute, getFromCache, storeInCache} from '../../util';\r\n\r\nexport const useCreateLinkToken = (\r\n    {\r\n        setValidationError\r\n    }) => {\r\n    const [linkToken, setLinkToken] = useState(false);\r\n\r\n    const createToken = useCallback(async () => {\r\n        try {\r\n            const response = await apiFetch({\r\n                url: getRoute('create/linkToken'),\r\n                method: 'POST',\r\n                data: {}\r\n            });\r\n            if (response.token) {\r\n                storeInCache('linkToken', response.token);\r\n                setLinkToken(response.token);\r\n            }\r\n        } catch (err) {\r\n            setValidationError(err);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (!linkToken) {\r\n            const token = getFromCache('linkToken');\r\n            if (token) {\r\n                // cached token exist so use it\r\n                setLinkToken(token);\r\n            } else {\r\n                // create the Plaid Link token\r\n                createToken();\r\n            }\r\n        }\r\n    }, [\r\n        linkToken,\r\n        setLinkToken\r\n    ]);\r\n    return linkToken;\r\n}","import {useState, useEffect, useRef, useCallback} from '@wordpress/element';\r\nimport Plaid from '@plaid';\r\nimport {getErrorMessage} from \"../../util\";\r\n\r\nexport const useInitializePlaid = (\r\n    {\r\n        getData,\r\n        linkToken\r\n    }) => {\r\n    const linkHandler = useRef(null);\r\n    const resolvePopup = useRef(null);\r\n    const openLinkPopup = useCallback(() => new Promise((resolve, reject) => {\r\n        resolvePopup.current = {resolve, reject};\r\n        linkHandler.current.open();\r\n    }), []);\r\n\r\n    // if the token exists, initialize Plaid's link handler\r\n    useEffect(() => {\r\n        if (linkToken) {\r\n            linkHandler.current = Plaid.create({\r\n                clientName: getData('clientName'),\r\n                env: getData('plaidEnvironment'),\r\n                product: ['auth'],\r\n                token: linkToken,\r\n                selectAccount: true,\r\n                countryCodes: ['US'],\r\n                onSuccess: (publicToken, metaData) => {\r\n                    resolvePopup.current.resolve({publicToken, metaData});\r\n                },\r\n                onExit: (err) => {\r\n                    resolvePopup.current.reject(err ? getErrorMessage(err.error_message) : false);\r\n                }\r\n            });\r\n        }\r\n    }, [linkToken]);\r\n\r\n    return openLinkPopup;\r\n}","import {useEffect, useCallback} from '@wordpress/element';\r\nimport {ensureSuccessResponse, ensureErrorResponse, deleteFromCache} from \"../../util\";\r\n\r\nexport const useProcessPayment = (\r\n    {\r\n        openLinkPopup,\r\n        onPaymentProcessing,\r\n        responseTypes,\r\n        paymentMethod\r\n\r\n    }) => {\r\n\r\n    useEffect(() => {\r\n        const unsubscribe = onPaymentProcessing(async () => {\r\n            try {\r\n                // open the Plaid popup\r\n                const result = await openLinkPopup();\r\n                const {publicToken, metaData} = result;\r\n                // remove the cached link token.\r\n                deleteFromCache('linkToken');\r\n                return ensureSuccessResponse(responseTypes, {\r\n                    meta: {\r\n                        paymentMethodData: {\r\n                            [`${paymentMethod}_token_key`]: publicToken,\r\n                            [`${paymentMethod}_metadata`]: JSON.stringify(metaData)\r\n                        }\r\n                    }\r\n                });\r\n            } catch (err) {\r\n                return ensureErrorResponse(responseTypes, err);\r\n            }\r\n        });\r\n        return () => unsubscribe();\r\n    }, [\r\n        onPaymentProcessing,\r\n        responseTypes,\r\n        openLinkPopup\r\n    ]);\r\n}","import './styles.scss';\r\nimport './payment-method'","import {useState} from '@wordpress/element';\r\nimport {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, isTestMode} from '../util';\r\nimport {PaymentMethodLabel, PaymentMethod} from '../../components/checkout';\r\nimport SavedCardComponent from '../saved-card-component';\r\nimport {useCreateLinkToken, useInitializePlaid, useProcessPayment} from './hooks';\r\nimport {useProcessCheckoutError} from \"../hooks\";\r\nimport {__} from '@wordpress/i18n';\r\n\r\nconst getData = getSettings('stripe_ach_data');\r\n\r\nconst ACHPaymentContent = (\r\n    {\r\n        getData,\r\n        eventRegistration,\r\n        components,\r\n        emitResponse,\r\n        onSubmit,\r\n        ...props\r\n    }) => {\r\n    const {responseTypes} = emitResponse;\r\n    const {onPaymentProcessing, onCheckoutAfterProcessingWithError} = eventRegistration;\r\n    const {ValidationInputError} = components;\r\n    const [validationError, setValidationError] = useState(false);\r\n\r\n    const linkToken = useCreateLinkToken({setValidationError});\r\n\r\n    useProcessCheckoutError({\r\n        responseTypes,\r\n        subscriber: onCheckoutAfterProcessingWithError\r\n    });\r\n\r\n    const openLinkPopup = useInitializePlaid({\r\n        getData,\r\n        linkToken,\r\n        onSubmit\r\n    });\r\n\r\n    useProcessPayment({\r\n        openLinkPopup,\r\n        onPaymentProcessing,\r\n        responseTypes,\r\n        paymentMethod: getData('name')\r\n    });\r\n    return (\r\n        <>\r\n            {isTestMode && <ACHTestModeCredentials/>}\r\n            {validationError && <ValidationInputError errorMessage={validationError}/>}\r\n        </>\r\n    )\r\n}\r\n\r\nconst ACHTestModeCredentials = () => {\r\n    return (\r\n        <div className='wc-stripe-blocks-ach__creds'>\r\n            <label className='wc-stripe-blocks-ach__creds-label'>{__('Test Credentials', 'woo-stripe-payment')}</label>\r\n            <div className='wc-stripe-blocks-ach__username'>\r\n                <div>\r\n                    <strong>{__('username', 'woo-stripe-payment')}</strong>: user_good\r\n                </div>\r\n                <div>\r\n                    <strong>{__('password', 'woo-stripe-payment')}</strong>: pass_good\r\n                </div>\r\n                <div>\r\n                    <strong>{__('pin', 'woo-stripe-payment')}</strong>: credential_good\r\n                </div>\r\n            </div>\r\n        </div>\r\n    );\r\n}\r\n\r\nregisterPaymentMethod({\r\n    name: getData('name'),\r\n    label: <PaymentMethodLabel title={getData('title')}\r\n                               paymentMethod={getData('name')}\r\n                               icons={getData('icons')}/>,\r\n    ariaLabel: 'ACH Payment',\r\n    canMakePayment: ({cartTotals}) => cartTotals.currency_code === 'USD',\r\n    content: <PaymentMethod\r\n        getData={getData}\r\n        content={ACHPaymentContent}/>,\r\n    savedTokenComponent: <SavedCardComponent getData={getData}/>,\r\n    edit: <ACHPaymentContent getData={getData}/>,\r\n    placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n    supports: {\r\n        showSavedCards: getData('showSavedCards'),\r\n        showSaveOption: false,\r\n        features: getData('features')\r\n    }\r\n})","import './style.scss';\r\n\r\nimport './payment-method';","import {useCallback} from '@wordpress/element';\r\nimport {registerExpressPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, initStripe as loadStripe, canMakePayment} from \"../util\";\r\nimport {Elements, PaymentRequestButtonElement, useStripe} from \"@stripe/react-stripe-js\";\r\nimport ErrorBoundary from \"../error-boundary\";\r\nimport {\r\n    usePaymentRequest,\r\n    useProcessPaymentIntent,\r\n    useExportedValues,\r\n    useAfterProcessingPayment,\r\n    useStripeError,\r\n    useExpressBreakpointWidth\r\n} from '../hooks';\r\n\r\nconst getData = getSettings('stripe_applepay_data');\r\n\r\nconst ApplePayContent = (props) => {\r\n    return (\r\n        <ErrorBoundary>\r\n            <div className='wc-stripe-apple-pay-container'>\r\n                <Elements stripe={loadStripe}>\r\n                    <ApplePayButton {...props}/>\r\n                </Elements>\r\n            </div>\r\n        </ErrorBoundary>\r\n    );\r\n}\r\n\r\nconst ApplePayButton = (\r\n    {\r\n        getData,\r\n        onClick,\r\n        onClose,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        emitResponse,\r\n        onSubmit,\r\n        activePaymentMethod,\r\n        ...props\r\n    }) => {\r\n    const {onPaymentProcessing} = eventRegistration;\r\n    const {responseTypes, noticeContexts} = emitResponse;\r\n    const stripe = useStripe();\r\n    const [error] = useStripeError();\r\n    const canPay = (result) => result != null && result.applePay;\r\n    const exportedValues = useExportedValues();\r\n    useExpressBreakpointWidth({payment_method: getData('name'), width: 300});\r\n    const {setPaymentMethod} = useProcessPaymentIntent({\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        onPaymentProcessing,\r\n        emitResponse,\r\n        error,\r\n        onSubmit,\r\n        activePaymentMethod,\r\n        exportedValues\r\n    });\r\n    useAfterProcessingPayment({\r\n        getData,\r\n        eventRegistration,\r\n        responseTypes,\r\n        activePaymentMethod,\r\n        messageContext: noticeContexts.EXPRESS_PAYMENTS\r\n    });\r\n    const {paymentRequest} = usePaymentRequest({\r\n        getData,\r\n        onClose,\r\n        stripe,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        setPaymentMethod,\r\n        exportedValues,\r\n        canPay\r\n    });\r\n\r\n    const handleClick = useCallback(() => {\r\n        if (paymentRequest) {\r\n            onClick();\r\n            paymentRequest.show();\r\n        }\r\n    }, [paymentRequest, onClick]);\r\n\r\n    if (paymentRequest) {\r\n        return (\r\n            <button\r\n                className={`apple-pay-button ${getData('buttonStyle')}`}\r\n                style={{\r\n                    '-apple-pay-button-type': getData('buttonType')\r\n                }}\r\n                onClick={handleClick}/>\r\n\r\n        )\r\n    }\r\n    return null;\r\n}\r\n\r\nconst ApplePayEdit = ({getData, ...props}) => {\r\n    return (\r\n        <div className={'apple-pay-block-editor'}>\r\n            <img src={getData('editorIcon')}/>\r\n        </div>\r\n    )\r\n}\r\n\r\nregisterExpressPaymentMethod({\r\n    name: getData('name'),\r\n    canMakePayment: ({cartTotals, ...props}) => {\r\n        if (getData('isAdmin')) {\r\n            return true;\r\n        }\r\n        const {currency_code: currency, total_price} = cartTotals;\r\n        return canMakePayment({\r\n            country: getData('countryCode'),\r\n            currency: currency.toLowerCase(),\r\n            total: {\r\n                label: getData('totalLabel'),\r\n                amount: parseInt(total_price)\r\n            }\r\n        }, (result) => result != null && result.applePay);\r\n    },\r\n    content: <ApplePayContent getData={getData}/>,\r\n    edit: <ApplePayEdit getData={getData}/>,\r\n    supports: {\r\n        showSavedCards: getData('showSavedCards'),\r\n        showSaveOption: getData('showSaveOption'),\r\n        features: getData('features')\r\n    }\r\n})","import './style.scss';\r\nimport {registerCreditCardForm} from \"@paymentplugins/stripe/util\";\r\nimport {CardNumberElement, CardExpiryElement, CardCvcElement} from '@stripe/react-stripe-js';\r\nimport {__} from \"@wordpress/i18n\";\r\n\r\nconst Bootstrap = ({CardIcon, options, onChange}) => {\r\n    return (\r\n        <div className='wc-stripe-bootstrap-form'>\r\n            <div className='row'>\r\n                <div className='col-md-6 mb-3'>\r\n                    <CardNumberElement className='md-form md-outline stripe-input' options={options['cardNumber']}\r\n                                       onChange={onChange(CardNumberElement)}/>\r\n                    <label htmlFor=\"stripe-card-number\">{__('Card Number', 'woo-stripe-payment')}</label>\r\n                    {CardIcon}\r\n                </div>\r\n                <div className='col-md-3 mb-3'>\r\n                    <CardExpiryElement className='md-form md-outline stripe-input' options={options['cardExpiry']}\r\n                                       onChange={onChange(CardExpiryElement)}/>\r\n                    <label htmlFor=\"stripe-exp\">{__('Exp', 'woo-stripe-payment')}</label>\r\n                </div>\r\n                <div className='col-md-3 mb-3'>\r\n                    <CardCvcElement className=\"md-form md-outline stripe-input\" options={options['cardCvc']}\r\n                                    onChange={onChange(CardCvcElement)}/>\r\n                    <label htmlFor=\"stripe-cvv\">{__('CVV', 'woo-stripe-payment')}</label>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nregisterCreditCardForm({\r\n    id: 'bootstrap',\r\n    breakpoint: 475,\r\n    component: <Bootstrap/>\r\n})","import {getCreditCardForm} from \"../../util\";\r\nimport {cloneElement, useRef, useCallback, useEffect, useState} from '@wordpress/element';\r\nimport {useElements, CardNumberElement, CardExpiryElement, CardCvcElement} from '@stripe/react-stripe-js';\r\nimport {sprintf, __} from '@wordpress/i18n';\r\nimport {useBreakpointWidth} from \"../../hooks\";\r\n\r\nconst classes = {\r\n    focus: 'focused',\r\n    empty: 'empty',\r\n    invalid: 'invalid'\r\n}\r\n\r\nconst CustomCardForm = (\r\n    {\r\n        getData,\r\n        onChange: eventChange\r\n    }) => {\r\n    const [cardType, setCardType] = useState('');\r\n    const elementOrder = useRef([]);\r\n    const [container, setContainer] = useState(null);\r\n    const elements = useElements();\r\n    const id = getData('customForm');\r\n    const {component: CardForm = null, breakpoint = 475} = getCreditCardForm(id);\r\n    const postalCodeEnabled = getData('postalCodeEnabled');\r\n    const options = {};\r\n    ['cardNumber', 'cardExpiry', 'cardCvc'].forEach(type => {\r\n        options[type] = {\r\n            classes,\r\n            ...getData('cardOptions'),\r\n            ...getData('customFieldOptions')[type],\r\n        }\r\n    });\r\n    const onChange = (element) => {\r\n        setElementOrder(element);\r\n        return (event) => {\r\n            eventChange(event);\r\n            if (event.elementType === 'cardNumber') {\r\n                if (event.brand === 'unknown') {\r\n                    setCardType('');\r\n                } else {\r\n                    setCardType(event.brand);\r\n                }\r\n            }\r\n            if (event.complete) {\r\n                const idx = elementOrder.current.indexOf(element);\r\n                if (elementOrder.current[idx + 1]) {\r\n                    const nextElement = elementOrder.current[idx + 1];\r\n                    elements.getElement(nextElement).focus();\r\n                }\r\n            }\r\n        }\r\n    }\r\n    const setElementOrder = useCallback((element) => {\r\n        if (!elementOrder.current.includes(element)) {\r\n            elementOrder.current.push(element);\r\n        }\r\n    }, []);\r\n\r\n    useBreakpointWidth({name: 'creditCardForm', width: breakpoint, node: container, className: 'small-form'});\r\n\r\n    const getCardIconSrc = useCallback((type) => {\r\n        for (let id of Object.keys(getData('cards'))) {\r\n            if (id === type) {\r\n                return getData('cards')[id];\r\n            }\r\n        }\r\n        return '';\r\n    }, []);\r\n\r\n    if (!CardForm) {\r\n        return (\r\n            <div className='wc-stripe-custom-form-error'>\r\n                <p>{sprintf(__('%s is not a valid blocks Stripe custom form. Please choose another custom form option in the Credit Card Settings.', 'woo-stripe-payment'), getData('customFormLabels')[id])}</p>\r\n            </div>\r\n        )\r\n    }\r\n    return (\r\n        <div className={`wc-stripe-custom-form ${id}`} ref={setContainer}>\r\n            {cloneElement(CardForm, {\r\n                postalCodeEnabled,\r\n                options,\r\n                onChange,\r\n                CardIcon: <CardIcon type={cardType} src={getCardIconSrc(cardType)}/>\r\n            })}\r\n        </div>\r\n    )\r\n\r\n}\r\n\r\nconst CardIcon = ({type, src}) => {\r\n    if (type) {\r\n        return <img className={`wc-stripe-card ${type}`} src={src}/>\r\n    }\r\n    return null;\r\n}\r\n\r\nexport default CustomCardForm;\r\n","import './style.scss';\r\nimport {registerCreditCardForm} from \"@paymentplugins/stripe/util\";\r\nimport {CardNumberElement, CardExpiryElement, CardCvcElement} from '@stripe/react-stripe-js';\r\nimport {__} from \"@wordpress/i18n\";\r\nimport {useEffect, useCallback, useRef} from '@wordpress/element';\r\n\r\nconst SimpleForm = ({CardIcon, options, onChange}) => {\r\n    useEffect(() => {\r\n    }, []);\r\n    return (\r\n        <div className='wc-stripe-simple-form'>\r\n            <div className=\"row\">\r\n                <div className=\"field\">\r\n                    <div className='field-item'>\r\n                        <CardNumberElement id=\"stripe-card-number\" className=\"input empty\"\r\n                                           options={options['cardNumber']}\r\n                                           onChange={onChange(CardNumberElement)}/>\r\n                        <label htmlFor=\"stripe-card-number\"\r\n                               data-tid=\"\">{__('Card Number', 'woo-stripe-payment')}</label>\r\n                        <div className=\"baseline\"></div>\r\n                        {CardIcon}\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"row\">\r\n                <div className=\"field half-width\">\r\n                    <div className='field-item'>\r\n                        <CardExpiryElement id=\"stripe-exp\" className=\"input empty\" options={options['cardExpiry']}\r\n                                           onChange={onChange(CardExpiryElement)}/>\r\n                        <label htmlFor=\"stripe-exp\"\r\n                               data-tid=\"\">{__('Expiration', 'woo-stripe-payment')}</label>\r\n                        <div className=\"baseline\"></div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"field half-width cvc\">\r\n                    <div className='field-item'>\r\n                        <CardCvcElement id=\"stripe-cvv\" className=\"input empty\" options={options['cardCvc']}\r\n                                        onChange={onChange(CardCvcElement)}/>\r\n                        <label htmlFor=\"stripe-cvv\"\r\n                               data-tid=\"\">{__('CVV', 'woo-stripe-payment')}</label>\r\n                        <div className=\"baseline\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nregisterCreditCardForm({\r\n    id: 'simple',\r\n    component: <SimpleForm/>,\r\n    breakpoint: 375\r\n})","import {CardElement} from \"@stripe/react-stripe-js\";\r\nimport {isFieldRequired} from \"../../util\";\r\nimport {useMemo} from '@wordpress/element';\r\n\r\nconst StripeCardForm = ({getData, billing, onChange}) => {\r\n    const cardOptions = useMemo(() => {\r\n        return {\r\n            ...{\r\n                value: {\r\n                    postalCode: billing?.billingData?.postcode\r\n                },\r\n                hidePostalCode: isFieldRequired('postcode'),\r\n                iconStyle: 'default'\r\n            }, ...getData('cardOptions')\r\n        };\r\n    }, [billing.billingData]);\r\n    return (\r\n        <div className='wc-stripe-inline-form'>\r\n            <CardElement options={cardOptions} onChange={onChange}/>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default StripeCardForm;","import './style.scss';\r\n\r\nexport * from './payment-method';\r\n\r\nimport './components/bootstrap';\r\nimport './components/simple';\r\n","import {useEffect, useState, useCallback, useMemo} from '@wordpress/element';\r\nimport {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {\r\n    initStripe as loadStripe,\r\n    getSettings,\r\n    isUserLoggedIn,\r\n    cartContainsSubscription,\r\n    cartContainsPreOrder\r\n} from '../util';\r\nimport {Elements, CardElement, useStripe, useElements, CardNumberElement} from '@stripe/react-stripe-js';\r\nimport {PaymentMethodLabel, PaymentMethod, SavePaymentMethod} from '../../components/checkout';\r\nimport SavedCardComponent from '../saved-card-component';\r\nimport CustomCardForm from './components/custom-card-form';\r\nimport StripeCardForm from \"./components/stripe-card-form\";\r\nimport {\r\n    useProcessPaymentIntent,\r\n    useAfterProcessingPayment,\r\n    useSetupIntent,\r\n    useStripeError\r\n} from \"../hooks\";\r\n\r\nconst getData = getSettings('stripe_cc_data');\r\n\r\nconst displaySaveCard = (customerId) => {\r\n    return isUserLoggedIn(customerId) && getData('saveCardEnabled') &&\r\n        !cartContainsSubscription() && !cartContainsPreOrder()\r\n}\r\n\r\nconst CreditCardContent = (props) => {\r\n    const [error, setError] = useState(false);\r\n    useEffect(() => {\r\n        loadStripe.catch(error => {\r\n            setError(error);\r\n        })\r\n    }, [setError]);\r\n    if (error) {\r\n        throw new Error(error);\r\n    }\r\n    return (\r\n        <Elements stripe={loadStripe} options={getData('elementOptions')}>\r\n            <CreditCardElement {...props}/>\r\n        </Elements>\r\n    );\r\n};\r\n\r\nconst CreditCardElement = (\r\n    {\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        emitResponse,\r\n        eventRegistration,\r\n        activePaymentMethod\r\n    }) => {\r\n    const [error, setError] = useStripeError();\r\n    const [savePaymentMethod, setSavePaymentMethod] = useState(false);\r\n    const onSavePaymentMethod = (checked) => setSavePaymentMethod(checked);\r\n    const {onPaymentProcessing} = eventRegistration;\r\n    const stripe = useStripe();\r\n    const elements = useElements();\r\n    const getPaymentMethodArgs = useCallback(() => {\r\n        const elType = getData('customFormActive') ? CardNumberElement : CardElement;\r\n        return {card: elements.getElement(elType)};\r\n    }, [stripe, elements]);\r\n\r\n    const {setupIntent, removeSetupIntent} = useSetupIntent({\r\n        getData,\r\n        cartTotal: billing.cartTotal,\r\n        setError\r\n    })\r\n\r\n    useProcessPaymentIntent({\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        emitResponse,\r\n        error,\r\n        onPaymentProcessing,\r\n        savePaymentMethod,\r\n        setupIntent,\r\n        removeSetupIntent,\r\n        getPaymentMethodArgs,\r\n        activePaymentMethod\r\n    });\r\n    useAfterProcessingPayment({\r\n        getData,\r\n        eventRegistration,\r\n        responseTypes: emitResponse.responseTypes,\r\n        activePaymentMethod,\r\n        savePaymentMethod\r\n    });\r\n\r\n    const onChange = (event) => {\r\n        if (event.error) {\r\n            setError(event.error);\r\n        } else {\r\n            setError(false);\r\n        }\r\n    }\r\n    const Tag = getData('customFormActive') ? CustomCardForm : StripeCardForm;\r\n    return (\r\n        <div className='wc-stripe-card-container'>\r\n            <Tag {...{getData, billing, onChange}}/>\r\n            {displaySaveCard(billing.customerId) &&\r\n            <SavePaymentMethod label={getData('savePaymentMethodLabel')}\r\n                               onChange={onSavePaymentMethod}\r\n                               checked={savePaymentMethod}/>}\r\n        </div>\r\n    );\r\n}\r\n\r\nregisterPaymentMethod({\r\n    name: getData('name'),\r\n    label: <PaymentMethodLabel\r\n        title={getData('title')}\r\n        paymentMethod={getData('name')}\r\n        icons={getData('icons')}/>,\r\n    ariaLabel: 'Credit Cards',\r\n    canMakePayment: () => loadStripe,\r\n    content: <PaymentMethod content={CreditCardContent} getData={getData}/>,\r\n    savedTokenComponent: <SavedCardComponent getData={getData}/>,\r\n    edit: <PaymentMethod content={CreditCardContent} getData={getData}/>,\r\n    supports: {\r\n        showSavedCards: getData('showSavedCards'),\r\n        showSaveOption: false,\r\n        features: getData('features')\r\n    }\r\n})","import {Component} from '@wordpress/element';\r\n\r\nclass ErrorBoundary extends Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.state = {hasError: false, error: null, errorInfo: null};\r\n    }\r\n\r\n    componentDidCatch(error, errorInfo) {\r\n        this.setState({\r\n            hasError: true,\r\n            error,\r\n            errorInfo\r\n        })\r\n    }\r\n\r\n    render() {\r\n        if (this.state.hasError) {\r\n            return (\r\n                <>\r\n                    {this.state.error && <div className='wc-stripe-block-error'>{this.state.error.toString()}</div>}\r\n                    {this.state.errorInfo &&\r\n                    <div className='wc-stripe-block-error'>{this.state.errorInfo.componentStack}</div>}\r\n                </>\r\n            )\r\n        }\r\n        return this.props.children;\r\n    }\r\n}\r\n\r\nexport default ErrorBoundary;","import {useRef, useEffect} from '@wordpress/element';\r\nimport {usePaymentsClient, usePaymentRequest} from './hooks';\r\nimport {\r\n    useProcessPaymentIntent,\r\n    useStripeError,\r\n    useExportedValues,\r\n    useExpressBreakpointWidth\r\n} from '../hooks';\r\nimport {getSettings} from '@paymentplugins/stripe/util';\r\n\r\nconst {publishableKey} = getSettings('stripeGeneralData')();\r\n\r\nconst GooglePayButton = (\r\n    {\r\n        getData,\r\n        setErrorMessage,\r\n        billing,\r\n        shippingData,\r\n        canMakePayment,\r\n        checkoutStatus,\r\n        eventRegistration,\r\n        activePaymentMethod,\r\n        onClick,\r\n        onClose,\r\n        ...props\r\n    }) => {\r\n    const merchantInfo = {\r\n        merchantId: getData('merchantId'),\r\n        merchantName: getData('merchantName')\r\n    };\r\n    const [error, setError] = useStripeError();\r\n    const buttonContainer = useRef();\r\n    const {onSubmit, emitResponse} = props;\r\n    const {onPaymentProcessing} = eventRegistration;\r\n    const exportedValues = useExportedValues();\r\n    const width = getData('buttonStyle').buttonType === 'long' ? 390 : 300;\r\n    const {setPaymentMethod} = useProcessPaymentIntent({\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        onPaymentProcessing,\r\n        emitResponse,\r\n        error,\r\n        exportedValues,\r\n        onSubmit,\r\n        checkoutStatus,\r\n        activePaymentMethod\r\n    });\r\n\r\n    const paymentRequest = usePaymentRequest({\r\n        getData,\r\n        publishableKey,\r\n        merchantInfo,\r\n        billing,\r\n        shippingData\r\n    })\r\n\r\n    const {button, removeButton} = usePaymentsClient({\r\n        merchantInfo,\r\n        paymentRequest,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        canMakePayment,\r\n        setErrorMessage,\r\n        onSubmit,\r\n        setPaymentMethod,\r\n        exportedValues,\r\n        onClick,\r\n        onClose,\r\n        getData\r\n    });\r\n\r\n    useExpressBreakpointWidth({payment_method: getData('name'), width});\r\n\r\n    useEffect(() => {\r\n        if (button) {\r\n            // prevent button duplicates\r\n            removeButton(buttonContainer.current);\r\n            buttonContainer.current.append(button);\r\n        }\r\n    }, [button]);\r\n\r\n    return (\r\n        <div className='wc-stripe-gpay-button-container' ref={buttonContainer}></div>\r\n    )\r\n}\r\n\r\nexport default GooglePayButton;","export const BASE_PAYMENT_METHOD = {\r\n    type: 'CARD',\r\n    parameters: {\r\n        allowedAuthMethods: [\"PAN_ONLY\"],\r\n        allowedCardNetworks: [\"AMEX\", \"DISCOVER\", \"INTERAC\", \"JCB\", \"MASTERCARD\", \"VISA\"],\r\n        assuranceDetailsRequired: true\r\n    }\r\n};\r\n\r\nexport const BASE_PAYMENT_REQUEST = {\r\n    apiVersion: 2,\r\n    apiVersionMinor: 0\r\n}","export * from './use-payments-client';\r\nexport * from './use-payment-request';\r\nexport * from './use-error-message';","import {useState} from '@wordpress/element';\r\n\r\nexport const useErrorMessage = () => {\r\n    const [errorMessage, setErrorMessage] = useState(false);\r\n    return {errorMessage, setErrorMessage};\r\n}","import {useState, useEffect, useMemo} from '@wordpress/element';\r\nimport {BASE_PAYMENT_REQUEST, BASE_PAYMENT_METHOD} from \"../constants\";\r\nimport {isEmpty, isFieldRequired} from \"../../util\";\r\nimport {getTransactionInfo, getShippingOptionParameters} from \"../util\";\r\n\r\nexport const usePaymentRequest = ({getData, publishableKey, merchantInfo, billing, shippingData}) => {\r\n    const {billingData} = billing;\r\n    const {shippingRates} = shippingData;\r\n    const {processingCountry, totalPriceLabel} = getData();\r\n\r\n    const paymentRequest = useMemo(() => {\r\n        let options = {\r\n            ...{\r\n                emailRequired: isEmpty(billingData.email),\r\n                merchantInfo,\r\n                allowedPaymentMethods: [{\r\n                    ...{\r\n                        type: 'CARD',\r\n                        tokenizationSpecification: {\r\n                            type: \"PAYMENT_GATEWAY\",\r\n                            parameters: {\r\n                                gateway: 'stripe',\r\n                                \"stripe:version\": \"2018-10-31\",\r\n                                \"stripe:publishableKey\": publishableKey\r\n                            }\r\n                        }\r\n                    }, ...BASE_PAYMENT_METHOD\r\n                }],\r\n                shippingAddressRequired: shippingData.needsShipping,\r\n                transactionInfo: getTransactionInfo({\r\n                    billing,\r\n                    processingCountry,\r\n                    totalPriceLabel\r\n                }),\r\n                callbackIntents: ['PAYMENT_AUTHORIZATION']\r\n            }, ...BASE_PAYMENT_REQUEST\r\n        };\r\n        options.allowedPaymentMethods[0].parameters.billingAddressRequired = true;\r\n        options.allowedPaymentMethods[0].parameters.billingAddressParameters = {\r\n            format: 'FULL',\r\n            phoneNumberRequired: isFieldRequired('phone', billingData.country) && isEmpty(billingData.phone)\r\n        };\r\n        if (options.shippingAddressRequired) {\r\n            options.callbackIntents = [...options.callbackIntents, ...['SHIPPING_ADDRESS', 'SHIPPING_OPTION']];\r\n            options.shippingOptionRequired = true;\r\n            const shippingOptionParameters = getShippingOptionParameters(shippingRates);\r\n            if (shippingOptionParameters.shippingOptions.length > 0) {\r\n                options = {...options, shippingOptionParameters};\r\n            }\r\n        }\r\n        return options;\r\n    }, [\r\n        billing.cartTotal,\r\n        billing.cartTotalItems,\r\n        billingData,\r\n        shippingData\r\n    ]);\r\n    return paymentRequest;\r\n}","import {useState, useEffect, useCallback, useMemo, useRef} from '@wordpress/element';\r\nimport isShallowEqual from \"@wordpress/is-shallow-equal\";\r\nimport {\r\n    getErrorMessage,\r\n    getSelectedShippingOption,\r\n    getBillingDetailsFromAddress,\r\n    isAddressValid,\r\n    isEmpty,\r\n    StripeError,\r\n    getIntermediateAddress\r\n} from \"../../util\";\r\nimport {useStripe} from \"@stripe/react-stripe-js\";\r\nimport {getPaymentRequestUpdate, toCartAddress} from \"../util\";\r\nimport {__} from \"@wordpress/i18n\";\r\nimport {usePaymentEvents} from \"../../hooks\";\r\n\r\nexport const usePaymentsClient = (\r\n    {\r\n        merchantInfo,\r\n        paymentRequest,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        canMakePayment,\r\n        setErrorMessage,\r\n        setPaymentMethod,\r\n        exportedValues,\r\n        onClick,\r\n        onClose,\r\n        getData\r\n    }) => {\r\n    const {environment} = getData();\r\n    const [paymentsClient, setPaymentsClient] = useState();\r\n    const [button, setButton] = useState(null);\r\n    const currentBilling = useRef(billing);\r\n    const currentShipping = useRef(shippingData);\r\n    const stripe = useStripe();\r\n    const {addPaymentEvent} = usePaymentEvents({\r\n        billing,\r\n        shippingData,\r\n        eventRegistration\r\n    });\r\n    useEffect(() => {\r\n        currentBilling.current = billing;\r\n        currentShipping.current = shippingData;\r\n    });\r\n\r\n    const setAddressData = useCallback((paymentData) => {\r\n        if (paymentData?.paymentMethodData?.info?.billingAddress) {\r\n            let billingAddress = paymentData.paymentMethodData.info.billingAddress;\r\n            if (isAddressValid(currentBilling.current.billingData, ['phone', 'email']) && isEmpty(currentBilling.current.billingData?.phone)) {\r\n                billingAddress = {phoneNumber: billingAddress.phoneNumber};\r\n            }\r\n            exportedValues.billingData = currentBilling.current.billingData = toCartAddress(billingAddress, {email: paymentData.email});\r\n        }\r\n        if (paymentData?.shippingAddress) {\r\n            exportedValues.shippingAddress = toCartAddress(paymentData.shippingAddress);\r\n        }\r\n    }, [exportedValues, paymentRequest]);\r\n\r\n    const removeButton = useCallback((parentElement) => {\r\n        while (parentElement.firstChild) {\r\n            parentElement.removeChild(parentElement.firstChild);\r\n        }\r\n    }, [button]);\r\n    const handleClick = useCallback(async () => {\r\n        onClick();\r\n        try {\r\n            let paymentData = await paymentsClient.loadPaymentData(paymentRequest);\r\n\r\n            // set the address data so it can be used during the checkout process\r\n            setAddressData(paymentData);\r\n\r\n            const data = JSON.parse(paymentData.paymentMethodData.tokenizationData.token);\r\n\r\n            let result = await stripe.createPaymentMethod({\r\n                type: 'card',\r\n                card: {token: data.id},\r\n                billing_details: getBillingDetailsFromAddress(currentBilling.current.billingData)\r\n            });\r\n\r\n            if (result.error) {\r\n                throw new StripeError(result.error);\r\n            }\r\n\r\n            setPaymentMethod(result.paymentMethod.id);\r\n        } catch (err) {\r\n            if (err?.statusCode === \"CANCELED\") {\r\n                onClose();\r\n            } else {\r\n                console.log(getErrorMessage(err));\r\n                setErrorMessage(getErrorMessage(err));\r\n            }\r\n        }\r\n    }, [\r\n        stripe,\r\n        paymentsClient,\r\n        onClick\r\n    ]);\r\n\r\n    const createButton = useCallback(async () => {\r\n        try {\r\n            if (paymentsClient && !button && stripe) {\r\n                await canMakePayment;\r\n                setButton(paymentsClient.createButton({\r\n                    onClick: handleClick,\r\n                    ...getData('buttonStyle')\r\n                }));\r\n            }\r\n        } catch (err) {\r\n            console.log(err);\r\n        }\r\n    }, [\r\n        stripe,\r\n        button,\r\n        paymentsClient,\r\n        handleClick\r\n    ]);\r\n\r\n    const paymentOptions = useMemo(() => {\r\n        let options = {\r\n            environment,\r\n            merchantInfo,\r\n            paymentDataCallbacks: {\r\n                onPaymentAuthorized: () => Promise.resolve({transactionState: \"SUCCESS\"})\r\n            }\r\n        }\r\n        if (paymentRequest.shippingAddressRequired) {\r\n            options.paymentDataCallbacks.onPaymentDataChanged = (paymentData) => {\r\n                return new Promise((resolve, reject) => {\r\n                    const shipping = currentShipping.current;\r\n                    const {shippingAddress: address, shippingOptionData} = paymentData;\r\n                    const intermediateAddress = toCartAddress(address);\r\n                    // pass the Promise resolve to a ref so it persists beyond the re-render\r\n                    const selectedRates = getSelectedShippingOption(shippingOptionData.id);\r\n                    const addressEqual = isShallowEqual(getIntermediateAddress(shipping.shippingAddress), intermediateAddress);\r\n                    const shippingEqual = isShallowEqual(shipping.selectedRates, {\r\n                        [selectedRates[1]]: selectedRates[0]\r\n                    });\r\n                    addPaymentEvent('onShippingChanged', (success, {billing, shipping}) => {\r\n                        if (success) {\r\n                            resolve(getPaymentRequestUpdate({\r\n                                billing,\r\n                                shippingData: {\r\n                                    needsShipping: true,\r\n                                    shippingRates: shipping.shippingRates\r\n                                },\r\n                                processingCountry: getData('processingCountry'),\r\n                                totalPriceLabel: getData('totalPriceLabel')\r\n                            }))\r\n                        } else {\r\n                            resolve({\r\n                                error: {\r\n                                    reason: 'SHIPPING_ADDRESS_UNSERVICEABLE',\r\n                                    message: __('Your shipping address is not serviceable.', 'woo-stripe-payment'),\r\n                                    intent: 'SHIPPING_ADDRESS'\r\n                                }\r\n                            });\r\n                        }\r\n                    }, addressEqual && shippingEqual);\r\n                    currentShipping.current.setShippingAddress({...currentShipping.current.shippingAddress, ...intermediateAddress});\r\n                    if (shippingOptionData.id !== 'shipping_option_unselected') {\r\n                        currentShipping.current.setSelectedRates(...selectedRates);\r\n                    }\r\n                })\r\n            }\r\n        }\r\n        return options;\r\n    }, [paymentRequest]);\r\n\r\n    useEffect(() => {\r\n        setPaymentsClient(new google.payments.api.PaymentsClient(paymentOptions));\r\n    }, [paymentOptions]);\r\n\r\n    useEffect(() => {\r\n        createButton();\r\n    }, [createButton])\r\n\r\n    return {\r\n        button,\r\n        removeButton\r\n    };\r\n}","import './style.scss';\r\n\r\nexport * from './payment-method';","import {registerExpressPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, initStripe as loadStripe, isCartPage} from '../util';\r\nimport {useErrorMessage} from \"./hooks\";\r\nimport GooglePayButton from './button';\r\nimport {BASE_PAYMENT_METHOD, BASE_PAYMENT_REQUEST} from './constants';\r\nimport google from '@googlepay';\r\nimport {Elements} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_googlepay_data');\r\n\r\nconst canMakePayment = (() => {\r\n    const paymentsClient = new google.payments.api.PaymentsClient({\r\n        environment: getData('environment'),\r\n        merchantInfo: {\r\n            merchantId: getData('merchantId'),\r\n            merchantName: getData('merchantName')\r\n        }\r\n    });\r\n    const isReadyToPayRequest = {...BASE_PAYMENT_REQUEST, allowedPaymentMethods: [BASE_PAYMENT_METHOD]};\r\n    return paymentsClient.isReadyToPay(isReadyToPayRequest).then(() => {\r\n        return true;\r\n    }).catch(err => {\r\n        console.log(err);\r\n        return false;\r\n    })\r\n})();\r\n\r\nconst GooglePayContent = ({getData, components, ...props}) => {\r\n    const {ValidationInputError} = components;\r\n    const {errorMessage, setErrorMessage} = useErrorMessage();\r\n    return (\r\n        <div className='wc-stripe-gpay-container'>\r\n            <Elements stripe={loadStripe}>\r\n                <GooglePayButton getData={getData}\r\n                                 canMakePayment={canMakePayment}\r\n                                 setErrorMessage={setErrorMessage}\r\n                                 {...props}/>\r\n                {errorMessage && <ValidationInputError errorMessage={errorMessage}/>}\r\n            </Elements>\r\n        </div>\r\n    )\r\n}\r\n\r\nconst GooglePayEdit = ({getData, ...props}) => {\r\n    const buttonType = getData('buttonStyle').buttonType;\r\n    const src = getData('editorIcons')?.[buttonType] || 'long';\r\n    return (\r\n        <div className={`gpay-block-editor ${buttonType}`}>\r\n            <img src={src}/>\r\n        </div>\r\n    )\r\n}\r\n\r\nregisterExpressPaymentMethod({\r\n    name: getData('name'),\r\n    canMakePayment: () => {\r\n        if (getData('isAdmin')) {\r\n            if (isCartPage()) {\r\n                return getData('cartCheckoutEnabled');\r\n            }\r\n            return true;\r\n        }\r\n        if (isCartPage() && !getData('cartCheckoutEnabled')) {\r\n            return false;\r\n        }\r\n        return loadStripe.then(stripe => {\r\n            if (stripe.error) {\r\n                return stripe;\r\n            }\r\n            return canMakePayment;\r\n        });\r\n    },\r\n    content: <GooglePayContent getData={getData}/>,\r\n    edit: <GooglePayEdit getData={getData}/>,\r\n    supports: {\r\n        showSavedCards: getData('showSavedCards'),\r\n        showSaveOption: getData('showSaveOption'),\r\n        features: getData('features')\r\n    }\r\n})","import {getShippingOptionId, removeNumberPrecision, toCartAddress as mapAddressToCartAddress} from \"../util\";\r\nimport {formatPrice} from '../util';\r\nimport {getSetting} from '@woocommerce/settings'\r\n\r\nconst generalData = getSetting('stripeGeneralData');\r\n\r\nconst ADDRESS_MAPPINGS = {\r\n    name: (address, name) => {\r\n        address.first_name = name.split(' ').slice(0, -1).join(' ');\r\n        address.last_name = name.split(' ').pop();\r\n        return address;\r\n    },\r\n    countryCode: 'country',\r\n    address1: 'address_1',\r\n    address2: 'address_2',\r\n    locality: 'city',\r\n    administrativeArea: 'state',\r\n    postalCode: 'postcode',\r\n    email: 'email',\r\n    phoneNumber: 'phone'\r\n}\r\n\r\nexport const getTransactionInfo = ({billing, processingCountry, totalPriceLabel}, status = 'ESTIMATED') => {\r\n    const {cartTotal, cartTotalItems, currency} = billing;\r\n    const transactionInfo = {\r\n        countryCode: processingCountry,\r\n        currencyCode: currency.code,\r\n        totalPriceStatus: status,\r\n        totalPrice: removeNumberPrecision(cartTotal.value, currency.minorUnit).toString(),\r\n        displayItems: getDisplayItems(cartTotalItems, currency.minorUnit),\r\n        totalPriceLabel\r\n    }\r\n    return transactionInfo;\r\n}\r\n\r\nexport const getPaymentRequestUpdate = ({billing, shippingData, processingCountry, totalPriceLabel}) => {\r\n    const {needsShipping, shippingRates} = shippingData;\r\n    let update = {\r\n        newTransactionInfo: getTransactionInfo({\r\n            billing, processingCountry, totalPriceLabel\r\n        }, 'FINAL')\r\n    }\r\n    if (needsShipping) {\r\n        update.newShippingOptionParameters = getShippingOptionParameters(shippingRates);\r\n    }\r\n    return update;\r\n}\r\n\r\n/**\r\n * Return an array of line item objects\r\n * @param cartTotalItems\r\n * @param unit\r\n * @returns {[]}\r\n */\r\nconst getDisplayItems = (cartTotalItems, unit = 2) => {\r\n    let items = [];\r\n    const keys = ['total_tax', 'total_shipping'];\r\n    cartTotalItems.forEach(item => {\r\n        if (0 < item.value || (item.key && keys.includes(item.key))) {\r\n            items.push({\r\n                label: item.label,\r\n                type: 'LINE_ITEM',\r\n                price: removeNumberPrecision(item.value, unit).toString()\r\n            });\r\n        }\r\n    })\r\n    return items;\r\n}\r\n\r\nexport const getShippingOptionParameters = (shippingRates) => {\r\n    const shippingOptions = getShippingOptions(shippingRates);\r\n    const shippingOptionIds = shippingOptions.map(option => option.id);\r\n    let defaultSelectedOptionId = shippingOptionIds.slice(0, 1).shift();\r\n    shippingRates.forEach((shippingPackage, idx) => {\r\n        shippingPackage.shipping_rates.forEach(rate => {\r\n            if (rate.selected) {\r\n                defaultSelectedOptionId = getShippingOptionId(idx, rate.rate_id);\r\n            }\r\n        });\r\n    });\r\n    return {\r\n        shippingOptions,\r\n        defaultSelectedOptionId,\r\n    }\r\n}\r\n\r\n//id label description\r\nexport const getShippingOptions = (shippingRates) => {\r\n    let options = [];\r\n    shippingRates.forEach((shippingPackage, idx) => {\r\n        let rates = shippingPackage.shipping_rates.map(rate => {\r\n            let txt = document.createElement('textarea');\r\n            txt.innerHTML = rate.name;\r\n            let price = formatPrice(rate.price, rate.currency_code);\r\n            return {\r\n                id: getShippingOptionId(idx, rate.rate_id),\r\n                label: txt.value,\r\n                description: `${price}`\r\n            }\r\n        });\r\n        options = [...options, ...rates];\r\n    });\r\n    return options;\r\n}\r\n\r\nexport const toCartAddress = mapAddressToCartAddress(ADDRESS_MAPPINGS);\r\n","export * from './use-process-payment-intent';\r\nexport * from './use-after-process-payment';\r\nexport * from './use-setup-intent';\r\nexport * from './use-stripe-error';\r\nexport * from './use-exported-values';\r\nexport * from './use-payment-request';\r\nexport * from './use-payment-events';\r\nexport * from './use-breakpoint-width';\r\nexport * from './use-process-checkout-error'","import {useEffect} from '@wordpress/element'\r\nimport {useStripe} from \"@stripe/react-stripe-js\";\r\nimport {handleCardAction} from \"../util\";\r\nimport {useProcessCheckoutError} from \"./use-process-checkout-error\";\r\n\r\nexport const useAfterProcessingPayment = (\r\n    {\r\n        getData,\r\n        eventRegistration,\r\n        responseTypes,\r\n        activePaymentMethod,\r\n        savePaymentMethod = false,\r\n        messageContext = null\r\n    }) => {\r\n    const stripe = useStripe();\r\n    const {onCheckoutAfterProcessingWithSuccess, onCheckoutAfterProcessingWithError} = eventRegistration;\r\n    useProcessCheckoutError({\r\n        responseTypes,\r\n        subscriber: onCheckoutAfterProcessingWithError,\r\n        messageContext\r\n    });\r\n    useEffect(() => {\r\n        let unsubscribeAfterProcessingWithSuccess = onCheckoutAfterProcessingWithSuccess(async ({redirectUrl}) => {\r\n            if (getData('name') === activePaymentMethod) {\r\n                //check if response is in redirect. If so, open modal\r\n                return await handleCardAction({\r\n                    redirectUrl,\r\n                    responseTypes,\r\n                    stripe,\r\n                    getData,\r\n                    savePaymentMethod\r\n                });\r\n            }\r\n            return null;\r\n        })\r\n        return () => unsubscribeAfterProcessingWithSuccess()\r\n    }, [\r\n        stripe,\r\n        responseTypes,\r\n        onCheckoutAfterProcessingWithSuccess,\r\n        activePaymentMethod,\r\n        savePaymentMethod\r\n    ]);\r\n}","import {useState, useEffect, useCallback} from '@wordpress/element';\r\nimport {storeInCache, getFromCache} from \"../util\";\r\n\r\nexport const useBreakpointWidth = (\r\n    {\r\n        name,\r\n        width,\r\n        node,\r\n        className\r\n    }) => {\r\n    const [windowWidth, setWindowWith] = useState(window.innerWidth);\r\n    const getMaxWidth = useCallback((name) => {\r\n        const maxWidth = getFromCache(name);\r\n        return maxWidth ? parseInt(maxWidth) : 0;\r\n    }, []);\r\n    const setMaxWidth = useCallback((name, width) => storeInCache(name, width), []);\r\n\r\n    useEffect(() => {\r\n        const el = typeof node === 'function' ? node() : node;\r\n\r\n        if (el) {\r\n            const maxWidth = getMaxWidth(name);\r\n            if (!maxWidth || width > maxWidth) {\r\n                setMaxWidth(name, width);\r\n            }\r\n            if (el.clientWidth < width) {\r\n                el.classList.add(className);\r\n            } else {\r\n                if (el.clientWidth > maxWidth) {\r\n                    el.classList.remove(className);\r\n                }\r\n            }\r\n        }\r\n    }, [windowWidth, node]);\r\n    useEffect(() => {\r\n        const handleResize = () => setWindowWith(window.innerWidth);\r\n        window.addEventListener('resize', handleResize);\r\n        return () => window.removeEventListener('resize', handleResize);\r\n    });\r\n}\r\n\r\nexport const useExpressBreakpointWidth = (\r\n    {\r\n        payment_method,\r\n        width\r\n    }) => {\r\n    const node = useCallback(() => {\r\n        const el = document.getElementById(`express-payment-method-${payment_method}`);\r\n        return el ? el.parentNode : null;\r\n    }, []);\r\n    useBreakpointWidth({\r\n        name: 'expressMaxWidth',\r\n        width,\r\n        node,\r\n        className: 'wc-stripe-express__sm'\r\n    });\r\n\r\n}","import {useRef} from '@wordpress/element';\r\n\r\nexport const useExportedValues = () => {\r\n    const exportedValues = useRef({});\r\n    return exportedValues.current;\r\n}","import {useEffect, useCallback, useRef, useState} from '@wordpress/element';\r\nimport {hasShippingRates} from '../util';\r\n\r\nexport const usePaymentEvents = (\r\n    {\r\n        billing,\r\n        shippingData,\r\n        eventRegistration\r\n    }) => {\r\n    const {onShippingRateSuccess, onShippingRateFail, onShippingRateSelectSuccess} = eventRegistration;\r\n    const currentBilling = useRef(billing);\r\n    const currentShipping = useRef(shippingData);\r\n    const [handler, setHandler] = useState(null);\r\n    const [paymentEvents, setPaymentEvent] = useState({\r\n        onShippingChanged: false\r\n    });\r\n    const addPaymentEvent = useCallback((name, handler, execute = false) => {\r\n        if (execute) {\r\n            setHandler({[name]: handler});\r\n        } else {\r\n            setPaymentEvent({...paymentEvents, [name]: handler});\r\n        }\r\n    }, [paymentEvents, setPaymentEvent]);\r\n    const removePaymentEvent = useCallback((name) => {\r\n        if (paymentEvents[name]) {\r\n            delete paymentEvents[name];\r\n            setPaymentEvent(paymentEvents);\r\n        }\r\n    }, [paymentEvents]);\r\n\r\n    const onShippingChanged = useCallback(() => {\r\n        const shipping = currentShipping.current;\r\n        const billing = currentBilling.current;\r\n        if (paymentEvents.onShippingChanged && !shipping.isSelectingRate && !shipping.shippingRatesLoading) {\r\n            const handler = paymentEvents.onShippingChanged;\r\n            let success = true;\r\n            if (!hasShippingRates(shipping.shippingRates)) {\r\n                success = false;\r\n            }\r\n            handler(success, {\r\n                billing,\r\n                shipping\r\n            });\r\n            removePaymentEvent('onShippingChanged');\r\n        }\r\n    }, [paymentEvents, removePaymentEvent]);\r\n\r\n    useEffect(() => {\r\n        currentBilling.current = billing;\r\n        currentShipping.current = shippingData;\r\n    });\r\n\r\n    useEffect(() => {\r\n        if (handler) {\r\n            if (handler.onShippingChanged) {\r\n                handler.onShippingChanged(true, {\r\n                    billing: currentBilling.current,\r\n                    shipping: currentShipping.current\r\n                })\r\n                setHandler(null);\r\n            }\r\n        }\r\n    }, [handler]);\r\n\r\n    useEffect(() => {\r\n        const unsubscribeShippingRateSuccess = onShippingRateSuccess(onShippingChanged);\r\n        const unsubscribeShippingRateSelectSuccess = onShippingRateSelectSuccess(onShippingChanged);\r\n        const unsubscribeShippingRateFail = onShippingRateFail(({hasInvalidAddress, hasError}) => {\r\n            if (paymentEvents.onShippingChanged) {\r\n                const handler = paymentEvents.onShippingChanged;\r\n                handler(false);\r\n                removePaymentEvent('onShippingChanged');\r\n            }\r\n        });\r\n\r\n        return () => {\r\n            unsubscribeShippingRateSuccess();\r\n            unsubscribeShippingRateFail();\r\n            unsubscribeShippingRateSelectSuccess();\r\n        }\r\n    }, [\r\n        paymentEvents,\r\n        onShippingRateSuccess,\r\n        onShippingRateFail,\r\n        onShippingRateSelectSuccess\r\n    ]);\r\n\r\n    return {addPaymentEvent, removePaymentEvent};\r\n}","import {useState, useEffect, useRef, useCallback} from '@wordpress/element';\r\nimport {usePaymentEvents} from './use-payment-events';\r\nimport {getIntermediateAddress} from '../util';\r\nimport isShallowEqual from '@wordpress/is-shallow-equal';\r\nimport {\r\n    getDisplayItems,\r\n    getShippingOptions,\r\n    getSelectedShippingOption,\r\n    isFieldRequired,\r\n    toCartAddress as mapToCartAddress\r\n} from \"../util\";\r\n\r\nconst toCartAddress = mapToCartAddress();\r\n\r\nexport const usePaymentRequest = (\r\n    {\r\n        getData,\r\n        onClose,\r\n        stripe,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        setPaymentMethod,\r\n        exportedValues,\r\n        canPay\r\n    }) => {\r\n    const {addPaymentEvent} = usePaymentEvents({\r\n        billing,\r\n        shippingData,\r\n        eventRegistration\r\n    });\r\n    const {shippingAddress, needsShipping, shippingRates} = shippingData;\r\n    const {billingData, cartTotalItems, currency, cartTotal} = billing;\r\n    const [paymentRequest, setPaymentRequest] = useState(null);\r\n    const paymentRequestOptions = useRef({});\r\n    const currentShipping = useRef(shippingData)\r\n    const currentBilling = useRef(billing);\r\n\r\n    useEffect(() => {\r\n        currentShipping.current = shippingData;\r\n        currentBilling.current = billing;\r\n    }, [shippingData]);\r\n\r\n    useEffect(() => {\r\n        if (stripe) {\r\n            const options = {\r\n                country: getData('countryCode'),\r\n                currency: currency?.code.toLowerCase(),\r\n                total: {\r\n                    amount: cartTotal.value,\r\n                    label: cartTotal.label,\r\n                    pending: true\r\n                },\r\n                requestPayerName: true,\r\n                requestPayerEmail: isFieldRequired('email', billingData.country),\r\n                requestPayerPhone: isFieldRequired('phone', billingData.country),\r\n                requestShipping: needsShipping,\r\n                displayItems: getDisplayItems(cartTotalItems, currency)\r\n            }\r\n            if (options.requestShipping) {\r\n                options.shippingOptions = getShippingOptions(shippingRates);\r\n            }\r\n            paymentRequestOptions.current = options;\r\n            const paymentRequest = stripe.paymentRequest(paymentRequestOptions.current);\r\n            paymentRequest.canMakePayment().then(result => {\r\n                if (canPay(result)) {\r\n                    setPaymentRequest(paymentRequest);\r\n                } else {\r\n                    setPaymentRequest(null);\r\n                }\r\n            });\r\n        }\r\n    }, [\r\n        stripe,\r\n        cartTotal.value,\r\n        billingData.country,\r\n        shippingRates,\r\n        cartTotalItems,\r\n        currency.code\r\n    ]);\r\n\r\n    useEffect(() => {\r\n        if (paymentRequest) {\r\n            if (paymentRequestOptions.current.requestShipping) {\r\n                paymentRequest.on('shippingaddresschange', onShippingAddressChange);\r\n                paymentRequest.on('shippingoptionchange', onShippingOptionChange);\r\n            }\r\n            paymentRequest.on('cancel', onClose);\r\n            paymentRequest.on('paymentmethod', onPaymentMethodReceived);\r\n        }\r\n    }, [\r\n        paymentRequest,\r\n        onShippingAddressChange,\r\n        onClose,\r\n        onPaymentMethodReceived\r\n    ]);\r\n\r\n    const updatePaymentEvent = useCallback((event) => (success, {billing, shipping}) => {\r\n        const {cartTotal, cartTotalItems, currency} = billing;\r\n        const {shippingRates} = shipping;\r\n        if (success) {\r\n            event.updateWith({\r\n                status: 'success',\r\n                total: {\r\n                    amount: cartTotal.value,\r\n                    label: cartTotal.label,\r\n                    pending: false\r\n                },\r\n                displayItems: getDisplayItems(cartTotalItems, currency),\r\n                shippingOptions: getShippingOptions(shippingRates)\r\n            });\r\n        } else {\r\n            event.updateWith({status: 'invalid_shipping_address'});\r\n        }\r\n    }, []);\r\n\r\n    const onShippingAddressChange = useCallback(event => {\r\n        const {shippingAddress} = event;\r\n        const shipping = currentShipping.current;\r\n        const intermediateAddress = toCartAddress(shippingAddress);\r\n        shipping.setShippingAddress({...shipping.shippingAddress, ...intermediateAddress});\r\n        const addressEqual = isShallowEqual(getIntermediateAddress(shipping.shippingAddress), intermediateAddress);\r\n        addPaymentEvent('onShippingChanged', updatePaymentEvent(event), addressEqual);\r\n    }, [addPaymentEvent]);\r\n\r\n    const onShippingOptionChange = useCallback(event => {\r\n        const {shippingOption} = event;\r\n        const shipping = currentShipping.current;\r\n        shipping.setSelectedRates(...getSelectedShippingOption(shippingOption.id));\r\n        addPaymentEvent('onShippingChanged', updatePaymentEvent(event));\r\n    }, [addPaymentEvent]);\r\n\r\n    const onPaymentMethodReceived = useCallback((paymentResponse) => {\r\n        const {paymentMethod, payerName = null, payerEmail = null, payerPhone = null} = paymentResponse;\r\n        // set address data\r\n        let billingData = {payerName, payerEmail, payerPhone};\r\n        if (paymentMethod?.billing_details.address) {\r\n            billingData = toCartAddress(paymentMethod.billing_details.address, billingData);\r\n        }\r\n        exportedValues.billingData = billingData;\r\n\r\n        if (paymentResponse.shippingAddress) {\r\n            exportedValues.shippingAddress = toCartAddress(paymentResponse.shippingAddress);\r\n        }\r\n\r\n        // set payment method\r\n        setPaymentMethod(paymentMethod.id);\r\n        paymentResponse.complete(\"success\");\r\n    }, []);\r\n\r\n    return {paymentRequest};\r\n}","import {useEffect} from '@wordpress/element';\r\n\r\nexport const useProcessCheckoutError = (\r\n    {\r\n        responseTypes,\r\n        subscriber,\r\n        messageContext = null\r\n    }) => {\r\n    useEffect(() => {\r\n        const unsubscribe = subscriber((data) => {\r\n            if (data?.processingResponse.paymentDetails?.stripeErrorMessage) {\r\n                return {\r\n                    type: responseTypes.ERROR,\r\n                    message: data.processingResponse.paymentDetails.stripeErrorMessage,\r\n                    messageContext\r\n                };\r\n            }\r\n            return null;\r\n        });\r\n        return () => unsubscribe();\r\n    }, [responseTypes, subscriber]);\r\n}","import {useEffect, useState, useCallback, useRef} from '@wordpress/element';\r\nimport {useStripe} from '@stripe/react-stripe-js';\r\nimport {\r\n    ensureSuccessResponse,\r\n    ensureErrorResponse,\r\n    getBillingDetailsFromAddress,\r\n    StripeError\r\n} from '../util';\r\n\r\nexport const useProcessPaymentIntent = (\r\n    {\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        onPaymentProcessing,\r\n        emitResponse,\r\n        error,\r\n        onSubmit,\r\n        activePaymentMethod,\r\n        paymentType = 'card',\r\n        setupIntent = null,\r\n        removeSetupIntent = null,\r\n        savePaymentMethod = false,\r\n        exportedValues = {},\r\n        getPaymentMethodArgs = () => ({})\r\n    }) => {\r\n    const {billingData} = billing;\r\n    const {shippingAddress} = shippingData;\r\n    const {responseTypes} = emitResponse;\r\n    const [paymentMethod, setPaymentMethod] = useState(null);\r\n    const stripe = useStripe();\r\n    const currentPaymentMethodArgs = useRef(getPaymentMethodArgs);\r\n\r\n    useEffect(() => {\r\n        currentPaymentMethodArgs.current = getPaymentMethodArgs;\r\n    }, [getPaymentMethodArgs]);\r\n\r\n    const getCreatePaymentMethodArgs = useCallback(() => {\r\n        const args = {\r\n            type: paymentType,\r\n            billing_details: getBillingDetailsFromAddress(exportedValues?.billingData ? exportedValues.billingData : billingData)\r\n        }\r\n        return {...args, ...currentPaymentMethodArgs.current()};\r\n    }, [billingData, paymentType, getPaymentMethodArgs]);\r\n\r\n    const getSuccessResponse = useCallback((paymentMethodId, savePaymentMethod) => {\r\n        const response = {\r\n            meta: {\r\n                paymentMethodData: {\r\n                    [`${getData('name')}_token_key`]: paymentMethodId,\r\n                    [`${getData('name')}_save_source_key`]: savePaymentMethod\r\n                }\r\n            }\r\n        }\r\n        if (exportedValues?.billingData) {\r\n            response.meta.billingData = exportedValues.billingData;\r\n        }\r\n        if (exportedValues?.shippingAddress) {\r\n            response.meta.shippingData = {address: exportedValues.shippingAddress};\r\n        }\r\n        return response;\r\n    }, [billingData, shippingAddress]);\r\n\r\n    useEffect(() => {\r\n        if (paymentMethod && typeof paymentMethod === 'string') {\r\n            onSubmit();\r\n        }\r\n    }, [paymentMethod, onSubmit]);\r\n\r\n    useEffect(() => {\r\n        const unsubscribeProcessingPayment = onPaymentProcessing(async () => {\r\n            if (activePaymentMethod !== getData('name')) {\r\n                return null;\r\n            }\r\n            let [result, paymentMethodId] = [null, null];\r\n            try {\r\n                if (error) {\r\n                    throw new StripeError(error);\r\n                }\r\n                if (setupIntent) {\r\n                    result = await stripe.confirmCardSetup(setupIntent.client_secret, {\r\n                        payment_method: getCreatePaymentMethodArgs()\r\n                    });\r\n                    if (result.error) {\r\n                        throw new StripeError(result.error);\r\n                    }\r\n                    paymentMethodId = result.setupIntent.payment_method;\r\n                    removeSetupIntent();\r\n                } else {\r\n                    // payment method has already been created.\r\n                    if (paymentMethod) {\r\n                        paymentMethodId = paymentMethod;\r\n                    } else {\r\n                        //create the payment method\r\n                        result = await stripe.createPaymentMethod(getCreatePaymentMethodArgs());\r\n                        if (result.error) {\r\n                            throw new StripeError(result.error);\r\n                        }\r\n                        paymentMethodId = result.paymentMethod.id;\r\n                    }\r\n                }\r\n                return ensureSuccessResponse(responseTypes, getSuccessResponse(paymentMethodId, savePaymentMethod));\r\n            } catch (e) {\r\n                console.log(e);\r\n                setPaymentMethod(null);\r\n                return ensureErrorResponse(responseTypes, e.error);\r\n            }\r\n\r\n        });\r\n        return () => unsubscribeProcessingPayment();\r\n    }, [\r\n        paymentMethod,\r\n        billingData,\r\n        onPaymentProcessing,\r\n        stripe,\r\n        setupIntent,\r\n        activePaymentMethod,\r\n        savePaymentMethod\r\n    ]);\r\n    return {setPaymentMethod};\r\n}","import {useEffect, useState, useCallback} from '@wordpress/element';\r\nimport apiFetch from \"@wordpress/api-fetch\";\r\nimport {\r\n    getSettings,\r\n    getRoute,\r\n    cartContainsPreOrder,\r\n    cartContainsSubscription,\r\n    getFromCache,\r\n    storeInCache,\r\n    deleteFromCache\r\n} from '../util';\r\n\r\nexport const useSetupIntent = (\r\n    {\r\n        cartTotal,\r\n        setError\r\n    }) => {\r\n    const [setupIntent, setSetupIntent] = useState(getFromCache('setupIntent'));\r\n\r\n    useEffect(() => {\r\n        const createSetupIntent = async () => {\r\n            if (setupIntent) {\r\n                return;\r\n            }\r\n            // only create intent under certain conditions\r\n            let result = await apiFetch({\r\n                url: getRoute('create/setup_intent'),\r\n                method: 'POST'\r\n            });\r\n            if (result.code) {\r\n                setError(result.message);\r\n            } else {\r\n                storeInCache('setupIntent', result.intent);\r\n                setSetupIntent(result.intent);\r\n            }\r\n        }\r\n        if (cartContainsPreOrder() || (cartContainsSubscription() && cartTotal.value == 0)) {\r\n            if (!setupIntent) {\r\n                createSetupIntent();\r\n            }\r\n        } else {\r\n            setSetupIntent(null);\r\n        }\r\n    }, [cartTotal.value]);\r\n    const removeSetupIntent = useCallback(() => {\r\n        deleteFromCache('setupIntent');\r\n    }, [cartTotal.value]);\r\n    return {setupIntent, removeSetupIntent};\r\n}","import {useState} from '@wordpress/element'\r\n\r\nexport const useStripeError = () => {\r\n    const [error, setError] = useState(false);\r\n    return [error, setError];\r\n}","import {useState, useEffect} from '@wordpress/element';\r\nimport {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, initStripe} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {AfterpayClearpayMessageElement, Elements} from \"@stripe/react-stripe-js\";\r\nimport {sprintf, __} from '@wordpress/i18n';\r\n\r\nconst getData = getSettings('stripe_afterpay_data');\r\nlet variablesHandler;\r\nconst setVariablesHandler = (handler) => {\r\n    variablesHandler = handler;\r\n}\r\nconst PaymentMethodLabel = ({getData}) => {\r\n    const [variables, setVariables] = useState({\r\n        amount: getData('cartTotal'),\r\n        currency: getData('currency'),\r\n        isEligible: getData('msgOptions').isEligible\r\n    });\r\n    setVariablesHandler(setVariables);\r\n    return (\r\n        <Elements stripe={initStripe} options={getData('elementOptions')}>\r\n            <div className='wc-stripe-blocks-afterpay__label'>\r\n                <AfterpayClearpayMessageElement options={{\r\n                    ...getData('msgOptions'),\r\n                    ...{\r\n                        amount: variables.amount,\r\n                        currency: variables.currency,\r\n                        isEligible: variables.isEligible\r\n                    }\r\n                }}/>\r\n            </div>\r\n        </Elements>\r\n    );\r\n}\r\n\r\nconst AfterpayPaymentMethod = ({content, billing, shippingData, ...props}) => {\r\n    const Content = content;\r\n    const {cartTotal, currency} = billing;\r\n    const {needsShipping} = shippingData\r\n    useEffect(() => {\r\n        variablesHandler({\r\n            amount: cartTotal.value,\r\n            currency: currency.code,\r\n            isEligible: needsShipping\r\n        });\r\n    }, [\r\n        cartTotal.value,\r\n        currency.code,\r\n        needsShipping\r\n    ]);\r\n    return (\r\n        <>\r\n            {needsShipping &&\r\n            <div className='wc-stripe-blocks-payment-method-content'>\r\n                <div className=\"wc-stripe-blocks-afterpay-offsite__container\">\r\n                    <div className=\"wc-stripe-blocks-afterpay__offsite\">\r\n                        <img src={getData('offSiteSrc')}/>\r\n                        <p>{sprintf(__('After clicking \"%s\", you will be redirected to Afterpay to complete your purchase securely.', 'woo-stripe-payment'), getData('placeOrderButtonLabel'))}</p>\r\n                    </div>\r\n                </div>\r\n                <Content {...{...props, billing, shippingData}}/>\r\n            </div>}\r\n        </>\r\n    );\r\n}\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            getData={getData}/>,\r\n        ariaLabel: __('Afterpay', 'woo-stripe-payment'),\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData, ({settings, cartTotals, cartNeedsShipping}) => {\r\n            const {currency_code: currency, currency_minor_unit, total_price} = cartTotals;\r\n            const requiredParams = settings('requiredParams');\r\n            const accountCountry = settings('accountCountry');\r\n            const requiredParamObj = requiredParams[currency] ? requiredParams[currency] : false;\r\n            if (variablesHandler) {\r\n                variablesHandler({\r\n                    amount: parseInt(cartTotals.total_price),\r\n                    currency,\r\n                    isEligible: cartNeedsShipping\r\n                });\r\n            }\r\n            const total = parseInt(total_price) / 10 ** currency_minor_unit;\r\n            const available = accountCountry === requiredParamObj?.[0] && cartNeedsShipping && (total > requiredParamObj?.[1] && total < requiredParamObj?.[2]);\r\n            if (!available && !settings('hideIneligible')) {\r\n                return true;\r\n            }\r\n            return available;\r\n        }),\r\n        content: <AfterpayPaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmAfterpayClearpayPayment'}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel} from \"../../components/checkout/payment-method-label\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {PaymentMethod} from \"../../components/checkout\";\r\n\r\nconst getData = getSettings('stripe_alipay_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Alipay',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentSourceContent}\r\n            getData={getData}/>,\r\n        edit: <PaymentMethod\r\n            content={LocalPaymentSourceContent}\r\n            getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}\r\n","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_bancontact_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Bancontact',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentSourceContent}\r\n            getData={getData}/>,\r\n        edit: <PaymentMethod\r\n            content={LocalPaymentSourceContent}\r\n            getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {AuBankAccountElement} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_becs_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'BECS',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmAuBecsDebitPayment'}\r\n            component={AuBankAccountElement}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {useState, useEffect, useCallback} from '@wordpress/element';\r\nimport {__} from '@wordpress/i18n';\r\nimport {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport classnames from 'classnames';\r\nimport {ensureErrorResponse, getSettings, isTestMode} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_boleto_data');\r\n\r\nconst BoletoPaymentMethodContainer = ({eventRegistration, ...props}) => {\r\n    const [taxId, setTaxId] = useState('');\r\n    const [isActive, setIsActive] = useState(false);\r\n    const {onPaymentProcessing} = eventRegistration;\r\n    const callback = useCallback(() => {\r\n        return {\r\n            boleto: {\r\n                tax_id: taxId\r\n            }\r\n        };\r\n    }, [taxId]);\r\n\r\n    useEffect(() => {\r\n        const unsubscribe = onPaymentProcessing(() => {\r\n            if (!taxId) {\r\n                return ensureErrorResponse(props.emitResponse.responseTypes, __('Please enter a valid CPF/CNPJ value', 'woo-stripe-payment'));\r\n            }\r\n            return true;\r\n        })\r\n        return () => unsubscribe();\r\n    }, [onPaymentProcessing, taxId]);\r\n    return (\r\n        <>\r\n            <div className={classnames('wc-block-components-text-input', {\r\n                'is-active': isActive || taxId\r\n            })}>\r\n                <input\r\n                    type='text'\r\n                    id='wc-stripe-boleto-tax_id'\r\n                    onChange={(e) => setTaxId(e.target.value)}\r\n                    onFocus={() => setIsActive(true)}\r\n                    onBlur={() => setIsActive(false)}/>\r\n                <label htmlFor='wc-stripe-boleto-tax_id'>{__(' CPF / CNPJ', ' woo-stripe-payment')}</label>\r\n            </div>\r\n            {isTestMode() &&\r\n            <div className='wc-stripe-boleto__description'>\r\n                <p>{__('Test mode values', 'woo-stripe-payment')}</p>\r\n                <div>\r\n                    <label>CPF:</label> <span>000.000.000-00</span>\r\n                </div>\r\n                <div>\r\n                    <label>CNPJ:</label> <span>00.000.000/0000-00</span>\r\n                </div>\r\n            </div>}\r\n            {!isTestMode() &&\r\n            <div className=\"wc-stripe-boleto__description\">\r\n                <p>{__('Accepted formats', 'woo-stripe-payment')}</p>\r\n                <div>\r\n                    <label>CPF:</label> \r\n                    <span>{__('XXX.XXX.XXX-XX or XXXXXXXXXXX', 'woo-stripe-payment')}</span>\r\n                </div>\r\n                <div>\r\n                    <label>CNPJ:</label> \r\n                    <span>{__('XX.XXX.XXX/XXXX-XX or XXXXXXXXXXXXXX', 'woo-stripe-payment')}</span>\r\n                </div>\r\n            </div>}\r\n            <LocalPaymentIntentContent callback={callback} {...{...props, ...{eventRegistration}}}/>\r\n        </>\r\n    )\r\n}\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Boleto',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={BoletoPaymentMethodContainer}\r\n            getData={getData}\r\n            confirmationMethod={'confirmBoletoPayment'}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_eps_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'EPS',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        edit: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {FpxBankElement} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_fpx_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'FPX',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmIdealPayment'}\r\n            component={FpxBankElement}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_giropay_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Giropay',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        edit: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_grabpay_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'GrabPay',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmGrabPayPayment'}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","export * from './use-after-process-local-payment';\r\nexport * from './use-validate-checkout';\r\nexport * from './use-create-source';","import {useEffect, useRef} from '@wordpress/element';\r\nimport {useStripe} from \"@stripe/react-stripe-js\";\r\nimport {ensureErrorResponse, getBillingDetailsFromAddress, StripeError} from \"../../util\";\r\n\r\nexport const useAfterProcessLocalPayment = (\r\n    {\r\n        getData,\r\n        billingData,\r\n        eventRegistration,\r\n        responseTypes,\r\n        activePaymentMethod,\r\n        confirmationMethod,\r\n        getPaymentMethodArgs = () => ({})\r\n    }\r\n) => {\r\n    const stripe = useStripe();\r\n    const {onCheckoutAfterProcessingWithSuccess, onCheckoutAfterProcessingWithError} = eventRegistration;\r\n    const currentBillingData = useRef(billingData);\r\n    const currentPaymentMethodArgs = useRef(getPaymentMethodArgs);\r\n    useEffect(() => {\r\n        currentBillingData.current = billingData;\r\n    }, [billingData]);\r\n\r\n    useEffect(() => {\r\n        currentPaymentMethodArgs.current = getPaymentMethodArgs;\r\n    }, [getPaymentMethodArgs]);\r\n\r\n    useEffect(() => {\r\n        const unsubscribeAfterProcessingWithSuccess = onCheckoutAfterProcessingWithSuccess(async ({redirectUrl}) => {\r\n            if (getData('name') === activePaymentMethod) {\r\n                try {\r\n                    let match = redirectUrl.match(/#response=(.+)/);\r\n                    if (match) {\r\n                        let {client_secret, return_url, ...order} = JSON.parse(window.atob(decodeURIComponent(match[1])));\r\n                        let result = await stripe[confirmationMethod](client_secret, {\r\n                            payment_method: {\r\n                                billing_details: getBillingDetailsFromAddress(currentBillingData.current),\r\n                                ...currentPaymentMethodArgs.current()\r\n                            },\r\n                            return_url\r\n                        });\r\n                        if (result.error) {\r\n                            throw new StripeError(result.error);\r\n                        }\r\n                        window.location = decodeURI(order.order_received_url);\r\n                    }\r\n                } catch (e) {\r\n                    console.log(e);\r\n                    return ensureErrorResponse(responseTypes, e.error);\r\n                }\r\n            }\r\n        })\r\n        return () => unsubscribeAfterProcessingWithSuccess();\r\n    }, [\r\n        stripe,\r\n        onCheckoutAfterProcessingWithSuccess,\r\n        onCheckoutAfterProcessingWithError\r\n    ]);\r\n}","import {useState, useEffect, useRef, useCallback} from '@wordpress/element';\r\nimport {\r\n    getDefaultSourceArgs,\r\n    ensureSuccessResponse,\r\n    ensureErrorResponse,\r\n    StripeError\r\n} from \"../../util\";\r\nimport {useStripe, useElements} from \"@stripe/react-stripe-js\";\r\nimport {__} from '@wordpress/i18n';\r\n\r\nexport const useCreateSource = (\r\n    {\r\n        getData,\r\n        billing,\r\n        shippingAddress,\r\n        onPaymentProcessing,\r\n        responseTypes,\r\n        getSourceArgs = false,\r\n        element = false\r\n    }) => {\r\n    const [source, setSource] = useState(false);\r\n    const [isValid, setIsValid] = useState(false);\r\n    const currentValues = useRef({\r\n        billing,\r\n        shippingAddress,\r\n    });\r\n    const stripe = useStripe();\r\n    const elements = useElements();\r\n    useEffect(() => {\r\n        currentValues.current = {\r\n            billing,\r\n            shippingAddress\r\n        }\r\n    });\r\n\r\n    const getSourceArgsInternal = useCallback(() => {\r\n        const {billing} = currentValues.current;\r\n        const {cartTotal, currency, billingData} = billing;\r\n        let args = getDefaultSourceArgs({\r\n            type: getData('paymentType'),\r\n            amount: cartTotal.value,\r\n            billingData,\r\n            currency: currency.code,\r\n            returnUrl: getData('returnUrl')\r\n        });\r\n        if (getSourceArgs) {\r\n            args = getSourceArgs(args, {billingData});\r\n        }\r\n        return args;\r\n    }, []);\r\n\r\n    const getSuccessData = useCallback((sourceId) => {\r\n        return {\r\n            meta: {\r\n                paymentMethodData: {\r\n                    [`${getData('name')}_token_key`]: sourceId\r\n                }\r\n            }\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        const unsubscribe = onPaymentProcessing(async () => {\r\n            if (source) {\r\n                return ensureSuccessResponse(responseTypes, getSuccessData(source.id));\r\n            }\r\n            // create the source\r\n            try {\r\n                let result;\r\n                if (element) {\r\n                    // validate the element\r\n                    if (!isValid) {\r\n                        throw __('Please enter your payment info before proceeding.', 'woo-stripe-payment');\r\n                    }\r\n                    result = await stripe.createSource(elements.getElement(element), getSourceArgsInternal());\r\n                } else {\r\n                    result = await stripe.createSource(getSourceArgsInternal());\r\n                }\r\n                if (result.error) {\r\n                    throw new StripeError(result.error);\r\n                }\r\n                setSource(result.source);\r\n                return ensureSuccessResponse(responseTypes, getSuccessData(result.source.id));\r\n            } catch (err) {\r\n                console.log(err);\r\n                return ensureErrorResponse(responseTypes, err.error || err);\r\n            }\r\n        });\r\n        return () => unsubscribe();\r\n    }, [\r\n        source,\r\n        onPaymentProcessing,\r\n        stripe,\r\n        responseTypes,\r\n        element,\r\n        isValid,\r\n        setIsValid\r\n    ]);\r\n    return {setIsValid};\r\n}","import {useEffect, useRef, useState} from '@wordpress/element';\r\nimport {ensureErrorResponse} from \"../../util\";\r\nimport {__} from \"@wordpress/i18n\";\r\n\r\nexport const useValidateCheckout = (\r\n    {\r\n        subscriber,\r\n        responseTypes,\r\n        component = null,\r\n        msg = __('Please enter your payment info before proceeding.', 'woo-stripe-payment')\r\n    }) => {\r\n    const [isValid, setIsValid] = useState(false);\r\n\r\n    useEffect(() => {\r\n        const unsubscribe = subscriber(() => {\r\n            if (component && !isValid) {\r\n                return ensureErrorResponse(responseTypes, msg);\r\n            }\r\n            return true;\r\n        });\r\n        return () => unsubscribe();\r\n    }, [\r\n        subscriber,\r\n        isValid,\r\n        setIsValid,\r\n        responseTypes,\r\n        component\r\n    ]);\r\n    return {isValid, setIsValid};\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {IdealBankElement} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_ideal_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Ideal',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmIdealPayment'}\r\n            component={IdealBankElement}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import './klarna';\r\nimport './ideal';\r\nimport './p24';\r\nimport './bancontact';\r\nimport './giropay';\r\nimport './eps';\r\nimport './multibanco';\r\nimport './sepa';\r\nimport './sofort';\r\nimport './wechat';\r\nimport './fpx';\r\nimport './becs';\r\nimport './grabpay';\r\nimport './alipay'\r\nimport './afterpay';\r\nimport './boleto';\r\nimport './oxxo';","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, isTestMode} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {__} from \"@wordpress/i18n\";\r\n\r\nconst getData = getSettings('stripe_klarna_data');\r\n\r\nconst KlarnaPaymentMethod = (props) => {\r\n    return (\r\n        <>\r\n            {isTestMode() &&\r\n            <div className=\"wc-stripe-klarna__testmode\">\r\n                <label>{__('Test mode sms', 'woo-stripe-payment')}:</label> <span>123456</span>\r\n            </div>}\r\n            <LocalPaymentIntentContent {...props}/>\r\n        </>\r\n    )\r\n}\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Klarna',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData, ({settings, billingData, cartTotals}) => {\r\n            const {country} = billingData;\r\n            const {currency_code: currency} = cartTotals;\r\n            const requiredParams = settings('requiredParams');\r\n            return [currency] in requiredParams && requiredParams[currency].includes(country);\r\n        }),\r\n        content: <PaymentMethod\r\n            content={KlarnaPaymentMethod}\r\n            getData={getData}\r\n            confirmationMethod={'confirmKlarnaPayment'}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {useCallback} from '@wordpress/element';\r\nimport {useElements, Elements} from \"@stripe/react-stripe-js\";\r\nimport {initStripe as loadStripe, cartContainsSubscription, cartContainsPreOrder} from '../util'\r\nimport {useAfterProcessLocalPayment, useValidateCheckout, useCreateSource} from \"./hooks\";\r\nimport {useProcessCheckoutError} from \"../hooks\";\r\n\r\n/**\r\n * Return true if the local payment method can be used.\r\n * @param settings\r\n * @returns {function({billingData: *, [p: string]: *}): *}\r\n */\r\nexport const canMakePayment = (settings, callback = false) => ({billingData, cartTotals, ...props}) => {\r\n    const {currency_code} = cartTotals;\r\n    const {country} = billingData;\r\n    const countries = settings('countries');\r\n    const type = settings('allowedCountries');\r\n    const supports = settings('features');\r\n    let canMakePayment = false;\r\n    if (settings('isAdmin')) {\r\n        canMakePayment = true;\r\n    } else {\r\n        // Check if there are any subscriptions or pre-orders in the cart.\r\n        if (cartContainsSubscription() && !supports.includes('subscriptions')) {\r\n            return false;\r\n        } else if (cartContainsPreOrder() && !supports.includes('pre-orders')) {\r\n            return false;\r\n        }\r\n        if (settings('currencies').includes(currency_code)) {\r\n            if (type === 'all_except') {\r\n                canMakePayment = !settings('exceptCountries').includes(country);\r\n            } else if (type === 'specific') {\r\n                canMakePayment = settings('specificCountries').includes(country);\r\n            } else {\r\n                canMakePayment = countries.length > 0 ? countries.includes(country) : true;\r\n            }\r\n        }\r\n        if (callback && canMakePayment) {\r\n            canMakePayment = callback({settings, billingData, cartTotals, ...props});\r\n        }\r\n    }\r\n    return canMakePayment;\r\n}\r\n\r\nexport const LocalPaymentIntentContent = ({getData, ...props}) => {\r\n    return (\r\n        <Elements stripe={loadStripe} options={getData('elementOptions')}>\r\n            <LocalPaymentIntentMethod {...{...props, getData}}/>\r\n        </Elements>\r\n    )\r\n}\r\n\r\nexport const LocalPaymentSourceContent = (props) => {\r\n    return (\r\n        <Elements stripe={loadStripe}>\r\n            <LocalPaymentSourceMethod {...props}/>\r\n        </Elements>\r\n    )\r\n}\r\n\r\nconst LocalPaymentSourceMethod = (\r\n    {\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        emitResponse,\r\n        eventRegistration,\r\n        getSourceArgs = false,\r\n        element = false\r\n    }) => {\r\n    const {shippingAddress} = shippingData;\r\n    const {onPaymentProcessing, onCheckoutAfterProcessingWithError} = eventRegistration;\r\n    const {responseTypes, noticeContexts} = emitResponse;\r\n    const onChange = (event) => {\r\n        setIsValid(event.complete);\r\n    }\r\n    const {setIsValid} = useCreateSource({\r\n        getData,\r\n        billing,\r\n        shippingAddress,\r\n        onPaymentProcessing,\r\n        responseTypes,\r\n        getSourceArgs,\r\n        element\r\n    });\r\n\r\n    if (element) {\r\n        return (\r\n            <LocalPaymentElementContainer\r\n                name={getData('name')}\r\n                options={getData('paymentElementOptions')}\r\n                onChange={onChange}\r\n                element={element}/>\r\n        )\r\n    }\r\n    return null;\r\n}\r\n\r\nconst LocalPaymentIntentMethod = (\r\n    {\r\n        getData,\r\n        billing,\r\n        emitResponse,\r\n        eventRegistration,\r\n        activePaymentMethod,\r\n        confirmationMethod = null,\r\n        component = null,\r\n        callback = null\r\n    }) => {\r\n    const elements = useElements();\r\n    const {billingData} = billing;\r\n    const {onPaymentProcessing, onCheckoutAfterProcessingWithError} = eventRegistration;\r\n    const {responseTypes, noticeContexts} = emitResponse;\r\n    const getPaymentMethodArgs = useCallback(() => {\r\n        if (component) {\r\n            return {\r\n                [getData('paymentType')]: elements.getElement(component)\r\n            }\r\n        } else if (callback) {\r\n            return callback();\r\n        }\r\n        return {};\r\n    }, [\r\n        elements,\r\n        callback\r\n    ]);\r\n    const {setIsValid} = useValidateCheckout({\r\n            subscriber: onPaymentProcessing,\r\n            responseTypes,\r\n            component\r\n        }\r\n    );\r\n\r\n    useAfterProcessLocalPayment({\r\n        getData,\r\n        billingData,\r\n        eventRegistration,\r\n        responseTypes,\r\n        activePaymentMethod,\r\n        confirmationMethod,\r\n        getPaymentMethodArgs\r\n    });\r\n    useProcessCheckoutError({\r\n        responseTypes,\r\n        subscriber: onCheckoutAfterProcessingWithError,\r\n        messageContext: noticeContexts.PAYMENT\r\n    });\r\n    if (component) {\r\n        const onChange = (event) => setIsValid(!event.empty)\r\n        return (\r\n            <LocalPaymentElementContainer\r\n                name={getData('name')}\r\n                options={getData('paymentElementOptions')}\r\n                onChange={onChange}\r\n                element={component}\r\n                callback={callback}/>\r\n        )\r\n    }\r\n    return null;\r\n}\r\n\r\nconst LocalPaymentElementContainer = ({name, onChange, element, options, ...props}) => {\r\n    const Tag = element;\r\n    return (\r\n        <div className={`wc-stripe-local-payment-container ${name} ${Tag.displayName}`}>\r\n            <Tag options={options} onChange={onChange} {...props}/>\r\n        </div>\r\n    )\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_multibanco_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'MultiBanco',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        edit: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}\r\n","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {IdealBankElement} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_oxxo_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'OXXO',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmOxxoPayment'}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentIntentContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {P24BankElement} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_p24_data');\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'P24',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentIntentContent}\r\n            getData={getData}\r\n            confirmationMethod={'confirmP24Payment'}\r\n            component={P24BankElement}/>,\r\n        edit: <PaymentMethod content={LocalPaymentIntentContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}\r\n","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, cartContainsPreOrder, cartContainsSubscription} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {IbanElement} from \"@stripe/react-stripe-js\";\r\n\r\nconst getData = getSettings('stripe_sepa_data');\r\n\r\nconst getSourceArgs = (args, {billingData}) => {\r\n    args.mandate = {\r\n        notification_method: billingData.email ? 'email' : 'manual',\r\n        interval: cartContainsSubscription() || cartContainsPreOrder() ? 'scheduled' : 'one_time'\r\n    }\r\n    if (args.mandate.interval === 'scheduled') {\r\n        delete args.amount;\r\n    }\r\n    return args;\r\n}\r\n\r\nconst LocalPaymentMethod = (PaymentMethod) => ({getData, ...props}) => {\r\n    return (\r\n        <>\r\n            <PaymentMethod {...{...props, getData}}/>\r\n            <div className={'wc-stripe-blocks-sepa__mandate'}>\r\n                {getData('mandate')}\r\n            </div>\r\n        </>\r\n    )\r\n}\r\n\r\nconst SepaPaymentMethod = LocalPaymentMethod(PaymentMethod);\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'SEPA',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <SepaPaymentMethod\r\n            content={LocalPaymentSourceContent}\r\n            getData={getData}\r\n            element={IbanElement}\r\n            getSourceArgs={getSourceArgs}/>,\r\n        edit: <LocalPaymentSourceContent getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}","import {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings} from \"../util\";\r\nimport {LocalPaymentSourceContent} from './local-payment-method';\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\n\r\nconst getData = getSettings('stripe_sofort_data');\r\n\r\nconst getSourceArgs = (args, {billingData}) => {\r\n    return {...args, sofort: {country: billingData.country}};\r\n}\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'Sofort',\r\n        placeOrderButtonLabel: getData('placeOrderButtonLabel'),\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod\r\n            content={LocalPaymentSourceContent}\r\n            getData={getData}\r\n            getSourceArgs={getSourceArgs}/>,\r\n        edit: <PaymentMethod content={LocalPaymentSourceContent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}\r\n","import {useEffect, useRef, useState, useCallback} from '@wordpress/element';\r\nimport {registerPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {\r\n    getSettings,\r\n    initStripe as loadStripe,\r\n    getDefaultSourceArgs,\r\n    isAddressValid,\r\n    StripeError,\r\n    isTestMode,\r\n    ensureSuccessResponse,\r\n    getErrorMessage,\r\n    storeInCache,\r\n    getFromCache,\r\n    deleteFromCache\r\n} from \"../util\";\r\nimport {PaymentMethodLabel, PaymentMethod} from \"../../components/checkout\";\r\nimport {canMakePayment} from \"./local-payment-method\";\r\nimport {Elements} from \"@stripe/react-stripe-js\";\r\nimport {useValidateCheckout} from \"./hooks\";\r\nimport {__} from '@wordpress/i18n';\r\n//import QRCode from 'QRCode';\r\nimport {useStripe} from \"@stripe/react-stripe-js\";\r\nimport {useStripeError} from \"../hooks\";\r\n\r\nconst getData = getSettings('stripe_wechat_data');\r\n\r\nconst WeChatComponent = (props) => {\r\n    return (\r\n        <Elements stripe={loadStripe}>\r\n            <WeChatPaymentMethod {...props}/>\r\n        </Elements>\r\n    )\r\n}\r\n\r\nconst WeChatPaymentMethod = (\r\n    {\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        emitResponse,\r\n        eventRegistration,\r\n        components\r\n    }) => {\r\n    const size = parseInt(getData('qrSize'));\r\n    const {responseTypes} = emitResponse;\r\n    const {onPaymentProcessing, onCheckoutAfterProcessingWithSuccess} = eventRegistration;\r\n    const {ValidationInputError} = components;\r\n    const {isValid, setIsValid} = useValidateCheckout({\r\n        subscriber: eventRegistration.onPaymentProcessing,\r\n        responseTypes: emitResponse.responseTypes,\r\n        msg: __('Please scan your QR code to continue with payment.', 'woo-stripe-payment')\r\n    });\r\n\r\n    const {source, error, deleteSourceFromStorage} = useCreateSource({\r\n        getData,\r\n        billing,\r\n        responseTypes,\r\n        subscriber: onPaymentProcessing\r\n    })\r\n\r\n    /**\r\n     * delete the source from storage once payment is successful.\r\n     * If test mode, redirect to the Stripe test url.\r\n     * If live mode, redirect to the return Url.\r\n     */\r\n    useEffect(() => {\r\n        const unsubscribe = onCheckoutAfterProcessingWithSuccess(() => {\r\n            deleteSourceFromStorage();\r\n            return ensureSuccessResponse(responseTypes);\r\n        });\r\n        return () => unsubscribe();\r\n    }, [\r\n        source,\r\n        onCheckoutAfterProcessingWithSuccess,\r\n        deleteSourceFromStorage\r\n    ]);\r\n\r\n    useEffect(() => {\r\n        if (source) {\r\n            setIsValid(true);\r\n        }\r\n    }, [source]);\r\n\r\n    if (source) {\r\n        return (\r\n            <QRCodeComponent text={source.wechat.qr_code_url} width={size} height={size}/>\r\n        );\r\n    } else if (error) {\r\n        return (\r\n            <div className='wechat-validation-error'>\r\n                <ValidationInputError errorMessage={getErrorMessage(error)}/>\r\n            </div>\r\n        );\r\n    } else {\r\n        // if billing address is not valid\r\n        if (!isAddressValid(billing.billingData)) {\r\n            return __('Please fill out all the required fields in order to complete the WeChat payment.', 'woo-stripe-payment');\r\n        }\r\n    }\r\n    return null;\r\n}\r\n\r\nconst QRCodeComponent = (\r\n    {\r\n        text,\r\n        width = 128,\r\n        height = 128,\r\n        colorDark = '#424770',\r\n        colorLight = '#f8fbfd',\r\n        correctLevel = QRCode.CorrectLevel.H\r\n    }) => {\r\n    const el = useRef();\r\n    useEffect(() => {\r\n        new QRCode(el.current, {\r\n            text,\r\n            width,\r\n            height,\r\n            colorDark,\r\n            colorLight,\r\n            correctLevel\r\n        })\r\n    }, [el]);\r\n    return (\r\n        <>\r\n            <div id='wc-stripe-block-qrcode' ref={el}></div>\r\n            {isTestMode() && <p>\r\n                {__('Test mode: Click the Place Order button to proceed.', 'woo-stripe-payment')}\r\n            </p>}\r\n            {!isTestMode() && <p>\r\n                {__('Scan the QR code using your WeChat app. Once scanned click the Place Order button.', 'woo-stripe-payment')}\r\n            </p>}\r\n        </>\r\n    )\r\n}\r\n\r\nconst useCreateSource = (\r\n    {\r\n        getData,\r\n        billing,\r\n        responseTypes,\r\n        subscriber\r\n    }) => {\r\n    const stripe = useStripe();\r\n    const [error, setError] = useStripeError();\r\n    const [source, setSource] = useState(getFromCache('wechat:source'));\r\n    const createSourceTimeoutId = useRef(null);\r\n    const {cartTotal, billingData, currency} = billing;\r\n\r\n    useEffect(() => {\r\n        const unsubscribe = subscriber(() => {\r\n            return ensureSuccessResponse(responseTypes, {\r\n                meta: {\r\n                    paymentMethodData: {\r\n                        [`${getData('name')}_token_key`]: source.id\r\n                    }\r\n                }\r\n            })\r\n        });\r\n        return () => unsubscribe();\r\n    }, [source, subscriber]);\r\n\r\n    const createSource = useCallback(async () => {\r\n        // validate the billing fields. If valid, create the source.\r\n        try {\r\n            if (!error && isAddressValid(billingData)) {\r\n                let result = await stripe.createSource(getDefaultSourceArgs({\r\n                    type: getData('paymentType'),\r\n                    amount: cartTotal.value,\r\n                    billingData,\r\n                    currency: currency.code,\r\n                    returnUrl: getData('returnUrl')\r\n                }));\r\n                if (result.error) {\r\n                    throw new StripeError(result.error);\r\n                }\r\n                setSource(result.source);\r\n                storeInCache('wechat:source', result.source);\r\n            }\r\n        } catch (err) {\r\n            console.log('error: ', err);\r\n            setError(err.error);\r\n        }\r\n    }, [\r\n        stripe,\r\n        source,\r\n        cartTotal.value,\r\n        billingData,\r\n        currency,\r\n        error\r\n    ]);\r\n    const deleteSourceFromStorage = useCallback(() => {\r\n        deleteFromCache('wechat:source');\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (stripe && !source) {\r\n            // if there is an existing request, cancel it.\r\n            clearTimeout(createSourceTimeoutId.current);\r\n            createSourceTimeoutId.current = setTimeout(createSource, 1000);\r\n        }\r\n    }, [\r\n        stripe,\r\n        source,\r\n        createSource\r\n    ]);\r\n\r\n    return {source, setSource, error, deleteSourceFromStorage};\r\n}\r\n\r\n\r\nif (getData()) {\r\n    registerPaymentMethod({\r\n        name: getData('name'),\r\n        label: <PaymentMethodLabel\r\n            title={getData('title')}\r\n            paymentMethod={getData('name')}\r\n            icons={getData('icon')}/>,\r\n        ariaLabel: 'WeChat',\r\n        canMakePayment: canMakePayment(getData),\r\n        content: <PaymentMethod content={WeChatComponent} getData={getData}/>,\r\n        edit: <PaymentMethod content={WeChatComponent} getData={getData}/>,\r\n        supports: {\r\n            showSavedCards: false,\r\n            showSaveOption: false,\r\n            features: getData('features')\r\n        }\r\n    })\r\n}\r\n","import './style.scss';\r\n\r\nimport './payment-method';","import {useMemo, useEffect, useRef} from '@wordpress/element';\r\nimport {registerExpressPaymentMethod} from '@woocommerce/blocks-registry';\r\nimport {getSettings, initStripe as loadStripe, canMakePayment} from \"../util\";\r\nimport {useBreakpointWidth, useExpressBreakpointWidth} from '../hooks';\r\nimport {Elements, PaymentRequestButtonElement, useStripe} from \"@stripe/react-stripe-js\";\r\nimport {\r\n    usePaymentRequest,\r\n    useProcessPaymentIntent,\r\n    useExportedValues,\r\n    useAfterProcessingPayment,\r\n    useStripeError\r\n} from '../hooks';\r\n\r\nconst getData = getSettings('stripe_payment_request_data');\r\n\r\nconst PaymentRequestContent = (props) => {\r\n    return (\r\n        <div className='wc-stripe-payment-request-container'>\r\n            <Elements stripe={loadStripe}>\r\n                <PaymentRequestButton {...props}/>\r\n            </Elements>\r\n        </div>\r\n    );\r\n}\r\n\r\nconst PaymentRequestButton = (\r\n    {\r\n        getData,\r\n        onClick,\r\n        onClose,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        emitResponse,\r\n        onSubmit,\r\n        activePaymentMethod,\r\n        ...props\r\n    }) => {\r\n    const {onPaymentProcessing} = eventRegistration;\r\n    const {responseTypes, noticeContexts} = emitResponse;\r\n    const stripe = useStripe();\r\n    const [error] = useStripeError();\r\n    const canPay = (result) => result != null && !result.applePay;\r\n    const exportedValues = useExportedValues();\r\n    useExpressBreakpointWidth({payment_method: getData('name'), width: 300});\r\n    const {setPaymentMethod} = useProcessPaymentIntent({\r\n        getData,\r\n        billing,\r\n        shippingData,\r\n        onPaymentProcessing,\r\n        emitResponse,\r\n        error,\r\n        onSubmit,\r\n        activePaymentMethod,\r\n        exportedValues\r\n    });\r\n    useAfterProcessingPayment({\r\n        getData,\r\n        eventRegistration,\r\n        responseTypes,\r\n        activePaymentMethod,\r\n        messageContext: noticeContexts.EXPRESS_PAYMENTS\r\n    });\r\n    const {paymentRequest} = usePaymentRequest({\r\n        getData,\r\n        onClose,\r\n        stripe,\r\n        billing,\r\n        shippingData,\r\n        eventRegistration,\r\n        setPaymentMethod,\r\n        exportedValues,\r\n        canPay\r\n    });\r\n\r\n    const options = useMemo(() => {\r\n        return {\r\n            paymentRequest,\r\n            style: {\r\n                paymentRequestButton: getData('paymentRequestButton')\r\n            }\r\n        }\r\n    }, [paymentRequest]);\r\n\r\n    if (paymentRequest) {\r\n        return (\r\n            <PaymentRequestButtonElement options={options} onClick={onClick}/>\r\n        )\r\n    }\r\n    return null;\r\n}\r\n\r\nconst PaymentRequestEdit = ({getData, ...props}) => {\r\n    const canvas = useRef();\r\n    useEffect(() => {\r\n        const scale = window.devicePixelRatio;\r\n        canvas.current.width = 20 * scale;\r\n        canvas.current.height = 20 * scale;\r\n        let ctx = canvas.current.getContext('2d');\r\n        ctx.scale(scale, scale);\r\n        ctx.beginPath();\r\n        ctx.arc(10, 10, 10, 0, 2 * Math.PI);\r\n        ctx.fillStyle = '#986fff';\r\n        ctx.fill();\r\n    });\r\n    return (\r\n        <div className='payment-request-block-editor'>\r\n            <div className={'icon-container'}>\r\n                <span>Buy now</span>\r\n                <canvas className='PaymentRequestButton-icon' ref={canvas}/>\r\n                <i className={'payment-request-arrow'}></i>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nregisterExpressPaymentMethod({\r\n    name: getData('name'),\r\n    canMakePayment: ({cartTotals}) => {\r\n        if (getData('isAdmin')) {\r\n            return true;\r\n        }\r\n        const {currency_code: currency, total_price} = cartTotals;\r\n        return canMakePayment({\r\n            country: getData('countryCode'),\r\n            currency: currency.toLowerCase(),\r\n            total: {\r\n                label: getData('totalLabel'),\r\n                amount: parseInt(total_price)\r\n            }\r\n        }, (result) => result != null && !result.applePay);\r\n    },\r\n    content: <PaymentRequestContent getData={getData}/>,\r\n    edit: <PaymentRequestEdit getData={getData}/>,\r\n    supports: {\r\n        showSavedCards: getData('showSavedCards'),\r\n        showSaveOption: getData('showSaveOption'),\r\n        features: getData('features')\r\n    }\r\n});","import {useEffect, useCallback} from '@wordpress/element';\r\nimport {initStripe as loadStripe, getSettings, handleCardAction} from '@paymentplugins/stripe/util';\r\n\r\nconst SavedCardComponent = (\r\n    {\r\n        eventRegistration,\r\n        emitResponse,\r\n        getData\r\n    }) => {\r\n    const {onCheckoutAfterProcessingWithSuccess} = eventRegistration;\r\n    const {responseTypes} = emitResponse;\r\n    const handleSuccessResult = useCallback(async ({redirectUrl}) => {\r\n        const stripe = await loadStripe;\r\n        return await handleCardAction({redirectUrl, getData, stripe, responseTypes});\r\n    }, [onCheckoutAfterProcessingWithSuccess]);\r\n\r\n    useEffect(() => {\r\n        const unsubscribeOnCheckoutAfterProcessingWithSuccess = onCheckoutAfterProcessingWithSuccess(handleSuccessResult);\r\n        return () => unsubscribeOnCheckoutAfterProcessingWithSuccess();\r\n    }, [\r\n        onCheckoutAfterProcessingWithSuccess\r\n    ]);\r\n    return null;\r\n}\r\n\r\nexport default SavedCardComponent;\r\n","import {loadStripe} from '@stripe/stripe-js';\r\nimport {getSetting} from '@woocommerce/settings'\r\nimport apiFetch from \"@wordpress/api-fetch\";\r\nimport {getCurrency, formatPrice as wcFormatPrice} from '@woocommerce/price-format';\r\n\r\nconst {publishableKey, account} = getSetting('stripeGeneralData');\r\nconst messages = getSetting('stripeErrorMessages');\r\nconst countryLocale = getSetting('countryLocale', {});\r\n\r\nconst SHIPPING_OPTION_REGEX = /^([\\w]+)\\:(.+)$/;\r\n\r\nconst routes = getSetting('stripeGeneralData').routes;\r\n\r\nconst creditCardForms = {};\r\n\r\nconst localPaymentMethods = [];\r\n\r\nconst CACHE_PREFIX = 'stripe:';\r\n\r\nconst PAYMENT_REQUEST_ADDRESS_MAPPINGS = {\r\n    recipient: (address, name) => {\r\n        address.first_name = name.split(' ').slice(0, -1).join(' ');\r\n        address.last_name = name.split(' ').pop();\r\n        return address;\r\n    },\r\n    payerName: (address, name) => {\r\n        address.first_name = name.split(' ').slice(0, -1).join(' ');\r\n        address.last_name = name.split(' ').pop();\r\n        return address;\r\n    },\r\n    country: 'country',\r\n    addressLine: (address, value) => {\r\n        if (value[0]) {\r\n            address.address_1 = value[0];\r\n        }\r\n        if (value[1]) {\r\n            address.address_2 = value[1];\r\n        }\r\n        return address;\r\n    },\r\n    line1: 'address_1',\r\n    line2: 'address_2',\r\n    city: 'city',\r\n    region: 'state',\r\n    state: 'state',\r\n    postalCode: 'postcode',\r\n    postal_code: 'postcode',\r\n    payerEmail: 'email',\r\n    payerPhone: 'phone'\r\n}\r\n\r\nexport const initStripe = new Promise((resolve, reject) => {\r\n    loadStripe(publishableKey, (() => account ? {stripeAccount: account} : {})()).then(stripe => {\r\n        resolve(stripe);\r\n    }).catch(err => {\r\n        resolve({error: err});\r\n    });\r\n});\r\n\r\nexport const registerCreditCardForm = ({id, ...props}) => {\r\n    creditCardForms[id] = props;\r\n}\r\n\r\nexport const getCreditCardForm = (id) => {\r\n    return creditCardForms.hasOwnProperty(id) ? creditCardForms[id] : {};\r\n}\r\n\r\nexport const getRoute = (route) => {\r\n    return routes?.[route] ? routes[route] : console.log(`${route} is not a valid route`);\r\n}\r\n\r\nexport const ensureSuccessResponse = (responseTypes, data = {}) => {\r\n    return {type: responseTypes.SUCCESS, ...data};\r\n}\r\n\r\n/**\r\n * Returns a formatted error object used by observers\r\n * @param responseTypes\r\n * @param error\r\n * @returns {{type: *, message: *}}\r\n */\r\nexport const ensureErrorResponse = (responseTypes, error) => {\r\n    return {type: responseTypes.ERROR, message: getErrorMessage(error)}\r\n};\r\n\r\n/**\r\n * Return a customized error message.\r\n * @param error\r\n */\r\nexport const getErrorMessage = (error) => {\r\n    if (typeof error == 'string') {\r\n        return error;\r\n    }\r\n    if (error?.code && messages?.[error.code]) {\r\n        return messages[error.code];\r\n    }\r\n    if (error?.statusCode) {\r\n        return messages?.[error.statusCode] ? messages[error.statusCode] : error.statusMessage;\r\n    }\r\n    return error.message;\r\n}\r\n\r\n/**\r\n * Return a Stripe formatted billing_details object from a WC address\r\n * @param billingAddress\r\n */\r\nexport const getBillingDetailsFromAddress = (billingAddress) => {\r\n    let billing_details = {\r\n        name: `${billingAddress.first_name} ${billingAddress.last_name}`,\r\n        address: {\r\n            city: billingAddress.city || null,\r\n            country: billingAddress.country || null,\r\n            line1: billingAddress.address_1 || null,\r\n            line2: billingAddress.address_2 || null,\r\n            postal_code: billingAddress.postcode || null,\r\n            state: billingAddress.state || null\r\n        }\r\n    }\r\n    if (billingAddress?.phone) {\r\n        billing_details.phone = billingAddress.phone;\r\n    }\r\n    if (billingAddress?.email) {\r\n        billing_details.email = billingAddress.email;\r\n    }\r\n    return billing_details;\r\n}\r\n\r\nexport const getSettings = (name) => (key) => {\r\n    if (key) {\r\n        return getSetting(name)[key];\r\n    }\r\n    return getSetting(name);\r\n}\r\n\r\nexport class StripeError extends Error {\r\n    constructor(error) {\r\n        super(error.message);\r\n        this.error = error;\r\n    }\r\n}\r\n\r\n/**\r\n * Returns true if the provided value is empty.\r\n * @param value\r\n * @returns {boolean}\r\n */\r\nexport const isEmpty = (value) => {\r\n    if (typeof value === 'string') {\r\n        return value.length == 0 || value == '';\r\n    }\r\n    if (Array.isArray(value)) {\r\n        return array.length == 0;\r\n    }\r\n    if (typeof value === 'object') {\r\n        return Object.keys(value).length == 0;\r\n    }\r\n    if (typeof value === 'undefined') {\r\n        return true;\r\n    }\r\n    return true;\r\n}\r\n\r\nexport const removeNumberPrecision = (value, unit) => {\r\n    return value / 10 ** unit;\r\n}\r\n\r\n/**\r\n *\r\n * @param address\r\n * @param country\r\n */\r\nexport const isAddressValid = (address, exclude = []) => {\r\n    const fields = getLocaleFields(address.country);\r\n    for (const [key, value] of Object.entries(address)) {\r\n        if (!exclude.includes(key) && fields?.[key] && fields[key].required) {\r\n            if (isEmpty(value)) {\r\n                return false;\r\n            }\r\n        }\r\n    }\r\n    return true;\r\n}\r\n\r\nexport const getLocaleFields = (country) => {\r\n    let localeFields = {...countryLocale.default};\r\n    if (country && countryLocale?.[country]) {\r\n        localeFields = Object.entries(countryLocale[country]).reduce((locale, [key, value]) => {\r\n            locale[key] = {...locale[key], ...value}\r\n            return locale;\r\n        }, localeFields);\r\n        ['phone', 'email'].forEach(key => {\r\n            let node = document.getElementById(key);\r\n            if (node) {\r\n                localeFields[key] = {required: node.required};\r\n            }\r\n        });\r\n    }\r\n    return localeFields;\r\n}\r\n\r\n/**\r\n * Return true if the field is required by the cart\r\n * @param field\r\n * @param country\r\n * @returns {boolean|*}\r\n */\r\nexport const isFieldRequired = (field, country = false) => {\r\n    const fields = getLocaleFields(country);\r\n    return [field] in fields && fields[field].required;\r\n}\r\n\r\nexport const getSelectedShippingOption = (id) => {\r\n    const result = id.match(SHIPPING_OPTION_REGEX);\r\n    if (result) {\r\n        const {1: packageIdx, 2: rate} = result;\r\n        return [rate, packageIdx];\r\n    }\r\n    return [];\r\n}\r\n\r\nexport const hasShippingRates = (shippingRates) => {\r\n    return shippingRates.map(rate => {\r\n        return rate.shipping_rates.length > 0;\r\n    }).filter(Boolean).length > 0;\r\n}\r\n\r\n/**\r\n * Return true if the customer is logged in.\r\n * @param customerId\r\n * @returns {boolean}\r\n */\r\nexport const isUserLoggedIn = (customerId) => {\r\n    return customerId > 0;\r\n}\r\n\r\nconst syncPaymentIntentWithOrder = async (order_id, client_secret) => {\r\n    try {\r\n        await apiFetch({\r\n            url: routes['sync/intent'],\r\n            method: 'POST',\r\n            data: {order_id, client_secret}\r\n        })\r\n    } catch (error) {\r\n        console.log(error);\r\n    }\r\n}\r\n\r\nexport const handleCardAction = async (\r\n    {\r\n        redirectUrl,\r\n        responseTypes,\r\n        stripe,\r\n        getData,\r\n        savePaymentMethod = false\r\n    }) => {\r\n    try {\r\n        let match = redirectUrl.match(/#response=(.+)/)\r\n        if (match) {\r\n            let {client_secret, order_id, order_key} = JSON.parse(window.atob(decodeURIComponent(match[1])));\r\n            let result = await stripe.handleCardAction(client_secret);\r\n            if (result.error) {\r\n                syncPaymentIntentWithOrder(order_id, client_secret);\r\n                return ensureErrorResponse(responseTypes, result.error);\r\n            }\r\n            // success so finish processing order then redirect to thank you page\r\n            let data = {order_id, order_key, [`${getData('name')}_save_source_key`]: savePaymentMethod};\r\n            let response = await apiFetch({\r\n                url: getRoute('process/payment'),\r\n                method: 'POST',\r\n                data\r\n            })\r\n            if (response.messages) {\r\n                return ensureErrorResponse(responseTypes, response.messages);\r\n            }\r\n            return ensureSuccessResponse(responseTypes, {\r\n                redirectUrl: response.redirect\r\n            });\r\n        } else {\r\n            return ensureSuccessResponse(responseTypes);\r\n        }\r\n    } catch (err) {\r\n        console.log(err);\r\n        return ensureErrorResponse(responseTypes, err);\r\n    }\r\n}\r\n\r\n/**\r\n * Convert a payment wallet address to a WC cart address.\r\n * @param address_mappings\r\n * @returns {function(*, *=): {}}\r\n */\r\nexport const toCartAddress = (address_mappings = PAYMENT_REQUEST_ADDRESS_MAPPINGS) => (address, args = {}) => {\r\n    const cartAddress = {};\r\n    address = {...address, ...filterEmptyValues(args)};\r\n    for (let [key, cartKey] of Object.entries(address_mappings)) {\r\n        if (address?.[key]) {\r\n            if (typeof cartKey === 'function') {\r\n                cartKey(cartAddress, address[key]);\r\n            } else {\r\n                cartAddress[cartKey] = address[key];\r\n            }\r\n        }\r\n    }\r\n    return cartAddress;\r\n}\r\n\r\n/**\r\n * Given a WC formatted address, return only the intermediate address values\r\n * @param address\r\n * @param fields\r\n */\r\nexport const getIntermediateAddress = (address, fields = ['city', 'postcode', 'state', 'country']) => {\r\n    const intermediateAddress = {};\r\n    for (let key of fields) {\r\n        intermediateAddress[key] = address[key];\r\n    }\r\n    return intermediateAddress;\r\n}\r\n\r\n/**\r\n *\r\n * @param values\r\n * @returns {{}|{[p: string]: *}}\r\n */\r\nexport const filterEmptyValues = (values) => {\r\n    return Object.keys(values).filter(key => Boolean(values[key])).reduce((obj, key) => ({\r\n        ...obj,\r\n        [key]: values[key]\r\n    }), {});\r\n}\r\n\r\nexport const formatPrice = (price, currencyCode) => {\r\n    const {prefix, suffix, decimalSeparator, minorUnit, thousandSeparator} = getCurrency(currencyCode);\r\n    if (price == '' || price === undefined) {\r\n        return price;\r\n    }\r\n\r\n    price = typeof price === 'string' ? parseInt(price, 10) : price;\r\n    price = price / 10 ** minorUnit;\r\n    price = price.toString().replace('.', decimalSeparator);\r\n    let fractional = '';\r\n    const index = price.indexOf(decimalSeparator);\r\n    if (index < 0) {\r\n        if (minorUnit > 0) {\r\n            price += `${decimalSeparator}${new Array(minorUnit + 1).join('0')}`;\r\n        }\r\n    } else {\r\n        fractional = price.substr(index + 1);\r\n        if (fractional.length < minorUnit) {\r\n            price += new Array(minorUnit - fractional.length + 1).join('0');\r\n        }\r\n    }\r\n\r\n    // separate out price and decimals so thousands separator can be added.\r\n    const match = price.match(new RegExp(`(\\\\d+)\\\\${decimalSeparator}(\\\\d+)`));\r\n    if (match) {\r\n        ({1: price, 2: fractional} = match);\r\n    }\r\n    price = price.replace(new RegExp(`\\\\B(?=(\\\\d{3})+(?!\\\\d))`, 'g'), `${thousandSeparator}`);\r\n    price = fractional?.length > 0 ? price + decimalSeparator + fractional : price;\r\n    price = prefix + price + suffix;\r\n    return price;\r\n}\r\n\r\nexport const getShippingOptions = (shippingRates) => {\r\n    let options = [];\r\n    shippingRates.forEach((shippingPackage, idx) => {\r\n        // sort by selected rate\r\n        shippingPackage.shipping_rates.sort((rate) => {\r\n            return rate.selected ? -1 : 1;\r\n        });\r\n        let rates = shippingPackage.shipping_rates.map(rate => {\r\n            let txt = document.createElement('textarea');\r\n            txt.innerHTML = rate.name;\r\n            let price = formatPrice(rate.price, rate.currency_code);\r\n            return {\r\n                id: getShippingOptionId(idx, rate.rate_id),\r\n                label: txt.value,\r\n                //detail: `${price}`,\r\n                amount: parseInt(rate.price, 10)\r\n            }\r\n        });\r\n        options = [...options, ...rates];\r\n    });\r\n    return options;\r\n}\r\n\r\nexport const getShippingOptionId = (packageId, rateId) => `${packageId}:${rateId}`\r\n\r\nexport const getDisplayItems = (cartItems, {minorUnit}) => {\r\n    let items = [];\r\n    const keys = ['total_tax', 'total_shipping'];\r\n    cartItems.forEach(item => {\r\n        if (0 < item.value || (item.key && keys.includes(item.key))) {\r\n            items.push({\r\n                label: item.label,\r\n                pending: false,\r\n                amount: item.value\r\n            });\r\n        }\r\n    })\r\n    return items;\r\n}\r\n\r\nconst canPay = {};\r\n\r\nexport const canMakePayment = ({country, currency, total}, callback) => {\r\n    return new Promise((resolve, reject) => {\r\n        const key = [country, currency, total.amount].reduce((key, value) => `${key}-${value}`);\r\n        if (!currency) {\r\n            return resolve(false);\r\n        }\r\n        if (key in canPay) {\r\n            return resolve(canPay[key]);\r\n        }\r\n        return initStripe.then(stripe => {\r\n            if (stripe.error) {\r\n                return reject(stripe.error);\r\n            }\r\n            const request = stripe.paymentRequest({\r\n                country,\r\n                currency,\r\n                total\r\n            });\r\n            request.canMakePayment().then(result => {\r\n                canPay[key] = callback(result);\r\n                return resolve(canPay[key]);\r\n            });\r\n        }).catch(reject);\r\n    });\r\n};\r\n\r\nexport const registerLocalPaymentMethod = (paymentMethod) => {\r\n    localPaymentMethods.push(paymentMethod);\r\n}\r\n\r\nexport const getLocalPaymentMethods = () => localPaymentMethods;\r\n\r\nexport const cartContainsPreOrder = () => {\r\n    const data = getSetting('stripePaymentData');\r\n    return data && data.pre_order;\r\n}\r\n\r\nexport const cartContainsSubscription = () => {\r\n    const data = getSetting('stripePaymentData');\r\n    return data && data.subscription;\r\n}\r\n\r\nexport const getDefaultSourceArgs = ({type, amount, billingData, currency, returnUrl}) => {\r\n    return {\r\n        type,\r\n        amount,\r\n        currency,\r\n        owner: getBillingDetailsFromAddress(billingData),\r\n        redirect: {\r\n            return_url: returnUrl\r\n        }\r\n    }\r\n}\r\n\r\nexport const isTestMode = () => {\r\n    return getSetting('stripeGeneralData').mode === 'test';\r\n}\r\n\r\nconst getCacheKey = (key) => `${CACHE_PREFIX}${key}`;\r\n\r\nexport const storeInCache = (key, value) => {\r\n    const exp = Math.floor(new Date().getTime() / 1000) + (60 * 15);\r\n    if ('sessionStorage' in window) {\r\n        sessionStorage.setItem(getCacheKey(key), JSON.stringify({value, exp}));\r\n    }\r\n}\r\n\r\nexport const getFromCache = (key) => {\r\n    if ('sessionStorage' in window) {\r\n        try {\r\n            const item = JSON.parse(sessionStorage.getItem(getCacheKey(key)));\r\n            if (item) {\r\n                const {value, exp} = item;\r\n                if (Math.floor(new Date().getTime() / 1000) > exp) {\r\n                    deleteFromCache(getCacheKey(key));\r\n                } else {\r\n                    return value;\r\n                }\r\n            }\r\n        } catch (err) {\r\n        }\r\n    }\r\n    return null;\r\n}\r\n\r\nexport const deleteFromCache = (key) => {\r\n    if ('sessionStorage' in window) {\r\n        sessionStorage.removeItem(getCacheKey(key));\r\n    }\r\n}\r\n\r\nexport const versionCompare = (ver1, ver2, compare) => {\r\n    switch (compare) {\r\n        case '<':\r\n            return ver1 < ver2;\r\n        case '>':\r\n            return ver1 > ver2;\r\n        case '<=':\r\n            return ver1 <= ver2;\r\n        case '>=':\r\n            return ver1 >= ver2;\r\n        case '=':\r\n            return ver1 == ver2;\r\n    }\r\n    return false;\r\n}\r\n\r\nexport const isCartPage = () => getSetting('stripeGeneralData').page === 'cart';\r\n\r\nexport const isCheckoutPage = () => getSetting('stripeGeneralData').page === 'checkout';","/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"sourceRoot":""}