UNPKG

native-forms-react

Version:

Build forms, surveys and polls for React.

2 lines (1 loc) 11.4 kB
"use strict";var e,r=require("./index-8e695942.js"),t=require("react"),n=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,o="https://js.stripe.com/v3",i=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,a="loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used",s=null,u=function(e){return null!==s?s:s=new Promise((function(r,t){if("undefined"!=typeof window)if(window.Stripe&&e&&console.warn(a),window.Stripe)r(window.Stripe);else try{var n=function(){for(var e=document.querySelectorAll('script[src^="'.concat(o,'"]')),r=0;r<e.length;r++){var t=e[r];if(i.test(t.src))return t}return null}();n&&e?console.warn(a):n||(n=function(e){var r=e&&!e.advancedFraudSignals?"?advancedFraudSignals=false":"",t=document.createElement("script");t.src="".concat(o).concat(r);var n=document.head||document.body;if(!n)throw new Error("Expected document.body not to be null. Stripe.js requires a <body> element.");return n.appendChild(t),t}(e)),n.addEventListener("load",(function(){window.Stripe?r(window.Stripe):t(new Error("Stripe.js not available"))})),n.addEventListener("error",(function(){t(new Error("Failed to load Stripe.js"))}))}catch(e){return void t(e)}else r(null)}))},c=function(e,r,t){if(null===e)return null;var n=e.apply(void 0,r);return function(e,r){e&&e._registerWrapper&&e._registerWrapper({name:"stripe-js",version:"1.11.0",startTime:r})}(n,t),n},l=Promise.resolve().then((function(){return u(null)})),p=!1;l.catch((function(e){p||console.warn(e)}));function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function m(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(t.push(a.value),!r||t.length!==r);n=!0);}catch(e){o=!0,i=e}finally{try{n||null==s.return||s.return()}finally{if(o)throw i}}return t}(e,r)||function(e,r){if(!e)return;if("string"==typeof e)return y(e,r);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 y(e,r)}(e,r)||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 y(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}var v=function(e){return null!==e&&"object"===d(e)},b=function e(r,t){if(!v(r)||!v(t))return r===t;var n=Array.isArray(r);if(n!==Array.isArray(t))return!1;var o="[object Object]"===Object.prototype.toString.call(r);if(o!==("[object Object]"===Object.prototype.toString.call(t)))return!1;if(!o&&!n)return!1;var i=Object.keys(r),a=Object.keys(t);if(i.length!==a.length)return!1;for(var s={},u=0;u<i.length;u+=1)s[i[u]]=!0;for(var c=0;c<a.length;c+=1)s[a[c]]=!0;var l=Object.keys(s);if(l.length!==i.length)return!1;var p=r,d=t;return l.every((function(r){return e(p[r],d[r])}))},h=function(e){var r=n.useRef(e);return n.useEffect((function(){r.current=e}),[e]),r.current},g=function(e){if(null===e||v(r=e)&&"function"==typeof r.elements&&"function"==typeof r.createToken&&"function"==typeof r.createPaymentMethod&&"function"==typeof r.confirmCardPayment)return e;var r;throw new 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.")},w=function(e){if(function(e){return v(e)&&"function"==typeof e.then}(e))return{tag:"async",stripePromise:Promise.resolve(e).then(g)};var r=g(e);return null===r?{tag:"empty"}:{tag:"sync",stripe:r}},S=n.createContext(null);S.displayName="ElementsContext";var E=function(e){var r=e.stripe,t=e.options,o=e.children,i=n.useRef(!1),a=n.useRef(!0),s=n.useMemo((function(){return w(r)}),[r]),u=m(n.useState((function(){return{stripe:null,elements:null}})),2),c=u[0],l=u[1],p=h(r),d=h(t);return null!==p&&(p!==r&&console.warn("Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it."),b(t,d)||console.warn("Unsupported prop change on Elements: You cannot change the `options` prop after setting the `stripe` prop.")),i.current||("sync"===s.tag&&(i.current=!0,l({stripe:s.stripe,elements:s.stripe.elements(t)})),"async"===s.tag&&(i.current=!0,s.stripePromise.then((function(e){e&&a.current&&l({stripe:e,elements:e.elements(t)})})))),n.useEffect((function(){return function(){a.current=!1}}),[]),n.useEffect((function(){var e=c.stripe;e&&e._registerWrapper&&e._registerWrapper({name:"react-stripe-js",version:"1.2.0"})}),[c.stripe]),n.createElement(S.Provider,{value:c},o)};E.propTypes={stripe:r.PropTypes.any,options:r.PropTypes.object};var x=function(e){return function(e,r){if(!e)throw new Error("Could not find Elements context; You need to wrap the part of your app that ".concat(r," in an <Elements> provider."));return e}(n.useContext(S),e)};r.PropTypes.func.isRequired;var j=function(e){var r=n.useRef(e);return n.useEffect((function(){r.current=e}),[e]),function(){r.current&&r.current.apply(r,arguments)}},C=function(e){if(!v(e))return{};e.paymentRequest;return f(e,["paymentRequest"])},P=function(){},k=function(e,t){var o,i="".concat((o=e).charAt(0).toUpperCase()+o.slice(1),"Element"),a=t?function(e){x("mounts <".concat(i,">"));var r=e.id,t=e.className;return(n.createElement("div",{id:r,className:t}))}:function(r){var t=r.id,o=r.className,a=r.options,s=void 0===a?{}:a,u=r.onBlur,c=void 0===u?P:u,l=r.onFocus,p=void 0===l?P:l,d=r.onReady,f=void 0===d?P:d,m=r.onChange,y=void 0===m?P:m,v=r.onEscape,h=void 0===v?P:v,g=r.onClick,w=void 0===g?P:g,S=x("mounts <".concat(i,">")).elements,E=n.useRef(null),k=n.useRef(null),_=j(f),R=j(c),O=j(p),T=j(w),A=j(y),q=j(h);n.useLayoutEffect((function(){if(null==E.current&&S&&null!=k.current){var r=S.create(e,s);E.current=r,r.mount(k.current),r.on("ready",(function(){return _(r)})),r.on("change",A),r.on("blur",R),r.on("focus",O),r.on("escape",q),r.on("click",T)}}));var I=n.useRef(s);return n.useEffect((function(){I.current&&I.current.paymentRequest!==s.paymentRequest&&console.warn("Unsupported prop change: options.paymentRequest is not a customizable property.");var e=C(s);0===Object.keys(e).length||b(e,C(I.current))||E.current&&(E.current.update(e),I.current=s)}),[s]),n.useEffect((function(){var e=E.current;return function(){e&&e.destroy()}}),[]),n.createElement("div",{id:t,className:o,ref:k})};return a.propTypes={id:r.PropTypes.string,className:r.PropTypes.string,onChange:r.PropTypes.func,onBlur:r.PropTypes.func,onFocus:r.PropTypes.func,onReady:r.PropTypes.func,onClick:r.PropTypes.func,options:r.PropTypes.object},a.displayName=i,a.__elementType=e,a},_="undefined"==typeof window,R=(k("auBankAccount",_),k("card",_)),O=(k("cardNumber",_),k("cardExpiry",_),k("cardCvc",_),k("fpxBank",_),k("iban",_),k("idealBank",_),k("paymentRequestButton",_),function(e){var t=e.form,o=e.isField,i=e.updateCardStatus,a=e.isPreview,s=e.block,u=x("calls useStripe()").stripe,c=x("calls useElements()").elements,l=t||{},p=l.color,d=void 0===p?r.colors.main:p,f=l.textColor,m=void 0===f?r.colors.primary:f,y=l.backgroundColor,v=void 0===y?r.colors.white:y,b=l.inputBackgroundColor,h=void 0===b?r.colors.white:b,g=t.stripe||{},w=s.cardOptions||g.cardOptions||{},S=s.hidePostalCode||g.hidePostalCode,E=s.subscription||g.subscription;return window.__payWithStripe=function(e){var n,o,a,l,p,d,f,m;return r._regeneratorRuntime.async((function(y){for(;;)switch(y.prev=y.next){case 0:if(n=e.customer,t.stripe){y.next=3;break}return y.abrupt("return",{error:"Stripe account is not connected."});case 3:if(s.isRequired||s.value){y.next=5;break}return y.abrupt("return",{ok:!0});case 5:if(r.isQuestionVisible(e,s.question)){y.next=7;break}return y.abrupt("return",{ok:!0});case 7:if(y.prev=7,o={address:{}},n.name&&(o.name=n.name),n.email&&(o.email=n.email),n.phone&&(o.phone=n.phone),n.city&&(o.address.city=n.city),n.countryCode&&(o.address.country=n.countryCode),n.line1&&(o.address.line1=n.line1),n.postal_code&&(o.address.postal_code=n.postal_code),n.state&&(o.address.state=n.state),!E){y.next=39;break}if(E.id){y.next=20;break}return y.abrupt("return",{error:"No subscription plan selected."});case 20:return y.next=22,r._regeneratorRuntime.awrap(r.createSubscriptionCustomer(e,n,o.address));case 22:return a=y.sent,e.stripe.customer=a,y.next=26,r._regeneratorRuntime.awrap(u.createPaymentMethod({type:"card",card:c.getElement(R),billing_details:o}));case 26:if(!(l=y.sent).error){y.next=30;break}return console.error(l.error.message),y.abrupt("return",{error:l.error.message});case 30:return e.stripe.paymentMethodId=l.paymentMethod.id,y.next=33,r._regeneratorRuntime.awrap(r.createPaymentIntent(e,s));case 33:return delete(p=y.sent).items,delete p.latest_invoice,e.stripe.subscription=p,i("Card processed successfully."),y.abrupt("return",{ok:!0});case 39:return y.next=41,r._regeneratorRuntime.awrap(r.createPaymentIntent(e,s));case 41:return d=y.sent,f=d.client_secret,y.next=45,r._regeneratorRuntime.awrap(u.confirmCardPayment(f,{payment_method:{card:c.getElement(R),billing_details:o}}));case 45:if(!(m=y.sent).error){y.next=49;break}return console.error(m.error.message),y.abrupt("return",{error:m.error.message});case 49:return i("Card processed successfully."),y.abrupt("return",{ok:!0});case 53:return y.prev=53,y.t0=y.catch(7),console.error(y.t0),y.abrupt("return",{error:y.t0.message});case 57:case"end":return y.stop()}}),null,null,[[7,53]])},n.createElement("div",{style:{backgroundColor:h,border:"1px solid ".concat("dark"===r.lightOrDark(v)?r.colors.darkgrey:r.colors.border),borderRadius:"8px",width:"100%",padding:"14px 12px",height:50,margin:o?"6px 0":"0",maxWidth:o?"":420,boxSizing:"border-box"}},n.createElement(R,{onChange:function(e){var r=e.complete?"Card details entered.":"";i(r)},options:r._objectSpread2({iconStyle:"solid",hidePostalCode:S,disabled:a,style:{base:{iconColor:d,color:m,fontWeight:500,fontFamily:"Mulish, system-ui, sans-serif",fontSize:"14px",fontSmoothing:"antialiased",":-webkit-autofill":{color:m},"::placeholder":{color:"".concat(m,"88")}},invalid:{iconColor:r.colors.error,color:r.colors.error}}},w)}))});exports.default=function(e){var o=e.form,i=e.isField,a=e.updateCardStatus,s=e.isPreview,u=e.block,d=o.stripe,f=void 0===d?{}:d,m=t.useMemo((function(){return function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];p=!0;var n=Date.now();return l.then((function(e){return c(e,r,n)}))}(r.config.STRIPE_PUBLIC_KEY,{stripeAccount:f.stripe_user_id})}),[]);return n.createElement(E,{stripe:m},n.createElement(O,{form:o,isField:i,updateCardStatus:a,isPreview:s,block:u}))};