{"version":3,"file":"js/1-8a189faeb9ad5389163a.js","mappings":"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","sources":["webpack://realm_app/./app/javascript/components/FullAddressInput.tsx","webpack://realm_app/./app/javascript/components/Input.module.scss?da82","webpack://realm_app/./app/javascript/components/Input.tsx","webpack://realm_app/./app/javascript/components/MarketingAndPropertyPages/Footer/HomepageLinks.module.scss?3ef2","webpack://realm_app/./app/javascript/components/MarketingAndPropertyPages/Footer/HomepageLinks.tsx","webpack://realm_app/./app/javascript/components/MarketingAndPropertyPages/Footer/styles.module.scss?4286","webpack://realm_app/./app/javascript/components/MarketingAndPropertyPages/Footer/index.tsx","webpack://realm_app/./app/javascript/components/MarketingSite/Footer/index.tsx","webpack://realm_app/./app/javascript/components/MarketingSite/Header/AddressAutocomplete/styles.module.scss?b069","webpack://realm_app/./app/javascript/components/MarketingSite/Header/AddressAutocomplete/index.tsx","webpack://realm_app/./app/javascript/non-rendering/PageLoad.tsx","webpack://realm_app/./app/javascript/pages/_serverRendered/Blog/shared/CustomEmbed.tsx","webpack://realm_app/./app/javascript/pages/_serverRendered/CmsPage/AddressAutocompleteField/styles.module.scss?2ce5","webpack://realm_app/./app/javascript/pages/_serverRendered/CmsPage/AddressAutocompleteField/index.tsx","webpack://realm_app/./app/javascript/pages/_serverRendered/Homepage/GetStarted/styles.module.scss?7174","webpack://realm_app/./app/javascript/pages/_serverRendered/Homepage/GetStarted/index.tsx","webpack://realm_app/./app/javascript/svgs/social/facebook.tsx","webpack://realm_app/./app/javascript/svgs/social/twitter.tsx"],"sourcesContent":["import React, { FC, useState, useEffect, useRef, useCallback, ForwardRefRenderFunction, forwardRef } from 'react'\n\nimport Input, { InputProps } from './Input'\n\nconst GOOGLE_MAPS_API_SCRIPT_ID = 'googleMapsApiScript'\nconst MAX_PREDICTION_INTERVAL = 500 // milliseconds\n\ninterface PredictionOptionProps {\n prediction: Prediction\n onClick: (prediction: Prediction) => void\n renderDescription?: (prediction: Prediction) => React.ReactNode\n}\n\nconst PredictionOption: FC = ({ onClick, prediction, renderDescription }) => {\n const handleClick = useCallback(() => {\n onClick(prediction)\n }, [onClick, prediction])\n\n const onItemKeyPress = useCallback(\n (event) => {\n if (event.keyCode === 13) handleClick()\n },\n [handleClick]\n )\n\n return (\n
  • \n
    \n {renderDescription ? renderDescription(prediction) : prediction.description}\n
    \n
  • \n )\n}\n\nexport interface Prediction {\n description: string\n placeId: string\n mainText?: string\n secondaryText?: string\n}\n\ninterface FullAddressInputProps extends Omit {\n // Called when one of the predictions is clicked\n onPredictionSelected: (prediction: Prediction | null) => void\n renderSubmitButton?: (onClick: (e: any) => void, disabled: boolean) => React.ReactNode\n renderDescription?: (prediction: Prediction) => React.ReactNode\n renderIcon?: () => React.ReactNode\n}\n\nconst FullAddressInput: ForwardRefRenderFunction = (\n {\n value,\n onChange,\n onPredictionSelected,\n renderSubmitButton,\n renderDescription,\n renderIcon,\n onFocus,\n onBlur,\n ...otherProps\n },\n ref\n) => {\n const [autocomplete, setAutocomplete] = useState(null)\n const [predictions, setPredictions] = useState>([])\n const [showPredictions, setShowPredictions] = useState(false)\n const nextPrediction = useRef(0)\n const predictionRequestQueued = useRef('')\n\n // We need to check for the presence of the Google Maps API, but because this\n // component can be server-rendered, first check for the existince of the window object\n let w\n if (typeof window !== 'undefined') {\n w = window as any\n }\n const placesApi = w?.google?.maps?.places\n\n // Google Maps API Script warmup,\n // Initialize the service\n useEffect(() => {\n let isDone = false\n const initializeService = () => {\n // Initialize the service.\n const newAutocomplete = new w.google.maps.places.AutocompleteService()\n isDone || setAutocomplete(newAutocomplete)\n }\n\n // Inject the script if it doesn't exist\n if (document.getElementById(GOOGLE_MAPS_API_SCRIPT_ID) == null) {\n const injectedScript = document.createElement('script')\n injectedScript.id = GOOGLE_MAPS_API_SCRIPT_ID\n const key = document.body.dataset.googleMapsApiKey\n injectedScript.src = `https://maps.googleapis.com/maps/api/js?key=${key}&libraries=places`\n injectedScript.defer = true\n\n document.body.appendChild(injectedScript)\n\n injectedScript.onload = initializeService\n } else if (placesApi) {\n // Initialize the service if the script has already loaded\n initializeService()\n }\n return () => {\n isDone = true\n }\n }, [w, placesApi])\n\n useEffect(() => {\n // Make sure we have what we need.\n if (!autocomplete || !value) {\n setPredictions([])\n return\n }\n\n let delayTimer: any\n\n const issueNextPrediction = () => {\n clearTimeout(delayTimer)\n delayTimer = null\n nextPrediction.current = 0\n\n // If we had another prediction request waiting, issue that.\n if (predictionRequestQueued.current) {\n const newV = predictionRequestQueued.current\n predictionRequestQueued.current = ''\n issuePredictionRequest(newV)\n }\n }\n\n const issuePredictionRequest = (v) => {\n nextPrediction.current = Date.now() + MAX_PREDICTION_INTERVAL\n // Begin a search\n autocomplete.getPlacePredictions(\n {\n input: v,\n types: ['address'],\n componentRestrictions: { country: 'us' },\n },\n (predictions: Array | null) => {\n const results = (predictions || []).map((p) => ({\n description: p.description,\n mainText: p.structured_formatting?.main_text,\n secondaryText: p.structured_formatting?.secondary_text,\n placeId: p.place_id,\n }))\n setPredictions(results)\n\n // We're 'done' with this prediction after our delay.\n delayTimer = setTimeout(issueNextPrediction, MAX_PREDICTION_INTERVAL)\n }\n )\n }\n\n // Only one prediction at a time please!\n const delay = nextPrediction.current - Date.now()\n if (delay > 0) {\n predictionRequestQueued.current = value\n delayTimer = setTimeout(issueNextPrediction, delay)\n } else {\n issuePredictionRequest(value)\n }\n return () => {\n if (delayTimer) clearTimeout(delayTimer)\n }\n }, [autocomplete, value])\n\n const handleChange = useCallback(\n (value: string) => {\n onPredictionSelected(null)\n onChange && onChange(value)\n },\n [onChange, onPredictionSelected]\n )\n\n const handleBlur = useCallback(\n (e) => {\n window.setTimeout(() => {\n setShowPredictions(false)\n if (onBlur) onBlur(e)\n }, 250)\n },\n [onBlur]\n )\n\n const handleFocus = useCallback(\n (event) => {\n setShowPredictions(true)\n if (onFocus) onFocus(event)\n },\n [onFocus]\n )\n\n const handleSubmitClick = useCallback(() => {\n if (predictions[0] != null) {\n onPredictionSelected(predictions[0])\n }\n }, [onPredictionSelected, predictions])\n\n return (\n <>\n 0 && (\n
      \n {predictions.map((prediction) => (\n \n ))}\n
    \n )\n }\n {...otherProps}\n ref={ref}\n autoComplete=\"off\"\n />\n {renderIcon && renderIcon()}\n {renderSubmitButton &&\n renderSubmitButton(\n handleSubmitClick,\n (value && value.length > 0 && predictions.length < 1) || !!otherProps.readOnly\n )}\n \n )\n}\n\nexport default forwardRef(FullAddressInput)\n","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"X15djCOnT79OGHzfFlrA\",\"currency\":\"GbOtBDme7wYtCAVdQjao\"};","import React, { forwardRef, ForwardRefRenderFunction, ReactNode, useCallback } from 'react'\nimport cx from 'classnames'\n\nimport styles from './Input.module.scss'\n\nexport interface InputProps {\n autoComplete?: string\n autoFocus?: boolean\n id?: string\n value?: string\n onChange?: (value: string) => void\n onRawChange?: (event: React.ChangeEvent) => void\n onFocus?: (event: React.FocusEvent) => void\n onBlur?: (event: React.FocusEvent) => void\n onKeyDown?: (event: React.KeyboardEvent) => void\n placeholder?: string\n className?: string\n errors?: string[]\n name?: string\n inputMode?: 'text' | 'none' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\n helperText?: ReactNode\n readOnly?: boolean\n required?: boolean\n suffix?: ReactNode\n tag?: 'input' | 'textarea' // keyof JSX.IntrinsicElements\n transparent?: boolean\n type?: string\n label?: string\n list?: string\n optional?: boolean\n min?: number\n max?: number\n minLength?: number\n maxLength?: number\n showOptionalLabel?: boolean\n step?: string\n tooltip?: ReactNode\n disabled?: boolean\n}\n\nexport { styles }\n\nconst Input: ForwardRefRenderFunction = (\n {\n autoComplete,\n autoFocus,\n className,\n disabled,\n errors,\n helperText,\n id,\n label,\n name,\n onChange,\n onRawChange,\n onFocus,\n onBlur,\n onKeyDown,\n inputMode,\n placeholder,\n readOnly,\n required,\n suffix,\n tag: WrapperTag = 'input',\n type = 'text',\n value,\n list,\n optional,\n min,\n max,\n minLength,\n maxLength,\n showOptionalLabel = true,\n step,\n tooltip,\n },\n ref\n) => {\n const handleChange = useCallback(\n (e: React.ChangeEvent) => {\n onRawChange && onRawChange(e)\n onChange && onChange(e.target.value)\n },\n [onRawChange, onChange]\n )\n\n const wt = (\n \n )\n\n const wtAndSuffix = suffix ? (\n
    \n {wt}\n {suffix}\n
    \n ) : (\n wt\n )\n\n return (\n
    \n {label && (\n \n )}\n {tooltip}\n {errors && errors.length ? (\n <>\n {wtAndSuffix}\n
    \n
      \n {(errors || []).map((e, i) => (\n
    • {e}
    • \n ))}\n
    \n
    \n \n ) : (\n wtAndSuffix\n )}\n {helperText}\n
    \n )\n}\n\nexport default forwardRef(Input)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"x8GoorkGFRcHbRVka0lA\",\"brand\":\"jbxzNSGqRXzqpC1aRttw\",\"logo\":\"yd0W0D_bY8vmjy3Ob07L\",\"logoDesktop\":\"Lg5_GIYNLHaZMdLHxb4h\",\"links\":\"vRL9oHhwl4jCvd4iSx3A\",\"linkGroup\":\"wDlCOLdT8FAWsXZU0JF5\",\"callToAction\":\"ZW7ByfzYmclM8lDNCtQ2\",\"disabled\":\"vPMtaDKgiz7hiMqAZFCD\",\"qrCode\":\"T0_6XxK1gvmftvNhq0js\"};","import RealmLogo, { RealmLogoSmall } from 'components/MarketingSite/Header/RealmLogo'\nimport React, { FC } from 'react'\nimport QRCode from 'react-qr-code'\n\nimport styles from './HomepageLinks.module.scss'\n\nconst HomepageLinks: FC = () => (\n
    \n
    \n
    \n \n \n
    \n

    {'Get the most out of your biggest asset: your home'}

    \n
    \n
    \n \n \n
    \n
    {'Download The App'}
    \n

    {'Get project price estimates, track your home value, and see neighborhood insights'}

    \n\n \n {'Download The App'}\n \n
    \n \n
    \n
    \n
    \n
    \n)\n\nexport default HomepageLinks\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"F8joQZ7Q1dc6NQ3RaJD7\",\"hr\":\"h2nLLl8Tj6lr_0FO68o6\",\"container\":\"wbeslzoK6jDxa2PVbaRq\",\"terms\":\"QF5eJrLnNqObpjAdLv47\",\"social\":\"aaRaiTwsvtB7m7Bucxnr\"};","import React, { FC, PropsWithChildren } from 'react'\n\nimport styles from './styles.module.scss'\n\nexport const FooterContainer: FC = ({ children }) => (\n
    {children}
    \n)\n\nexport const Hr: FC = () =>
    \n\nexport const SocialLinks: FC = () => (\n
    \n \n \n
    \n)\n","import React, { FC } from 'react'\nimport { FooterContainer, Hr, SocialLinks } from 'components/MarketingAndPropertyPages/Footer'\nimport HomepageLinks from 'components/MarketingAndPropertyPages/Footer/HomepageLinks'\n\nconst Footer: FC = () => (\n \n
    \n \n \n
    \n)\n\nexport default Footer\n","// extracted by mini-css-extract-plugin\nexport default {\"search\":\"e5X8RwqElyjCNPwSCn1d\"};","import FullAddressInput, { Prediction } from 'components/FullAddressInput'\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react'\nimport { track } from 'utils/analytics'\nimport cx from 'classnames'\n\nimport styles from './styles.module.scss'\n\nexport type { Prediction }\n\ninterface AddressAutocompleteProps {\n className?: string\n onPredictionSelected?: (queryParams: Record) => void\n placeholder?: string | Array\n positionLabel: string\n renderSubmitButton?: (onClick: (e: any) => void, disabled: boolean) => React.ReactNode\n renderPredictionDescription?: (prediction: Prediction) => React.ReactNode\n renderIcon?: () => React.ReactNode\n variant?: string\n readOnly?: boolean\n onFocus?: (event: React.FocusEvent, isMobile: boolean) => void\n}\n\nconst AddressAutocomplete: FC = ({\n className,\n onPredictionSelected,\n placeholder,\n positionLabel,\n renderSubmitButton,\n renderPredictionDescription,\n renderIcon,\n variant,\n readOnly,\n onFocus,\n}) => {\n const [inputValue, setInputValue] = useState('')\n const [isMobile, setIsMobile] = useState(false)\n\n const handlePredictionSelected = useCallback(\n async (prediction: Prediction) => {\n if (!prediction) return\n const queryParams = {\n description: prediction.description,\n place_id: prediction.placeId,\n }\n if (new URLSearchParams(window.location.search).has('mc')) {\n // Forward on marketing campaign id.\n queryParams['mc'] = new URLSearchParams(window.location.search).get('mc')\n }\n if (variant != null) {\n queryParams['variant'] = variant\n } else if (window.location.pathname == '/l/giveaway') {\n queryParams['variant'] = 'sign_up'\n } else if (window.location.pathname !== '/l/project_max' && queryParams['variant'] !== 'compare') {\n queryParams['variant'] = 'onboarding-2-0'\n }\n // For now, force all valid onboarding flows that have a property, through\n // camv1\n queryParams['flow'] = 'camv1'\n\n const trackingOpts: { variant: string; flow?: string } = { variant: queryParams['variant'] }\n if (queryParams['flow']) trackingOpts.flow = queryParams['flow']\n await track('address selected', trackingOpts)\n if (onPredictionSelected) {\n onPredictionSelected(queryParams)\n } else {\n const queryString = new URLSearchParams(queryParams).toString()\n window.location.href = `/google_places/search?${queryString}`\n }\n },\n [onPredictionSelected, variant]\n )\n\n const handleFocus = useCallback(\n (event) => {\n if (onFocus) onFocus(event, isMobile)\n },\n [onFocus, isMobile]\n )\n\n const isDone = useRef(false)\n useEffect(() => {\n if (inputValue.length > 0 && !isDone.current) {\n isDone.current = true\n track('address start typing', { position: positionLabel })\n }\n }, [inputValue, positionLabel])\n\n useEffect(() => {\n if (!window) return\n\n function handleResize() {\n setIsMobile(window.innerWidth < 640)\n }\n\n window.addEventListener('resize', handleResize)\n handleResize()\n return () => {\n if (!window) return\n\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n let finalPlaceholder = 'Enter an address to get started'\n if (placeholder) {\n if (typeof placeholder === 'string') {\n finalPlaceholder = placeholder\n } else if (placeholder instanceof Array) {\n if (placeholder.length > 1 && isMobile) finalPlaceholder = placeholder[1]\n else if (placeholder.length > 0) finalPlaceholder = placeholder[0]\n }\n }\n\n return (\n \n )\n}\n\nexport default AddressAutocomplete\n","import { useEffect, FC } from 'react'\n\nimport { trackPage } from 'utils/analyticsV2'\n\ninterface Props {\n name?: string\n onLoadComplete?: () => void\n}\nconst PageLoad: FC = ({ name, onLoadComplete }) => {\n useEffect(() => {\n let cancel = false\n const load = async () => {\n let pageName = name\n pageName ||= document.body.dataset.pageName\n pageName ||= document.location.pathname.replace(/^[/]/, '').replace(/[_/]/g, '-')\n await trackPage(pageName)\n if (cancel) return\n if (onLoadComplete) onLoadComplete()\n }\n load()\n return () => {\n cancel = true\n }\n }, [name, onLoadComplete])\n\n return null\n}\n\nexport default PageLoad\n","import React, { FC } from 'react'\n\nimport { CustomEmbedSlice } from 'pages/_serverRendered/Blog/types'\n\ninterface CustomEmbedProps {\n slice: CustomEmbedSlice\n}\n\nconst CustomEmbed: FC = ({ slice }) => {\n return (\n e.text).join(' ') }}\n />\n )\n}\n\nexport default CustomEmbed\n","// extracted by mini-css-extract-plugin\nexport default {\"addressAutoCompleteField\":\"LRsFh_V4iD6lyAmkSybp\",\"search\":\"OhbNLQiG2QWo9hnE0prf\",\"button\":\"ooBlH7MC0veC1F97zSqe\",\"labelLong\":\"pyDREaSP2N0EozLdPR82\",\"labelShort\":\"pYeAWevUPcv9kStYnUag\"};","import React, { FC, useCallback, useEffect, useRef, useState } from 'react'\nimport cx from 'classnames'\n\nimport AddressAutocomplete from 'components/MarketingSite/Header/AddressAutocomplete'\n\nimport styles from './styles.module.scss'\n\ninterface AddressAutocompleteFieldProps {\n className?: string\n containerClassName?: string\n onInputVisibleChange?: (boolean) => void\n buttonLabelLong?: string\n buttonLabelShort?: string\n showButton?: boolean\n onPredictionSelected?: (queryParams: Record) => void\n variant?: string\n placeholder?: string\n positionLabel: string\n readOnly?: boolean\n onRequestHeaderHeight?: () => number | undefined\n scrollToFocus?: boolean\n}\n\nexport const AddressAutocompleteField: FC = ({\n className,\n containerClassName,\n onInputVisibleChange,\n buttonLabelLong,\n buttonLabelShort,\n showButton,\n onPredictionSelected,\n readOnly,\n variant,\n placeholder,\n positionLabel,\n onRequestHeaderHeight,\n scrollToFocus,\n}) => {\n const [scrollCheck, setScrollCheck] = useState(null)\n const renderSubmitButton = useCallback(\n (onClick: (e: any) => void, disabled: boolean) => (\n \n {buttonLabelLong ?? 'Get my property analysis'}\n {buttonLabelShort ?? 'Get started'}\n \n ),\n [buttonLabelShort, buttonLabelLong]\n )\n\n const ref = useRef(null)\n\n useEffect(() => {\n if (onInputVisibleChange != null) {\n if ('IntersectionObserver' in window) {\n const observer = new IntersectionObserver((entries) =>\n entries.forEach((entry) => {\n onInputVisibleChange(entry.isIntersecting)\n })\n )\n if (ref.current) observer.observe(ref.current)\n\n return () => observer?.disconnect()\n } else {\n onInputVisibleChange(true)\n }\n }\n }, [onInputVisibleChange])\n\n const handleFocus = useCallback((event: React.FocusEvent, isMobile) => {\n if (!isMobile) return\n setScrollCheck(event.target as HTMLInputElement)\n }, [])\n\n useEffect(() => {\n if (!scrollCheck) return\n let cancel = false\n let lastPosition: number | null = null\n let lastHeight: number | null = null\n let lastCheck = false\n let request\n const scrollCheckFn = () => {\n if (cancel) return\n if (lastPosition != window.pageYOffset || lastHeight != window.innerHeight) {\n lastPosition = window.pageYOffset\n lastHeight = window.innerHeight\n lastCheck = false\n // We're not done scrolling/resizing, so continue checking.\n request = setTimeout(scrollCheckFn, 100)\n } else if (!lastCheck) {\n lastCheck = true\n // We appear to be done, but give one last grace period.\n request = setTimeout(scrollCheckFn, 500)\n } else {\n // We can now scroll the user to where we want them.\n const headerHeight = onRequestHeaderHeight ? onRequestHeaderHeight() || 0 : 0\n const extra = -4 // DIRTY HACK\n const scrollTo = extra + scrollCheck.getBoundingClientRect().top - headerHeight + window.pageYOffset\n window.scrollTo(0, scrollTo)\n setScrollCheck(null)\n }\n }\n request = setTimeout(scrollCheckFn, 100)\n return () => {\n cancel = true\n clearTimeout(request)\n }\n }, [scrollCheck, onRequestHeaderHeight])\n\n return (\n
    \n \n
    \n )\n}\n\nexport default AddressAutocompleteField\n","// extracted by mini-css-extract-plugin\nexport default {\"getStarted\":\"MKR4VxMIFVx03n7ZtUxM\",\"getStartedPlaceholder\":\"TeXF1YdtrCRiB9HS1gYK\",\"description\":\"emYeGi0G1QExJgNV8yG2\",\"title\":\"E_h0nFOcQ9GTs8WvzHgX\",\"field\":\"nNnc_t4fUcPnKY8phVuQ\"};","import React, { FC } from 'react'\n\nimport AddressAutocompleteField from 'pages/_serverRendered/CmsPage/AddressAutocompleteField'\n\nimport classnames from 'classnames'\nimport styles from './styles.module.scss'\n\ninterface Props {\n className?: string\n id?: string\n title?: string\n description?: string\n variant?: string\n onRequestHeaderHeight?: () => number | undefined\n}\n\nconst GetStarted: FC = ({ className, id, title, description, variant, onRequestHeaderHeight }) => {\n return (\n
    \n
    \n

    \n {title != null ? (\n title\n ) : (\n <>\n {/* eslint-disable-next-line react/jsx-no-literals */}\n {'Get your Realm'} {'Score'}\n \n )}\n

    \n

    \n {description != null ? description : 'We currently cover most standalone, single family homes.'}\n

    \n
    \n \n
    \n )\n}\n\nexport default GetStarted\n","import React, { FC } from 'react'\n\ninterface Props {\n className?: string\n}\n\nconst Svg: FC = ({ className }) => (\n \n \n \n)\n\nexport default Svg\n","import React, { FC } from 'react'\n\ninterface Props {\n className?: string\n}\n\nconst Svg: FC = ({ className }) => (\n \n \n \n)\n\nexport default Svg\n"],"names":["GOOGLE_MAPS_API_SCRIPT_ID","PredictionOption","onClick","prediction","renderDescription","handleClick","useCallback","onItemKeyPress","event","keyCode","role","tabIndex","onKeyPress","description","forwardRef","ref","_a","_b","value","onChange","onPredictionSelected","renderSubmitButton","renderIcon","onFocus","onBlur","otherProps","autocomplete","setAutocomplete","useState","predictions","setPredictions","showPredictions","setShowPredictions","nextPrediction","useRef","predictionRequestQueued","w","window","placesApi","google","maps","places","useEffect","isDone","initializeService","newAutocomplete","AutocompleteService","document","getElementById","injectedScript","createElement","id","key","body","dataset","googleMapsApiKey","src","defer","appendChild","onload","delayTimer","issueNextPrediction","clearTimeout","current","newV","issuePredictionRequest","v","Date","now","getPlacePredictions","input","types","componentRestrictions","country","results","map","p","mainText","structured_formatting","main_text","secondaryText","secondary_text","placeId","place_id","setTimeout","delay","handleChange","handleBlur","e","handleFocus","handleSubmitClick","helperText","length","autoComplete","readOnly","autoFocus","className","disabled","errors","label","name","onRawChange","onKeyDown","inputMode","placeholder","required","suffix","tag","WrapperTag","type","list","optional","min","max","minLength","maxLength","showOptionalLabel","step","tooltip","target","wt","wtAndSuffix","htmlFor","i","RealmLogo","href","rel","FooterContainer","children","footer","Hr","hr","SocialLinks","container","terms","copyright","getFullYear","social","positionLabel","renderPredictionDescription","variant","inputValue","setInputValue","isMobile","setIsMobile","handlePredictionSelected","queryParams","URLSearchParams","location","search","has","get","pathname","trackingOpts","flow","queryString","toString","position","addEventListener","handleResize","removeEventListener","innerWidth","finalPlaceholder","Array","FullAddressInput","onLoadComplete","cancel","pageName","replace","slice","dangerouslySetInnerHTML","__html","primary","html_code","text","join","AddressAutocompleteField","containerClassName","onInputVisibleChange","buttonLabelLong","buttonLabelShort","showButton","onRequestHeaderHeight","scrollToFocus","scrollCheck","setScrollCheck","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","observe","disconnect","request","lastPosition","lastHeight","lastCheck","scrollCheckFn","pageYOffset","innerHeight","headerHeight","scrollTo","getBoundingClientRect","top","AddressAutocomplete","A","title","xmlns","width","height","viewBox","fill","d"],"sourceRoot":""}