{"version":3,"file":"js/504-ab0f952192f5528a3638.js","mappings":"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","sources":["webpack://realm_app/./app/javascript/apis/googlePlaces.ts","webpack://realm_app/./app/javascript/components/Alert.module.scss?7171","webpack://realm_app/./app/javascript/components/Alert.tsx","webpack://realm_app/./app/javascript/components/Checkbox.module.scss?2d9f","webpack://realm_app/./app/javascript/components/Checkbox.tsx","webpack://realm_app/./app/javascript/components/Core/CoreButton.module.scss?f351","webpack://realm_app/./app/javascript/components/Core/CoreButton.tsx","webpack://realm_app/./app/javascript/components/Core/CoreComboBox.tsx","webpack://realm_app/./app/javascript/components/Core/useFormattedPhoneInput.ts","webpack://realm_app/./app/javascript/components/Core/CoreInput/Input.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/MoneyInput.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/PercentInput.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/TextArea.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/Select.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/FancySelect.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/Address.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/Check.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/Radio.tsx","webpack://realm_app/./app/javascript/components/Core/CoreInput/index.tsx","webpack://realm_app/./app/javascript/components/Core/CoreList.module.scss?ea8c","webpack://realm_app/./app/javascript/components/Core/CoreList.tsx","webpack://realm_app/./app/javascript/components/Core/CoreText.module.scss?89a9","webpack://realm_app/./app/javascript/components/Core/CoreText.tsx","webpack://realm_app/./app/javascript/components/ImageWithBackup.module.scss?f04b","webpack://realm_app/./app/javascript/components/ImageWithBackup.tsx","webpack://realm_app/./app/javascript/components/PageTitle.tsx","webpack://realm_app/./app/javascript/components/Spinner.module.scss?8bdf","webpack://realm_app/./app/javascript/components/Spinner.tsx","webpack://realm_app/./app/javascript/components/StreetViewImage.tsx","webpack://realm_app/./app/javascript/layouts/components/GlobalAlert.module.scss?8103","webpack://realm_app/./app/javascript/layouts/components/GlobalAlert.tsx","webpack://realm_app/./app/javascript/non-rendering/useRailsFlash.ts","webpack://realm_app/./app/javascript/recoil/alert.ts","webpack://realm_app/./app/javascript/svgs/expand-more.tsx","webpack://realm_app/./app/javascript/svgs/property-plan/check.tsx","webpack://realm_app/./app/javascript/svgs/spinner.tsx","webpack://realm_app/./app/javascript/utils/fetch.ts","webpack://realm_app/./app/javascript/utils/property.ts","webpack://realm_app/./app/javascript/components/Core/CoreInput/styles.module.scss?a84f"],"sourcesContent":["import { PublicPropertyData } from 'recoil/onboarding'\nimport { getJSON } from 'utils/fetch'\n\ntype GooglePlacesSuccessResult = {\n public_property_data: PublicPropertyData\n public_property_path: string\n unavailable: false | undefined\n marketplace: boolean\n address: string\n place_id: string\n}\n\nexport type GooglePlacesUnavailableResult = {\n r_query: {\n place_id: string\n id?: string\n }\n unavailable: true\n public_property_path?: string\n suggestions: AttomTaxAssessor[]\n marketplace?: boolean\n address?: string\n}\n\nexport type GooglePlacesSearchResult = { marketplace: boolean; address: string } & (\n | GooglePlacesSuccessResult\n | GooglePlacesUnavailableResult\n)\n\ntype GooglePlacesQueryByAttomId = {\n placeId?: undefined\n queryString?: undefined\n attomId: string\n}\n\ntype GooglePlacesQueryByPlaceId = {\n placeId: string\n queryString?: undefined\n attomId?: undefined\n}\n\ntype GooglePlacesQueryByQueryString = {\n placeId?: undefined\n queryString: string\n attomId?: undefined\n}\n\ntype GooglePlacesQuery = GooglePlacesQueryByAttomId | GooglePlacesQueryByPlaceId | GooglePlacesQueryByQueryString\n\nexport const searchGooglePlaces = async (\n query: GooglePlacesQuery,\n signal?: AbortSignal\n): Promise => {\n const url = query.placeId\n ? `/google_places/search?place_id=${query.placeId}&body=1&cpp_extra=1`\n : query.attomId\n ? `/google_places/search?attom_id=${query.attomId}&body=1&cpp_extra=1`\n : `/google_places/search?${query.queryString}&body=1&cpp_extra=1`\n\n return await getJSON(url, { signal })\n}\n\nexport type GooglePlacesAutocompleteResult = {\n items: { address: string; place_id: string }[]\n}\nexport const autocompleteGooglePlaces = async (query: string): Promise => {\n return await getJSON(`/google_places/autocomplete?query=${query}`)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"alert\":\"RKypguuWJjHsENbIUCzW\",\"alert-error\":\"nYR71WI0UG48HO1qREWf\",\"alert-warning\":\"OntLAMQmBzgeyAEplII7\",\"alert-danger\":\"pSETjF3aPNuLemySY7Ae\",\"alert-success\":\"ib0B1DWO46MS_354PIE1\"};","import React, { FC, PropsWithChildren } from 'react'\nimport { AlertType } from 'recoil/alert'\nimport cx from 'classnames'\n\nimport styles from './Alert.module.scss'\n\nexport interface AlertProps {\n type?: AlertType\n className?: string\n}\n\nexport const Alert: FC> = ({ className, children, type }) => {\n const altClass = `alert-${(type || 'ERROR').toLowerCase()}`\n return
{children}
\n}\n\nexport default Alert\n","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"hmZVnqv7ZWvvOw_2LVDP\",\"check\":\"WWHYKoOg_vIylJCoCYN7\"};","import React, { ForwardRefRenderFunction, InputHTMLAttributes, forwardRef } from 'react'\nimport cx from 'classnames'\n\nimport CheckImage from 'svgs/property-plan/check'\n\nimport styles from './Checkbox.module.scss'\n\nconst InnerCheckbox: ForwardRefRenderFunction> = (\n { className, ...others },\n ref\n) => {\n return (\n
\n \n \n
\n )\n}\n\nconst CheckBox = forwardRef(InnerCheckbox)\n\nexport default CheckBox\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"mOdzvhUbAJrDiJL0d9sZ\",\"iconWrapper\":\"KQFnUJGeTc_I0ybGDlSa\",\"left\":\"_0T5KVWeFlQ0UJ4Z0erH\",\"submit\":\"fCNtOnCuvfmrJzJ3q_SQ\",\"reset\":\"Dcnt7HGOuE0eTwCn_WVV\"};","import React, {\n ButtonHTMLAttributes,\n ForwardRefRenderFunction,\n ReactNode,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react'\nimport cx from 'classnames'\n\nimport styles from './CoreButton.module.scss'\n\nexport type CoreButtonKind =\n | 'primary'\n | 'significant'\n | 'secondary'\n | 'tertiary'\n | 'disabled'\n | 'ghost'\n | 'negative'\n | 'inverted'\n\ninterface ButtonProps extends ButtonHTMLAttributes {\n text?: string\n size?: 's' | 'm' | 'l' | 'xl'\n kind?: CoreButtonKind\n icon?: ReactNode\n iconAlignment?: 'left' | 'center'\n}\n\nconst CoreButton: ForwardRefRenderFunction = (\n { text, icon, type = 'button', size = 'l', kind = 'primary', className, onClick, disabled, iconAlignment, ...rest },\n ref\n) => {\n const handleClick = useCallback(\n (event) => {\n if (disabled) {\n event.preventDefault()\n return false\n }\n\n return onClick?.(event)\n },\n [disabled, onClick]\n )\n\n const iconClass = useMemo(() => {\n const alignment = iconAlignment && text ? (iconAlignment == 'left' ? styles.left : styles.center) : styles.center\n\n return cx(styles.iconWrapper, alignment)\n }, [text, iconAlignment])\n\n return (\n \n {icon &&
{icon}
}\n {text &&
{text}
}\n \n )\n}\n\nexport default forwardRef(CoreButton)\n","import React, {\n useCallback,\n useEffect,\n FocusEvent,\n useState,\n KeyboardEvent,\n ReactNode,\n forwardRef,\n useRef,\n} from 'react'\nimport { FloatingPortal, size, useDismiss, useFloating, useInteractions, autoUpdate } from '@floating-ui/react'\nimport type { ElementProps } from '@floating-ui/react'\nimport debounce from 'lodash.debounce'\nimport cx from 'classnames'\nimport CoreInput from 'components/Core/CoreInput'\nimport { InputProps } from 'components/Core/CoreInput/Input'\n\ntype MappedPrediction = {\n label?: string\n title: string\n subtitle?: string\n value: string\n}\n\nexport interface CoreComboBoxProps extends InputProps {\n onChangePrediction?: (prediction: T | undefined) => void\n right?: ReactNode\n queryMethod: (query: string) => T[] | Promise\n findMethod: (id: string) => (T | null) | Promise\n mapPrediction: (prediction: T) => MappedPrediction\n initialPredictions?: T[]\n showPredictionsImmediately?: boolean\n}\n\nfunction CoreComboBoxInner(\n {\n name,\n onChangePrediction,\n onBlur,\n right,\n queryMethod,\n mapPrediction,\n findMethod,\n className,\n defaultValue,\n initialPredictions,\n showPredictionsImmediately,\n ...rest\n }: CoreComboBoxProps,\n ref: React.Ref\n) {\n const [query, setQuery] = useState('')\n const [debouncedQuery, setDebouncedQuery] = useState('')\n const [selected, setSelected] = useState()\n const [predictions, setPredictions] = useState(initialPredictions || [])\n const [popoverOpen, setPopoverOpen] = useState(false)\n const [referenceWidth, setReferenceWidth] = useState()\n const [keyboardHover, setKeyboardHover] = useState()\n const [isMouseDown, setIsMouseDown] = useState(false)\n const readDefaultValue = useRef(false)\n\n const { context, x, y, refs, strategy, update } = useFloating({\n open: popoverOpen,\n onOpenChange: setPopoverOpen,\n placement: 'bottom',\n middleware: [\n size({\n apply({ rects }) {\n setReferenceWidth(rects.reference.width)\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n })\n\n const interactions = [useDismiss(context)].filter(Boolean) as ElementProps[]\n\n const { getReferenceProps, getFloatingProps } = useInteractions(interactions)\n\n const handleChangeText = useCallback((value: string) => {\n setQuery(value)\n setSelected(undefined)\n }, [])\n\n const handleMouseDown = useCallback(() => {\n setIsMouseDown(true)\n }, [])\n\n const handleClick = useCallback(() => {\n // skip this click when it was caused by a focus event\n if (!isMouseDown) return\n setPopoverOpen((oldPopoverOpen) => !oldPopoverOpen)\n }, [isMouseDown])\n\n const handleFocus = useCallback(() => {\n setIsMouseDown(false)\n setPopoverOpen(true)\n }, [])\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n e.stopPropagation()\n e.preventDefault()\n\n setPopoverOpen(false)\n if (!selected) setQuery('')\n onBlur?.(e)\n },\n [selected, onBlur]\n )\n\n const handleSelectPrediction = useCallback(\n (prediction: T) => () => {\n setSelected(prediction)\n setPopoverOpen(false)\n },\n []\n )\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (!predictions.length) return\n if (e.code === 'ArrowDown') {\n const next = keyboardHover === undefined ? 0 : Math.min(predictions.length - 1, keyboardHover + 1)\n setKeyboardHover(next)\n } else if (e.code === 'ArrowUp') {\n const next = keyboardHover === undefined ? predictions.length - 1 : Math.max(0, keyboardHover - 1)\n setKeyboardHover(next)\n } else if (e.code === 'Enter') {\n e.preventDefault()\n if (keyboardHover !== undefined) {\n handleSelectPrediction(predictions[keyboardHover])()\n setKeyboardHover(undefined)\n }\n }\n },\n [predictions, keyboardHover, handleSelectPrediction]\n )\n\n // setSelected based on defaultValue\n useEffect(() => {\n const _ = async () => {\n if (!defaultValue) return\n\n const value = await findMethod(defaultValue.toString())\n if (!value) return\n\n setSelected(value)\n }\n _()\n }, [defaultValue, findMethod])\n\n // update popover status when popoverOpen is set\n useEffect(() => {\n if (popoverOpen) update()\n }, [update, popoverOpen, referenceWidth])\n\n // debounced update on query changed\n useEffect(() => {\n const debouncedUpdate = debounce((value: string) => {\n setDebouncedQuery(value)\n }, 200)\n debouncedUpdate(query)\n\n return () => {\n debouncedUpdate.cancel()\n }\n }, [query])\n\n // call queryMethod on debouncedQuery changed\n useEffect(() => {\n if (debouncedQuery.length == 0 && !showPredictionsImmediately) {\n setPredictions(initialPredictions || [])\n return\n }\n const _ = async () => {\n try {\n const results = await Promise.resolve(queryMethod(debouncedQuery))\n setPredictions(results)\n } catch (e) {\n console.error(e)\n }\n }\n _()\n }, [debouncedQuery, initialPredictions, queryMethod, showPredictionsImmediately])\n\n // call onChangePrediction on selected changed\n useEffect(() => {\n onChangePrediction?.(selected)\n }, [selected, onChangePrediction])\n\n // clear query on selected changed\n useEffect(() => {\n if (selected) setQuery('')\n }, [selected])\n\n // clear selected on query changed\n useEffect(() => {\n if (query.length > 0) setSelected(undefined)\n }, [query.length])\n\n // setSelected based on rest.value, if not selected\n useEffect(() => {\n const id = rest.value\n if (!id || selected) return\n\n if (readDefaultValue.current) return\n else readDefaultValue.current = true\n\n const _ = async () => {\n try {\n const result = await Promise.resolve(findMethod(id.toString()))\n if (result) setSelected(result)\n } catch (e) {\n console.error(e)\n }\n }\n _()\n }, [selected, findMethod, rest.value])\n\n return (\n <>\n \n \n \n {!!right && (\n
\n {right}\n
\n )}\n \n \n {popoverOpen && (\n {\n e.preventDefault() // Prevent the mouse down event from blurring the input\n },\n })}\n >\n
\n {predictions.map((prediction, i) => {\n const isActive = i === keyboardHover\n const mapped = mapPrediction(prediction)\n return (\n \n
{mapped.title}
\n {mapped.subtitle &&
{mapped.subtitle}
}\n \n )\n })}\n
\n \n )}\n
\n \n )\n}\n\nexport default forwardRef(CoreComboBoxInner) as (props: CoreComboBoxProps) => React.ReactElement\n","import { ChangeEvent, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nfunction phoneFilter(rawNumber: string): string {\n return rawNumber.replace(/(^\\s*[+]\\s*1|\\s|\\D)/g, '')\n}\n\nexport function formatPhoneNumberValue(value?: string, forCursor = false): string {\n // Replace our current formatting\n let newValue = phoneFilter(value || '')\n\n const areaCode = newValue.substring(0, 3)\n const exchangeCode = newValue.substring(3, 6)\n const subNumber = newValue.substring(6, 10)\n // Ignore anything after 10.\n\n newValue = ''\n\n if (areaCode) {\n const close = areaCode.length == 3 && (exchangeCode.length > 0 || !forCursor) ? ')' : ''\n newValue += `(${areaCode}${close}`\n }\n if (exchangeCode) newValue += ` ${exchangeCode}`\n if (subNumber) newValue += ` - ${subNumber}`\n\n return newValue\n}\n\nfunction adjustCursor(rValue: string, oCursor: number | null): number | null {\n if (oCursor == null) return null\n\n return formatPhoneNumberValue(rValue.substring(0, oCursor), true).length\n}\n\nexport const useFormattedPhoneInput: (\n value: string,\n onChange: (event: ChangeEvent) => void,\n onChangeText: (value: string) => void\n) => {\n formattedValue: string\n ref: RefObject\n handlePhoneNumberChanged: (e: ChangeEvent) => void\n} = (value, onChange, onChangeText) => {\n const [position, setPosition] = useState(null)\n const ref = useRef(null)\n\n const handlePhoneNumberChanged = useCallback(\n (event: ChangeEvent) => {\n onChange(event)\n // Remember where our cursor was.\n setPosition(adjustCursor(event.target.value, event.target.selectionStart))\n // Filter out all but our 10 significant numbers\n onChangeText(phoneFilter(event.target.value).substring(0, 10))\n },\n [onChange, onChangeText]\n )\n\n useEffect(() => {\n if (!ref.current) return\n\n ref.current.setSelectionRange(position, position)\n }, [value, position])\n\n const formattedValue = useMemo(() => {\n return formatPhoneNumberValue(value)\n }, [value])\n\n return { formattedValue, ref, handlePhoneNumberChanged }\n}\n","import React, {\n ForwardRefRenderFunction,\n forwardRef,\n useCallback,\n useState,\n ChangeEvent,\n useImperativeHandle,\n useRef,\n} from 'react'\nimport cx from 'classnames'\nimport { formatPhoneNumberValue, useFormattedPhoneInput } from 'components/Core/useFormattedPhoneInput'\nimport styles from './styles.module.scss'\nimport { Wrapper, WrapperProps } from 'components/Core/CoreInput'\n\nconst InnerPhoneInput: ForwardRefRenderFunction<\n HTMLInputElement,\n { onChangeText?: (value: string) => void } & JSX.IntrinsicElements['input']\n> = ({ onChange, onChangeText, value, ...props }, forwardedRef) => {\n const [phoneValue, setPhoneValue] = useState(formatPhoneNumberValue(value ? String(value) : ''))\n\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n onChange?.(event)\n },\n [onChange]\n )\n\n const handleChangedText = useCallback(\n (value: string) => {\n setPhoneValue(value)\n onChangeText?.(value)\n },\n [onChangeText]\n )\n\n const handlePhoneReset = useCallback(() => {\n setPhoneValue('')\n onChangeText?.('undefined')\n }, [onChangeText])\n\n const { formattedValue, ref, handlePhoneNumberChanged } = useFormattedPhoneInput(\n (value || phoneValue)?.toString() || '',\n handleChange,\n handleChangedText\n )\n\n useImperativeHandle(forwardedRef, () => ref.current as HTMLInputElement)\n\n return (\n \n )\n}\n\nconst PhoneInput = forwardRef(InnerPhoneInput)\n\nexport type InputProps = WrapperProps & JSX.IntrinsicElements['input'] & { popOnClick?: boolean }\n\nconst Input: ForwardRefRenderFunction = (\n {\n value,\n hint,\n hintClassName,\n kind,\n className,\n onChange,\n onChangeText,\n id,\n label,\n placeholder,\n borderType,\n elementSize,\n showFieldRequired,\n spacing,\n popOnClick,\n ...props\n },\n ref\n) => {\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n onChange?.(event)\n onChangeText?.(event.target.value)\n },\n [onChange, onChangeText]\n )\n\n // Create a local ref for the input.\n const localInputRef = useRef(null)\n\n // Combine the forwarded ref and the local ref.\n useImperativeHandle(ref, () => localInputRef.current as HTMLInputElement)\n\n // Define a click handler for date inputs.\n const handleDateClick = useCallback(\n (e) => {\n if (localInputRef.current && popOnClick) {\n // If available, use the experimental .showPicker() method.\n if (typeof localInputRef.current.showPicker === 'function') {\n localInputRef.current.showPicker()\n } else {\n // Otherwise, focus the input (which may trigger the picker in some browsers).\n localInputRef.current.focus()\n }\n }\n\n if (props.onClick) props.onClick(e)\n },\n [props, popOnClick]\n )\n\n return (\n \n {props.type == 'tel' ? (\n \n ) : (\n \n )}\n \n )\n}\n\nexport default forwardRef(Input)\n","import React, { ForwardRefRenderFunction, forwardRef, useCallback, ChangeEvent, ForwardedRef } from 'react'\nimport MaskedInput, { Mask } from 'react-text-mask'\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask'\nimport cx from 'classnames'\nimport styles from './styles.module.scss'\nimport { Wrapper, WrapperProps } from 'components/Core/CoreInput'\n\n// https://github.com/text-mask/text-mask/tree/master/addons/#createnumbermask\nconst currencyMask: Mask = createNumberMask({ allowDecimal: true, allowLeadingZeroes: true })\n\nfunction mergeRefs(...refs: React.Ref[]): React.Ref {\n return (instance: T | null) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(instance)\n } else if (ref && 'current' in ref) {\n ;(ref as React.MutableRefObject).current = instance\n }\n })\n }\n}\n\nexport type MoneyInputProps = WrapperProps & JSX.IntrinsicElements['input']\n\nconst MoneyInput: ForwardRefRenderFunction = (\n {\n value,\n hint,\n hintClassName,\n kind,\n className,\n onChange,\n onChangeText,\n id,\n label,\n placeholder,\n borderType,\n elementSize,\n showFieldRequired,\n spacing = 'wide',\n ...props\n },\n ref\n) => {\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n onChange?.(event)\n onChangeText?.(event.target.value.replace(/[$,]/g, ''))\n },\n [onChange, onChangeText]\n )\n\n const renderInput = useCallback(\n (innerRef: ForwardedRef, props: JSX.IntrinsicElements['input']) => {\n const combinedref = mergeRefs(ref, innerRef)\n return \n },\n [ref]\n )\n\n return (\n \n \n \n )\n}\n\nexport default forwardRef(MoneyInput)\n","import React, { ForwardRefRenderFunction, forwardRef, useCallback, ChangeEvent, FocusEvent, ForwardedRef } from 'react'\nimport MaskedInput, { Mask } from 'react-text-mask'\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask'\nimport cx from 'classnames'\nimport styles from './styles.module.scss'\nimport { Wrapper, WrapperProps } from 'components/Core/CoreInput'\n\n// https://github.com/text-mask/text-mask/tree/master/addons/#createnumbermask\nconst percentMask: Mask = createNumberMask({\n decimalLimit: 0,\n integerLimit: 3,\n allowLeadingZeroes: true,\n prefix: '',\n suffix: '%',\n})\n\nfunction mergeRefs(...refs: React.Ref[]): React.Ref {\n return (instance: T | null) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(instance)\n } else if (ref && 'current' in ref) {\n ;(ref as React.MutableRefObject).current = instance\n }\n })\n }\n}\n\nexport type PercentInputProps = WrapperProps & JSX.IntrinsicElements['input']\n\nconst PercentInput: ForwardRefRenderFunction = (\n {\n value,\n hint,\n hintClassName,\n kind,\n className,\n onChange,\n onChangeText,\n id,\n label,\n placeholder,\n borderType,\n elementSize,\n showFieldRequired,\n spacing = 'wide',\n ...props\n },\n ref\n) => {\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n onChange?.(event)\n onChangeText?.(event.target.value.replace(/[%,]/g, ''))\n },\n [onChange, onChangeText]\n )\n\n const handleFocus = useCallback((event: FocusEvent) => {\n event.target.select()\n }, [])\n\n const renderInput = useCallback(\n (innerRef: ForwardedRef, props: JSX.IntrinsicElements['input']) => {\n const combinedref = mergeRefs(ref, innerRef)\n return \n },\n [ref]\n )\n\n return (\n \n \n \n )\n}\n\nexport default forwardRef(PercentInput)\n","import React, {\n ForwardRefRenderFunction,\n forwardRef,\n useCallback,\n FocusEvent,\n ChangeEvent,\n useImperativeHandle,\n useRef,\n} from 'react'\n\nimport cx from 'classnames'\n\nimport styles from './styles.module.scss'\nimport { Wrapper, WrapperProps } from 'components/Core/CoreInput'\n\ntype TextAreaProps = WrapperProps & JSX.IntrinsicElements['textarea'] & { autoResizeOnFocus?: boolean }\n\nconst TextArea: ForwardRefRenderFunction = (\n {\n hint,\n hintClassName,\n kind,\n className,\n onChange,\n onChangeText,\n rows: rowsProp,\n label,\n elementSize,\n placeholder,\n borderType,\n id,\n autoResizeOnFocus,\n showFieldRequired,\n spacing,\n ...props\n },\n ref\n) => {\n const internalRef = useRef(null)\n useImperativeHandle(ref, () => internalRef.current as HTMLTextAreaElement)\n const rows = rowsProp || 4\n\n const setAutoHeight = useCallback((element: HTMLTextAreaElement) => {\n element.style.height = 'auto'\n const computedStyle = window.getComputedStyle(element)\n const borderTopWidth = parseFloat(computedStyle.borderTopWidth)\n const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth)\n element.style.height = `${element.scrollHeight + borderTopWidth + borderBottomWidth}px`\n }, [])\n\n const removeHeight = useCallback((element) => {\n element.style.height = ''\n }, [])\n\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n if (autoResizeOnFocus) setAutoHeight(event.target)\n onChange?.(event)\n onChangeText?.(event.target.value)\n },\n [autoResizeOnFocus, setAutoHeight, onChange, onChangeText]\n )\n\n const handleFocus = useCallback(\n (event: FocusEvent) => {\n props.onFocus?.(event)\n if (autoResizeOnFocus) setAutoHeight(event.target)\n },\n [autoResizeOnFocus, setAutoHeight, props]\n )\n\n const handleBlur = useCallback(\n (event: FocusEvent) => {\n props.onBlur?.(event)\n if (autoResizeOnFocus) removeHeight(event.target)\n },\n [autoResizeOnFocus, props, removeHeight]\n )\n\n return (\n \n \n \n )\n}\n\nexport default forwardRef(TextArea)\n","import React, { ForwardRefRenderFunction, forwardRef, useCallback, ChangeEvent } from 'react'\nimport cx from 'classnames'\nimport styles from './styles.module.scss'\nimport ExpandMore from 'svgs/expand-more'\nimport { Wrapper, WrapperProps } from 'components/Core/CoreInput'\n\ntype SelectProps = WrapperProps & { allowBlank?: boolean; placeholder?: string } & JSX.IntrinsicElements['select']\n\n/** Renders a native select. For fancy rendered options, use */\nconst Select: ForwardRefRenderFunction = (\n {\n hint,\n hintClassName,\n kind,\n className,\n onChange,\n onChangeText,\n label,\n placeholder,\n id,\n allowBlank,\n children,\n borderType,\n elementSize,\n showFieldRequired,\n spacing = 'wide',\n ...props\n },\n ref\n) => {\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n onChange?.(event)\n onChangeText?.(event.target.value)\n },\n [onChange, onChangeText]\n )\n\n return (\n \n \n \n \n )\n}\n\nexport default forwardRef(Select)\n","import React, { KeyboardEvent, ReactNode, useCallback, useEffect, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\nimport cx from 'classnames'\nimport {\n FloatingPortal,\n FloatingFocusManager,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n autoUpdate,\n shift,\n limitShift,\n} from '@floating-ui/react'\nimport type { Placement } from '@floating-ui/react'\nimport RadioButtonChecked from '@mui/icons-material/RadioButtonChecked'\nimport RadioButtonUnchecked from '@mui/icons-material/RadioButtonUnchecked'\nimport ExpandMore from '@mui/icons-material/ExpandMore'\n\nexport type FancyOption = {\n value: V\n disabled?: boolean\n payload: T\n}\n\ninterface FancySelectProps {\n label?: string\n options: FancyOption[]\n renderOption?: (option: FancyOption) => ReactNode\n onChangeValue?: (value: V) => void\n dropDownPlacement?: Placement\n className?: string\n disabled?: boolean\n name?: string\n value?: V\n // multiple?: boolean // later we can support multiple: show checks instead of radios, manage multiple values\n required?: boolean\n title?: string\n}\n\n/** If you need a native select, use */\nfunction FancySelect({\n label,\n options,\n value,\n onChangeValue,\n dropDownPlacement = 'bottom-start',\n disabled,\n renderOption,\n className,\n ...rest\n}: FancySelectProps) {\n const [open, setOpen] = useState(false)\n const [highlightedOptionIndex, setHighlightedOptionIndex] = useState(null)\n const [minWidth, setMinWidth] = useState(null)\n\n const { context, x, y, refs, strategy } = useFloating({\n open,\n onOpenChange: disabled ? undefined : setOpen,\n placement: dropDownPlacement,\n whileElementsMounted: autoUpdate,\n middleware: [\n shift({\n crossAxis: true,\n limiter: limitShift(),\n padding: 24,\n }),\n ],\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([useClick(context), useDismiss(context)])\n\n useEffect(() => {\n const el = refs.domReference.current\n let observer: ResizeObserver\n if (el) {\n observer = new ResizeObserver(() => {\n setMinWidth(el.clientWidth)\n })\n observer.observe(el)\n }\n\n return () => {\n if (observer) {\n observer.disconnect()\n }\n }\n }, [refs])\n\n const handleClickOption = useCallback(\n (e) => () => {\n onChangeValue?.(e.value)\n setOpen(false)\n },\n [onChangeValue]\n )\n\n const findNextFocusableIndex = useCallback(\n (startIndex: number, step: number) => {\n let index = startIndex\n while (index >= 0 && index < options.length) {\n if (!options[index]?.disabled) return index\n index += step\n }\n return null\n },\n [options]\n )\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n event.preventDefault()\n\n if (options.length == 0) return\n if (event.code === 'ArrowDown') {\n const newHighlightedOptionIndex = findNextFocusableIndex(\n highlightedOptionIndex == null ? 0 : highlightedOptionIndex + 1,\n 1\n )\n setHighlightedOptionIndex(newHighlightedOptionIndex)\n } else if (event.code === 'ArrowUp') {\n const newHighlightedOptionIndex = findNextFocusableIndex(\n highlightedOptionIndex == null ? options.length - 1 : highlightedOptionIndex - 1,\n -1\n )\n setHighlightedOptionIndex(newHighlightedOptionIndex)\n } else if (event.code === 'Enter') {\n if (highlightedOptionIndex != null) {\n setHighlightedOptionIndex(null)\n onChangeValue?.(options[highlightedOptionIndex].value)\n setOpen(false)\n }\n } else if (event.code === 'Escape') {\n setHighlightedOptionIndex(null)\n setOpen(false)\n }\n },\n [options, findNextFocusableIndex, highlightedOptionIndex, onChangeValue]\n )\n\n const selectedOption = options.find((e) => e.value == value)\n const overlayStyle = {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n minWidth: minWidth != null ? `${minWidth}px` : undefined,\n }\n const buttonId = uuidv4()\n const listBoxId = uuidv4()\n\n return (\n <>\n {label ? (\n \n ) : null}\n \n {selectedOption ? (\n renderOption ? (\n renderOption(selectedOption)\n ) : (\n
{String(selectedOption.payload)}
\n )\n ) : (\n
{'Please select...'}
\n )}\n \n \n {open && (\n \n \n \n {options.map((e, i) => (\n \n
\n {renderOption ? (\n renderOption(e)\n ) : (\n
{String(e.payload)}
\n )}\n
\n {value == e.value && !e.disabled ? (\n \n ) : (\n \n )}\n \n ))}\n \n
\n
\n )}\n \n )\n}\n\nexport default FancySelect\n","import React, { forwardRef, useRef, useImperativeHandle, useCallback, ForwardRefRenderFunction } from 'react'\nimport { autocompleteGooglePlaces, searchGooglePlaces } from 'apis/googlePlaces'\nimport CoreComboBox, { CoreComboBoxProps } from 'components/Core/CoreComboBox'\n\ntype BaseAddressProps = Omit, 'queryMethod' | 'findMethod' | 'mapPrediction'> & {\n selectionStyle?: 'full-address' | 'first-line'\n formatValue?: (value: string) => string\n}\n\ntype AddressByPlaceIdProps = BaseAddressProps<{ address: string; place_id: string }> & {\n idField: 'placeId'\n}\n\ntype AddressByAddressProps = BaseAddressProps<{ address: string }> & {\n idField?: 'address'\n}\n\ntype AddressProps = AddressByPlaceIdProps | AddressByAddressProps\n\nconst Address: ForwardRefRenderFunction = (\n { idField = 'address', selectionStyle = 'first-line', formatValue, ...rest },\n ref\n) => {\n const internalRef = useRef(null)\n useImperativeHandle(ref, () => internalRef.current as HTMLInputElement, [])\n\n const handleFindAddress = useCallback((address: string) => {\n return { address }\n }, [])\n\n const handleAutocorrect = useCallback(async (query: string) => {\n const results = await autocompleteGooglePlaces(query)\n return results.items\n }, [])\n\n const handleSearchGooglePlaces = useCallback(async (value: string) => {\n const response = await searchGooglePlaces({ placeId: value })\n return { address: response.address, place_id: value }\n }, [])\n\n const mapPrediction = useCallback(\n ({ address, place_id }: { address: string; place_id?: string }) => {\n if (!address) return { title: '', subtitle: '', value: '' }\n const i = address.indexOf(',')\n const title = address.slice(0, i)\n const subtitle = address.slice(i + 2)\n let value = idField == 'address' ? address : place_id ?? ''\n if (formatValue) value = formatValue(value)\n\n return {\n title,\n subtitle,\n value,\n ...(selectionStyle == 'full-address'\n ? { label: address.split(', ').slice(0, -1).join(', ') }\n : { label: title }),\n }\n },\n [idField, selectionStyle, formatValue]\n )\n\n return idField === 'address' ? (\n \n ref={internalRef}\n queryMethod={handleAutocorrect}\n mapPrediction={mapPrediction}\n findMethod={handleFindAddress}\n {...(rest as AddressByAddressProps)}\n />\n ) : (\n \n ref={internalRef}\n queryMethod={handleAutocorrect}\n mapPrediction={mapPrediction}\n findMethod={handleSearchGooglePlaces}\n {...(rest as AddressByPlaceIdProps)}\n />\n )\n}\n\nexport default forwardRef(Address)\n","import React, { ForwardRefRenderFunction, InputHTMLAttributes, forwardRef } from 'react'\n\nimport CheckBox from '@mui/icons-material/CheckBox'\nimport CheckBoxOutlineBlank from '@mui/icons-material/CheckBoxOutlineBlank'\n\nconst Check: ForwardRefRenderFunction<\n HTMLInputElement,\n InputHTMLAttributes & { label: string; id: string; showFieldRequired?: boolean }\n> = ({ label, id, checked, showFieldRequired, ...props }, ref) => {\n return (\n
\n
\n \n {checked ? (\n \n ) : (\n \n )}\n
\n \n
\n )\n}\n\nexport default forwardRef(Check)\n","import React, { ForwardRefRenderFunction, InputHTMLAttributes, forwardRef } from 'react'\n\nimport RadioButtonChecked from '@mui/icons-material/RadioButtonChecked'\nimport RadioButtonUnchecked from '@mui/icons-material/RadioButtonUnchecked'\n\nconst Radio: ForwardRefRenderFunction<\n HTMLInputElement,\n InputHTMLAttributes & { label: string; id: string; showFieldRequired?: boolean }\n> = ({ label, id, checked, showFieldRequired, ...props }, ref) => {\n return (\n
\n
\n \n {checked ? (\n \n ) : (\n \n )}\n
\n \n
\n )\n}\n\nexport default forwardRef(Radio)\n","import React, { PropsWithChildren, FC } from 'react'\nimport cx from 'classnames'\nimport CoreText from '../CoreText'\nimport styles from './styles.module.scss'\nimport Input from './Input'\nimport MoneyInput from './MoneyInput'\nimport PercentInput from './PercentInput'\nimport TextArea from './TextArea'\nimport Select from './Select'\nimport FancySelect from './FancySelect'\nimport Address from './Address'\nimport Check from './Check'\nimport Radio from './Radio'\n\nexport interface WrapperProps {\n className?: string\n hint?: string\n hintClassName?: string\n onChangeText?: (value: string) => void\n kind?: 'enabled' | 'alert' | 'positive' | 'disabled'\n id?: string\n label?: string\n borderType?: 'bounded' | 'boundless'\n elementSize?: 'l' | 'xl'\n showFieldRequired?: boolean\n spacing?: 'tight' | 'wide'\n}\n\nexport const Wrapper: FC> = ({\n hint,\n hintClassName,\n className,\n kind = 'enabled',\n children,\n id,\n label,\n borderType = 'bounded',\n elementSize = 'xl',\n showFieldRequired = false,\n spacing = 'wide',\n}) => {\n return (\n <>\n \n
\n {children}\n \n
\n {hint && (\n \n {hint}\n \n )}\n \n \n )\n}\n\nconst CoreInput = {\n Text: Input,\n Money: MoneyInput,\n Percent: PercentInput,\n TextArea,\n Select,\n FancySelect,\n Address,\n Check,\n Radio,\n}\n\nexport default CoreInput\n","// extracted by mini-css-extract-plugin\nexport default {\"listWrapper\":\"F8DBd57r09d1TMxJ6dO3\",\"listItem\":\"oPUa3lbc9emmE_a3SNKM\",\"details\":\"HuhxzyT28nhyQGKPxRMN\",\"description\":\"Zsr6iHgzT8pf5MpcZdyA\",\"iconWrapper\":\"FNbHni_55X_WnBLa2Twi\",\"icon\":\"gZe5ecrR4fLvzEiyzIw7\",\"check\":\"qthB2F7MbN5ipr2O0SOO\"};","import React, { FC, KeyboardEvent, MouseEvent, PropsWithChildren, ReactNode, useCallback } from 'react'\nimport cx from 'classnames'\nimport Checkbox from 'components/Checkbox'\nimport CoreText from './CoreText'\n\nimport styles from './CoreList.module.scss'\n\ninterface CoreListWrapperProps {\n className?: string\n}\n\nconst CoreListWrapper: FC> = ({ className, children }) => {\n return
    {children}
\n}\n\ninterface CoreListItemProps {\n center?: ReactNode\n text?: string\n description?: string\n selected?: boolean\n onClick?: (e?: MouseEvent) => void\n right?: ReactNode\n divider?: ReactNode\n rightCheck?: boolean\n imageSrc?: string\n leftIcon?: ReactNode\n leftIconContained?: boolean\n rightIcon?: ReactNode\n className?: string\n textClassName?: string\n size?: 'xs' | 's' | 'l'\n border?: boolean\n title?: string\n id?: string\n}\n\nconst CoreListItem: FC = ({\n id,\n center,\n text,\n description,\n onClick,\n selected,\n right,\n divider,\n imageSrc,\n leftIcon,\n leftIconContained,\n rightCheck,\n rightIcon,\n className,\n textClassName,\n size = 'l',\n border,\n title,\n}) => {\n const handleKeyPress = useCallback(\n (e: KeyboardEvent) => {\n if (e.key == 'Enter' && onClick) onClick()\n },\n [onClick]\n )\n\n return (\n
  • \n \n {border &&
    }\n {imageSrc ? (\n \"\"\n ) : leftIcon ? (\n
    {leftIcon}
    \n ) : undefined}\n\n
    \n {center ? (\n center\n ) : (\n <>\n {text && (\n \n {text}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n
    \n\n {right ? (\n right\n ) : rightIcon ? (\n rightIcon\n ) : rightCheck ? (\n \n ) : null}\n
    \n {divider}\n
  • \n )\n}\n\nconst CoreList = Object.assign(CoreListWrapper, { Item: CoreListItem })\n\nexport default CoreList\n","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"CgDwajpxnPS4Q4KXE1dg\",\"headline\":\"K8Xa3e_1Xp0k6cUORlsQ\",\"paragraph\":\"niZj2XsQj5dxEiVizcO9\"};","import React, { FC, PropsWithChildren } from 'react'\nimport cx from 'classnames'\n\nimport styles from './CoreText.module.scss'\n\ninterface CoreTextProps {\n className?: string\n size?: 'xs' | 's' | 'm' | 'l' | 'xl'\n weight?: 'regular' | 'heavy' | 'light'\n color?: 'primaryBlack' | 'secondaryBlack' | 'tertiaryBlack' | 'secondary' | 'disabledBlack' | 'primaryWhite'\n element?: keyof JSX.IntrinsicElements\n}\n\nconst Headline: FC> = ({\n children,\n className,\n size = 'm',\n weight = 'regular',\n color,\n element: Element = 'h1',\n}) => {\n return {children}\n}\n\nconst Paragraph: FC> = ({\n children,\n className,\n size = 'm',\n weight = 'regular',\n color,\n element: Element = 'p',\n}) => {\n return {children}\n}\n\nconst CoreText = {\n Headline: Headline,\n Paragraph: Paragraph,\n}\n\nexport default CoreText\n","// extracted by mini-css-extract-plugin\nexport default {\"imageWithBackup\":\"_tdvDICiWI9s_deSUHXq\"};","import classNames from 'classnames'\nimport React, { ReactNode, useEffect, useState } from 'react'\nimport { FC } from 'react'\n\nimport styles from './ImageWithBackup.module.scss'\n\nexport interface ImageWithBackupProps {\n primary: string\n backup: ReactNode\n type?: string\n className?: string\n}\n\nconst ImageWithBackup: FC = ({ primary, backup, type, className }) => {\n const [error, setError] = useState(false)\n\n type = type || 'image/jpeg'\n\n // on Safari (and some other browsers), won't failover properly\n // This effect will trigger a failover for those browsers.\n useEffect(() => {\n const runMe = async () => {\n const response = await fetch(primary)\n if (response.status < 200 || response.status >= 300) {\n setError(true)\n }\n }\n runMe()\n }, [primary])\n\n if (error) {\n return
    {backup}
    \n }\n\n return (\n \n {backup}\n \n )\n}\n\nexport default ImageWithBackup\n","import { FC, useEffect } from 'react'\n\nexport interface PageTitleProps {\n title: string\n}\n\nconst PageTitle: FC = ({ title }) => {\n useEffect(() => {\n document.title = `${title} | Realm`\n }, [title])\n\n return null\n}\n\nexport default PageTitle\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner\":\"VMEaGTuiZCK7y5k4Vsjl\",\"spin\":\"Ki2eYj4P8WffdsyJQxPk\",\"spinner-icon-white\":\"AR6E43RtzZlkFJKIaBTS\",\"spinner-icon-white--sm\":\"HRUXFYQ693uRgMqIalbY\",\"spinner-icon-white--md\":\"cWbOEKpBR5GDBAHNUF3x\",\"spinner-icon-white--lg\":\"wfKihSj4itkkQTc78lFL\",\"spinner-icon-white--xl\":\"RK1Vns1XcbDAkWzgrk5w\",\"spinner-icon\":\"fCTSDgkTV3Kd4VBJHgTR\",\"spinner-icon--sm\":\"oM8VCzQnnE44hAGgrx2L\",\"spinner-icon--md\":\"AcxzkbqQ7d3tjTnAyF6E\",\"spinner-icon--lg\":\"B8VCmE9za47JWRPUxrtg\",\"spinner-icon--xl\":\"r3NDvdcHLL7Ru9LPCoPT\"};","import React, { FC } from 'react'\nimport cx from 'classnames'\n\nimport styles from './Spinner.module.scss'\n\nexport type IconSize = 'sm' | 'md' | 'lg' | 'xl'\nexport type IconColor = 'white'\n\nexport interface SpinnerProps {\n size?: IconSize\n color?: IconColor\n}\n\nexport const Spinner: FC = ({ size, color }) => {\n return (\n
    \n \n
    \n )\n}\n\nexport default Spinner\n","import ImageWithBackup from 'components/ImageWithBackup'\nimport React, { FC, ReactNode, useMemo } from 'react'\n\nexport interface StreetViewImageProps {\n fov?: number\n lat?: string\n long?: string\n location?: string\n heading?: number\n width?: number\n height?: number\n pitch?: number\n className?: string\n retina?: boolean\n backup?: ReactNode\n}\n\nconst StreetViewImage: FC = ({\n className,\n fov,\n width = 350,\n height = 350,\n lat,\n location,\n long,\n heading,\n pitch,\n backup,\n}) => {\n const queryParams = useMemo(() => {\n const key = typeof window !== 'undefined' ? document.body.dataset.googleMapsApiKey : process.env.GOOGLE_MAPS_API_KEY\n const params = {\n size: `${width}x${height}`,\n location: location ?? `${lat},${long}`,\n fov,\n heading,\n pitch,\n key,\n return_error_code: !!backup,\n }\n return Object.entries(params)\n .filter(([_, value]) => value != null)\n .map(([key, value]) => `${key}=${value}`)\n .join('&')\n }, [width, height, location, lat, long, fov, heading, pitch, backup])\n\n const url = useMemo(() => {\n return `https://maps.googleapis.com/maps/api/streetview?${queryParams}`\n }, [queryParams])\n\n return \n}\n\nexport default StreetViewImage\n","// extracted by mini-css-extract-plugin\nexport default {\"global-alert__alert\":\"aeTZqJFZDyvWy4p1LcNr\",\"global-alert__alert--visible\":\"KnR5UX7parefA89L225q\",\"global-alert\":\"xib_NWkIU4UU1YEogAUQ\",\"alert\":\"G2GXXki46pFj9hQ0ZA8J\"};","import React, { FC, useCallback, useEffect, useRef, useState } from 'react'\nimport cx from 'classnames'\nimport Alert from 'components/Alert'\nimport { Link } from 'react-router-dom'\nimport { useRecoilState } from 'recoil'\nimport { alertState } from 'recoil/alert'\n\nimport styles from './GlobalAlert.module.scss'\n\nconst visibleDurationMs = 5000\nconst transitionDurationMs = 250\n\nexport const GlobalAlert: FC = () => {\n const [isVisible, setIsVisible] = useState(false)\n const [alert, setAlert] = useRecoilState(alertState)\n const alertId = useRef()\n\n useEffect(() => {\n let didCancel = false\n if (alert?.message) {\n alertId.current = alert.id\n setTimeout(() => {\n didCancel || setIsVisible(true)\n }, 10)\n setTimeout(() => {\n didCancel || setIsVisible(false)\n }, visibleDurationMs)\n setTimeout(() => {\n // if id hasn't changed since 5 seconds ago, clear it, so it doesn't show on next url navigation\n if (alertId.current === alert.id && !didCancel) setAlert(null)\n }, visibleDurationMs + transitionDurationMs)\n }\n return () => {\n didCancel = true\n }\n }, [alert, setAlert])\n\n const handleCtaClick = useCallback(() => {\n setIsVisible(false)\n }, [])\n\n if (!alert) return null\n\n return (\n
    \n \n \n
    \n
    {alert.message}
    \n {alert.ctaText && alert.ctaTo ? (\n \n {alert.ctaText}\n \n ) : null}\n
    \n
    \n
    \n \n )\n}\n\nexport default GlobalAlert\n","import { useEffect } from 'react'\nimport { useSetRecoilState } from 'recoil'\nimport { alertState } from 'recoil/alert'\n\n// map rails flash keys to Alert keys\nconst keyMapping = {\n alert: 'ERROR',\n danger: 'ERROR',\n notice: 'SUCCESS',\n warning: 'WARNING',\n success: 'SUCCESS',\n}\n\nconst useRailsFlash = (): void => {\n const setAlert = useSetRecoilState(alertState)\n useEffect(() => {\n const el = document.querySelector('[data-flash]')\n if (!el) return\n const flash = JSON.parse(el.textContent || '')\n for (const [key, value] of Object.entries(flash)) {\n const type = keyMapping[key]\n if (type) {\n setAlert({ type, message: value as string, id: Date.now() })\n } else {\n // set in session storage so that it can be read after a refresh\n // this is used for tracking SSO signups\n sessionStorage.setItem(`rails_flash_${key}`, value as string)\n }\n }\n })\n}\n\nexport default useRailsFlash\n","import { atom } from 'recoil'\nimport { ReactNode } from 'react'\n\nexport type AlertType = 'ERROR' | 'WARNING' | 'SUCCESS'\n\nexport interface Alert {\n type: AlertType\n message: ReactNode\n id: number | string\n ctaText?: string\n ctaTo?: string\n}\n\nexport const alertState = atom({\n key: 'Alert',\n default: null,\n})\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 return (\n \n \n \n \n \n \n \n )\n}\n\nexport default Svg\n","import React, { FC } from 'react'\n\ninterface Props {\n className?: string\n strokeWidth?: number\n}\n\nconst Spinner: FC = ({ className, strokeWidth = 8 }) => (\n \n \n \n \n \n \n \n)\n\nexport default Spinner\n","export interface FetchResponse {\n isError: boolean\n code: number\n rawBody: string\n jsonBody: T\n}\n\nexport async function getJSON(path: string, options?: Partial): Promise {\n const headers = new Headers(options?.headers)\n headers.set('Accept', 'application/json')\n headers.set('X-Requested-With', 'XMLHttpRequest')\n if (process.env.REALM_APP_VERSION) headers.set('X-Realm-App-Version', process.env.REALM_APP_VERSION)\n const response = await fetch(path, {\n credentials: 'same-origin',\n headers,\n ...options,\n })\n\n // Get needs to return what we expect, not error results.\n if (response.status < 200 || response.status >= 300) {\n // Check if there is a message to attach.\n let msgObj\n try {\n // Make sure the response is JSON before grabbing it.\n if (response.headers.get('content-type')?.startsWith('application/json')) {\n msgObj = { error: await response.json() }\n }\n } catch {\n /* Ok if not */\n }\n const errorMessage =\n response.status >= 500 && response.status < 600\n ? `5xx status code: ${response.status}.`\n : `Non-200 status code: ${response.status}.`\n\n const error = Object.assign(new Error(errorMessage), { code: response.status }, msgObj)\n\n throw error\n }\n return response.json()\n}\n\nexport async function patchJSON(\n path: string,\n body: Record,\n signal?: AbortSignal\n): Promise> {\n return sendJSON(path, body, 'PATCH', signal)\n}\n\nexport async function postJSON(\n path: string,\n body: Record,\n signal?: AbortSignal\n): Promise> {\n return sendJSON(path, body, 'POST', signal)\n}\n\nexport async function deleteJSON(path: string, signal?: AbortSignal): Promise> {\n return sendJSON(path, null, 'DELETE', signal)\n}\n\nexport function sendJSON(\n path,\n body,\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n signal?: AbortSignal\n): Promise {\n const param = document.querySelector('meta[name=csrf-param]')?.getAttribute('content') || ''\n const token = document.querySelector('meta[name=csrf-token]')?.getAttribute('content') || ''\n\n const headers = new Headers()\n headers.set('Accept', 'application/json')\n headers.set('Content-Type', 'application/json')\n headers.set('X-Requested-With', 'XMLHttpRequest')\n if (process.env.REALM_APP_VERSION) headers.set('X-Realm-App-Version', process.env.REALM_APP_VERSION)\n\n return handleResponse(() =>\n fetch(path, {\n method,\n credentials: 'same-origin',\n headers,\n body: JSON.stringify({\n ...body,\n [param]: token,\n }),\n signal,\n })\n )\n}\n\nexport async function postFormData(path: string, formData: FormData): Promise {\n // No need to set 'Content-Type' header; it's set automatically by the browser\n // when FormData is passed to the fetch body.\n const headers = new Headers()\n headers.set('Accept', 'application/json')\n headers.set('X-Requested-With', 'XMLHttpRequest')\n if (process.env.REALM_APP_VERSION) headers.set('X-Realm-App-Version', process.env.REALM_APP_VERSION)\n\n // CSRF token handling\n const param = document.querySelector('meta[name=csrf-param]')?.getAttribute('content')\n const token = document.querySelector('meta[name=csrf-token]')?.getAttribute('content')\n if (param && token) {\n formData.append(param, token)\n }\n\n return handleResponse(() =>\n fetch(path, {\n method: 'POST',\n credentials: 'same-origin',\n headers,\n body: formData,\n })\n )\n}\n\nexport async function patchFormData(path: string, formData: FormData): Promise {\n // No need to set 'Content-Type' header; it's set automatically by the browser\n // when FormData is passed to the fetch body.\n const headers = new Headers()\n headers.set('Accept', 'application/json')\n headers.set('X-Requested-With', 'XMLHttpRequest')\n if (process.env.REALM_APP_VERSION) headers.set('X-Realm-App-Version', process.env.REALM_APP_VERSION)\n\n // CSRF token handling\n const param = document.querySelector('meta[name=csrf-param]')?.getAttribute('content')\n const token = document.querySelector('meta[name=csrf-token]')?.getAttribute('content')\n if (param && token) {\n formData.append(param, token)\n }\n\n return handleResponse(() =>\n fetch(path, {\n method: 'PATCH',\n credentials: 'same-origin',\n headers,\n body: formData,\n })\n )\n}\n\nexport async function postFile(\n path: string,\n body: FormData,\n method: string = 'POST',\n signal?: AbortSignal\n): Promise {\n // CSRF token handling\n const param = document.querySelector('meta[name=csrf-param]')?.getAttribute('content')\n const token = document.querySelector('meta[name=csrf-token]')?.getAttribute('content')\n if (param && token) {\n body.append(param, token)\n }\n\n return handleResponse(() =>\n fetch(path, {\n method,\n credentials: 'same-origin',\n body,\n signal,\n })\n )\n}\n\nexport async function patchFile(path: string, body: FormData): Promise {\n return handleResponse(() =>\n fetch(path, {\n method: 'PATCH',\n credentials: 'same-origin',\n body,\n })\n )\n}\n\nexport async function deleteFile(path: string, body: FormData | null): Promise {\n return handleResponse(() =>\n fetch(path, {\n method: 'DELETE',\n credentials: 'same-origin',\n body,\n })\n )\n}\n\nasync function handleResponse(fetcher: () => Promise): Promise {\n const response = await fetcher()\n const rawBody = await response.text()\n const contentType = response.headers.get('content-type')\n let jsonBody = null\n if (contentType && contentType.indexOf('application/json') > -1 && rawBody != null && rawBody != '') {\n jsonBody = JSON.parse(rawBody)\n }\n\n if (response.status >= 500 && response.status < 600) {\n throw new Error(`5xx status code: ${response.status}.`)\n }\n return {\n isError: response.status < 200 || response.status > 299,\n code: response.status,\n rawBody,\n jsonBody,\n }\n}\n","import { Property, PropertyHead } from 'recoil/properties'\nimport { formatPropertyAddress } from 'utils/formatting'\n\nexport const buildableArea = (property: Property): number | undefined => {\n if (!property.zoned_buildable_area) {\n return\n }\n\n if (!property.zoned_buildable_area.remaining_square_footage) {\n return property.zoned_buildable_area.remaining_square_footage || undefined\n }\n\n return property.zoned_buildable_area.remaining_square_footage > 0\n ? property.zoned_buildable_area.remaining_square_footage\n : 0\n}\n\nexport const amountOverbuilt = (property: Property): number => {\n if (!property.zoned_buildable_area || !property.zoned_buildable_area.remaining_square_footage) {\n return 0\n }\n return property.zoned_buildable_area.remaining_square_footage > 0\n ? 0\n : -property.zoned_buildable_area.remaining_square_footage\n}\n\nexport const displayAddress = (property: Property): string => {\n return [property.delivery_line_1, property.city, property.state, property.zip5].join(', ')\n}\n\nexport const getPropertyMapUrl = (\n property: PropertyHead | undefined,\n width = 1000,\n height = 1000\n): string | undefined => {\n if (!property) 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 = property?.lat != null && property.lat != '' && property?.long != null && property.long != ''\n const mapboxUrl = `https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/${property.long},${property.lat},17,0/${width}x${height}@2x?access_token=pk.eyJ1Ijoicm9od2VpZ2VsIiwiYSI6ImNrYmg1YWh2YzAyMjkyem5yN2RsMmRpZXkifQ.STA87m4W37moWj2evrjymw`\n const googleMapsUrls = `https://maps.googleapis.com/maps/api/staticmap?center=${encodeURI(\n formatPropertyAddress(property)\n )}&zoom=16&scale=2&maptype=satellite&size=${width}x${height}&key=AIzaSyDIABYI0DmyZHUfhoJxVXKDXJ_4znAEE8E`\n\n return hasLatLng ? mapboxUrl : googleMapsUrls\n}\n\nexport const getGoogleMapsUrl = (propertyInfo: {\n line1: string\n city: string\n state: string\n zip5: string\n lat: string | number\n long: string | number\n}): string => {\n return `https://maps.google.com/?q=${[propertyInfo.line1, propertyInfo.city, propertyInfo.state, propertyInfo.zip5].join(', ').replace(/ /g, '+')}&ll=${propertyInfo.lat},${propertyInfo.long}`\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"nmQpeo4xQPAXeLU4dbWQ\",\"inputWrapper\":\"T4vwKJgZlCy2qLVAAZIT\",\"input\":\"PAfm7Nru3e4seerGU_99\",\"accessory\":\"JvLBsONvNogVZw4awInL\",\"hint\":\"tAubuh2TKI5IHhSgDOPj\",\"ta\":\"aeqFOUWFLhxBbG1IG4z3\",\"showRequired\":\"TtCcxB7xmoW0Xmomp7Nq\"};"],"names":["searchGooglePlaces","query","signal","url","placeId","attomId","queryString","autocompleteGooglePlaces","className","children","type","altClass","toLowerCase","alert","forwardRef","ref","others","text","icon","size","kind","onClick","disabled","iconAlignment","rest","handleClick","useCallback","event","preventDefault","iconClass","useMemo","alignment","left","center","iconWrapper","button","buttonText","name","onChangePrediction","onBlur","right","queryMethod","mapPrediction","findMethod","defaultValue","initialPredictions","showPredictionsImmediately","setQuery","useState","debouncedQuery","setDebouncedQuery","selected","setSelected","predictions","setPredictions","popoverOpen","setPopoverOpen","referenceWidth","setReferenceWidth","keyboardHover","setKeyboardHover","isMouseDown","setIsMouseDown","readDefaultValue","useRef","context","x","y","refs","strategy","update","open","onOpenChange","placement","middleware","apply","rects","reference","width","whileElementsMounted","interactions","filter","Boolean","getReferenceProps","getFloatingProps","handleChangeText","value","handleMouseDown","oldPopoverOpen","handleFocus","handleBlur","e","stopPropagation","handleSelectPrediction","prediction","handleKeyDown","length","code","next","Math","min","max","useEffect","toString","_","debouncedUpdate","cancel","results","Promise","resolve","console","error","id","current","result","setReference","Text","label","title","onMouseDown","onChangeText","onFocus","onKeyDown","setFloating","style","position","top","zIndex","map","i","isActive","mapped","key","subtitle","phoneFilter","rawNumber","replace","formatPhoneNumberValue","forCursor","newValue","areaCode","substring","exchangeCode","subNumber","useFormattedPhoneInput","onChange","setPosition","handlePhoneNumberChanged","rValue","oCursor","target","selectionStart","setSelectionRange","formattedValue","PhoneInput","forwardedRef","_a","props","phoneValue","setPhoneValue","String","handleChange","handleChangedText","handlePhoneReset","useImperativeHandle","input","onReset","hint","hintClassName","placeholder","borderType","elementSize","showFieldRequired","spacing","popOnClick","localInputRef","handleDateClick","showPicker","focus","Wrapper","wrapper","currencyMask","allowDecimal","allowLeadingZeroes","renderInput","innerRef","combinedref","instance","forEach","mergeRefs","mask","inputMode","render","percentMask","decimalLimit","integerLimit","prefix","suffix","select","rows","rowsProp","autoResizeOnFocus","internalRef","setAutoHeight","element","height","computedStyle","window","getComputedStyle","borderTopWidth","parseFloat","borderBottomWidth","scrollHeight","removeHeight","ta","allowBlank","accessory","hidden","options","onChangeValue","dropDownPlacement","renderOption","setOpen","highlightedOptionIndex","setHighlightedOptionIndex","minWidth","setMinWidth","crossAxis","limiter","padding","el","domReference","observer","ResizeObserver","clientWidth","observe","disconnect","handleClickOption","findNextFocusableIndex","startIndex","step","index","newHighlightedOptionIndex","selectedOption","find","overlayStyle","buttonId","listBoxId","htmlFor","payload","ExpandMore","role","tabIndex","Array","isArray","join","RadioButtonUnchecked","RadioButtonChecked","idField","selectionStyle","formatValue","handleFindAddress","address","handleAutocorrect","items","handleSearchGooglePlaces","place_id","indexOf","slice","split","CoreComboBox","checked","CheckBox","CheckBoxOutlineBlank","showRequired","inputWrapper","CoreText","Paragraph","color","weight","Money","Percent","TextArea","Select","FancySelect","Address","Check","Radio","Object","assign","Item","description","divider","imageSrc","leftIcon","leftIconContained","rightCheck","rightIcon","textClassName","border","handleKeyPress","src","alt","Checkbox","readOnly","Headline","Element","primary","backup","setError","response","fetch","status","data","document","Spinner","spinner","fov","lat","location","long","heading","pitch","queryParams","body","dataset","googleMapsApiKey","params","return_error_code","entries","isVisible","setIsVisible","setAlert","alertId","didCancel","message","setTimeout","visibleDurationMs","handleCtaClick","Alert","A","ctaText","ctaTo","to","keyMapping","danger","notice","warning","success","querySelector","flash","JSON","parse","textContent","Date","now","sessionStorage","setItem","alertState","default","xmlns","viewBox","d","fill","fillRule","transform","strokeWidth","version","strokeLinecap","stroke","attributeName","attributeType","from","dur","repeatCount","getJSON","path","headers","Headers","set","credentials","msgObj","get","startsWith","json","errorMessage","Error","patchJSON","sendJSON","postJSON","deleteJSON","method","param","getAttribute","token","handleResponse","stringify","postFormData","formData","append","patchFormData","postFile","deleteFile","fetcher","rawBody","contentType","jsonBody","isError","buildableArea","property","zoned_buildable_area","remaining_square_footage","displayAddress","delivery_line_1","city","state","zip5","getPropertyMapUrl","hasLatLng","mapboxUrl","googleMapsUrls","encodeURI","getGoogleMapsUrl","propertyInfo","line1"],"sourceRoot":""}