{"version":3,"file":"AddressBar.FrmlA7Bc.mjs","names":["React.forwardRef","useState","useRef","useLayoutEffect","useEffect"],"sources":["https:/framerusercontent.com/modules/sA40IuttSjNtfmAykIG4/FcLulfyRtBFXmkzGb4we/jiyAOZNbE.js","https:/framerusercontent.com/modules/ONFH4r8R0h6b545vhhzI/dAOxar6zAlJYwgYsWli8/AddressBar.js"],"sourcesContent":["// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 9 C 0 4.029 4.029 0 9 0 C 13.971 0 18 4.029 18 9 C 18 13.971 13.971 18 9 18 C 4.029 18 0 13.971 0 9 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"18px\" id=\"M2umBpORv\" transform=\"translate(3 3)\" width=\"18px\"/><path d=\"M 0 3 L 2.25 5.25 L 7.5 0\" fill=\"transparent\" height=\"5.25px\" id=\"SKKzYtdWd\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(8.25 9.75)\" width=\"7.5px\"/><path d=\"M 0 9 C 0 4.029 4.029 0 9 0 C 13.971 0 18 4.029 18 9 C 18 13.971 13.971 18 9 18 C 4.029 18 0 13.971 0 9 Z\" fill=\"transparent\" height=\"18px\" id=\"Ub0giwiXO\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3 3)\" width=\"18px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,ezTt3ayMo:color??props.ezTt3ayMo??\"rgb(0, 0, 0)\",lschgej4H:width1??props.lschgej4H??1.5,qxTvv_EBh:alpha??props.qxTvv_EBh};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,ezTt3ayMo,lschgej4H,qxTvv_EBh,...restProps}=getProps(props);const href=useSVGTemplate(\"2883338743\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-30Bgq\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m6trwb\":qxTvv_EBh,\"--21h8s6\":ezTt3ayMo,\"--pgex8v\":lschgej4H,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-30Bgq { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"ezTt3ayMo\":\"color\",\"lschgej4H\":\"width1\",\"qxTvv_EBh\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Check Circle\",\"color\":{\"type\":\"variable\",\"value\":\"21h8s6\"},\"set\":{\"localId\":\"vectorSet/NGVKdicsm\",\"id\":\"NGVKdicsm\",\"moduleId\":\"omX0gWFPqDwhaiWwf6ab\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-30Bgq\");Icon.displayName=\"Check Circle\";export default Icon;addPropertyControls(Icon,{ezTt3ayMo:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},lschgej4H:{defaultValue:1.5,displayStepper:true,hidden:false,max:6,min:0,step:.5,title:\"Width\",type:ControlType.Number},qxTvv_EBh:{defaultValue:0,displayStepper:true,hidden:false,max:1,min:0,step:.1,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVector\":\"{\\\"name\\\":\\\"Check Circle\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"21h8s6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NGVKdicsm\\\",\\\"id\\\":\\\"NGVKdicsm\\\",\\\"moduleId\\\":\\\"omX0gWFPqDwhaiWwf6ab\\\"}}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerVariables\":\"{\\\"ezTt3ayMo\\\":\\\"color\\\",\\\"lschgej4H\\\":\\\"width1\\\",\\\"qxTvv_EBh\\\":\\\"alpha\\\"}\",\"framerDisableUnlink\":\"true\",\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"24\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// AddressBar - the property address entry pill for the homepage hero and final CTA.\n// Type an address, pick a suggestion (Google Places, optional), press the button:\n// it navigates to /free-property-review?address=... where the wizard takes over.\n// If the API Key prop is left empty, it works as a plain address field. Nothing breaks.\n//\n// The suggestion list is rendered into document.body through a portal and positioned\n// against the bar with fixed coordinates. This is deliberate: Framer sections have\n// \"Clip content\" switched on, which used to cut the list off after the first row.\n// A portal sits outside those frames, so all five suggestions always show wherever\n// the bar is placed. The list follows the bar on scroll and resize.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useLayoutEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";// Runs before the browser paints in the browser, falls back to useEffect on the\n// server so Framer's static render does not warn. Used for the width measurement\n// so the bar never paints in the wide layout and then snaps to the stacked one.\nconst useIsoLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;const PLUM=\"#360024\";const CORAL=\"#E86857\";const LINEN=\"#FCEFDC\";const FONT=\"'Outfit', 'Segoe UI', system-ui, sans-serif\";let mapsPromise=null;function loadMaps(apiKey){if(!mapsPromise){mapsPromise=new Promise((resolve,reject)=>{if(window.google?.maps?.places)return resolve(window.google);const s=document.createElement(\"script\");s.src=\"https://maps.googleapis.com/maps/api/js?key=\"+encodeURIComponent(apiKey)+\"&libraries=places&v=weekly&loading=async&callback=__valoreMapsReady\";window.__valoreMapsReady=()=>resolve(window.google);s.onerror=reject;document.head.appendChild(s);});}return mapsPromise;}export default function AddressBar(props){const{apiKey,placeholder,buttonLabel,targetPath,buttonColor}=props;const[value,setValue]=useState(\"\");const[suggestions,setSuggestions]=useState([]);const[open,setOpen]=useState(false);const[ready,setReady]=useState(false);const[rect,setRect]=useState(null);const timer=useRef(null);const boxRef=useRef(null);const dropRef=useRef(null);const[narrow,setNarrow]=useState(false);// Watch the bar's own width rather than the window, so it lays out correctly\n// wherever it is placed: full width hero, narrower CTA block, or phone.\nuseIsoLayoutEffect(()=>{const el=boxRef.current;if(!el||typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(entries=>{for(const e of entries)setNarrow(e.contentRect.width<560);});ro.observe(el);return()=>ro.disconnect();},[]);useEffect(()=>{if(!apiKey)return;let alive=true;loadMaps(apiKey).then(()=>alive&&setReady(true)).catch(()=>{});return()=>{alive=false;};},[apiKey]);// Close when clicking anywhere outside the bar or the list.\nuseEffect(()=>{const close=e=>{const t=e.target;if(boxRef.current&&boxRef.current.contains(t))return;if(dropRef.current&&dropRef.current.contains(t))return;setOpen(false);};document.addEventListener(\"mousedown\",close);return()=>document.removeEventListener(\"mousedown\",close);},[]);// Keep the portalled list glued to the bar.\n// Deliberately positioned absolutely in PAGE coordinates, not fixed to the\n// viewport. On iOS, opening the keyboard shrinks the visual viewport and\n// fixed elements are measured against it, which made the list jump above the\n// bar on some taps and below it on others. Page coordinates do not move when\n// the keyboard opens, so the list is always directly under the bar.\nuseEffect(()=>{if(!open)return;const update=()=>{if(!boxRef.current)return;const r=boxRef.current.getBoundingClientRect();setRect({top:r.bottom+window.scrollY,left:r.left+window.scrollX,width:r.width});};update();window.addEventListener(\"resize\",update);window.addEventListener(\"scroll\",update,true);const vv=window.visualViewport;if(vv)vv.addEventListener(\"resize\",update);return()=>{window.removeEventListener(\"resize\",update);window.removeEventListener(\"scroll\",update,true);if(vv)vv.removeEventListener(\"resize\",update);};},[open,suggestions.length]);function fetchSuggestions(text){const g=window.google;if(!ready||!g?.maps?.places?.AutocompleteSuggestion||text.trim().length<3){setSuggestions([]);return;}g.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions({input:text,region:\"gb\",includedRegionCodes:[\"gb\"]}).then(res=>{setSuggestions(res.suggestions||[]);setOpen(true);}).catch(()=>setSuggestions([]));}function onChange(e){const t=e.target.value;setValue(t);clearTimeout(timer.current);timer.current=setTimeout(()=>fetchSuggestions(t),250);}function go(address){const a=(address||value).trim();if(!a)return;window.location.href=targetPath+\"?address=\"+encodeURIComponent(a);}const list=open&&suggestions.length>0&&rect?/*#__PURE__*/_jsx(\"div\",{ref:dropRef,style:{position:\"absolute\",top:rect.top+6,left:rect.left,width:rect.width,maxHeight:280,overflowY:\"auto\",background:\"#FFFFFF\",border:\"1.5px solid #EBE6E9\",borderRadius:14,boxShadow:\"0 10px 30px rgba(54,0,36,0.14)\",zIndex:2147483e3,fontFamily:FONT},children:suggestions.slice(0,5).map((s,i)=>{const text=s.placePrediction?.text?.text||s.placePrediction?.text||\"\";return /*#__PURE__*/_jsx(\"div\",{onMouseDown:async e=>{// Predictions leave the postcode off. Ask Google\n// for the address components of the place they\n// picked and append just the postcode to their\n// wording. We avoid Google's formattedAddress:\n// for a named building it returns a different\n// street address, which drops the building name.\ne.preventDefault();setValue(text);setOpen(false);let full=text;try{const place=s.placePrediction?.toPlace?.();if(place){await place.fetchFields({fields:[\"addressComponents\"]});const pc=(place.addressComponents||[]).find(c=>(c.types||[]).indexOf(\"postal_code\")>-1);const code=pc&&(pc.longText||pc.shortText);if(code&&text.toUpperCase().indexOf(code.toUpperCase())===-1){// Postcode before the country, the\n// way a UK address is written.\nconst m=text.match(/,\\s*(UK|United Kingdom)\\s*$/i);const base=m?text.slice(0,text.length-m[0].length):text;full=base+\" \"+code+(m?m[0]:\"\");}}}catch(err){}go(full);},style:{padding:\"12px 16px\",fontSize:14,lineHeight:1.4,color:PLUM,cursor:\"pointer\",borderTop:i?\"1px solid #F5F1F3\":\"none\",background:\"transparent\"},onMouseEnter:e=>e.currentTarget.style.background=LINEN,onMouseLeave:e=>e.currentTarget.style.background=\"transparent\",children:text},i);})}):null;return /*#__PURE__*/_jsxs(\"div\",{ref:boxRef,style:{position:\"relative\",width:\"100%\",fontFamily:FONT},children:[/*#__PURE__*/_jsxs(\"form\",{onSubmit:e=>{e.preventDefault();go(value);},style:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",columnGap:8,rowGap:10,background:\"#FFFFFF\",border:\"1.5px solid #EBE6E9\",borderRadius:narrow?20:999,padding:narrow?\"14px 16px\":\"6px 6px 6px 20px\",boxShadow:\"0 4px 18px rgba(54,0,36,0.10)\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsxs(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"none\",style:{flexShrink:0},children:[/*#__PURE__*/_jsx(\"path\",{d:\"M12 21s-7-5.6-7-11a7 7 0 1 1 14 0c0 5.4-7 11-7 11z\",stroke:CORAL,strokeWidth:\"2\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"10\",r:\"2.5\",stroke:CORAL,strokeWidth:\"2\"})]}),/*#__PURE__*/_jsx(\"input\",{value:value,onChange:onChange,onFocus:()=>suggestions.length&&setOpen(true),placeholder:placeholder,autoComplete:\"off\",style:{flex:1,minWidth:0,border:\"none\",outline:\"none\",fontSize:15,fontFamily:FONT,color:PLUM,background:\"transparent\"}}),/*#__PURE__*/_jsx(\"button\",{type:\"submit\",style:{flexShrink:0,width:narrow?\"100%\":\"auto\",background:buttonColor||CORAL,color:\"#FFFFFF\",border:\"none\",borderRadius:999,padding:\"12px 22px\",whiteSpace:\"nowrap\",boxSizing:\"border-box\",fontSize:15,fontWeight:600,fontFamily:FONT,cursor:\"pointer\"},children:buttonLabel})]}),typeof document!==\"undefined\"&&list?/*#__PURE__*/createPortal(list,document.body):null]});}addPropertyControls(AddressBar,{apiKey:{type:ControlType.String,title:\"Google API Key\",defaultValue:\"\"},placeholder:{type:ControlType.String,title:\"Placeholder\",defaultValue:\"Your property address or postcode\"},buttonLabel:{type:ControlType.String,title:\"Button\",defaultValue:\"Get Your Free Property Review\"},buttonColor:{type:ControlType.Color,title:\"Button Colour\",defaultValue:CORAL},targetPath:{type:ControlType.String,title:\"Target Path\",defaultValue:\"/free-property-review\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AddressBar\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AddressBar.map"],"mappings":"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"}