{"version":3,"file":"js/67-c3f0abd3bca183266ced.js","mappings":"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","sources":["webpack://realm_app/./app/javascript/components/MarketingSite/Header/styles.module.scss?ad64","webpack://realm_app/./app/javascript/components/MarketingSite/Header/NavMobile.tsx","webpack://realm_app/./app/javascript/components/MarketingSite/Header/NavDesktop.tsx","webpack://realm_app/./app/javascript/components/MarketingSite/Header/index.tsx","webpack://realm_app/./app/javascript/pages/_serverRendered/CmsPage/Section/Components/PresentRichText/styles.module.scss?05e1","webpack://realm_app/./app/javascript/pages/_serverRendered/CmsPage/Section/Components/PresentRichText/index.tsx","webpack://realm_app/./app/javascript/pages/_serverRendered/CmsPage/Section/Components/PresentRichText/processPlaceholders.tsx","webpack://realm_app/./app/javascript/svgs/realm-business.tsx","webpack://realm_app/./app/javascript/utils/publicProperty.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"header\":\"FCMLzuuckj_YeBOrdDbl\",\"logo\":\"uL5LKwTT2Ayp2ldbTIng\",\"logoMobile\":\"efF35RsMVlPheQZsdWZO\",\"search\":\"tIfA4CKHjXW5XpMgwHzq\",\"searchInput\":\"GTJMoMWqwt1oJ28XdSqg\",\"searchButton\":\"sRDbTcG8JKfJ09Wf1p7D\",\"navDesktop\":\"kZCk6Z4I6TaT642h9IRc\",\"navMobile\":\"YDiJNoZSfQKLDl82nwHj\",\"navDesktopItem\":\"AB4rXFMXDmrUvumSMdMQ\",\"submenuButton\":\"Qch87DWtbroOqrwchZuf\",\"navDesktopItemActive\":\"xXCnlm2H4qZZHrHCkqhg\",\"navDesktopItemGetStarted\":\"dgWXEBqYLV0FFPRrIH5n\",\"navDesktopItemDownloadApp\":\"Y8W0ON8kaPzvNh9aLQKp\",\"submenuButtonActive\":\"KlVknjlTWSDMcFC54ben\",\"submenu\":\"Y00EoWTg6OGPlWzdeWX_\",\"submenuPanel\":\"IuJFONuwozx0He0s5VSA\",\"active\":\"bPDxAzdmwoeuEEY07muZ\",\"expanded\":\"I6Gx_gI21ZqGKOiVMNjk\",\"button\":\"CUdZ7FWsTJeeCtbAWB8G\",\"hamburger\":\"jEWZUbCWyK2hvGSzddwA\",\"navMobileHeader\":\"jcvFfS5Yp4KXpGOKvZ8a\",\"navMobileTitle\":\"h3H4VJwKSKojYaRulz2W\",\"navMobileGroup\":\"oUNSLUkpJREgfkiM3tZQ\",\"navMobileGroupItem\":\"Ja8AqQ8vHQBZdMjDpfxG\",\"arrow\":\"z5O0sa2ORQprD9ntid71\",\"navMobileSubtitle\":\"fBKYdIHyf0VQ4CTJZJ8v\",\"items\":\"VDxP3YbhAJ8BB0JN8BUw\",\"item\":\"Z47GxLZIOoZUUyaZwRNj\"};","import cx from 'classnames'\nimport { NavGroup, NavItems, NavItem } from './types'\nimport React, { FC, PropsWithChildren, useCallback, useState } from 'react'\n\nimport styles from './styles.module.scss'\n\ninterface NavMobileProps {\n navItems: NavItems\n}\n\nconst NavMobile: FC> = ({ children, navItems }) => {\n const [mobileNavigationOpen, setMobileNavigationOpen] = useState(false)\n\n const handleHamburgerClick = useCallback(() => {\n setMobileNavigationOpen(!mobileNavigationOpen)\n }, [setMobileNavigationOpen, mobileNavigationOpen])\n\n // Only show the mobile nav if there are options to be revealed.\n if (Object.values(navItems).length == 0) return null\n\n return (\n
\n
\n

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

\n \n
\n
{children}
\n \n
\n )\n}\n\nexport default NavMobile\n","import cx from 'classnames'\nimport { NavGroup, NavItem, NavItems } from './types'\nimport React, { FC } from 'react'\n\nimport styles from './styles.module.scss'\n\ninterface NavDesktopProps {\n activeNavItem?: NavItem | NavGroup\n navItems: NavItems\n}\n\nconst NavDesktop: FC = ({ activeNavItem, navItems }) => {\n const activeItem = activeNavItem as NavItem\n return (\n \n )\n}\n\nexport default NavDesktop\n","import cx from 'classnames'\nimport { NavGroup, NavItem, NavItems } from './types'\nimport NavMobile from 'components/MarketingSite/Header/NavMobile'\nimport NavDesktop from 'components/MarketingSite/Header/NavDesktop'\nimport React, { useMemo } from 'react'\nimport RealmLogo, {\n RealmLogoSmall,\n RealmLogoPride,\n RealmLogoSmallPride,\n} from 'components/MarketingSite/Header/RealmLogo'\nimport { onboardingPathWithPublicProperty } from 'utils/publicProperty'\nimport RealmBusiness from 'svgs/realm-business'\n\nimport styles from './styles.module.scss'\n\nfunction includeCampaignId(href: string, campaignId?: string): string {\n if (!campaignId) return href\n if (!window || !URLSearchParams) return href\n\n const parts = href.split('?')\n const searchParams = new URLSearchParams(parts[1] || '')\n searchParams.append('mc', campaignId)\n\n return `${parts[0]}?${searchParams.toString()}`\n}\n\nexport const calculateNavItems = (\n taxAssessor?: AttomTaxAssessor,\n showDownloadApp?: string,\n hideHowItWorksButton?: boolean,\n hideWhyRealmButton?: boolean,\n hideResourcesButton?: boolean,\n hideAboutButton?: boolean,\n hideSignInButton?: boolean,\n hideSignupButton?: boolean,\n campaignId?: string\n): NavItems => {\n return {\n ...(hideHowItWorksButton\n ? {}\n : {\n HowItWorks: {\n title: 'How It Works',\n href: '/how-it-works',\n type: 'item',\n },\n }),\n ...(hideWhyRealmButton\n ? {}\n : {\n WhyRealm: {\n title: 'Why Realm',\n href: '/why-realm',\n type: 'item',\n },\n }),\n ...(hideResourcesButton\n ? {}\n : {\n Resources: {\n title: 'Resources',\n href: '/resources/library',\n type: 'item',\n },\n }),\n ...(hideAboutButton\n ? {}\n : {\n About: {\n title: 'About',\n type: 'group',\n items: [\n { title: 'Our Story', href: '/about-us', type: 'item' },\n { title: 'Careers', href: '/about-us/careers', type: 'item' },\n { title: 'Join Our Vendor Network', href: '/vendor-signup', type: 'item' },\n ],\n },\n }),\n ...(hideSignInButton\n ? {}\n : {\n SignIn: {\n title: 'Sign in',\n type: 'group',\n items: [\n { title: 'As Homeowner', href: '/download-realm-app', type: 'item' },\n { title: 'As Vendor', href: '/vendors/sign_in', type: 'item' },\n ],\n },\n }),\n ...(showDownloadApp\n ? {\n DownloadApp: {\n title: 'Download the app',\n href: showDownloadApp,\n type: 'item',\n target: '_blank',\n },\n }\n : {}),\n ...(hideSignupButton\n ? {}\n : {\n GetStarted: {\n title: 'Get started',\n href: includeCampaignId(\n taxAssessor ? onboardingPathWithPublicProperty(taxAssessor) : '/onboarding',\n campaignId\n ),\n type: 'item',\n },\n }),\n }\n}\n\ninterface HeaderProps {\n navItems?: NavItems\n business?: boolean\n activeNavItem?: NavItem | NavGroup\n children?: React.ReactNode\n className?: string\n taxAssessor?: AttomTaxAssessor\n showDownloadApp?: string\n hideSignupButton?: boolean\n hideHowItWorksButton?: boolean\n hideWhyRealmButton?: boolean\n hideResourcesButton?: boolean\n hideAboutButton?: boolean\n hideSignInButton?: boolean\n linkLogo?: boolean\n logoClassName?: string\n campaignId?: string\n}\nconst Header = React.forwardRef(\n (\n {\n navItems,\n business,\n activeNavItem,\n children,\n className,\n taxAssessor,\n showDownloadApp,\n hideHowItWorksButton,\n hideWhyRealmButton,\n hideResourcesButton,\n hideAboutButton,\n hideSignInButton,\n hideSignupButton,\n linkLogo = true,\n logoClassName = 'tw:text-moss',\n campaignId,\n },\n ref\n ) => {\n navItems = useMemo(\n () =>\n navItems ||\n calculateNavItems(\n taxAssessor,\n showDownloadApp,\n hideHowItWorksButton,\n hideWhyRealmButton,\n hideResourcesButton,\n hideAboutButton,\n hideSignInButton,\n hideSignupButton,\n campaignId\n ),\n [\n navItems,\n taxAssessor,\n showDownloadApp,\n hideHowItWorksButton,\n hideWhyRealmButton,\n hideResourcesButton,\n hideAboutButton,\n hideSignInButton,\n hideSignupButton,\n campaignId,\n ]\n )\n\n const logo = useMemo(() => {\n return (\n <>\n {business ? (\n \n ) : process.env.PRIDE_MODE == 'true' ? (\n <>\n \n \n \n ) : (\n <>\n \n \n \n )}\n \n )\n }, [business, logoClassName])\n\n return (\n
\n {linkLogo ? {logo} : logo}\n {children != null ? children :
}\n \n {children}\n
\n )\n }\n)\nHeader.displayName = 'Header'\n\nexport default Header\n","// extracted by mini-css-extract-plugin\nexport default {\"presentRichText\":\"IiDaymagM08dOiDR8IDh\"};","import React, { FC, useMemo, CSSProperties } from 'react'\nimport { RichText, RichTextBlock } from 'prismic-reactjs'\nimport cx from 'classnames'\n\nimport { processPlaceholders, usePlaceholderReplacements } from './processPlaceholders'\n\nimport styles from './styles.module.scss'\n\nexport const hasTextPresent = (textData?: RichTextBlock[]): boolean => {\n return !!textData?.find((e) => (e.text?.length || 0) > 0)\n}\n\ninterface Props {\n id?: string\n className?: string\n style?: CSSProperties\n render: RichTextBlock[] | undefined\n replacementData?: Record\n}\n\nconst PresentRichText: FC = ({ className, style, id, render, replacementData, ...props }) => {\n const { replacements } = usePlaceholderReplacements(replacementData)\n const newRender = useMemo(() => processPlaceholders(render || [], replacements || {}), [render, replacements])\n\n if (!hasTextPresent(render)) {\n return null\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default PresentRichText\n","import React, { FC, PropsWithChildren, useContext } from 'react'\nimport { RichTextBlock, RichTextSpan, Link } from 'prismic-reactjs'\n\nexport const hasTextPresent = (textData?: RichTextBlock[]): boolean => {\n return !!textData?.find((e) => (e.text?.length || 0) > 0)\n}\n\ninterface Placeholder {\n key: string\n start: number\n placeholderLength: number\n}\n\ninterface Replacement extends Placeholder {\n value: string\n replacementLength: number\n}\n\nfunction cloneBlock(block: RichTextBlock): RichTextBlock & { text: string } {\n return {\n ...block,\n text: block.text || '',\n spans: block.spans?.map(cloneSpan),\n dimensions: block.dimensions ? { ...block.dimensions } : undefined,\n linkTo: cloneLink(block.linkTo),\n }\n}\n\nfunction cloneSpan(span: RichTextSpan): RichTextSpan {\n return {\n ...span,\n data: cloneLink(span.data),\n }\n}\n\nfunction cloneLink(link?: Link): Link | undefined {\n if (!link) return undefined\n return {\n ...link,\n tags: link.tags ? [...link.tags] : undefined,\n }\n}\n\n// Our placeholders are anything between {{ and }},\n// where everything inside is the key. Because the content to\n// be replaced is potentially different in size from that which is\n// replacing it, we need to extract and replace them as one.\n//\n// Pull out any placeholders and record where they are in the original\n// string\nfunction extractPlaceholders(text: string): Array {\n const placeholders: Array = []\n let open = ''\n let close = ''\n let key = ''\n let start = 0\n\n for (let i = 0; i < text.length; i++) {\n const c = text[i]\n if (open == '') {\n if (c == '{') {\n open = '{'\n start = i\n }\n } else if (open == '{') {\n if (c == '{') {\n open = '{{'\n } else {\n open = ''\n start = 0\n }\n } else if (open == '{{') {\n if (c == '}' && close == '}') {\n placeholders.push({\n key: key.trim(),\n start: start,\n placeholderLength: i - start + 1,\n })\n start = 0\n key = ''\n close = ''\n open = ''\n } else if (c == '}') {\n close = '}'\n } else if (close == '}') {\n // Premature }\n close = ''\n key += '}' + c\n } else {\n key += c\n }\n }\n }\n return placeholders\n}\n// From our data map, any placeholders that have replacement text\n// needs to be replaced. If it doesn't, replace it with empty string.\nfunction replacePlaceholders(placeholder: Array, data: Record): Array {\n return placeholder.map((placeholder) => {\n const value = data[placeholder.key]?.toString() || ''\n return {\n ...placeholder,\n value: value,\n replacementLength: value.length,\n }\n })\n}\n// Now go through and update the original text with our replacements.\nfunction updateText(text: string, replacements: Array): string {\n const parts: Array = []\n let lastEnd = 0\n replacements.forEach((replacement) => {\n const prefix = text.substring(lastEnd, replacement.start)\n lastEnd = replacement.start + replacement.placeholderLength\n parts.push(prefix, replacement.value)\n })\n return parts.concat([text.substring(lastEnd)]).join('')\n}\n// Prismic uses 'spans' of text to denote where text enhancements should go, like\n// bold and italics. Since our replacements probably shifted the length of the text,\n// the position of the spans' starts and ends could be off and need adjusting.\nfunction updateSpans(spans: Array, replacements: Array): Array {\n spans.forEach((span) => {\n // Adjust our span start by any replacement start that happened before our span start.\n span.start += replacements.reduce((sum, replacement) => {\n if (replacement.start >= span.start) return sum\n return sum - replacement.placeholderLength + replacement.replacementLength\n }, 0)\n // Adjust our span end by any replacement end that happened before our span end.\n span.end += replacements.reduce((sum, replacement) => {\n const replacementEnd = replacement.start + replacement.placeholderLength - 1\n if (replacementEnd >= span.end) return sum\n return sum - replacement.placeholderLength + replacement.replacementLength\n }, 0)\n })\n return spans\n}\n\nexport function processPlaceholders(\n textData: Array,\n data: Record\n): Array {\n return textData?.map((block) => {\n if (typeof block.text === 'undefined') return block\n const newBlock = cloneBlock(block)\n const placeholders: Array = extractPlaceholders(newBlock.text)\n if (placeholders.length == 0) return block\n\n const replacements: Array = replacePlaceholders(placeholders, data || {})\n\n newBlock.text = updateText(newBlock.text, replacements)\n if (typeof newBlock.spans !== 'undefined') {\n newBlock.spans = updateSpans(newBlock.spans, replacements)\n }\n return newBlock\n })\n}\n\nexport interface PlaceholderReplacementContextType {\n replacements?: Record\n}\nconst PlaceholderReplacementContext = React.createContext({\n replacements: undefined,\n})\n\nexport function usePlaceholderReplacements(\n additionalReplacements?: Record\n): PlaceholderReplacementContextType {\n const { replacements } = useContext(PlaceholderReplacementContext)\n return { replacements: { ...replacements, ...additionalReplacements } }\n}\n\ninterface Props {\n replacements?: Record\n}\n\nexport const PlaceholderReplacements: FC> = ({ replacements, children }) => {\n return (\n \n {children}\n \n )\n}\n","import React, { FC } from 'react'\n\ntype RealmBusinessProps = {\n className?: string\n}\n\nconst RealmBusiness: FC = ({ className }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default RealmBusiness\n","import { formatPublicPropertyAddress } from 'utils/formatting'\n\nexport const generateIndexedUrlPathForPublicProperty = (property: AttomTaxAssessor): string => {\n const state = property.propertyaddressstate.toLowerCase()\n const city = (property.propertyaddresscity || '').replace(/\\W+/g, '-').toLowerCase()\n const zip = property.propertyaddresszip\n const address = (property.propertyaddressfull || '').replace(/\\W+/g, '-').toLowerCase()\n const attomid = property.attom_id\n\n return `/${state}/${city}/${address}-${city}-${state}-${zip}/${attomid}`\n}\n\nexport const generateUrlPathForPublicProperty = (property: AttomTaxAssessor): string => {\n return `/public_properties/${property.attom_id}`\n}\n\nexport const onboardingPathWithPublicProperty = (publicProperty: AttomTaxAssessor): string => {\n return publicProperty ? `/onboarding?attom_id=${publicProperty.attom_id}` : '/onboarding'\n}\n\nexport const missingBedsAndBaths = (publicProperty: AttomTaxAssessor): boolean => {\n const bedroomsCount = parseInt(publicProperty?.bedroomscount || '0')\n let totalBathroomsCount = parseInt(publicProperty?.bathcount || '0')\n totalBathroomsCount += parseInt(publicProperty?.bathpartialcount || '0')\n\n return bedroomsCount == 0 && totalBathroomsCount == 0\n}\n\nexport const getPublicPropertyMapUrl = (\n publicProperty: AttomTaxAssessor | undefined,\n width = 1000,\n height = 1000\n): string | undefined => {\n if (!publicProperty) return\n // Mapbox static image API doesn't support searching by address. We don't want to geocode ourselves because $$, but google maps supports it at no additional cost\n const hasLatLng =\n publicProperty?.propertylatitude != null &&\n publicProperty.propertylatitude != '' &&\n publicProperty?.propertylongitude != null &&\n publicProperty.propertylongitude != ''\n const mapboxUrl = `https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/${publicProperty.propertylongitude},${publicProperty.propertylatitude},17,0/${width}x${height}@2x?access_token=pk.eyJ1Ijoicm9od2VpZ2VsIiwiYSI6ImNrYmg1YWh2YzAyMjkyem5yN2RsMmRpZXkifQ.STA87m4W37moWj2evrjymw`\n const googleMapsUrls = `https://maps.googleapis.com/maps/api/staticmap?center=${encodeURI(\n formatPublicPropertyAddress(publicProperty)\n )}&zoom=16&scale=2&maptype=satellite&size=${width}x${height}&key=AIzaSyDIABYI0DmyZHUfhoJxVXKDXJ_4znAEE8E`\n\n return hasLatLng ? mapboxUrl : googleMapsUrls\n}\n"],"names":["children","navItems","mobileNavigationOpen","setMobileNavigationOpen","useState","handleHamburgerClick","useCallback","Object","values","length","className","map","itemOrGroup","type","group","key","title","href","items","item","target","onClick","activeNavItem","activeItem","GetStarted","Dashboard","includes","DownloadApp","e","role","tabIndex","includeCampaignId","campaignId","window","URLSearchParams","parts","split","searchParams","append","toString","calculateNavItems","taxAssessor","showDownloadApp","hideHowItWorksButton","hideWhyRealmButton","hideResourcesButton","hideAboutButton","hideSignInButton","hideSignupButton","HowItWorks","WhyRealm","Resources","About","SignIn","Header","business","linkLogo","logoClassName","ref","useMemo","logo","RealmLogo","displayName","hasTextPresent","textData","find","text","style","id","render","replacementData","props","replacements","newRender","processPlaceholders","RichText","cloneSpan","span","data","cloneLink","link","tags","block","newBlock","spans","dimensions","linkTo","cloneBlock","placeholders","open","close","start","i","c","push","trim","placeholderLength","extractPlaceholders","placeholder","value","replacementLength","replacePlaceholders","lastEnd","forEach","replacement","prefix","substring","concat","join","updateText","reduce","sum","end","updateSpans","PlaceholderReplacementContext","usePlaceholderReplacements","additionalReplacements","useContext","PlaceholderReplacements","Provider","viewBox","fill","clipPath","d","fillRule","clipRule","fillOpacity","width","height","transform","generateIndexedUrlPathForPublicProperty","property","state","propertyaddressstate","toLowerCase","city","propertyaddresscity","replace","zip","propertyaddresszip","propertyaddressfull","attom_id","onboardingPathWithPublicProperty","publicProperty"],"sourceRoot":""}