1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-tAWMy1gn.js","assets/index-C2F1kEow.css"])))=>i.map(i=>d[i]); 2import{y as is,z as ts,C as ns,D as rs,u as Bn,j as g,P as Bi,c as i,B as y,T as x,v as Ft,I as zi,t as h,r as l,k as Wt,l as Me,S as ss,n as os,d as G,p as ls,aE as On,R as as,m as cs,h as qt,e as us,a as ps,J as ds,q as hs,ah as In,F as gs,ax as An,aF as Bt}from"./index-tAWMy1gn.js";import{S as En}from"./SidePanel-BoAD_fzh.js";import{f as tt}from"./formatters-CrNLqvLF.js";import{c as nt,f as fs}from"./MerryPerksDiscountRow-B1zrNNVK.js";import{A as ms}from"./ArrowBack-BQgOIQuM.js";import{C as ys}from"./CheckCircle-R0oPMEFO.js";import{C as bs,S as _s,B as Cs,G as Ss}from"./GuestCheckoutSections-B0AwCO3e.js";import{W as vs}from"./Warning-DSFHB0zc.js";import{F as xs}from"./Modal-CQkdqTe5.js";import{T as _e,F as ut,I as Ot,S as zt}from"./TextField-BylU5aXr.js";import{B as fe}from"./Button-CmO21ur9.js";import{C as st}from"./CircularProgress-DtexJ_lt.js";import{D as ot}from"./Dialog-DRPjSRZo.js";import{D as lt,a as at}from"./DialogTitle-65ne_2WF.js";import{E as Tt}from"./Email-BAt_Mrqs.js";import{D as ct}from"./DialogContent-DbXXRCsh.js";import{C as At}from"./CheckCircle-DE2ggD5d.js";import{C as ks}from"./Chip-DR7AnK4m.js";import{I as ws}from"./InputAdornment-CKm9Dh5a.js";import{V as Ps,a as Rs}from"./VisibilityOff-BBsKz09Q.js";import{S as Mn,L as rt}from"./Sms-D5dcfMoX.js";import{G as L}from"./Grid-Cq5Nc5q_.js";import{M as se}from"./MenuItem-6X63peVZ.js";import{E as Nt}from"./ExpandMore-BwAKSc_L.js";import{C as Is}from"./Collapse-_8gmMfnV.js";import{R as As,a as Et}from"./RadioGroup-5kpz-U_t.js";import{F as Oi}from"./FormControlLabel-CabZ8Ilq.js";import{P as Es}
2from"./ProductModal-B1N8nPYF.js";import{C as Fn}from"./googleMapsLoader-Bv6Oy1Uh.js";import{s as Ms,a as Mt,i as Ti,b as Ni,r as qn,c as Fs,g as qs,o as Ts,d as Ns,h as Ws,e as Bs,f as Os,j as zs,k as Ls,l as $s}from"./checkoutSubmitUtils-h_hfxWVw.js";import{r as Vs}from"./pendingGatewayOrder-CxEPJbI5.js";import js from"./PackingCalculationModal-ChrS_vDM.js";import"./BankDetails-spZfJH6x.js";import Us from"./SplitDeliverySection-nAVcNxiG.js";import Gs from"./ImportantNoticeSection-BbffzEY5.js";import Hs,{CheckoutOverlayDialogs as Ks}from"./CheckoutDialogs-Cx2XiC32.js";import{ShippingMethodCard as Tn}from"./ShippingMethodSection-CNhQ1w3M.js";import{CheckoutOrderSummarySidebar as Qs}from"./OrderSummarySection-ChdftAQv.js";/* empty css */import"./SuburbLocationDropdown-CXeE6yl2.js";import"./index-BwqtTtay.js";import"./List-C4MvHZeR.js";import"./ListContext-B0_9D8qv.js";import"./listItemIconClasses-BOEH3G7l.js";import"./listItemTextClasses-BtNYjTAf.js";import"./dividerClasses-DubNWCLK.js";import"./Stack-CoPCaYsK.js";import"./useRealtimeStockData-QhT8p_DX.js";import"./KeyboardArrowRight-B8yA1Y6S.js";import"./index-DVfvKxW3.js";import"./CollectionOptionsSection-DOkgMMJE.js";import"./vat-DpoM5t_m.js";import"./ListItem-BHepOfPZ.js";import"./ListItemText-CNnaP43-.js";var Wi={},Nn;function Js(){if(Nn)return Wi;Nn=1;var f=is();Object.defineProperty(Wi,"__esModule",{value:!0}),Wi.default=void 0;var _=f(ts()),k=ns;return Wi.default=(0,_.default)((0,k.jsx)("path",{d:"m21.41 11.58-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7"}),"LocalOffer"),Wi}var Ys=Js();const Ds=rs(Ys),zn=({voucherCode:f,voucherApplied:_,voucherError:k,voucherLoading:A,onVoucherCodeChange:W,onVoucherSubmit:m,onVoucherRemove:T,voucherDetails:N,isVoucherValidForCart:V,getVoucherInvalidReason:te,voucherPassword:re,onVoucherPasswordChange:oe})=>{const{t:J}=Bn("common",{useSuspense:!1}),me=H=>{H&&(H.preventDefault(),H.stopPropagation()),f.trim()&&m(f,re||"")},F=()=>{T()};return g(Bi,{elevation:0,sx:{mt:3,p:2.5,border:"1px solid",borderColor:"divider",borderRadius:2,backgroundColor:"background.paper",position:"relative","&::before":{content:'""',position:"absolute",left:0,top:0,bottom:0,width:"4px",backgroundColor:"primary.main",borderRadius:"2px 0 0 2px"}},children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:2},children:[i(Ds,{sx:{color:"primary.main",fontSize:"1.75rem"}}),i(x,{variant:"h6",sx:{color:"text.primary",fontWeight:600,fontSize:"1.25rem",margin:0},children:J("checkout.voucher.title")})]}),_?i(xs,{in:!0,children:g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:V&&V(N)?"success.light":"warning.light",color:"white",p:2,borderRadius:1},children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1},children:[V&&V(N)?i(ys,{sx:{color:"white"}}):i(Ft,{title:te&&te(N),placement:"top",arrow:!0,sx:{"& .MuiTooltip-tooltip":{backgroundColor:"#333",color:"white",fontSize:"0.75rem"}},children:i(vs,{sx:{color:"white",cursor:"help"}})}),g(y,{children:[i(x,{sx:{fontWeight:500,color:"white"},children:J("checkout.voucher.applied",{code:f,discount:(N==null?void 0:N.discount_value)||0})}),!V||!V(N)?i(y,{sx:{color:"white",fontSize:"0.75rem",mt:.5},children:te&&te(N)}):null]})]}),i(zi,{onClick:F,size:"small",sx:{color:"white","&:hover":{backgroundColor:"rgba(255, 255, 255, 0.2)",color:"white"}},children:i(bs,{})})]})}):g(y,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:{xs:1.25,sm:1.5},alignItems:{xs:"stretch",sm:"flex-start"}}
2,children:[i(_e,{size:"small",placeholder:J("checkout.voucher.placeholder"),value:f,onChange:H=>W(H.target.value),error:!!k,helperText:k&&g(y,{sx:{display:"flex",alignItems:"center",gap:1},children:[i(x,{variant:"caption",color:"error",children:k}),k.includes("session")&&i(fe,{size:"small",variant:"text",color:"primary",onClick:()=>window.location.reload(),sx:{minWidth:"auto",fontSize:"0.7rem",textTransform:"none",p:.5},children:"Refresh Page"})]}),disabled:A,onKeyPress:H=>{H.key==="Enter"&&!A&&f.trim()&&me(H)},sx:{flex:{xs:"0 0 auto",sm:1},width:{xs:"100%",sm:"auto"},bgcolor:"white","& .MuiOutlinedInput-root":{"&:hover fieldset":{borderColor:"primary.main"}}},inputProps:{maxLength:50,autoComplete:"off"}}),i(_e,{size:"small",type:"password",placeholder:"Password",value:re||"",onChange:H=>oe&&oe(H.target.value),error:!!k&&k.includes("password"),helperText:k&&k.includes("password")?k:"The password can be found on your voucher",disabled:A,onKeyPress:H=>{H.key==="Enter"&&!A&&f.trim()&&me(H)},sx:{flex:{xs:"0 0 auto",sm:1},width:{xs:"100%",sm:"auto"},bgcolor:"white","& .MuiFormHelperText-root":{mx:0,mt:.75,lineHeight:1.35},"& .MuiOutlinedInput-root":{"&:hover fieldset":{borderColor:"primary.main"}}},inputProps:{maxLength:6,autoComplete:"new-password"}}),i(fe,{onClick:me,variant:"contained",disabled:A||!f.trim(),sx:{minWidth:{xs:"100%",sm:"120px"},alignSelf:{xs:"stretch",sm:"flex-start"},minHeight:40,bgcolor:"primary.main","&:hover":{bgcolor:"primary.dark"}},children:A?i(st,{size:24}):J("checkout.voucher.apply")})]})]})};zn.propTypes={voucherCode:h.string.isRequired,voucherApplied:h.bool.isRequired,voucherError:h.string,voucherLoading:h.bool.isRequired,onVoucherCodeChange:h.func.isRequired,onVoucherSubmit:h.func.isRequired,onVoucherRemove:h.func.isRequired,voucherDetails:h.object,isVoucherValidForCart:h.func,getVoucherInvalidReason:h.func,voucherPassword:h.string,onVoucherPasswordChange:h.func};const Ln=({open:f,email:_,secondsRemaining:k,onBack:A,onResend:W,resendDisabled:m,formatSeconds:T})=>g(ot,{open:f,onClose:A,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderRadius:3}},children:[g(lt,{sx:{textAlign:"center",pb:1},children:[i(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",mb:1.5},children:i("img",{src:"/img/logo.png",alt:"Logo",style:{height:48}})}),g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1},children:[i(y,{sx:{backgroundColor:"#E3F2FD",borderRadius:"50%",p:1.5,display:"flex",alignItems:"center",justifyContent:"center"},children:i(Tt,{sx:{fontSize:24,color:"#1976D2"}})}),i(x,{variant:"h6",component:"div",sx:{fontWeight:600},children:"Account Not Activated"})]})]}),i(ct,{children:g(y,{sx:{textAlign:"center"},children:[i(x,{variant:"body2",sx:{color:"#666",mb:2},children:"Your account is not active. Please check your email and confirm your account to complete the activation process."}),g(y,{sx:{backgroundColor:"#F5F5F5",borderRadius:1,p:2,mb:0,border:"1px solid #E0E0E0"},children:[i(x,{variant:"body2",sx:{color:"#666",mb:1},children:i("strong",{children:"What to do next:"})}),g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1,mb:1},children:[i(At,{sx:{fontSize:16,color:"#4CAF50"}}),i(x,{variant:"body2",sx:{color:"#666"},children:"Check your email inbox"})]}),g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1,mb:1},children:[i(At,{sx:{fontSize:16,color:"#4CAF50"}}),i(x,{variant:"body2",sx:{color:"#666"},children:"Click the activation link in the email"})]}),g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1},children:[i(At,{sx:{fontSize:16,color:"#4CAF50"}}),i(x,{variant:"body2",sx:{color:"#666"},children:"Return here to log in"})]})]})]})}),g(at,{sx:{justifyContent:"space-between",px:2,pb:2},children:[g(y,{sx:{position:"relative",display:"inline-flex"},children:[k>0&&i(ks,{label:`Resend available in ${T(k)}`,size:"small",sx:{position:"absolute",top:0,left:"50%",transform:"translate(-50%, 30%)",zIndex:1,pointerEvents:"none",backgroundColor:"#ffffff",color:"#6b7280",border:"1px solid #e5e7eb"}}),i(fe,{variant:"contained",disabled:m,onClick:W,sx:{backgroundColor:m?"#9e9e9e":"#1976D2","&:hover":{backgroundColor:m?"#9e9e9e":"#1565C0"},px:3,py:1.25,borderRadius:2,textTransform:"uppercase",fontWeight:600},children:"Resend Activation Email"})]}),i(fe,{onClick:A,variant:"outlined",children:"Got it"})]})]});
2Ln.propTypes={open:h.bool.isRequired,email:h.string,secondsRemaining:h.number.isRequired,onBack:h.func.isRequired,onResend:h.func.isRequired,resendDisabled:h.bool.isRequired,formatSeconds:h.func.isRequired};const $n=({open:f,onClose:_,onSuccess:k})=>{const[A,W]=l.useState(""),[m,T]=l.useState(""),[N,V]=l.useState(!1),[te,re]=l.useState(!1),[oe,J]=l.useState({open:!1,message:"",type:"error"}),[me,F]=l.useState(!1),[H,le]=l.useState(!1),[O,de]=l.useState(!1),[xe,ae]=l.useState({}),[j,C]=l.useState(0),[I,$]=l.useState(""),[Ge,Re]=l.useState(!1),[K,Fe]=l.useState("email"),[pe,X]=l.useState(null),Q=l.useRef(!1),{login:ze}=Wt(),B=R=>{if(!R)return R;const b=R.replace(/\D/g,"");return b.startsWith("27")&&b.length===11?`+27 ${b.substring(2,4)} ${b.substring(4,7)} ${b.substring(7)}`:b.startsWith("0")&&b.length===10?`+27 ${b.substring(1,3)} ${b.substring(3,6)} ${b.substring(6)}`:b.startsWith("27")&&b.length===11?`+27 ${b.substring(2,4)} ${b.substring(4,7)} ${b.substring(7)}`:b.length>=10?b.startsWith("44")?`+44 ${b.substring(2,6)} ${b.substring(6)}`:b.startsWith("1")&&b.length===11?`+1 (${b.substring(1,4)}) ${b.substring(4,7)}-${b.substring(7)}`:`+${b}`:R},Ci=()=>{J(R=>({...R,open:!1}))};l.useEffect(()=>{const R=setInterval(()=>{ae(b=>{const P={...b};let q=!1;return Object.keys(P).forEach(U=>{P[U]>0&&(P[U]=P[U]-1,q=!0),P[U]<=0&&(P[U]=0)}),q?P:b}),C(b=>Math.max(0,b-1))},1e3);return()=>clearInterval(R)},[]);const pi=R=>{const b=(R||"").trim().toLowerCase();return xe[b]||0},a=(R,b)=>{const P=(R||"").trim().toLowerCase();ae(q=>({...q,[P]:Math.max(0,parseInt(b||0,10))}))},Li=R=>{const b=Math.max(0,R|0),P=Math.floor(b/60).toString().padStart(2,"0"),q=(b%60).toString().padStart(2,"0");return`${P}:${q}`},M=async()=>{try{const R=await On(()=>import("./index-tAWMy1gn.js").then(b=>b.bx),__vite__mapDeps([0,1]));typeof R.clearSessionStorage=="function"&&R.clearSessionStorage()}catch{}try{localStorage.removeItem("access"),localStorage.removeItem("refresh")}catch{}},$i=R=>{R.preventDefault(),!(!A||!m||N)&&(V(!0),M(),G.post("/api/token/",{username:A,password:m}).then(b=>{var U,Ce;const P=(U=b==null?void 0:b.data)==null?void 0:U.access,q=(Ce=b==null?void 0:b.data)==null?void 0:Ce.refresh;return ze&&typeof ze=="function"&&(P||q)?ze(P,q):Promise.resolve()}).then(()=>{typeof k=="function"&&k()}).catch(b=>{var Ce,ye,D,Ze;const P=(ye=(Ce=b==null?void 0:b.response)==null?void 0:Ce.data)==null?void 0:ye.detail;let q="Login failed. Please check your credentials and try again.",U="error";if(P==="account_inactive"){F(!0);const be=(A||"").trim().toLowerCase();be&&G.post("/api/resend-activation/",{email:be,check_only:!0}).then(({data:Xe})=>{typeof(Xe==null?void 0:Xe.seconds_remaining)=="number"&&a(be,Xe.seconds_remaining)}).catch(()=>{})}else if(P==="incorrect_password"){const be=(D=b==null?void 0:b.response)==null?void 0:D.data,Xe=(be==null?void 0:be.mobile_number)||null;X(Xe),le(!0),Re(!1),$("");return}else typeof P=="string"?q=P:b.name==="QuotaExceededError"||(Ze=b.message)!=null&&Ze.includes("exceeded the quota")?q="Login failed because your browser storage is full. Please clear this site's cached data and try again.":b!=null&&b.message&&(q=`Login failed: ${b.message}`);P!=="account_inactive"&&J({open:!0,message:q,type:U})}).finally(()=>{V(!1)}))},Si=async()=>{var b,P;const R=(A||"").trim().toLowerCase();if(R&&!(pi(R)>0)){de(!0);try{const{data:q}=await G.post("/api/resend-activation/",{email:R}),U=typeof(q==null?void 0:q.seconds_remaining)=="number"?q.seconds_remaining:180;a(R,U),J({open:!0,message:"Activation email sent if account is inactive.",type:"success"})}catch(q){const U=(P=(b=q==null?void 0:q.response)==null?void 0:b.data)==null?void 0:P.seconds_remaining;typeof U=="number"&&a(R,U),J({open:!0,message:"Unable to resend right now.",type:"error"})}finally{de(!1)}}},De=async(R="email")=>{var b,P,q,U,Ce;if(!(!A||j>0)){de(!0);try{const ye=(A||"").trim(),{data:D}=await G.post("/api/send-login-pin/",{email:ye,delivery_method:R}),Ze=typeof(D==null?void 0:D.seconds_remaining)=="number"?D.seconds_remaining:180;C(Ze),Re(!0),Fe((D==null?void 0:D.delivery_method)||R),D!=null&&D.mobile_number&&X(D.mobile_number);const be=((D==null?void 0:D.delivery_method)||R)==="sms"?"mobile number":"email";J({open:!0,message:`PIN code sent to your ${be}!`,type:"success"})}catch(ye){const D=(P=(b=ye==null?void 0:ye.response)==null?void 0:b.data)==null?void 0:P.seconds_remaining;if(typeof D=="number"&&C(D),((q=ye==null?void 0:ye.response)==null?void 0:q.status)===429)J({open:!0,message:"Please wait before requesting another PIN code.",type:"warning"});else{const Ze=((Ce=(U=ye==null?void 0:ye.response)==null?void 0:U.data)==null?void 0:Ce.detail)||"Unable to send PIN code. Please try again.";J({open:!0,message:Ze,type:"error"})}}finally{de(!1)}}},di=async()=>{var R,b;if(!I||I.length!==6){J({open:!0,message:"Please enter a valid 6-digit PIN code.",type:"error"});return}if(!Q.current){Q.current=!0,V(!0);try{const P=await G.post("/api/verify-login-pin/",{email:(A||"").trim(),pin_code:String(I||"").trim()}),{access:q,refresh:U}=P.data||{};if(!q||!U)throw new Error("Login response missing tokens");
2await ze(q,U),Q.current=!1,J({open:!1,message:"",type:"success"}),le(!1),typeof k=="function"&&k()}catch(P){Q.current=!1;let q=(b=(R=P==null?void 0:P.response)==null?void 0:R.data)==null?void 0:b.detail;q||(ls(P)?q="PIN was accepted but browser storage is full. Clear this site's data and sign in again.":P!=null&&P.message&&!(P!=null&&P.response)?q=`Login failed: ${P.message}`:q="Invalid or expired PIN code"),J({open:!0,message:q,type:"error"})}finally{V(!1)}}};return g(Me,{children:[g(ot,{open:f,onClose:_,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderRadius:3,boxShadow:"0 8px 32px rgba(0,0,0,0.12)"}},children:[g(lt,{sx:{textAlign:"center",pb:1},children:[i(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",mb:1.5},children:i("img",{src:"/img/logo.png",alt:"Logo",style:{height:48}})}),i(x,{variant:"h6",component:"div",sx:{fontWeight:600},children:"Login to your account"})]}),i(ct,{children:g(y,{component:"form",onSubmit:$i,sx:{mt:1},children:[i(_e,{fullWidth:!0,margin:"normal",label:"Email",type:"email",value:A,onChange:R=>W(R.target.value),required:!0}),i(_e,{fullWidth:!0,margin:"normal",label:"Password",type:te?"text":"password",value:m,onChange:R=>T(R.target.value),required:!0,InputProps:{endAdornment:i(ws,{position:"end",children:i(zi,{onClick:()=>re(R=>!R),edge:"end","aria-label":"toggle password visibility",children:te?i(Ps,{}):i(Rs,{})})})}}),g(x,{variant:"body2",sx:{mt:1,color:"text.secondary"},children:["Forgot your password? ",i("a",{href:"/forgot-password",style:{color:"#1976D2"},children:"Reset it here"}),"."]})]})}),g(at,{sx:{px:3,pb:2},children:[i(fe,{onClick:_,disabled:N,children:"Cancel"}),i(fe,{onClick:$i,variant:"contained",disabled:N,sx:{minWidth:120},children:N?i(st,{size:20}):"Login"})]})]}),i(Ln,{open:me,email:A,secondsRemaining:pi(A),onBack:()=>F(!1),onResend:Si,resendDisabled:pi(A)>0||O,formatSeconds:Li}),g(ot,{open:H,onClose:()=>le(!1),maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderRadius:2,boxShadow:"0 8px 32px rgba(0,0,0,0.12)"}},children:[i(lt,{sx:{pb:2,pt:3},children:g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:2},children:[i(y,{sx:{backgroundColor:"#FFF9C4",borderRadius:"50%",width:"48px",height:"48px",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:i("span",{style:{fontSize:"24px"},children:"ð"})}),i(x,{variant:"h6",component:"div",sx:{fontWeight:600,color:"#333",fontSize:"20px"},children:"Incorrect Password"})]})}),i(ct,{sx:{textAlign:"center",pt:1},children:Ge?g(Me,{children:[g(x,{variant:"body1",sx:{mb:1,color:"#333",fontSize:"15px"},children:["PIN code sent to your ",K==="sms"?"mobile number":"email"]}),i(x,{variant:"body1",sx:{mb:3,color:"#1976D2",fontSize:"15px",fontWeight:600},children:K==="sms"?pe?B(pe):"Mobile":A}),i(x,{variant:"body2",sx:{mb:3,color:"#666",fontSize:"14px"},children:"Enter the 6-digit code below"}),i(y,{sx:{display:"flex",gap:1.5,justifyContent:"center",mb:2},children:[0,1,2,3,4,5].map(R=>i(_e,{id:`pin-input-${R}`,type:"text",inputMode:"numeric",value:I[R]||"",onChange:b=>{var q;const P=b.target.value.replace(/[^0-9]/g,"");if(P.length<=1){const U=I.split("");U[R]=P,$(U.join("")),P&&R<5&&((q=document.getElementById(`pin-input-${R+1}`))==null||q.focus())}},onKeyDown:b=>{var P;b.key==="Backspace"&&!I[R]&&R>0&&((P=document.getElementById(`pin-input-${R-1}`))==null||P.focus()),b.key==="Enter"&&I.length===6&&di()},onPaste:b=>{var U;b.preventDefault();const P=b.clipboardData.getData("text").replace(/[^0-9]/g,"").slice(0,6);$(P);const q=Math.min(P.length,5);(U=document.getElementById(`pin-input-${q}`))==null||U.focus()},autoFocus:R===0,variant:"outlined",sx:{width:"50px","& input":{fontSize:"24px",textAlign:"center",padding:"12px 0",fontWeight:600,color:"#333"},"& fieldset":{borderColor:"#ddd",borderWidth:"1px"},"& .MuiOutlinedInput-root:hover fieldset":{borderColor:"#1976D2"},"& .MuiOutlinedInput-root.Mui-focused fieldset":{borderColor:"#1976D2",borderWidth:"2px"}},inputProps:{maxLength:1,style:{textAlign:"center"}}},R))}),i(x,{variant:"body2",sx:{color:"#999",fontSize:"12px",mb:3},children:"Code expires in 15 minutes"}),g(y,{sx:{display:"flex",flexDirection:"column",gap:1,alignItems:"center"},children:[g(x,{variant:"body2",sx:{color:"#666",fontSize:"13px"},children:["Didn't receive the code?"," ",i(rt,{component:"button",onClick:()=>De(K),disabled:j>0,sx:{color:j>0?"#aaa":"#1976D2",textDecoration:"none",cursor:j>0?"not-allowed":"pointer","&:hover":{textDecoration:j>0?"none":"underline"}},children:j>0?`Wait ${Li(j)}`:"Resend PIN"})]}),j===0&&g(x,{variant:"body2",sx:{color:"#999",fontSize:"12px"},children:["Or try"," ",i(rt,{component:"button",onClick:()=>De(K==="email"?"sms":"email"),sx:{color:"#1976D2",textDecoration:"none",cursor:"pointer","&:hover":{textDecoration:"underline"}},children:K==="email"?"SMS":"Email"})]})]})]}):g(Me,{children:[i(x,{variant:"body1",sx:{mb:3,color:"#666"},children:"The password you entered is incorrect. To verify your identity and help secure your account, we can send a PIN code to your email or mobile number."}),i(x,{variant:"body2",sx:{color:"#666",mb:3},children:"Choose how you'd like to receive your 6-digit PIN code."}),g(y,{sx:{display:"flex",gap:2,justifyContent:"center",mb:3},children:[i(fe,{variant:"contained",startIcon:i(Tt,{}),onClick:()=>De("email"),disabled:O||j>0,sx:{backgroundColor:"#1976D2","&:hover":{backgroundColor:"#1565C0"},minWidth:"180px"},children:j>0?`Wait ${Math.ceil(j/60)}m ${j%60}s`:"Send via Email"}),i(fe,{variant:"outlined",startIcon:i(Mn,{}),onClick:()=>De("sms"),disabled:O||j>0,sx:{borderColor:"#1976D2",color:"#1976D2","&:hover":{borderColor:"#1565C0",backgroundColor:"rgba(25, 118, 210, 0.04)"},minWidth:"180px"},children:j>0?`Wait ${Math.ceil(j/60)}m ${j%60}s`:"Send via SMS"})]}),g(x,{variant:"body2",sx:{color:"#999",fontSize:"12px",mb:1},children:["Already have a PIN?"," ",i(rt,{component:"button",onClick:()=>
2Re(!0),sx:{color:"#F57C00",textDecoration:"none","&:hover":{textDecoration:"underline"}},children:"Enter PIN now"})]}),g(x,{variant:"body2",sx:{color:"#999",fontSize:"12px"},children:["Need to reset your password?"," ",i(rt,{href:"/forgot-password",sx:{color:"#F57C00",textDecoration:"none","&:hover":{textDecoration:"underline"}},children:"Click here"})]})]})}),i(at,{sx:{justifyContent:"center",pb:3,pt:1,gap:1},children:Ge?g(Me,{children:[i(fe,{variant:"contained",disabled:I.length!==6||N,onClick:di,sx:{backgroundColor:I.length===6?"#F57C00":"#9e9e9e","&:hover":{backgroundColor:I.length===6?"#EF6C00":"#9e9e9e"},px:3,py:1.25,borderRadius:2,textTransform:"none",fontWeight:600},children:N?"Verifying...":"Verify PIN"}),i(fe,{variant:"text",onClick:()=>{le(!1),Re(!1),$("")},children:"Cancel"})]}):g(Me,{children:[g(y,{sx:{display:"flex",gap:2,width:"100%",justifyContent:"center"},children:[i(fe,{variant:"contained",startIcon:i(Tt,{}),disabled:O||j>0,onClick:()=>De("email"),sx:{backgroundColor:"#1976D2","&:hover":{backgroundColor:"#1565C0"},px:3,py:1.25,borderRadius:2,textTransform:"none",fontWeight:600,minWidth:"180px"},children:j>0?`Wait ${Math.ceil(j/60)}m ${j%60}s`:O?"Sending...":"Send via Email"}),i(fe,{variant:"outlined",startIcon:i(Mn,{}),disabled:O||j>0,onClick:()=>De("sms"),sx:{borderColor:"#1976D2",color:"#1976D2","&:hover":{borderColor:"#1565C0",backgroundColor:"rgba(25, 118, 210, 0.04)"},px:3,py:1.25,borderRadius:2,textTransform:"none",fontWeight:600,minWidth:"180px"},children:j>0?`Wait ${Math.ceil(j/60)}m ${j%60}s`:O?"Sending...":"Send via SMS"})]}),i(fe,{variant:"text",onClick:()=>{le(!1),Re(!1),$("")},children:"Cancel"})]})})]}),i(ss,{open:oe.open,autoHideDuration:6e3,onClose:Ci,anchorOrigin:{vertical:"top",horizontal:"center"},sx:{zIndex:1e4},children:i(os,{onClose:Ci,severity:oe.type,sx:{width:"100%"},children:oe.message})})]})};$n.propTypes={open:h.bool.isRequired,onClose:h.func.isRequired,onSuccess:h.func};const Vn=({formData:f,setFormData:_,emailExistsError:k,setEmailExistsError:A})=>{const W=l.useRef(null),m=l.useCallback(T=>{var V;const N=(((V=T==null?void 0:T.target)==null?void 0:V.value)||"").trim();_(te=>({...te,email:N})),A(null),W.current&&clearTimeout(W.current),N&&(W.current=setTimeout(async()=>{var te;try{const re=await G.get(`/api/check-email/?email=${encodeURIComponent(N)}`);(te=re==null?void 0:re.data)!=null&&te.exists?A({message:"Account exists. Please login to continue.",login_url:re.data.login_url||"/login/"}):A(null)}catch{}},400))},[_,A]);return g(Me,{children:[i(L,{item:!0,xs:12,children:g(y,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:1,mt:0,p:1,pl:2,borderRadius:1,backgroundColor:"grey.100"},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold"},children:"ð¤"}),i(x,{variant:"h6",sx:{mb:0,color:"black",fontWeight:600,fontSize:"1.25rem",textAlign:"left"},children:"Personal Information"})]})}),i(y,{sx:{p:2,pt:1},children:g(L,{container:!0,spacing:2,children:[i(L,{item:!0,xs:12,sm:4,children:g(ut,{fullWidth:!0,required:!0,children:[i(Ot,{id:"checkout-title-label",children:"Title"}),g(zt,{labelId:"checkout-title-label",name:"title",label:"Title",value:f.title||"",onChange:T=>_(N=>({...N,title:T.target.value})),children:[i(se,{value:"Mr",children:"Mr"}),i(se,{value:"Mrs",children:"Mrs"}),i(se,{value:"Ms",children:"Ms"}),i(se,{value:"Miss",children:"Miss"}),i(se,{value:"Mx",children:"Mx"}),i(se,{value:"Dr",children:"Dr"}),i(se,{value:"Prof",children:"Prof"}),i(se,{value:"Rev",children:"Rev"}),i(se,{value:"Capt",children:"Captain"}),i(se,{value:"Col",children:"Colonel"}),i(se,{value:"Sir",children:"Sir"}),i(se,{value:"Lady",children:"Lady"}),i(se,{value:"Hon",children:"Honorable"}),i(se,{value:"Adv",children:"Advocate"})]})]})}),i(L,{item:!0,xs:12,sm:4,children:i(_e,{fullWidth:!0,name:"firstName",label:"First Name",defaultValue:f.firstName||"",required:!0,variant:"outlined",InputLabelProps:{shrink:!0},inputProps:{maxLength:150}})}),i(L,{item:!0,xs:12,sm:4,children:i(_e,{fullWidth:!0,name:"lastName",label:"Last Name",defaultValue:f.lastName||"",required:!0,variant:"outlined",InputLabelProps:{shrink:!0},inputProps:{maxLength:150}})}),i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,name:"email",label:"Email",type:"email",defaultValue:f.email||"",onChange:m,required:!0,variant:"outlined",InputLabelProps:{shrink:!0},inputProps:{maxLength:254},error:!!k,helperText:k?g("span",{children:[k.message," ",i("a",{href:k.login_url,children:"Login"})]}):""})}),i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,name:"phone",label:"Phone",defaultValue:f.phone||"",onChange:T=>_(N=>({...N,phone:T.target.value})),required:!0,variant:"outlined",InputLabelProps:{shrink:!0},inputProps:{maxLength:50},helperText:"Required for order processing"})})]})})]})};Vn.propTypes={formData:h.object.isRequired,setFormData:h.func.isRequired,emailExistsError:h.object,setEmailExistsError:h.func.isRequired};const jn=({formData:f,setFormData:_,expanded:k,setExpanded:A})=>g(Me,{children:[i(L,{item:!0,xs:12,children:g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2,mt:1,p:1,pl:2,borderRadius:1,backgroundColor:"grey.100",cursor:"pointer","&:hover":{backgroundColor:"primary.light",transition:"background-color 0.2s"}},onClick:()=>A(!k),children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1.5},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold"},children:"ð¢"}),i(x,{variant:"h6",sx:{mb:0,color:"black",fontWeight:600,fontSize:"1.25rem"},children:"Company Details (if applicable)"})]}),i(zi,{size:"small",sx:{color:"text.secondary",transform:k?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"},children:i(Nt,{})})]})}),i(Is,{in:k,children:g(L,{container:!0,spacing:2,sx:{mb:1,p:2,pt:1},children:[i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,label:"Company Name",name:"companyName",value:f.companyName,onChange:W=>_(m=>({...m,companyName:W.target.value}))})}),i(L,{item:!0,xs:12,sm:6,children:g(ut,{fullWidth:!0,children:[i(Ot,{children:"Business Type"}),g(zt,{name:"businessType",value:f.businessType||"",onChange:W=>_(m=>({...m,businessType:W.target.value})),label:"Business Type",children:[i(se,{value:"",children:"Select Business Type"}),i(se,{value:"Pty Ltd",children:"Pty Ltd"}),i(se,{value:"CC",children:"CC"}),i(se,{value:"Sole Trader",children:"Sole Trader"}),i(se,{value:"Partnership",children:"Partnership"})]})]})}),i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,label:"VAT/Tax Number",name:"vatNumber",value:f.vatNumber,onChange:W=>_(m=>({...m,vatNumber:W.target.value}))})}),i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,label:"Company Registration Number",name:"companyRegNumber",value:f.companyRegNumber,onChange:W=>_(m=>({...m,companyRegNumber:W.target.value}))})}),i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,label:"Position in Company",name:"position",value:f.position,onChange:W=>_(m=>({...m,position:W.target.value}))})}),i(L,{item:!0,xs:12,sm:6,children:i(_e,{fullWidth:!0,label:"Person Responsible for Payment",name:"paymentPerson",value:f.paymentPerson,onChange:W=>_(m=>({...m,paymentPerson:W.target.value}))})})]})})]});jn.propTypes={formData:h.object.isRequired,setFormData:h.func.isRequired,expanded:h.bool.isRequired,setExpanded:h.func.isRequired};const Un=({formData:f,setFormData:_,shopData:k,setVoucherApplied:A,setVoucherDetails:W,setVoucherError:m})=>{var re,oe,J,me,F,H;const T={border:"1px solid #d6d6d6",borderRadius:1,overflow:"hidden",backgroundColor:"#ffffff"},N=(le,O=!1,de=!1)=>
2({cursor:O?"not-allowed":"pointer",backgroundColor:le?"#f0f7ff":"transparent",py:2,px:1,borderBottom:de?"1px solid #e0e0e0":"none",borderLeft:"4px solid",borderLeftColor:le?"primary.main":"transparent",transition:"all 0.2s ease",opacity:O?.5:1}),V={m:0,width:"100%",alignItems:"center",".MuiFormControlLabel-label":{mt:0,ml:1}},te=le=>{const O=document.forms.checkoutForm,de=le.target.value;_(xe=>{var ae;return{...xe,paymentMethod:de,userSelectedPaymentMethod:!0,additionalInstructions:((ae=O==null?void 0:O.elements.additionalInstructions)==null?void 0:ae.value)||xe.additionalInstructions||""}}),de==="quote"&&(A(!1),W(null),m(""),_(xe=>({...xe,voucherCode:""})))};return i(y,{sx:{mt:0},children:g(ut,{component:"fieldset",sx:{width:"100%"},children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:2,mt:0,p:0,borderRadius:1},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold",lineHeight:1},children:"ð³"}),i(x,{component:"h2",variant:"h6",sx:{m:0,color:"black",fontWeight:600,fontSize:"1.25rem",lineHeight:"32px"},children:"Checkout Options"})]}),i(y,{sx:{border:"1px solid #cfd8dc",borderRadius:1,p:2,backgroundColor:"#f9f9f9"},children:i(As,{name:"paymentMethod",value:f.paymentMethod||"gateway",onChange:te,children:g(y,{sx:T,children:[((re=k==null?void 0:k.payment)==null?void 0:re.gateway_enabled)!==!1&&i(y,{sx:N(f.paymentMethod==="gateway",f.quoteForced,((oe=k==null?void 0:k.payment)==null?void 0:oe.order_enabled)!==!1||((J=k==null?void 0:k.payment)==null?void 0:J.quote_enabled)!==!1),children:i(Oi,{value:"gateway",control:i(Et,{disabled:f.quoteForced}),label:g(y,{children:[i(x,{sx:{mt:-.5,ml:1,fontWeight:700},children:"Secure Payment Gateway"}),i(x,{variant:"body2",color:"text.secondary",sx:{ml:1,fontSize:"0.875rem"},children:"Credit/Debit Card, Apple Pay or Google Pay via Yoco Payment Platform"})]}),disabled:f.quoteForced,sx:V})}),((me=k==null?void 0:k.payment)==null?void 0:me.order_enabled)!==!1&&i(y,{sx:N(f.paymentMethod==="order",f.quoteForced,((F=k==null?void 0:k.payment)==null?void 0:F.quote_enabled)!==!1),children:i(Oi,{value:"order",control:i(Et,{disabled:f.quoteForced}),label:g(y,{children:[i(x,{sx:{mt:-.5,ml:1,fontWeight:700},children:"Create Order (Offline EFT)"}),i(x,{variant:"body2",color:"text.secondary",sx:{ml:1,fontSize:"0.875rem"},children:"Our Sales Team will process your Order and contact you as soon as possible."})]}),disabled:f.quoteForced,sx:V})}),((H=k==null?void 0:k.payment)==null?void 0:H.quote_enabled)!==!1&&i(y,{sx:N(f.paymentMethod==="quote"),children:i(Oi,{value:"quote",control:i(Et,{}),label:g(y,{children:[i(x,{sx:{mt:-.5,ml:1,fontWeight:700},children:"Quote"}),i(x,{variant:"body2",color:"text.secondary",sx:{ml:1,fontSize:"0.875rem"},children:"Our Sales Team will contact you regarding your inquiry as soon as possible."})]}),sx:V})})]})})})]})})};Un.propTypes={formData:h.object.isRequired,setFormData:h.func.isRequired,shopData:h.object,setVoucherApplied:h.func.isRequired,setVoucherDetails:h.func.isRequired,setVoucherError:h.func.isRequired};const Gn=({onRecaptchaChange:f,recaptchaError:_})=>g(y,{sx:{mt:2},children:[i(y,{sx:{display:"flex",justifyContent:"center"},children:i(as,{sitekey:cs,onChange:f})}),_&&g(y,{sx:{mt:2,p:2,borderRadius:1,backgroundColor:"#FFF1F0",border:"1px solid #FFB4B4",display:"flex",alignItems:"center",justifyContent:"center",gap:1},children:[i(y,{component:"span",sx:{display:"flex",alignItems:"center",color:"#FF4D4F",fontSize:"1.2rem"},children:"!"}),i(x,{variant:"body2",sx:{color:"#CF1322",fontWeight:500,textAlign:"center"},children:_})]})]});Gn.propTypes={onRecaptchaChange:h.func.isRequired,recaptchaError:h.string};const Lt=({formData:f,loading:_,isCalculatingShipping:k,isAuthorized:A,onOnlyConfirmationOutstanding:W,needsCourierServiceSelection:m,isCourierShippingQuoteCurrent:T})=>{const[N,V]=l.useState(!1),te=_||k||m||f.shipping_method==="courier"&&!f.confirmShippingAddress||!A&&!f.recaptchaToken||f.shipping_method==="courier"&&f.confirmShippingAddress&&!f.quoteForced&&!T||f.shipping_method==="courier"&&f.confirmShippingAddress&&!f.quoteForced&&f.calculated_shipping_cost===void 0,oe=(()=>{const F=[];if(_&&F.push("Order is being processed"),k&&F.push("Shipping cost is still being calculated"),m&&F.push("Please select a courier service option"),A?f.phone||F.push("Phone number is required"):(f.firstName||F.push("First name is required"),f.lastName||F.push("Last name is required"),f.email||F.push("Email is required"),f.phone||F.push("Phone number is required"),f.recaptchaToken||F.push("Please complete reCAPTCHA")),f.paymentMethod||F.push("Please select a payment method"),f.shipping_method==="courier"&&(f.confirmShippingAddress||F.push("Please confirm delivery to the selected address"),f.confirmShippingAddress&&!f.quoteForced&&!T&&F.push("Shipping has not finished recalculating for this address yet"),f.confirmShippingAddress&&!f.quoteForced&&f.calculated_shipping_cost===void 0)){const H=!!f.shippingStreet,le=!!f.shippingCity;!H&&!le?F.push("Enter delivery street and city to calculate shipping"):H?le?F.push("Shipping has not finished calculating yet"):F.push("Enter delivery city to calculate shipping"):F.push("Enter delivery street to calculate shipping")}return F})(),J=oe.length>0?oe:["Please complete the required checkout information"],me=()=>{if(J.length===1&&J[0]==="Please confirm delivery to the selected address"&&W){W();return}V(!0)};return g(y,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",mt:4,mb:2},children:[f.shipping_method==="courier"&&f.quoteForced&&i(x,{variant:"body2",color:"warning.main",sx:{mb:2,fontWeight:"bold",textAlign:"center"},children:"This delivery address requires a quote"}),g(y,{sx:{cursor:te?"not-allowed":"default",position:"relative",minWidth:"200px"},children:[te&&i(y,{onClick:me,sx:{position:"absolute",inset:0,zIndex:2,cursor:"not-allowed"}}),i(fe,{type:"submit",variant:"contained",size:"large",disabled:te,sx:{minWidth:"200px",py:1.5,bgcolor:qt,"&:hover":{bgcolor:qt},"&:disabled":{bgcolor:"grey.300",color:"grey.500"}},children:_?i(st,{size:24}):k?g(Me,{children:[i(st,{size:20,sx:{mr:1}}),"Calculating Shipping..."]}):f.paymentMethod==="quote"?"Submit Quote":"Place Order"})]}),g(ot,{open:N,onClose:()=>V(!1),children:[i(lt,{children:"Complete These Items"}),i(ct,{children:J.map(F=>i(x,{sx:{mb:1},children:`⢠${F}`},F))}),i(at,{children:i(fe,{onClick:()=>V(!1),children:"Close"})})]})]})};Lt.propTypes={formData:h.object.isRequired,loading:h.bool.isRequired,isCalculatingShipping:h.bool.isRequired,isAuthorized:h.bool.isRequired,onOnlyConfirmationOutstanding:h.func,needsCourierServiceSelection:h.bool,isCourierShippingQuoteCurrent:h.bool};Lt.defaultProps={needsCourierServiceSelection:!1,isCourierShippingQuoteCurrent:!0};const Hn=({onLoginClick:f})=>i(L,{item:!0,xs:12,children:i(y,{sx:{backgroundColor:"#E3F2FD",border:"1px solid #90CAF9",color:"#0D47A1",borderRadius:2,p:2.5,mb:0,display:"flex",alignItems:"center",justifyContent:"center",gap:1},children:g(x,{variant:"body1",sx:{fontWeight:600},children:["Already a Merrypak customer?"," ",i("button",{type:"button",onClick:f,style:{color:"#1976D2",textDecoration:"underline"},children:"Click here to login"}),"."]})})});Hn.propTypes={onLoginClick:h.func.isRequired};const $t=({deliveryAddresses:f,selectedAddressId:_,setSelectedAddressId:k,setIsManualAddressEntry:A,onAddressChange:W,formData:m,onFormDataChange:T,isAuthorized:N,shippingOptionsComponent:V,confirmationCheckboxRef:te,highlightConfirmationBlock:re,onShippingConsentChange:oe})=>{const{profile:J}=Wt(),me=N&&f.length===0,[F,H]=l.useState({shipping:me,billing:!1}),[le,O]=l.useState({shipping:!1,billing:!1}),de=l.useRef(!1);l.useEffect(()=>{const C=N&&f.length===0,I=N&&f.length>0;le.shipping||(C&&!F.shipping?H($=>({...$,shipping:!0})):I&&F.shipping&&H($=>({...$,shipping:!1})))}
2,[N,f.length,F.shipping,le.shipping]);const xe=C=>{O(I=>({...I,[C]:!0})),H(I=>({...I,[C]:!I[C]}))};l.useEffect(()=>{var C,I,$,Ge,Re,K,Fe,pe;if(!de.current&&_&&_&&f.length>0&&m.shipping_method==="courier"){de.current=!0;const X=f.find(Q=>String(Q.id)===String(_));if(X&&W){const Q={shippingStreet:((C=X.street)==null?void 0:C.trim())||"",shippingSuburb:((I=X.suburb)==null?void 0:I.trim())||"",shippingCity:(($=X.city)==null?void 0:$.trim())||"",shippingProvince:((Ge=X.province)==null?void 0:Ge.trim())||"",shippingPostalCode:((Re=X.postal_code)==null?void 0:Re.trim())||"",shippingUnit:((K=X.unit)==null?void 0:K.trim())||"",shippingBuilding:((Fe=X.building)==null?void 0:Fe.trim())||"",shippingCountry:((pe=X.country)==null?void 0:pe.trim())||"South Africa",additionalInstructions:X.additional_instructions||"",shipping_latitude:X.latitude?parseFloat(X.latitude):null,shipping_longitude:X.longitude?parseFloat(X.longitude):null,shipping_zoom:X.zoom?parseInt(X.zoom):13};Q.shippingStreet&&Q.shippingSuburb&&Q.shippingCity&&(T(B=>({...B,...Q})),W(Q))}}},[_,f.length]);const ae=f.find(C=>String(C.id)===String(_)),j=C=>C?[C.unit&&`Unit ${C.unit}`,C.building,C.street,C.suburb,C.city,C.province,C.postal_code,C.country].filter(Boolean).join(", "):"No address selected";return g(y,{sx:{display:"flex",flexDirection:"column",gap:2},children:[g(Bi,{elevation:2,sx:{p:2,bgcolor:"#f8f9fa",border:"1px solid #e9ecef"},children:[(()=>{const C=window.checkoutProfileData||J;return C&&(C.company_name||C.tax_number||C.position||C.department||C.payment_person||C.business_type||C.company_reg_number||C.contact_person)?g(Me,{children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:2,p:1,pl:2,borderRadius:1,backgroundColor:"grey.100"},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold"},children:"ð¢"}),i(x,{variant:"h6",sx:{mb:0,color:"black",fontWeight:600,fontSize:"1.25rem",textAlign:"left"},children:"Company Information"})]}),i(y,{sx:{p:2,pt:1,mb:2},children:g(L,{container:!0,spacing:2,children:[(C.company_name||C.business_type)&&i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Company Name"}),g(x,{variant:"body2",sx:{fontWeight:"bold"},children:[C.company_name,C.business_type&&` (${C.business_type})`]})]})}),C.company_reg_number&&i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Company Registration Number"}),i(x,{variant:"body2",sx:{fontWeight:"bold"},children:C.company_reg_number})]})}),C.contact_person&&i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Contact Person"}),i(x,{variant:"body2",sx:{fontWeight:"bold"},children:C.contact_person})]})}),(C.position||C.department)&&i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Position & Department"}),i(x,{variant:"body2",sx:{fontWeight:"bold"}
2,children:[C.position,C.department].filter(Boolean).join(" - ")})]})}),C.tax_number&&i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"VAT Number"}),i(x,{variant:"body2",sx:{fontWeight:"bold"},children:C.tax_number})]})}),C.payment_person&&i(L,{item:!0,xs:12,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Person Responsible for Payment"}),i(x,{variant:"body2",sx:{fontWeight:"bold"},children:C.payment_person})]})})]})})]}):null})(),g(y,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:2,p:1,pl:2,borderRadius:1,backgroundColor:"grey.100"},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold"},children:"ð¤"}),i(x,{variant:"h6",sx:{mb:0,color:"black",fontWeight:600,fontSize:"1.25rem",textAlign:"left"},children:"Personal Information"})]}),i(y,{sx:{p:2,pt:1},children:g(L,{container:!0,spacing:2,children:[i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Full Name"}),i(x,{variant:"body2",sx:{fontWeight:500},children:m.title?`${m.title} ${m.firstName} ${m.lastName}`:`${m.firstName} ${m.lastName}`})]})}),i(L,{item:!0,xs:12,sm:6,children:g(y,{children:[i(x,{variant:"caption",color:"text.secondary",sx:{fontWeight:500},children:"Email"}),i(x,{variant:"body2",sx:{fontWeight:500},children:m.email})]})}),i(L,{item:!0,xs:12,sx:{mt:2,mb:1},children:i(y,{sx:{display:"flex",justifyContent:"left"},children:i(_e,{label:"Phone Number",name:"phone",value:m.phone||"",onChange:C=>T({...m,phone:C.target.value}),placeholder:"Enter your phone number",required:!0,InputLabelProps:{required:!0},inputProps:{maxLength:50,style:{textAlign:"left"}},variant:"outlined",sx:{width:{xs:"100%",sm:"300px"},"& .MuiOutlinedInput-root":{backgroundColor:"white",borderRadius:2,"& fieldset":{borderColor:"#d0d7de",borderWidth:"1px"},"&:hover fieldset":{borderColor:"#1976d2"},"&.Mui-focused fieldset":{borderColor:"#1976d2",borderWidth:"2px"}},"& .MuiInputLabel-root":{color:"#656d76","&.Mui-focused":{color:"#1976d2"}}}})})})]})})]}),V,m.shipping_method==="courier"&&i(Bi,{elevation:2,sx:{bgcolor:"#f8f9fa",border:"1px solid #e9ecef"},children:g(y,{sx:{p:2},children:[g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2,p:1,pl:2,borderRadius:1,backgroundColor:"grey.100"},children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap"},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold"},children:"ð"}),i(x,{variant:"h6",sx:{color:"black",fontWeight:600,fontSize:"1.25rem",margin:0},children:"Shipping Address"}),i(x,{variant:"body2",color:"text.secondary",sx:{fontWeight:700,fontSize:"1rem"},children:"Please complete for courier calculation"})]}),i(Ft,{title:F.shipping?"Collapse Address Form":"Expand Address Form",children:i(zi,{size:"small",onClick:()=>xe("shipping"),sx:{bgcolor:"white",border:"1px solid #ddd","&:hover":{bgcolor:"#f5f5f5"}},children:i(Nt,{fontSize:"small",sx:{transform:F.shipping?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}})})})]}),!F.shipping&&i(y,{sx:{mb:0},children:f.length>0?g(Me,{children:[g(ut,{fullWidth:!0,size:"small",children:[i(Ot,{children:"Select Delivery Address"}),i(zt,{value:_||"",onChange:C=>{var Ge,Re,K,Fe,pe,X,Q,ze;const I=C.target.value;if(!I&&_)return;A&&A(!1),k(I);const $=f.find(B=>String(B.id)===String(I));if($){const B={shippingStreet:((Ge=$.street)==null?void 0:Ge.trim())||"",shippingSuburb:((Re=$.suburb)==null?void 0:Re.trim())||"",shippingCity:((K=$.city)==null?void 0:K.trim())||"",shippingProvince:((Fe=$.province)==null?void 0:Fe.trim())||"",shippingPostalCode:((pe=$.postal_code)==null?void 0:pe.trim())||"",shippingUnit:((X=$.unit)==null?void 0:X.trim())||"",shippingBuilding:((Q=$.building)==null?void 0:Q.trim())||"",shippingCountry:((ze=$.country)==null?void 0:ze.trim())||"South Africa",additionalInstructions:$.additional_instructions||"",shipping_latitude:$.latitude?parseFloat($.latitude):null,shipping_longitude:$.longitude?parseFloat($.longitude):null,shipping_zoom:$.zoom?parseInt($.zoom):13},Ci=B.shippingStreet&&B.shippingCity;console.log("ð CompactCheckoutForm: Address completeness check:",{hasRequiredFields:Ci,street:!!B.shippingStreet,suburb:!!B.shippingSuburb,city:!!B.shippingCity,province:!!B.shippingProvince,postalCode:!!B.shippingPostalCode,fullAddressData:B}),T(pi=>({...pi,...B})),typeof W=="function"?(console.log("ð CompactCheckoutForm: Calling onAddressChange with addressData:",B),console.log("ð CompactCheckoutForm: Address data keys:",Object.keys(B)),console.log("ð CompactCheckoutForm: Address data values:",{shippingStreet:B.shippingStreet,shippingSuburb:B.shippingSuburb,shippingCity:B.shippingCity,shippingProvince:B.shippingProvince,shippingPostalCode:B.shippingPostalCode,shippingUnit:B.shippingUnit,shippingCountry:B.shippingCountry}),setTimeout(()=>{W(B)},50)):console.log("â CompactCheckoutForm: onAddressChange is not a function:",typeof W)}else W()},label:"Select Delivery Address",sx:{backgroundColor:"white","& .MuiOutlinedInput-notchedOutline":{borderColor:"#e0e0e0"},"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#1976d2"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#1976d2"}},children:f.map(C=>i(se,{value:C.id,children:j(C)},C.id))})]}),ae&&ae.additional_instructions&&g(x,{variant:"caption",color:"text.secondary",component:"div",sx:{dis
2play:"block",mt:1,fontStyle:"italic",color:"#666",fontSize:"0.75rem"},children:["Note: ",ae.additional_instructions]})]}):i(y,{sx:{p:2,bgcolor:"#fff3cd",border:"1px solid #ffeaa7",borderRadius:1,textAlign:"center"},children:i(x,{variant:"body2",color:"#856404",component:"div",children:"No delivery addresses found. Please add a shipping address below."})})}),F.shipping&&i(y,{sx:{mt:2,p:2,bgcolor:"white",borderRadius:1,border:"1px solid #e0e0e0"},children:i(_s,{isAuthorized:N,deliveryAddresses:f,selectedAddressId:_,setSelectedAddressId:C=>{console.log("ð CompactCheckoutForm setSelectedAddressId called with:",C),console.log("ð Current selectedAddressId before change:",_),k(C),W()},setIsManualAddressEntry:A,formData:m,setFormData:T,onFormDataChange:T,onAddressChange:W,zoom:m.shipping_zoom,latitude:m.shipping_latitude,longitude:m.shipping_longitude,compact:!0})})]})}),m.shipping_method==="courier"&&i(y,{ref:te,sx:{display:"flex",justifyContent:"center",p:2,bgcolor:"grey.50",borderRadius:1,border:"1px solid",borderColor:re?"warning.main":"grey.200",boxShadow:re?"0 0 0 3px rgba(255, 193, 7, 0.35)":"none",transition:"box-shadow 0.25s ease, border-color 0.25s ease",animation:re?"confirmPulse 0.6s ease-in-out 4":"none","@keyframes confirmPulse":{"0%":{boxShadow:"0 0 0 0 rgba(255, 193, 7, 0.0)"},"50%":{boxShadow:"0 0 0 4px rgba(255, 193, 7, 0.35)"},"100%":{boxShadow:"0 0 0 0 rgba(255, 193, 7, 0.0)"}}},children:i(Oi,{control:i(Fn,{checked:m.confirmShippingAddress||!1,onChange:C=>{oe(C.target.checked)},color:"primary",size:"large"}),label:i(x,{variant:"body1",sx:{fontWeight:500},children:"I confirm this delivery address is correct. Calculate shipping for this address."}),sx:{m:0,"& .MuiFormControlLabel-label":{fontSize:"1rem"}}})}),i(Bi,{elevation:2,sx:{bgcolor:"#f8f9fa",border:"1px solid #e9ecef"},children:g(y,{sx:{p:2},children:[g(y,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2,p:1,pl:2,borderRadius:1,backgroundColor:"grey.100"},children:[g(y,{sx:{display:"flex",alignItems:"center",gap:1.5},children:[i(y,{sx:{fontSize:"1.5rem",color:"primary.main",display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",fontWeight:"bold"},children:"ð "}),i(x,{variant:"h6",sx:{color:"black",fontWeight:600,fontSize:"1.25rem",margin:0},children:"Billing Address"})]}),i(Ft,{title:F.billing?"Collapse Billing Form":"Expand Billing Form",children:i(zi,{size:"small",onClick:()=>xe("billing"),sx:{bgcolor:"white",border:"1px solid #ddd","&:hover":{bgcolor:"#f5f5f5"}},children:i(Nt,{fontSize:"small",sx:{transform:F.billing?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}})})})]}),i(Oi,{control:i(Fn,{checked:m.sameAsShipping||!1,name:"sameAsShipping",onChange:C=>T({...m,sameAsShipping:C.target.checked}),size:"small"}),label:"Same as shipping address"}),!F.billing&&i(y,{sx:{mt:1,p:1,bgcolor:"white",borderRadius:1,border:"1px solid #e0e0e0"},children:g(x,{variant:"body2",color:"text.secondary",component:"div",children:[i("strong",{children:"Billing to:"})," ",m.sameAsShipping?j({unit:m.shippingUnit,building:m.shippingBuilding,street:m.shippingStreet,suburb:m.shippingSuburb,city:m.shippingCity,province:m.shippingProvince,postal_code:m.shippingPostalCode,country:m.shippingCountry}):m.billingStreet?j({unit:m.billingUnit,building:m.billingBuilding,street:m.billingStreet,suburb:m.billingSuburb,city:m.billingCity,province:m.billingProvince,postal_code:m.billingPostalCode,country:m.billingCountry}):"Please enter billing address"]})}),F.billing&&i(y,{sx:{mt:1,p:2,bgcolor:"white",borderRadius:1,border:"1px solid #e0e0e0"},children:i(Cs,{formData:m,setFormData:T,hideCheckbox:!0,selectedAddressId:_,deliveryAddresses:f})})]})})]})};$t.propTypes={deliveryAddresses:h.arrayOf(h.shape({id:h.oneOfType([h.string,h.number]).isRequired,street:h.string,unit:h.string,suburb:h.string,city:h.string,province:h.string,postal_code:h.string,country:h.string,latitude:h.string,longitude:h.string,zoom:h.oneOfType([h.string,h.number]),additional_instructions:h.string})).isRequired,selectedAddressId:h.oneOfType([h.string,h.number]),setSelectedAddressId:h.func.isRequired,setIsManualAddressEntry:h.func,onAddressChange:h.func.isRequired,formData:h.shape({title:h.string,firstName:h.string,lastName:h.string,email:h.string,phone:h.string,
2shippingStreet:h.string,shippingUnit:h.string,shippingSuburb:h.string,shippingCity:h.string,shippingProvince:h.string,shippingPostalCode:h.string,shippingCountry:h.string,billingStreet:h.string,billingUnit:h.string,billingSuburb:h.string,billingCity:h.string,billingProvince:h.string,billingPostalCode:h.string,billingCountry:h.string,sameAsShipping:h.bool,additionalInstructions:h.string,shipping_method:h.string,confirmShippingAddress:h.bool,shipping_zoom:h.number,shipping_latitude:h.number,shipping_longitude:h.number}).isRequired,onFormDataChange:h.func.isRequired,isAuthorized:h.bool.isRequired,shippingOptionsComponent:h.node,confirmationCheckboxRef:h.object,highlightConfirmationBlock:h.bool,onShippingConsentChange:h.func.isRequired};$t.defaultProps={highlightConfirmationBlock:!1};const Zs=!0,ni=["Analyzing item sizes and weights","Choosing best box combinations","Checking courier services and rates","Finalizing your options"],Xs=f=>{const _=(f||"").toLowerCase();return _.includes("analyzing")?25:_.includes("choosing")?55:_.includes("checking")?82:_.includes("finalizing")?95:_.includes("completed")||_.includes("failed")||_.includes("canceled")?100:15},eo=Bt?console.log:()=>{},Oe=Bt?console.error:()=>{},Ye=Bt?console.debug:()=>{},Wn=f=>{if(!f||typeof f!="string")return!1;const _=f.toLowerCase();return _.includes("missing required fields")||_.includes("missing delivery address fields")},ul=()=>{var wn,Pn;l.useEffect(()=>{document.title="Checkout - Merrypak"},[]);const{t:f}=Bn(),_=us(),k=(e,r)=>{if(!e)return"/public/media/no-images-found.webp";if(e.includes("no-images-found")||e.includes("img.youtube.com")||e.startsWith("/images/"))return e;const n=e.split(/(\.[^.]+$)/);if(n.length<2)return e;const[t,o]=n;return`${t}_${r}x${r}${o}`},A=l.useCallback(e=>(e.product_name||"").toLowerCase().includes("gift voucher"),[]),W=e=>{if(e==null)return"";const r=Number(e);return Number.isFinite(r)&&Number.isInteger(r)?String(r):String(e)},{isAuthorized:m,profile:T,user:N}=Wt(),V=ps(),te=l.useCallback(()=>{window.scrollTo(0,0),V("/shop/basket/")},[V]),{getUpdatedPrice:re,getUpdatedQOH:oe,onBasketAnalysis:J,onCourierRates:me}=ds(),{updateBasketCount:F,fetchBasketCount:H,addToCart:le}=hs(),[O,de]=l.useState([]),[xe,ae]=l.useState(!0),[j,C]=l.useState(null),[I,$]=l.useState(null),[Ge,Re]=l.useState(0),[K,Fe]=l.useState(null),[pe,X]=l.useState(!1),[Q,ze]=l.useState([]),B=l.useRef(null),[Ci,pi]=l.useState({street:"",unit:"",suburb:"",city:"",postal_code:"",country:"South Africa"}),[a,Li]=l.useState({firstName:"",lastName:"",email:"",phone:"",shippingUnit:"",shippingBuilding:"",shippingStreet:"",shippingSuburb:"",shippingCity:"",shippingProvince:"",shippingPostalCode:"",shippingCountry:"South Africa",billingUnit:"",billingBuilding:"",billingStreet:"",billingSuburb:"",billingCity:"",billingProvince:"",billingPostalCode:"",billingCountry:"South Africa",sameAsShipping:!0,paymentMethod:"order",userSelectedPaymentMethod:!1,shipping_method:"courier",selectedBank:"",additionalInstructions:"",confirmShippingAddress:!1,recaptchaToken:"",voucherCode:"",voucherApplied:!1,customerReference:"",splitShipping:!1,courierCompany:"",shipping_latitude:null,shipping_longitude:null,shipping_zoom:13,companyName:"",vatNumber:"",companyRegNumber:"",businessType:"",position:"",paymentPerson:""}),M=e=>{new Error().stack.split(` 3`).slice(1,4).join(` 4`),Li(r=>typeof e=="function"?e(r):e)};l.useEffect(()=>{},[a.shippingProvince,a.shippingCity,a.shippingSuburb,K]);const[$i,Si]=l.useState(null),[De,di]=l.useState({open:!1,message:"",type:"info",duration:6e3}),[R,b]=l.useState(!1),[P,q]=l.useState(!1),[U,Ce]=l.useState(!1),[ye,D]=l.useState(0),[Ze,be]=l.useState(""),[Xe,Vt]=l.useState(!1),[ri,vi]=l.useState(null),[pt,jt]=l.useState(""),[Le,Ut]=l.useState(!1),[Se,xi]=l.useState(null),[ke,hi]=l.useState(!1),[he,Gt]=l.useState([]),[io,Kn]=l.useState([]),[ee,qe]=l.useState({status:"idle"}),si=Se==="split"&&ke,ei=l.useRef(null),Vi=l.useRef(null),oi=l.useRef(!1),Qn=l.useMemo(()=>JSON.stringify(he.map(e=>({sku:e.sku,available:e.available,required:e.required}))),[he]),Ht=l.useCallback((e,r=!1)=>
4{if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){const n=e.trim().toLowerCase();if(["true","1","yes","on"].includes(n))return!0;if(["false","0","no","off"].includes(n))return!1}return r},[]),ii=l.useMemo(()=>{var r,n;const e=(I==null?void 0:I.split_shipping_policy_enabled)??((r=I==null?void 0:I.shipping)==null?void 0:r.split_shipping_policy_enabled)??((n=I==null?void 0:I.payment)==null?void 0:n.split_shipping_policy_enabled);return Ht(e,!0)},[I,Ht]);l.useEffect(()=>{(!ii||a.paymentMethod==="quote")&&(Se||ke||a.splitShipping)&&(xi(null),hi(!1),M(e=>({...e,splitShipping:!1})))},[ii,a.paymentMethod,Se,ke,a.splitShipping]);const dt=Ms(he,O,A),Te=!!(ii&&a.paymentMethod!=="quote"&&(he.length>0||Le)&&dt&&!Se);l.useEffect(()=>{!ii||a.paymentMethod==="quote"||!Le&&he.length===0||dt||(Se!=="wait"||ke||a.splitShipping)&&(xi("wait"),hi(!1),M(e=>e.splitShipping?{...e,splitShipping:!1}:e))},[ii,a.paymentMethod,Le,he,dt,Se,ke,a.splitShipping]);const[Jn,Kt]=l.useState(!1),[Yn,Dn]=l.useState(!1);l.useEffect(()=>{m||Kt(!0)},[m]);const[ht,Qt]=l.useState({shipping:null,billing:null,payment:null,shippingMethod:null,general:null}),[gt,ki]=l.useState(!1),$e=l.useRef(null),[Jt,Yt]=l.useState(!1),[Zn,ft]=l.useState(null),[Xn,ji]=l.useState(!1),[er,mt]=l.useState(null),[ir,Dt]=l.useState(!1),[Zt,yt]=l.useState(!1),[gi,Ie]=l.useState(!1),[Ne,We]=l.useState(null),[bt,li]=l.useState(0),[wi,fi]=l.useState(ni[0]),[Ui,Xt]=l.useState(null),Gi=l.useRef(new Set),ti=l.useRef(null),Hi=l.useRef(null),ai=l.useRef(!1),en=l.useRef(!1),He=l.useRef(!1),Pi=l.useRef(null),ce=l.useRef(null),[_t,Ve]=l.useState(!1),[tr,ci]=l.useState(null),Ri=l.useRef(null),mi=l.useRef(""),Ii=l.useRef(a),Ki=l.useRef(null),tn=l.useRef(null),Qi=l.useRef(null),Ji=l.useRef(null),Yi=l.useRef(null),nn=l.useRef(null),Di=l.useRef(null),[nr,rr]=l.useState(typeof window<"u"?window.innerWidth:1920);l.useEffect(()=>{const e=()=>rr(window.innerWidth);return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),l.useEffect(()=>()=>{B.current&&clearTimeout(B.current),Ri.current&&clearTimeout(Ri.current),ti.current&&(clearInterval(ti.current),ti.current=null),ei.current&&(clearInterval(ei.current),ei.current=null)},[]),l.useEffect(()=>{Ii.current=a},[a]);const rn=nr<1560,[sr,sn]=l.useState(!1),or=()=>{di(e=>({...e,open:!1}))},on=e=>{var ne;const r=[],n={},t=z=>z?z.trim().toLowerCase().replace(/\b(street|road|rd|str|ave|avenue|drive|dr|lane|ln|way|close|cl|place|pl)\b/gi,"").replace(/\s+/g," ").trim():"";n.street=t(e.shippingStreet||""),n.suburb=t(e.shippingSuburb||""),n.city=t(e.shippingCity||""),n.province=t(e.shippingProvince||""),n.postalCode=t(e.shippingPostalCode||"");const o=[{name:"Street",value:n.street},{name:"Suburb",value:n.suburb},{name:"City",value:n.city},{name:"Province",value:n.province}].filter(z=>z.value.length>3),c={};o.forEach(z=>{z.value&&(c[z.value]=(c[z.value]||[]).concat(z.name))}),Object.entries(c).forEach(([z,_i])=>{_i.length>=2&&z.length>3&&r.push({type:"duplicate",message:`The same value appears in multiple fields: ${_i.join(", ")}`,fields:_i})});const u=["street","road","rd","str","ave","avenue","drive","dr","lane","ln","way","close","cl","place","pl"],s=((ne=e.shippingSuburb)==null?void 0:ne.toLowerCase())||"";u.some(z=>s.includes(z))&&n.suburb.length>5&&n.suburb!==n.street&&r.push({type:"suburb_street",message:"The suburb field appears to contain a street name",fields:["Suburb"]});const v=["cape town","johannesburg","pretoria","durban","port elizabeth","bloemfontein","east london","kimberley"],S=n.street;v.some(z=>S.includes(z))&&r.push({type:"street_city",message:"The street field may contain a city name",fields:["Street"]});const ie=["western cape","eastern cape","gauteng","kwazulu-natal","kzn","limpopo","mpumalanga","north west","northern cape","free state"],Z=ie.some(z=>n.suburb.includes(z)),Ee=ie.some(z=>n.city.includes(z));return Z&&n.province!==n.suburb&&r.push({type:"province_suburb",message:"The suburb field may contain a province name",fields:["Suburb"]}),Ee&&n.province!==n.city&&r.push({type:"province_city",message:"The city field may contain a province name",fields:["City"]}),r.length>0?{hasDiscrepancies:!0,discrepancies:r,address:e}:null},ln=e=>{var n;if(!(e!=null&&e.hasDiscrepancies))return!1;const r=e.discrepancies||[];return!(!r.length||r.length===1&&((n=r[0])==null?void 0:n.type)==="street_city")},lr=async()=>{ae(!0),C(null);try{let r=(await G.get("/api/basket/")).data.items||[];if(!r.length){try{await G.get("/api/session/")}catch{}try{r=(await G.get("/api/basket/")).data.items||[]}catch{}}if(!r.length){if(await Vs({api:G,navigate:V,showNotification:E}))return;E("Your basket is empty","warning"),V("/shop/basket");return}de(r);try{const n=await G.get("/api/session/");$(n.data.shop_data)}catch(n){Oe("Error fetching shop data:",n)}if(m)try{const[n,t]=await Promise.all([G.get("/api/profile/"),G.get("/api/delivery-addresses/")]),o=n.data,c=t.data||[];o&&(window.checkoutProfileData=o),ze(c);let u=c.find(s=>s.is_default);!u&&c.length>0&&(u=c[0]),u&&!K&&!pe?(console.log("ð Setting default address ID:",u.id),Fe(u.id)):u&&K?console.log("ð Skipping default address - address already selected:",K):u&&pe&&console.log("ð Skipping default address - user is manually entering address"),M(s=>{var p,v,S,Y,ie,Z,Ee,ne;const d={...s};return d.firstName=o.first_name||"",d.lastName=o.last_name||"",d.email=o.email||"",d.phone=o.contact_number||"",d.title=o.title||"",u&&!pe?(console.log("â
Checkout - Populating formData from defaultAddress:",u),console.log("â
Current formData before override:",{shippingCity:s.shippingCity,shippingProvince:s.shippingProvince,shippingSuburb:s.shippingSuburb}),d.shippingStreet=((p=u.street)==null?void 0:p.trim())||"",d.shippingUnit=((v=u.unit)==null?void 0:v.trim())||"",d.shippingBuilding=((S=u.building)==null?void 0:S.trim())||"",d.shippingSuburb=((Y=u.suburb)==null?void 0:Y.trim())||"",d.shippingCity=((ie=u.city)==null?void 0:ie.trim())||"",d.shippingProvince=((Z=u.province)==null?void 0:Z.trim())||"",d.shippingPostalCode=((Ee=u.postal_code)==null?void 0:Ee.trim())||"",d.shippingCountry=((ne=u.country)==null?void 0:ne.trim())||"",d.additionalInstructions=u.additional_instructions||"",d.shipping_latitude=u.latitude?parseFloat(u.latitude):null,d.shipping_longitude=u.longitude?parseFloat(u.longitude):null,d.shipping_zoom=u.zoom?parseInt(u.zoom):13,console.log("â
Checkout - formData after population:",{shippingCity:d.shippingCity,shippingSuburb:d.shippingSuburb,shippingProvince:d.shippingProvince})):u&&pe&&(console.log("ð« Checkout - SKIPPING default address population - user is manually entering"),console.log("ð« Keeping existing formData:",{shippingCity:s.shippingCity,shippingProvince:s.shippingProvince,shippingSuburb:s.shippingSuburb})),d.sameAsShipping=!o.use_billing_in_checkout,o.use_billing_in_checkout&&(q(!0),d.billingStreet=o.billing_address||"",d.billingUnit=o.billing_unit||"",d.billingBuilding=o.billing_building||"",d.billingSuburb=o.billing_state||"",d.billingCity=o.billing_city||"",d.billingProvince=o.billing_province||"",d.billingPostalCode=o.billing_postal_code||"",d.billingCountry=o.billing_country||""),d}),setTimeout(()=>{var d,p,v,S,Y,ie,Z,Ee;const s=document.forms.checkoutForm;s&&(s.elements.firstName&&(s.elements.firstName.value=o.first_name||""),s.elements.lastName&&(s.elements.lastName.value=o.last_name||""),s.elements.email&&(s.elements.email.value=o.email||""),s.elements.phone&&(s.elements.phone.value=o.contact_number||""),u&&(s.elements.street_address_input&&(s.elements.street_address_input.value=((d=u.street)==null?void 0:d.trim())||""),s.elements.shippingStreet&&(s.elements.shippingStreet.value=((p=u.street)==null?void 0:p.trim())||""),s.elements.shippingUnit&&(s.elements.shippingUnit.value=((v=u.unit)==null?void 0:v.trim())||""),s.elements.shippingBuilding&&(s.elements.shippingBuilding.value=((S=u.building)==null?void 0:S.trim())||""),s.elements.shippingSuburb&&(s.elements.shippingSuburb.value=((Y=u.suburb)==null?void 0:Y.trim())||""),s.elements.shippingCity&&(s.elements.shippingCity.value=((ie=u.city)==null?void 0:ie.trim())||""),s.elements.shippingPostalCode&&(s.elements.shippingPostalCode.value=((Z=u.postal_code)==null?void 0:Z.trim())||""),s.elements.shippingCountry&&(s.elements.shippingCountry.value=((Ee=u.country)==null?void 0:Ee.trim())||"South Africa"),s.elements.additionalInstructions&&(s.elements.additionalInstructions.value=u.additional_instructions||"")),o.use_billing_in_checkout&&(s.elements.sameAsShipping&&(s.elements.sameAsShipping.checked=!1,["billingStreet","billingSuburb","billingCity","billingPostalCode","billingUnit","billingCountry"].forEach(z=>{s.elements[z]&&(s.elements[z].disabled=!1)})),setTimeout(()=>{s.elements.billingStreet&&(s.elements.billingStreet.value=o.billing_address||""),s.elements.billingUnit&&(s.elements.billingUnit.value=o.billing_unit||""),s.elements.billingBuilding&&(s.elements.billingBuilding.value=o.billing_building||""),s.elements.billingSuburb&&(s.elements.billingSuburb.value=o.billing_state||""),s.elements.billingCity&&(s.elements.billingCity.value=o.billing_city||""),s.elements.billingProvince&&(s.elements.billingProvince.value=o.billing_province||""),s.elements.billingPostalCode&&(s.elements.billingPostalCode.value=o.billing_postal_code||""),s.elements.billingCountry&&(s.elements.billingCountry.value=o.billing_country||""),setTimeout(()=>{q(!1)},200)},100)))},300)}catch(n){Oe("Error fetching profile/addresses:",n),E("Failed to process checkout","error")}}catch(e){Oe("Error fetching basket:",e),C("Failed to load basket items"),E("Failed to process checkout","error")}finally{ae(!1)}};l.useEffect(()=>{lr()},[m]),l.useEffect(()=>{if(!(I!=null&&I.payment))return;const{gateway_enabled:e,order_enabled:r,quote_enabled:n}=I.payment,t=a.paymentMethod;let o=!1,c=null;(t==="gateway"&&e===!1||t==="order"&&r===!1||t==="quote"&&n===!1)&&(o=!0),o&&(e!==!1?c="gateway":r!==!1?c="order":n!==!1&&(c="quote"),c&&M(u=>({...u,paymentMethod:c}))),e===!0&&t==="order"&&r!==!1&&!a.userSelectedPaymentMethod&&M(u=>({...u,paymentMethod:"gateway"}))},[I==null?void 0:I.payment,a.paymentMethod]),l.useEffect(()=>{const e=J(n=>{var t;n.success&&((t=n.packing_result)!=null&&t.cartons)&&ur(n.packing_result.cartons),n.success===!1&&(xt(!1),Zi({success:!1,error:n.error||"Failed to analyze basket items for shipping calculation",debug_info:{basket_analysis_error:!0,raw_response:n}}))}),r=me(n=>{var t;if(Zi(n),xt(!1),n.success&&((t=n.shipping_options)==null?void 0:t.length)>0){const o=n.shipping_options.find(u=>{var s,d;return((s=u.service_code)==null?void 0:s.includes("ECO"))||((d=u.service_name)==null?void 0:d.toLowerCase().includes("economy"))});let c;o?c=o:c=n.shipping_options.reduce((u,s)=>s.total_cost<u.total_cost?s:u),M(u=>({...u,selected_courier_option:c}))}else n.success===!1?M(o=>({...o,selected_courier_option:null})):M(o=>({...o,selected_courier_option:null}))});return()=>{typeof e=="function"&&e(),typeof r=="function"&&r()}},[J,me]);const Ct=l.useCallback((e,r=null)=>{var d;if(!(e!=null&&e.success))return;const n=Array.isArray(e.all_rates)?e.all_rates:[],t={...e.calculation_details||{}};e.tcg_quote_deferred&&(t.tcg_quote_deferred=!0),e.error&&!t.tcg_error&&(t.tcg_error=e.error),!e.calculation_details&&n.length>0&&(t.rule_applied="courier_guy_live_rate",t.show_public_courier_service_options=!0,t.tcg_service=e.service_name||e.courier_name,t.tcg_all_rates=n,t.tcg_all_boxes=((d=e.packing_result)==null?void 0:d.cartons)||[],t.tcg_ai_packing_report=e.ai_packing_report||null),t.tcg_error&&_.trackEvent("checkout_tcg_error_received",{error:String(t.tcg_error).slice(0,240)});const o=Ii.current||{},c=e.calculated_address||r||{shippingStreet:o.shippingStreet||"",shippingUnit:o.shippingUnit||"",shippingBuilding:o.shippingBuilding||"",shippingSuburb:o.shippingSuburb||"",shippingCity:o.shippingCity||"",shippingProvince:o.shippingProvince||"",shippingPostalCode:o.shippingPostalCode||"",shippingCountry:o.shippingCountry||"South Africa"};M(p=>{var v;return{...p,calculated_shipping_cost:e.shipping_cost,delivery_calculation_result:{success:!0,pending:!1,shipping_cost:e.shipping_cost,courier_name:e.courier_name,is_free_shipping:e.is_free_shipping,within_radius:e.within_radius,is_blacklisted:e.is_blacklisted,distance_km:e.distance_km,calculation_details:t,calculated_address:c?{street:c.street||c.shippingStreet||"",unit:c.unit||c.shippingUnit||"",building:c.building||c.shippingBuilding||"",suburb:c.suburb||c.shippingSuburb||"",city:c.city||c.shippingCity||"",province:c.province||c.shippingProvince||"",postal_code:c.postal_code||c.shippingPostalCode||"",country:c.country||c.shippingCountry||"South Africa"}:((v=p.delivery_calculation_result)==null?void 0:v.calculated_address)||null}}}),t.rule_applied;const u=Mt(t),s=(t.tcg_all_rates||[]).filter(p=>{const v=Number((p==null?void 0:p.amount)??(p==null?void 0:p.raw_amount)??(p==null?void 0:p.raw_rate)??(p==null?void 0:p.total_cost)??(p==null?void 0:p.total)??(p==null?void 0:p.price)??(p==null?void 0:p.rate)??(p==null?void 0:p.shipping_cost)??0);return Number.isFinite(v)&&v>0});if(u&&s.length>0){_.trackEvent("checkout_tcg_rates_loaded",{rates_count:s.length}),t.tcg_ai_packing_report&&_.trackEvent("checkout_ai_report_received",{final_decision:t.tcg_ai_packing_report.final_decision||"UNKNOWN"});const p=s.slice().sort((S,Y)=>{const ie=(S.amount??0)-(Y.amount??0);if(ie!==0)return ie;const Z=(S.raw_rate??S.raw_amount??S.amount??0)-(Y.raw_rate??Y.raw_amount??Y.amount??0);return Z!==0?Z:String(S.service_code||"").localeCompare(String(Y.service_code||""))}),v=p.find(S=>(S.service_code||"").includes("ECO")||(S.service_name||"").toLowerCase().includes("economy"));kt(S=>{if(S!=null&&S.service_code){const Y=p.find(ie=>ie.service_code===S.service_code);
4if(Y)return Y}return v||p[0]})}else kt(null)},[_]),ve=l.useCallback(()=>{ti.current&&(clearInterval(ti.current),ti.current=null),Hi.current=null,ai.current=!1},[]),St=l.useCallback(async e=>{var r;if(e)try{const t=(await G.get(`/api/checkout/calculation-status/?task_id=${encodeURIComponent(e)}`)).data;if(li(o=>Math.max(o,t.progress_percent||0)),fi(t.progress_stage||ni[0]),t.state==="success"&&t.result){if(Gi.current.has(e))return;ve(),Ie(!1),_.trackEvent("checkout_packing_modal_closed",{reason:"success"}),He.current=!1,We(null),Ct(t.result,Pi.current),Pi.current=null}else(t.state==="failed"||t.state==="canceled")&&(ve(),Ie(!1),_.trackEvent("checkout_packing_modal_closed",{reason:t.state}),He.current=!1,We(null),Pi.current=null,t.state==="failed"&&t.error&&(_.trackEvent("checkout_calculation_failed",{error:String(t.error).slice(0,240)}),Wn(t.error)||E(t.error,"error")))}catch(n){((r=n==null?void 0:n.response)==null?void 0:r.status)===404&&(ve(),Ie(!1),He.current=!1,We(null),Pi.current=null)}},[Ct,ve,_]),vt=l.useCallback(e=>{e&&(Hi.current===e&&ti.current||(ve(),Hi.current=e,ti.current=setInterval(async()=>{if(!(ai.current||Hi.current!==e)){ai.current=!0;try{await St(e)}finally{ai.current=!1}}},1500),ai.current||(ai.current=!0,Promise.resolve(St(e)).finally(()=>{ai.current=!1}))))},[St,ve]),ar=l.useCallback(async()=>{const e=Ne;if(!e){ce.current&&(ce.current.abort(),ce.current=null),Ie(!1),M(r=>({...r,calculated_shipping_cost:0,delivery_calculation_result:{success:!0,pending:!1,canceled:!0,shipping_cost:0,courier_name:"To be quoted",error:null,calculation_details:{rule_applied:"additional_cost_required"}}}));return}Gi.current.add(e);try{await G.post("/api/checkout/calculation-cancel/",{task_id:e}),_.trackEvent("checkout_calculation_canceled_by_user",{task_id:e})}catch{}finally{ce.current&&(ce.current.abort(),ce.current=null),ve(),Ie(!1),_.trackEvent("checkout_packing_modal_closed",{reason:"canceled_by_user"}),He.current=!1,We(null),li(0),fi(ni[0]),M(r=>({...r,calculated_shipping_cost:0,delivery_calculation_result:{success:!0,pending:!1,canceled:!0,shipping_cost:0,courier_name:"To be quoted",error:null,calculation_details:{rule_applied:"additional_cost_required"}}}))}},[Ne,ve,_]);l.useEffect(()=>{if(!Te)return;const e=Ne;e&&(Gi.current.add(e),G.post("/api/checkout/calculation-cancel/",{task_id:e}).catch(()=>{})),ce.current&&(ce.current.abort(),ce.current=null),ve(),Ie(!1),He.current=!1,We(null),li(0),fi(ni[0]),M(r=>({...r,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,pending:!0,waiting_for_split_delivery_choice:!0,message:"Choose split delivery or wait for the complete order before calculating courier delivery."}}))},[Te,Ne,ve]),l.useEffect(()=>{if(!gi)return;const e=setInterval(()=>{li(r=>{const n=Xs(wi);return r>=n?r:Math.min(n,r+2)})},700);return()=>clearInterval(e)},[gi,wi]),l.useEffect(()=>{!gi||!Ui||He.current||Date.now()-Ui<=15e3||(He.current=!0,_.trackEvent("checkout_calculation_long_running",{task_id:Ne||null,progress_stage:wi||null,progress_percent:bt||0}))},[gi,Ui,Ne,wi,bt,_]),l.useEffect(()=>{if(en.current)return;en.current=!0,(async()=>{var r,n;if(!Te)try{const t=await G.get("/api/checkout/calculation-status/");if((r=t.data)!=null&&r.success&&((n=t.data)!=null&&n.task_id)&&!Ne){if(Te){await G.post("/api/checkout/calculation-cancel/",{task_id:t.data.task_id}).catch(()=>{});return}const o=t.data.task_id;We(o),Ie(!0),He.current=!1,Xt(Date.now()),li(t.data.progress_percent||0),fi(t.data.progress_stage||ni[0]),vt(o),_.trackEvent("checkout_calculation_resumed_after_refresh",{task_id:o})}}catch{}})()},[vt,_,Ne,Te]);const cr=async(e=null,r=null,n={})=>{var t,o,c,u,s,d,p,v,S,Y,ie,Z,Ee;try{const{skipAddressValidationGate:ne=!1,force_recalculate:z=!1,splitShippingOverride:_i=null,splitDeliveryChoiceOverride:Rt=null}=n,Yr=_i??Ii.current.splitShipping,Dr=Rt??Se;if(!ne&&_t)return;if(Ne){Gi.current.add(Ne);try{await G.post("/api/checkout/calculation-cancel/",{task_id:Ne})}catch{}finally{ve(),We(null),Ie(!1),li(0),fi(ni[0])}}console.log("ð triggerShippingCalculation called with:",{overrideShippingMethod:e,overrideDeliveryAddress:r,hasOverrideAddress:!!r}),ce.current&&(console.log("ð« Aborting previous shipping calculation request"),ce.current.abort(),ce.current=null);const It=new AbortController;ce.current=It,ji(!1),mt(null);const Mi=e||a.shipping_method||"courier";let w=null;if(Mi==="courier"){if(r)w=r,console.log("ð¦ Using provided delivery address:",w),console.log("ð¦ Override address details:",{street:w.street,suburb:w.suburb,city:w.city,province:w.province,postal_code:w.postal_code,country:w.country});else{const Be=a.shippingStreet&&a.shippingCity&&a.shippingProvince,qi=K&&Q.length>0;if(console.log("ð DATA SOURCE DETECTION:",{hasExpandedFormData:Be,hasSelectedDeliveryAddress:qi,selectedAddressId:K,deliveryAddressesCount:Q.length,formDataFields:{shippingStreet:a.shippingStreet,shippingCity:a.shippingCity,shippingProvince:a.shippingProvince}}
4),Be)w={street:a.shippingStreet||"",unit:a.shippingUnit||"",building:a.shippingBuilding||"",suburb:a.shippingSuburb||"",city:a.shippingCity||"",province:a.shippingProvince||"",postal_code:a.shippingPostalCode||"",country:a.shippingCountry||"South Africa"},console.log("ð¦ EXPANDED MODE - Using form data:",w);else if(qi){const Je=Q.find(es=>String(es.id)===String(K));Je&&(w={street:((t=Je.street)==null?void 0:t.trim())||"",unit:((o=Je.unit)==null?void 0:o.trim())||"",building:((c=Je.building)==null?void 0:c.trim())||"",suburb:((u=Je.suburb)==null?void 0:u.trim())||"",city:((s=Je.city)==null?void 0:s.trim())||"",province:((d=Je.province)==null?void 0:d.trim())||"",postal_code:((p=Je.postal_code)==null?void 0:p.trim())||"",country:((v=Je.country)==null?void 0:v.trim())||"South Africa"},console.log("ð¦ COMPACT MODE - Using selected delivery address:",w))}else w={street:a.shippingStreet||"",unit:a.shippingUnit||"",building:a.shippingBuilding||"",suburb:a.shippingSuburb||"",city:a.shippingCity||"",province:a.shippingProvince||"",postal_code:a.shippingPostalCode||"",country:a.shippingCountry||"South Africa"},console.log("ð¦ FALLBACK - Using formData delivery address:",w)}if(w){const Be=Ti({shippingStreet:w.street,shippingSuburb:w.suburb,shippingCity:w.city,shippingProvince:w.province,shippingPostalCode:w.postal_code,shippingCountry:w.country});w={...w,city:w.city||Be.city||"",province:w.province||Be.province||"",postal_code:w.postal_code||Be.postalCode||""}}if(!(w.street&&w.city)){console.log("â¸ï¸ Address incomplete - need street and city:",{has_street:!!w.street,has_suburb:!!w.suburb,has_city:!!w.city,address:w}),ce.current=null;return}if(ii&&a.paymentMethod!=="quote"&&(he.length>0||Le)&&!Dr){console.log("â¸ï¸ Blocking courier calculation until split delivery choice is selected"),ce.current=null,It.abort(),M(Be=>({...Be,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,pending:!0,waiting_for_split_delivery_choice:!0,message:"Choose split delivery or wait for the complete order before calculating courier delivery."}}));return}}console.log("ð Sending to API:",{shipping_method:Mi,delivery_address:w});const Zr=Pe(),Xr=Qe(ri);let Rn=0;const Fi=window.checkoutProfileData||T;if(Fi!=null&&Fi.discount_structures&&Fi.discount_structures.length>0){const ge=Fi.discount_structures[0];ge.breakpoints&&ge.breakpoints.length>0&&(Rn=nt(ge,ge.breakpoints,Zr).discount)}const ue=await G.post("/api/checkout/calculate-shipping/",{shipping_method:Mi,delivery_address:w,split_shipping:Yr,voucher_discount:Xr,merryperks_discount:Rn},{signal:It.signal});if(ue.data.pending&&ue.data.task_id)return We(ue.data.task_id),Pi.current=w,Xt(Date.now()),li(5),fi(ni[0]),Ie(!0),He.current=!1,_.trackEvent("checkout_packing_modal_opened",{task_id:ue.data.task_id}),vt(ue.data.task_id),ue.data;if(ue.data.success){if(ce.current=null,ve(),Ie(!1),We(null),Mi==="collect")M(ge=>({...ge,calculated_shipping_cost:0,delivery_calculation_result:{success:!0,shipping_cost:0,calculation_details:{rule_applied:"collection"}}}));else if(Mi==="courier"){const ge=ue.data.calculation_details||{};Ct(ue.data,w),eo("â
Shipping calculated:",{cost:ue.data.shipping_cost,within_radius:ue.data.within_radius,blacklisted:ue.data.is_blacklisted,rule:ge.rule_applied});const ui=ge.rule_applied;if(ui==="additional_cost_required"||ui==="quote_required"){const Be=w?w.street&&w.city:a.shippingStreet&&a.shippingCity;if(Be){console.log("â
Showing modal for rule:",ui,"with complete address:",{address:w?`${w.street}, ${w.suburb}, ${w.city}`:"N/A",rule:ui,is_blacklisted:ue.data.is_blacklisted,within_radius:ue.data.within_radius});const qi=w?`${w.street}, ${w.suburb}, ${w.city}`:`${a.shippingStreet}, ${a.shippingSuburb}, ${a.shippingCity}`;mt({is_blacklisted:ue.data.is_blacklisted,blacklisted_area:ge==null?void 0:ge.blacklisted_area,within_radius:ue.data.within_radius,distance_km:ue.data.distance_km,address:qi}),ji(!0),console.log("ð¨ MODAL SET TO TRUE - Server response received:",{rule:ui,address:qi,timestamp:new Date().toISOString()})}else console.log("â NOT showing modal - address incomplete:",{street:(w==null?void 0:w.street)||a.shippingStreet,suburb:(w==null?void 0:w.suburb)||a.shippingSuburb,city:(w==null?void 0:w.city)||a.shippingCity,hasCompleteAddress:Be})}else ji(!1),mt(null);return ue.data}}else ce.current=null,ve(),Ie(!1),We(null),M(ge=>({...ge,delivery_calculation_result:{success:!1,error:ue.data.error||"Shipping calculation failed"}}))}catch(ne){if(ne.name==="AbortError"||ne.code==="ERR_CANCELED"){console.log("ð« Shipping calculation request aborted - user changed address"),ce.current=null;return}Oe("â Error triggering shipping calculation:",ne),ve(),Ie(!1),We(null);let z="Failed to calculate shipping. Please try again.";(Y=(S=ne.response)==null?void 0:S.data)!=null&&Y.error?z=ne.response.data.error:(Z=(ie=ne.response)==null?void 0:ie.data)!=null&&Z.message?z=ne.response.data.message:(Ee=ne.response)!=null&&Ee.status?z=`Server error (${ne.response.status}): Unable to calculate shipping.`:ne.message&&(z=`Error: ${ne.message}`),M(Rt=>({...Rt,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,error:z}})),(e||a.shipping_method||"courier")==="courier"&&!Wn(z)&&E(z,"error"),ce.current=null}},[no,Zi]=l.useState(null),[yi,ur]=l.useState(null),[ro,xt]=l.useState(!1),[Ke,kt]=l.useState(null),an=l.useCallback(e=>{if(!e||typeof e!="object")return null;const r=c=>{if(c==null)return"";if(typeof c=="string")return c;if(typeof c=="number"||typeof c=="boolean")return String(c);if(typeof c=="object"){const u=c;if(u&&Object.prototype.hasOwnProperty.call(u,"total_cartons")&&Object.prototype.hasOwnProperty.call(u,"total_shipping_weight_g")){const s=Number(u.total_cartons||0),d=Number(u.total_shipping_weight_g||0)/1e3;return`${s} carton(s), ${d.toFixed(2)} kg total shipping weight.`}try{return JSON.stringify(c)}catch{return""}}return""}
4,n=Array.isArray(e.actions)?e.actions.map(r).filter(Boolean).slice(0,3):[],t=Array.isArray(e.recommended_cartons)?e.recommended_cartons:[],o=Array.isArray(e.guardrails)?e.guardrails:[];return{status:e.status||"unknown",provider:e.provider||"n/a",model:e.model||"n/a",summary:r(e.summary),finalDecision:e.final_decision||null,actions:n,recommendedCartons:t,guardrails:o}},[]),pr=l.useMemo(()=>{var n,t;const e=((n=a.delivery_calculation_result)==null?void 0:n.calculation_details)||{},r=Array.isArray(e.tcg_all_rates)&&e.tcg_all_rates.some(o=>{const c=Number((o==null?void 0:o.amount)??(o==null?void 0:o.raw_amount)??(o==null?void 0:o.raw_rate)??(o==null?void 0:o.total_cost)??(o==null?void 0:o.total)??(o==null?void 0:o.price)??(o==null?void 0:o.rate)??(o==null?void 0:o.shipping_cost)??0);return Number.isFinite(c)&&c>0});return a.shipping_method==="courier"&&((t=a.delivery_calculation_result)==null?void 0:t.success)===!0&&Mt(e)&&r},[a.shipping_method,a.delivery_calculation_result]),je=l.useMemo(()=>{var e,r;return an((r=(e=a.delivery_calculation_result)==null?void 0:e.calculation_details)==null?void 0:r.tcg_ai_packing_report)},[a.delivery_calculation_result,an]),dr=l.useMemo(()=>{var u;const e=((u=a.delivery_calculation_result)==null?void 0:u.calculation_details)||{},n=[Array.isArray(yi)?yi:null,Array.isArray(je==null?void 0:je.recommendedCartons)?je.recommendedCartons:null,Array.isArray(e.tcg_all_boxes)?e.tcg_all_boxes:null].filter(Boolean)[0];if(!n||n.length===0)return null;const t=s=>{const d=Number(s);return Number.isFinite(d)?d:0},o=n.reduce((s,d)=>s+t(d.weight_kg||d.total_weight_kg||d.chargeable_weight_kg||d.weight||0),0),c=n.map(s=>{const d=t(s.length_cm||s.length||s.l),p=t(s.width_cm||s.width||s.w),v=t(s.height_cm||s.height||s.h);return!d||!p||!v?null:`${d} x ${p} x ${v} cm`}).filter(Boolean);return{totalPieces:n.length,totalWeightKg:o.toFixed(2),dimensionsSummary:c.length>0?c.join(" | "):"Packing dimensions will be provided after rate confirmation."}},[a.delivery_calculation_result,yi,je]),Ai=l.useMemo(()=>{var o;const e=((o=a.delivery_calculation_result)==null?void 0:o.calculation_details)||{},n=[Array.isArray(e.tcg_all_boxes)?e.tcg_all_boxes:null,Array.isArray(yi)?yi:null,Array.isArray(je==null?void 0:je.recommendedCartons)?je.recommendedCartons:null].filter(Boolean)[0]||[],t=c=>{const u=Number(c);return Number.isFinite(u)?u:0};return n.map((c,u)=>{var ie;const s=(c==null?void 0:c.dimensions)||{},d=t(c.length_cm||c.length||c.l||s.depth||s.length),p=t(c.width_cm||c.width||c.w||s.width),v=t(c.height_cm||c.height||c.h||s.height),S=t(c.weight_kg||c.total_weight_kg||c.chargeable_weight_kg||c.weight)||t((ie=c==null?void 0:c.weight)==null?void 0:ie.total_weight_g)/1e3,Y=Array.isArray(c==null?void 0:c.items)?c.items:[];return Y.map(Z=>`${(Z==null?void 0:Z.sku)||"SKU"} x${Number((Z==null?void 0:Z.quantity)||1)}`).join(", "),{id:(c==null?void 0:c.index)||u+1,parcelLabel:`Parcel #${u+1}`,dimensions:d&&p&&v?`${d} x ${p} x ${v} mm`:"N/A",totalWeightKg:S>0?S.toFixed(2):"N/A",itemsCount:Number((c==null?void 0:c.items_count)||Y.length||0)}})},[a.delivery_calculation_result,yi,je]),hr=l.useCallback(async()=>{if(!Ai.length){E("No parcel details to copy yet.","warning");return}const n=[["Parcel","Dimensions","Weight (kg)","Items"].join(" "),...Ai.map(t=>[t.parcelLabel,t.dimensions,t.totalWeightKg,t.itemsCount].join(" "))].join(` 5`);try{await navigator.clipboard.writeText(n),E("Parcel details copied to clipboard.","success")}catch{try{const t=document.createElement("textarea");t.value=n,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),document.body.removeChild(t),E("Parcel details copied to clipboard.","success")}catch{E("Could not copy parcel details. Please copy manually.","error")}}},[Ai]),Ae=l.useCallback(()=>{const e=Q.find(t=>String(t.id)===String(K)),r={shippingStreet:(a.shippingStreet||(e==null?void 0:e.street)||"").trim(),shippingUnit:(a.shippingUnit||(e==null?void 0:e.unit)||"").trim(),shippingBuilding:(a.shippingBuilding||(e==null?void 0:e.building)||"").trim(),shippingSuburb:(a.shippingSuburb||(e==null?void 0:e.suburb)||"").trim(),shippingCity:(a.shippingCity||(e==null?void 0:e.city)||"").trim(),shippingProvince:(a.shippingProvince||(e==null?void 0:e.province)||"").trim(),shippingPostalCode:(a.shippingPostalCode||(e==null?void 0:e.postal_code)||"").trim(),shippingCountry:(a.shippingCountry||(e==null?void 0:e.country)||"").trim()},n=Ti(r);return{...r,shippingCity:n.city||r.shippingCity,shippingProvince:n.province||r.shippingProvince,shippingPostalCode:n.postalCode||r.shippingPostalCode}},[Q,K,a.shippingStreet,a.shippingUnit,a.shippingBuilding,a.shippingSuburb,a.shippingCity,a.shippingProvince,a.shippingPostalCode,a.shippingCountry]),Ue=l.useMemo(()=>Ni(Ae()),[Ae]),bi=l.useRef("");l.useEffect(()=>{if(a.shipping_method!=="courier"){bi.current=Ue;return}if(!bi.current){bi.current=Ue;return}if(Ue&&bi.current!==Ue){bi.current=Ue,a.confirmShippingAddress&&M(e=>({...e,confirmShippingAddress:!1}));return}bi.current=Ue},[Ue,a.shipping_method,a.confirmShippingAddress]);const cn=l.useMemo(()=>
5{if(a.shipping_method!=="courier"||a.quoteForced)return!0;const e=a.delivery_calculation_result;if(!(e!=null&&e.success)||e.pending)return!1;const r=Ae();if(!!!((r.shippingStreet||"").trim()&&(r.shippingCity||"").trim()))return!1;const t=e.calculated_address?Ni(e.calculated_address):"";return!!(t&&Ue&&t===Ue)},[Ue,a.shipping_method,a.quoteForced,a.delivery_calculation_result,Ae]),we=l.useCallback(()=>{ei.current&&(clearInterval(ei.current),ei.current=null),Vi.current=null,oi.current=!1},[]),Xi=l.useCallback(e=>{var n;const r=Number((e==null?void 0:e.shipping_cost)||0);qe({status:"success",shippingCost:Number.isFinite(r)?r:0,courierName:(e==null?void 0:e.courier_name)||((n=e==null?void 0:e.calculation_details)==null?void 0:n.tcg_service)||"Courier estimate",calculationDetails:(e==null?void 0:e.calculation_details)||{},message:(e==null?void 0:e.message)||""})},[]),wt=l.useCallback(async e=>{var r;if(e)try{const t=(await G.get(`/api/checkout/calculation-status/?task_id=${encodeURIComponent(e)}`)).data||{};t.state==="success"&&t.result?(we(),Xi(t.result)):(t.state==="failed"||t.state==="canceled")&&(we(),qe({status:"error",error:t.error||"Could not estimate the second courier cost yet."}))}catch(n){((r=n==null?void 0:n.response)==null?void 0:r.status)===404&&(we(),qe({status:"error",error:"Could not estimate the second courier cost yet."}))}},[Xi,we]),un=l.useCallback(e=>{e&&(Vi.current===e&&ei.current||(we(),Vi.current=e,ei.current=setInterval(async()=>{if(!(oi.current||Vi.current!==e)){oi.current=!0;try{await wt(e)}finally{oi.current=!1}}},1800),oi.current||(oi.current=!0,Promise.resolve(wt(e)).finally(()=>{oi.current=!1}))))},[wt,we]),gr=l.useCallback(async({force:e=!1}={})=>{var t,o,c,u,s,d;if(!ke||!si||a.paymentMethod==="quote"||a.shipping_method!=="courier"){we(),qe({status:"idle"});return}if(!he.length){we(),qe({status:"idle"});return}const r=Ae(),n={street:r.shippingStreet||"",unit:r.shippingUnit||"",building:r.shippingBuilding||"",suburb:r.shippingSuburb||"",city:r.shippingCity||"",province:r.shippingProvince||"",postal_code:r.shippingPostalCode||"",country:r.shippingCountry||"South Africa"};if(!n.street||!n.city){we(),qe({status:"waiting_for_address"});return}we(),qe({status:"loading"});try{const p=await G.post("/api/checkout/calculate-shipping/",{shipping_method:"courier",delivery_address:n,split_shipping:!1,split_shipping_estimate_mode:"balance",voucher_discount:0,merryperks_discount:0});if((t=p.data)!=null&&t.pending&&((o=p.data)!=null&&o.task_id)){qe({status:"loading",taskId:p.data.task_id}),un(p.data.task_id);return}if((c=p.data)!=null&&c.success){Xi(p.data);return}qe({status:"error",error:((u=p.data)==null?void 0:u.error)||"Could not estimate the second courier cost yet."})}catch(p){qe({status:"error",error:((d=(s=p==null?void 0:p.response)==null?void 0:s.data)==null?void 0:d.error)||"Could not estimate the second courier cost yet."})}},[ke,si,a.paymentMethod,a.shipping_method,he.length,Ae,Qn,we,un,Xi]);l.useEffect(()=>{(!ke||!si)&&(we(),qe({status:"idle"}))},[ke,si,we]);const[so,oo]=l.useState(null),fr=async()=>{try{const e=await G.get("/api/basket/");de(e.data.items),ae(!1)}catch(e){Oe("Error fetching basket:",e),C("Failed to load basket items"),ae(!1)}},Pe=()=>Array.isArray(O)?O.reduce((e,r)=>{const n=re(r.sku,r.is_insert?"insert":"variant")||r.unit_price;return e+n*r.quantity},0):0,Qe=(e,r=null)=>{if(!(e!=null&&e.discount_type)||!(e!=null&&e.discount_value))return 0;const n=r!==null?r:Pe();if(n===0||e.minimum&&n<e.minimum)return 0;if(e.discount_type==="percentage"){let t=n*e.discount_value/100;return e.max_discount_amount&&(t=Math.min(t,e.max_discount_amount)),t}else if(e.discount_type==="amount")return e.balance!==void 0&&e.balance<=0?0:e.balance!==void 0?Math.min(n,e.balance):Math.min(n,e.discount_value);return 0},mr=e=>{if(!e)return!1;const r=Pe();return!(e.minimum&&r<e.minimum||e.discount_type==="amount"&&e.balance!==void 0&&e.balance<=0||e.max_uses&&e.current_uses>=e.max_uses||e.is_used&&e.voucher_type!=="credit"||e.is_used&&e.voucher_type==="credit"&&e.discount_type==="amount"&&(e.balance===void 0||e.balance<=0)||e.allowed_payment_methods&&e.allowed_payment_methods.length>0&&!e.allowed_payment_methods.includes(a.paymentMethod)||e.voucher_type==="staff")},yr=e=>{if(!e)return"";const r=Pe();return e.minimum&&r<e.minimum?`Minimum spend of ${tt(e.minimum)} required. Current total: ${tt(r)}`:e.discount_type==="amount"&&e.balance!==void 0&&e.balance<=0?"Voucher has no remaining balance":e.max_uses&&e.current_uses>=e.max_uses?"Voucher usage limit reached":e.is_used&&e.voucher_type!=="credit"?"Voucher has already been used":e.is_used&&e.voucher_type==="credit"&&e.discount_type==="amount"&&(e.balance===void 0||e.balance<=0)?"Credit voucher has no remaining balance":e.allowed_payment_methods&&e.allowed_payment_methods.length>0&&!e.allowed_payment_methods.includes(a.paymentMethod)?`Voucher not valid for ${a.paymentMethod} payment method`:e.voucher_type==="staff"?"Staff vouchers cannot be used on the website":""},br=l.useCallback(()=>{var c,u,s;const e=Pe();let r=0;const n=window.checkoutProfileData||T;if(((s=(u=(c=n==null?void 0:n.discount_structures)==null?void 0:c[0])==null?void 0:u.breakpoints)==null?void 0:s.length)>0){const d=n.discount_structures[0];r=nt(d,d.breakpoints,e).discount||0}const t=Math.max(0,e-r),o=Qe(ri,t);return Math.max(0,t-o)},[Pe,Qe,T,ri]),pn=l.useCallback(()=>
5{if(!si||Se!=="split"||a.shipping_method!=="courier"||(ee==null?void 0:ee.status)!=="success")return 0;const e=Number(ee.shippingCost||0);return Number.isFinite(e)?e:0},[si,Se,a.shipping_method,ee]),Ei=()=>{var e,r,n;if(a.shipping_method==="collect")return 0;if(a.shipping_method==="courier"){if(Te)return"FETCHING";const t=a.delivery_calculation_result,o=Ae(),c=Ti(o),u={...o,shippingCity:o.shippingCity||c.city||"",shippingProvince:o.shippingProvince||c.province||"",shippingPostalCode:o.shippingPostalCode||c.postalCode||""},s=!!(u.shippingStreet&&u.shippingCity);if(s&&!a.confirmShippingAddress)return"CONFIRM_ADDRESS";const d=s?Ni(u):"",p=t!=null&&t.calculated_address?Ni(t.calculated_address):"";if(!(!s||!d||d===p))return"FETCHING";const S=(e=t==null?void 0:t.calculation_details)==null?void 0:e.rule_applied;if((t==null?void 0:t.is_free_shipping)===!0||S==="free_shipping_qualified"||Ts({payableMerchandiseTotal:br(),freeThreshold:(r=I==null?void 0:I.shipping)==null?void 0:r.free_threshold,deliveryCalculationResult:t}))return 0;const ie=Mt((t==null?void 0:t.calculation_details)||{}),Z=Number(Ke==null?void 0:Ke.amount),Ee=ie&&Number.isFinite(Z)&&Z>0,ne=(t==null?void 0:t.success)===!0&&typeof(t==null?void 0:t.shipping_cost)=="number";return t!=null&&t.pending?"FETCHING":Ee?Z:S==="additional_cost_required"||S==="quote_required"?Ns(t)?"TBD":(t==null?void 0:t.shipping_cost)??a.calculated_shipping_cost??0:S==="courier_guy_live_rate"&&Ke?Ke.amount:S==="fixed_cost_inhouse"||S==="standard_shipping"?((n=a.delivery_calculation_result)==null?void 0:n.shipping_cost)||0:(t==null?void 0:t.success)===!1?"TBD":ne?t.shipping_cost:a.calculated_shipping_cost||0}return 0},Pt=()=>{if(!Array.isArray(O))return 0;const e=Pe(),r=Qe(ri),n=Math.max(0,e-r),t=Ei(),c=(t==="TBD"||t==="FETCHING"||t==="CONFIRM_ADDRESS"?0:t)+pn();return n+c},_r=(e=ri,r=null,n=0)=>{const t=Pe(),o=Math.max(0,t-n),c=Qe(e,o),u=r!==null?r:Math.max(0,o-c),s=Ei(),p=(s==="TBD"||s==="FETCHING"||s==="CONFIRM_ADDRESS"?0:s)+pn(),v=u+p,S=v/(1+An),Y=S<0?-.005:.005,ie=Math.floor((S+Y)*100)/100;return v-ie},Cr=e=>{const r=n=>n.current?n.current.value:"";M(n=>({...n,recaptchaToken:e,shippingStreet:r(Ki)||n.shippingStreet||"",shippingUnit:r(tn)||n.shippingUnit||"",shippingBuilding:n.shippingBuilding||"",shippingSuburb:r(Qi)||n.shippingSuburb||"",shippingCity:r(Ji)||n.shippingCity||"",shippingPostalCode:r(Yi)||n.shippingPostalCode||"",shippingCountry:r(nn)||n.shippingCountry||"",additionalInstructions:r(Di)||n.additionalInstructions||""})),Si(null)},E=(e,r="success",n=6e3)=>{if(!e)return;const t=typeof e=="string"?e:"An unknown error occurred";di(o=>({...o,open:!1})),setTimeout(()=>{di({open:!0,message:t,type:r,duration:n})},100)},dn=l.useCallback(e=>{if(!e)return"";const r=e.includes("/")||/[\\%#?&=\s]/.test(e);return encodeURIComponent(r?encodeURIComponent(e):e)},[]),hn=l.useCallback(e=>{if(!e)return null;const r={...e};return Array.isArray(r.variants)&&(r.variants=r.variants.map(n=>{const t={...n};return delete t.extras,delete t.mass,delete t.source_file,delete t.source_row,delete t.source_row_data,t})),Array.isArray(r.product_inserts)&&(r.product_inserts=r.product_inserts.map(n=>{const t={...n};return delete t.mass,delete t.source_file,delete t.source_row,delete t.source_row_data,t})),delete r.source_file,delete r.source_row,delete r.source_row_data,delete r.weight,delete r.mass,r},[]),Sr=l.useCallback(async e=>{if(!(e!=null&&e.sku)||A(e))return;const r=e.is_insert&&e.insert_product_sku?e.insert_product_sku:e.sku;try{const n=await G.get(`/api/products/${dn(r)}/`);n.data&&(yn(hn(n.data)),bn(r),_n(e.quantity||1),Cn(!0))}catch(n){Oe("Failed to load product details:",n),E("Failed to load product details","error")}},[hn,dn,A]),vr=l.useCallback(async(e,r=1,n=null,t={})=>{const o={};t.isInsert&&(o.isInsert=!0,o.parentSku=t.parentSku,o.insertType=t.insertType||"insert");const c=await le(e,r,n||e.sku,o);return await fr(),await H(!0),E("Successfully added to cart","success"),c},[le,H]),xr=l.useCallback(async e=>{await G.post("/api/add-to-quote/",e),E("Successfully added to quote","success")},[]),kr=(e=a)=>{var d;const r=document.forms.checkoutForm,n=p=>p==="shippingStreet"&&Ki.current?Ki.current.value||e[p]||"":p==="shippingSuburb"&&Qi.current?Qi.current.value||e[p]||"":p==="shippingCity"&&Ji.current?Ji.current.value||e[p]||"":p==="shippingPostalCode"&&Yi.current?Yi.current.value||e[p]||"":p==="additionalInstructions"&&Di.current?Di.current.value||e[p]||"":r&&r.elements[p]?r.elements[p].value||e[p]||"":e[p]||"";let t=[];const o=n("shipping_method")||e.shipping_method||"courier",c=Ti({shippingStreet:n("shippingStreet"),shippingSuburb:n("shippingSuburb"),shippingCity:n("shippingCity"),shippingProvince:n("shippingProvince")||e.shippingProvince||"",shippingPostalCode:n("shippingPostalCode")});if(m?K&&Q.length>0?(t=["phone","paymentMethod"],o==="courier"&&t.push("confirmShippingAddress")):o==="collect"?t=["phone","paymentMethod"]:(t=["phone","shippingStreet","shippingCity","shippingCountry","paymentMethod"],o==="courier"&&t.push("confirmShippingAddress")):o==="collect"?t=["firstName","lastName","email","phone","paymentMethod"]:(t=["firstName","lastName","email","phone","shippingStreet","shippingCity","shippingCountry","paymentMethod"],o==="courier"&&t.push("confirmShippingAddress")),!m&&!e.recaptchaToken)return Si("Please complete the reCAPTCHA verification"),E("Please complete the reCAPTCHA verification","error"),!1;const u=t.filter(p=>{if(p==="confirmShippingAddress")return o!=="courier"?!1:!e[p];const v={shippingCity:c.city,shippingPostalCode:c.postalCode};return!(n(p)||v[p])});if(u.length>0){const p={firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Phone",shippingStreet:"Shipping Street",shippingSuburb:"Shipping Suburb",shippingCity:"Shipping City",shippingPostalCode:"Shipping Postal Code",paymentMethod:"Payment Method",confirmShippingAddress:"Shipping Address Confirmation"},v=u.map(S=>p[S]||S).join(", ");return E(`Please complete the following required fields: ${v}`,"error"),!1}if(n("shipping_method")==="courier"){if(ii&&(he.length>0||Le)&&!Se)return E("Please choose split delivery or wait for the complete order before calculating courier delivery.","error"),!1;if(Se==="split"){if((ee==null?void 0:ee.status)==="loading"||(ee==null?void 0:ee.status)==="idle"||(ee==null?void 0:ee.status)==="waiting_for_address")return E("Please wait for the balance delivery estimate before placing your order.","error"),!1;if((ee==null?void 0:ee.status)!=="success")return E((ee==null?void 0:ee.error)||"Balance delivery estimate is required for split delivery.","error"),!1}if(e.paymentMethod!=="quote"){const v=Ei();
5if(v==="TBD"||v==="FETCHING")return E("Shipping cost calculation is pending or failed. Please wait for the calculation to complete or contact support.","error"),!1;if(a.calculated_shipping_cost===void 0)return E("Please complete the delivery address fields (Street, City) for shipping calculation","error"),!1;if(((d=a.delivery_calculation_result)==null?void 0:d.success)===!1)return E("Shipping calculation failed. Please try again or select a different delivery method.","error"),!1}}const s=n("customerReference");if(s){if(s.length>50)return E("Customer reference number cannot exceed 50 characters","error"),!1;if((s.match(/ /g)||[]).length>3)return E("Customer reference number cannot contain more than 3 spaces","error"),!1;if(/[^a-zA-Z0-9\s\-_]/.test(s))return E("Customer reference number can only contain letters, numbers, spaces, hyphens, and underscores","error"),!1;if(s!==s.trim())return E("Customer reference number cannot have leading or trailing spaces","error"),!1}if(n("shipping_method")==="courier"){const p={shippingStreet:n("shippingStreet"),shippingSuburb:n("shippingSuburb"),shippingCity:n("shippingCity"),shippingProvince:n("shippingProvince")||e.shippingProvince||"",shippingPostalCode:n("shippingPostalCode"),shippingCountry:n("shippingCountry")||"South Africa"};if(p.shippingStreet||p.shippingCity){const v=on(p),S=et(p);ln(v)?mi.current!==S?(ci(v),Ve(!0)):Ve(!1):(mi.current="",ci(null),Ve(!1))}}return!0},wr=async e=>{var t,o,c;if(e.preventDefault(),gi){E("Please wait for shipping calculation to finish or cancel it first.","warning");return}_.trackEvent("checkout_form_submit_attempt",{event_category:"ecommerce",payment_method:a.paymentMethod,shipping_method:((t=a.shippingMethod)==null?void 0:t.method)||a.shippingMethod,order_total:Pt()});const r=document.forms.checkoutForm;if(!r)return;if(a.shipping_method==="courier"&&!a.confirmShippingAddress){ki(!0);return}if(a.shipping_method==="courier"&&!a.quoteForced&&!cn){E("Shipping is still recalculating for this delivery address. Please wait a moment.","warning");return}const n=(c=(o=r.elements.phone)==null?void 0:o.value)==null?void 0:c.trim();if(!n){E("Phone number is required","error");return}if(!Ws(n)){E("Please enter a valid phone number","error");return}if(a.shipping_method==="courier"){if(qn(a,Ke)){E("Please select a courier service option before continuing.","error");return}if(Bs(a)==="FAIL"){_.trackEvent("checkout_ai_decision_blocked",{final_decision:"FAIL"}),E("We could not safely finalize courier packing for this order. Please contact support before placing your order.","error");return}}if(kr()){ae(!0);try{await Pr()}catch(u){Oe("Submit flow error:",u),E("Something went wrong while preparing your order. Please try again.","error"),ae(!1)}}},Pr=async()=>{var c,u;Qt({shipping:null,billing:null,payment:null,shippingMethod:null,general:null}),ft(null),_.trackAddShippingInfo(O,Pt(),((c=a.shippingMethod)==null?void 0:c.method)||a.shippingMethod),_.trackAddPaymentInfo(O,Pt(),a.paymentMethod);const e=document.forms.checkoutForm;if(!e){ae(!1);return}const r=Pe();let n={merryPerksDiscount:0,appliedBreakpoint:null,nextBreakpoint:null,structure:null,isDayRule:!1};Ye("ð¯ Frontend: MerryPerks calculation debug:",{profile:T,discount_structures:T==null?void 0:T.discount_structures,subtotal:r});let t=window.checkoutProfileData||T;if(!(t!=null&&t.discount_structures)&&m)try{const d=(await G.get("/api/profile/")).data;window.checkoutProfileData=d,t=d}catch(s){Oe("â Failed to reload profile data:",s)}if(t!=null&&t.discount_structures&&t.discount_structures.length>0){const s=t.discount_structures[0];if(Ye(" structure:",s),s.breakpoints&&s.breakpoints.length>0){const d=nt(s,s.breakpoints,r);Ye(" dynamicResult:",d),n={merryPerksDiscount:d.discount,appliedBreakpoint:d.appliedBreakpoint,nextBreakpoint:d.nextBreakpoint,structure:s,isDayRule:d.isDayRule}}}Ye(" final merryPerksCalculation:",n),Ye("ðºï¸ Current coordinates at submission:",{shipping_latitude:a.shipping_latitude,shipping_longitude:a.shipping_longitude,shipping_zoom:a.shipping_zoom});const o=zs({form:e,formData:a,isAuthorized:m,selectedAddressId:K,deliveryAddresses:Q,currentProfile:t,voucherPassword:pt,merryPerksCalculation:n,selectedTcgRate:Ke,splitDeliveryRequired:Le,splitDeliveryChoice:Se,splitDeliverySelected:ke,splitBalanceShippingEstimate:ee,outOfStockItems:he,basketItems:O,isGiftVoucher:A});Ye("ð¤ Sending coordinates to backend:",{shipping_latitude:o.shipping_latitude,shipping_longitude:o.shipping_longitude,shipping_zoom:o.shipping_zoom});try{const s=await G.post("/api/checkout/",o);window.scrollTo(0,0),Ls({paymentMethod:o.payment_method,orderReference:s.data.order_reference,updateBasketCount:F,setBasketItems:de,fetchBasketCount:H,navigate:V,logDebug:Ye})}catch(s){if(Oe("Checkout error:",s),(u=s.response)!=null&&u.data){const d=s.response.data;if(d.existing_user){ft({message:"Account exists. Please login to continue.",login_url:d.login_url||"/login/"}),E("Account exists. Please login to continue.","error"),ae(!1);return}else if(d.recaptcha)Si(d.recaptcha),E(d.recaptcha,"error");else if(d.password)E(d.password,"error");else if(d.errors){const p=$s(d.errors,ht);E(p.message,"error",1e4),Qt(p.formErrors)}else E(d.message||"Please complete all required fields","error")}else E("An error occurred during checkout","error")}finally{ae(!1)}},Rr=e=>{M(r=>({...r,voucherCode:e}))},gn=async(e=a.voucherCode,r=pt)=>{if(e.trim()){Vt(!0),be("");try{const n=await G.post("/api/vouchers/validate/",{code:e,password:r,order_amount:Pe(),payment_method:a.paymentMethod,basket_items:O,order_type:a.paymentMethod==="quote"?"quote":"order",email:a.email||""});if(n.data){const t=Qe(n.data);M(o=>({...o,voucherCode:n.data.code,discount:t})),Ce(!0),D(t),vi(n.data),_.trackCouponUsage(n.data.code,t,Pe()),localStorage.setItem("checkout_voucher",n.data.code),localStorage.setItem("checkout_voucher_details",JSON.stringify(n.data)),window.setBasketVoucherInfo&&window.setBasketVoucherInfo(n.data),E("Voucher applied successfully","success")}}catch(n){if(Oe("Voucher validation error caught:",n),Fs(n))try{const{clearSessionStorage:o}=await On(async()=>{const{clearSessionStorage:u}=await import("./index-tAWMy1gn.js").then(s=>s.bx);return{clearSessionStorage:u}},__vite__mapDeps([0,1]));o(),await new Promise(u=>setTimeout(u,500));const c=await G.post("/api/vouchers/validate/",{code:e,password:r,email:a.email||""});if(c.data){const u=Qe(c.data);M(s=>({...s,voucherCode:c.data.code,discount:u})),Ce(!0),D(u),vi(c.data),localStorage.setItem("checkout_voucher",c.data.code),localStorage.setItem("checkout_voucher_details",JSON.stringify(c.data)),E("Voucher applied successfully","success");return}}catch{be("Connection issue while validating voucher. Please try refreshing the page."),E("Connection issue while validating voucher. Please try refreshing the page.","error");return}const t=qs(n);be(t),E(t,"error")}finally{Vt(!1)}}},Ir=()=>{M(e=>({...e,voucherCode:"",discount:0})),D(0),Ce(!1),be(""),vi(null),jt(""),localStorage.removeItem("checkout_voucher"),localStorage.removeItem("checkout_voucher_details"),window.setBasketVoucherInfo&&window.setBasketVoucherInfo(null),E("Voucher removed","success")};l.useEffect(()=>
5{const r=new URLSearchParams(window.location.search).get("voucher"),n=localStorage.getItem("checkout_voucher"),t=localStorage.getItem("checkout_voucher_details");if(r)localStorage.removeItem("checkout_voucher"),localStorage.removeItem("checkout_voucher_details"),gn(r);else if(n&&t)try{const o=JSON.parse(t),c=Qe(o);M(u=>({...u,voucherCode:n,discount:c})),Ce(!0),D(c),vi(o)}catch(o){Oe("Error parsing stored voucher details:",o),localStorage.removeItem("checkout_voucher"),localStorage.removeItem("checkout_voucher_details")}return()=>{!xe&&!a.voucherCode&&(localStorage.removeItem("checkout_voucher"),localStorage.removeItem("checkout_voucher_details"))}},[]),l.useEffect(()=>{a.shipping_method==="collect"&&!a.collection_method&&M(e=>({...e,collection_method:"pickup"}))},[a.shipping_method,a.collection_method]),l.useEffect(()=>{if(a.shipping_method==="courier"&&!a.delivery_calculation_result){const e=Ae();!!(e.shippingStreet&&e.shippingCity)||M(n=>({...n,delivery_calculation_result:{success:!1,error:"Waiting for address",pending:!0}}))}},[a.shipping_method]),l.useEffect(()=>{if(!Array.isArray(O)||O.length===0){Ut(!1),xi(null),hi(!1),Gt([]);return}(()=>{const r=[],n=[];O.forEach(s=>{var d,p;if(!A(s))if(Ye("Basket item structure:",{sku:s.sku,name:s.product_name,is_insert:s.is_insert,insert_product_sku:s.insert_product_sku,quantity:s.quantity,variant_details:s.variant_details}),s.is_insert&&s.insert_product_sku){const v=oe(s.sku,"insert")??s.quantity_on_hand??((d=s.variant_details)==null?void 0:d.quantity_on_hand)??0,S=s.quantity||1;v===0&&n.push({name:s.product_name||"Insert Product",sku:s.sku,type:"insert"}),v<S&&r.push({name:s.product_name||"Insert Product",sku:s.sku,type:"insert",available:v,required:S})}else{const v=oe(s.sku,"variant")??s.quantity_on_hand??((p=s.variant_details)==null?void 0:p.quantity_on_hand)??0,S=s.quantity||1;v===0&&n.push({name:s.product_name,sku:s.sku,type:"main"}),v<S&&r.push({name:s.product_name,sku:s.sku,type:"main",available:v,required:S})}});const t=r.length,o=t>0,c=JSON.stringify(he.map(s=>({sku:s.sku,available:s.available,required:s.required}))),u=JSON.stringify(r.map(s=>({sku:s.sku,available:s.available,required:s.required})));(c!==u||Le!==o)&&(console.log("ð Stock levels changed:",{currentOutOfStockCount:he.length,newOutOfStockCount:t,splitDeliveryRequired:Le,splitRequired:o,currentSplitSelected:ke}),Gt(r),Ut(o),t===0&&(console.log("ð Resetting split delivery selection because all items have sufficient stock"),xi(null),hi(!1),M(s=>s.splitShipping?{...s,splitShipping:!1}:s))),Kn(n)})()},[O,oe,he,Le]);const[Ar,fn]=l.useState(!1),[Er,Mr]=l.useState([]),[Fr,mn]=l.useState(0),[qr,yn]=l.useState(null),[Tr,bn]=l.useState(null),[Nr,_n]=l.useState(1),[Wr,Cn]=l.useState(!1),[Br,Sn]=l.useState(!1),[Or,zr]=l.useState(null);l.useEffect(()=>{gt&&$e.current&&$e.current.scrollIntoView({behavior:"smooth",block:"center"})},[gt]),l.useEffect(()=>{if(console.log("ð Checkout useEffect [selectedAddressId] - Running with:",{selectedAddressId:K,deliveryAddressesLength:Q.length,isManualAddressEntry:pe,currentFormData:{province:a.shippingProvince,city:a.shippingCity,suburb:a.shippingSuburb}}),pe){console.log("ð« SKIPPING selectedAddressId useEffect - user is manually entering address");return}if(K&&Q.length>0){const e=Q.find(r=>String(r.id)===String(K));console.log("ð Checkout useEffect [selectedAddressId] - Found address:",e),e&&(console.log("ð Checkout useEffect [selectedAddressId] - Setting formData with city:",e.city,"suburb:",e.suburb,"province:",e.province),console.log("â ï¸ WARNING: This will override Google Places data!"),console.log("â ï¸ OVERRIDING with:",{province:e.province,city:e.city,suburb:e.suburb}),M(r=>{var n,t,o,c,u,s,d,p;return{...r,shippingStreet:((n=e.street)==null?void 0:n.trim())||"",shippingUnit:((t=e.unit)==null?void 0:t.trim())||"",shippingBuilding:((o=e.building)==null?void 0:o.trim())||"",shippingSuburb:((c=e.suburb)==null?void 0:c.trim())||"",shippingCity:((u=e.city)==null?void 0:u.trim())||"",shippingProvince:((s=e.province)==null?void 0:s.trim())||"",shippingPostalCode:((d=e.postal_code)==null?void 0:d.trim())||"",shippingCountry:((p=e.country)==null?void 0:p.trim())||"",additionalInstructions:e.additional_instructions||"",shipping_latitude:e.latitude?parseFloat(e.latitude):null,shipping_longitude:e.longitude?parseFloat(e.longitude):null,shipping_zoom:e.zoom?parseInt(e.zoom):13,confirmShippingAddress:!1,calculated_shipping_cost:void 0,selected_courier_option:null,delivery_calculation_result:{success:!1,pending:!1,waiting_for_shipping_confirmation:!0,error:"Confirm delivery address to calculate shipping"}}}))}else console.log("ð Checkout useEffect [selectedAddressId] - No selectedAddressId or no delivery addresses")},[K,Q,pe]),l.useEffect(()=>{if(m&&N&&T){M(r=>({...r,firstName:N.first_name||r.firstName||"",lastName:N.last_name||r.lastName||"",email:N.email||r.email||"",phone:T.phone_number||r.ph
5one||"",title:T.title||r.title||""}));const e=window.checkoutProfileData||T;if(e.discount_structures&&e.discount_structures.length>0){const r=(o,c)=>{if(o.minimum_spend&&c<o.minimum_spend)return{applicable:!1,reason:`Below minimum spend of R${o.minimum_spend}`};let u=0,s=null;if(o.breakpoints&&o.breakpoints.length>0){const d=o.breakpoints.filter(p=>p.is_active&&c>=p.start_price).sort((p,v)=>v.start_price-p.start_price);d.length>0&&(s=d[0],u=c*s.discount_percentage/100)}if(o.active_days_discount&&Object.keys(o.active_days_discount).length>0){const p=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][new Date().getDay()],v=o.active_days_discount[p];if(v&&v.is_active&&v.discount_percentage>0){const S=c*parseFloat(v.discount_percentage)/100;S>u&&(u=S)}}return{applicable:u>0,discount:u,percentage:u>0?(u/c*100).toFixed(1):0,appliedBreakpoint:s}},n=O.reduce((o,c)=>o+c.price*c.quantity,0),t=r(e.discount_structures[0],n);t.applicable&&Ye("â
Checkout: Discount applicable:",{amount:`R${t.discount.toFixed(2)}`,percentage:`${t.percentage}%`,breakpoint:t.appliedBreakpoint?`R${t.appliedBreakpoint.start_price} â ${t.appliedBreakpoint.discount_percentage}%`:"Day-specific discount"})}else T.valuecard_category_code}},[m,N,T,pe]);const Lr=Ei(),vn={formData:a,setFormData:M,isAuthorized:m,getEffectiveShippingAddress:Ae,setCourierRates:Zi,setCourierRatesLoading:xt,setSelectedTcgRate:kt,setIsCalculatingShipping:yt,isCalculatingShipping:Zt,selectedTcgRate:Ke,isPackingAiMode:pr,setShowParcelDetailsModal:Dt,parcelDetailsRows:Ai,triggerShippingCalculation:async()=>{},ownCourierBookingDetails:dr,setDeliveryInfoContent:zr,setDeliveryInfoOpen:Sn,mustChooseDeliveryTiming:Te,api:G,courierShippingCharge:Lr},xn=e=>{const r=Ti(e);return{street:e.shippingStreet||"",unit:e.shippingUnit||"",building:e.shippingBuilding||"",suburb:e.shippingSuburb||"",city:e.shippingCity||r.city||"",province:e.shippingProvince||r.province||"",postal_code:e.shippingPostalCode||r.postalCode||"",country:e.shippingCountry||"South Africa"}},et=e=>Ni(e),kn=(e,r={})=>{const{is_guest:n=!1}=r,t=n?"Guest checkout: ":"";let o=!1;console.log(`ð ${t}Address change detected with data:`,e);const c=Ii.current;if(console.log(`ð ${t}Current shipping method:`,c.shipping_method),console.log(`ð ${t}Has updatedAddressData?`,!!e),!e){ci(null),Ve(!1);return}const u={shippingStreet:e.shippingStreet??c.shippingStreet,shippingUnit:e.shippingUnit??c.shippingUnit,shippingBuilding:e.shippingBuilding??c.shippingBuilding,shippingSuburb:e.shippingSuburb??c.shippingSuburb,shippingCity:e.shippingCity??c.shippingCity,shippingProvince:e.shippingProvince??c.shippingProvince,shippingPostalCode:e.shippingPostalCode??c.shippingPostalCode,shippingCountry:e.shippingCountry??c.shippingCountry},s=xn(u),d=!!(s.street&&s.city);if(M(v=>({...v,...e,...v.shipping_method==="courier"?d?Te?{confirmShippingAddress:!1,selected_courier_option:null,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,pending:!0,waiting_for_split_delivery_choice:!0,message:"Choose split delivery or wait for the complete order before calculating courier delivery."}}:{confirmShippingAddress:!1,selected_courier_option:null,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,pending:!1,waiting_for_shipping_confirmation:!0,error:"Confirm delivery address to calculate shipping"}}:{confirmShippingAddress:!1,selected_courier_option:null,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,error:"Waiting for address",pending:!0}}:{}})),e&&(e.shippingStreet||e.shippingCity)){const v=on(e),S=et(e);Ri.current&&clearTimeout(Ri.current),ln(v)?mi.current===S?(ci(null),Ve(!1)):(o=!0,Ri.current=setTimeout(()=>{ci(v),Ve(!0)},500)):(mi.current="",ci(null),Ve(!1))}if(o){M(v=>({...v,confirmShippingAddress:!1,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,pending:!1,error:"Please review your address before shipping is recalculated"}}));return}const p=()=>{const v=Ii.current;if(v.shipping_method==="courier"&&e){const S=xn(u),Y=S.street&&S.city;if(console.log(`ð ${t}Built delivery address:`,S),console.log(`ð ${t}Address completeness check:`,{street:!!S.street,suburb:!!S.suburb,city:!!S.city,province:!!S.province,postal_code:!!S.postal_code||"(optional)",country:!0,full_address:S}),!Y){console.log(`â¸ï¸ ${t}Incomplete address - waiting before shipping calculation:`,{street:!!S.street,suburb:!!S.suburb,city:!!S.city,postal_code:!!S.postal_code||"(optional)"});return}if(Te){console.log(`â¸ï¸ ${t}Shipping calculation waiting for delivery option and consent`);return}n&&Zi(null)}else console.log(`â ${t}NOT triggering calculation because:`,{shipping_method:v.shipping_method,is_courier:v.shipping_method==="courier",has_data:!!e})};if(n){B.current&&clearTimeout(B.current),B.current=setTimeout(p,500);return}B.current&&clearTimeout(B.current),B.current=setTimeout(p,500)},$r=e=>{kn(e,{is_guest:!1})},Vr=e=>{kn(e,{is_guest:!0})},it=async e=>{if(!e){M(t=>({...t,confirmShippingAddress:!1}));return}const r=Ae();mi.current=et(r),ci(null),Ve(!1);const n={street:r.shippingStreet||"",unit:r.shippingUnit||"",building:r.shippingBuilding||"",suburb:r.shippingSuburb||"",city:r.shippingCity||"",province:Os(r)||r.shippingProvince||"",postal_code:r.shippingPostalCode||"",country:r.shippingCountry||"South Africa"};if(!n.street||!n.city){M(t=>({...t,confirmShippingAddress:!1,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,error:"Waiting for address",pending:!0}})),E("Please complete the delivery address fields (Street, City) for shipping calculation","error");return}if(Te){M(t=>({...t,confirmShippingAddress:!1,calculated_shipping_cost:void 0,delivery_calculation_result:{success:!1,pending:!0,waiting_for_split_delivery_choice:!0,message:"Choose split delivery or wait for the complete order before calculating courier delivery."}})),E("Please choose split delivery or wait for the complete order before confirming delivery.","error");return}ki(!1),yt(!0),M(t=>({...t,confirmShippingAddress:!0,calculated_shipping_cost:void 0,selected_courier_option:null,delivery_calculation_result:{success:!1,pending:!0,message:"Calculating courier delivery."}}));try{await cr("courier",n,{force_recalculate:!0,skipAddressValidationGate:!0}),si&&await gr({force:!0})}finally{yt(!1)}},jr={formData:a,deliveryAddresses:Q,selectedAddressId:K,setSelectedAddressId:Fe,setFormData:M,shippingStreetRef:Ki,shippingUnitRef:tn,shippingSuburbRef:Qi,shippingCityRef:Ji,shippingPostalCodeRef:Y
5i,shippingCountryRef:nn,additionalInstructionsRef:Di,onAddressChange:Vr,confirmationCheckboxRef:$e,highlightConfirmationBlock:Jt,setShowConfirmationModal:ki,onShippingConsentChange:it,billingDetailsExpanded:Yn,setBillingDetailsExpanded:Dn,isLoadingProfileBilling:P},Ur={formData:a,setFormData:M,shopData:I,setSplitDeliverySelected:hi,setVoucherApplied:Ce,setVoucherDetails:vi,setVoucherError:be,ENABLE_COURIER_SHIPPING_OPTIONS:Zs},Gr={voucherPassword:pt,onVoucherPasswordChange:jt,voucherCode:a.voucherCode,voucherApplied:U,voucherError:Ze,voucherLoading:Xe,onVoucherCodeChange:Rr,onVoucherSubmit:gn,onVoucherRemove:Ir,voucherDetails:ri,isVoucherValidForCart:mr,getVoucherInvalidReason:yr},Hr={basketItems:O,outOfStockItems:he,splitDeliveryRequired:Le,splitDeliveryChoice:Se,splitDeliverySelected:ke,onSplitDeliveryChoiceChange:e=>{if(!e||e===Se)return;const r=e==="split";xi(e),hi(r),M(n=>({...n,splitShipping:r,confirmShippingAddress:!1,selected_courier_option:null,calculated_shipping_cost:void 0,delivery_calculation_result:n.shipping_method==="courier"?{success:!1,pending:!1,waiting_for_shipping_confirmation:!0,message:"Confirm delivery address to calculate shipping."}:n.delivery_calculation_result}))},splitDeliveryEnabled:ii,paymentMethod:a.paymentMethod,balanceShippingEstimate:ee,formatCurrency:tt,isGiftVoucher:A},Kr={deliveryAddresses:Q,selectedAddressId:K,setSelectedAddressId:Fe,setIsManualAddressEntry:X,onAddressChange:$r,formData:a,onFormDataChange:M,isAuthorized:m,confirmationCheckboxRef:$e,highlightConfirmationBlock:Jt,onShippingConsentChange:it,shippingOptionsComponent:i(Tn,{shippingMethodProps:vn})},Qr=()=>{ki(!1),setTimeout(()=>{if($e.current){const e=$e.current.querySelector('input[type="checkbox"]');e&&e.focus(),$e.current.scrollIntoView({behavior:"instant",block:"center"})}},10)},Jr=l.useCallback(()=>{if($e.current){const e=$e.current.querySelector('input[type="checkbox"]');$e.current.scrollIntoView({behavior:"smooth",block:"center"}),e&&e.focus()}setTimeout(()=>{Yt(!0),setTimeout(()=>Yt(!1),2400)},420)},[]);return g("div",{children:[i(Ks,{showGallery:Ar,setShowGallery:fn,galleryImages:Er,activeImageIndex:Fr,setActiveImageIndex:mn,getImageUrlForDisplay:In,notification:De,onCloseNotification:or,showConfirmationModal:gt,setShowConfirmationModal:ki,onAcknowledgeShippingConfirmation:Qr,showParcelDetailsModal:ir,setShowParcelDetailsModal:Dt,parcelDetailsRows:Ai,onCopyParcelDetails:hr,showShippingWarningModal:Xn,setShowShippingWarningModal:ji,shippingWarningData:er,showAddressValidationWarning:_t,setShowAddressValidationWarning:Ve,addressValidationData:tr,onContinueWithAddress:()=>{const e=Ae();mi.current=et(e),Ve(!1),M(r=>({...r,confirmShippingAddress:!1}))}}),i(Es,{isOpen:Wr,onClose:()=>{Cn(!1),yn(null),bn(null),_n(1)},product:qr,onAddToCart:vr,onAddToQuote:xr,initialVariantSku:Tr,initialQuantity:Nr}),!m&&i($n,{open:R,onClose:()=>b(!1),onSuccess:()=>{b(!1),E("Successfully logged in!","success")}}),i(js,{open:gi&&!_t,progressPercent:bt,progressStage:wi,calculationStartedAt:Ui,defaultStage:ni[0],onCancel:ar}),g("div",{className:"flex flex-col md:flex-row",children:[g("div",{className:"flex-none",children:[i(En,{forceHidden:rn}),i(En,{overlayMode:!0,open:sr,onClose:()=>sn(!1)})]}),g("div",{className:"flex-1 min-w-0 px-2 py-0 sm:px-4 sm:py-0",children:[rn&&i("div",{className:"flex items-center mb-4 md:mb-5",children:i("button",{"aria-label":"Open navigation",className:"flex items-center justify-center w-10 h-10 bg-white border border-gray-200 rounded-full shadow hover:bg-gray-100 focus:outline-none mr-3",onClick:()=>sn(!0),tabIndex:0,children:i(gs,{size:22})})}),i(y,{sx:{display:"flex",mb:3,justifyContent:{xs:"center",md:"flex-start"}},children:i(fe,{onClick:te,startIcon:i(ms,{}),sx:{color:"text.primary","&:hover":{backgroundColor:"action.hover"},fontSize:"0.9rem",py:1,px:2,minHeight:"48px"},children:"Back to Basket"})}),g(L,{container:!0,spacing:{xs:2,md:4},children:[i(Qs,{loading:xe,error:j,basketItems:O,isGiftVoucher:A,getUpdatedPrice:re,getUpdatedQOH:oe,formatPackDisplay:W,primaryBlue:qt,formatCurrency:tt,getImageUrlForDisplay:In,getResizedImageUrl:k,onOpenGallery:(e,r=0)=>{mn(r),Mr(e),fn(!0)},onOpenProductModal:Sr,voucherApplied:U,voucherDetails:ri,t:f,calculateSubtotal:Pe,calculateDiscount:Qe,calculateShippingCost:Ei,calculateTaxPortion:_r,calculateDynamicDiscount:nt,formatDayRuleText:fs,formData:a,getEffectiveShippingAddress:Ae,profile:T,vatRate:An,mustChooseDeliveryTiming:Te,splitDeliverySelected:ke,balanceShippingEstimate:ee}),i(L,{item:!0,xs:12,md:7,sx:{order:{xs:2,md:1}},children:i(Bi,{elevation:0,sx:{p:3,boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:g("form",{name:"checkoutForm",onSubmit:wr,noValidate:!0,autoComplete:"off",onKeyDown:e=>{if(e.key==="Enter"){const r=document.querySelector(".pac-container");if(r&&r.style.display!=="none"&&r.offsetParent!==null)return e.preventDefault(),!1}return!0},children:[i("input",{type:"hidden",name:"confirmShippingAddress",value:a.confirmShippingAddress?"true":""}),!m&&i(L,{container:!0,spacing:2,sx:{mb:2},children:i(Hn,{onLoginClick:()=>b(!0)})}),i(Un,{...Ur}),i(Gs,{outOfStockItems:he}),i(Us,{...Hr}),g(L,{container:!0,spacing:2,children:[a.shipping_method==="courier"&&(((wn=a.shippingCity)==null?void 0:wn.toLowerCase().includes("cape town"))||((Pn=a.shippingCity)==null?void 0:Pn.toLowerCase().includes("kaapstad")))&&Pe()<1e3&&i(L,{item:!0,xs:12,children:i("div",{className:"rounded-lg border relative overflow-hidden",style:{backgroundColor:"#00adef"},children:i("div",{className:"p-4 text-center",children:i("div",{className:"text-white font-medium text-sm",children:"Please note: If you purchase over R1000, and
5you are located in Cape Town, shipping is free!"})})})}),!m&&g(Me,{children:[i(jn,{formData:a,setFormData:M,expanded:Jn,setExpanded:Kt}),i(Vn,{formData:a,setFormData:M,emailExistsError:Zn,setEmailExistsError:ft})]})]}),g(y,{sx:{width:"100%",mt:3},children:[m?i($t,{...Kr,onShippingConsentChange:it}):g(Me,{children:[i(Tn,{shippingMethodProps:vn}),i(Ss,{...jr,onShippingConsentChange:it})]}),a.paymentMethod!=="quote"&&i(zn,{...Gr}),!m&&i(Gn,{onRecaptchaChange:Cr,recaptchaError:$i}),ht.general&&i(y,{sx:{mt:2,mb:2,p:2,bgcolor:"error.light",color:"error.contrastText",borderRadius:1},children:ht.general}),i(Lt,{formData:a,loading:xe,isCalculatingShipping:Zt,isAuthorized:m,onOnlyConfirmationOutstanding:Jr,needsCourierServiceSelection:qn(a,Ke),isCourierShippingQuoteCurrent:cn})]})]})})})]}),i(Hs,{open:!!Br,onClose:()=>Sn(!1),content:Or})]})]})]})};export{ul as default};
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.