1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4647],{64647:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>d});var r=t(95155),i=t(12115),o=t(89235),a=t.n(o),l=t(65285);function d(e){let{amount:n,order:t,onSuccess:o,onError:l}=e,[d,p]=(0,i.useState)(null),[g,b]=(0,i.useState)(null),[v,y]=(0,i.useState)(null),[x,w]=(0,i.useState)(!0),j=(0,i.useRef)(!1),C=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=e.toLowerCase();return n.includes("cvv")?"Payment failed. No money has been charged. The security code (CVV) is incorrect. Please check your card and try again.":n.includes("expiration")?"Payment failed. No money has been charged. The card expiration date is invalid. Please check and try again.":n.includes("number")?"Payment failed. No money has been charged. The card number appears to be invalid. Please check and try again.":n.includes("insufficient")?"Payment failed. No money has been charged. The payment was declined due to insufficient funds. Please try another card.":n.includes("three")||n.includes("3d")?"Payment failed. No money has been charged. 3D Secure verification failed. Please try again or use another card.":n.includes("network")||n.includes("timeout")?"A connection error occurred. Your payment was NOT processed. Please try again.":"The payment could not be completed. Your card was NOT charged. Please try again or use another payment method."};(0,i.useEffect)(()=>(j.current=!0,a()("https://js.braintreegateway.com/web/3.96.0/js/client.min.js",()=>{a()("https://js.braintreegateway.com/web/3.96.0/js/hosted-fields.min.js",()=>{a()("https://js.braintreegateway.com/web/3.96.0/js/three-d-secure.min.js",()=>{N()})})}),()=>{var e,n;j.current=!1;try{g&&(null===(e=g.teardown)||void 0===e||e.call(g,()=>{}))}catch(e){}try{v&&(null===(n=v.teardown)||void 0===n||n.call(v,()=>{}))}catch(e){}b(null),y(null),p(null)}),[]);let N=async()=>{try{if(!window.braintree)return;w(!0);let e=await fetch("/api/braintree/token",{method:"GET"}),n=await e.json();if(!e.ok){w(!1),null==l||l(C((null==n?void 0:n.error)||"Failed to fetch client token"));return}let{clientToken:t}=n;window.braintree.client.create({authorization:t},(e,n)=>{if(e){w(!1),null==l||l(C("Client initialization error: "+e.message));return}j.current&&(p(n),window.braintree.threeDSecure.create({client:n,version:2},(e,t)=>{if(e){w(!1),null==l||l(C("3DS init error: "+e.message));return}j.current&&(y(t),k(n))}))})}catch(e){w(!1),null==l||l(C((null==e?void 0:e.message)||"Braintree init failed"))}},k=e=>{window.braintree.hostedFields.create({client:e,styles:{input:{"font-size":"16px",color:"#333"},":focus":{color:"black"}},fields:{number:{selector:"#card-number",placeholder:"Card Number"},expirationDate:{selector:"#expiration-date",placeholder:"MM/YY"},cvv:{selector:"#cvv",placeholder:"CVV"}}},(e,n)=>{if(e){w(!1),null==l||l(C("Hosted fields error: "+e.message));return}j.current&&(b(n),w(!1))})},P=async()=>{try{g&&await new Promise(e=>g.teardown(()=>e(!0)))}catch(e){}try{v&&await new Promise(e=>{var n;return null===(n=v.teardown)||void 0===n?void 0:n.call(v,()=>e(!0))})}catch(e){}j.current&&(b(null),y(null),p(null),w(!0),N())};return(0,r.jsxs)(s,{children:[(0,r.jsxs)(c,{children:[(0,r.jsx)(f,{children:"Card Number"}),(0,r.jsx)(m,{id:"card-number"})]}),(0,r.jsxs)(u,{children:[(0,r.jsxs)(c,{children:[(0,r.jsx)(f,{children:"Expiration"}),(0,r.jsx)(m,{id:"expiration-date"})]}),(0,r.jsxs)(c,{children:[(0,r.jsx)(f,{children:"CVV"}),(0,r.jsx)(m,{id:"cvv"})]})]}),(0,r.jsx)(h,{onClick:()=>{if(x)return;if(w(!0),!g||!v){w(!1),null==l||l(C("Payment form not ready yet."));return}let e=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/\D/g,"")},n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x00-\x7F]/g,"")},r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=String(e).trim().replace(/\s+/g," ").split(" ");return{givenName:n[0]||"",surname:n.slice(1).join(" ")||""}},i=t=>{var i;let{order:o,amount:a,tokenizePayload:l}=t,d=(null==o?void 0:o.billaddressee)||(null==o?void 0:o.billname)||"",s=(null==o?void 0:o.shipaddressee)||(null==o?void 0:o.shipname)||"",c=r(d);return r(s),{amount:String(a),nonce:l.nonce,bin:null===(i=l.details)||void 0===i?void 0:i.bin,email:(null==o?void 0:o.shipemail)||void 0,billingAddress:{givenName:n(c.givenName),surname:n(c.surname),phoneNumber:e((null==o?void 0:o.shipphone)||""),streetAddress:(null==o?void 0:o.billaddress)||void 0,extendedAddress:(null==o?void 0:o.billaddress2)||void 0,locality:(null==o?void 0:o.billcity)||void 0,postalCode:(null==o?void 0:o.billzip)||void 0,countryCodeAlpha2:(null==o?void 0:o.billcountry)||void 0},onLookupComplete:(e,n)=>n()}},a={postalCode:null==t?void 0:t.billzip,firstName:r(null==t?void 0:t.billname).givenName,lastName:r(null==t?void 0:t.billname).surname,streetAddress:null==t?void 0:t.billaddress};g.tokenize({billingAddress:a},(e,n)=>{if(e){w(!1),null==l||l(C(e.message));return}let r=i({order:t,amount:t.grossamount,tokenizePayload:n});v.verifyCard(r,(e,n)=>{if(e){w(!1),null==l||l(C(e.message));return}fetch("/api/braintree/pay",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nonce:n.nonce,amount:String(t.grossamount),order:t})}).then(e=>e.json()).then(e=>{e.success?(o(e.transaction),P()):(w(!1),l("Your payment was NOT completed. No money has been taken from your card. Please try again or use another card."))}).catch(e=>{w(!1),null==l||l(C(e.message))})})})},disabled:x,children:x?"Processing...":"Pay now"})]})}let s=l.Ay.div.withConfig({componentId:"sc-77d1681d-0"})(["margin-top:20px;"]),c=l.Ay.div.withConfig({componentId:"sc-77d1681d-1"})(["display:flex;flex-direction:column;margin-bottom:20px;"]),u=l.Ay.div.withConfig({componentId:"sc-77d1681d-2"})(["display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:10px;@media (max-width:600px){grid-template-columns:1fr;}"]),f=l.Ay.label.withConfig({componentId:"sc-77d1681d-3"})(["font-size:14px;font-weight:600;color:#333;margin-bottom:6px;"]),m=l.Ay.div.withConfig({componentId:"sc-77d1681d-4"})(["height:50px;border:1px solid #ccc;border-radius:8px;padding:12px;background:#fff;display:flex;align-items:center;transition:border-color 0.2s ease-in-out,box-shadow 0.2s ease-in-out;&.braintree-hosted-fields-focused{border-color:#000;box-shadow:0 0 0 3px rgba(0,0,0,0.1);}&.braintree-hosted-fields-invalid{border-color:#e63946 !important;box-shadow:0 0 0 3px rgba(230,57,70,0.15);}&.braintree-hosted-fields-valid{border-color:#2d6a4f !important;}"]),h=l.Ay.button.withConfig({componentId:"sc-77d1681d-5"})(["padding:10px 20px;border-radius:4px;font-size:17px;font-weight:600;text-transform:uppercase;background:",";color:#fff;cursor:",";border:none;transition:background 0.2s ease;margin:0 0 30px auto;&:hover{background:",";}"],e=>{let{disabled:n}=e;return n?"#777":"#000"},e=>{let{disabled:n}=e;return n?"not-allowed":"pointer"},e=>{let{disabled:n}=e;return n?"#777":"#222"})},89235:(e,n,t)=>{var r,i;!function(o,a){e.exports?e.exports=a():void 0!==(i="function"==typeof(r=a)?r.call(n,t,n,e):r)&&(e.exports=i)}(0,function(){var e,n,t=document,r=t.getElementsByTagName("head")[0],i="push",o="readyState",a="onreadystatechange",l={},d={},s={},c={};function u(e,n){for(var t=0,r=e.length;t<r;++t)if(!n(e[t]))return!1;return 1}function f(e,n){u(e,function(e){return n(e),1})}function m(n,t,r){n=n[i]?n:[n];var o=t&&t.call,a=o?t:r,p=o?n.join(""):t,g=n.length;function b(e){return e.call?e():l[e]}function v(){if(!--g)for(var e in l[p]=1,a&&a(),s)u(e.split("|"),b)&&!f(s[e],b)&&(s[e]=[])}return setTimeout(function(){f(n,function n(t,r){return null===t?v():(r||/^https?:\/\//.test(t)||!e||(t=-1===t.indexOf(".js")?e+t+".js":e+t),c[t])?(p&&(d[p]=1),2==c[t]?v():setTimeout(function(){n(t,!0)},0)):void(c[t]=1,p&&(d[p]=1),h(t,v))})}
1,0),m}function h(e,i){var l,d=t.createElement("script");d.onload=d.onerror=d[a]=function(){(!d[o]||/^c|loade/.test(d[o]))&&!l&&(d.onload=d[a]=null,l=1,c[e]=2,i())},d.async=1,d.src=n?e+(-1===e.indexOf("?")?"?":"&")+n:e,r.insertBefore(d,r.lastChild)}return m.get=h,m.order=function(e,n,t){!function r(i){i=e.shift(),e.length?m(i,r):m(i,n,t)}()},m.path=function(n){e=n},m.urlArgs=function(e){n=e},m.ready=function(e,n,t){e=e[i]?e:[e];var r,o=[];return!f(e,function(e){l[e]||o[i](e)})&&u(e,function(e){return l[e]})?n():(s[r=e.join("|")]=s[r]||[],s[r][i](n),t&&t(o)),m},m.done=function(e){m([null],e)},m})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.