@tollbrothers/tollbrothers-ui 1.36.21 → 1.36.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import e,{Children as t,useEffect as a,useState as n,useRef as l,useCallback as o}from"react";import r from"blaze-slider";import{TransformWrapper as s,TransformComponent as i}from"react-zoom-pan-pinch";import{createPortal as c}from"react-dom";import{fetchEventSource as m}from"@microsoft/fetch-event-source";import d from"react-markdown";const u=({fill:t})=>e.createElement("svg",{fill:t,style:{width:"100%",height:"100%"},viewBox:"0 0 30 30",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M12.445 20.79a1.112 1.112 0 0 1 0 1.588 1.14 1.14 0 0 1-1.587 0l-6.65-6.65c-.207-.206-.334-.492-.334-.81s.127-.602.333-.81l6.651-6.65c.444-.443 1.143-.443 1.587 0s.444 1.144 0 1.588l-4.762 4.746h16.905c.62-.001 1.111.507 1.111 1.126s-.492 1.11-1.11 1.11H7.683z",fillRule:"evenodd"})),p=({fill:t})=>e.createElement("svg",{fill:t,style:{width:"100%",height:"100%",transform:"rotate(180deg)"},viewBox:"0 0 30 30",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M12.445 20.79a1.112 1.112 0 0 1 0 1.588 1.14 1.14 0 0 1-1.587 0l-6.65-6.65c-.207-.206-.334-.492-.334-.81s.127-.602.333-.81l6.651-6.65c.444-.443 1.143-.443 1.587 0s.444 1.144 0 1.588l-4.762 4.746h16.905c.62-.001 1.111.507 1.111 1.126s-.492 1.11-1.11 1.11H7.683z",fillRule:"evenodd"})),v=({children:n,mediaList:l=[],disablePagination:o=!1,cascadingConfig:s={},onNext:i=(()=>{}),onPrevious:c=(()=>{}),disableSlider:m=!1,disableZoom:d,setIsZoomedIn:v=(()=>null),isZoomedInRef:h})=>{const g=t.count(n)>1,E={all:{slidesToShow:1,slidesToScroll:1,slideGap:"20px",loop:!0,enableAutoplay:!1,stopAutoplayOnInteraction:!0,autoplayInterval:3e3,autoplayDirection:"to left",enablePagination:!1,transitionDuration:500,transitionTimingFunction:"ease",draggable:d}},y=e.useRef(),f=e.useRef(),N=e.useRef(!0),b=e.useRef(null),w=(e,t)=>{var a,n,o,r;N.current=!1,clearTimeout(b.current),b.current=setTimeout(()=>{N.current=!0},550),v(!1),h.current=!1,"next"===e?(t&&y.current.next(),i({mediaList:l,slideIndex:null==f||null===(a=f.current)||void 0===a||null===(n=a.blazeSlider)||void 0===n?void 0:n.stateIndex})):(t&&y.current.prev(),c({mediaList:l,slideIndex:null==f||null===(o=f.current)||void 0===o||null===(r=o.blazeSlider)||void 0===r?void 0:r.stateIndex}))};return a(()=>{if(!y.current&&!m){const e={...E,...s};y.current=new r(f.current,e)}},[]),a(()=>{const e=f.current;let t=0,a=null,n=null;const l=window.innerWidth;let o=40;l>=1200?o=120:l>=800&&(o=90);const r=e=>{var a,l;t=(null===(a=e.touches)||void 0===a||null===(l=a[0])||void 0===l?void 0:l.clientX)||e.clientX,"mousedown"===e.type&&(n=!0)},s=()=>{a=null,n=null},i=()=>{a=null,n=null},c=e=>{var l,r,s;const i="mousemove"===e.type,c=((null===(l=e.touches)||void 0===l||null===(r=l[0])||void 0===r?void 0:r.clientX)||e.clientX)-t;if(Math.abs(c)>o&&N.current&&(i&&n||!i&&1===(null===(s=e.touches)||void 0===s?void 0:s.length))){const e=c>0?"right":"left";e!==a&&(a=e,"left"===a?h.current||w("next",!0):"right"===a&&(h.current||w("prev",!0)))}else null!==a&&(a=null)},m=()=>{v(!1),h.current=!1};return d||(e.addEventListener("touchstart",r),e.addEventListener("touchmove",c),e.addEventListener("touchend",s),e.addEventListener("touchcancel",i),e.addEventListener("mousedown",r),e.addEventListener("mousemove",c),e.addEventListener("mouseup",s),window.addEventListener("resize",m)),()=>{e.removeEventListener("touchstart",r),e.removeEventListener("touchmove",c),e.removeEventListener("touchend",s),e.removeEventListener("touchcancel",i),e.removeEventListener("mousedown",r),e.removeEventListener("mousemove",c),e.removeEventListener("mouseup",s),window.removeEventListener("resize",m),N.current=!0}},[]),e.createElement("div",{className:"blaze-slider _acquk",ref:f},e.createElement("div",{className:"blaze-container _acquk"},e.createElement("div",{className:"blaze-track-container _acquk"},e.createElement("div",{className:(m?"":"blaze-track")+" _acquk"},n))),g&&e.createElement("div",{className:"controls _3tOV7"},e.createElement("button",{onClick:()=>w("prev"),className:"blaze-prev _1ooEo"},e.createElement(u,{fill:"#fff"})),!o&&e.createElement("div",{className:"blaze-pagination"}),e.createElement("button",{onClick:()=>w("next"),className:"blaze-next _1ooEo"},e.createElement(p,{fill:"#fff"}))))},h=({src:t,alt:o,title:r,url:s,opacity:i,callBack:c,Link:m,type:d,poster:u})=>{const[p,v]=n(!1),[h,g]=n(null),[E,y]=n(!1),f=l(null),N=l(null),b=l(null),w=null==d?void 0:d.toLowerCase().includes("video"),C=t&&!w?t:u,_=t&&!w?t.replace("_1920.","_920."):u,k=()=>{f.current&&(f.current.style.opacity=1),N.current&&(N.current.style.opacity=1),b.current&&(b.current.style.opacity=i||0)};return a(()=>{if(N.current&&N.current.complete){const{naturalWidth:e,naturalHeight:t}=N.current;v(e<t),k()}t&&w&&g(t)},[]),e.createElement("div",{className:"_16utp "+(p?"_1Kd2Z":null)},s&&e.createElement(m,{href:s,className:"_30Nki"},r),e.createElement("div",{className:"_1pOqB",ref:b}," "),!E&&e.createElement("picture",null,e.createElement("source",{media:"(max-width: 920px)",srcSet:_}),e.createElement("source",{media:"(min-width: 921px)",srcSet:C}),e.createElement("img",{className:"_12xcH",src:_,alt:o||"",onLoad:e=>{const{naturalWidth:t,naturalHeight:a}=e.target;v(t<a),k(),c&&c()},ref:N})),w&&h&&e.createElement("video",{className:"_1Nu9k",src:h,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,onLoadedData:()=>{y(!0),k()}}),p&&!E&&e.createElement("picture",null,e.createElement("source",{media:"(max-width: 920px)",srcSet:_}),e.createElement("source",{media:"(min-width: 921px)",srcSet:C}),e.createElement("img",{className:"_1eZH0",src:_,alt:o||"",ref:f})))};function g(e,t){return t?e.unshift(e.pop()):e.push(e.shift()),e}function E({slides:t,overlayOpacity:o,Link:r,...s}){const i=l(t),[c,m]=n(t[0]||{image:"",title:"",URL:""}),[d,u]=n(),[p,v]=n(!1),[E,y]=n(0),f=l(null),N=l(null),b=()=>{var e;null!==(e=window.toll)&&void 0!==e&&e.heroComponentSlides&&(g(window.toll.heroComponentSlides,!0),g(window.toll.heroComponentSlides,!0),y(e=>e+1))};return a(()=>(window.toll||(window.toll={}),window.toll.heroComponentSlides=null,window.toll.isHeroComponentFlipping=!1,window.toll.resetHeroSlides=b,window.toll.debugHeroComponent&&console.log("Hero component mounted"),()=>{clearTimeout(N.current),clearTimeout(f.current),delete window.toll.isHeroComponentFlipping}),[]),a(()=>{const e=window.toll.heroComponentSlides||i.current;(null==e?void 0:e.length)>1&&u(E+1<(null==e?void 0:e.length)?e[E+1]:e[0])},[E]),e.createElement("div",{className:"_2KJsi"},e.createElement("div",{className:"_2gi5v _3K2k2 "+(p?"_2JinS":"")},d&&e.createElement(h,{src:d.image,alt:d.title?d.title:"",title:d.title,opacity:o,url:d.URL,callBack:()=>{window.toll.debugHeroComponent&&console.log("Next image loaded"),clearTimeout(f.current),f.current=setTimeout(()=>{window.toll.debugHeroComponent&&console.log("Fading in next image"),v(!0),setTimeout(()=>{window.toll.debugHeroComponent&&console.log("Changing slides"),d&&(window.toll.debugHeroComponent&&console.log("Setting current slide to next slide"),m(d),(()=>{clearTimeout(N.current);const e=window.toll.heroComponentSlides||i.current;window.toll.isHeroComponentFlipping=!0,window.toll.debugHeroComponent&&console.log("Flipping slides",e),N.current=setTimeout(()=>{v(!1);let t=E+1;t>=e.length&&(t=0),y(t),window.toll.isHeroComponentFlipping=!1,window.toll.debugHeroComponent&&console.log("Flipping slides done")},1e3)})())},2e3)},6e3)},Link:r})),e.createElement("div",{className:"_2gi5v"},e.createElement(h,{src:c.image,alt:c.title?c.title:"",title:c.title,url:c.URL,opacity:o,Link:r,type:c.type,poster:c.poster})))}const y=(e,t,a)=>{const n={value:t};a&&(n.expiry=Date.now()+a);try{localStorage.setItem(e,JSON.stringify(n))}catch{}},f=e=>{try{const t=localStorage.getItem(e);return t?JSON.parse(t):null}catch{return null}},N=e=>{try{localStorage.removeItem(e)}catch{}},b=e=>Date.now()>e;var w={mediaWrapper:"_3vBmW",transformWrapper:"_1mbWq",transformContentClass:"_Rmr82",media:"_3SDin",show:"_29wxo",bottomRightNav:"_3Gs-f",mediaShareNav:"_2dxeI",mediaFacebookShare:"_3R4xW",mediaPinterestShare:"_18fBz",modelLink:"_3ACkB",iframeCover:"_UmlYE",iframeWithCaption:"_3eijh"};function C({media:t,showCaption:r,showModelLink:c=!1,showSocials:m,dataLayerPush:d,clickAction:u,index:p,mediaCount:v,backgroundColor:h,classes:g={},Link:E,disableZoom:y=!1,setIsZoomedIn:f=(()=>null),isZoomedIn:N=!1,isZoomedInRef:b}){var C,_;const k=l(null);let I=!1;const S=((e,t)=>{let a="";return e.url?a=e.url:!e.url&&(a=e.s1920x1080||e.s1800x815||e.s450x266||e.link||e.src||e.src_sm),a&&!a.startsWith("https://")&&a.indexOf("tollbrothers.com")<0&&a.indexOf("tollbrothers-static-public")<0&&(a="https://cdn.tollbrothers.com"+a),a})(t);let T=null,x=t.link||null;const L=t.title||"Duke",P=t.title||t.description||"";let $=t.description||t.title||"",A="image",M="";const[O,W]=n(!1),B=l(),F=(p+1).toString()+" / "+v.toString();null!=t&&null!==(C=t.type)&&void 0!==C&&C.includes("video")?(x=null,A="video",T=(e=>{let t="",a="?";return e.link.indexOf("?")>-1&&(a="&"),e.autoplay=e.autoplay||0,t="video::vimeo"===e.type?`https://player.vimeo.com/video/${e.link}${a}portrait=0&title=0&byline=0&badge=0&autoplay=${e.autoplay}`:"",t})(t),($&&r||v>1)&&(M=w.iframeWithCaption)):null!=t&&null!==(_=t.type)&&void 0!==_&&_.includes("walkthrough")&&(x=null,A="walkthrough",T=(e=>{let t="";return"walkthrough::matterport"===e.type?t="https://my.matterport.com/show/?m="+e.link+"&ts=2&lp=1&hl=1&qs=1&play=1&nt=0&search=0":(t=e.link,e.link.includes("?")||(t+="?v=1")),t})(t),($&&r||v>1)&&(M=w.iframeWithCaption)),r||($=t.description||t.title),/.svg$/.test(S)&&(I=!0);const D=function(e){u&&u(p)},R=()=>{W(!0)};return a(()=>{B.current&&B.current.complete&&W(!0)},[]),a(()=>{b&&!b.current&&null!=k&&k.current&&k.current.resetTransform()},[null==b?void 0:b.current]),e.createElement("div",{className:w.mediaWrapper},!O&&e.createElement("span",{className:"spinner"}),e.createElement("figure",{className:`${w.media} ${O?w.show:""} ${M}`},"image"===A&&e.createElement(s,{ref:k,initialScale:1,centerOnInit:!0,centerZoomedOut:!0,limitToBounds:!0,disabled:y,panning:{disabled:!N},onZoomStart:()=>{f(!0),b.current=!0},onZoomStop:(e,t)=>{var a;(null==e||null===(a=e.state)||void 0===a?void 0:a.scale)>1?(f(!0),b.current=!0):(f(!1),b.current=!1)}},e.createElement(i,{wrapperClass:w.transformWrapper,contentClass:w.transformContentClass},e.createElement("img",{className:I?"mediaSVG__adjust":"",src:S,alt:P,onClick:o(D,[p]),onLoad:R,loading:"lazy",ref:B}))),("video"===A||"walkthrough"===A)&&e.createElement(e.Fragment,null,e.createElement("iframe",{src:T,onLoad:R,allow:"autoplay; encrypted-media",loading:"lazy",ref:B}),e.createElement("div",{className:w.iframeCover+" mediaIframeCover__adjust",onClick:o(D,[p])})),x&&L&&c&&e.createElement(E,{href:x},e.createElement("a",{title:`View ${L} Model`},e.createElement("span",{className:w.modelLink},"View ",L," Model"))),($&&r||v>1)&&e.createElement("figcaption",{className:""+(g.figcaption??""),style:{backgroundColor:h}},r&&e.createElement("span",null,$),e.createElement("div",{className:w.bottomRightNav},v>1&&e.createElement("span",null,F),"image"===A&&m&&e.createElement("div",{className:w.mediaShareNav},e.createElement("button",{className:`${w.mediaFacebookShare} ${w.mediaShareButton} js-facebook-share-analytics-trig`,onClick:()=>{window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent(S)+"&t="+encodeURIComponent($),"sharer","toolbar=0,status=0,width=626,height=436"),d&&d({event:"facebook_share"})}}),e.createElement("button",{className:`${w.mediaPinterestShare} ${w.mediaShareButton} js-pinterest-share-analytics-trig`,onClick:()=>{window.open("http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(S)+"&description="+encodeURIComponent($),"sharer","toolbar=0,status=0,width=626,height=436"),d&&d({event:"pinterest_share"})}}))))))}const _=({animate:t,autoFocus:n,children:o,onClose:r,onCloseHandler:s,siteplan:i,show:c})=>{const m=l(null);return a(()=>{c&&n&&null!=m&&m.current&&m.current.focus()},[c,n,null==m?void 0:m.current]),e.createElement("div",{className:`\n _3L7oc\n ${c?"_1XxTA":""}\n ${t?"_AfV0I":""}\n ${i?"_2DPdH":""}\n `,ref:m,tabIndex:0},o,r&&e.createElement("button",{className:"_2SgtC clear-styles closeButton",onClick:s}))},k=({children:t,show:l,onClose:o,siteplan:r,portalId:s})=>{const[i,m]=n(!1);a(()=>{l&&m(!0),l||null===l||o||d()},[l]);const d=()=>{m(!1),o&&o()};return s?c(e.createElement(_,{animate:i,children:t,onClose:o,onCloseHandler:d,siteplan:r,show:l,autoFocus:!0}),document.getElementById(s)):e.createElement(_,{animate:i,children:t,onClose:o,onCloseHandler:d,siteplan:r,show:l})},I=({show:t=!1,mediaList:a=[],showSocials:o=!1,dataLayerPush:r=null,onClose:s=(()=>{}),onNext:i=(()=>{}),onPrevious:c=(()=>{}),initialSlide:m=1,backgroundColor:d,portalId:u,classes:p={},disableSlider:h=!1,showLeftCloseButton:g=!1,disableZoom:E=!1})=>{const y=((e,t)=>{const a=[...e],n=e.length-t;let l=0;do{l+=1,a.unshift(a.pop())}while(l<n);return a})([...a],m-1),[f,N]=n(!1),b=l(!1),w=()=>{N(!1),b.current=!1,s()};return t&&e.createElement(k,{show:!0,portalId:u},e.createElement("div",{className:"_FWxfB full"},g&&e.createElement("button",{className:"_3lEMV _E4XkO "+(p.closeButton??""),onClick:w}),e.createElement("button",{className:"_3lEMV "+(p.closeButton??""),onClick:w}),e.createElement("div",{className:"_hWjY9"},e.createElement(v,{mediaList:y,disablePagination:!0,onNext:i,onPrevious:c,disableSlider:h,disableZoom:E,isZoomedInRef:b,setIsZoomedIn:N},y.map(function(t,a){return e.createElement("div",{className:"_1K4yC",key:a},e.createElement(C,{media:t,index:a,mediaCount:y.length,showSocials:o,dataLayerPush:r,showCaption:!0,backgroundColor:d,classes:p,disableZoom:E,isZoomedIn:f,setIsZoomedIn:N,isZoomedInRef:b}))})))))},S=({children:t,onClick:a,buttonColor:n,className:l="",type:o="button",disabled:r=!1})=>{let s="";return"white"==n&&(s="_fMM0t"),e.createElement("button",{type:o,disabled:r,className:`_2CL0u ${s} ${l}`,onClick:a},t)};var T={track:"_Xnsae",rangeInput:"_VNfw6"};const x=({number:t,setNumber:a,step:n,minValue:l,maxValue:o,className:r,onChange:s})=>e.createElement("div",{className:T.dragSliderWrapper},e.createElement("div",{className:T.track,id:"track"},e.createElement("input",{className:`${T.rangeInput} ${r} ada-override`,name:"minDragSlider",type:"range",min:l,max:o,step:n,value:t,onChange:e=>{a(e.target.value),s&&s(e.target.value)},style:{backgroundSize:100*(t-l)/(o-l)+"% 100%"}}))),L=e=>{if(!e)return;e.classList.add("printable");let t=e.parentElement;for(;t&&t!==document.body;){const e=window.getComputedStyle(t).display;t.style.display||t.classList.contains("js-noprint")||(t.style.setProperty("display",e,"important"),t.classList.add("js-clear-display-style")),t=t.parentElement}document.body.classList.add("print-mode");const a=()=>{document.body.classList.remove("print-mode"),e.classList.remove("printable"),document.querySelectorAll(".js-clear-display-style").forEach(e=>{e.classList.remove("js-clear-display-style"),e.style.removeProperty("display")}),window.removeEventListener("afterprint",a)};window.addEventListener("afterprint",a),setTimeout(()=>{window.print()},200)},P=e=>e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,","),$=(e,t,a=2)=>Math.round((e/100*t).toFixed(a)),A=(e,t,a=!0)=>{var n;let l=null==e?void 0:e.replace(/[^0-9.]/g,"");return a||(l=null==e?void 0:e.replace(/[^0-9]/g,"")),t&&(null===(n=l)||void 0===n?void 0:n.length)>1&&l.startsWith("0")&&(l=l.slice(1)),l},M=({classes:t={},onClick:a,children:n})=>e.createElement("button",{className:`_1vTfv ${null!=t&&t.root?t.root:""} clear-styles js-noprint`,type:"button",onClick:a},e.createElement("img",{className:"_2LMvr "+(null!=t&&t.icon?t.icon:""),src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/print.svg"}),n&&e.createElement("div",{className:"_2QQ2W "+(null!=t&&t.content?t.content:"")},n));var O={calculatorWrapper:"_39eVT",left:"_ZBip_",right:"_3YrBp",printButton:"_3dzg8",estimatedPayment:"_2LdGv",graphic:"_14yhQ",principal:"_3m_y6",taxes:"_1VA0p",storyBook:"_1CQl8",details:"_1eRaH",toolTipLaunch:"_3KVQK",toolTip:"_foK4M",isActive:"_2yO5X",close:"_3VWG8",dragSliderWrapper:"_gT0kh",sliderWrapper:"_2C99A",dragWrapper:"_1d3M9",error:"_3b7Hp",callOutWrapper:"_2ldV0",down:"_13m8z",dropDownArrow:"_zFNpl",input:"_2ZBwg",inputFont:"_1zyp5",inputPercentage:"_1k3EF",inputWrapper:"_1GA5s",advancedButtonWrapper:"_5g_rP",open:"_FAdIf",tbdotcom:"_2Lp5J",tbmortgage:"_3gXTs"};const W=({initialSalesNumber:t=1e5,initialInterestRate:o=3.5,maxSalePrice:r=1e6,targetClass:s,printElementRef:i,classes:c={}})=>{const m=l(null),d=l(!1),u=l(!1),[p,v]=n(t),[h,g]=n(30),[E,y]=n(o),[f,N]=n(0),[b,w]=n(0),[C,_]=n(0),[k,I]=n(()=>$(20,t)),[S,T]=n(20),[W,B]=n(0),[F,D]=n(0),[R,V]=n(0),[z,j]=n(0),[H,U]=n(0),[q,G]=n(0),[Q,J]=n(0),[Y,K]=n(!0),[Z,X]=n(!1);let ee;const te=(e,t,a=(()=>null))=>{const n=A(e,!0,!1);n>=0?(t(n),a(Number(n)?((e,t,a=2)=>(e/t*100).toFixed(a))(n,p):0)):(t(""),a(0))},ae=(e,t,a=(()=>null))=>{const n=A(e,!1,!0);n>=0?(t(n),a($(n,p))):(t(""),a(0))},ne=e=>{const t=e.currentTarget,a=t.nextElementSibling,n=document.querySelectorAll('[role="tooltip"]'),l=document.querySelectorAll(".js-tooltip-trigger");n.forEach(e=>e.classList.remove(O.isActive)),l.forEach(e=>e.setAttribute("aria-expanded","false")),null==a||a.classList.add(O.isActive),t.setAttribute("aria-expanded","true")},le=e=>{const t=e.currentTarget,a=t.nextElementSibling;null==a||a.classList.remove(O.isActive),t.setAttribute("aria-expanded","false")};a(()=>{const e=e=>{d.current="Tab"===e.key},t=()=>{d.current=!1};return window.addEventListener("keydown",e,!0),window.addEventListener("pointerdown",t,!0),()=>{window.removeEventListener("keydown",e,!0),window.removeEventListener("pointerdown",t,!0)}},[]);const oe=e=>{const t=d.current;d.current=!1,ne(e),t||(u.current=!0)},re=e=>{const t=e.currentTarget.parentElement,a=null==t?void 0:t.previousElementSibling;null==t||t.classList.remove(O.isActive),null==a||a.setAttribute("aria-expanded","false")},se=e=>{if(u.current)return void(u.current=!1);const t=e.currentTarget.nextElementSibling;if(null!=t&&t.classList.contains(O.isActive))le(e);else{const t=document.querySelectorAll('[role="tooltip"]'),a=document.querySelectorAll(".js-tooltip-trigger");t.forEach(e=>e.classList.remove(O.isActive)),a.forEach(e=>e.setAttribute("aria-expanded","false")),ne(e)}},ie=[10,15,20,30],[ce,me]=n(3);function de(e){const t=e.target,a=t.min;t.style.backgroundSize=100*(t.value-a)/(t.max-a)+"% 100%"}return a(()=>{g(ie[ce])},[ce]),a(()=>{ee=document.querySelectorAll('input[type="range"]'),ee.forEach(e=>{e.addEventListener("input",de)});const e=(()=>{const e=Number(p)-Number(k),t=Number(E)/1200,a=e*t,n=1-Math.pow(1+t,12*h*-1);let l=a/n<0?0:a/n;return l=Infinity===l?0:l,l})();let t=e+parseFloat(Math.round(W/12))+parseFloat(Math.round(R/12))+parseFloat(f);t=isNaN(t)?0:t,_(P(t.toFixed(0)));const a=R/12/t,n=f/t;U(W/12/t*360),G(360*a),J(360*n),w(e.toFixed(0))},[p,h,k,E,W,R,f]),a(()=>{K("tbdotcom"!==s&&"tbmortgage"!==s)}),e.createElement("div",{className:`${O.calculatorWrapper} ${O[s]}`,ref:m},e.createElement("div",{className:O.left},e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-sale-price"},"Sales Price"),e.createElement("input",{id:"mort-sale-price",type:"text",onChange:e=>(e=>{const t=A(e,!0,!1);t>=0?(v(t),I($(S,t)),B($(F,t)),V($(z,t))):(v(""),I(0),B(0),V(0))})(e.target.value),onBlur:()=>{v(Number(p)?p:0)},className:`${O.input} ${O.inputFont}`,value:"$"+P(p)})),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:r,number:Number(p)?p:0,setNumber:v,onChange:e=>{I($(S,e)),B($(F,e)),V($(z,e))},step:1e3}))),e.createElement("div",{className:`${O.sliderWrapper} ${O.loanTerm} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-loan-select"},"Loan Term"),e.createElement("span",{className:O.dropDownArrow}),e.createElement("select",{className:`${O.select} ${O.inputFont}`,name:"loanSelect",id:"mort-loan-select",onChange:e=>{const t=ie.indexOf(parseInt(e.target.value));me(t)},value:h},e.createElement("option",{value:"10"},"10 Years"),e.createElement("option",{value:"15"},"15 Years"),e.createElement("option",{value:"20"},"20 Years"),e.createElement("option",{value:"30"},"30 Years"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:ie.length-1,number:ce,setNumber:me}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:`${O.callOutWrapper} ${O.down}`},e.createElement("label",{htmlFor:"mort-down-payment-percent"},"Down Payment"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-down-payment",type:"text",onChange:e=>te(e.target.value,I,T),onBlur:()=>I(Number(k)?k:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(k)}),e.createElement("input",{id:"mort-down-payment-percent",type:"text",onChange:e=>ae(e.target.value,T,I),onBlur:()=>{T(Number(S)?Number(S):0)},className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:S}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:99,number:Number(S)?Number(S):0,setNumber:e=>{T(e),I($(e,p))},step:.5}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-int-rate"},"Interest Rate"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-int-rate",type:"text",onChange:e=>ae(e.target.value,y),onBlur:()=>{y(Number(E)?Number(E):0)},className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:E}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:12,number:Number(E)?Number(E):0,setNumber:y,step:.125}))),e.createElement("div",{className:O.advancedButtonWrapper+" js-noprint"},e.createElement("button",{type:"button",className:""+(Z?O.open:""),onClick:()=>{X(e=>!e)},"aria-expanded":Z,"aria-controls":"mortgage-advanced-options"},"Advanced Options")),Z&&e.createElement("div",{id:"mortgage-advanced-options"},e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-taxes"},"Taxes (Annual)"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-taxes-by-amount",type:"text",onChange:e=>{te(e.target.value,B,D)},onBlur:()=>B(Number(W)?W:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(W)}),e.createElement("input",{id:"mort-taxes-by-percentage",type:"text",onChange:e=>ae(e.target.value,D,B),onBlur:()=>D(Number(F)?Number(F):0),className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:F}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:12,number:Number(F)?Number(F):0,setNumber:e=>{D(e),B($(e,p))},step:.01}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-insurance"},"Insurance (Annual)"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-insurance-by-amount",type:"text",onChange:e=>te(e.target.value,V,j),onBlur:()=>V(Number(R)?R:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(R)}),e.createElement("input",{id:"mort-insurance-by-percentage",type:"text",onChange:e=>ae(e.target.value,j,V),onBlur:()=>j(Number(z)?Number(z):0),className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:z}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:12,number:Number(z)?z:0,setNumber:e=>{j(e),V($(e,p))},step:.05}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-hoa"},"HOA (Monthly)"),e.createElement("input",{id:"mort-hoa",type:"text",onChange:e=>te(e.target.value,N),onBlur:()=>N(Number(f)?f:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(f)})),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:5e3,number:Number(f)?f:0,setNumber:N,step:1}))))),e.createElement("div",{className:O.right},e.createElement("div",{className:`${O.callOutWrapper} ${O.estimatedPayment}`},e.createElement("div",{className:O.graphic},Y&&e.createElement("p",{className:`${O.taxes} ${O[s]}`,style:{background:`conic-gradient( #7cbf92 ${H}deg, #39484f ${H}deg ${q+H}deg, #cec18b ${q}deg ${q+H+Q}deg, #008289 ${Q}deg 360deg)`}},e.createElement("span",null,"$",C,e.createElement("span",null,"Total Estimated Monthly Payment"))),!Y&&e.createElement("p",{className:`${O.taxes} ${O[s]} `,style:{background:`conic-gradient( #8195A2 ${H}deg, #0C223F ${H}deg ${q+H}deg, #CEC18B ${q}deg ${q+H+Q}deg, #0070cd ${Q}deg 360deg)`}},e.createElement("span",null,"$",C,e.createElement("span",null,"Total Estimated Monthly Payment")))),Z&&e.createElement("div",{className:O.details},e.createElement("div",null,e.createElement("span",null,"Principal and Interest"),e.createElement("span",null,"$",P(b),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-principal","aria-expanded":"false","aria-label":"Learn about principal and interest"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-principal"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close principal and interest details",onClick:re},"x"),"Principal is the amount borrowed to purchase your home or the amount yet to be repaid. Interest is the cost of borrowing from your lender.")),e.createElement("div",null,e.createElement("span",null,"Taxes"),e.createElement("span",null,"$",P(Math.round(W/12)),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-taxes","aria-expanded":"false","aria-label":"Learn about property taxes"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-taxes"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close taxes details",onClick:re},"x"),"Your lender typically puts one-twelfth of your home's estimated annual property taxes into an escrow account to pay on your behalf.")),e.createElement("div",null,e.createElement("span",null,"Insurance"),e.createElement("span",null,"$",P(Math.round(R/12)),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-insurance","aria-expanded":"false","aria-label":"Learn about insurance"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-insurance"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close insurance details",onClick:re},"x"),"Your lender typically puts one-twelfth of your annual homeowners insurance premium into an escrow account to pay on your behalf. If your down payment is less than 20%, you may also be required to pay private mortgage insurance (PMI).")),e.createElement("div",null,e.createElement("span",null,"HOA"),e.createElement("span",null,"$",P(f),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-hoa","aria-expanded":"false","aria-label":"Learn about HOA fees"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-hoa"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close HOA details",onClick:re},"x"),"While not part of your mortgage payment, you may be required to pay fees imposed by your homeowners association."))),e.createElement(M,{classes:{root:O.printButton},onClick:()=>{L((null==i?void 0:i.current)||(null==m?void 0:m.current))}}))))},B=({children:t,showArrows:o,classes:r={},newIndex:s,getCurrentIndex:i=(()=>{}),useContainerWidth:c=!1})=>{const[m,d]=n(!1),[u,p]=n(!0),[v,h]=n(!0),[g,E]=n(0),[y,f]=n(!1),N=l(null),b=l([]);a(()=>{i(g)},[g]),a(()=>{w(s)},[s]);const w=e=>{if(N.current){let t=0;for(let a=0;a<e;a++){const e=window.getComputedStyle(N.current.children[a]),n=parseFloat(e.marginLeft.split("px")[0]),l=parseFloat(e.marginRight.split("px")[0]);t+=N.current.children[a].clientWidth+n+l}N.current.scrollTo({left:t,behavior:"smooth"})}};return a(()=>{const e=()=>{var e,t;(c?null==N||null===(e=N.current)||void 0===e?void 0:e.clientWidth:window.innerWidth)>=(null===(t=N.current)||void 0===t?void 0:t.scrollWidth)?h(!1):h(!0)};return window.addEventListener("resize",e),e(),setTimeout(()=>f(!0),500),()=>{window.removeEventListener("resize",e)}},[]),e.createElement("div",{className:`_2nftI ${r.root??""} `},o&&v&&e.createElement("div",{className:"_2IjN4 "+(r.controls??"")},e.createElement("button",{onClick:()=>{var e;const t=N.current,a=window.getComputedStyle(b.current),n=parseFloat(a.marginLeft.split("px")[0]),l=parseFloat(a.marginRight.split("px")[0]);t.scrollBy({left:-((null===(e=b.current)||void 0===e?void 0:e.offsetWidth)+(n+l+2))})},disabled:u},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/arrowexit.svg",alt:"Previous Slide"})),e.createElement("button",{onClick:()=>{var e;const t=N.current,a=window.getComputedStyle(b.current),n=parseFloat(a.marginLeft.split("px")[0]),l=parseFloat(a.marginRight.split("px")[0]);t.scrollBy({left:(null===(e=b.current)||void 0===e?void 0:e.offsetWidth)+(n+l+2)})},disabled:m},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/arrowexit.svg",alt:"Next Slide"}))),e.createElement("div",{className:"_2-_jM"},e.createElement("div",{className:`_2CovJ ${1===t.length?"_2TNYf":""} ${r.scrollWrap??""} scrollWrap`,ref:N,onScroll:()=>{if(!y)return;const e=N.current;d(e.scrollLeft>e.scrollWidth-e.clientWidth-10),p(0===e.scrollLeft);let t=0,a=Number.MAX_VALUE;for(let n=0;n<e.children.length;n++){const l=Math.abs(e.children[n].getBoundingClientRect().left-e.getBoundingClientRect().left);l<a&&(a=l,t=n)}E(t)}},Object.values(t).map((t,a)=>t&&e.createElement("div",{className:`_2YGpy ${r.scrollItem??""} scrollItem`,ref:b,key:t.key,"data-index":a},t)))))};var F={chatWrapper:"_1I4aA",waitMessage:"_1LVxT",persistentText:"_e6rlP",loading:"_2E1bH","chat-loader":"_3k24c",chatPanelOpen:"_U12_a",isMinimized:"_9Cz-j",messagesWrapper:"_1otKt",timestamp:"_2G4nP",textChatOptions:"_3aMNM",unreadMessagesIndicator:"_ELed2",textChatWrapper:"_2v0pd",textChatButtons:"_1dLsA",chatButton:"_3-jco",textButton:"_3QYxl",chatLaunch:"_3nyQS",oscHead:"_dve7Y",closeIcon:"_1pp_s",header:"_lXYkl",location:"_1cu-C",panelControls:"_3IVvF",chatInputWrapper:"_1A7eN",error:"_3Uh3l",callbackIframe:"_2y3x3",formContainer:"_1I-iH"};const D=e=>e?`https://cdn.tollbrothers.com/images/osc/${(e=>{let t="";for(let a=0;a<3;a++){let n=0;for(let t=4;t>=0;t--){const l=e.charAt(5*a+t);l>="A"&&l<="Z"&&(n+=1<<t)}t+="ABCDEFGHIJKLMNOPQRSTUVWXYZ012345".charAt(n)}return e+t})(e)}.jpg`:"",R=(e,t,a)=>{var n,l,o,r,s,i;const c={id:""+e.identifier,payload:null===(n=e.entryPayload)||void 0===n||null===(l=n.abstractMessage)||void 0===l?void 0:l.staticContent,type:e.entryType,text:null===(o=e.entryPayload)||void 0===o||null===(r=o.abstractMessage)||void 0===r?void 0:r.staticContent.text,timestamp:e.clientTimestamp,role:null===(s=e.sender)||void 0===s?void 0:s.role,sender:"EndUser"===e.sender.role&&"Guest"===e.senderDisplayName?`${t} ${a}`:e.senderDisplayName};var m;return"EndUser"!==(null===(i=e.sender)||void 0===i?void 0:i.role)&&(c.image=D(null===(m=e.sender)||void 0===m?void 0:m.subject)),c},V=()=>crypto.randomUUID(),z=async(e,t)=>{if(!e)return console.error("Region is required to fetch availability."),null;try{const a=await fetch(`${t}/${e}`,{method:"GET",headers:{Accept:"application/json"}});if(!a.ok)throw new Error(`Failed to fetch availability: ${a.status} ${a.statusText}`);return{data:await a.json(),error:null}}catch(e){return console.error("Error fetching availability:",e),{data:null,error:e.message}}};function j({handleChatMessage:e,onSuccess:t,firstName:a,lastName:n,endPoint:l,apiSfOrgId:o,accessToken:r,conversationId:s,onError:i}){try{let c=0;const d=0,u=new AbortController;m(l+"/eventrouter/v1/sse",{method:"GET",headers:{Authorization:"Bearer "+r,"X-Org-Id":o},signal:u.signal,openWhenHidden:!0,async onopen(e){if(!e.ok)throw e.status>=400&&e.status<500&&429!==e.status?new Error("FatalError"):new Error;t&&t(u)},onmessage:t=>{if("FatalError"===t.event)throw console.log("message error?"),new Error("FatalError");"function"==typeof e?e(t,a,n,r,s):console.error("handleChatMessage is not a function!")},onclose(){u.abort()},onerror(e){if("FatalError"===e||c>2||d>2)throw e;c++}}).catch(e=>{console.log(e),u.abort(),i&&i()})}catch(e){i&&i()}}const H=async e=>{const t=await fetch(`${e.endPoint}/iamessage/api/v2/conversation/${e.conversationId}/message`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e.accessToken},body:JSON.stringify({message:{id:V(),messageType:"StaticContentMessage",staticContent:{formatType:"Text",text:e.msg}},esDeveloperName:e.apiSfName,isNewMessagingSession:!1})});if((null==t?void 0:t.status)<300)return"success";{const e=await t.json();throw new Error((null==e?void 0:e.errorCode)||"Error")}},U=({value:t,onChange:a,onKeyDown:n,onSend:l,placeholder:o="Type Here",id:r="chat-user-input"})=>e.createElement("div",{className:"_3QmAz"},e.createElement("textarea",{autoComplete:"off",id:r,type:"text",className:"_2-dgJ",placeholder:o,value:t,onChange:a,onKeyDown:n,"aria-label":o,rows:1,cols:50}),e.createElement("button",{className:"_3F59F",onClick:l,"aria-label":"Send message",type:"button"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/up-arrow.svg",alt:""})));function q({accessToken:t,conversationId:a,apiSfName:l,endPoint:o,setError:r}){const[s,i]=n(""),c=async()=>{if(!s.trim())return void r("Message cannot be empty");r(null);const e={accessToken:t,conversationId:a,msg:s,endPoint:o,apiSfName:l};try{await H(e),i("")}catch(e){var n;r(null!=e&&null!==(n=e.message)&&void 0!==n&&n.includes("PRECHAT_FORM_REQUIRED")?"Your conversation has ended. Please close this window if you wish to start a new chat.":"Failed to send message. Please try again.")}};return e.createElement("div",{className:"_1Jryi"},e.createElement(U,{value:s,onChange:e=>{i(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),c())},onSend:c,placeholder:"Type Here"}))}const G=({formData:t,setFormData:n,onSubmit:l,cta:o="Start Chat",isShowPhoneInput:r=!1,disabled:s=!1})=>{const i=e=>{const{name:a,value:l}=e.target;e.target.setCustomValidity(""),n({...t,[a]:l})};return a(()=>{var e;const t=null===(e=localStorage)||void 0===e?void 0:e.getItem("formResponse");if(t){var a;const e=JSON.parse(t);let l="";null!=e&&e.firstname&&null!=e&&e.lastname?l+=(null==e?void 0:e.firstname)+" "+(null==e?void 0:e.lastname):null!=e&&e.firstname?l+=""+(null==e?void 0:e.firstname):null!=e&&e.lastname&&(l+=""+(null==e?void 0:e.lastname)),n({name:l,email:(null==e?void 0:e.email)??"",phone:(null==e||null===(a=e.homephone)||void 0===a?void 0:a.replace(/\D/g,"").replace(/(\d{3})(\d{3})(\d{4})/,"$1-$2-$3"))??""})}},[]),e.createElement("form",{onSubmit:l,className:"_2Jmy7"},e.createElement("input",{type:"text",id:"chat-name",name:"name",value:t.name,onChange:i,required:!0,pattern:"[A-Za-z\\s]+",title:"Name can only contain letters and spaces",placeholder:"Full Name*",maxLength:123,"aria-label":"full name",disabled:s}),e.createElement("input",{type:"email",id:"chat-email",name:"email",value:t.email,onChange:i,pattern:"\\S+@\\S+\\.\\S+",required:!0,placeholder:"Email*",maxLength:80,"aria-label":"email address",disabled:s}),r&&e.createElement("input",{type:"tel",id:"chat-phone",name:"phone",value:t.phone,onChange:i,pattern:"[0-9]{3}(-|)?[0-9]{3}(-|)?[0-9]{4}",title:"Phone number should be in the format: 123-456-7890 or 1234567890",placeholder:"Phone Number",minLength:10,"aria-label":"phone number",disabled:s}),e.createElement("div",{className:"_bPMr-"},e.createElement("span",{className:"_2XT_0"},"Are you a Real Estate Agent?"),e.createElement("div",{className:"_3e53H"},e.createElement("label",null,e.createElement("input",{type:"radio",id:"chat-is-agent-yes",name:"isAgent",value:"1",disabled:s}),"Yes"),e.createElement("label",null,e.createElement("input",{type:"radio",id:"chat-is-agent-no",name:"isAgent",value:"0",defaultChecked:!0,disabled:s}),"No"))),e.createElement("p",{className:"_mP27s"},"The information you provide will be used in accordance with our"," ",e.createElement("a",{href:"https://www.tollbrothers.com/privacy",target:"_blank",rel:"noreferrer",tabIndex:s?-1:void 0},"Privacy Policy"),"."),e.createElement("button",{type:"submit",disabled:s},o))},Q=e=>{var t,a;const[n,...l]=null===(t=e.name)||void 0===t||null===(a=t.value)||void 0===a?void 0:a.trim().split(" "),o=null==l?void 0:l.join(" ");return!n||!o||(null==n?void 0:n.length)<2||(null==o?void 0:o.length)<2?(e.name.setCustomValidity("First and last name must both be at least 2 characters long."),e.reportValidity(),{valid:!1}):(null==n?void 0:n.trim().length)>40?(e.name.setCustomValidity("First name cannot be longer than 40 characters."),e.reportValidity(),{valid:!1}):(null==o?void 0:o.trim().length)>80?(e.name.setCustomValidity("Last name cannot be longer than 80 characters."),e.reportValidity(),{valid:!1}):{valid:!0,firstName:n,lastName:o}};var J={messageWrapper:"_2ICXh",message:"_3EE5F",typingIndicator:"_1sftA",guest:"_3gKon"};const Y=({message:t})=>e.createElement("div",{className:`${J.messageWrapper} ${"Agent"===(null==t?void 0:t.role)||"System"===(null==t?void 0:t.role)?J.agent:J.guest} ${"Typing"===t.payload.formatType?J.typingIndicator:""}`},e.createElement(e.Fragment,null,t.image&&e.createElement("img",{src:t.image,width:30,height:30,alt:"Agent Thumbnail",onError:e=>{e.currentTarget.src="https://cdn.tollbrothers.com/images/osc/0053q00000B3pUhAAJ.jpg"}}),e.createElement("p",{className:""+J.message},t.text)));var K={root:"_2oCDK",leftAlign:"_xPQ4p",withText:"_JuTGC",attachmentImageWrapper:"_1ip1a",pdf:"_Twa-X",copyWrapper:"_2RszQ",column:"_2T5Bi"};const Z=({attachments:t,hasText:a,leftAlign:n})=>{var l,o;const r=null==t?void 0:t[0],s=null==r?void 0:r.name.endsWith(".pdf");return r?e.createElement("a",{href:null==t||null===(l=t[0])||void 0===l?void 0:l.url,download:!0,className:`${K.root} ${n?K.leftAlign:""} ${a?K.withText:""}`,title:"Download attachment"},e.createElement("div",{className:K.attachmentImageWrapper},e.createElement("img",{src:s?"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/PDF.svg":null===(o=t[0])||void 0===o?void 0:o.url,className:`${K.attachmentThumbnail} ${s?K.pdf:""}`,alt:"Attachment Thumbnail"})),e.createElement("div",{className:K.copyWrapper},e.createElement("p",null,s?"Download PDF":"Click to download"),e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/Download.svg",alt:""}))):null},X=({richLink:t,leftAlign:a})=>{var n,l,o,r,s,i,c,m,d;return t?e.createElement("a",{href:null===(n=t.linkItem)||void 0===n?void 0:n.url,className:`${K.root} ${a?K.leftAlign:""}`,title:(null===(l=t.linkItem)||void 0===l||null===(o=l.titleItem)||void 0===o?void 0:o.title)??"Rich Link",target:null!==(r=t.linkItem)&&void 0!==r&&null!==(s=r.url)&&void 0!==s&&s.includes("tollbrothers.com")?"_self":"_blank",rel:"noreferrer"},e.createElement("div",{className:K.attachmentImageWrapper},e.createElement("img",{className:""+K.attachmentThumbnail,src:null===(i=t.image)||void 0===i?void 0:i.assetUrl,alt:"Rich Link Thumbnail"})),e.createElement("div",{className:`${K.copyWrapper} ${K.column}`},e.createElement("p",null,null===(c=t.linkItem)||void 0===c||null===(m=c.titleItem)||void 0===m?void 0:m.title),e.createElement("p",null,null===(d=t.linkItem)||void 0===d?void 0:d.url))):null},ee=({onClick:t,ariaLabel:a="Close AI Concierge",className:n=""})=>e.createElement("button",{className:"_3ebDI _3azUC _3Azbv "+n,"aria-label":a,onClick:t,type:"button"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/close.svg",alt:""})),te=({onClick:t,ariaLabel:a="Minimize AI Concierge",className:n=""})=>e.createElement("button",{className:"_3ebDI _3azUC "+n,"aria-label":a,onClick:t,type:"button"},e.createElement("svg",{width:"16",height:"2",viewBox:"0 0 16 2",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M0 1H16",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),ae=({onClose:t,onMinimize:a,isMinimizeHidden:n=!1,className:l=""})=>e.createElement("div",{className:"_28oWW "+l},!n&&e.createElement(te,{onClick:a}),e.createElement(ee,{onClick:t})),ne=({message:t="Are you sure you want to end this chat?",onStay:a,onLeave:n,classes:l={}})=>e.createElement("div",{className:"_2eX8T "+(l.root??"")},e.createElement("div",{className:"_DFMeT "+(l.dialog??"")},e.createElement("p",null,t),e.createElement("div",{className:"_1Itay"},e.createElement("button",{onClick:n},"End Chat"),e.createElement("button",{className:"_3AScz",onClick:a},"Continue Chat")))),le=({availabilityAPI:t,endPoint:o,apiSfOrgId:r,apiSfName:s,disableFloatingChatButton:i=!1,setChatStatus:c,chatStatus:m,chatRegion:d,setIsChatOpen:u=(()=>null),isChatOpen:p,chatSms:v,trackChatEvent:h=(()=>null),chatClickedEventString:g="chatClicked",chatStartedEventString:E="chatStarted",productCode:w,chatBotTransferData:C=null,setChatBotTransferData:_=(()=>null),setIsChatBotOpenExternal:k=(()=>null)})=>{const I=l(!1),S=l(!1),[T,x]=n(!1),[L,P]=n(null),[$,A]=n([]),[M,O]=n(null),[W,B]=n(!1),[U,J]=n(!1),[K,ee]=n(!1),[te,le]=n(!1),[oe,re]=n(!1),se=l(null),[ie,ce]=n({name:"",email:""}),[me,de]=n(!1),[ue,pe]=n(!1),[ve,he]=n(!1),[ge,Ee]=n(""),[ye,fe]=n(null),[Ne,be]=n("Agent"),[we,Ce]=n(null),[_e,ke]=n(null),[Ie,Se]=n(null),[Te,xe]=n(!1),[Le,Pe]=n(null),[$e,Ae]=n({count:0,lastMessageId:null}),Me=e=>{var t;fe(D(null===(t=e.participant)||void 0===t?void 0:t.subject)),Ee("You're chatting with "+e.displayName),be(e.displayName),le(!1),xe(!0),B(!1),de(!0)},Oe=async(e,t,a,n,l)=>{var o,r,s,i,c,m,d,u,p,v,h;const g=[];let E,y,f={};switch(e.event){case"ping":break;case"CONVERSATION_ROUTING_RESULT":E=JSON.parse(e.data),y=JSON.parse(E.conversationEntry.entryPayload),"Transfer"===(null===(o=y)||void 0===o?void 0:o.routingType)?I.current=!0:"Conference"===(null===(r=y)||void 0===r?void 0:r.routingType)&&(S.current=!0),de(!0);break;case"CONVERSATION_PARTICIPANT_CHANGED":if(E=JSON.parse(e.data),y=JSON.parse(E.conversationEntry.entryPayload),le(!1),"remove"===(null===(s=y)||void 0===s||null===(i=s.entries)||void 0===i||null===(c=i[0])||void 0===c?void 0:c.operation)&&"Supervisor"!==(null===(m=y)||void 0===m||null===(d=m.entries)||void 0===d||null===(u=d[0])||void 0===u||null===(p=u.participant)||void 0===p?void 0:p.role))Ee(y.entries[0].displayName+" left the conversation");else for(let e=0;e<(null===(N=y)||void 0===N||null===(b=N.entries)||void 0===b?void 0:b.length);e++){var N,b,w;const t=y.entries[e];"add"!==t.operation||"Supervisor"===(null===(w=t.participant)||void 0===w?void 0:w.role)||Me(t)}break;case"CONVERSATION_MESSAGE":if(E=JSON.parse(e.data),f=R({...E.conversationEntry,entryPayload:JSON.parse(E.conversationEntry.entryPayload)},t,a),n&&l&&"Agent"===f.role&&"Text"===(null===(v=f.payload)||void 0===v?void 0:v.formatType)&&"/url"===(null===(h=f.payload)||void 0===h?void 0:h.text))return void Be({accessToken:n,conversationId:l,message:"::System Message:: User on page: ("+location.href+")"});g.push(f);break;case"CONVERSATION_DELIVERY_ACKNOWLEDGEMENT":console.log("conversation delivered acknowledge...");break;case"CONVERSATION_READ_ACKNOWLEDGEMENT":console.log("conversation read acknowledge...");break;case"CONVERSATION_TYPING_STARTED_INDICATOR":E=JSON.parse(e.data),pe(E);break;case"CONVERSATION_TYPING_STOPPED_INDICATOR":pe(!1);break;case"CONVERSATION_CLOSE_CONVERSATION":console.log("conversation close conversation...");break;default:console.log("Unknown event:",e)}g.length>0&&A(e=>[...e,...g])},We=e=>{e&&h(g),u(!0),J(!0),B(!0),x(!1)};a(()=>d&&"offline"!==m||me?p&&!me?(We(),re(!1),void ee(!1)):void x(!(!d||"online"!==m||me||i||U)):(u(!1),J(!1),B(!1),x(!1),he(!1),re(!1),void ee(!1)),[m,me,i,p,d]),a(()=>{d?async function(){try{var e,a;const l=await z(d,t);if((null==l||null===(e=l.data)||void 0===e||null===(a=e.payload)||void 0===a?void 0:a.length)>0){c("online");const e=Math.floor(Math.random()*l.data.payload.length);var n;me||fe(null===(n=l.data.payload[e])||void 0===n?void 0:n.photo)}Se(!0)}catch(e){Se(!0),console.error("Error fetching osc data:",e)}}():Se(!0),c("offline")},[d,t]);const Be=async({accessToken:e,conversationId:t,message:a})=>{try{await H({accessToken:e,conversationId:t,msg:a,endPoint:o,apiSfName:s})}catch{console.error("Error sending system message.")}},Fe=e=>{if(e&&"visibilitychange"===e.type&&document.hidden)return;let t=!1;const a=f("tbChat")??C;if(!a||b(a.expiry))return N("tbChat"),k(!1),void _(null);const n=a.value??a;null!=n&&n.conversationId&&null!=n&&n.accessToken&&j({handleChatMessage:Oe,firstName:n.firstName,lastName:n.lastName,endPoint:o,apiSfOrgId:r,accessToken:n.accessToken,conversationId:n.conversationId,onError:()=>{Re(n.accessToken,n.conversationId)},onSuccess:e=>{t||(t=!0,P(n.accessToken),O(n.conversationId),x(!1),de(!0),Ee(null),pe(!1),J(!0),le(!1),ee(!1),(async e=>{try{var t;const a=await(async({conversationId:e,accessToken:t,endPoint:a})=>{const n=await fetch(`${a}/iamessage/api/v2/conversation/${e}/entries?limit=100&direction=FromStart`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer "+t}});return await(null==n?void 0:n.json())})({accessToken:e.accessToken,conversationId:e.conversationId,endPoint:o});if(le(!0),!((null==a||null===(t=a.conversationEntries)||void 0===t?void 0:t.length)>0))throw new Error;{const t=a.conversationEntries.filter(e=>"Message"===e.entryType).map(t=>R(t,e.firstName,e.lastName));let n=!1;const l={...e},o=a.conversationEntries.some(e=>{var t;return"RoutingResult"===e.entryType&&"Transfer"===(null===(t=e.entryPayload)||void 0===t?void 0:t.routingType)}),r=a.conversationEntries.some(e=>{var t;return"RoutingResult"===e.entryType&&"Conference"===(null===(t=e.entryPayload)||void 0===t?void 0:t.routingType)});a.conversationEntries.map(e=>{var t,a;"ParticipantChanged"===e.entryType&&(null===(t=e.entryPayload)||void 0===t||null===(a=t.entries)||void 0===a?void 0:a.length)>0&&e.entryPayload.entries.map(e=>{var t,a;"add"===e.operation&&"Supervisor"!==(null===(t=e.participant)||void 0===t?void 0:t.role)?(Me(e),y("tbChat",{accessToken:l.accessToken,conversationId:l.conversationId,firstName:l.firstName,lastName:l.lastName},72e5),P(l.accessToken),O(l.conversationId),n=!1):"remove"!==e.operation||"Supervisor"===(null===(a=e.participant)||void 0===a?void 0:a.role)||o||r||(Ee(e.displayName+" left the conversation"),xe(!1),n=!0)})}),n||A(t??[])}}catch(e){console.error("Error retreiving chat history")}})(n),C&&y("tbChat",{accessToken:n.accessToken,conversationId:n.conversationId,firstName:n.firstName,lastName:n.lastName},72e5),ke(e),u(!0))}})};a(()=>(window.addEventListener("visibilitychange",Fe),()=>{window.removeEventListener("visibilitychange",Fe)}),[]),a(()=>{Ie&&Fe()},[Ie]);const De=()=>{Ce(null),he(!ve),re(!1),Ae({count:0,lastMessageId:null})},Re=async(e,t)=>{if(Ce(null),N("tbChat"),he(!1),x(!1),de(!1),xe(!1),O(null),pe(!1),B(!1),P(null),A([]),le(!1),re(!1),ee(!1),be("Agent"),Ee(null),Ae({count:0,lastMessageId:null}),_(null),k(!1),I.current=!1,S.current=!1,_e&&(_e.abort(),ke(null)),J(!1),u(!1),e&&t)try{console.log("Ending chat..."),await(async({accessToken:e,conversationId:t,endPoint:a,apiSfName:n},l=2)=>{const o=async l=>{try{if(204===(await fetch(`${a}/iamessage/api/v2/conversation/${t}?esDeveloperName=${n}`,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e}})).status)return{};throw new Error("API error")}catch(e){if(l>0)return await new Promise(e=>setTimeout(e,1e3)),await o(l-1);throw new Error(e.message)}};return await o(l)})({accessToken:e,conversationId:t,endPoint:o,apiSfName:s})}catch(e){console.error("Chat end error:",e.message)}};return a(()=>{se.current&&(se.current.scrollTop=se.current.scrollHeight)},[$,ve]),a(()=>{$.some(e=>{var t;return"Typing"===(null===(t=e.payload)||void 0===t?void 0:t.formatType)})&&ue||A(ue?e=>{var t;return[...e,{id:V(),type:"Message",text:(null==ue||null===(t=ue.conversationEntry)||void 0===t?void 0:t.senderDisplayName)+" is typing...",payload:{formatType:"Typing"},role:"Agent"}]}:e=>e.filter(e=>{var t;return"Typing"!==(null===(t=e.payload)||void 0===t?void 0:t.formatType)}))},[ue]),a(()=>{var e;const t=$[$.length-1];!document.hidden&&(null==t?void 0:t.id)!==$e.lastMessageId&&"Typing"!==(null==t||null===(e=t.payload)||void 0===e?void 0:e.formatType)&&"Message"===(null==t?void 0:t.type)&&"Agent"===(null==t?void 0:t.role)&&ve&&Ae(e=>({count:e.count+1,lastMessageId:null==t?void 0:t.id}))},[$]),e.createElement("div",{className:`${F.chatWrapper} ${U?F.chatPanelOpen:""} ${ve?F.isMinimized:""}`},(T||ve)&&e.createElement(e.Fragment,null,(K||ve)&&e.createElement("div",{className:F.textChatOptions},(null==$e?void 0:$e.count)>0&&e.createElement("div",{className:F.unreadMessagesIndicator},$e.count),e.createElement("div",{className:F.textChatWrapper},e.createElement("button",{className:`${F.chatButton} ${F.textChatButtons}`,onClick:ve?De:We},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/chat.svg",alt:"chat"}),"Chat"),!ve&&e.createElement("a",{href:v?"sms:"+v:"#",className:`${F.textButton} ${F.textChatButtons}`},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/sms.svg",alt:"chat"}),"Text"))),e.createElement("button",{className:F.chatLaunch,onClick:ve?De:()=>{ee(!K)}},e.createElement("img",{className:F.oscHead,src:ye??"https://cdn.tollbrothers.com/images/osc/0053q00000B3pUhAAJ.jpg",alt:"osc",onError:e=>{e.currentTarget.src="https://cdn.tollbrothers.com/images/osc/0053q00000B3pUhAAJ.jpg"}}),!K&&e.createElement("span",null,e.createElement("img",{className:F.chatIcon,src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/chat.svg",alt:"chat"})),K&&e.createElement("span",null,e.createElement("img",{className:F.closeIcon,src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/close.svg",alt:"close"})))),U&&!ve&&e.createElement("div",{className:F.header},e.createElement("h2",null,"Chat"),e.createElement("div",{className:F.panelControls},e.createElement(ae,{onMinimize:De,onClose:()=>{Ce(null),re(!0)},isMinimizeHidden:!Te}))),te&&!ve&&e.createElement(e.Fragment,null,e.createElement("p",{className:F.waitMessage},"Please wait while we connect you with a representative."),e.createElement("div",{className:F.loading},e.createElement("span",null),e.createElement("span",null),e.createElement("span",null))),oe&&!ve&&e.createElement(ne,{onStay:()=>{Ce(null),re(!1)},onLeave:()=>Re(L,M)}),W&&!ve&&e.createElement("div",{className:F.formContainer},e.createElement(G,{formData:ie,setFormData:ce,onSubmit:async e=>{const a="Our apologies, but all members of our Online Sales Team are currently unavailable. Please try again later.";e.preventDefault(),Ce(null),Ee(null),pe(!1);const n=e.target,{valid:l,firstName:i,lastName:c}=Q(n);if(!l)return!1;le(!0),B(!1),h(E);try{var m,p;const e=await z(d,t);if((null==e||null===(m=e.data)||void 0===m||null===(p=m.payload)||void 0===p?void 0:p.length)>0){var v,g,f;const e=null===(v=n.email)||void 0===v||null===(g=v.value)||void 0===g?void 0:g.trim(),t=(null===(f=n.isAgent)||void 0===f?void 0:f.value)??"0",a=(()=>{const e={gaClientId:"",gaUserId:"",gaTrackId:""};if(void 0!==window.ga&&"function"==typeof window.ga.getAll){const t=window.ga.getAll()[0],a=t.get("clientId"),n=t.get("userId"),l=t.get("trackingId");void 0!==a&&""!==a&&(e.gaClientId=a),void 0!==n&&""!==n&&(e.gaUserId=n),void 0!==l&&""!==l&&(e.gaTrackId=l)}return e})();Pe(`https://hello.tollbrothers.com/l/402642/2025-08-05/2chvs9x?email=${encodeURIComponent(e)}&fname=${encodeURIComponent(i)}&lname=${encodeURIComponent(c)}&gaClientId=${encodeURIComponent(a.gaClientId)}&gaUserId=${encodeURIComponent(a.gaUserId)}&gaTrackId=${encodeURIComponent(a.gaTrackId)}`),await(async(e,t,a,n,l,o,r,s)=>{try{const i=await async function(e,t,a){try{const n=await fetch(e+"/iamessage/api/v2/authorization/unauthenticated/access-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({orgId:t,esDeveloperName:a,capabilitiesVersion:"1",platform:"Web"})});if(!n.ok)throw new Error(`Failed to fetch access token: ${n.status} ${n.statusText}`);return await n.json()}catch(e){throw console.error("Error fetching access token:",e),e}}(o,r,s);if(!i)throw new Error("No token received.");P(i.accessToken);const c=M||crypto.randomUUID();M&&null!==M||O(c);const m={accessToken:i.accessToken,customerEmail:a,customerFirstName:e||"Guest",customerLastName:t||"",isAgent:n,conversationId:c,region:d,endPoint:o,apiSfOrgId:r,apiSfName:s};if(l&&(m.productCode=l),await(async(e,t=2,a=1e3)=>{if(!e||!e.accessToken||!e.customerEmail)throw new Error("Invalid payload provided chat.js 143");const n=async t=>{try{const t=await fetch(e.endPoint+"/iamessage/api/v2/conversation",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e.accessToken},body:JSON.stringify({conversationId:e.conversationId,esDeveloperName:e.apiSfName,routingAttributes:{_email:e.customerEmail,_firstName:e.customerFirstName,_lastName:e.customerLastName,region:e.region,isAgent:e.isAgent,productCode:e.productCode}})});if(null!=t&&t.ok)return{};throw new Error}catch(e){if(t>0)return await new Promise(e=>setTimeout(e,a)),n(t-1);throw e}};return n(t)})(m)){let a=!1;O(m.conversationId),j({handleChatMessage:Oe,onSuccess:n=>{a||(a=!0,y("tbChat",{accessToken:i.accessToken,conversationId:c,firstName:e,lastName:t},72e5),Be({accessToken:i.accessToken,conversationId:c,message:"::System Message:: User initiated chat("+location.href+")"}),ke(n))},firstName:e,lastName:t,endPoint:o,apiSfOrgId:r,accessToken:i.accessToken,conversationId:c,onError:()=>{console.log("Error starting conversation"),Re(i.accessToken,c),B(!0),J(!0),u(!0),Ce("There was an error initializing the chat. Please try again.")}})}}catch(e){console.error("Error initializing chat"),Re(),B(!0),J(!0),u(!0),Ce("There was an error initializing the chat. Please try again.")}})(i,c,e,t,w,o,r,s)}else B(!0),le(!1),Ce(a)}catch(e){B(!0),le(!1),Ce(a)}},cta:"Start Chat"})),ge&&!ve&&e.createElement("p",{className:F.persistentText},ge,"."),e.createElement("div",{className:F.messagesWrapper,ref:se},!ve&&e.createElement(e.Fragment,null,$.map((t,a)=>{var n,l,o,r,s,i,c;return"Message"===t.type&&!(null!==(n=t.text)&&void 0!==n&&n.includes("::System Message::"))&&!(null!==(l=t.text)&&void 0!==l&&l.startsWith("/url")&&"Agent"===(null==t?void 0:t.role))&&e.createElement(e.Fragment,{key:t.id},e.createElement("div",{className:F.timestamp},new Date(t.timestamp).toLocaleDateString("en-US",{hour:"numeric",minute:"numeric",hour12:!0}).split(", ")[1]),"RichLink"===(null===(o=t.payload)||void 0===o?void 0:o.formatType)&&e.createElement(e.Fragment,null,t.text&&e.createElement(Y,{message:t}),e.createElement(X,{richLink:t.payload,leftAlign:"Agent"===(null==t?void 0:t.role)||"System"===(null==t?void 0:t.role)})),"Attachments"===(null===(r=t.payload)||void 0===r?void 0:r.formatType)&&e.createElement(e.Fragment,null,t.text&&e.createElement(Y,{message:t}),e.createElement(Z,{attachments:null==t||null===(s=t.payload)||void 0===s?void 0:s.attachments,hasText:Boolean(t.text),leftAlign:"Agent"===t.role})),("Text"===(null===(i=t.payload)||void 0===i?void 0:i.formatType)||"Typing"===(null===(c=t.payload)||void 0===c?void 0:c.formatType))&&e.createElement(Y,{message:t}))}))),M&&L&&!ve&&e.createElement("div",{className:F.chatInputWrapper},e.createElement(q,{accessToken:L,conversationId:M,apiSfName:s,endPoint:o,setError:Ce})),we&&e.createElement("span",{className:F.error},we),Le&&e.createElement("iframe",{className:F.callbackIframe,src:Le}))};var oe={buttonReset:"_cQjaX",hidden:"_2S_75",launchButton:"_QLnt9",interface:"_2aVKh",resizeHandle:"_2E-b4",header:"_3HeC2",title:"_3NL-A",body:"_2oi14",messages:"_1BNYu",footer:"_1Y4u5",transferButton:"_3GdW4",error:"_2FQrt",errorMessage:"_1DZFG"};const re=({message:t,component:a})=>e.createElement("div",{className:"_2rvCK"},e.createElement("div",{className:"_2P_ui"},e.createElement("div",{className:"_2Z8ak"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/chatbot-icon.svg"})),t&&e.createElement("div",{className:"_2mq1k"},e.createElement(d,null,t)),a&&e.createElement("div",{className:"_cW8oG"},a))),se=({message:t})=>e.createElement("div",{className:"_2a9vL"},e.createElement("div",{className:"_19exz"},e.createElement("p",{className:"_PukT0"},t))),ie=()=>e.createElement("div",{className:"_1Pess"},e.createElement("span",{className:"_2mcRN"}),e.createElement("span",{className:"_2mcRN"}),e.createElement("span",{className:"_2mcRN"}));var ce={option:"_2BFpx",lg:"_32nj1"};const me=({href:t,utils:a,className:n="",target:l="_self",onClick:o=(()=>null),children:r})=>{var s;const i=(null==a||null===(s=a.stripUrlDomain)||void 0===s?void 0:s.call(a,t))||t,c=null==a?void 0:a.Link,m="_3coLY "+n;return c?e.createElement(c,{className:m,href:i,onClick:o},r):e.createElement("a",{className:m,href:i,target:l,onClick:o},r)},de=({text:t,onClick:a=(()=>null),size:n="",isLink:l=!1,href:o,target:r,utils:s})=>{const i=`${ce.option} ${ce[n]??""}`;return l?e.createElement(me,{className:i,href:o,utils:s,target:r,onClick:a},t):e.createElement("button",{className:i,onClick:a,type:"button"},t)},ue=({options:t,onOptionSelect:a})=>e.createElement("div",{className:"_2n7fZ"},t.map(t=>e.createElement(de,{key:t.id,text:t.text,onClick:()=>a(t),size:"lg"}))),pe=({children:t,onClick:a=(()=>null),showIcon:n=!1})=>e.createElement("button",{className:"_209w_",onClick:a,type:"button"},e.createElement("span",{className:"_2xVBu"},t),n&&e.createElement("div",{className:"_286OY"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/up-arrow.svg",alt:"",className:"_20z6F"}))),ve=({community:t})=>t.rangeBed||t.rangeBath||t.rangeSqft?e.createElement("div",{className:"_1_2K3"},t.rangeBed&&e.createElement("div",{className:"_2UgYQ"},e.createElement("div",{className:"_BPVwd"},t.rangeBed),e.createElement("div",{className:"_3Of9V"},"Beds")),t.rangeBath&&e.createElement("div",{className:"_2UgYQ"},e.createElement("div",{className:"_BPVwd"},t.rangeBath),e.createElement("div",{className:"_3Of9V"},"Baths")),t.rangeSqft&&e.createElement("div",{className:"_2UgYQ"},e.createElement("div",{className:"_BPVwd"},t.rangeSqft),e.createElement("div",{className:"_3Of9V"},"Square Feet"))):null,he=e=>{const t=(e||0).toLocaleString("en-US");if(!t||"0"===t||"null"===t||999999999999===e)return null;let a="$";return Number.isNaN(parseInt(t))&&(a=""),`${a}${t}`},ge=({community:t,hideLocation:a,utils:n={}})=>{var l;const o=he(t.pricedFrom);let r="";var s;return o&&(r=`${(null===(s=n.getPriceLabelText)||void 0===s?void 0:s.call(n,t.isFuture,!0))||""} ${o}`),e.createElement("p",{className:"_1y16D"},t.homeTypes&&t.homeTypes.length>0&&!(null!==(l=t.options)&&void 0!==l&&l.some(e=>"112"===e.id))&&e.createElement(e.Fragment,null,t.homeTypes.map(e=>"single family"===e.toLowerCase()?"Single-Family Homes":e+"s").join(", ")," "),r,!a&&e.createElement(e.Fragment,null," in "," ",t.city,", ",t.state))},Ee=({community:t,onClick:a=(()=>null),utils:n={}})=>{var l,o,r,s;const i=null===(l=t.headShot)||void 0===l||null===(o=l.media)||void 0===o?void 0:o.url,c=(null===(r=t.overview)||void 0===r?void 0:r.shortDescription)||(null===(s=t.overview)||void 0===s?void 0:s.description);return e.createElement("div",{className:"_1MZ9x"},i&&e.createElement("div",{className:"_1sDcc"},e.createElement("img",{src:i,alt:t.name||"Community"})),e.createElement("div",{className:"_6MIBN"},e.createElement("div",{className:"_1L5_S"},t.name&&e.createElement(me,{href:t.url,utils:n},e.createElement("h3",{className:"_1MWdh"},t.name))),e.createElement(ve,{community:t}),e.createElement("div",{className:"_1NhY0"},e.createElement(ge,{community:t,utils:n}),c&&e.createElement("p",{className:"_1I08E"},c)),e.createElement("div",{className:"_1htWx"},e.createElement(pe,{onClick:()=>a(t)},"Learn More"))))};var ye={stats:"_T4svs",compact:"_2JjBF",stat:"_i8Mg0",statValue:"_wNVjM",statLabel:"_3Z2yX"};const fe=({model:t,isCompact:a,utils:n={}})=>{var l,o,r,s;const{rangeBed:i,rangeBath:c,rangeSqft:m,rangeHalfBath:d,rangeGarage:u}=(null===(l=n.getModelRanges)||void 0===l?void 0:l.call(n,t))||{},p=null===(o=n.getModelSqftPlusSign)||void 0===o?void 0:o.call(n,t,!1),v=null===(r=n.hasOption)||void 0===r?void 0:r.call(n,null==t?void 0:t.options,null===(s=n.OPTIONS)||void 0===s?void 0:s.PARKING_SPACES);return e.createElement("div",{className:`${ye.stats} ${a?ye.compact:""}`},e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},i||0),e.createElement("div",{className:ye.statLabel},"Beds")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},c||0),e.createElement("div",{className:ye.statLabel},"Baths")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},m||e.createElement(e.Fragment,null," "),p),e.createElement("div",{className:ye.statLabel},"Sq Ft"),!a&&e.createElement("div",{className:ye.statDivider})),!a&&e.createElement(e.Fragment,null,e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},d||0),e.createElement("div",{className:ye.statLabel},"Half Bath")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},u||0),e.createElement("div",{className:ye.statLabel},v?"Parking Spaces":"Garages")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},parseInt(t.stories)),e.createElement("div",{className:ye.statLabel},"Stories"))))},Ne=({date:e,isComingSoon:t,utils:a})=>{var n;let l="";if(null!=a&&null!==(n=a.isMoveInReady)&&void 0!==n&&n.call(a,e))l="Move-In Ready";else if(t)l="Coming Soon Quick Move-In";else{var o;l="Quick Move-In "+((null==a||null===(o=a.getFormattedDate)||void 0===o?void 0:o.call(a,e,a))||"")}return l},be=({model:t,hideLocation:a,includeQmiLabel:n,utils:l={}})=>{var o,r;return e.createElement("p",{className:"_hLYm9"},t.isQMI&&n&&e.createElement(e.Fragment,null,Ne({date:t.moveInDate,isComingSoon:t.isComingSoon,utils:l})," ","•"," "),t.homeType&&!(null!==(o=t.options)&&void 0!==o&&o.some(e=>"112"===e.id))&&e.createElement(e.Fragment,null,t.homeType," "),t.pricedFrom&&`${r=t.isQMI,r?"priced at":"starting at"} ${he(t.pricedFrom)}`,!a&&e.createElement(e.Fragment,null," in "," ",t.city,", ",t.state))},we=({model:t,hideLocation:a,onClick:n=(()=>null),utils:l={}})=>{var o,r;const s=null===(o=t.headShot)||void 0===o||null===(r=o.media)||void 0===r?void 0:r.url,i=null==t?void 0:t.description;return e.createElement("div",{className:"_3mj_q"},e.createElement("div",{className:"_xbmTI"},e.createElement("div",{className:"_2vyzf"},e.createElement("img",{src:s,alt:t.name||"Community"})),e.createElement("div",{className:"_5alRO"},t.name&&e.createElement(me,{href:t.url,utils:l},e.createElement("h3",{className:"_2lRXB"},t.name)),e.createElement(fe,{model:t,utils:l,isCompact:!0}))),e.createElement("div",{className:"_wC_sh"},e.createElement("div",{className:"_25Dnd"},e.createElement(be,{model:t,hideLocation:a,includeQmiLabel:!0,utils:l}),i&&e.createElement("p",{className:"_2JFpC"},i)),t.url&&e.createElement("div",{className:"_1waG7"},e.createElement(pe,{onClick:()=>n(t)},"Learn More"))))},Ce=({products:t,handleProductSelect:a=(()=>null),hideModelLocation:n,utils:l,classes:o={}})=>t&&0!==t.length?e.createElement("div",{className:"_2bqeE"},e.createElement(B,{showArrows:!0,useContainerWidth:!0,classes:{scrollWrap:"_1mQlT",scrollItem:"_3rSsh",controls:"_1W0uu "+(o.controls||"")}},t.map((t,o)=>t.commPlanID?e.createElement(we,{key:`${t.commPlanID}-${o}`||o,model:t,onClick:a,utils:l,hideLocation:n}):e.createElement(Ee,{key:t.communityId||t.masterCommunityId||o,community:t,onClick:a,utils:l})))):null;var _e={root:"_3u0fM",header:"_2etvW",closeButton:"_AaBz4",title:"_XaGe1",location:"_PAEfb",imageWrapper:"_2uCO_",content:"_34UTF",summarySection:"_1nrJu",summaryTitle:"_qbtAW",summaryList:"_1gPHy",bullet:"_z67_9",description:"_32jWF",collectionsContainer:"_2ablO",footer:"_Wp31V",optionsWrapper:"_VMrSG"},ke={root:"_1QwAz",container:"_3L3pz",imageContainer:"_B731E",text:"_snoIj",label:"_GkM4M",location:"_1-pme"};const Ie=({model:t,utils:a={}})=>{if(!t.isQMI)return null;const n=Ne({date:t.moveInDate,isComingSoon:t.isComingSoon,utils:a}),l=t.lotNumber;return e.createElement("div",{className:ke.root},e.createElement("div",{className:""+ke.container},e.createElement("div",{className:""+ke.imageContainer},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/ispt/icons/QMI_purple.svg",alt:"Quick Move-In"})),e.createElement("div",{className:""+ke.text},e.createElement("span",{className:ke.label},n),e.createElement("div",{className:ke.location},l&&e.createElement("span",null,"Home Site ",l),t.street&&e.createElement("span",{className:ke.address}," | ",""+t.street)))))},Se=({communityQMIs:t,communityModels:a,handleProductSelect:n,utils:l,classes:o})=>{const[r,s]=e.useState([]);return e.createElement(e.Fragment,null,r.map(r=>e.createElement("div",{key:r,className:"_HR60w"},e.createElement(Ce,{products:"qmi"===r?t:a,handleProductSelect:e=>n(e,{fromModelList:!0}),utils:l,hideModelLocation:!0,classes:o}))),e.createElement("div",{className:"_3Ao05"},!r.includes("qmi")&&(null==t?void 0:t.length)>0&&e.createElement(de,{onClick:()=>s(e=>[...e,"qmi"]),text:"Show Quick Move-In Homes"}),!r.includes("homeDesigns")&&(null==a?void 0:a.length)>0&&e.createElement(de,{onClick:()=>s(e=>[...e,"homeDesigns"]),text:"Show Home Designs"})))},Te=({collection:t,handleProductSelect:a=(()=>null),utils:n={}})=>{var l,o,r;let s=null==t?void 0:t.cleanName;s&&!s.toLowerCase().includes(" collection")&&(s+=" Collection");const i=(null===(l=t.overview)||void 0===l?void 0:l.shortDescription)||(null===(o=t.overview)||void 0===o?void 0:o.description),{communityModels:c,communityQMIs:m}=null==n||null===(r=n.buildHomeArrays)||void 0===r?void 0:r.call(n,null==t?void 0:t.homes,t.options);return e.createElement("div",{className:"_1-B08"},t.cleanName&&e.createElement(me,{href:t.url,utils:n},e.createElement("h3",{className:"_2VGRh"},s)),e.createElement(ge,{community:t,utils:n,hideLocation:!0}),e.createElement(ve,{community:t}),i&&e.createElement("p",{className:"_1gDW3"},i),e.createElement(Se,{communityQMIs:m,communityModels:c,handleProductSelect:a,utils:n,classes:{controls:"_p9e4z"}}))},xe=({amenities:t=[]})=>{const[a,l]=n(!1);if(null==t||!t.length)return null;const o=a?t:t.slice(0,6),r=t.length>6,s=o.length%2!=0;return e.createElement("div",{className:"_2qaJc"},e.createElement("h3",{className:"_3V3hz"},"Amenities"),e.createElement("ul",{className:"_1OpYN "+(s?"_3RyJF":"_2Yv1a")},o.map((t,a)=>e.createElement("li",{key:a,className:"_3u6OC"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/amenities/"+(null==t?void 0:t.icon),alt:(null==t?void 0:t.name)||"Amenity"}),e.createElement("span",null,null==t?void 0:t.name)))),r&&!a&&e.createElement("button",{className:"_2a4KI",onClick:()=>l(!a)},"Show More (",t.length-6,")"))},Le=t=>e.createElement("svg",Object.assign({width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true"},t),e.createElement("path",{d:"M8 3v10M3 8h10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),Pe=t=>e.createElement("svg",Object.assign({width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true"},t),e.createElement("path",{d:"M3 8h10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),$e=t=>e.createElement("svg",{width:"16px",height:"16px",viewBox:"0 0 21 21"},e.createElement("g",{fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",transform:"matrix(0 1 1 0 2.5 2.5)"},e.createElement("path",{strokeWidth:"2",d:"m3.98652376 1.07807068c-2.38377179 1.38514556-3.98652376 3.96636605-3.98652376 6.92192932 0 4.418278 3.581722 8 8 8s8-3.581722 8-8-3.581722-8-8-8"}),e.createElement("path",{strokeWidth:"2",d:"m4 1v4h-4",transform:"matrix(1 0 0 -1 0 6)"}))),Ae=({floorPlans:t=[],utils:a})=>{var l,o;const[r,c]=n(0),[m,d]=n(!0),{svgContent:u,isLoading:p}=null==a||null===(l=a.useFetchSvg)||void 0===l?void 0:l.call(a,null==t||null===(o=t[r])||void 0===o?void 0:o.url,[r,t]);if(null==t||!t.length)return null;const v=t[r],h=()=>{d(!1)};return e.createElement("div",{className:"_1xBWu"},e.createElement("h3",{className:"_28mxU"},"Floor Plans"),e.createElement("div",{className:"_14OFk"},p?e.createElement(ie,null):e.createElement(s,{key:r,centerOnInit:!0},({zoomIn:t,zoomOut:a,resetTransform:n})=>e.createElement(e.Fragment,null,m&&e.createElement("div",{className:"_1wRJZ",onClick:h,onDoubleClick:h,role:"button",tabIndex:0,"aria-label":"Click to interact with floor plan"}),e.createElement("div",{className:"_3U7EE"},e.createElement("button",{onClick:()=>{h(),t()},"aria-label":"Zoom in",type:"button"},e.createElement(Le,null)),e.createElement("button",{onClick:()=>{h(),a()},"aria-label":"Zoom out",type:"button"},e.createElement(Pe,null)),e.createElement("button",{onClick:()=>{h(),n()},"aria-label":"Reset zoom",type:"button"},e.createElement($e,null))),e.createElement(i,{wrapperClass:"_kIlxr"},e.createElement("div",{className:"_3s55O",dangerouslySetInnerHTML:{__html:u},role:"img","aria-label":v.title||"Floor Plan"}))))),t.length>1&&e.createElement("div",{className:"_3myos"},t.map((t,a)=>e.createElement("button",{key:a,className:"_3uCGe "+(r===a?"_1Xtbn":""),onClick:e=>((e,t)=>{c(e),t.currentTarget.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})})(a,e),"aria-label":`Show ${t.title} || 'Floor Plan'`},t.title))))},Me=e=>e.title||e.alt||e.caption||e.description||"",Oe=({images:t=[],title:a,utils:l,isUseHighRes:o=!1})=>{var r;const[s,i]=n(!1),[c,m]=n(1);if(null==t||!t.length)return null;const d=e=>{m(e+1),i(!0)},u=(o&&(null==l||null===(r=l.setToOriginalImages)||void 0===r?void 0:r.call(l,t))||t).map(e=>{const t=Me(e);return{url:e.url||e.src,title:t,description:t}});return e.createElement("div",{className:"_3YmRE"},a&&e.createElement("h3",{className:"_2eyTv"},a),e.createElement("div",{className:"_1jJ2f"},e.createElement(B,{showArrows:t.length>1,classes:{scrollWrap:"_2q0ex",scrollItem:"_3cz0q",controls:"_dWWUl"},useContainerWidth:!0},t.map((t,a)=>{const n=Me(t);return e.createElement("div",{key:t.id||a,className:"_3hVFy",onClick:()=>d(a),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d(a))},role:"button",tabIndex:0,"aria-label":`View ${n||"image "+(a+1)} in full screen`},e.createElement("img",{src:t.url||t.src,alt:n,className:"_fMk7m"}),n&&e.createElement("span",{className:"_31zSN"},n))}))),e.createElement(I,{show:s,mediaList:u,initialSlide:c,onClose:()=>i(!1)}))},We=({onClick:t,ariaLabel:a="Close",className:n=""})=>e.createElement("button",{className:"_2nx3A "+n,onClick:t,type:"button","aria-label":a},e.createElement("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M1 1L11 11M1 11L11 1",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),Be=({product:t,handleProductSelect:a=(()=>null),utils:n,onClose:o,onCloseChat:r=(()=>null)})=>{var s,i,c,m,d,u,p,v,h,g,E,y,f,N,b,w,C,_,k,I,S,T,x,L,P,$,A,M;const O=l(null),W=null==t||null===(s=t.headShot)||void 0===s||null===(i=s.media)||void 0===i?void 0:i.url,B=(null===(c=t.overview)||void 0===c?void 0:c.shortDescription)||(null===(m=t.overview)||void 0===m?void 0:m.description)||t.description,F=(null==t||null===(d=t.overview)||void 0===d?void 0:d.bulletPoints)||(null==t?void 0:t.modelBullets),D=Boolean((null==t||null===(u=t.communities)||void 0===u?void 0:u.length)>0)&&t.isMaster,R=!(D||null!=t&&t.commPlanID),V=Boolean(null==t?void 0:t.commPlanID),z=V&&(null==t?void 0:t.isQMI),j=V&&Boolean((null==t||null===(p=t.designReadyOptions)||void 0===p?void 0:p.length)>0),{communityModels:H,communityQMIs:U}=null==n||null===(v=n.buildHomeArrays)||void 0===v?void 0:v.call(n,null==t?void 0:t.homes,t.options),q=U.filter(e=>e.isQMI),G=z?(t.designerAppointed||[]).slice(1):[],Q=V&&t.floorplans||[],J=V&&t.elevations||[],Y=null==t||null===(h=t.amenities)||void 0===h||null===(g=h.amenityGroups)||void 0===g||null===(E=g[0])||void 0===E?void 0:E.amenities,{options:K,everyOptionSharedByEachCollection:Z}=(null==n||null===(y=n.getAllCommunityOptions)||void 0===y?void 0:y.call(n,t))||{},X=null==n||null===(f=n.hasOption)||void 0===f?void 0:f.call(n,Z,null==n||null===(N=n.OPTIONS)||void 0===N?void 0:N.VIP_SALES_ONLY),ee=t.isFuture||(null===(b=t.communityTypes)||void 0===b?void 0:b.includes("Future")),te=null===(w=t.salesOffice)||void 0===w?void 0:w.hideTour,ae=t.tour,ne=null==t?void 0:t.dcaDisclaimer,le=null===(C=t.salesOffice)||void 0===C?void 0:C.hideDirections,oe=!ee&&!le,re=Boolean(t.salesOffice),se=null==n||null===(_=n.hasOption)||void 0===_?void 0:_.call(n,K,null==n||null===(k=n.OPTIONS)||void 0===k?void 0:k.GEO_LOCATION_ENABLED),ie=null===(I=t.salesOffice)||void 0===I?void 0:I.lat,ce=null===(S=t.salesOffice)||void 0===S?void 0:S.lon,ue=null===(T=t.salesOffice)||void 0===T?void 0:T.showHours,pe=null===(x=t.salesOffice)||void 0===x?void 0:x.state,ve=null===(L=t.salesOffice)||void 0===L?void 0:L.street,he=null===(P=t.salesOffice)||void 0===P?void 0:P.city,ge=null===($=t.salesOffice)||void 0===$?void 0:$.zip,Ee=null==n||null===(A=n.useMapLink)||void 0===A?void 0:A.call(n,{lat:ie,lon:ce,salesOffice:{state:pe,street:ve,city:he,zip:ge},showGeoLocation:se});let ye="",Ne="#appointment",we=!1;ne?(ye+="Contact the community",Ne="#contact"):te?(ye+="Talk to a local expert",Ne="#contact-email"):ee?(ye+=X?"Contact the community":"Become a VIP",Ne="#join-vip",we=!0):ye+=ae?"Schedule a self-guided tour":"Schedule a tour";const Ce=(e,t)=>{const a=new URL(e,window.location.origin).pathname;return window.location.pathname===a&&(t.preventDefault(),t.stopPropagation(),!0)},ke=()=>{O.current&&O.current.offsetWidth>window.innerWidth-680&&r()};return e.createElement("div",{className:_e.root,ref:O},e.createElement(We,{className:_e.closeButton,onClick:o,ariaLabel:"Close product details"}),e.createElement("div",{className:_e.header},(null==t?void 0:t.name)&&e.createElement("div",null,e.createElement(me,{href:t.url,utils:n},e.createElement("h2",{className:_e.title},t.name)),e.createElement("span",{className:_e.location},V&&t.communityName,!V&&e.createElement(e.Fragment,null,t.city,", ",t.state))),W&&e.createElement("div",{className:_e.imageWrapper},e.createElement("img",{src:W,alt:t.name||"Community",className:_e.image}))),e.createElement("div",{className:_e.content},V&&e.createElement(Ie,{model:t,utils:n}),V&&e.createElement(be,{model:t,utils:n}),V&&e.createElement(fe,{model:t,utils:n}),j&&n.DesignReadyTimeline&&e.createElement("div",{className:_e.designReadyWrapper,id:"design-ready-timeline-panel"},e.createElement(n.DesignReadyTimeline,{moveInDate:t.moveInDate,dates:t.designReadyOptions})),B&&e.createElement("p",{className:_e.description},B),(null==F?void 0:F.length)>0&&e.createElement("div",{className:_e.summarySection},e.createElement("h3",{className:_e.summaryTitle},"Summary"),e.createElement("ul",{className:_e.summaryList},F.map((t,a)=>e.createElement("li",{key:a,className:_e.bullet},(null==t?void 0:t.text)||t)))),D&&e.createElement("div",{className:_e.collectionsContainer},null===(M=t.communities)||void 0===M?void 0:M.map((t,l)=>e.createElement(Te,{key:t.communityId||l,collection:t,utils:n,handleProductSelect:a}))),R&&e.createElement(Se,{communityQMIs:q,communityModels:H,handleProductSelect:a,utils:n}),z&&(null==G?void 0:G.length)>0&&e.createElement(Oe,{images:G,isUseHighRes:!0,utils:n,title:"Designer Appointed Features"}),V&&(null==Q?void 0:Q.length)>0&&e.createElement(Ae,{floorPlans:Q,utils:n}),V&&!z&&(null==J?void 0:J.length)>0&&e.createElement(Oe,{images:J,utils:n,title:"Exterior Designs"}),!V&&Y&&e.createElement(xe,{amenities:Y}),re&&e.createElement("div",{className:_e.footer},e.createElement("div",{className:_e.optionsWrapper},e.createElement(de,{text:ye,href:t.url+Ne,isLink:!0,utils:n,onClick:e=>{ke(),Ce(t.url,e)&&n&&(we?n.openVIPPanel():te?n.openEmailPanel():n.openTourPanel(),n.closeSalesPanel())}}),!ne&&!ee&&e.createElement(de,{text:"Contact the community",href:t.url+"#contact",isLink:!0,utils:n,onClick:e=>{ke(),Ce(t.url,e)&&n&&(n.closeSalesPanel(),n.closeEmailPanel(),n.closeVIPPanel(),n.closeTourPanel(),setTimeout(()=>{n.openSalesPanel()},350))}}),ue&&!ee&&!le&&e.createElement(de,{text:"View Sales Center hours",href:t.url+"#sales-hours",isLink:!0,utils:n,onClick:e=>{ke(),Ce(t.url,e)&&n&&(n.openSalesPanel(),n.closeEmailPanel(),n.closeVIPPanel(),n.closeTourPanel(),setTimeout(()=>{n.jumpToHours()},300))}}),oe&&Ee&&e.createElement(de,{text:"Get directions",href:Ee,isLink:!0,target:"_blank"})))))},Fe=async(e,t)=>(await Promise.allSettled(e.map(e=>fetch(`${t}/${(e=>{try{return new URL(e).pathname.replace(/^\/+/,"")}catch{return e.replace(/^\/+/,"")}})(e)}`).then(e=>{if(!e.ok)throw new Error("HTTP error! status: "+e.status);return e.json()}).then(e=>e.communityComponent??e.masterCommunityComponent??e.modelComponent)))).filter(e=>"fulfilled"===e.status&&e.value).map(e=>e.value),De=e=>{var t;delete e.metaDescription,delete e.schoolInfo,delete e.siteplan,delete e.gallery,delete e.events,delete e.media,delete e.designStudio,delete e.downloadables,delete e.socialMedia,e.commPlanID&&(delete e.amenities,delete e.communityFilters,delete e.logo,delete e.masterCommunityUrl,delete e.qmis),null!==(t=e.homes)&&void 0!==t&&t.models&&e.homes.models.map(e=>{delete e.gallery,delete e.logo,delete e.modelBullets,delete e.media,delete e.downloadables}),e.communities&&e.communities.map(e=>{De(e)})},Re=({value:t,onChange:a,options:n=[],placeholder:l="Select an option",disabled:o=!1,ariaLabel:r,valueKey:s="value",labelKey:i="label"})=>e.createElement("select",{className:"_2T5Od",value:t,onChange:a,"aria-label":r,disabled:o},e.createElement("option",{value:"",disabled:!0},l),n.map(t=>e.createElement("option",{key:t[i],value:t[s]},t[i]))),Ve=({tollRegionsEndpoint:t,availabilityAPI:l,chatRegion:o,productCode:r,onClose:s})=>{const[i,c]=n(""),[m,d]=n(null),[u,p]=n([]),[v,h]=n(!0),[g,E]=n(null),[y,f]=n(!1),[N,b]=n({name:"",email:"",phone:""}),[w,C]=n(!0);if(a(()=>{(async()=>{try{h(!0),E(null);const e=sessionStorage.getItem("chatbot_regions");if(e)return p(JSON.parse(e)),void h(!1);const a=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!a.ok)throw new Error("Failed to fetch regions");const n=await a.json(),l=new Set,o=n.flatMap(e=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.regions)||[]}).filter(e=>{var t;return null===(t=e.region)||void 0===t?void 0:t.acquireId}).map(e=>({chatRegion:e.region.acquireId,fullName:e.region.fullName,metroId:e.region.metroId})).filter(e=>!l.has(e.fullName)&&(l.add(e.fullName),!0)).sort((e,t)=>e.fullName.localeCompare(t.fullName));sessionStorage.setItem("chatbot_regions",JSON.stringify(o)),p(o)}catch(e){E("Unable to load regions. Please try again.")}finally{h(!1)}})()},[t]),a(()=>{C(!0),(async()=>{if(!o&&!m)return C(!1),void f(!1);const e=await(async(e,t)=>{var a,n;const l=await z(e,t);return(null==l||null===(a=l.data)||void 0===a||null===(n=a.payload)||void 0===n?void 0:n.length)>0})(o??(null==m?void 0:m.chatRegion),l);setTimeout(()=>{f(e),C(!1)},500)})()},[o,m,l]),g)return e.createElement("div",{className:"_jojph"},g);let _="",k="Speak with Local Expert";return y?(_="Good news! A local expert is available",o?_+=" for this area of interest":m&&(_+=" for "+m.fullName),_+=". Share your contact information below so I can transfer you."):(k="Contact Me",_="Our local experts are currently offline",o?_+=" in this area of interest":m&&(_+=" in "+m.fullName),_+=". Share your contact information below and we will get back to you."),e.createElement("div",{className:"_1nfWt"},e.createElement(We,{onClick:s,ariaLabel:"Close form"}),!o&&e.createElement("div",{className:"_hvVCB"},e.createElement("p",{className:"_1bBiy"},"I'll connect you with a local expert. Select your area of interest below to get started."),e.createElement(Re,{value:i,onChange:async e=>{const t=e.target.value;c(t);const a=u.find(e=>e.metroId==t);d(a)},options:u,placeholder:v?"Loading areas of interest...":"Select one",disabled:v,ariaLabel:"Select your region",valueKey:"metroId",labelKey:"fullName"})),w&&e.createElement("p",{className:"_1bBiy"},"Please wait while I look for an available expert in your area of interest."),e.createElement("div",{className:"_3REMG"},(!o&&!m||w)&&e.createElement("div",{className:"_2i7E6"},w&&e.createElement("div",{className:"_1VjYh"},e.createElement(ie,null))),e.createElement("p",{className:"_1bBiy"},_),e.createElement(G,{formData:N,setFormData:b,onSubmit:e=>{var t,a,n,l,s;e.preventDefault();const i=e.target,{valid:c,firstName:d,lastName:u}=Q(i);if(!c)return!1;const p=null===(t=i.email)||void 0===t||null===(a=t.value)||void 0===a?void 0:a.trim(),v=null===(n=i.phone)||void 0===n||null===(l=n.value)||void 0===l?void 0:l.trim(),h=(null===(s=i.isAgent)||void 0===s?void 0:s.value)??"0";console.log("Form submitted with data:",d,u,p,v,h,r,(null==m?void 0:m.chatRegion)??o)},cta:k,isShowPhoneInput:!0,disabled:!o&&!m||w})))},ze=()=>"undefined"!=typeof window&&window.innerWidth<768,je=e=>{let t={name:e.name,url:e.url,fromModelList:e.fromModelList||!1,fromProductsList:e.fromProductsList||!1,fromPageNavigation:e.fromPageNavigation||!1};return e.commPlanID?(t.commPlanID=e.commPlanID,t.type=e.isQMI?"qmi":"homeDesign"):e.isMaster&&e.masterCommunityId?(t.masterCommunityId=e.masterCommunityId,t.type="masterCommunity"):e.communityId?(t.communityId=e.communityId,t.type="community"):t=e,t},He=({tollRegionsEndpoint:t,tollRouteApi:r,utils:s={},chatRegion:i,productCode:c,pageSummaryData:m,availabilityAPI:d,setIsChatBotOpenExternal:u=(()=>null),isChatBotOpenExternal:p,setChatBotTransferData:v=(()=>null),trackChatEvent:h=(()=>null),chatClickedEventString:g="chatClicked",chatStartedEventString:E="chatStarted"})=>{const w=l(null),{width:C,height:_,isResizing:k,handleStart:I}=function(e){const[t,l]=n(ze()?345:410),[r,s]=n(650),[i,c]=n(!1),m=o(()=>750,[]),d=o(()=>Math.floor(.96*window.innerHeight),[]),u=o(e=>{e.preventDefault(),c(!0)},[]),p=o(t=>{if(!i||!e.current)return;t.touches&&t.preventDefault();const a=e.current.getBoundingClientRect(),n=t.touches?t.touches[0].clientY:t.clientY,o=a.right-(t.touches?t.touches[0].clientX:t.clientX),r=m(),c=Math.min(Math.max(o,ze()?345:410),r);l(c);const u=a.bottom-n,p=d(),v=Math.min(Math.max(u,650),p);s(v)},[i,e,m,d]),v=o(()=>{c(!1)},[]);return a(()=>(i&&(document.addEventListener("mousemove",p),document.addEventListener("mouseup",v),document.addEventListener("touchmove",p,{passive:!1}),document.addEventListener("touchend",v),document.addEventListener("touchcancel",v),document.body.style.cursor="nesw-resize",document.body.style.userSelect="none"),()=>{document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",v),document.removeEventListener("touchmove",p),document.removeEventListener("touchend",v),document.removeEventListener("touchcancel",v),document.body.style.cursor="",document.body.style.userSelect=""}),[i,p,v]),a(()=>{const e=()=>{const e=m(),a=d();t>e&&l(e),r>a&&s(a)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[t,r,m,d]),{width:t,height:r,isResizing:i,handleStart:u}}(w),[S,T]=n(!0),[x,L]=n(!1),[P,$]=n([]),[A,M]=n(""),[O,W]=n(null),B=l(null),F=l(null),[D,R]=n(!1),[V,z]=n(null),[j,H]=n(null),[q,G]=n([]),[Q,J]=n(!1),Y=(e,t={})=>{G(a=>[...a.filter(a=>!(a.name===e.name&&a.type===e.type&&a.commPlanID===e.commPlanID&&a.fromProductsList===t.fromProductsList&&a.fromModelList===t.fromModelList&&a.fromPageNavigation===t.fromPageNavigation||t.fromProductsList&&(a.fromProductsList||a.fromModelList)||t.fromModelList&&a.fromModelList||t.fromPageNavigation&&a.fromPageNavigation)),e].slice(-10))},K=()=>{L(!1),u(!1),$([]),z(null),H(null),G([]),J(!1),v(null),M(""),W(null),R(!1),window.localStorage.removeItem("tbChatBot")},Z=async(e,t)=>{if(!A.trim()&&!t)return;const a=new URLSearchParams(window.location.search),n=a.get("endpointId")??"c5wmooifc5",l=a.get("apiKey")??"hakKak197h8VbuVbPdU2H8ggcUCsWmIa8GUMwdUC",o=A||t,s={id:Date.now(),text:o,type:"user"};W(null),$([...P,s]),M(""),R(!0);const i=q[q.length-1],c={prompt:o,session_id:V&&j&&!b(j)?V:"",...i&&"other"!==i.type&&{context:i}};let m=!1;(async(e,{baseUrl:t,apiKey:a,onChunk:n,onDone:l,onError:o})=>{const r={"Content-Type":"application/json"};a&&(r["x-api-key"]=a);try{var s;const a=await fetch(t+"/chat",{method:"POST",headers:r,body:JSON.stringify(e)});if(!a.ok)throw new Error("API error: "+a.status);const o=null===(s=a.body)||void 0===s?void 0:s.getReader();if(!o)throw new Error("No response body");const i=new TextDecoder;let c="";for(;;){const{done:e,value:t}=await o.read();if(e)break;c+=i.decode(t,{stream:!0});const a=c.split("\n");c=a.pop();for(const e of a){const t=e.trim();if(t)try{const e=JSON.parse(t);n&&e.response&&n({...e.response,session_id:e.session_id})}catch{}}}if(c.trim())try{const e=JSON.parse(c.trim());n&&e.response&&n(e.response)}catch{}l&&l()}catch(e){o&&o(e)}})(c,{baseUrl:`https://${n}.execute-api.us-east-1.amazonaws.com/prod`,apiKey:l,onChunk:e=>{console.log("chunk:",e),z(e.session_id),H(Date.now()+9e5);const t=[...e.communities||[],...e.qmis||[],...e.homeDesigns||[]];if(t&&Array.isArray(t)&&t.length>0)m=!0,R(!0),Fe(t,r).then(t=>{if(R(!1),console.log("getProductData products:",t),(null==t?void 0:t.length)>0){const a={id:Date.now()+2,text:e.message,type:"products",products:t};$(e=>[...e,a])}else{const t={id:Date.now()+1,text:e.message,type:"bot"};$(e=>[...e,t])}}).catch(e=>{console.error("getProductData error:",e),R(!1)});else if(e.error)W("An error occurred while sending the message. Pleaesse try again."),R(!1);else{const t={id:Date.now()+1,text:e.message,type:"bot"};$(e=>[...e,t])}},onDone:()=>{m||R(!1),console.log("stream done")},onError:e=>{R(!1),console.error("stream error:",e),W("An error occurred while sending the message. Pleaesse try again.")}})},X=e=>{Z(0,e.value)},ee=async(e,{fromProductsList:t=!1,fromModelList:a=!1}={})=>{var n;const l=Boolean(e.commPlanID);let o=null;l&&!t&&($(e=>[...e.filter(e=>"model"!==e.productType)]),R(!0),o=await Fe([e.url],r)),R(!1);const s={id:Date.now(),type:"product",product:l&&(null===(n=o)||void 0===n?void 0:n[0])||e,productType:l?"model":"community"};$(t?e=>[...e.filter(e=>"product"!==e.type),s]:e=>[...e,s]),Y(je({...e,fromProductsList:t,fromModelList:a}),{fromModelList:a,fromProductsList:t})},te=e=>{if(e&&"visibilitychange"===e.type&&document.hidden)return;const t=f("tbChatBot");if(console.log(t),t&&t.value&&t.value.expiry&&!b(t.value.expiry)){const{messages:e,sessionId:a,expiry:n,userEvents:l}=t.value||{};e&&$(e),a&&z(a),n&&H(n),l&&G(l),L(!0)}else t&&N("tbChatBot")};return a(()=>(te(),window.addEventListener("visibilitychange",te),()=>{window.removeEventListener("visibilitychange",te)}),[]),a(()=>{if(V&&j){const e=P.slice(-10);e.map(e=>{var t;if((null===(t=e.products)||void 0===t?void 0:t.length)>0)e.products=e.products.map(e=>{const t={...e};return De(t),t});else if(e.product){const t={...e.product};return De(t),t}}),y("tbChatBot",{messages:e,sessionId:V,expiry:j,userEvents:q})}},[P,V,j,q]),a(()=>{var e;B.current&&null!==(e=F.current)&&void 0!==e&&e.lastElementChild&&B.current.scrollTo({top:F.current.lastElementChild.offsetTop-80,behavior:"smooth"})},[P,D]),a(()=>{p&&L(!0)},[p]),a(()=>{m&&Y(je({...m,fromPageNavigation:!0}),{fromPageNavigation:!0})},[m]),S?e.createElement("div",{className:""+oe.root},e.createElement("button",{className:`${oe.launchButton} ${oe.buttonReset} ${x?oe.hidden:""}`,onClick:()=>{L(!0)},"aria-label":"Open Toll Brothers' AI Assistant","aria-controls":"chatbot-interface","aria-expanded":x},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/chatbot-button.svg"})),e.createElement("div",{id:"chatbot-interface",className:`${oe.interface} ${x?"":oe.hidden}`,ref:w,style:{width:C+"px",height:_+"px"}},e.createElement("div",{className:`${oe.resizeHandle} ${k?oe.resizing:""}`,onMouseDown:I,onTouchStart:I,role:"separator","aria-label":"Resize chat"},e.createElement("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M0 10L10 0M0 5L5 0",stroke:"currentColor",strokeWidth:"1"}))),e.createElement("div",{className:oe.header},e.createElement("div",{className:oe.title},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/chatbot-icon.svg"}),e.createElement("span",null,"Hi, I'm AI Concierge")),e.createElement(ae,{className:oe.headerButtons,onClose:()=>{J(!0)},onMinimize:()=>{L(!1),u(!1)}})),e.createElement("div",{className:oe.body,ref:B},e.createElement("p",null,"I am the Toll Brothers AI Concierge. I can assist with your home search using the prompts below or direct you to one of our human experts for additional help."),e.createElement("div",{className:oe.messages,ref:F},P.map(a=>"user"===a.type?e.createElement(se,{key:a.id,message:a.text}):"bot"===a.type?e.createElement(re,{key:a.id,message:a.text,component:a.component}):"prompt"===a.type?e.createElement(ue,{key:a.id,options:a.options,onOptionSelect:X}):"products"===a.type?e.createElement(re,{key:a.id,message:a.text,component:e.createElement(Ce,{products:a.products,handleProductSelect:e=>ee(e,{fromProductsList:!0}),utils:s})}):"product"===a.type?e.createElement(re,{key:a.id,message:a.text,component:e.createElement(Be,{key:a.id,product:a.product,utils:s,handleProductSelect:ee,onClose:()=>((e,t)=>{if($(t=>t.filter(t=>t.id!==e)),t){const e=Boolean(t.commPlanID),a=Boolean(t.isMaster);G(n=>n.filter(n=>!(!n.fromPageNavigation&&(e&&n.commPlanID===t.commPlanID||!a&&!e&&t.communityId&&n.communityId===t.communityId||a&&!e&&t.masterCommunityId&&n.masterCommunityId===t.masterCommunityId))))}})(a.id,a.product),onCloseChat:K})}):"form"===a.type?e.createElement(re,{key:a.id,component:e.createElement(Ve,{chatRegion:i,productCode:c,tollRegionsEndpoint:t,availabilityAPI:d,onClose:()=>$(e=>e.filter(e=>"form"!==e.type))})}):void 0),D&&e.createElement(re,{component:e.createElement(ie,null)}),O&&e.createElement("div",{className:oe.errorMessage},O))),e.createElement("div",{className:oe.footer},e.createElement(U,{value:A,onChange:e=>{M(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Z())},onSend:Z,placeholder:"Ask AI Concierge your question here."}),e.createElement("button",{className:oe.transferButton,onClick:()=>{const e={id:Date.now(),text:"In order to connect you with a local expert, please select your area of interest:",type:"form"};$(t=>[...t.filter(e=>"form"!==e.type),e])},type:"button"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/osc.svg"}),e.createElement("span",null,"Speak to an expert"))),Q&&e.createElement(ne,{onStay:()=>{J(!1)},onLeave:K}))):null},Ue=({onSignInClick:t=(()=>null),classes:a={}})=>e.createElement("article",{className:"_3F1hL "+(a.root??"")},e.createElement("p",null,"Start your new home journey off right with My Favorites. Simply register for an account and use My Favorites to:"),e.createElement("ul",null,e.createElement("li",null,"Save communities and home designs that inspire you"),e.createElement("li",null,"Personalize your own dream home with interactive tools"),e.createElement("li",null,"Keep track of every step of your journey from design selections to financing and more")),e.createElement(S,{className:"_2pagQ",onClick:t},"Sign In"),e.createElement("hr",null),e.createElement("span",{className:"_1Tpgx"},"Don't have an account?"," ",e.createElement("button",{className:"_X1HLE clear-styles",onClick:t},"Create an Account")));export{He as Chatbot,x as DragSlider,Ue as FavoritesSignIn,I as FullScreenGallery,E as HeroComponent,B as HorizontalScroller,W as MortgageCalculator,M as PrintButton,v as Slider,S as TollButton,le as TollChat,L as printElement};
1
+ import e,{Children as t,useEffect as a,useState as n,useRef as l,useCallback as o}from"react";import r from"blaze-slider";import{TransformWrapper as s,TransformComponent as i}from"react-zoom-pan-pinch";import{createPortal as c}from"react-dom";import{fetchEventSource as m}from"@microsoft/fetch-event-source";import d from"react-markdown";const u=({fill:t})=>e.createElement("svg",{fill:t,style:{width:"100%",height:"100%"},viewBox:"0 0 30 30",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M12.445 20.79a1.112 1.112 0 0 1 0 1.588 1.14 1.14 0 0 1-1.587 0l-6.65-6.65c-.207-.206-.334-.492-.334-.81s.127-.602.333-.81l6.651-6.65c.444-.443 1.143-.443 1.587 0s.444 1.144 0 1.588l-4.762 4.746h16.905c.62-.001 1.111.507 1.111 1.126s-.492 1.11-1.11 1.11H7.683z",fillRule:"evenodd"})),p=({fill:t})=>e.createElement("svg",{fill:t,style:{width:"100%",height:"100%",transform:"rotate(180deg)"},viewBox:"0 0 30 30",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M12.445 20.79a1.112 1.112 0 0 1 0 1.588 1.14 1.14 0 0 1-1.587 0l-6.65-6.65c-.207-.206-.334-.492-.334-.81s.127-.602.333-.81l6.651-6.65c.444-.443 1.143-.443 1.587 0s.444 1.144 0 1.588l-4.762 4.746h16.905c.62-.001 1.111.507 1.111 1.126s-.492 1.11-1.11 1.11H7.683z",fillRule:"evenodd"})),v=({children:n,mediaList:l=[],disablePagination:o=!1,cascadingConfig:s={},onNext:i=(()=>{}),onPrevious:c=(()=>{}),disableSlider:m=!1,disableZoom:d,setIsZoomedIn:v=(()=>null),isZoomedInRef:h})=>{const g=t.count(n)>1,E={all:{slidesToShow:1,slidesToScroll:1,slideGap:"20px",loop:!0,enableAutoplay:!1,stopAutoplayOnInteraction:!0,autoplayInterval:3e3,autoplayDirection:"to left",enablePagination:!1,transitionDuration:500,transitionTimingFunction:"ease",draggable:d}},y=e.useRef(),f=e.useRef(),N=e.useRef(!0),b=e.useRef(null),w=(e,t)=>{var a,n,o,r;N.current=!1,clearTimeout(b.current),b.current=setTimeout(()=>{N.current=!0},550),v(!1),h.current=!1,"next"===e?(t&&y.current.next(),i({mediaList:l,slideIndex:null==f||null===(a=f.current)||void 0===a||null===(n=a.blazeSlider)||void 0===n?void 0:n.stateIndex})):(t&&y.current.prev(),c({mediaList:l,slideIndex:null==f||null===(o=f.current)||void 0===o||null===(r=o.blazeSlider)||void 0===r?void 0:r.stateIndex}))};return a(()=>{if(!y.current&&!m){const e={...E,...s};y.current=new r(f.current,e)}},[]),a(()=>{const e=f.current;let t=0,a=null,n=null;const l=window.innerWidth;let o=40;l>=1200?o=120:l>=800&&(o=90);const r=e=>{var a,l;t=(null===(a=e.touches)||void 0===a||null===(l=a[0])||void 0===l?void 0:l.clientX)||e.clientX,"mousedown"===e.type&&(n=!0)},s=()=>{a=null,n=null},i=()=>{a=null,n=null},c=e=>{var l,r,s;const i="mousemove"===e.type,c=((null===(l=e.touches)||void 0===l||null===(r=l[0])||void 0===r?void 0:r.clientX)||e.clientX)-t;if(Math.abs(c)>o&&N.current&&(i&&n||!i&&1===(null===(s=e.touches)||void 0===s?void 0:s.length))){const e=c>0?"right":"left";e!==a&&(a=e,"left"===a?h.current||w("next",!0):"right"===a&&(h.current||w("prev",!0)))}else null!==a&&(a=null)},m=()=>{v(!1),h.current=!1};return d||(e.addEventListener("touchstart",r),e.addEventListener("touchmove",c),e.addEventListener("touchend",s),e.addEventListener("touchcancel",i),e.addEventListener("mousedown",r),e.addEventListener("mousemove",c),e.addEventListener("mouseup",s),window.addEventListener("resize",m)),()=>{e.removeEventListener("touchstart",r),e.removeEventListener("touchmove",c),e.removeEventListener("touchend",s),e.removeEventListener("touchcancel",i),e.removeEventListener("mousedown",r),e.removeEventListener("mousemove",c),e.removeEventListener("mouseup",s),window.removeEventListener("resize",m),N.current=!0}},[]),e.createElement("div",{className:"blaze-slider _acquk",ref:f},e.createElement("div",{className:"blaze-container _acquk"},e.createElement("div",{className:"blaze-track-container _acquk"},e.createElement("div",{className:(m?"":"blaze-track")+" _acquk"},n))),g&&e.createElement("div",{className:"controls _3tOV7"},e.createElement("button",{onClick:()=>w("prev"),className:"blaze-prev _1ooEo"},e.createElement(u,{fill:"#fff"})),!o&&e.createElement("div",{className:"blaze-pagination"}),e.createElement("button",{onClick:()=>w("next"),className:"blaze-next _1ooEo"},e.createElement(p,{fill:"#fff"}))))},h=({src:t,alt:o,title:r,url:s,opacity:i,callBack:c,Link:m,type:d,poster:u})=>{const[p,v]=n(!1),[h,g]=n(null),[E,y]=n(!1),f=l(null),N=l(null),b=l(null),w=null==d?void 0:d.toLowerCase().includes("video"),C=t&&!w?t:u,_=t&&!w?t.replace("_1920.","_920."):u,k=()=>{f.current&&(f.current.style.opacity=1),N.current&&(N.current.style.opacity=1),b.current&&(b.current.style.opacity=i||0)};return a(()=>{if(N.current&&N.current.complete){const{naturalWidth:e,naturalHeight:t}=N.current;v(e<t),k()}t&&w&&g(t)},[]),e.createElement("div",{className:"_16utp "+(p?"_1Kd2Z":null)},s&&e.createElement(m,{href:s,className:"_30Nki"},r),e.createElement("div",{className:"_1pOqB",ref:b}," "),!E&&e.createElement("picture",null,e.createElement("source",{media:"(max-width: 920px)",srcSet:_}),e.createElement("source",{media:"(min-width: 921px)",srcSet:C}),e.createElement("img",{className:"_12xcH",src:_,alt:o||"",onLoad:e=>{const{naturalWidth:t,naturalHeight:a}=e.target;v(t<a),k(),c&&c()},ref:N})),w&&h&&e.createElement("video",{className:"_1Nu9k",src:h,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,onLoadedData:()=>{y(!0),k()}}),p&&!E&&e.createElement("picture",null,e.createElement("source",{media:"(max-width: 920px)",srcSet:_}),e.createElement("source",{media:"(min-width: 921px)",srcSet:C}),e.createElement("img",{className:"_1eZH0",src:_,alt:o||"",ref:f})))};function g(e,t){return t?e.unshift(e.pop()):e.push(e.shift()),e}function E({slides:t,overlayOpacity:o,Link:r,...s}){const i=l(t),[c,m]=n(t[0]||{image:"",title:"",URL:""}),[d,u]=n(),[p,v]=n(!1),[E,y]=n(0),f=l(null),N=l(null),b=()=>{var e;null!==(e=window.toll)&&void 0!==e&&e.heroComponentSlides&&(g(window.toll.heroComponentSlides,!0),g(window.toll.heroComponentSlides,!0),y(e=>e+1))};return a(()=>(window.toll||(window.toll={}),window.toll.heroComponentSlides=null,window.toll.isHeroComponentFlipping=!1,window.toll.resetHeroSlides=b,window.toll.debugHeroComponent&&console.log("Hero component mounted"),()=>{clearTimeout(N.current),clearTimeout(f.current),delete window.toll.isHeroComponentFlipping}),[]),a(()=>{const e=window.toll.heroComponentSlides||i.current;(null==e?void 0:e.length)>1&&u(E+1<(null==e?void 0:e.length)?e[E+1]:e[0])},[E]),e.createElement("div",{className:"_2KJsi"},e.createElement("div",{className:"_2gi5v _3K2k2 "+(p?"_2JinS":"")},d&&e.createElement(h,{src:d.image,alt:d.title?d.title:"",title:d.title,opacity:o,url:d.URL,callBack:()=>{window.toll.debugHeroComponent&&console.log("Next image loaded"),clearTimeout(f.current),f.current=setTimeout(()=>{window.toll.debugHeroComponent&&console.log("Fading in next image"),v(!0),setTimeout(()=>{window.toll.debugHeroComponent&&console.log("Changing slides"),d&&(window.toll.debugHeroComponent&&console.log("Setting current slide to next slide"),m(d),(()=>{clearTimeout(N.current);const e=window.toll.heroComponentSlides||i.current;window.toll.isHeroComponentFlipping=!0,window.toll.debugHeroComponent&&console.log("Flipping slides",e),N.current=setTimeout(()=>{v(!1);let t=E+1;t>=e.length&&(t=0),y(t),window.toll.isHeroComponentFlipping=!1,window.toll.debugHeroComponent&&console.log("Flipping slides done")},1e3)})())},2e3)},6e3)},Link:r})),e.createElement("div",{className:"_2gi5v"},e.createElement(h,{src:c.image,alt:c.title?c.title:"",title:c.title,url:c.URL,opacity:o,Link:r,type:c.type,poster:c.poster})))}const y=(e,t,a)=>{const n={value:t};a&&(n.expiry=Date.now()+a);try{localStorage.setItem(e,JSON.stringify(n))}catch{}},f=e=>{try{const t=localStorage.getItem(e);return t?JSON.parse(t):null}catch{return null}},N=e=>{try{localStorage.removeItem(e)}catch{}},b=e=>Date.now()>e;var w={mediaWrapper:"_3vBmW",transformWrapper:"_1mbWq",transformContentClass:"_Rmr82",media:"_3SDin",show:"_29wxo",bottomRightNav:"_3Gs-f",mediaShareNav:"_2dxeI",mediaFacebookShare:"_3R4xW",mediaPinterestShare:"_18fBz",modelLink:"_3ACkB",iframeCover:"_UmlYE",iframeWithCaption:"_3eijh"};function C({media:t,showCaption:r,showModelLink:c=!1,showSocials:m,dataLayerPush:d,clickAction:u,index:p,mediaCount:v,backgroundColor:h,classes:g={},Link:E,disableZoom:y=!1,setIsZoomedIn:f=(()=>null),isZoomedIn:N=!1,isZoomedInRef:b}){var C,_;const k=l(null);let I=!1;const S=((e,t)=>{let a="";return e.url?a=e.url:!e.url&&(a=e.s1920x1080||e.s1800x815||e.s450x266||e.link||e.src||e.src_sm),a&&!a.startsWith("https://")&&a.indexOf("tollbrothers.com")<0&&a.indexOf("tollbrothers-static-public")<0&&(a="https://cdn.tollbrothers.com"+a),a})(t);let T=null,x=t.link||null;const L=t.title||"Duke",P=t.title||t.description||"";let $=t.description||t.title||"",A="image",M="";const[O,B]=n(!1),F=l(),W=(p+1).toString()+" / "+v.toString();null!=t&&null!==(C=t.type)&&void 0!==C&&C.includes("video")?(x=null,A="video",T=(e=>{let t="",a="?";return e.link.indexOf("?")>-1&&(a="&"),e.autoplay=e.autoplay||0,t="video::vimeo"===e.type?`https://player.vimeo.com/video/${e.link}${a}portrait=0&title=0&byline=0&badge=0&autoplay=${e.autoplay}`:"",t})(t),($&&r||v>1)&&(M=w.iframeWithCaption)):null!=t&&null!==(_=t.type)&&void 0!==_&&_.includes("walkthrough")&&(x=null,A="walkthrough",T=(e=>{let t="";return"walkthrough::matterport"===e.type?t="https://my.matterport.com/show/?m="+e.link+"&ts=2&lp=1&hl=1&qs=1&play=1&nt=0&search=0":(t=e.link,e.link.includes("?")||(t+="?v=1")),t})(t),($&&r||v>1)&&(M=w.iframeWithCaption)),r||($=t.description||t.title),/.svg$/.test(S)&&(I=!0);const D=function(e){u&&u(p)},R=()=>{B(!0)};return a(()=>{F.current&&F.current.complete&&B(!0)},[]),a(()=>{b&&!b.current&&null!=k&&k.current&&k.current.resetTransform()},[null==b?void 0:b.current]),e.createElement("div",{className:w.mediaWrapper},!O&&e.createElement("span",{className:"spinner"}),e.createElement("figure",{className:`${w.media} ${O?w.show:""} ${M}`},"image"===A&&e.createElement(s,{ref:k,initialScale:1,centerOnInit:!0,centerZoomedOut:!0,limitToBounds:!0,disabled:y,panning:{disabled:!N},onZoomStart:()=>{f(!0),b.current=!0},onZoomStop:(e,t)=>{var a;(null==e||null===(a=e.state)||void 0===a?void 0:a.scale)>1?(f(!0),b.current=!0):(f(!1),b.current=!1)}},e.createElement(i,{wrapperClass:w.transformWrapper,contentClass:w.transformContentClass},e.createElement("img",{className:I?"mediaSVG__adjust":"",src:S,alt:P,onClick:o(D,[p]),onLoad:R,loading:"lazy",ref:F}))),("video"===A||"walkthrough"===A)&&e.createElement(e.Fragment,null,e.createElement("iframe",{src:T,onLoad:R,allow:"autoplay; encrypted-media",loading:"lazy",ref:F}),e.createElement("div",{className:w.iframeCover+" mediaIframeCover__adjust",onClick:o(D,[p])})),x&&L&&c&&e.createElement(E,{href:x},e.createElement("a",{title:`View ${L} Model`},e.createElement("span",{className:w.modelLink},"View ",L," Model"))),($&&r||v>1)&&e.createElement("figcaption",{className:""+(g.figcaption??""),style:{backgroundColor:h}},r&&e.createElement("span",null,$),e.createElement("div",{className:w.bottomRightNav},v>1&&e.createElement("span",null,W),"image"===A&&m&&e.createElement("div",{className:w.mediaShareNav},e.createElement("button",{className:`${w.mediaFacebookShare} ${w.mediaShareButton} js-facebook-share-analytics-trig`,onClick:()=>{window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent(S)+"&t="+encodeURIComponent($),"sharer","toolbar=0,status=0,width=626,height=436"),d&&d({event:"facebook_share"})}}),e.createElement("button",{className:`${w.mediaPinterestShare} ${w.mediaShareButton} js-pinterest-share-analytics-trig`,onClick:()=>{window.open("http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(S)+"&description="+encodeURIComponent($),"sharer","toolbar=0,status=0,width=626,height=436"),d&&d({event:"pinterest_share"})}}))))))}const _=({animate:t,autoFocus:n,children:o,onClose:r,onCloseHandler:s,siteplan:i,show:c})=>{const m=l(null);return a(()=>{c&&n&&null!=m&&m.current&&m.current.focus()},[c,n,null==m?void 0:m.current]),e.createElement("div",{className:`\n _3L7oc\n ${c?"_1XxTA":""}\n ${t?"_AfV0I":""}\n ${i?"_2DPdH":""}\n `,ref:m,tabIndex:0},o,r&&e.createElement("button",{className:"_2SgtC clear-styles closeButton",onClick:s}))},k=({children:t,show:l,onClose:o,siteplan:r,portalId:s})=>{const[i,m]=n(!1);a(()=>{l&&m(!0),l||null===l||o||d()},[l]);const d=()=>{m(!1),o&&o()};return s?c(e.createElement(_,{animate:i,children:t,onClose:o,onCloseHandler:d,siteplan:r,show:l,autoFocus:!0}),document.getElementById(s)):e.createElement(_,{animate:i,children:t,onClose:o,onCloseHandler:d,siteplan:r,show:l})},I=({show:t=!1,mediaList:a=[],showSocials:o=!1,dataLayerPush:r=null,onClose:s=(()=>{}),onNext:i=(()=>{}),onPrevious:c=(()=>{}),initialSlide:m=1,backgroundColor:d,portalId:u,classes:p={},disableSlider:h=!1,showLeftCloseButton:g=!1,disableZoom:E=!1})=>{const y=((e,t)=>{const a=[...e],n=e.length-t;let l=0;do{l+=1,a.unshift(a.pop())}while(l<n);return a})([...a],m-1),[f,N]=n(!1),b=l(!1),w=()=>{N(!1),b.current=!1,s()};return t&&e.createElement(k,{show:!0,portalId:u},e.createElement("div",{className:"_FWxfB full"},g&&e.createElement("button",{className:"_3lEMV _E4XkO "+(p.closeButton??""),onClick:w}),e.createElement("button",{className:"_3lEMV "+(p.closeButton??""),onClick:w}),e.createElement("div",{className:"_hWjY9"},e.createElement(v,{mediaList:y,disablePagination:!0,onNext:i,onPrevious:c,disableSlider:h,disableZoom:E,isZoomedInRef:b,setIsZoomedIn:N},y.map(function(t,a){return e.createElement("div",{className:"_1K4yC",key:a},e.createElement(C,{media:t,index:a,mediaCount:y.length,showSocials:o,dataLayerPush:r,showCaption:!0,backgroundColor:d,classes:p,disableZoom:E,isZoomedIn:f,setIsZoomedIn:N,isZoomedInRef:b}))})))))},S=({children:t,onClick:a,buttonColor:n,className:l="",type:o="button",disabled:r=!1})=>{let s="";return"white"==n&&(s="_fMM0t"),e.createElement("button",{type:o,disabled:r,className:`_2CL0u ${s} ${l}`,onClick:a},t)};var T={track:"_Xnsae",rangeInput:"_VNfw6"};const x=({number:t,setNumber:a,step:n,minValue:l,maxValue:o,className:r,onChange:s})=>e.createElement("div",{className:T.dragSliderWrapper},e.createElement("div",{className:T.track,id:"track"},e.createElement("input",{className:`${T.rangeInput} ${r} ada-override`,name:"minDragSlider",type:"range",min:l,max:o,step:n,value:t,onChange:e=>{a(e.target.value),s&&s(e.target.value)},style:{backgroundSize:100*(t-l)/(o-l)+"% 100%"}}))),L=e=>{if(!e)return;e.classList.add("printable");let t=e.parentElement;for(;t&&t!==document.body;){const e=window.getComputedStyle(t).display;t.style.display||t.classList.contains("js-noprint")||(t.style.setProperty("display",e,"important"),t.classList.add("js-clear-display-style")),t=t.parentElement}document.body.classList.add("print-mode");const a=()=>{document.body.classList.remove("print-mode"),e.classList.remove("printable"),document.querySelectorAll(".js-clear-display-style").forEach(e=>{e.classList.remove("js-clear-display-style"),e.style.removeProperty("display")}),window.removeEventListener("afterprint",a)};window.addEventListener("afterprint",a),setTimeout(()=>{window.print()},200)},P=e=>e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,","),$=(e,t,a=2)=>Math.round((e/100*t).toFixed(a)),A=(e,t,a=!0)=>{var n;let l=null==e?void 0:e.replace(/[^0-9.]/g,"");return a||(l=null==e?void 0:e.replace(/[^0-9]/g,"")),t&&(null===(n=l)||void 0===n?void 0:n.length)>1&&l.startsWith("0")&&(l=l.slice(1)),l},M=({classes:t={},onClick:a,children:n})=>e.createElement("button",{className:`_1vTfv ${null!=t&&t.root?t.root:""} clear-styles js-noprint`,type:"button",onClick:a},e.createElement("img",{className:"_2LMvr "+(null!=t&&t.icon?t.icon:""),src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/print.svg"}),n&&e.createElement("div",{className:"_2QQ2W "+(null!=t&&t.content?t.content:"")},n));var O={calculatorWrapper:"_39eVT",left:"_ZBip_",right:"_3YrBp",printButton:"_3dzg8",estimatedPayment:"_2LdGv",graphic:"_14yhQ",principal:"_3m_y6",taxes:"_1VA0p",storyBook:"_1CQl8",details:"_1eRaH",toolTipLaunch:"_3KVQK",toolTip:"_foK4M",isActive:"_2yO5X",close:"_3VWG8",dragSliderWrapper:"_gT0kh",sliderWrapper:"_2C99A",dragWrapper:"_1d3M9",error:"_3b7Hp",callOutWrapper:"_2ldV0",down:"_13m8z",dropDownArrow:"_zFNpl",input:"_2ZBwg",inputFont:"_1zyp5",inputPercentage:"_1k3EF",inputWrapper:"_1GA5s",advancedButtonWrapper:"_5g_rP",open:"_FAdIf",tbdotcom:"_2Lp5J",tbmortgage:"_3gXTs"};const B=({initialSalesNumber:t=1e5,initialInterestRate:o=3.5,maxSalePrice:r=1e6,targetClass:s,printElementRef:i,classes:c={}})=>{const m=l(null),d=l(!1),u=l(!1),[p,v]=n(t),[h,g]=n(30),[E,y]=n(o),[f,N]=n(0),[b,w]=n(0),[C,_]=n(0),[k,I]=n(()=>$(20,t)),[S,T]=n(20),[B,F]=n(0),[W,D]=n(0),[R,V]=n(0),[z,j]=n(0),[H,U]=n(0),[q,G]=n(0),[Q,J]=n(0),[Y,K]=n(!0),[Z,X]=n(!1);let ee;const te=(e,t,a=(()=>null))=>{const n=A(e,!0,!1);n>=0?(t(n),a(Number(n)?((e,t,a=2)=>(e/t*100).toFixed(a))(n,p):0)):(t(""),a(0))},ae=(e,t,a=(()=>null))=>{const n=A(e,!1,!0);n>=0?(t(n),a($(n,p))):(t(""),a(0))},ne=e=>{const t=e.currentTarget,a=t.nextElementSibling,n=document.querySelectorAll('[role="tooltip"]'),l=document.querySelectorAll(".js-tooltip-trigger");n.forEach(e=>e.classList.remove(O.isActive)),l.forEach(e=>e.setAttribute("aria-expanded","false")),null==a||a.classList.add(O.isActive),t.setAttribute("aria-expanded","true")},le=e=>{const t=e.currentTarget,a=t.nextElementSibling;null==a||a.classList.remove(O.isActive),t.setAttribute("aria-expanded","false")};a(()=>{const e=e=>{d.current="Tab"===e.key},t=()=>{d.current=!1};return window.addEventListener("keydown",e,!0),window.addEventListener("pointerdown",t,!0),()=>{window.removeEventListener("keydown",e,!0),window.removeEventListener("pointerdown",t,!0)}},[]);const oe=e=>{const t=d.current;d.current=!1,ne(e),t||(u.current=!0)},re=e=>{const t=e.currentTarget.parentElement,a=null==t?void 0:t.previousElementSibling;null==t||t.classList.remove(O.isActive),null==a||a.setAttribute("aria-expanded","false")},se=e=>{if(u.current)return void(u.current=!1);const t=e.currentTarget.nextElementSibling;if(null!=t&&t.classList.contains(O.isActive))le(e);else{const t=document.querySelectorAll('[role="tooltip"]'),a=document.querySelectorAll(".js-tooltip-trigger");t.forEach(e=>e.classList.remove(O.isActive)),a.forEach(e=>e.setAttribute("aria-expanded","false")),ne(e)}},ie=[10,15,20,30],[ce,me]=n(3);function de(e){const t=e.target,a=t.min;t.style.backgroundSize=100*(t.value-a)/(t.max-a)+"% 100%"}return a(()=>{g(ie[ce])},[ce]),a(()=>{ee=document.querySelectorAll('input[type="range"]'),ee.forEach(e=>{e.addEventListener("input",de)});const e=(()=>{const e=Number(p)-Number(k),t=Number(E)/1200,a=e*t,n=1-Math.pow(1+t,12*h*-1);let l=a/n<0?0:a/n;return l=Infinity===l?0:l,l})();let t=e+parseFloat(Math.round(B/12))+parseFloat(Math.round(R/12))+parseFloat(f);t=isNaN(t)?0:t,_(P(t.toFixed(0)));const a=R/12/t,n=f/t;U(B/12/t*360),G(360*a),J(360*n),w(e.toFixed(0))},[p,h,k,E,B,R,f]),a(()=>{K("tbdotcom"!==s&&"tbmortgage"!==s)}),e.createElement("div",{className:`${O.calculatorWrapper} ${O[s]}`,ref:m},e.createElement("div",{className:O.left},e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-sale-price"},"Sales Price"),e.createElement("input",{id:"mort-sale-price",type:"text",onChange:e=>(e=>{const t=A(e,!0,!1);t>=0?(v(t),I($(S,t)),F($(W,t)),V($(z,t))):(v(""),I(0),F(0),V(0))})(e.target.value),onBlur:()=>{v(Number(p)?p:0)},className:`${O.input} ${O.inputFont}`,value:"$"+P(p)})),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:r,number:Number(p)?p:0,setNumber:v,onChange:e=>{I($(S,e)),F($(W,e)),V($(z,e))},step:1e3}))),e.createElement("div",{className:`${O.sliderWrapper} ${O.loanTerm} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-loan-select"},"Loan Term"),e.createElement("span",{className:O.dropDownArrow}),e.createElement("select",{className:`${O.select} ${O.inputFont}`,name:"loanSelect",id:"mort-loan-select",onChange:e=>{const t=ie.indexOf(parseInt(e.target.value));me(t)},value:h},e.createElement("option",{value:"10"},"10 Years"),e.createElement("option",{value:"15"},"15 Years"),e.createElement("option",{value:"20"},"20 Years"),e.createElement("option",{value:"30"},"30 Years"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:ie.length-1,number:ce,setNumber:me}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:`${O.callOutWrapper} ${O.down}`},e.createElement("label",{htmlFor:"mort-down-payment-percent"},"Down Payment"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-down-payment",type:"text",onChange:e=>te(e.target.value,I,T),onBlur:()=>I(Number(k)?k:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(k)}),e.createElement("input",{id:"mort-down-payment-percent",type:"text",onChange:e=>ae(e.target.value,T,I),onBlur:()=>{T(Number(S)?Number(S):0)},className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:S}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:99,number:Number(S)?Number(S):0,setNumber:e=>{T(e),I($(e,p))},step:.5}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-int-rate"},"Interest Rate"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-int-rate",type:"text",onChange:e=>ae(e.target.value,y),onBlur:()=>{y(Number(E)?Number(E):0)},className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:E}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:12,number:Number(E)?Number(E):0,setNumber:y,step:.125}))),e.createElement("div",{className:O.advancedButtonWrapper+" js-noprint"},e.createElement("button",{type:"button",className:""+(Z?O.open:""),onClick:()=>{X(e=>!e)},"aria-expanded":Z,"aria-controls":"mortgage-advanced-options"},"Advanced Options")),Z&&e.createElement("div",{id:"mortgage-advanced-options"},e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-taxes"},"Taxes (Annual)"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-taxes-by-amount",type:"text",onChange:e=>{te(e.target.value,F,D)},onBlur:()=>F(Number(B)?B:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(B)}),e.createElement("input",{id:"mort-taxes-by-percentage",type:"text",onChange:e=>ae(e.target.value,D,F),onBlur:()=>D(Number(W)?Number(W):0),className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:W}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:12,number:Number(W)?Number(W):0,setNumber:e=>{D(e),F($(e,p))},step:.01}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-insurance"},"Insurance (Annual)"),e.createElement("div",{className:O.inputWrapper},e.createElement("input",{id:"mort-insurance-by-amount",type:"text",onChange:e=>te(e.target.value,V,j),onBlur:()=>V(Number(R)?R:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(R)}),e.createElement("input",{id:"mort-insurance-by-percentage",type:"text",onChange:e=>ae(e.target.value,j,V),onBlur:()=>j(Number(z)?Number(z):0),className:`${O.input} ${O.inputFont} ${O.inputPercentage}`,value:z}),e.createElement("span",{className:O.inputFont},"%"))),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:12,number:Number(z)?z:0,setNumber:e=>{j(e),V($(e,p))},step:.05}))),e.createElement("div",{className:`${O.sliderWrapper} ${c.sliderWrapper??""}`},e.createElement("div",{className:O.callOutWrapper},e.createElement("label",{htmlFor:"mort-hoa"},"HOA (Monthly)"),e.createElement("input",{id:"mort-hoa",type:"text",onChange:e=>te(e.target.value,N),onBlur:()=>N(Number(f)?f:0),className:`${O.input} ${O.inputFont}`,value:"$"+P(f)})),e.createElement("div",{className:O.dragWrapper+" js-noprint"},e.createElement(x,{minValue:0,maxValue:5e3,number:Number(f)?f:0,setNumber:N,step:1}))))),e.createElement("div",{className:O.right},e.createElement("div",{className:`${O.callOutWrapper} ${O.estimatedPayment}`},e.createElement("div",{className:O.graphic},Y&&e.createElement("p",{className:`${O.taxes} ${O[s]}`,style:{background:`conic-gradient( #7cbf92 ${H}deg, #39484f ${H}deg ${q+H}deg, #cec18b ${q}deg ${q+H+Q}deg, #008289 ${Q}deg 360deg)`}},e.createElement("span",null,"$",C,e.createElement("span",null,"Total Estimated Monthly Payment"))),!Y&&e.createElement("p",{className:`${O.taxes} ${O[s]} `,style:{background:`conic-gradient( #8195A2 ${H}deg, #0C223F ${H}deg ${q+H}deg, #CEC18B ${q}deg ${q+H+Q}deg, #0070cd ${Q}deg 360deg)`}},e.createElement("span",null,"$",C,e.createElement("span",null,"Total Estimated Monthly Payment")))),Z&&e.createElement("div",{className:O.details},e.createElement("div",null,e.createElement("span",null,"Principal and Interest"),e.createElement("span",null,"$",P(b),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-principal","aria-expanded":"false","aria-label":"Learn about principal and interest"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-principal"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close principal and interest details",onClick:re},"x"),"Principal is the amount borrowed to purchase your home or the amount yet to be repaid. Interest is the cost of borrowing from your lender.")),e.createElement("div",null,e.createElement("span",null,"Taxes"),e.createElement("span",null,"$",P(Math.round(B/12)),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-taxes","aria-expanded":"false","aria-label":"Learn about property taxes"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-taxes"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close taxes details",onClick:re},"x"),"Your lender typically puts one-twelfth of your home's estimated annual property taxes into an escrow account to pay on your behalf.")),e.createElement("div",null,e.createElement("span",null,"Insurance"),e.createElement("span",null,"$",P(Math.round(R/12)),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-insurance","aria-expanded":"false","aria-label":"Learn about insurance"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-insurance"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close insurance details",onClick:re},"x"),"Your lender typically puts one-twelfth of your annual homeowners insurance premium into an escrow account to pay on your behalf. If your down payment is less than 20%, you may also be required to pay private mortgage insurance (PMI).")),e.createElement("div",null,e.createElement("span",null,"HOA"),e.createElement("span",null,"$",P(f),"/mo"),e.createElement("button",{type:"button",className:O.toolTipLaunch+" js-noprint js-tooltip-trigger",onMouseEnter:ne,onMouseLeave:le,onFocus:oe,onBlur:le,onClick:se,"aria-describedby":"mortgage-tooltip-hoa","aria-expanded":"false","aria-label":"Learn about HOA fees"}),e.createElement("span",{className:O.toolTip,role:"tooltip",id:"mortgage-tooltip-hoa"},e.createElement("button",{type:"button",className:O.close,tabIndex:"-1","aria-label":"Close HOA details",onClick:re},"x"),"While not part of your mortgage payment, you may be required to pay fees imposed by your homeowners association."))),e.createElement(M,{classes:{root:O.printButton},onClick:()=>{L((null==i?void 0:i.current)||(null==m?void 0:m.current))}}))))},F=({children:t,showArrows:o,classes:r={},newIndex:s,getCurrentIndex:i=(()=>{}),useContainerWidth:c=!1})=>{const[m,d]=n(!1),[u,p]=n(!0),[v,h]=n(!0),[g,E]=n(0),[y,f]=n(!1),N=l(null),b=l([]);a(()=>{i(g)},[g]),a(()=>{w(s)},[s]);const w=e=>{if(N.current){let t=0;for(let a=0;a<e;a++){const e=window.getComputedStyle(N.current.children[a]),n=parseFloat(e.marginLeft.split("px")[0]),l=parseFloat(e.marginRight.split("px")[0]);t+=N.current.children[a].clientWidth+n+l}N.current.scrollTo({left:t,behavior:"smooth"})}};return a(()=>{const e=()=>{var e,t;(c?null==N||null===(e=N.current)||void 0===e?void 0:e.clientWidth:window.innerWidth)>=(null===(t=N.current)||void 0===t?void 0:t.scrollWidth)?h(!1):h(!0)};return window.addEventListener("resize",e),e(),setTimeout(()=>f(!0),500),()=>{window.removeEventListener("resize",e)}},[]),e.createElement("div",{className:`_2nftI ${r.root??""} `},o&&v&&e.createElement("div",{className:"_2IjN4 "+(r.controls??"")},e.createElement("button",{onClick:()=>{var e;const t=N.current,a=window.getComputedStyle(b.current),n=parseFloat(a.marginLeft.split("px")[0]),l=parseFloat(a.marginRight.split("px")[0]);t.scrollBy({left:-((null===(e=b.current)||void 0===e?void 0:e.offsetWidth)+(n+l+2))})},disabled:u},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/arrowexit.svg",alt:"Previous Slide"})),e.createElement("button",{onClick:()=>{var e;const t=N.current,a=window.getComputedStyle(b.current),n=parseFloat(a.marginLeft.split("px")[0]),l=parseFloat(a.marginRight.split("px")[0]);t.scrollBy({left:(null===(e=b.current)||void 0===e?void 0:e.offsetWidth)+(n+l+2)})},disabled:m},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/arrowexit.svg",alt:"Next Slide"}))),e.createElement("div",{className:"_2-_jM"},e.createElement("div",{className:`_2CovJ ${1===t.length?"_2TNYf":""} ${r.scrollWrap??""} scrollWrap`,ref:N,onScroll:()=>{if(!y)return;const e=N.current;d(e.scrollLeft>e.scrollWidth-e.clientWidth-10),p(0===e.scrollLeft);let t=0,a=Number.MAX_VALUE;for(let n=0;n<e.children.length;n++){const l=Math.abs(e.children[n].getBoundingClientRect().left-e.getBoundingClientRect().left);l<a&&(a=l,t=n)}E(t)}},Object.values(t).map((t,a)=>t&&e.createElement("div",{className:`_2YGpy ${r.scrollItem??""} scrollItem`,ref:b,key:t.key,"data-index":a},t)))))};var W={chatWrapper:"_1I4aA",waitMessage:"_1LVxT",persistentText:"_e6rlP",loading:"_2E1bH","chat-loader":"_3k24c",chatPanelOpen:"_U12_a",isMinimized:"_9Cz-j",messagesWrapper:"_1otKt",timestamp:"_2G4nP",textChatOptions:"_3aMNM",unreadMessagesIndicator:"_ELed2",textChatWrapper:"_2v0pd",textChatButtons:"_1dLsA",chatButton:"_3-jco",textButton:"_3QYxl",chatLaunch:"_3nyQS",oscHead:"_dve7Y",closeIcon:"_1pp_s",header:"_lXYkl",location:"_1cu-C",panelControls:"_3IVvF",chatInputWrapper:"_1A7eN",error:"_3Uh3l",callbackIframe:"_2y3x3",formContainer:"_1I-iH"};const D=e=>e?`https://cdn.tollbrothers.com/images/osc/${(e=>{let t="";for(let a=0;a<3;a++){let n=0;for(let t=4;t>=0;t--){const l=e.charAt(5*a+t);l>="A"&&l<="Z"&&(n+=1<<t)}t+="ABCDEFGHIJKLMNOPQRSTUVWXYZ012345".charAt(n)}return e+t})(e)}.jpg`:"",R=(e,t,a)=>{var n,l,o,r,s,i;const c={id:""+e.identifier,payload:null===(n=e.entryPayload)||void 0===n||null===(l=n.abstractMessage)||void 0===l?void 0:l.staticContent,type:e.entryType,text:null===(o=e.entryPayload)||void 0===o||null===(r=o.abstractMessage)||void 0===r?void 0:r.staticContent.text,timestamp:e.clientTimestamp,role:null===(s=e.sender)||void 0===s?void 0:s.role,sender:"EndUser"===e.sender.role&&"Guest"===e.senderDisplayName?`${t} ${a}`:e.senderDisplayName};var m;return"EndUser"!==(null===(i=e.sender)||void 0===i?void 0:i.role)&&(c.image=D(null===(m=e.sender)||void 0===m?void 0:m.subject)),c},V=()=>crypto.randomUUID(),z=async(e,t)=>{if(!e)return console.error("Region is required to fetch availability."),null;try{const a=await fetch(`${t}/${e}`,{method:"GET",headers:{Accept:"application/json"}});if(!a.ok)throw new Error(`Failed to fetch availability: ${a.status} ${a.statusText}`);return{data:await a.json(),error:null}}catch(e){return console.error("Error fetching availability:",e),{data:null,error:e.message}}};function j({handleChatMessage:e,onSuccess:t,firstName:a,lastName:n,endPoint:l,apiSfOrgId:o,accessToken:r,conversationId:s,onError:i}){try{let c=0;const d=0,u=new AbortController;m(l+"/eventrouter/v1/sse",{method:"GET",headers:{Authorization:"Bearer "+r,"X-Org-Id":o},signal:u.signal,openWhenHidden:!0,async onopen(e){if(!e.ok)throw e.status>=400&&e.status<500&&429!==e.status?new Error("FatalError"):new Error;t&&t(u)},onmessage:t=>{if("FatalError"===t.event)throw console.log("message error?"),new Error("FatalError");"function"==typeof e?e(t,a,n,r,s):console.error("handleChatMessage is not a function!")},onclose(){u.abort()},onerror(e){if("FatalError"===e||c>2||d>2)throw e;c++}}).catch(e=>{console.log(e),u.abort(),i&&i()})}catch(e){i&&i()}}const H=async e=>{const t=await fetch(`${e.endPoint}/iamessage/api/v2/conversation/${e.conversationId}/message`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e.accessToken},body:JSON.stringify({message:{id:V(),messageType:"StaticContentMessage",staticContent:{formatType:"Text",text:e.msg}},esDeveloperName:e.apiSfName,isNewMessagingSession:!1})});if((null==t?void 0:t.status)<300)return"success";{const e=await t.json();throw new Error((null==e?void 0:e.errorCode)||"Error")}},U=({value:t,onChange:a,onKeyDown:n,onSend:l,placeholder:o="Type Here",id:r="chat-user-input"})=>e.createElement("div",{className:"_3QmAz"},e.createElement("textarea",{autoComplete:"off",id:r,type:"text",className:"_2-dgJ",placeholder:o,value:t,onChange:a,onKeyDown:n,"aria-label":o,rows:1,cols:50}),e.createElement("button",{className:"_3F59F",onClick:l,"aria-label":"Send message",type:"button"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/up-arrow.svg",alt:""})));function q({accessToken:t,conversationId:a,apiSfName:l,endPoint:o,setError:r}){const[s,i]=n(""),c=async()=>{if(!s.trim())return void r("Message cannot be empty");r(null);const e={accessToken:t,conversationId:a,msg:s,endPoint:o,apiSfName:l};try{await H(e),i("")}catch(e){var n;r(null!=e&&null!==(n=e.message)&&void 0!==n&&n.includes("PRECHAT_FORM_REQUIRED")?"Your conversation has ended. Please close this window if you wish to start a new chat.":"Failed to send message. Please try again.")}};return e.createElement("div",{className:"_1Jryi"},e.createElement(U,{value:s,onChange:e=>{i(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),c())},onSend:c,placeholder:"Type Here"}))}const G=({formData:t,setFormData:n,onSubmit:l,cta:o="Start Chat",isShowPhoneInput:r=!1,disabled:s=!1})=>{const i=e=>{const{name:a,value:l}=e.target;e.target.setCustomValidity(""),n({...t,[a]:l})};return a(()=>{var e;const t=null===(e=localStorage)||void 0===e?void 0:e.getItem("formResponse");if(t){var a;const e=JSON.parse(t);let l="";null!=e&&e.firstname&&null!=e&&e.lastname?l+=(null==e?void 0:e.firstname)+" "+(null==e?void 0:e.lastname):null!=e&&e.firstname?l+=""+(null==e?void 0:e.firstname):null!=e&&e.lastname&&(l+=""+(null==e?void 0:e.lastname)),n({name:l,email:(null==e?void 0:e.email)??"",phone:(null==e||null===(a=e.homephone)||void 0===a?void 0:a.replace(/\D/g,"").replace(/(\d{3})(\d{3})(\d{4})/,"$1-$2-$3"))??""})}},[]),e.createElement("form",{onSubmit:l,className:"_2Jmy7"},e.createElement("input",{type:"text",id:"chat-name",name:"name",value:t.name,onChange:i,required:!0,pattern:"[A-Za-z\\s]+",title:"Name can only contain letters and spaces",placeholder:"Full Name*",maxLength:123,"aria-label":"full name",disabled:s}),e.createElement("input",{type:"email",id:"chat-email",name:"email",value:t.email,onChange:i,pattern:"\\S+@\\S+\\.\\S+",required:!0,placeholder:"Email*",maxLength:80,"aria-label":"email address",disabled:s}),r&&e.createElement("input",{type:"tel",id:"chat-phone",name:"phone",value:t.phone,onChange:i,pattern:"[0-9]{3}(-|)?[0-9]{3}(-|)?[0-9]{4}",title:"Phone number should be in the format: 123-456-7890 or 1234567890",placeholder:"Phone Number",minLength:10,"aria-label":"phone number",disabled:s}),e.createElement("div",{className:"_bPMr-"},e.createElement("span",{className:"_2XT_0"},"Are you a Real Estate Agent?"),e.createElement("div",{className:"_3e53H"},e.createElement("label",null,e.createElement("input",{type:"radio",id:"chat-is-agent-yes",name:"isAgent",value:"1",disabled:s}),"Yes"),e.createElement("label",null,e.createElement("input",{type:"radio",id:"chat-is-agent-no",name:"isAgent",value:"0",defaultChecked:!0,disabled:s}),"No"))),e.createElement("p",{className:"_mP27s"},"The information you provide will be used in accordance with our"," ",e.createElement("a",{href:"https://www.tollbrothers.com/privacy",target:"_blank",rel:"noreferrer",tabIndex:s?-1:void 0},"Privacy Policy"),"."),e.createElement("button",{type:"submit",disabled:s},o))},Q=e=>{var t,a;const[n,...l]=null===(t=e.name)||void 0===t||null===(a=t.value)||void 0===a?void 0:a.trim().split(" "),o=null==l?void 0:l.join(" ");return!n||!o||(null==n?void 0:n.length)<2||(null==o?void 0:o.length)<2?(e.name.setCustomValidity("First and last name must both be at least 2 characters long."),e.reportValidity(),{valid:!1}):(null==n?void 0:n.trim().length)>40?(e.name.setCustomValidity("First name cannot be longer than 40 characters."),e.reportValidity(),{valid:!1}):(null==o?void 0:o.trim().length)>80?(e.name.setCustomValidity("Last name cannot be longer than 80 characters."),e.reportValidity(),{valid:!1}):{valid:!0,firstName:n,lastName:o}};var J={messageWrapper:"_2ICXh",message:"_3EE5F",typingIndicator:"_1sftA",guest:"_3gKon"};const Y=({message:t})=>e.createElement("div",{className:`${J.messageWrapper} ${"Agent"===(null==t?void 0:t.role)||"System"===(null==t?void 0:t.role)?J.agent:J.guest} ${"Typing"===t.payload.formatType?J.typingIndicator:""}`},e.createElement(e.Fragment,null,t.image&&e.createElement("img",{src:t.image,width:30,height:30,alt:"Agent Thumbnail",onError:e=>{e.currentTarget.src="https://cdn.tollbrothers.com/images/osc/0053q00000B3pUhAAJ.jpg"}}),e.createElement("p",{className:""+J.message},t.text)));var K={root:"_2oCDK",leftAlign:"_xPQ4p",withText:"_JuTGC",attachmentImageWrapper:"_1ip1a",pdf:"_Twa-X",copyWrapper:"_2RszQ",column:"_2T5Bi"};const Z=({attachments:t,hasText:a,leftAlign:n})=>{var l,o;const r=null==t?void 0:t[0],s=null==r?void 0:r.name.endsWith(".pdf");return r?e.createElement("a",{href:null==t||null===(l=t[0])||void 0===l?void 0:l.url,download:!0,className:`${K.root} ${n?K.leftAlign:""} ${a?K.withText:""}`,title:"Download attachment"},e.createElement("div",{className:K.attachmentImageWrapper},e.createElement("img",{src:s?"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/PDF.svg":null===(o=t[0])||void 0===o?void 0:o.url,className:`${K.attachmentThumbnail} ${s?K.pdf:""}`,alt:"Attachment Thumbnail"})),e.createElement("div",{className:K.copyWrapper},e.createElement("p",null,s?"Download PDF":"Click to download"),e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/Download.svg",alt:""}))):null},X=({richLink:t,leftAlign:a})=>{var n,l,o,r,s,i,c,m,d;return t?e.createElement("a",{href:null===(n=t.linkItem)||void 0===n?void 0:n.url,className:`${K.root} ${a?K.leftAlign:""}`,title:(null===(l=t.linkItem)||void 0===l||null===(o=l.titleItem)||void 0===o?void 0:o.title)??"Rich Link",target:null!==(r=t.linkItem)&&void 0!==r&&null!==(s=r.url)&&void 0!==s&&s.includes("tollbrothers.com")?"_self":"_blank",rel:"noreferrer"},e.createElement("div",{className:K.attachmentImageWrapper},e.createElement("img",{className:""+K.attachmentThumbnail,src:null===(i=t.image)||void 0===i?void 0:i.assetUrl,alt:"Rich Link Thumbnail"})),e.createElement("div",{className:`${K.copyWrapper} ${K.column}`},e.createElement("p",null,null===(c=t.linkItem)||void 0===c||null===(m=c.titleItem)||void 0===m?void 0:m.title),e.createElement("p",null,null===(d=t.linkItem)||void 0===d?void 0:d.url))):null},ee=({onClick:t,ariaLabel:a="Close AI Concierge",className:n=""})=>e.createElement("button",{className:"_3ebDI _3azUC _3Azbv "+n,"aria-label":a,onClick:t,type:"button"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/close.svg",alt:""})),te=({onClick:t,ariaLabel:a="Minimize AI Concierge",className:n=""})=>e.createElement("button",{className:"_3ebDI _3azUC "+n,"aria-label":a,onClick:t,type:"button"},e.createElement("svg",{width:"16",height:"2",viewBox:"0 0 16 2",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M0 1H16",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),ae=({onClose:t,onMinimize:a,isMinimizeHidden:n=!1,className:l=""})=>e.createElement("div",{className:"_28oWW "+l},!n&&e.createElement(te,{onClick:a}),e.createElement(ee,{onClick:t})),ne=({message:t="Are you sure you want to end this chat?",onStay:a,onLeave:n,classes:l={}})=>e.createElement("div",{className:"_2eX8T "+(l.root??"")},e.createElement("div",{className:"_DFMeT "+(l.dialog??"")},e.createElement("p",null,t),e.createElement("div",{className:"_1Itay"},e.createElement("button",{onClick:n},"End Chat"),e.createElement("button",{className:"_3AScz",onClick:a},"Continue Chat")))),le=({availabilityAPI:t,endPoint:o,apiSfOrgId:r,apiSfName:s,disableFloatingChatButton:i=!1,setChatStatus:c,chatStatus:m,chatRegion:d,setIsChatOpen:u=(()=>null),isChatOpen:p,chatSms:v,trackChatEvent:h=(()=>null),chatClickedEventString:g="chatClicked",chatStartedEventString:E="chatStarted",productCode:w,chatBotTransferData:C=null,setChatBotTransferData:_=(()=>null),setIsChatBotOpenExternal:k=(()=>null)})=>{const I=l(!1),S=l(!1),[T,x]=n(!1),[L,P]=n(null),[$,A]=n([]),[M,O]=n(null),[B,F]=n(!1),[U,J]=n(!1),[K,ee]=n(!1),[te,le]=n(!1),[oe,re]=n(!1),se=l(null),[ie,ce]=n({name:"",email:""}),[me,de]=n(!1),[ue,pe]=n(!1),[ve,he]=n(!1),[ge,Ee]=n(""),[ye,fe]=n(null),[Ne,be]=n("Agent"),[we,Ce]=n(null),[_e,ke]=n(null),[Ie,Se]=n(null),[Te,xe]=n(!1),[Le,Pe]=n(null),[$e,Ae]=n({count:0,lastMessageId:null}),Me=e=>{var t;fe(D(null===(t=e.participant)||void 0===t?void 0:t.subject)),Ee("You're chatting with "+e.displayName),be(e.displayName),le(!1),xe(!0),F(!1),de(!0)},Oe=async(e,t,a,n,l)=>{var o,r,s,i,c,m,d,u,p,v,h;const g=[];let E,y,f={};switch(e.event){case"ping":break;case"CONVERSATION_ROUTING_RESULT":E=JSON.parse(e.data),y=JSON.parse(E.conversationEntry.entryPayload),"Transfer"===(null===(o=y)||void 0===o?void 0:o.routingType)?I.current=!0:"Conference"===(null===(r=y)||void 0===r?void 0:r.routingType)&&(S.current=!0),de(!0);break;case"CONVERSATION_PARTICIPANT_CHANGED":if(E=JSON.parse(e.data),y=JSON.parse(E.conversationEntry.entryPayload),le(!1),"remove"===(null===(s=y)||void 0===s||null===(i=s.entries)||void 0===i||null===(c=i[0])||void 0===c?void 0:c.operation)&&"Supervisor"!==(null===(m=y)||void 0===m||null===(d=m.entries)||void 0===d||null===(u=d[0])||void 0===u||null===(p=u.participant)||void 0===p?void 0:p.role))Ee(y.entries[0].displayName+" left the conversation");else for(let e=0;e<(null===(N=y)||void 0===N||null===(b=N.entries)||void 0===b?void 0:b.length);e++){var N,b,w;const t=y.entries[e];"add"!==t.operation||"Supervisor"===(null===(w=t.participant)||void 0===w?void 0:w.role)||Me(t)}break;case"CONVERSATION_MESSAGE":if(E=JSON.parse(e.data),f=R({...E.conversationEntry,entryPayload:JSON.parse(E.conversationEntry.entryPayload)},t,a),n&&l&&"Agent"===f.role&&"Text"===(null===(v=f.payload)||void 0===v?void 0:v.formatType)&&"/url"===(null===(h=f.payload)||void 0===h?void 0:h.text))return void Fe({accessToken:n,conversationId:l,message:"::System Message:: User on page: ("+location.href+")"});g.push(f);break;case"CONVERSATION_DELIVERY_ACKNOWLEDGEMENT":console.log("conversation delivered acknowledge...");break;case"CONVERSATION_READ_ACKNOWLEDGEMENT":console.log("conversation read acknowledge...");break;case"CONVERSATION_TYPING_STARTED_INDICATOR":E=JSON.parse(e.data),pe(E);break;case"CONVERSATION_TYPING_STOPPED_INDICATOR":pe(!1);break;case"CONVERSATION_CLOSE_CONVERSATION":console.log("conversation close conversation...");break;default:console.log("Unknown event:",e)}g.length>0&&A(e=>[...e,...g])},Be=e=>{e&&h(g),u(!0),J(!0),F(!0),x(!1)};a(()=>d&&"offline"!==m||me?p&&!me?(Be(),re(!1),void ee(!1)):void x(!(!d||"online"!==m||me||i||U)):(u(!1),J(!1),F(!1),x(!1),he(!1),re(!1),void ee(!1)),[m,me,i,p,d]),a(()=>{d?async function(){try{var e,a;const l=await z(d,t);if((null==l||null===(e=l.data)||void 0===e||null===(a=e.payload)||void 0===a?void 0:a.length)>0){c("online");const e=Math.floor(Math.random()*l.data.payload.length);var n;me||fe(null===(n=l.data.payload[e])||void 0===n?void 0:n.photo)}Se(!0)}catch(e){Se(!0),console.error("Error fetching osc data:",e)}}():Se(!0),c("offline")},[d,t]);const Fe=async({accessToken:e,conversationId:t,message:a})=>{try{await H({accessToken:e,conversationId:t,msg:a,endPoint:o,apiSfName:s})}catch{console.error("Error sending system message.")}},We=e=>{if(e&&"visibilitychange"===e.type&&document.hidden)return;let t=!1;const a=f("tbChat")??C;if(!a||b(a.expiry))return N("tbChat"),k(!1),void _(null);const n=a.value??a;null!=n&&n.conversationId&&null!=n&&n.accessToken&&j({handleChatMessage:Oe,firstName:n.firstName,lastName:n.lastName,endPoint:o,apiSfOrgId:r,accessToken:n.accessToken,conversationId:n.conversationId,onError:()=>{Re(n.accessToken,n.conversationId)},onSuccess:e=>{t||(t=!0,P(n.accessToken),O(n.conversationId),x(!1),de(!0),Ee(null),pe(!1),J(!0),le(!1),ee(!1),(async e=>{try{var t;const a=await(async({conversationId:e,accessToken:t,endPoint:a})=>{const n=await fetch(`${a}/iamessage/api/v2/conversation/${e}/entries?limit=100&direction=FromStart`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer "+t}});return await(null==n?void 0:n.json())})({accessToken:e.accessToken,conversationId:e.conversationId,endPoint:o});if(le(!0),!((null==a||null===(t=a.conversationEntries)||void 0===t?void 0:t.length)>0))throw new Error;{const t=a.conversationEntries.filter(e=>"Message"===e.entryType).map(t=>R(t,e.firstName,e.lastName));let n=!1;const l={...e},o=a.conversationEntries.some(e=>{var t;return"RoutingResult"===e.entryType&&"Transfer"===(null===(t=e.entryPayload)||void 0===t?void 0:t.routingType)}),r=a.conversationEntries.some(e=>{var t;return"RoutingResult"===e.entryType&&"Conference"===(null===(t=e.entryPayload)||void 0===t?void 0:t.routingType)});a.conversationEntries.map(e=>{var t,a;"ParticipantChanged"===e.entryType&&(null===(t=e.entryPayload)||void 0===t||null===(a=t.entries)||void 0===a?void 0:a.length)>0&&e.entryPayload.entries.map(e=>{var t,a;"add"===e.operation&&"Supervisor"!==(null===(t=e.participant)||void 0===t?void 0:t.role)?(Me(e),y("tbChat",{accessToken:l.accessToken,conversationId:l.conversationId,firstName:l.firstName,lastName:l.lastName},72e5),P(l.accessToken),O(l.conversationId),n=!1):"remove"!==e.operation||"Supervisor"===(null===(a=e.participant)||void 0===a?void 0:a.role)||o||r||(Ee(e.displayName+" left the conversation"),xe(!1),n=!0)})}),n||A(t??[])}}catch(e){console.error("Error retreiving chat history")}})(n),C&&y("tbChat",{accessToken:n.accessToken,conversationId:n.conversationId,firstName:n.firstName,lastName:n.lastName},72e5),ke(e),u(!0))}})};a(()=>(window.addEventListener("visibilitychange",We),()=>{window.removeEventListener("visibilitychange",We)}),[]),a(()=>{Ie&&We()},[Ie]);const De=()=>{Ce(null),he(!ve),re(!1),Ae({count:0,lastMessageId:null})},Re=async(e,t)=>{if(Ce(null),N("tbChat"),he(!1),x(!1),de(!1),xe(!1),O(null),pe(!1),F(!1),P(null),A([]),le(!1),re(!1),ee(!1),be("Agent"),Ee(null),Ae({count:0,lastMessageId:null}),_(null),k(!1),I.current=!1,S.current=!1,_e&&(_e.abort(),ke(null)),J(!1),u(!1),e&&t)try{console.log("Ending chat..."),await(async({accessToken:e,conversationId:t,endPoint:a,apiSfName:n},l=2)=>{const o=async l=>{try{if(204===(await fetch(`${a}/iamessage/api/v2/conversation/${t}?esDeveloperName=${n}`,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e}})).status)return{};throw new Error("API error")}catch(e){if(l>0)return await new Promise(e=>setTimeout(e,1e3)),await o(l-1);throw new Error(e.message)}};return await o(l)})({accessToken:e,conversationId:t,endPoint:o,apiSfName:s})}catch(e){console.error("Chat end error:",e.message)}};return a(()=>{se.current&&(se.current.scrollTop=se.current.scrollHeight)},[$,ve]),a(()=>{$.some(e=>{var t;return"Typing"===(null===(t=e.payload)||void 0===t?void 0:t.formatType)})&&ue||A(ue?e=>{var t;return[...e,{id:V(),type:"Message",text:(null==ue||null===(t=ue.conversationEntry)||void 0===t?void 0:t.senderDisplayName)+" is typing...",payload:{formatType:"Typing"},role:"Agent"}]}:e=>e.filter(e=>{var t;return"Typing"!==(null===(t=e.payload)||void 0===t?void 0:t.formatType)}))},[ue]),a(()=>{var e;const t=$[$.length-1];!document.hidden&&(null==t?void 0:t.id)!==$e.lastMessageId&&"Typing"!==(null==t||null===(e=t.payload)||void 0===e?void 0:e.formatType)&&"Message"===(null==t?void 0:t.type)&&"Agent"===(null==t?void 0:t.role)&&ve&&Ae(e=>({count:e.count+1,lastMessageId:null==t?void 0:t.id}))},[$]),e.createElement("div",{className:`${W.chatWrapper} ${U?W.chatPanelOpen:""} ${ve?W.isMinimized:""}`},(T||ve)&&e.createElement(e.Fragment,null,(K||ve)&&e.createElement("div",{className:W.textChatOptions},(null==$e?void 0:$e.count)>0&&e.createElement("div",{className:W.unreadMessagesIndicator},$e.count),e.createElement("div",{className:W.textChatWrapper},e.createElement("button",{className:`${W.chatButton} ${W.textChatButtons}`,onClick:ve?De:Be},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/chat.svg",alt:"chat"}),"Chat"),!ve&&e.createElement("a",{href:v?"sms:"+v:"#",className:`${W.textButton} ${W.textChatButtons}`},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/sms.svg",alt:"chat"}),"Text"))),e.createElement("button",{className:W.chatLaunch,onClick:ve?De:()=>{ee(!K)}},e.createElement("img",{className:W.oscHead,src:ye??"https://cdn.tollbrothers.com/images/osc/0053q00000B3pUhAAJ.jpg",alt:"osc",onError:e=>{e.currentTarget.src="https://cdn.tollbrothers.com/images/osc/0053q00000B3pUhAAJ.jpg"}}),!K&&e.createElement("span",null,e.createElement("img",{className:W.chatIcon,src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/chat.svg",alt:"chat"})),K&&e.createElement("span",null,e.createElement("img",{className:W.closeIcon,src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/svg/close.svg",alt:"close"})))),U&&!ve&&e.createElement("div",{className:W.header},e.createElement("h2",null,"Chat"),e.createElement("div",{className:W.panelControls},e.createElement(ae,{onMinimize:De,onClose:()=>{Ce(null),re(!0)},isMinimizeHidden:!Te}))),te&&!ve&&e.createElement(e.Fragment,null,e.createElement("p",{className:W.waitMessage},"Please wait while we connect you with a representative."),e.createElement("div",{className:W.loading},e.createElement("span",null),e.createElement("span",null),e.createElement("span",null))),oe&&!ve&&e.createElement(ne,{onStay:()=>{Ce(null),re(!1)},onLeave:()=>Re(L,M)}),B&&!ve&&e.createElement("div",{className:W.formContainer},e.createElement(G,{formData:ie,setFormData:ce,onSubmit:async e=>{const a="Our apologies, but all members of our Online Sales Team are currently unavailable. Please try again later.";e.preventDefault(),Ce(null),Ee(null),pe(!1);const n=e.target,{valid:l,firstName:i,lastName:c}=Q(n);if(!l)return!1;le(!0),F(!1),h(E);try{var m,p;const e=await z(d,t);if((null==e||null===(m=e.data)||void 0===m||null===(p=m.payload)||void 0===p?void 0:p.length)>0){var v,g,f;const e=null===(v=n.email)||void 0===v||null===(g=v.value)||void 0===g?void 0:g.trim(),t=(null===(f=n.isAgent)||void 0===f?void 0:f.value)??"0",a=(()=>{const e={gaClientId:"",gaUserId:"",gaTrackId:""};if(void 0!==window.ga&&"function"==typeof window.ga.getAll){const t=window.ga.getAll()[0],a=t.get("clientId"),n=t.get("userId"),l=t.get("trackingId");void 0!==a&&""!==a&&(e.gaClientId=a),void 0!==n&&""!==n&&(e.gaUserId=n),void 0!==l&&""!==l&&(e.gaTrackId=l)}return e})();Pe(`https://hello.tollbrothers.com/l/402642/2025-08-05/2chvs9x?email=${encodeURIComponent(e)}&fname=${encodeURIComponent(i)}&lname=${encodeURIComponent(c)}&gaClientId=${encodeURIComponent(a.gaClientId)}&gaUserId=${encodeURIComponent(a.gaUserId)}&gaTrackId=${encodeURIComponent(a.gaTrackId)}`),await(async(e,t,a,n,l,o,r,s)=>{try{const i=await async function(e,t,a){try{const n=await fetch(e+"/iamessage/api/v2/authorization/unauthenticated/access-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({orgId:t,esDeveloperName:a,capabilitiesVersion:"1",platform:"Web"})});if(!n.ok)throw new Error(`Failed to fetch access token: ${n.status} ${n.statusText}`);return await n.json()}catch(e){throw console.error("Error fetching access token:",e),e}}(o,r,s);if(!i)throw new Error("No token received.");P(i.accessToken);const c=M||crypto.randomUUID();M&&null!==M||O(c);const m={accessToken:i.accessToken,customerEmail:a,customerFirstName:e||"Guest",customerLastName:t||"",isAgent:n,conversationId:c,region:d,endPoint:o,apiSfOrgId:r,apiSfName:s};if(l&&(m.productCode=l),await(async(e,t=2,a=1e3)=>{if(!e||!e.accessToken||!e.customerEmail)throw new Error("Invalid payload provided chat.js 143");const n=async t=>{try{const t=await fetch(e.endPoint+"/iamessage/api/v2/conversation",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e.accessToken},body:JSON.stringify({conversationId:e.conversationId,esDeveloperName:e.apiSfName,routingAttributes:{_email:e.customerEmail,_firstName:e.customerFirstName,_lastName:e.customerLastName,region:e.region,isAgent:e.isAgent,productCode:e.productCode}})});if(null!=t&&t.ok)return{};throw new Error}catch(e){if(t>0)return await new Promise(e=>setTimeout(e,a)),n(t-1);throw e}};return n(t)})(m)){let a=!1;O(m.conversationId),j({handleChatMessage:Oe,onSuccess:n=>{a||(a=!0,y("tbChat",{accessToken:i.accessToken,conversationId:c,firstName:e,lastName:t},72e5),Fe({accessToken:i.accessToken,conversationId:c,message:"::System Message:: User initiated chat("+location.href+")"}),ke(n))},firstName:e,lastName:t,endPoint:o,apiSfOrgId:r,accessToken:i.accessToken,conversationId:c,onError:()=>{console.log("Error starting conversation"),Re(i.accessToken,c),F(!0),J(!0),u(!0),Ce("There was an error initializing the chat. Please try again.")}})}}catch(e){console.error("Error initializing chat"),Re(),F(!0),J(!0),u(!0),Ce("There was an error initializing the chat. Please try again.")}})(i,c,e,t,w,o,r,s)}else F(!0),le(!1),Ce(a)}catch(e){F(!0),le(!1),Ce(a)}},cta:"Start Chat"})),ge&&!ve&&e.createElement("p",{className:W.persistentText},ge,"."),e.createElement("div",{className:W.messagesWrapper,ref:se},!ve&&e.createElement(e.Fragment,null,$.map((t,a)=>{var n,l,o,r,s,i,c;return"Message"===t.type&&!(null!==(n=t.text)&&void 0!==n&&n.includes("::System Message::"))&&!(null!==(l=t.text)&&void 0!==l&&l.startsWith("/url")&&"Agent"===(null==t?void 0:t.role))&&e.createElement(e.Fragment,{key:t.id},e.createElement("div",{className:W.timestamp},new Date(t.timestamp).toLocaleDateString("en-US",{hour:"numeric",minute:"numeric",hour12:!0}).split(", ")[1]),"RichLink"===(null===(o=t.payload)||void 0===o?void 0:o.formatType)&&e.createElement(e.Fragment,null,t.text&&e.createElement(Y,{message:t}),e.createElement(X,{richLink:t.payload,leftAlign:"Agent"===(null==t?void 0:t.role)||"System"===(null==t?void 0:t.role)})),"Attachments"===(null===(r=t.payload)||void 0===r?void 0:r.formatType)&&e.createElement(e.Fragment,null,t.text&&e.createElement(Y,{message:t}),e.createElement(Z,{attachments:null==t||null===(s=t.payload)||void 0===s?void 0:s.attachments,hasText:Boolean(t.text),leftAlign:"Agent"===t.role})),("Text"===(null===(i=t.payload)||void 0===i?void 0:i.formatType)||"Typing"===(null===(c=t.payload)||void 0===c?void 0:c.formatType))&&e.createElement(Y,{message:t}))}))),M&&L&&!ve&&e.createElement("div",{className:W.chatInputWrapper},e.createElement(q,{accessToken:L,conversationId:M,apiSfName:s,endPoint:o,setError:Ce})),we&&e.createElement("span",{className:W.error},we),Le&&e.createElement("iframe",{className:W.callbackIframe,src:Le}))};var oe={buttonReset:"_cQjaX",hidden:"_2S_75",launchButton:"_QLnt9",interface:"_2aVKh",resizeHandle:"_2E-b4",header:"_3HeC2",title:"_3NL-A",body:"_2oi14",messages:"_1BNYu",footer:"_1Y4u5",transferButton:"_3GdW4",error:"_2FQrt",errorMessage:"_1DZFG"};const re=({message:t,component:a})=>e.createElement("div",{className:"_2rvCK"},e.createElement("div",{className:"_2P_ui"},e.createElement("div",{className:"_2Z8ak"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/chatbot-icon.svg"})),t&&e.createElement("div",{className:"_2mq1k"},e.createElement(d,null,t)),a&&e.createElement("div",{className:"_cW8oG"},a))),se=({message:t})=>e.createElement("div",{className:"_2a9vL"},e.createElement("div",{className:"_19exz"},e.createElement("p",{className:"_PukT0"},t))),ie=()=>e.createElement("div",{className:"_1Pess"},e.createElement("span",{className:"_2mcRN"}),e.createElement("span",{className:"_2mcRN"}),e.createElement("span",{className:"_2mcRN"}));var ce={option:"_2BFpx",lg:"_32nj1"};const me=({href:t,utils:a,className:n="",target:l="_self",onClick:o=(()=>null),children:r})=>{var s;const i=(null==a||null===(s=a.stripUrlDomain)||void 0===s?void 0:s.call(a,t))||t,c=null==a?void 0:a.Link,m="_3coLY "+n;return c?e.createElement(c,{className:m,href:i,onClick:o},r):e.createElement("a",{className:m,href:i,target:l,onClick:o},r)},de=({text:t,onClick:a=(()=>null),size:n="",isLink:l=!1,href:o,target:r,utils:s})=>{const i=`${ce.option} ${ce[n]??""}`;return l?e.createElement(me,{className:i,href:o,utils:s,target:r,onClick:a},t):e.createElement("button",{className:i,onClick:a,type:"button"},t)},ue=({options:t,onOptionSelect:a})=>e.createElement("div",{className:"_2n7fZ"},t.map(t=>e.createElement(de,{key:t.id,text:t.text,onClick:()=>a(t),size:"lg"}))),pe=({children:t,onClick:a=(()=>null),showIcon:n=!1})=>e.createElement("button",{className:"_209w_",onClick:a,type:"button"},e.createElement("span",{className:"_2xVBu"},t),n&&e.createElement("div",{className:"_286OY"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/up-arrow.svg",alt:"",className:"_20z6F"}))),ve=({community:t})=>t.rangeBed||t.rangeBath||t.rangeSqft?e.createElement("div",{className:"_1_2K3"},t.rangeBed&&e.createElement("div",{className:"_2UgYQ"},e.createElement("div",{className:"_BPVwd"},t.rangeBed),e.createElement("div",{className:"_3Of9V"},"Beds")),t.rangeBath&&e.createElement("div",{className:"_2UgYQ"},e.createElement("div",{className:"_BPVwd"},t.rangeBath),e.createElement("div",{className:"_3Of9V"},"Baths")),t.rangeSqft&&e.createElement("div",{className:"_2UgYQ"},e.createElement("div",{className:"_BPVwd"},t.rangeSqft),e.createElement("div",{className:"_3Of9V"},"Square Feet"))):null,he=e=>{const t=(e||0).toLocaleString("en-US");if(!t||"0"===t||"null"===t||999999999999===e)return null;let a="$";return Number.isNaN(parseInt(t))&&(a=""),`${a}${t}`},ge=({community:t,hideLocation:a,utils:n={}})=>{var l;const o=he(t.pricedFrom);let r="";var s;return o&&(r=`${(null===(s=n.getPriceLabelText)||void 0===s?void 0:s.call(n,t.isFuture,!0))||""} ${o}`),e.createElement("p",{className:"_1y16D"},t.homeTypes&&t.homeTypes.length>0&&!(null!==(l=t.options)&&void 0!==l&&l.some(e=>"112"===e.id))&&e.createElement(e.Fragment,null,t.homeTypes.map(e=>"single family"===e.toLowerCase()?"Single-Family Homes":e+"s").join(", ")," "),r,!a&&e.createElement(e.Fragment,null," in "," ",t.city,", ",t.state))},Ee=({community:t,onClick:a=(()=>null),utils:n={}})=>{var l,o,r,s;const i=null===(l=t.headShot)||void 0===l||null===(o=l.media)||void 0===o?void 0:o.url,c=(null===(r=t.overview)||void 0===r?void 0:r.shortDescription)||(null===(s=t.overview)||void 0===s?void 0:s.description);return e.createElement("div",{className:"_1MZ9x"},i&&e.createElement("div",{className:"_1sDcc"},e.createElement("img",{src:i,alt:t.name||"Community"})),e.createElement("div",{className:"_6MIBN"},e.createElement("div",{className:"_1L5_S"},t.name&&e.createElement(me,{href:t.url,utils:n},e.createElement("h3",{className:"_1MWdh"},t.name))),e.createElement(ve,{community:t}),e.createElement("div",{className:"_1NhY0"},e.createElement(ge,{community:t,utils:n}),c&&e.createElement("p",{className:"_1I08E"},c)),e.createElement("div",{className:"_1htWx"},e.createElement(pe,{onClick:()=>a(t)},"Learn More"))))};var ye={stats:"_T4svs",compact:"_2JjBF",stat:"_i8Mg0",statValue:"_wNVjM",statLabel:"_3Z2yX"};const fe=({model:t,isCompact:a,utils:n={}})=>{var l,o,r,s;const{rangeBed:i,rangeBath:c,rangeSqft:m,rangeHalfBath:d,rangeGarage:u}=(null===(l=n.getModelRanges)||void 0===l?void 0:l.call(n,t))||{},p=null===(o=n.getModelSqftPlusSign)||void 0===o?void 0:o.call(n,t,!1),v=null===(r=n.hasOption)||void 0===r?void 0:r.call(n,null==t?void 0:t.options,null===(s=n.OPTIONS)||void 0===s?void 0:s.PARKING_SPACES);return e.createElement("div",{className:`${ye.stats} ${a?ye.compact:""}`},e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},i||0),e.createElement("div",{className:ye.statLabel},"Beds")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},c||0),e.createElement("div",{className:ye.statLabel},"Baths")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},m||e.createElement(e.Fragment,null," "),p),e.createElement("div",{className:ye.statLabel},"Sq Ft"),!a&&e.createElement("div",{className:ye.statDivider})),!a&&e.createElement(e.Fragment,null,e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},d||0),e.createElement("div",{className:ye.statLabel},"Half Bath")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},u||0),e.createElement("div",{className:ye.statLabel},v?"Parking Spaces":"Garages")),e.createElement("div",{className:ye.stat},e.createElement("div",{className:ye.statValue},parseInt(t.stories)),e.createElement("div",{className:ye.statLabel},"Stories"))))},Ne=({date:e,isComingSoon:t,utils:a})=>{var n;let l="";if(null!=a&&null!==(n=a.isMoveInReady)&&void 0!==n&&n.call(a,e))l="Move-In Ready";else if(t)l="Coming Soon Quick Move-In";else{var o;l="Quick Move-In "+((null==a||null===(o=a.getFormattedDate)||void 0===o?void 0:o.call(a,e,a))||"")}return l},be=({model:t,hideLocation:a,includeQmiLabel:n,utils:l={}})=>{var o,r;return e.createElement("p",{className:"_hLYm9"},t.isQMI&&n&&e.createElement(e.Fragment,null,Ne({date:t.moveInDate,isComingSoon:t.isComingSoon,utils:l})," ","•"," "),t.homeType&&!(null!==(o=t.options)&&void 0!==o&&o.some(e=>"112"===e.id))&&e.createElement(e.Fragment,null,t.homeType," "),t.pricedFrom&&`${r=t.isQMI,r?"priced at":"starting at"} ${he(t.pricedFrom)}`,!a&&e.createElement(e.Fragment,null," in "," ",t.city,", ",t.state))},we=({model:t,hideLocation:a,onClick:n=(()=>null),utils:l={}})=>{var o,r;const s=null===(o=t.headShot)||void 0===o||null===(r=o.media)||void 0===r?void 0:r.url,i=null==t?void 0:t.description;return e.createElement("div",{className:"_3mj_q"},e.createElement("div",{className:"_xbmTI"},e.createElement("div",{className:"_2vyzf"},e.createElement("img",{src:s,alt:t.name||"Community"})),e.createElement("div",{className:"_5alRO"},t.name&&e.createElement(me,{href:t.url,utils:l},e.createElement("h3",{className:"_2lRXB"},t.name)),e.createElement(fe,{model:t,utils:l,isCompact:!0}))),e.createElement("div",{className:"_wC_sh"},e.createElement("div",{className:"_25Dnd"},e.createElement(be,{model:t,hideLocation:a,includeQmiLabel:!0,utils:l}),i&&e.createElement("p",{className:"_2JFpC"},i)),t.url&&e.createElement("div",{className:"_1waG7"},e.createElement(pe,{onClick:()=>n(t)},"Learn More"))))},Ce=({products:t,handleProductSelect:a=(()=>null),hideModelLocation:n,utils:l,classes:o={}})=>t&&0!==t.length?e.createElement("div",{className:"_2bqeE"},e.createElement(F,{showArrows:!0,useContainerWidth:!0,classes:{scrollWrap:"_1mQlT",scrollItem:"_3rSsh",controls:"_1W0uu "+(o.controls||"")}},t.map((t,o)=>t.commPlanID?e.createElement(we,{key:`${t.commPlanID}-${o}`||o,model:t,onClick:a,utils:l,hideLocation:n}):e.createElement(Ee,{key:t.communityId||t.masterCommunityId||o,community:t,onClick:a,utils:l})))):null;var _e={root:"_3u0fM",header:"_2etvW",closeButton:"_AaBz4",title:"_XaGe1",location:"_PAEfb",imageWrapper:"_2uCO_",content:"_34UTF",summarySection:"_1nrJu",summaryTitle:"_qbtAW",summaryList:"_1gPHy",bullet:"_z67_9",description:"_32jWF",collectionsContainer:"_2ablO",footer:"_Wp31V",optionsWrapper:"_VMrSG"},ke={root:"_1QwAz",container:"_3L3pz",imageContainer:"_B731E",text:"_snoIj",label:"_GkM4M",location:"_1-pme"};const Ie=({model:t,utils:a={}})=>{if(!t.isQMI)return null;const n=Ne({date:t.moveInDate,isComingSoon:t.isComingSoon,utils:a}),l=t.lotNumber;return e.createElement("div",{className:ke.root},e.createElement("div",{className:""+ke.container},e.createElement("div",{className:""+ke.imageContainer},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/ispt/icons/QMI_purple.svg",alt:"Quick Move-In"})),e.createElement("div",{className:""+ke.text},e.createElement("span",{className:ke.label},n),e.createElement("div",{className:ke.location},l&&e.createElement("span",null,"Home Site ",l),t.street&&e.createElement("span",{className:ke.address}," | ",""+t.street)))))},Se=({communityQMIs:t,communityModels:a,handleProductSelect:n,utils:l,classes:o})=>{const[r,s]=e.useState([]);return e.createElement(e.Fragment,null,r.map(r=>e.createElement("div",{key:r,className:"_HR60w"},e.createElement(Ce,{products:"qmi"===r?t:a,handleProductSelect:e=>n(e,{fromModelList:!0}),utils:l,hideModelLocation:!0,classes:o}))),e.createElement("div",{className:"_3Ao05"},!r.includes("qmi")&&(null==t?void 0:t.length)>0&&e.createElement(de,{onClick:()=>s(e=>[...e,"qmi"]),text:"Show Quick Move-In Homes"}),!r.includes("homeDesigns")&&(null==a?void 0:a.length)>0&&e.createElement(de,{onClick:()=>s(e=>[...e,"homeDesigns"]),text:"Show Home Designs"})))},Te=({collection:t,handleProductSelect:a=(()=>null),utils:n={}})=>{var l,o,r;let s=null==t?void 0:t.cleanName;s&&!s.toLowerCase().includes(" collection")&&(s+=" Collection");const i=(null===(l=t.overview)||void 0===l?void 0:l.shortDescription)||(null===(o=t.overview)||void 0===o?void 0:o.description),{communityModels:c,communityQMIs:m}=null==n||null===(r=n.buildHomeArrays)||void 0===r?void 0:r.call(n,null==t?void 0:t.homes,t.options);return e.createElement("div",{className:"_1-B08"},t.cleanName&&e.createElement(me,{href:t.url,utils:n},e.createElement("h3",{className:"_2VGRh"},s)),e.createElement(ge,{community:t,utils:n,hideLocation:!0}),e.createElement(ve,{community:t}),i&&e.createElement("p",{className:"_1gDW3"},i),e.createElement(Se,{communityQMIs:m,communityModels:c,handleProductSelect:a,utils:n,classes:{controls:"_p9e4z"}}))},xe=({amenities:t=[]})=>{const[a,l]=n(!1);if(null==t||!t.length)return null;const o=a?t:t.slice(0,6),r=t.length>6,s=o.length%2!=0;return e.createElement("div",{className:"_2qaJc"},e.createElement("h3",{className:"_3V3hz"},"Amenities"),e.createElement("ul",{className:"_1OpYN "+(s?"_3RyJF":"_2Yv1a")},o.map((t,a)=>e.createElement("li",{key:a,className:"_3u6OC"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/amenities/"+(null==t?void 0:t.icon),alt:(null==t?void 0:t.name)||"Amenity"}),e.createElement("span",null,null==t?void 0:t.name)))),r&&!a&&e.createElement("button",{className:"_2a4KI",onClick:()=>l(!a)},"Show More (",t.length-6,")"))},Le=t=>e.createElement("svg",Object.assign({width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true"},t),e.createElement("path",{d:"M8 3v10M3 8h10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),Pe=t=>e.createElement("svg",Object.assign({width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true"},t),e.createElement("path",{d:"M3 8h10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),$e=t=>e.createElement("svg",{width:"16px",height:"16px",viewBox:"0 0 21 21"},e.createElement("g",{fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",transform:"matrix(0 1 1 0 2.5 2.5)"},e.createElement("path",{strokeWidth:"2",d:"m3.98652376 1.07807068c-2.38377179 1.38514556-3.98652376 3.96636605-3.98652376 6.92192932 0 4.418278 3.581722 8 8 8s8-3.581722 8-8-3.581722-8-8-8"}),e.createElement("path",{strokeWidth:"2",d:"m4 1v4h-4",transform:"matrix(1 0 0 -1 0 6)"}))),Ae=({floorPlans:t=[],utils:a})=>{var l,o;const[r,c]=n(0),[m,d]=n(!0),{svgContent:u,isLoading:p}=null==a||null===(l=a.useFetchSvg)||void 0===l?void 0:l.call(a,null==t||null===(o=t[r])||void 0===o?void 0:o.url,[r,t]);if(null==t||!t.length)return null;const v=t[r],h=()=>{d(!1)};return e.createElement("div",{className:"_1xBWu"},e.createElement("h3",{className:"_28mxU"},"Floor Plans"),e.createElement("div",{className:"_14OFk"},p?e.createElement(ie,null):e.createElement(s,{key:r,centerOnInit:!0},({zoomIn:t,zoomOut:a,resetTransform:n})=>e.createElement(e.Fragment,null,m&&e.createElement("div",{className:"_1wRJZ",onClick:h,onDoubleClick:h,role:"button",tabIndex:0,"aria-label":"Click to interact with floor plan"}),e.createElement("div",{className:"_3U7EE"},e.createElement("button",{onClick:()=>{h(),t()},"aria-label":"Zoom in",type:"button"},e.createElement(Le,null)),e.createElement("button",{onClick:()=>{h(),a()},"aria-label":"Zoom out",type:"button"},e.createElement(Pe,null)),e.createElement("button",{onClick:()=>{h(),n()},"aria-label":"Reset zoom",type:"button"},e.createElement($e,null))),e.createElement(i,{wrapperClass:"_kIlxr"},e.createElement("div",{className:"_3s55O",dangerouslySetInnerHTML:{__html:u},role:"img","aria-label":v.title||"Floor Plan"}))))),t.length>1&&e.createElement("div",{className:"_3myos"},t.map((t,a)=>e.createElement("button",{key:a,className:"_3uCGe "+(r===a?"_1Xtbn":""),onClick:e=>((e,t)=>{c(e),t.currentTarget.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})})(a,e),"aria-label":`Show ${t.title} || 'Floor Plan'`},t.title))))},Me=e=>e.title||e.alt||e.caption||e.description||"",Oe=({images:t=[],title:a,utils:l,isUseHighRes:o=!1})=>{var r;const[s,i]=n(!1),[c,m]=n(1);if(null==t||!t.length)return null;const d=e=>{m(e+1),i(!0)},u=(o&&(null==l||null===(r=l.setToOriginalImages)||void 0===r?void 0:r.call(l,t))||t).map(e=>{const t=Me(e);return{url:e.url||e.src,title:t,description:t}});return e.createElement("div",{className:"_3YmRE"},a&&e.createElement("h3",{className:"_2eyTv"},a),e.createElement("div",{className:"_1jJ2f"},e.createElement(F,{showArrows:t.length>1,classes:{scrollWrap:"_2q0ex",scrollItem:"_3cz0q",controls:"_dWWUl"},useContainerWidth:!0},t.map((t,a)=>{const n=Me(t);return e.createElement("div",{key:t.id||a,className:"_3hVFy",onClick:()=>d(a),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d(a))},role:"button",tabIndex:0,"aria-label":`View ${n||"image "+(a+1)} in full screen`},e.createElement("img",{src:t.url||t.src,alt:n,className:"_fMk7m"}),n&&e.createElement("span",{className:"_31zSN"},n))}))),e.createElement(I,{show:s,mediaList:u,initialSlide:c,onClose:()=>i(!1)}))},Be=({onClick:t,ariaLabel:a="Close",className:n=""})=>e.createElement("button",{className:"_2nx3A "+n,onClick:t,type:"button","aria-label":a},e.createElement("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M1 1L11 11M1 11L11 1",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))),Fe=({product:t,handleProductSelect:a=(()=>null),utils:n,onClose:o,onCloseChat:r=(()=>null)})=>{var s,i,c,m,d,u,p,v,h,g,E,y,f,N,b,w,C,_,k,I,S,T,x,L,P,$,A,M;const O=l(null),B=null==t||null===(s=t.headShot)||void 0===s||null===(i=s.media)||void 0===i?void 0:i.url,F=(null===(c=t.overview)||void 0===c?void 0:c.shortDescription)||(null===(m=t.overview)||void 0===m?void 0:m.description)||t.description,W=(null==t||null===(d=t.overview)||void 0===d?void 0:d.bulletPoints)||(null==t?void 0:t.modelBullets),D=Boolean((null==t||null===(u=t.communities)||void 0===u?void 0:u.length)>0)&&t.isMaster,R=!(D||null!=t&&t.commPlanID),V=Boolean(null==t?void 0:t.commPlanID),z=V&&(null==t?void 0:t.isQMI),j=V&&Boolean((null==t||null===(p=t.designReadyOptions)||void 0===p?void 0:p.length)>0),{communityModels:H,communityQMIs:U}=null==n||null===(v=n.buildHomeArrays)||void 0===v?void 0:v.call(n,null==t?void 0:t.homes,t.options),q=U.filter(e=>e.isQMI),G=z?(t.designerAppointed||[]).slice(1):[],Q=V&&t.floorplans||[],J=V&&t.elevations||[],Y=null==t||null===(h=t.amenities)||void 0===h||null===(g=h.amenityGroups)||void 0===g||null===(E=g[0])||void 0===E?void 0:E.amenities,{options:K,everyOptionSharedByEachCollection:Z}=(null==n||null===(y=n.getAllCommunityOptions)||void 0===y?void 0:y.call(n,t))||{},X=null==n||null===(f=n.hasOption)||void 0===f?void 0:f.call(n,Z,null==n||null===(N=n.OPTIONS)||void 0===N?void 0:N.VIP_SALES_ONLY),ee=t.isFuture||(null===(b=t.communityTypes)||void 0===b?void 0:b.includes("Future")),te=null===(w=t.salesOffice)||void 0===w?void 0:w.hideTour,ae=t.tour,ne=null==t?void 0:t.dcaDisclaimer,le=null===(C=t.salesOffice)||void 0===C?void 0:C.hideDirections,oe=!ee&&!le,re=Boolean(t.salesOffice),se=null==n||null===(_=n.hasOption)||void 0===_?void 0:_.call(n,K,null==n||null===(k=n.OPTIONS)||void 0===k?void 0:k.GEO_LOCATION_ENABLED),ie=null===(I=t.salesOffice)||void 0===I?void 0:I.lat,ce=null===(S=t.salesOffice)||void 0===S?void 0:S.lon,ue=null===(T=t.salesOffice)||void 0===T?void 0:T.showHours,pe=null===(x=t.salesOffice)||void 0===x?void 0:x.state,ve=null===(L=t.salesOffice)||void 0===L?void 0:L.street,he=null===(P=t.salesOffice)||void 0===P?void 0:P.city,ge=null===($=t.salesOffice)||void 0===$?void 0:$.zip,Ee=null==n||null===(A=n.useMapLink)||void 0===A?void 0:A.call(n,{lat:ie,lon:ce,salesOffice:{state:pe,street:ve,city:he,zip:ge},showGeoLocation:se});let ye="",Ne="#appointment",we=!1;ne?(ye+="Contact the community",Ne="#contact"):te?(ye+="Talk to a local expert",Ne="#contact-email"):ee?(ye+=X?"Contact the community":"Become a VIP",Ne="#join-vip",we=!0):ye+=ae?"Schedule a self-guided tour":"Schedule a tour";const Ce=(e,t)=>{const a=new URL(e,window.location.origin).pathname;return window.location.pathname===a&&(t.preventDefault(),t.stopPropagation(),!0)},ke=()=>{O.current&&O.current.offsetWidth>window.innerWidth-680&&r()};return e.createElement("div",{className:_e.root,ref:O},e.createElement(Be,{className:_e.closeButton,onClick:o,ariaLabel:"Close product details"}),e.createElement("div",{className:_e.header},(null==t?void 0:t.name)&&e.createElement("div",null,e.createElement(me,{href:t.url,utils:n},e.createElement("h2",{className:_e.title},t.name)),e.createElement("span",{className:_e.location},V&&t.communityName,!V&&e.createElement(e.Fragment,null,t.city,", ",t.state))),B&&e.createElement("div",{className:_e.imageWrapper},e.createElement("img",{src:B,alt:t.name||"Community",className:_e.image}))),e.createElement("div",{className:_e.content},V&&e.createElement(Ie,{model:t,utils:n}),V&&e.createElement(be,{model:t,utils:n}),V&&e.createElement(fe,{model:t,utils:n}),j&&n.DesignReadyTimeline&&e.createElement("div",{className:_e.designReadyWrapper,id:"design-ready-timeline-panel"},e.createElement(n.DesignReadyTimeline,{moveInDate:t.moveInDate,dates:t.designReadyOptions})),F&&e.createElement("p",{className:_e.description},F),(null==W?void 0:W.length)>0&&e.createElement("div",{className:_e.summarySection},e.createElement("h3",{className:_e.summaryTitle},"Summary"),e.createElement("ul",{className:_e.summaryList},W.map((t,a)=>e.createElement("li",{key:a,className:_e.bullet},(null==t?void 0:t.text)||t)))),D&&e.createElement("div",{className:_e.collectionsContainer},null===(M=t.communities)||void 0===M?void 0:M.map((t,l)=>e.createElement(Te,{key:t.communityId||l,collection:t,utils:n,handleProductSelect:a}))),R&&e.createElement(Se,{communityQMIs:q,communityModels:H,handleProductSelect:a,utils:n}),z&&(null==G?void 0:G.length)>0&&e.createElement(Oe,{images:G,isUseHighRes:!0,utils:n,title:"Designer Appointed Features"}),V&&(null==Q?void 0:Q.length)>0&&e.createElement(Ae,{floorPlans:Q,utils:n}),V&&!z&&(null==J?void 0:J.length)>0&&e.createElement(Oe,{images:J,utils:n,title:"Exterior Designs"}),!V&&Y&&e.createElement(xe,{amenities:Y}),re&&e.createElement("div",{className:_e.footer},e.createElement("div",{className:_e.optionsWrapper},e.createElement(de,{text:ye,href:t.url+Ne,isLink:!0,utils:n,onClick:e=>{ke(),Ce(t.url,e)&&n&&(we?n.openVIPPanel():te?n.openEmailPanel():n.openTourPanel(),n.closeSalesPanel())}}),!ne&&!ee&&e.createElement(de,{text:"Contact the community",href:t.url+"#contact",isLink:!0,utils:n,onClick:e=>{ke(),Ce(t.url,e)&&n&&(n.closeSalesPanel(),n.closeEmailPanel(),n.closeVIPPanel(),n.closeTourPanel(),setTimeout(()=>{n.openSalesPanel()},350))}}),ue&&!ee&&!le&&e.createElement(de,{text:"View Sales Center hours",href:t.url+"#sales-hours",isLink:!0,utils:n,onClick:e=>{ke(),Ce(t.url,e)&&n&&(n.openSalesPanel(),n.closeEmailPanel(),n.closeVIPPanel(),n.closeTourPanel(),setTimeout(()=>{n.jumpToHours()},300))}}),oe&&Ee&&e.createElement(de,{text:"Get directions",href:Ee,isLink:!0,target:"_blank"})))))},We=async(e,t)=>(await Promise.allSettled(e.map(e=>fetch(`${t}/${(e=>{try{return new URL(e).pathname.replace(/^\/+/,"")}catch{return e.replace(/^\/+/,"")}})(e)}`).then(e=>{if(!e.ok)throw new Error("HTTP error! status: "+e.status);return e.json()}).then(e=>e.communityComponent??e.masterCommunityComponent??e.modelComponent)))).filter(e=>"fulfilled"===e.status&&e.value).map(e=>e.value),De=e=>{var t;delete e.metaDescription,delete e.schoolInfo,delete e.siteplan,delete e.gallery,delete e.events,delete e.media,delete e.designStudio,delete e.downloadables,delete e.socialMedia,e.commPlanID&&(delete e.amenities,delete e.communityFilters,delete e.logo,delete e.masterCommunityUrl,delete e.qmis),null!==(t=e.homes)&&void 0!==t&&t.models&&e.homes.models.map(e=>{delete e.gallery,delete e.logo,delete e.modelBullets,delete e.media,delete e.downloadables}),e.communities&&e.communities.map(e=>{De(e)})},Re=({value:t,onChange:a,options:n=[],placeholder:l="Select an option",disabled:o=!1,ariaLabel:r,valueKey:s="value",labelKey:i="label"})=>e.createElement("select",{className:"_2T5Od",value:t,onChange:a,"aria-label":r,disabled:o},e.createElement("option",{value:"",disabled:!0},l),n.map(t=>e.createElement("option",{key:t[i],value:t[s]},t[i]))),Ve=({tollRegionsEndpoint:t,availabilityAPI:l,chatRegion:o,productCode:r,onClose:s})=>{const[i,c]=n(""),[m,d]=n(null),[u,p]=n([]),[v,h]=n(!0),[g,E]=n(null),[y,f]=n(!1),[N,b]=n({name:"",email:"",phone:""}),[w,C]=n(!0);if(a(()=>{(async()=>{try{h(!0),E(null);const e=sessionStorage.getItem("chatbot_regions");if(e)return p(JSON.parse(e)),void h(!1);const a=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!a.ok)throw new Error("Failed to fetch regions");const n=await a.json(),l=new Set,o=n.flatMap(e=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.regions)||[]}).filter(e=>{var t;return null===(t=e.region)||void 0===t?void 0:t.acquireId}).map(e=>({chatRegion:e.region.acquireId,fullName:e.region.fullName,metroId:e.region.metroId})).filter(e=>!l.has(e.fullName)&&(l.add(e.fullName),!0)).sort((e,t)=>e.fullName.localeCompare(t.fullName));sessionStorage.setItem("chatbot_regions",JSON.stringify(o)),p(o)}catch(e){E("Unable to load regions. Please try again.")}finally{h(!1)}})()},[t]),a(()=>{C(!0),(async()=>{if(!o&&!m)return C(!1),void f(!1);const e=await(async(e,t)=>{var a,n;const l=await z(e,t);return(null==l||null===(a=l.data)||void 0===a||null===(n=a.payload)||void 0===n?void 0:n.length)>0})(o??(null==m?void 0:m.chatRegion),l);setTimeout(()=>{f(e),C(!1)},500)})()},[o,m,l]),g)return e.createElement("div",{className:"_jojph"},g);let _="",k="Speak with Local Expert";return y?(_="Good news! A local expert is available",o?_+=" for this area of interest":m&&(_+=" for "+m.fullName),_+=". Share your contact information below so I can transfer you."):(k="Contact Me",_="Our local experts are currently offline",o?_+=" in this area of interest":m&&(_+=" in "+m.fullName),_+=". Share your contact information below and we will get back to you."),e.createElement("div",{className:"_1nfWt"},e.createElement(Be,{onClick:s,ariaLabel:"Close form"}),!o&&e.createElement("div",{className:"_hvVCB"},e.createElement("p",{className:"_1bBiy"},"I'll connect you with a local expert. Select your area of interest below to get started."),e.createElement(Re,{value:i,onChange:async e=>{const t=e.target.value;c(t);const a=u.find(e=>e.metroId==t);d(a)},options:u,placeholder:v?"Loading areas of interest...":"Select one",disabled:v,ariaLabel:"Select your region",valueKey:"metroId",labelKey:"fullName"})),w&&e.createElement("p",{className:"_1bBiy"},"Please wait while I look for an available expert in your area of interest."),e.createElement("div",{className:"_3REMG"},(!o&&!m||w)&&e.createElement("div",{className:"_2i7E6"},w&&e.createElement("div",{className:"_1VjYh"},e.createElement(ie,null))),e.createElement("p",{className:"_1bBiy"},_),e.createElement(G,{formData:N,setFormData:b,onSubmit:e=>{var t,a,n,l,s;e.preventDefault();const i=e.target,{valid:c,firstName:d,lastName:u}=Q(i);if(!c)return!1;const p=null===(t=i.email)||void 0===t||null===(a=t.value)||void 0===a?void 0:a.trim(),v=null===(n=i.phone)||void 0===n||null===(l=n.value)||void 0===l?void 0:l.trim(),h=(null===(s=i.isAgent)||void 0===s?void 0:s.value)??"0";console.log("Form submitted with data:",d,u,p,v,h,r,(null==m?void 0:m.chatRegion)??o)},cta:k,isShowPhoneInput:!0,disabled:!o&&!m||w})))},ze=()=>"undefined"!=typeof window&&window.innerWidth<768,je=e=>{let t={name:e.name,url:e.url,fromModelList:e.fromModelList||!1,fromProductsList:e.fromProductsList||!1,fromPageNavigation:e.fromPageNavigation||!1};return e.commPlanID?(t.commPlanID=e.commPlanID,t.type=e.isQMI?"qmi":"homeDesign"):e.isMaster&&e.masterCommunityId?(t.masterCommunityId=e.masterCommunityId,t.type="masterCommunity"):e.communityId?(t.communityId=e.communityId,t.type="community"):t=e,t},He=({tollRegionsEndpoint:t,tollRouteApi:r,utils:s={},chatRegion:i,productCode:c,pageSummaryData:m,availabilityAPI:d,setIsChatBotOpenExternal:u=(()=>null),isChatBotOpenExternal:p,setChatBotTransferData:v=(()=>null),chatEndpointId:h,chatApiKey:g,trackChatEvent:E=(()=>null),chatClickedEventString:w="chatClicked",chatStartedEventString:C="chatStarted"})=>{const _=l(null),{width:k,height:I,isResizing:S,handleStart:T}=function(e){const[t,l]=n(ze()?345:410),[r,s]=n(650),[i,c]=n(!1),m=o(()=>750,[]),d=o(()=>Math.floor(.96*window.innerHeight),[]),u=o(e=>{e.preventDefault(),c(!0)},[]),p=o(t=>{if(!i||!e.current)return;t.touches&&t.preventDefault();const a=e.current.getBoundingClientRect(),n=t.touches?t.touches[0].clientY:t.clientY,o=a.right-(t.touches?t.touches[0].clientX:t.clientX),r=m(),c=Math.min(Math.max(o,ze()?345:410),r);l(c);const u=a.bottom-n,p=d(),v=Math.min(Math.max(u,650),p);s(v)},[i,e,m,d]),v=o(()=>{c(!1)},[]);return a(()=>(i&&(document.addEventListener("mousemove",p),document.addEventListener("mouseup",v),document.addEventListener("touchmove",p,{passive:!1}),document.addEventListener("touchend",v),document.addEventListener("touchcancel",v),document.body.style.cursor="nesw-resize",document.body.style.userSelect="none"),()=>{document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",v),document.removeEventListener("touchmove",p),document.removeEventListener("touchend",v),document.removeEventListener("touchcancel",v),document.body.style.cursor="",document.body.style.userSelect=""}),[i,p,v]),a(()=>{const e=()=>{const e=m(),a=d();t>e&&l(e),r>a&&s(a)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[t,r,m,d]),{width:t,height:r,isResizing:i,handleStart:u}}(_),[x,L]=n(!0),[P,$]=n(!1),[A,M]=n([]),[O,B]=n(""),[F,W]=n(null),D=l(null),R=l(null),[V,z]=n(!1),[j,H]=n(null),[q,G]=n(null),[Q,J]=n([]),[Y,K]=n(!1),Z=(e,t={})=>{J(a=>[...a.filter(a=>!(a.name===e.name&&a.type===e.type&&a.commPlanID===e.commPlanID&&a.fromProductsList===t.fromProductsList&&a.fromModelList===t.fromModelList&&a.fromPageNavigation===t.fromPageNavigation||t.fromProductsList&&(a.fromProductsList||a.fromModelList)||t.fromModelList&&a.fromModelList||t.fromPageNavigation&&a.fromPageNavigation)),e].slice(-10))},X=()=>{$(!1),u(!1),M([]),H(null),G(null),J([]),K(!1),v(null),B(""),W(null),z(!1),window.localStorage.removeItem("tbChatBot")},ee=async(e,t)=>{if(!O.trim()&&!t)return;const a=new URLSearchParams(window.location.search),n=a.get("endpointId")??h,l=a.get("apiKey")??g,o=O||t,s={id:Date.now(),text:o,type:"user"};W(null),M([...A,s]),B(""),z(!0);const i=Q[Q.length-1],c={prompt:o,session_id:j&&q&&!b(q)?j:"",...i&&"other"!==i.type&&{context:i}};let m=!1;(async(e,{baseUrl:t,apiKey:a,onChunk:n,onDone:l,onError:o})=>{const r={"Content-Type":"application/json"};a&&(r["x-api-key"]=a);try{var s;const a=await fetch(t+"/chat",{method:"POST",headers:r,body:JSON.stringify(e)});if(!a.ok)throw new Error("API error: "+a.status);const o=null===(s=a.body)||void 0===s?void 0:s.getReader();if(!o)throw new Error("No response body");const i=new TextDecoder;let c="";for(;;){const{done:e,value:t}=await o.read();if(e)break;c+=i.decode(t,{stream:!0});const a=c.split("\n");c=a.pop();for(const e of a){const t=e.trim();if(t)try{const e=JSON.parse(t);n&&e.response&&n({...e.response,session_id:e.session_id})}catch{}}}if(c.trim())try{const e=JSON.parse(c.trim());n&&e.response&&n(e.response)}catch{}l&&l()}catch(e){o&&o(e)}})(c,{baseUrl:`https://${n}.execute-api.us-east-1.amazonaws.com/prod`,apiKey:l,onChunk:e=>{console.log("chunk:",e),H(e.session_id),G(Date.now()+9e5);const t=[...e.communities||[],...e.qmis||[],...e.homeDesigns||[]];if(t&&Array.isArray(t)&&t.length>0)m=!0,z(!0),We(t,r).then(t=>{if(z(!1),console.log("getProductData products:",t),(null==t?void 0:t.length)>0){const a={id:Date.now()+2,text:e.message,type:"products",products:t};M(e=>[...e,a])}else{const t={id:Date.now()+1,text:e.message,type:"bot"};M(e=>[...e,t])}}).catch(e=>{console.error("getProductData error:",e),z(!1)});else if(e.error)W("An error occurred while sending the message. Pleaesse try again."),z(!1);else{const t={id:Date.now()+1,text:e.message,type:"bot"};M(e=>[...e,t])}},onDone:()=>{m||z(!1),console.log("stream done")},onError:e=>{z(!1),console.error("stream error:",e),W("An error occurred while sending the message. Pleaesse try again.")}})},te=e=>{ee(0,e.value)},le=async(e,{fromProductsList:t=!1,fromModelList:a=!1}={})=>{var n;const l=Boolean(e.commPlanID);let o=null;l&&!t&&(M(e=>[...e.filter(e=>"model"!==e.productType)]),z(!0),o=await We([e.url],r)),z(!1);const s={id:Date.now(),type:"product",product:l&&(null===(n=o)||void 0===n?void 0:n[0])||e,productType:l?"model":"community"};M(t?e=>[...e.filter(e=>"product"!==e.type),s]:e=>[...e,s]),Z(je({...e,fromProductsList:t,fromModelList:a}),{fromModelList:a,fromProductsList:t})},ce=e=>{if(e&&"visibilitychange"===e.type&&document.hidden)return;const t=f("tbChatBot");if(console.log(t),t&&t.value&&t.value.expiry&&!b(t.value.expiry)){const{messages:e,sessionId:a,expiry:n,userEvents:l}=t.value||{};e&&M(e),a&&H(a),n&&G(n),l&&J(l),$(!0)}else t&&N("tbChatBot")};return a(()=>(ce(),window.addEventListener("visibilitychange",ce),()=>{window.removeEventListener("visibilitychange",ce)}),[]),a(()=>{if(j&&q){const e=A.slice(-10);e.map(e=>{var t;if((null===(t=e.products)||void 0===t?void 0:t.length)>0)e.products=e.products.map(e=>{const t={...e};return De(t),t});else if(e.product){const t={...e.product};return De(t),t}}),y("tbChatBot",{messages:e,sessionId:j,expiry:q,userEvents:Q})}},[A,j,q,Q]),a(()=>{var e;D.current&&null!==(e=R.current)&&void 0!==e&&e.lastElementChild&&D.current.scrollTo({top:R.current.lastElementChild.offsetTop-80,behavior:"smooth"})},[A,V]),a(()=>{p&&$(!0)},[p]),a(()=>{m&&Z(je({...m,fromPageNavigation:!0}),{fromPageNavigation:!0})},[m]),x?e.createElement("div",{className:""+oe.root},e.createElement("button",{className:`${oe.launchButton} ${oe.buttonReset} ${P?oe.hidden:""}`,onClick:()=>{$(!0)},"aria-label":"Open Toll Brothers' AI Assistant","aria-controls":"chatbot-interface","aria-expanded":P},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/chatbot-button.svg"})),e.createElement("div",{id:"chatbot-interface",className:`${oe.interface} ${P?"":oe.hidden}`,ref:_,style:{width:k+"px",height:I+"px"}},e.createElement("div",{className:`${oe.resizeHandle} ${S?oe.resizing:""}`,onMouseDown:T,onTouchStart:T,role:"separator","aria-label":"Resize chat"},e.createElement("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M0 10L10 0M0 5L5 0",stroke:"currentColor",strokeWidth:"1"}))),e.createElement("div",{className:oe.header},e.createElement("div",{className:oe.title},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/chatbot-icon.svg"}),e.createElement("span",null,"Hi, I'm AI Concierge")),e.createElement(ae,{className:oe.headerButtons,onClose:()=>{K(!0)},onMinimize:()=>{$(!1),u(!1)}})),e.createElement("div",{className:oe.body,ref:D},e.createElement("p",null,"I am the Toll Brothers AI Concierge. I can assist with your home search using the prompts below or direct you to one of our human experts for additional help."),e.createElement("div",{className:oe.messages,ref:R},A.map(a=>"user"===a.type?e.createElement(se,{key:a.id,message:a.text}):"bot"===a.type?e.createElement(re,{key:a.id,message:a.text,component:a.component}):"prompt"===a.type?e.createElement(ue,{key:a.id,options:a.options,onOptionSelect:te}):"products"===a.type?e.createElement(re,{key:a.id,message:a.text,component:e.createElement(Ce,{products:a.products,handleProductSelect:e=>le(e,{fromProductsList:!0}),utils:s})}):"product"===a.type?e.createElement(re,{key:a.id,message:a.text,component:e.createElement(Fe,{key:a.id,product:a.product,utils:s,handleProductSelect:le,onClose:()=>((e,t)=>{if(M(t=>t.filter(t=>t.id!==e)),t){const e=Boolean(t.commPlanID),a=Boolean(t.isMaster);J(n=>n.filter(n=>!(!n.fromPageNavigation&&(e&&n.commPlanID===t.commPlanID||!a&&!e&&t.communityId&&n.communityId===t.communityId||a&&!e&&t.masterCommunityId&&n.masterCommunityId===t.masterCommunityId))))}})(a.id,a.product),onCloseChat:X})}):"form"===a.type?e.createElement(re,{key:a.id,component:e.createElement(Ve,{chatRegion:i,productCode:c,tollRegionsEndpoint:t,availabilityAPI:d,onClose:()=>M(e=>e.filter(e=>"form"!==e.type))})}):void 0),V&&e.createElement(re,{component:e.createElement(ie,null)}),F&&e.createElement("div",{className:oe.errorMessage},F))),e.createElement("div",{className:oe.footer},e.createElement(U,{value:O,onChange:e=>{B(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),ee())},onSend:ee,placeholder:"Ask AI Concierge your question here."}),e.createElement("button",{className:oe.transferButton,onClick:()=>{const e={id:Date.now(),text:"In order to connect you with a local expert, please select your area of interest:",type:"form"};M(t=>[...t.filter(e=>"form"!==e.type),e])},type:"button"},e.createElement("img",{src:"https://cdn.tollbrothers.com/sites/comtollbrotherswww/icons/osc.svg"}),e.createElement("span",null,"Speak to an expert"))),Y&&e.createElement(ne,{onStay:()=>{K(!1)},onLeave:X}))):null},Ue=({onSignInClick:t=(()=>null),classes:a={}})=>e.createElement("article",{className:"_3F1hL "+(a.root??"")},e.createElement("p",null,"Start your new home journey off right with My Favorites. Simply register for an account and use My Favorites to:"),e.createElement("ul",null,e.createElement("li",null,"Save communities and home designs that inspire you"),e.createElement("li",null,"Personalize your own dream home with interactive tools"),e.createElement("li",null,"Keep track of every step of your journey from design selections to financing and more")),e.createElement(S,{className:"_2pagQ",onClick:t},"Sign In"),e.createElement("hr",null),e.createElement("span",{className:"_1Tpgx"},"Don't have an account?"," ",e.createElement("button",{className:"_X1HLE clear-styles",onClick:t},"Create an Account")));export{He as Chatbot,x as DragSlider,Ue as FavoritesSignIn,I as FullScreenGallery,E as HeroComponent,F as HorizontalScroller,B as MortgageCalculator,M as PrintButton,v as Slider,S as TollButton,le as TollChat,L as printElement};
2
2
  //# sourceMappingURL=index.modern.js.map