1import{j as s,q as J,u as N,r as h,F as v,$ as Q,w as Z,B as S,a9 as z,by as _,bz as ee,I as w,bA as te,P as se,bw as ae,S as H}from"./elements-5kxJS_4j.js";import{x as ne,j as re,p as ie}from"./index-CtCeyryw.js";import{u as le}from"./useMutation-jkV-6MpM.js";import{t as D}from"./trackEvent-CeNPAPKA.js";import{C as E}from"./contactFieldMaxLengths-DkDsle-Q.js";import{H as oe,u as ce,E as de,c as j}from"./contactDetails-DS-9aPQX.js";import"./grids-DGmfp9GI.js";import"./startOfDay-AazlW55I.js";function k({children:e,className:t}){return s.jsx("div",{className:"min-h-screen w-full bg-slate-50 flex items-start justify-center px-4 py-8 sm:py-12",children:s.jsx("div",{className:J("w-full max-w-[600px] rounded-2xl bg-white p-6 sm:p-10 shadow-sm",t),children:e})})}const g="contactDetails.complete";function ue({hasPortalLogin:e}){const{t}=N(),a=ne(),[n,i]=h.useState(!1),l=!e&&!n,r=e?"/":"/login",o=()=>{D("contact-details:completed:cta",{destinationUrl:r,hasPortalLogin:e}),a(r)};return s.jsxs("div",{className:"flex flex-col items-center text-center",children:[s.jsx("div",{className:"flex size-20 items-center justify-center rounded-full bg-success",children:s.jsx(v,{icon:Q,className:"text-3xl text-white"})}),s.jsx("h1",{className:"mt-6 text-2xl font-bold text-base-header",children:t(`${g}.title`)}),s.jsx("p",{className:"mt-3 max-w-[420px] text-sm text-base-fg/70",children:t(`${g}.body`)}),l?s.jsxs("div",{"data-qa":"contact-details-portal-card",className:"mt-8 w-full rounded-xl border border-base-border bg-slate-50/60 p-5 text-left",children:[s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(v,{icon:Z,className:"mt-1 h-5 w-5 shrink-0 text-primary"}),s.jsxs("div",{children:[s.jsx("h2",{className:"text-base font-semibold text-base-header",children:t(`${g}.portalTitle`)}),s.jsx("p",{className:"mt-1 text-sm text-base-fg/70",children:t(`${g}.portalBody`)})]})]}),s.jsx(S,{variant:"primary",className:"mt-4 w-full justify-center",id:"contact-details-portal-cta","data-qa":"contact-details-portal-cta",onClick:o,children:t(`${g}.portalCta`)}),s.jsx("button",{type:"button",onClick:()=>i(!0),"data-qa":"contact-details-portal-dismiss",className:"mx-auto mt-3 block text-sm text-base-fg/60 hover:underline",children:t(`${g}.portalDismiss`)})]}):s.jsx(S,{variant:"primary",className:"mt-8 w-full justify-center",id:"contact-details-complete-cta","data-qa":"contact-details-complete-cta",onClick:o,children:t(`${g}.cta`)})]})}const me=/^\(\d{3}\) \d{3}-\d{4}$/,pe=/\s/;function xe(e){const t=e.indexOf("@");if(t<=0||t!==e.lastIndexOf("@"))return!1;const a=e.slice(t+1);if(pe.test(e))return!1;const n=a.lastIndexOf(".");return n>0&&a.length-n-1>=2}let B=0;function fe(e="new"){return B+=1,`${e}-${B}`}function be(e){const t=e.replace(/\D/g,"").slice(0,10);return t.length<=3?t:t.length<=6?`(${t.slice(0,3)}) ${t.slice(3)}`:`(${t.slice(0,3)}) ${t.slice(3,6)}-${t.slice(6)}`}function ye(e){return e.email?"email":"phone"}function C(e){return(e.kind==="email"?e.email:e.phone)??""}function he(e,t){return e.kind==="email"?{...e,email:t}:{...e,phone:t}}function M(){return{id:null,address1:"",address2:null,city:"",state:"",postalCode:"",streetNo:null,province:null,country:null,isInternational:!1,label:null}}function ge(e){const t=(e.contacts??[]).map(i=>({key:`contact-${i.id}`,id:i.id,kind:ye(i),email:i.email??null,phone:i.phone??null,isPrimary:i.isPrimary,removed:!1,isPortalLogin:i.isPortalLogin,label:i.label??null,countryCode:i.countryCode??null,extension:i.extension??null})),a=e.mailingAddress;if(a!=null&&a.isProperty)return{contacts:t,address:M(),propertyMailingAddress:{label:a.label??null,line:W(a)}};const n=a?{id:a.id,address1:a.address1??"",address2:a.address2??null,city:a.city??"",state:a.state??"",postalCode:a.postalCode??"",streetNo:a.streetNo??null,province:a.province??null,country:a.country??null,isInternational:a.isInternational,label:a.label??null}:M();return{contacts:t,address:n,propertyMailingAddress:null}}function X(e,t){return e.contacts.filter(a=>a.kind===t&&!a.removed).sort((a,n)=>Number(n.isPrimary)-Number(a.isPrimary))}function je(e,t,a){return{...e,contacts:e.contacts.map(n=>n.key!==t?n:he(n,n.kind==="phone"?be(a):a))}}function ve(e,t){return{...e,contacts:[...e.contacts,{key:fe(t),id:null,kind:t,email:t==="email"?"":null,phone:t==="p
1hone"?"":null,isPrimary:!1,removed:!1,isPortalLogin:!1,label:null,countryCode:null,extension:null}]}}function Ce(e,t){const a=e.contacts.find(n=>n.key===t);return!a||a.isPrimary?e:a.id===null?{...e,contacts:e.contacts.filter(n=>n.key!==t)}:{...e,contacts:e.contacts.map(n=>n.key===t?{...n,removed:!0}:n)}}function Ne(e,t){const a=e.contacts.find(n=>n.key===t);return!a||a.removed||!C(a).trim()?e:{...e,contacts:e.contacts.map(n=>n.kind!==a.kind?n:{...n,isPrimary:n.key===t})}}function L(e,t,a){return{...e,address:{...e.address,[t]:a}}}function F(e){return e.id===null&&!e.address1.trim()&&!e.city.trim()&&!e.state.trim()&&!e.postalCode.trim()&&!(e.address2??"").trim()}function $e(e){const t=C(e).trim();return e.kind==="phone"?t?me.test(t)?void 0:"invalidPhone":"phoneRequired":t?xe(t)?void 0:"invalidEmail":"emailRequired"}function Pe(e){if(F(e))return{};const t={};return e.address1.trim()||(t.address1="address1Required"),e.city.trim()||(t.city="cityRequired"),e.postalCode.trim()||(t.postalCode="zipRequired"),t}function Ae(e){const t={};for(const a of e.contacts){if(a.removed||a.id===null&&!C(a).trim())continue;const n=$e(a);n&&(t[a.key]=n)}return{contacts:t,address:Pe(e.address)}}function we(e){return Object.keys(e.contacts).length>0||Object.keys(e.address).length>0}function q(e,t){var a,n;return{isPrimary:t,label:e.label,email:((a=e.email)==null?void 0:a.trim())||null,countryCode:e.countryCode,phone:((n=e.phone)==null?void 0:n.trim())||null,extension:e.extension}}function ke(e){return{address1:e.address1.trim(),address2:e.address2,streetNo:e.streetNo,city:e.city.trim(),state:e.state.trim()||null,postalCode:e.postalCode.trim(),province:e.province,country:e.country,isInternational:e.isInternational,isMailing:!0,label:e.label,type:oe}}function Le(e,t){return!e||e.isProperty?!0:(e.address1??"")!==t.address1.trim()||(e.city??"")!==t.city.trim()||(e.state??null)!==(t.state.trim()||null)||(e.postalCode??"")!==t.postalCode.trim()||(e.address2??null)!==t.address2}function Ee(e,t){var a,n;return(e.email??null)!==(((a=t.email)==null?void 0:a.trim())||null)||(e.phone??null)!==(((n=t.phone)==null?void 0:n.trim())||null)||(e.label??null)!==t.label||(e.countryCode??null)!==t.countryCode||(e.extension??null)!==t.extension}function Se(e,t){if(F(t)||!Le(e.mailingAddress,t))return null;const a=ke(t);return t.id===null?{op:"createAddress",body:a}:{op:"replaceAddress",homeownerAddressId:t.id,body:a}}function qe(e,t){return e.id===null?C(e).trim()?{op:{op:"createContact",body:q(e,e.isPrimary)},isPromotion:!1}:null:t?e.isPrimary&&!t.isPrimary?{op:{op:"updateContact",contactId:e.id,body:q(e,!0)},isPromotion:!0}:Ee(t,e)?{op:{op:"updateContact",contactId:e.id,body:q(e,e.isPrimary)},isPromotion:!1}:null:null}function Ie(e,t){const a=new Map((e.contacts??[]).map(r=>[r.id,r])),n=Se(e,t.address),i=n?[n]:[],l=[];for(const r of t.contacts){if(r.removed)continue;const o=qe(r,a.get(r.id??-1));o&&(o.isPromotion?l.push(o.op):i.push(o.op))}for(const r of t.contacts)r.removed&&r.id!==null&&i.push({op:"deleteContact",contactId:r.id});return[...i,...l]}function W(e){const t=[(e.address1??"").trim(),(e.address2??"").trim()].filter(Boolean).join(", "),a=[(e.state??"").trim(),(e.postalCode??"").trim()].filter(Boolean).join(" ");return[t,(e.city??"").trim(),a].filter(Boolean).join(", ")}function De(e){return F(e)?null:W(e)}function Fe(e){const t=a=>X(e,a).filter(n=>C(n).trim()).map(n=>({key:n.key,value:C(n).trim(),isPrimary:n.isPrimary}));return{phones:t("phone"),emails:t("email"),address:De(e.address)}}function Oe({accountCount:e,companyName:t}){const{t:a}=N();return e<=1?null:s.jsx(z,{variant:"info",className:"mt-4 text-sm",iconSize:"small",children:s.jsx("span",{"data-qa":"contact-details-multi-account-banner",children:t?a("contactDetails.multiAccount.banner",{accountCount:e,companyName:t}):a("contactDetails.multiAccount.bannerNoCompany",{accountCount:e})})})}const G="contactDetails.edit";function K(){const{t:e}=N();return s.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-amber-400 px-2.5 py-0.5 text-xs font-medium normal-case text-amber-600",children:[s.jsx(v,{icon:_,className:"h-3 w-3"}),e(`${G}.primary`)]})}function Re({onClick:e,ariaLabel:t,qaAttribute:a}){const{t:n}=N();return s.jsxs("button",{type:"button",onClick:e,"aria-label":t,"data-qa":a,className:"inline-flex items-center gap-1.5 rounded-full border border-input-border px-2.5 py-0.5 text-xs font-medium normal-case text-base-fg/80 hover:bg-neutral/20 focu
1s:outline-none focus-visible:ring-2 focus-visible:ring-btn-active",children:[s.jsx(v,{icon:_,className:"h-3 w-3"}),n(`${G}.setPrimary`)]})}function Te(){const{t:e}=N();return s.jsxs("p",{role:"note","data-qa":"contact-details-sign-in-notice",className:"mt-1.5 flex items-start gap-2 text-xs text-base-fg/70",children:[s.jsx(v,{icon:ee,className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-primary"}),s.jsx("span",{children:e("contactDetails.signInNotice")})]})}const d="contactDetails.edit",Be=14,Me={phone:{primaryLabel:"phoneNumber",alternateLabel:"alternatePhone",placeholder:"phonePlaceholder",setPrimaryAriaLabel:"setPrimaryPhoneAriaLabel",removeAriaLabel:"removePhoneAriaLabel",addLabel:"addAlternatePhone",inputType:"tel",maxLength:Be},email:{primaryLabel:"emailAddress",alternateLabel:"alternateEmail",placeholder:"emailPlaceholder",setPrimaryAriaLabel:"setPrimaryEmailAriaLabel",removeAriaLabel:"removeEmailAriaLabel",addLabel:"addAlternateEmail",inputType:"email",maxLength:E.email}};function ze({draft:e,onDraftChange:t,accountCount:a,companyName:n,onSubmit:i}){const{t:l}=N(),[r,o]=h.useState(!1),u=Ae(e),b=e.address,x=e.propertyMailingAddress,$=c=>r&&u.contacts[c.key]?l(`${d}.${u.contacts[c.key]}`):void 0,P=c=>r&&u.address[c]?l(`${d}.${u.address[c]}`):void 0,m=c=>{if(c.preventDefault(),we(u)){o(!0);return}i()},A=c=>{const O=X(e,c),y=Me[c],V=O.length>1;return s.jsxs(s.Fragment,{children:[O.map((f,U)=>{const R=U===0,T=l(`${d}.${R?y.primaryLabel:y.alternateLabel}`);return s.jsxs("div",{className:"mt-5 first:mt-0",children:[s.jsxs("div",{className:"mb-1 flex flex-wrap items-center gap-2",children:[s.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-base-header",children:T}),V&&(f.isPrimary?s.jsx(K,{}):s.jsx(Re,{onClick:()=>t(Ne(e,f.key)),ariaLabel:l(`${d}.${y.setPrimaryAriaLabel}`),qaAttribute:`contact-details-set-primary-${c}`}))]}),s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx(w,{id:`contact-${f.key}`,className:"flex-1",type:y.inputType,errorSpacing:!1,"aria-label":T,value:C(f),placeholder:R?void 0:l(`${d}.${y.placeholder}`),maxLength:y.maxLength,error:$(f),qaAttribute:`contact-details-${c}-input`,onChange:Y=>t(je(e,f.key,Y.target.value))}),!f.isPrimary&&s.jsx("button",{type:"button","aria-label":l(`${d}.${y.removeAriaLabel}`),"data-qa":`contact-details-remove-${c}`,onClick:()=>t(Ce(e,f.key)),className:"mt-0.5 flex size-10 shrink-0 items-center justify-center rounded-md border border-input-border text-base-fg/70 hover:bg-neutral/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-btn-active",children:s.jsx(v,{icon:te})})]}),f.isPortalLogin&&s.jsx(Te,{})]},f.key)}),s.jsxs("button",{type:"button","data-qa":`contact-details-add-${c}`,onClick:()=>t(ve(e,c)),className:"mt-2 flex items-center gap-2 text-sm font-medium text-base-link hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-btn-active",children:[s.jsx(v,{icon:se,className:"h-3.5 w-3.5"}),l(`${d}.${y.addLabel}`)]})]})};return s.jsxs("form",{onSubmit:m,noValidate:!0,children:[s.jsx("h1",{className:"text-2xl font-bold text-base-header",children:l(`${d}.title`)}),s.jsx("p",{className:"mt-2 text-sm text-base-fg/70",children:l(`${d}.intro`)}),s.jsx(Oe,{accountCount:a,companyName:n}),s.jsx("p",{className:"mt-4 text-sm text-base-fg/70",children:l(`${d}.instruction`)}),s.jsx("div",{className:"mt-6",children:A("phone")}),s.jsx("div",{className:"mt-6",children:A("email")}),x&&s.jsxs("div",{className:"mt-6","data-qa":"contact-details-property-mailing-address",children:[s.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide",children:l(`${d}.mailingAddress`)}),s.jsxs("p",{className:"mt-1","data-qa":"contact-details-property-address-value",children:[x.label?l(`${d}.propertyAddressLabel`,{label:x.label}):null,x.label?s.jsx("br",{}):null,x.line]}),s.jsx("p",{className:"mt-2 font-semibold text-base-header bg-primary-bg/10 p-2 rounded-md border border-primary-border",children:l(`${d}.propertyAddressDisclaimer`)})]}),s.jsx("div",{className:"mt-6",children:s.jsx(w,{id:"contact-details-address1",type:"text",label:l(`${d}.${x?"alternateMailingAddress":"mailingAddress"}`),labelClass:"text-xs font-semibold uppercase tracking-wide",errorSpacing:!1,value:b.address1,maxLength:E.address1,error:P("address1"),qaAttribute:"contact-details-address1-input",onChange:c=>t(L(e,"address1",c.target.value))})}),s.jsx("div",{className:"mt-5",children:s.jsx(w,{id:"contact-details-city",type:"text",label:l(`${d}.city`),labelClass:"text-xs font-semibold uppercase tracking-wide",errorSpacing:!1,value:b.city,maxLength:E.city,error:P("city"),qaAttribute:"contact-details-city-input",onChange:c=>t(L(e,"city",c.target.value))})}),s.jsxs("div",{className:"mt-5 grid grid-cols-2 gap-4",children:[s.jsx(w,{id:"contact-details-state",type:"text",label:l(`${d}.state`),labelClass:"text-xs font-semibold uppercase tracking-wide",errorSpacing:!1,value:b.state,maxLength:2,qaAttribute:"contact-details-state-input",onChange:c=>t(L(e,"state",c.target.value.toUpperCase()))}),s.jsx(w,{id:"contact-details-zip",type:"text",label:l(`${d}.zip`),labelClass:"text-xs font-semibold uppercase tracking-wide",errorSpacing:!1,value:b.postalCode,maxLength:E.postalCode,error:P("postalCode"),qaAttribute:"contact-details-zip-input",onChange:c=>t(L(e,"postalCode",c.target.value))})]}),s.jsx(S,{type:"submit",variant:"primary",className:"mt-8 w-full justify-center",id:"c
1ontact-details-review","data-qa":"contact-details-review",children:l(`${d}.submit`)})]})}const p="contactDetails.review";function I({label:e,lines:t,emptyLabel:a}){return s.jsxs("div",{className:"flex items-start justify-between gap-4 border-b border-base-border px-4 py-3 last:border-b-0",children:[s.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-base-header",children:e}),s.jsx("div",{className:"flex flex-col items-end gap-1.5",children:t.length===0?s.jsx("span",{className:"text-sm text-base-fg/60",children:a}):t.map(n=>s.jsxs("span",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"break-all text-right text-sm text-base-header",children:n.value}),n.isPrimary&&t.length>1&&s.jsx(K,{})]},n.key))})]})}function _e({draft:e,accountCount:t,isSubmitting:a,submitFailed:n,onConfirm:i,onBack:l}){const{t:r}=N(),o=Fe(e),u=t>1,[b,x]=h.useState(!1),$=(!u||b)&&!a;return s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-bold text-base-header",children:r(`${p}.title`)}),s.jsx("p",{className:"mt-2 text-sm text-base-fg/70",children:r(`${p}.intro`)}),s.jsx("p",{className:"mt-4 text-sm text-base-fg/70",children:r(`${p}.instruction`)}),s.jsxs("div",{className:"mt-4 rounded-lg bg-slate-50 py-1",children:[s.jsx(I,{label:r(`${p}.phone`),lines:o.phones,emptyLabel:r(`${p}.none`)}),s.jsx(I,{label:r(`${p}.email`),lines:o.emails,emptyLabel:r(`${p}.none`)}),s.jsx(I,{label:r(`${p}.address`),lines:o.address?[{key:"address",value:o.address,isPrimary:!1}]:[],emptyLabel:r(`${p}.none`)})]}),u&&s.jsx(ae,{id:"contact-details-multi-account-confirm",className:"mt-5",value:b,onChange:x,label:r("contactDetails.multiAccount.confirm",{accountCount:t}),"aria-label":r("contactDetails.multiAccount.confirm",{accountCount:t}),"data-qa":"contact-details-multi-account-confirm"}),n&&s.jsx(z,{variant:"danger",className:"mt-5 text-sm",iconSize:"small",children:r(`${p}.error`)}),s.jsx(S,{variant:"primary",className:"mt-6 w-full justify-center",id:"contact-details-confirm","data-qa":"contact-details-confirm",disabled:!$,onClick:i,children:a?s.jsx(H,{color:"white",className:"h-6 w-6"}):r(`${p}.submit`)}),s.jsx("button",{type:"button",onClick:l,disabled:a,"data-qa":"contact-details-back",className:"mx-auto mt-4 block text-sm text-base-fg/60 hover:underline disabled:cursor-not-allowed disabled:opacity-50",children:r(`${p}.back`)})]})}function He(e,t){return`${t}:${JSON.stringify(e)}`}async function Xe(e,t){for(const[a,n]of e.entries()){const i=He(n,a);if(!t.has(i)){switch(n.op){case"createAddress":await j.createAddress(n.body);break;case"replaceAddress":await j.replaceAddress(n.homeownerAddressId,n.body);break;case"createContact":await j.createContact(n.body);break;case"updateContact":await j.updateContact(n.contactId,n.body);break;case"deleteContact":await j.deleteContact(n.contactId);break}t.add(i)}}}function Ze(){const e=ce(m=>m.hasPortalLogin),t=re(m=>{var A;return(A=m.userSettings)==null?void 0:A.companyName}),[a,n]=h.useState("edit"),[i,l]=h.useState(null),r=h.useRef(new Set),{data:o,error:u,isPending:b}=ie({queryKey:["contactDetails"],queryFn:()=>j.get(),staleTime:1/0,refetchOnWindowFocus:!1,retry:!1});h.useEffect(()=>{o&&!i&&l(ge(o))},[o,i]);const{mutate:x,isPending:$,isError:P}=le({mutationFn:async()=>{if(!o||!i)return;const m=Ie(o,i);return await Xe(m,r.current),await j.complete(),m.length},onSuccess:m=>{D("contact-details:submitted",{operationCount:m??0,hasPortalLogin:e}),n("complete")}});return h.useEffect(()=>{var m;u&&D("contact-details:load:failed",{status:((m=u.response)==null?void 0:m.status)??null})},[u]),u?s.jsx(de,{companyName:t}):b||!o||!i?s.jsx(k,{className:"flex items-center justify-center py-24",children:s.jsx(H,{})}):a==="complete"?s.jsx(k,{children:s.jsx(ue,{hasPortalLogin:e})}):a==="review"?s.jsx(k,{children:s.jsx(_e,{draft:i,accountCount:o.accountCount,isSubmitting:$,submitFailed:P,onConfirm:()=>x(),onBack:()=>n("edit")})}):s.jsx(k,{children:s.jsx(ze,{draft:i,onDraftChange:l,accountCount:o.accountCount,companyName:t,onSubmit:()=>n("review")})})}export{Ze as Component};
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.