!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).ReactStripe={},e.React)}(this,(function(e,n){"use strict";function t(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function r(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function s(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,o,c=[],u=!0,i=!1;try{for(t=t.call(e);!(u=(r=t.next()).done)&&(c.push(r.value),!n||c.length!==n);u=!0);}catch(e){i=!0,o=e}finally{try{u||null==t.return||t.return()}finally{if(i)throw o}}return c}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return l(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l(e,n)}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t1&&void 0!==arguments[1]?arguments[1]:P;if(null===e||E(n=e)&&"function"==typeof n.elements&&"function"==typeof n.createToken&&"function"==typeof n.createPaymentMethod&&"function"==typeof n.confirmCardPayment)return e;throw new Error(t)},O=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:P;if(function(e){return E(e)&&"function"==typeof e.then}(e))return{tag:"async",stripePromise:Promise.resolve(e).then((function(e){return w(e,n)}))};var t=w(e,n);return null===t?{tag:"empty"}:{tag:"sync",stripe:t}},j=function(e){e&&e._registerWrapper&&e.registerAppInfo&&(e._registerWrapper({name:"react-stripe-js",version:"5.6.0"}),e.registerAppInfo({name:"react-stripe-js",version:"5.6.0",url:"https://stripe.com/docs/stripe-js/react"}))},x=n.createContext(null);x.displayName="ElementsContext";var R=function(e,n){if(!e)throw new Error("Could not find Elements context; You need to wrap the part of your app that ".concat(n," in an provider."));return e},A=function(e){var t=e.stripe,r=e.options,o=e.children,c=n.useMemo((function(){return O(t)}),[t]),u=s(n.useState((function(){return{stripe:"sync"===c.tag?c.stripe:null,elements:"sync"===c.tag?c.stripe.elements(r):null}})),2),i=u[0],a=u[1];n.useEffect((function(){var e=!0,n=function(e){a((function(n){return n.stripe?n:{stripe:e,elements:e.elements(r)}}))};return"async"!==c.tag||i.stripe?"sync"!==c.tag||i.stripe||n(c.stripe):c.stripePromise.then((function(t){t&&e&&n(t)})),function(){e=!1}}),[c,i,r]);var l=b(t);n.useEffect((function(){null!==l&&l!==t&&console.warn("Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.")}),[l,t]);var p=b(r);return n.useEffect((function(){if(i.elements){var e=S(r,p,["clientSecret","fonts"]);e&&i.elements.update(e)}}),[r,p,i.elements]),n.useEffect((function(){j(i.stripe)}),[i.stripe]),n.createElement(x.Provider,{value:i},o)};A.propTypes={stripe:g.any,options:g.object};var I=function(e){var t=n.useContext(x);return R(t,e)},T=function(e){return(0,e.children)(I("mounts "))};T.propTypes={children:g.func.isRequired};var L=n.createContext(null);L.displayName="CheckoutContext",g.any,g.shape({clientSecret:g.oneOfType([g.string,g.instanceOf(Promise)]).isRequired,elementsOptions:g.object}).isRequired;var N=function(e){var t=n.useContext(L),r=n.useContext(x);if(t){if(r)throw new Error("You cannot wrap the part of your app that ".concat(e," in both and providers."));return t}return R(r,e)},M=["mode"],U=function(e,t){var r,o="".concat((r=e).charAt(0).toUpperCase()+r.slice(1),"Element"),c=t?function(e){N("mounts <".concat(o,">"));var t=e.id,r=e.className;return n.createElement("div",{id:t,className:r})}:function(t){var r,c=t.id,u=t.className,i=t.options,l=void 0===i?{}:i,p=t.onBlur,f=t.onFocus,d=t.onReady,m=t.onChange,h=t.onEscape,y=t.onClick,g=t.onLoadError,E=t.onLoaderStart,C=t.onNetworksChange,k=t.onConfirm,P=t.onCancel,w=t.onShippingAddressChange,O=t.onShippingRateChange,j=t.onSavedPaymentMethodRemove,x=t.onSavedPaymentMethodUpdate,R=N("mounts <".concat(o,">")),A="elements"in R?R.elements:null,I="checkoutState"in R?R.checkoutState:null,T="success"===(null==I?void 0:I.type)||"loading"===(null==I?void 0:I.type)?I.sdk:null,L=s(n.useState(null),2),U=L[0],D=L[1],Y=n.useRef(null),_=n.useRef(null);v(U,"blur",p),v(U,"focus",f),v(U,"escape",h),v(U,"click",y),v(U,"loaderror",g),v(U,"loaderstart",E),v(U,"networkschange",C),v(U,"confirm",k),v(U,"cancel",P),v(U,"shippingaddresschange",w),v(U,"shippingratechange",O),v(U,"savedpaymentmethodremove",j),v(U,"savedpaymentmethodupdate",x),v(U,"change",m),d&&(r="expressCheckout"===e?d:function(){d(U)}),v(U,"ready",r),n.useLayoutEffect((function(){if(null===Y.current&&null!==_.current&&(A||T)){var n=null;if(T)switch(e){case"paymentForm":n=T.createPaymentFormElement(l);break;case"payment":n=T.createPaymentElement(l);break;case"address":if(!("mode"in l))throw new Error("You must supply options.mode. mode must be 'billing' or 'shipping'.");var t=l.mode,r=a(l,M);if("shipping"===t)n=T.createShippingAddressElement(r);else{if("billing"!==t)throw new Error("Invalid options.mode. mode must be 'billing' or 'shipping'.");n=T.createBillingAddressElement(r)}break;case"expressCheckout":n=T.createExpressCheckoutElement(l);break;case"currencySelector":n=T.createCurrencySelectorElement();break;case"taxId":n=T.createTaxIdElement(l);break;default:throw new Error("Invalid Element type ".concat(o,". You must use either the , , , or ."))}else A&&(n=A.create(e,l));Y.current=n,D(n),n&&n.mount(_.current)}}),[A,T,l]);var q=b(l);return n.useEffect((function(){if(Y.current){var e=S(l,q,["paymentRequest"]);e&&"update"in Y.current&&Y.current.update(e)}}),[l,q]),n.useLayoutEffect((function(){return function(){if(Y.current&&"function"==typeof Y.current.destroy)try{Y.current.destroy(),Y.current=null}catch(e){}}}),[]),n.createElement("div",{id:c,className:u,ref:_})};return c.propTypes={id:g.string,className:g.string,onChange:g.func,onBlur:g.func,onFocus:g.func,onReady:g.func,onEscape:g.func,onClick:g.func,onLoadError:g.func,onLoaderStart:g.func,onNetworksChange:g.func,onConfirm:g.func,onCancel:g.func,onShippingAddressChange:g.func,onShippingRateChange:g.func,onSavedPaymentMethodRemove:g.func,onSavedPaymentMethodUpdate:g.func,options:g.object},c.displayName=o,c.__elementType=e,c},D="undefined"==typeof window,Y=n.createContext(null);Y.displayName="EmbeddedCheckoutProviderContext";var _=function(){var e=n.useContext(Y);if(!e)throw new Error(" must be used within ");return e},q=D?function(e){var t=e.id,r=e.className;return _(),n.createElement("div",{id:t,className:r})}:function(e){var t=e.id,r=e.className,o=_().embeddedCheckout,c=n.useRef(!1),u=n.useRef(null);return n.useLayoutEffect((function(){return!c.current&&o&&null!==u.current&&(o.mount(u.current),c.current=!0),function(){if(c.current&&o)try{o.unmount(),c.current=!1}catch(e){}}}),[o]),n.createElement("div",{ref:u,id:t,className:r})},B=U("auBankAccount",D),F=U("card",D),W=U("cardNumber",D),H=U("cardExpiry",D),V=U("cardCvc",D),$=U("iban",D),z=U("payment",D),G=U("expressCheckout",D),J=U("paymentRequestButton",D),K=U("linkAuthentication",D),Q=U("address",D),X=U("shippingAddress",D),Z=U("paymentMethodMessaging",D),ee=U("taxId",D);e.AddressElement=Q,e.AuBankAccountElement=B,e.CardCvcElement=V,e.CardElement=F,e.CardExpiryElement=H,e.CardNumberElement=W,e.Elements=A,e.ElementsConsumer=T,e.EmbeddedCheckout=q,e.EmbeddedCheckoutProvider=function(e){var t=e.stripe,r=e.options,o=e.children,c=n.useMemo((function(){return O(t,"Invalid prop `stripe` supplied to `EmbeddedCheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.")}),[t]),u=n.useRef(null),i=n.useRef(null),a=s(n.useState({embeddedCheckout:null}),2),l=a[0],p=a[1];n.useEffect((function(){if(!i.current&&!u.current){var e=function(e){i.current||u.current||(i.current=e,u.current=i.current.initEmbeddedCheckout(r).then((function(e){p({embeddedCheckout:e})})))};"async"!==c.tag||i.current||!r.clientSecret&&!r.fetchClientSecret?"sync"!==c.tag||i.current||!r.clientSecret&&!r.fetchClientSecret||e(c.stripe):c.stripePromise.then((function(n){n&&e(n)}))}}),[c,r,l,i]),n.useEffect((function(){return function(){l.embeddedCheckout?(u.current=null,l.embeddedCheckout.destroy()):u.current&&u.current.then((function(){u.current=null,l.embeddedCheckout&&l.embeddedCheckout.destroy()}))}}),[l.embeddedCheckout]),n.useEffect((function(){j(i)}),[i]);var f=b(t);n.useEffect((function(){null!==f&&f!==t&&console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the `stripe` prop after setting it.")}),[f,t]);var d=b(r);return n.useEffect((function(){null!=d&&(null!=r?(void 0===r.clientSecret&&void 0===r.fetchClientSecret&&console.warn("Invalid props passed to EmbeddedCheckoutProvider: You must provide one of either `options.fetchClientSecret` or `options.clientSecret`."),null!=d.clientSecret&&r.clientSecret!==d.clientSecret&&console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the client secret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead."),null!=d.fetchClientSecret&&r.fetchClientSecret!==d.fetchClientSecret&&console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot change fetchClientSecret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead."),null!=d.onComplete&&r.onComplete!==d.onComplete&&console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onComplete option after setting it."),null!=d.onShippingDetailsChange&&r.onShippingDetailsChange!==d.onShippingDetailsChange&&console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onShippingDetailsChange option after setting it."),null!=d.onLineItemsChange&&r.onLineItemsChange!==d.onLineItemsChange&&console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onLineItemsChange option after setting it.")):console.warn("Unsupported prop change on EmbeddedCheckoutProvider: You cannot unset options after setting them."))}),[d,r]),n.createElement(Y.Provider,{value:l},o)},e.ExpressCheckoutElement=G,e.FinancialAccountDisclosure=function(e){var t=e.stripe,r=e.onLoad,o=e.onError,c=e.options,i=null==c?void 0:c.businessName,a=null==c?void 0:c.learnMoreLink,l=n.useRef(null),p=n.useMemo((function(){return O(t)}),[t]),f=s(n.useState("sync"===p.tag?p.stripe:null),2),d=f[0],m=f[1];n.useEffect((function(){var e=!0;return"async"===p.tag?p.stripePromise.then((function(n){n&&e&&m(n)})):"sync"===p.tag&&m(p.stripe),function(){e=!1}}),[p]);var h=b(t);return n.useEffect((function(){null!==h&&h!==t&&console.warn("Unsupported prop change on FinancialAccountDisclosure: You cannot change the `stripe` prop after setting it.")}),[h,t]),n.useEffect((function(){j(d)}),[d]),n.useEffect((function(){var e=function(){var e=u(regeneratorRuntime.mark((function e(){var n,t,c,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d&&l.current){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,d.createFinancialAccountDisclosure({businessName:i,learnMoreLink:a});case 4:n=e.sent,t=n.htmlElement,(c=n.error)&&o?o(c):t&&((u=l.current).innerHTML="",u.appendChild(t),r&&r());case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();e()}),[d,i,a,r,o]),n.createElement("div",{ref:l})},e.IbanElement=$,e.IssuingDisclosure=function(e){var t=e.stripe,r=e.onLoad,o=e.onError,c=e.options,i=null==c?void 0:c.issuingProgramID,a=null==c?void 0:c.publicCardProgramName,l=null==c?void 0:c.learnMoreLink,p=n.useRef(null),f=n.useMemo((function(){return O(t)}),[t]),d=s(n.useState("sync"===f.tag?f.stripe:null),2),m=d[0],h=d[1];n.useEffect((function(){var e=!0;return"async"===f.tag?f.stripePromise.then((function(n){n&&e&&h(n)})):"sync"===f.tag&&h(f.stripe),function(){e=!1}}),[f]);var y=b(t);return n.useEffect((function(){null!==y&&y!==t&&console.warn("Unsupported prop change on IssuingDisclosure: You cannot change the `stripe` prop after setting it.")}),[y,t]),n.useEffect((function(){j(m)}),[m]),n.useEffect((function(){var e=function(){var e=u(regeneratorRuntime.mark((function e(){var n,t,c,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(m&&p.current){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,m.createIssuingDisclosure({issuingProgramID:i,publicCardProgramName:a,learnMoreLink:l});case 4:n=e.sent,t=n.htmlElement,(c=n.error)&&o?o(c):t&&((u=p.current).innerHTML="",u.appendChild(t),r&&r());case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();e()}),[m,i,a,l,r,o]),n.createElement("div",{ref:p})},e.LinkAuthenticationElement=K,e.PaymentElement=z,e.PaymentMethodMessagingElement=Z,e.PaymentRequestButtonElement=J,e.ShippingAddressElement=X,e.TaxIdElement=ee,e.useElements=function(){return I("calls useElements()").elements},e.useStripe=function(){return N("calls useStripe()").stripe}}));