1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ae05d489-fe3f-43eb-a1aa-aeb45c4aeebd",e._sentryDebugIdIdentifier="sentry-dbid-ae05d489-fe3f-43eb-a1aa-aeb45c4aeebd")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[36073,58454],{16598:(e,t,n)=>{"use strict";function r(e){let t=e.address.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/-+$/,""),n=e.state.toLowerCase(),r=e.city.toLowerCase().replace(/\s+/g,"-");return"/search/".concat(n,"/").concat(r,"/").concat(e.propertyType,"/").concat(t,"-").concat(e.id)}n.d(t,{q:()=>r})},20294:(e,t,n)=>{"use strict";function r(e,t){return e&&e.startsWith("/api/idx/photo/")&&t?"".concat(e,"?w=").concat(t):e}n.d(t,{A:()=>r})},58454:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DetailMap:()=>u,SearchMap:()=>s});var r=n(17988),o=n(19496),c=n(63079),l=n.n(c);n(93330);var a=n(16598),i=n(20294);function s(e){let{listings:t,activeId:n,onClickPin:c,center:s,zoom:u=12,className:d="",drawnPolygon:f,onPolygonChange:p,onViewportChange:g,viewportModeActive:h}=e,m=(0,o.useRef)(null),v=(0,o.useRef)(null),y=(0,o.useRef)(new Map),b=(0,o.useRef)([]),x=(0,o.useRef)(!1),w=(0,o.useRef)([]),k=(0,o.useRef)(null),T=(0,o.useRef)(null),C=(0,o.useRef)(null),L=(0,o.useRef)(null),R=(0,o.useRef)(null),M=(0,o.useRef)(p);M.current=p;let z=(0,o.useRef)(g);z.current=g;let j=(0,o.useRef)(f);j.current=f;let D=(0,o.useRef)(!1),E=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!m.current||v.current)return;let e=null!=s?s:t.length>0?[t.reduce((e,t)=>e+t.lat,0)/t.length,t.reduce((e,t)=>e+t.lng,0)/t.length]:[36.1627,-86.7816],n=l().map(m.current,{center:e,zoom:u,zoomControl:!1,attributionControl:!1});l().tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:"\xa9 OpenStreetMap",maxZoom:19,className:"map-tiles-muted"}).addTo(n),l().control.zoom({position:"bottomright"}).addTo(n),l().control.attribution({position:"bottomleft",prefix:"\xa9 OpenStreetMap"}).addTo(n),new(l().Control.extend({options:{position:"topleft"},onAdd:()=>{let e=l().DomUtil.create("div","leaflet-bar");e.style.background="#fff",l().DomEvent.disableClickPropagation(e);let t=l().DomUtil.create("a","",e);t.href="#",t.title="Draw a search boundary",t.style.width="34px",t.style.height="34px",t.style.display="flex",t.style.alignItems="center",t.style.justifyContent="center",t.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19l7-7 3 3-7 7-3-3z"/><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"/><path d="M2 2l7.586 7.586"/><circle cx="11" cy="11" r="2"/></svg>',L.current=t;let r=l().DomUtil.create("a","",e);r.href="#",r.title="Remove boundary",r.style.width="34px",r.style.height="34px",r.style.display="none",r.style.alignItems="center",r.style.justifyContent="center",r.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"/><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/></svg>',R.current=r;let o=e=>{t.style.background=e?"#2fa2b9":"#fff",t.style.color=e?"#fff":"#333"},c=()=>{var e,t;null===(e=T.current)||void 0===e||e.remove(),T.current=null,null===(t=k.current)||void 0===t||t.remove(),k.current=null},a=()=>{var e,t;let a=w.current;if(c(),x.current=!1,o(!1),n.getContainer().style.cursor="",a.length<3){w.current=[];return}null===(e=C.current)||void 0===e||e.remove(),C.current=l().polygon(a,{color:"#2fa2b9",weight:2,fillColor:"#2fa2b9",fillOpacity:.1}).addTo(n),r.style.display="flex",w.current=[],null===(t=M.current)||void 0===t||t.call(M,a.map(e=>[e.lat,e.lng]))},i=()=>{c(),x.current=!1,w.current=[],o(!1),n.getContainer().style.cursor=""};return n.on("click",e=>{var t,r;if(!x.current)return;let o=w.current;if(o.length>
1=3){let t=n.latLngToContainerPoint(o[0]),r=n.latLngToContainerPoint(e.latlng);if(14>t.distanceTo(r)){a();return}}o.push(e.latlng),null===(t=T.current)||void 0===t||t.remove(),T.current=l().layerGroup(o.map(e=>l().circleMarker(e,{radius:4,color:"#2fa2b9",fillColor:"#fff",fillOpacity:1,weight:2}))).addTo(n),null===(r=k.current)||void 0===r||r.remove(),k.current=o.length>=3?l().polygon(o,{color:"#2fa2b9",weight:2,dashArray:"6 4",fillOpacity:.05}).addTo(n):l().polyline(o,{color:"#2fa2b9",weight:2,dashArray:"6 4"}).addTo(n)}),n.on("dblclick",()=>{x.current&&w.current.length>=3&&a()}),l().DomEvent.on(t,"click",e=>{var t,c;if(e.preventDefault(),x.current){i();return}null===(t=C.current)||void 0===t||t.remove(),C.current=null,r.style.display="none",null===(c=M.current)||void 0===c||c.call(M,null),x.current=!0,w.current=[],o(!0),n.getContainer().style.cursor="crosshair"}),l().DomEvent.on(r,"click",e=>{var t,n;e.preventDefault(),null===(t=C.current)||void 0===t||t.remove(),C.current=null,r.style.display="none",null===(n=M.current)||void 0===n||n.call(M,null)}),e}}))().addTo(n);let r=new ResizeObserver(()=>{n.invalidateSize();let e=b.current;e.length>0&&(D.current=!0,n.once("moveend",()=>{D.current=!1}),n.fitBounds(l().latLngBounds(e),{paddingTopLeft:[50,60],paddingBottomRight:[50,30],maxZoom:15,animate:!1}))});return r.observe(m.current),n.on("moveend",()=>{!D.current&&!x.current&&!j.current&&(10>n.getZoom()||(E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{var e;let t=n.getBounds();null===(e=z.current)||void 0===e||e.call(z,{minLat:t.getSouth(),maxLat:t.getNorth(),minLng:t.getWest(),maxLng:t.getEast()})},250)))}),v.current=n,()=>{E.current&&clearTimeout(E.current),r.disconnect(),n.remove(),v.current=null,y.current.clear()}},[]);let I=t.map(e=>e.id).sort().join(","),B=(0,o.useRef)(null);return(0,o.useEffect)(()=>{let e=v.current;if(!e||0===t.length)return;let n=t.map(e=>[e.lat,e.lng]);if(b.current=n,B.current===I||(B.current=I,f||h))return;let r=l().latLngBounds(n);D.current=!0,e.once("moveend",()=>{D.current=!1}),e.fitBounds(r,{paddingTopLeft:[50,60],paddingBottomRight:[50,30],maxZoom:15})},[I,t,f,h]),(0,o.useEffect)(()=>{let e=v.current;if(!e)return;let r=y.current,o=new Set(t.map(e=>e.id));r.forEach((e,t)=>{o.has(t)||(e.remove(),r.delete(t))}),t.forEach(t=>{let o=t.id===n,s=function(e,t){var n;let r=(n=e.price)>=1e6?"$".concat((n/1e6).toFixed(1),"M"):"$".concat(Math.round(n/1e3),"K"),o=Math.max(36,Math.round(6.8*r.length+17)),c=o/2,a=["M ".concat(6,",0"),"H ".concat(o-6),"A ".concat(6,",").concat(6," 0 0 1 ").concat(o,",").concat(6),"V ".concat(14),"A ".concat(6,",").concat(6," 0 0 1 ").concat(o-6,",").concat(20),"H ".concat(c+4),"L ".concat(c,",").concat(26),"L ".concat(c-4,",").concat(20),"H ".concat(6),"A ".concat(6,",").concat(6," 0 0 1 0,").concat(14),"V ".concat(6),"A ".concat(6,",").concat(6," 0 0 1 ").concat(6,",0"),"Z"].join(" "),i=o+6;return l().divIcon({className:"",iconAnchor:[3+c,29],iconSize:[i,32],html:'\n <svg width="'.concat(i,'" height="').concat(32,'" viewBox="0 0 ').concat(i," ").concat(32,'"\n xmlns="http://www.w3.org/2000/svg" style="cursor:pointer;overflow:visible;">\n <g transform="translate(').concat(3,",").concat(3,')"\n style="filter:drop-shadow(0 2px 4px rgba(8,18,35,0.35));">\n <path d="').concat(a,'" fill="').concat(t?"#2fa2b9":"#0c1830",'" stroke="#fff" stroke-width="').concat(1.25,'" stroke-linejoin="round" />\n <text x="').concat(c,'" y="').concat(10,'" text-anchor="middle" dominant-baseline="central"\n fill="#fff" font-family="system-ui,-apple-system,sans-serif"\n font-size="').concat(11,'" font-weight="800" letter-spacing="-0.2">').concat(r,"</text>\n </g>\n </svg>")})}(t,o);if(r.has(t.id))r.get(t.id).setIcon(s);else{let n=l().marker([t.lat,t.lng],{icon:s}).addTo(e).bindPopup(function(e){var t;let n=(0,a.q)(e),r=e.photos[0];return'\n <a href="'.concat(n,'" style="display:block;width:200px;text-decoration:none;color:inherit;font-family:system-ui,sans-serif;">\n ').concat(r?'<div style="width:100%;height:120px;overflow:hidden;">\n <img src="'.concat((0,i.A)(r,400),'" alt="').concat(e.address,'" loading="lazy" decoding="async" style="width:100%;height:100%;object-fit:cover;display:block;" />\n </div>'):"",'\n <div style="padding:10px 12px 12px;">\n <div style="font-size:16px;font-weight:800;color:#0c1830;">
1').concat((t=e.price,"$".concat(t.toLocaleString("en-US"))),'</div>\n <div style="font-size:12px;color:#526178;margin-top:2px;">').concat(e.beds," bd \xb7 ").concat(e.baths," ba \xb7 ").concat(e.sqft.toLocaleString(),' sqft</div>\n <div style="font-size:12px;color:#0c1830;font-weight:600;margin-top:4px;">').concat(e.address,'</div>\n <div style="font-size:11px;color:#718096;">').concat(e.city,", ").concat(e.state," ").concat(e.zip,"</div>\n </div>\n </a>")}(t),{className:"idx-popup",closeButton:!0,maxWidth:220,offset:[0,-8]}).on("click",()=>c(t.id));r.set(t.id,n)}})},[t,n,c]),(0,o.useEffect)(()=>{var e;null===f&&(null===(e=C.current)||void 0===e||e.remove(),C.current=null,R.current&&(R.current.style.display="none"))},[f]),(0,r.jsx)("div",{ref:m,className:d,style:{background:"#e8f0f7"}})}function u(e){let{lat:t,lng:n,address:c,className:a=""}=e,i=(0,o.useRef)(null),s=(0,o.useRef)(null);return(0,o.useEffect)(()=>{if(!i.current||s.current)return;let e=l().map(i.current,{center:[t,n],zoom:15,zoomControl:!1,attributionControl:!1,scrollWheelZoom:!1});return l().tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:"\xa9 OpenStreetMap",maxZoom:19,className:"map-tiles-muted"}).addTo(e),l().marker([t,n],{icon:l().divIcon({className:"",iconAnchor:[18,36],html:'\n <svg width="36" height="45" viewBox="0 0 36 45" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M18 0C8.06 0 0 8.06 0 18C0 31.5 18 45 18 45C18 45 36 31.5 36 18C36 8.06 27.94 0 18 0Z" fill="#2fa2b9"/>\n <circle cx="18" cy="18" r="8" fill="white"/>\n </svg>'})}).addTo(e).bindTooltip(c,{permanent:!1,direction:"top"}),l().control.zoom({position:"bottomright"}).addTo(e),l().control.attribution({position:"bottomleft",prefix:"\xa9 OpenStreetMap"}).addTo(e),s.current=e,()=>{e.remove(),s.current=null}},[]),(0,r.jsx)("div",{ref:i,className:a,style:{background:"#e8f0f7"}})}delete l().Icon.Default.prototype._getIconUrl,l().Icon.Default.mergeOptions({iconRetinaUrl:"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/marker-icon-2x.png",iconUrl:"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/marker-icon.png",shadowUrl:"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/marker-shadow.png"})},93330:()=>{}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.