{"version":3,"file":"static/chunks/pages/index-9e3d6f5a5489201e.js","mappings":"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","sources":["webpack://_N_E/","webpack://_N_E/./public/mock/checklist-property.png","webpack://_N_E/./src/components/elements/forms/groups/manual-address-v2.tsx","webpack://_N_E/./src/components/elements/info-icon.tsx","webpack://_N_E/./src/components/elements/status-handlers/generic-error.tsx","webpack://_N_E/./src/components/elements/status-handlers/loading-wrapper.tsx","webpack://_N_E/./src/components/elements/tooltip.tsx","webpack://_N_E/./src/components/hooks/useActivateOffers.ts","webpack://_N_E/./src/components/hooks/useGetHbjIdToAddProperty.ts","webpack://_N_E/./src/components/hooks/useGetOffers.ts","webpack://_N_E/./src/components/hooks/useProperties.ts","webpack://_N_E/./src/utils/helpers/getUnarchivedProperties.helper.ts","webpack://_N_E/./src/components/hooks/useSellProperties.ts","webpack://_N_E/./src/features/home/components/property-card/property-card.helpers.ts","webpack://_N_E/./src/features/home/utils/get-properties.helper.ts","webpack://_N_E/./src/features/home/utils/helper.ts","webpack://_N_E/./src/components/elements/banners/emoji-feedback-banner.tsx","webpack://_N_E/./src/components/elements/banners/sell-side-new-feature.tsx","webpack://_N_E/./src/components/elements/property-search/autocomplete-components/autocomplete-style-overrides.js","webpack://_N_E/./src/components/elements/property-search/autocomplete-components/autocomplete-search-input.tsx","webpack://_N_E/./src/components/elements/property-search/autocomplete-components/autocomplete-search-option.tsx","webpack://_N_E/./src/components/elements/property-search/autocomplete-components/autocomplete-search-paper-component.tsx","webpack://_N_E/./src/components/elements/property-search/autocomplete-components/autocomplete-search-popper-component.tsx","webpack://_N_E/./src/components/elements/property-search/property-search-bar.tsx","webpack://_N_E/./src/components/elements/error-alert.tsx","webpack://_N_E/./src/components/elements/property-search/form-helpers.ts","webpack://_N_E/./src/components/elements/property-search/submit-add-property-form.ts","webpack://_N_E/./src/components/elements/property-search/add-property-dialog-form.tsx","webpack://_N_E/./src/components/hooks/useAddSellPropertyErrorAlreadyAdded.ts","webpack://_N_E/./src/components/hooks/useAddSellPropertyErrorOutsideOfNSW.ts","webpack://_N_E/./src/components/hooks/useAddBuyPropertyErrorUnsupportedPropertyType.ts","webpack://_N_E/./src/components/elements/property-search/add-property-dialog-desktop.tsx","webpack://_N_E/./src/components/elements/property-search/add-property-dialog-mobile.tsx","webpack://_N_E/./src/components/elements/property-search/add-property-dialog.tsx","webpack://_N_E/./src/components/hooks/useGetDomainPropertyData.ts","webpack://_N_E/./src/components/hooks/useGetDomainListingData.ts","webpack://_N_E/./src/components/elements/property-search/manual-add-property-dialog.tsx","webpack://_N_E/./src/components/elements/property-search/property-search-bar-container.tsx","webpack://_N_E/./src/components/elements/property-search/full-width-property-search.tsx","webpack://_N_E/./src/features/home/components/property-card/property-card-ui.tsx","webpack://_N_E/./src/features/home/components/notification-group.tsx","webpack://_N_E/./src/features/home/components/preapproval-card.tsx","webpack://_N_E/./src/components/hooks/useCBAPreApprovalHBJ.ts","webpack://_N_E/./src/features/home/components/about-home-in.tsx","webpack://_N_E/./src/components/elements/banners/add-property-banner.tsx","webpack://_N_E/./src/features/home/components/add-property-card.tsx","webpack://_N_E/./src/features/home/utils/generate-trash-icon.ts","webpack://_N_E/./src/features/home/components/your-offers.tsx","webpack://_N_E/./src/features/home/components/property-card/remove-property-modal.tsx","webpack://_N_E/./src/features/home/components/property-card/property-card.tsx","webpack://_N_E/./src/features/home/components/property-card/v2/property-card.styles.ts","webpack://_N_E/./src/features/home/components/property-card/v2/property-card.tsx","webpack://_N_E/./src/features/home/components/property-card/v2/property-card.buy.tsx","webpack://_N_E/./src/features/home/components/property-card/v2/property-card.sell.tsx","webpack://_N_E/./src/features/home/components/property-card/property-cards.tsx","webpack://_N_E/./src/components/elements/banners/cba-free-contract-review-offer.tsx","webpack://_N_E/./src/components/elements/banners/cba-workplace-banking-offer.tsx","webpack://_N_E/./src/components/elements/banners/cba-yello-offer.tsx","webpack://_N_E/./src/features/home/parts/activity.tsx","webpack://_N_E/./src/features/home/utils/get-lender-tile-details.ts","webpack://_N_E/./src/components/hooks/useAcknowledgeSellSideLookingToSellCard.ts","webpack://_N_E/./src/features/home/layouts/home.tsx","webpack://_N_E/./src/pages/index.tsx","webpack://_N_E/./src/utils/constants/date.constants.js","webpack://_N_E/./src/utils/helpers/domain-api.helpers.ts","webpack://_N_E/./src/utils/helpers/properties.helpers.tsx"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/\",\n function () {\n return require(\"private-next-pages/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/\"])\n });\n }\n ","export default {\"src\":\"/_next/static/media/checklist-property.ac21eba0.png\",\"height\":855,\"width\":1137,\"blurDataURL\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAMAAADJ2y/JAAAABlBMVEX////3+Pn9TZcmAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAEUlEQVR4nGNgwAYYGdEZqAAAAKIABbJ4/i0AAAAASUVORK5CYII=\",\"blurWidth\":8,\"blurHeight\":6};","import { State } from '@home-in/models'\nimport React, { FC } from 'react'\nimport { Listbox, TextField } from '@elements/forms'\nimport { enumToSelectOptions } from '@utils/helpers/enum.helpers'\nimport { ManualAddressVariant } from './address-group'\nimport { ManualAddressProps } from './manual-address'\n\nconst variantStyles: Record = {\n default: 'grid grid-cols-2 gap-4',\n 'single-column': 'grid grid-cols-1 gap-4',\n}\n\nexport const ManualAddressV2: FC = ({\n name,\n control,\n restrictState,\n floatingLabels = true,\n errorDisplayType = 'text',\n restrictStateErrorMessage = '',\n variant = 'default',\n}) => {\n return (\n <>\n
\n \n\n \n\n \n\n (value !== restrictState ? restrictStateErrorMessage : true),\n },\n }\n }\n errorDisplayType={errorDisplayType}\n />\n\n \n
\n \n )\n}\n","import React from 'react'\nimport { classNames } from '@utils/helpers/classNameHelper'\nimport Illustration, { Illustrations } from './icons/illustration'\n\ninterface InfoIconProps {\n tabIndex?: number\n customColour?: string\n margin?: boolean\n size?: number\n}\n\nexport const InfoIcon = ({ margin = true, tabIndex = 0, customColour, size = 20 }: InfoIconProps) => (\n \n \n \n)\n","import { SerializedError } from '@reduxjs/toolkit'\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/dist/query'\nimport { useRouter } from 'next/router'\nimport React, { PropsWithChildren } from 'react'\nimport { Button } from '@elements/button'\nimport { Card } from '@elements/card'\nimport { SupportEmailLink } from '@elements/forms/link'\nimport { prettyPrintJson } from '@utils/helpers/string.helpers'\n\nexport type GenericErrorType = FetchBaseQueryError | SerializedError | string | undefined\ntype ErrorTypes = GenericErrorType[]\n\nexport const GenericError = ({\n errors,\n customErrorMessage,\n element = Card,\n withRefreshButton = true,\n}: {\n errors?: ErrorTypes\n customErrorMessage?: string | ((err: GenericErrorType) => JSX.Element)\n element?: ({}: PropsWithChildren<{ className?: string } & any>) => JSX.Element\n withRefreshButton?: boolean\n}) => {\n const router = useRouter()\n const Element = element\n\n const filteredErrors = errors?.filter((error) => !!error)\n\n return (\n <>\n \n
\n

⚠️

\n {customErrorMessage && typeof customErrorMessage === 'string' &&

{customErrorMessage}

}\n {customErrorMessage && customErrorMessage instanceof Function && (\n <>\n {filteredErrors?.map((err) => (\n <>{customErrorMessage(err)}\n ))}\n \n )}\n {!customErrorMessage && (\n <>\n

Sorry, something went wrong.

\n

\n If the issue persists, please contact \n

\n \n )}\n
\n {withRefreshButton && }\n
\n {process.env.NEXT_PUBLIC_APP_ENV !== 'production' &&\n process.env.NEXT_PUBLIC_APP_ENV !== 'staging' &&\n filteredErrors?.map((err, idx) => (\n \n

Error Log:

\n
{prettyPrintJson(err)}
\n
\n ))}\n \n )\n}\n","import classNames from 'classnames'\nimport React, { PropsWithChildren } from 'react'\nimport { GenericError, GenericErrorType } from '@elements/status-handlers/generic-error'\nimport { Card } from '../card'\nimport LoadingSpinner from '../loading-spinner'\n\ntype LoadingWrapperProps = {\n isLoading: boolean\n isError?: boolean\n className?: string\n spinnerClassName?: string\n error?: GenericErrorType | GenericErrorType[]\n customErrorMessage?: string | ((err: GenericErrorType) => JSX.Element)\n withRefreshButton?: boolean\n variant?: 'normal' | 'thin'\n}\n\nconst GenericLoadingWrapper = ({\n isLoading,\n children,\n className = '',\n isError = false,\n error,\n customErrorMessage,\n variant = 'normal',\n withRefreshButton = true,\n spinnerClassName = '',\n}: PropsWithChildren) => {\n const Thin = ({ children }: PropsWithChildren<{}>) => (\n
{children}
\n )\n\n const Element: (props: PropsWithChildren<{ className?: string } & any>) => JSX.Element =\n variant === 'thin' ? Thin : Card\n\n return !isError ? (\n <>\n {isLoading ? (\n \n
\n \n
\n
\n ) : (\n <>{children}\n )}\n \n ) : (\n \n )\n}\n\nexport const LoadingWrapper = (props: PropsWithChildren) => {\n return \n}\n\nexport const LoadingThinWrapper = (props: PropsWithChildren) => {\n return \n}\n","import {\n arrow,\n autoUpdate,\n flip,\n FloatingPortal,\n offset,\n shift,\n size,\n useClick,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react'\n\nimport React, { useRef, useState } from 'react'\nimport type { Placement } from '@floating-ui/react'\n\ninterface TooltipProps {\n label: string\n placement?: Placement\n children: JSX.Element\n disabled?: boolean\n}\n\nexport const Tooltip = ({ children, label, placement = 'bottom', disabled = false }: TooltipProps) => {\n const [open, setOpen] = useState(false)\n const arrowRef = useRef(null)\n\n const {\n x,\n y,\n reference,\n floating,\n strategy,\n context,\n placement: floatingPlacement,\n middlewareData: { arrow: arrowData },\n } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n // Make sure the tooltip stays on the screen\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip({ fallbackPlacements: ['bottom'] }), shift(), size(), arrow({ element: arrowRef })],\n })\n\n // Event listeners to change the open state\n const hover = useHover(context, { move: false })\n const focus = useFocus(context)\n const click = useClick(context, { ignoreMouse: true })\n const dismiss = useDismiss(context)\n // Role props for screen readers\n const role = useRole(context, { role: 'tooltip' })\n\n // Merge all the interactions into prop getters\n const { getReferenceProps, getFloatingProps } = useInteractions([hover, click, focus, dismiss, role])\n\n const staticSide =\n {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[floatingPlacement?.split('-')[0]] || ''\n\n return (\n <>\n \n \n {open && !disabled && (\n \n {label}\n \n \n )}\n \n \n )\n}\n","import { CampaignOffer } from '@home-in/models'\nimport Cookies from 'js-cookie'\nimport { useEffect } from 'react'\nimport { useAddCampaignIdMutation } from '@redux/apis/profile'\nimport { useAppSelector } from '@redux/hooks'\n\n// This hook is used to activate the Yello offer for new and existing customers\nexport const useActivateOffers = () => {\n const data = useAppSelector((state) => state.profile)\n const user = useAppSelector((state) => state.auth.user)\n const utmId = user?.utm_id\n\n const [addCampaignId] = useAddCampaignIdMutation()\n\n useEffect(() => {\n const accountExistsInPega = !!data?.created_at\n const activatedCampaigns = data?.campaigns?.map((campaign) => campaign.campaign_id)\n\n if (accountExistsInPega) {\n const yelloOffer001Activated = activatedCampaigns?.includes(CampaignOffer.YelloOffer001)\n const cbaFreeContractReviewActivated = activatedCampaigns?.includes(CampaignOffer.CBAFreeContractReview)\n const cbaWorkplaceBanking001Activated = activatedCampaigns?.includes(CampaignOffer.CBAWorkplaceBanking001)\n\n // https://home-in.atlassian.net/browse/BEL-2784\n // Restrict existing customers to only have one offer at a time (Yello / Workplace Banking offers)\n if (utmId !== CampaignOffer.CBAFreeContractReview && (yelloOffer001Activated || cbaWorkplaceBanking001Activated))\n return\n\n // FIXME: `CampaignOffer` is used for the utm, offer and campaign IDs, these are three different things\n if (!cbaWorkplaceBanking001Activated && utmId === CampaignOffer.CBAWorkplaceBanking001) {\n addCampaignId({ campaignId: CampaignOffer.CBAWorkplaceBanking001 })\n } else if (!yelloOffer001Activated) {\n // FIXME: to be checked if we should use utmId here too\n const isUtmIdYello = data?.utm_id === CampaignOffer.YelloOffer001\n\n if (isUtmIdYello) {\n // New customer\n addCampaignId({ campaignId: CampaignOffer.YelloOffer001 })\n } else {\n // Note: we can use cookies since existing customers don't have the \"activate your email\" step.\n // The login step is one click, so we can use a simple cookie to activate the offer since it's impossible\n // for a user to swap devices in the middle of the login process.\n const cookieCampaignId = Cookies.get('campaign_id')\n const yelloCampaignCookieExists = cookieCampaignId === CampaignOffer.YelloOffer001\n\n if (yelloCampaignCookieExists) {\n // Existing customer\n addCampaignId({ campaignId: CampaignOffer.YelloOffer001 })\n }\n }\n }\n\n if (!cbaFreeContractReviewActivated) {\n if (utmId === CampaignOffer.CBAFreeContractReview) {\n addCampaignId({ campaignId: CampaignOffer.CBAFreeContractReview })\n }\n }\n }\n }, [data, utmId])\n}\n","import { Address, DomainAddress, GetHomeBuyingJourneyHbj, State } from '@home-in/models'\nimport { useEffect, useState } from 'react'\nimport { WaratahPropertyWithChecklist } from '@features/checklist/data/checklist-data-types'\nimport { trackEvent } from '@redux/reducers/analytics'\nimport { AnalyticsCategories } from '@utils/helpers/analytics.enum'\nimport { getActiveTransactionForBuyProperty } from '@utils/helpers/buy-properties.helpers'\n\ninterface UseGetHbjIdToAddPropertyProps {\n address: DomainAddress | undefined\n manual_address: Address | undefined\n hbj: GetHomeBuyingJourneyHbj[]\n propertyData: WaratahPropertyWithChecklist[] | undefined\n}\n\nexport const useGetHbjIdToAddProperty = ({\n address,\n hbj,\n manual_address,\n propertyData,\n}: UseGetHbjIdToAddPropertyProps) => {\n const [hbjIdToAddProperty, setHbjIdToAddProperty] = useState()\n const [errorSlugToAddProperty, setErrorSlugToAddProperty] = useState(undefined)\n const [errorMessageToAddProperty, setErrorMessageToAddProperty] = useState(undefined)\n\n useEffect(() => {\n const state = (address?.addressComponents?.state || manual_address?.state) as State\n const { hbjId, waitingForData, errorMessage, errorSlug } = getActiveTransactionForBuyProperty({\n hbjData: { hbj },\n state,\n propertyData,\n })\n\n if (!waitingForData) {\n if (hbjId) {\n setHbjIdToAddProperty(hbjId)\n setErrorSlugToAddProperty(undefined)\n setErrorMessageToAddProperty(undefined)\n } else {\n setErrorSlugToAddProperty(errorSlug)\n setErrorMessageToAddProperty(errorMessage)\n }\n }\n }, [address, manual_address?.state, hbj, propertyData])\n\n const validToAddProperty = !errorSlugToAddProperty\n\n return {\n hbjIdToAddProperty,\n validToAddProperty,\n errorSlugToAddProperty,\n errorMessageToAddProperty,\n }\n}\n\ninterface UseFireMixpanelErrorForNoHbjIdProps {\n address: DomainAddress | undefined\n dispatch: any\n errorSlugToAddProperty: string | undefined\n}\n\nexport const useFireMixpanelErrorForNoHbjId = ({\n address,\n dispatch,\n errorSlugToAddProperty,\n}: UseFireMixpanelErrorForNoHbjIdProps) => {\n useEffect(() => {\n if (errorSlugToAddProperty) {\n dispatch(\n trackEvent({\n action: `Add Property Error: ${errorSlugToAddProperty}`,\n category: AnalyticsCategories.AddProperty,\n value: address?.address || '',\n })\n )\n }\n }, [errorSlugToAddProperty, address])\n}\n","import { useAppSelector } from '@redux/hooks'\n\nexport const useGetOffers = () => {\n const campaigns = useAppSelector((state) => state?.profile?.campaigns)\n const campaignOffers = campaigns?.map((campaign) => campaign?.campaign_id) ?? []\n return campaignOffers\n}\n","import { useEffect, useState } from 'react'\nimport { WaratahPropertyWithChecklist } from '@features/checklist/data/checklist-data-types'\nimport { useGetHomeBuyingJourneyQuery } from '@redux/apis/home'\nimport { useGetAllSellChecklistsQuery } from '@redux/apis/sell-checklist'\nimport { useGetSellPropertiesQuery } from '@redux/apis/sell-property'\nimport { useAppSelector } from '@redux/hooks'\nimport { getUnarchivedBuyProperties, getUnarchivedSellProperties } from '@utils/helpers/getUnarchivedProperties.helper'\nimport {\n mergeHbjAndChecklist,\n MergedHbjAndChecklist,\n mergeSellPropertiesAndChecklists,\n MergedSellPropertyAndChecklist,\n} from '@utils/helpers/properties.helpers'\n\nexport type CombinedPropertiesList = (MergedHbjAndChecklist | MergedSellPropertyAndChecklist)[]\n\ninterface PropertiesHook {\n data: CombinedPropertiesList\n dataWithoutArchivedProperties: CombinedPropertiesList\n unarchivedSellProperties: MergedSellPropertyAndChecklist[]\n unarchivedBuyProperties: MergedHbjAndChecklist[]\n loading: boolean\n isSuccess: boolean\n isError: boolean\n}\n\nexport const useProperties = (): PropertiesHook => {\n const [properties, setProperties] = useState([])\n const [unarchivedBuyProperties, setUnarchivedBuyProperties] = useState([])\n const [unarchivedSellProperties, setUnarchivedSellProperties] = useState([])\n const removedBuyChecklists = useAppSelector(\n (state) => state.checklist.removedChecklists\n )\n const removedSellProperties = useAppSelector((state) => state.sell.removedSellProperties)\n\n // Step 1: Fetch HBJ data\n const {\n data: hbjData,\n isError: hbjIsError,\n isSuccess: hbjIsSuccess,\n isFetching: hbjIsFetching,\n isUninitialized: hbjIsUninitialized,\n } = useGetHomeBuyingJourneyQuery()\n\n // Step 2: Fetch buying checklist data\n const checklistData = useAppSelector((state) => state.checklist.checklists)\n\n // Step 3: Fetch sell properties data\n const {\n data: sellPropertiesData,\n isError: sellPropertiesIsError,\n isSuccess: sellPropertiesSuccess,\n isFetching: sellPropertiesIsFetching,\n isUninitialized: sellPropertiesIsUninitialized,\n } = useGetSellPropertiesQuery()\n\n // Step 4 fetch sell checklist data\n const {\n data: sellChecklistsData,\n isError: sellChecklistsIsError,\n isSuccess: sellChecklistsSuccess,\n isFetching: sellChecklistsIsFetching,\n isUninitialized: sellChecklistsIsUninitialized,\n } = useGetAllSellChecklistsQuery()\n\n // Step 5 build properties\n useEffect(() => {\n if (hbjIsSuccess && sellPropertiesSuccess && sellChecklistsSuccess) {\n // Merge HBJ data with buying checklist data\n const buyProperties = mergeHbjAndChecklist(hbjData, checklistData || [])\n const sellProperties = mergeSellPropertiesAndChecklists(sellPropertiesData, sellChecklistsData)\n\n setProperties([...buyProperties, ...sellProperties])\n setUnarchivedBuyProperties(getUnarchivedBuyProperties({ buyProperties, removedBuyChecklists }))\n setUnarchivedSellProperties(getUnarchivedSellProperties({ sellProperties, removedSellProperties }))\n }\n }, [\n hbjData,\n checklistData,\n sellPropertiesData,\n sellChecklistsData,\n hbjIsSuccess,\n sellPropertiesSuccess,\n sellChecklistsSuccess,\n removedBuyChecklists,\n removedSellProperties,\n ])\n\n const isUninitialized = hbjIsUninitialized || sellPropertiesIsUninitialized || sellChecklistsIsUninitialized\n const isError = hbjIsError || sellPropertiesIsError || sellChecklistsIsError\n const isFetching = hbjIsFetching || sellPropertiesIsFetching || sellChecklistsIsFetching\n const isSuccess = hbjIsSuccess && sellPropertiesSuccess && sellChecklistsSuccess\n\n return {\n data: properties,\n dataWithoutArchivedProperties: [...unarchivedBuyProperties, ...unarchivedSellProperties],\n unarchivedSellProperties,\n unarchivedBuyProperties,\n loading: isError ? false : isFetching || isUninitialized,\n isSuccess,\n isError,\n }\n}\n","import { WaratahPropertyWithChecklist } from '@features/checklist/data/checklist-data-types'\nimport { MergedHbjAndChecklist, MergedSellPropertyAndChecklist } from './properties.helpers'\n\nexport const getUnarchivedBuyProperties = ({\n buyProperties,\n removedBuyChecklists,\n}: {\n buyProperties: MergedHbjAndChecklist[]\n removedBuyChecklists: WaratahPropertyWithChecklist[]\n}) => {\n return buyProperties.filter((property) => {\n const {\n propertyChecklistInfo: { propertyArchived, propertyId, hbjId },\n } = property as MergedHbjAndChecklist\n\n const buyPropertyIsArchived = !!removedBuyChecklists?.find(\n (removedChecklist) => removedChecklist?.propertyId === propertyId && removedChecklist?.hbjId === hbjId\n )\n\n return !(propertyArchived || buyPropertyIsArchived)\n })\n}\n\nexport const getUnarchivedSellProperties = ({\n sellProperties,\n removedSellProperties,\n}: {\n sellProperties: MergedSellPropertyAndChecklist[]\n removedSellProperties: string[]\n}) => {\n return sellProperties.filter((property) => {\n const {\n propertyInfo: { propertyArchived, propertyId },\n } = property as MergedSellPropertyAndChecklist\n\n const sellPropertyIsArchived = !!removedSellProperties?.find((removedProperty) => removedProperty === propertyId)\n\n return !(propertyArchived || sellPropertyIsArchived)\n })\n}\n","import { useAppSelector } from '@redux/hooks'\n\nexport const useSellProperties = () => {\n const properties = useAppSelector((state) => state.sell.sellProperties)\n const removedProperties = useAppSelector((state) => state.sell.removedSellProperties)\n\n const filteredProperties = properties?.filter((property) => {\n const propertyShouldBeRemoved = !!removedProperties?.find(\n (removedProperty) => removedProperty === property?.propertyId\n )\n\n return !propertyShouldBeRemoved\n })\n\n return filteredProperties\n}\n","import { PropertySaleType, typeOfSale } from '@home-in/models'\nimport { formatDate } from '@utils/helpers/date.helpers'\n\ninterface GetPropertySubtitle {\n saleType?: typeOfSale | PropertySaleType\n auctionDate?: string\n settlementDate?: string\n}\n\nexport const getPropertySubtitle = ({ settlementDate, saleType, auctionDate }: GetPropertySubtitle) => {\n if (settlementDate && settlementDate !== 'N/A') {\n return `Settlement on ${formatDate(settlementDate)}`\n }\n if (auctionDate && auctionDate !== 'N/A' && saleType?.toLowerCase() === 'auction') {\n return `Auction on ${formatDate(auctionDate)}`\n }\n if (saleType?.toLowerCase() === 'auction') {\n return 'Auction'\n }\n\n return 'Private Treaty'\n}\n","import { MuscovyPropertySchemaType, State, PropertySaleType, typeOfSale } from '@home-in/models'\nimport { WaratahPropertyWithChecklist } from '@features/checklist/data/checklist-data-types'\nimport { CombinedPropertiesList } from '@hooks/useProperties'\nimport { SellChecklist } from '@redux/reducers/sell'\nimport {\n isMergedHbjAndChecklist,\n isMergedSellPropertyAndChecklist,\n MergedHbjAndChecklist,\n MergedSellPropertyAndChecklist,\n} from '@utils/helpers/properties.helpers'\nimport { userHasRequestedContractPreparation } from './helper'\n\nexport type SellProperty = {\n type: string\n propertyAddedDateTime?: string\n propertyId: string\n address: string\n state: State\n imageUrl?: string\n addressKey: string\n removable: boolean\n propertyArchived: boolean\n}\n\nexport type BuyProperty = {\n type: string\n propertyAddedDateTime?: string\n propertyId: string\n address: string\n auctionDate: string\n contractExchanged: boolean\n imageUrl: string\n saleType: typeOfSale\n settlementDate: string\n state: State\n removable?: boolean\n hbjId: string\n propertyArchived: boolean\n}\n\nexport type CombinedProperty = SellProperty | BuyProperty\n\nexport const prepareSellPropertiesDataForUI = ({\n sellProperties,\n sellChecklists,\n}: {\n sellProperties: MuscovyPropertySchemaType[]\n sellChecklists: (SellChecklist | undefined)[]\n}): SellProperty[] => {\n return sellProperties?.map((data) => {\n const propertyChecklist = sellChecklists?.find((checklist) => checklist?.propertyId === data.propertyId)\n const removable = !userHasRequestedContractPreparation(propertyChecklist)\n return {\n type: 'sell',\n propertyAddedDateTime: data.propertyAddedDateTime,\n propertyId: data.propertyId,\n address: data.address,\n state: data.state,\n imageUrl: data?.imageUrl || undefined,\n addressKey: data?.address,\n removable,\n propertyArchived: data.propertyArchived,\n }\n })\n}\n\nexport const prepareBuyPropertiesDataForUI = ({\n buyProperties,\n}: {\n buyProperties: WaratahPropertyWithChecklist[]\n}): BuyProperty[] => {\n return buyProperties.map((data) => ({\n type: 'buy',\n propertyAddedDateTime: data.propertyAddedDateTime,\n propertyId: data.propertyId,\n address: data.address,\n auctionDate: data.auctionDateTime,\n contractExchanged: data.contractSigned,\n imageUrl: data.imageURL,\n saleType: data.saleType === PropertySaleType.Auction ? 'auction' : ('private_treaty' as typeOfSale),\n settlementDate: data.settlementDateTime,\n state: data.state,\n removable: data.removable,\n hbjId: data.hbjId,\n propertyArchived: data.propertyArchived,\n }))\n}\n\nexport const getCombinedBuyAndSellProperties = (propertyList: CombinedPropertiesList): CombinedProperty[] => {\n const combinedProperties = propertyList.map((property) => {\n if (isMergedSellPropertyAndChecklist(property)) {\n const { propertyInfo, checklistInfo } = property as MergedSellPropertyAndChecklist\n return prepareSellPropertiesDataForUI({\n sellProperties: [propertyInfo],\n sellChecklists: [checklistInfo],\n })\n }\n if (isMergedHbjAndChecklist(property)) {\n return prepareBuyPropertiesDataForUI({\n buyProperties: [(property as MergedHbjAndChecklist).propertyChecklistInfo],\n })\n }\n return []\n })\n return combinedProperties.flat()\n}\n\nexport const sortPropertiesByPropertyAddedDateTime = ({\n combinedProperties,\n}: {\n combinedProperties: CombinedProperty[]\n}) => {\n combinedProperties.sort((a, b) => {\n if (!a.propertyAddedDateTime && !b.propertyAddedDateTime) return 0\n if (!a.propertyAddedDateTime) return 1\n if (!b.propertyAddedDateTime) return -1\n return new Date(b.propertyAddedDateTime!).getTime() - new Date(a.propertyAddedDateTime!).getTime()\n })\n}\n\nexport const isSellProperty = (data: CombinedProperty): data is SellProperty => {\n return data.type === 'sell'\n}\n\nexport const isBuyProperty = (data: CombinedProperty): data is BuyProperty => {\n return data.type === 'buy'\n}\n\nexport const getCombinedPropertiesSortedByPropertyAddedDateTime = (\n properties: CombinedPropertiesList\n): CombinedProperty[] => {\n const combinedProperties = getCombinedBuyAndSellProperties(properties)\n sortPropertiesByPropertyAddedDateTime({ combinedProperties })\n return combinedProperties\n}\n","import { SellChecklistTaskId, SellChecklistStatus } from '@home-in/models'\nimport { SellChecklist } from '@redux/reducers/sell'\n\nexport const userHasRequestedContractPreparation = (propertyChecklist: SellChecklist | undefined): boolean => {\n return !!propertyChecklist?.checklist?.some(\n (checklist) =>\n (checklist.taskId === SellChecklistTaskId.RequestContractPreparation ||\n checklist.taskId === SellChecklistTaskId.RequestContractPreparationV2) &&\n checklist.status === SellChecklistStatus.COMPLETED\n )\n}\n","import { EmojiFeedback } from '@home-in/models'\nimport React, { useState } from 'react'\nimport { useForm } from 'react-hook-form'\nimport { Button } from '@elements/button'\nimport { Card } from '@elements/card'\nimport { TextAreaField } from '@elements/forms'\nimport Illustration, { Illustrations } from '@elements/icons/illustration'\nimport { Modal } from '@elements/modal'\nimport { useMobileQuery } from '@hooks/layoutHooks'\nimport { useSendEmojiFeedbackMutation } from '@redux/apis/profile'\nimport { useAppDispatch, useAppSelector } from '@redux/hooks'\nimport { trackButtonClick } from '@redux/reducers/analytics'\nimport { setEmojiFeedback, useEmojiFeedbackSelector } from '@redux/reducers/feedback'\nimport { AnalyticsCategories } from '@utils/helpers/analytics.enum'\nimport { AnalyticsEvent } from '@utils/helpers/analytics.interface'\nimport { classNames } from '@utils/helpers/classNameHelper'\nimport { dispatchDataToMammoth, isAppOnMobilePlatform } from '../../helpers/app-data-bridge'\n\nexport const EmojiFeedbackBanner = () => {\n const emojiFeedback = useEmojiFeedbackSelector()\n const auth0id = useAppSelector((state) => state.auth.user?.sub) || ''\n const dispatch = useAppDispatch()\n const isMobile = useMobileQuery()\n const [sendEmojiFeedbackApi] = useSendEmojiFeedbackMutation()\n const [showModal, setShowModal] = useState(false)\n const emojis = ['Sad', 'Happy'] as const\n\n type emojiKeyType = (typeof emojis)[number]\n\n const methods = useForm<{ userFeedback: string }>({\n defaultValues: { userFeedback: '' },\n })\n const feedbackInput = methods.watch('userFeedback')\n\n const handleClick = (emoji: emojiKeyType) => {\n dispatch(setEmojiFeedback({ emoji, auth0id }))\n if (emoji === 'Happy') {\n dispatchDataToMammoth('promptNativeReview')\n sendFeedback(emoji)\n if (!isAppOnMobilePlatform()) setShowModal(true)\n } else setShowModal(true)\n }\n\n const dismissCall = () => {\n setShowModal(false)\n const userFeedback = methods.getValues('userFeedback')\n methods.setValue('userFeedback', '')\n sendFeedback(emojiFeedback as emojiKeyType, userFeedback)\n }\n\n const sendFeedback = (emoji: emojiKeyType, verbatim?: string) => {\n const analyticsEventBody: AnalyticsEvent = {\n action: `Emoji feedback ${emoji}`,\n category: AnalyticsCategories.FeedbackEmoji,\n value: verbatim,\n }\n\n dispatch(trackButtonClick(analyticsEventBody))\n\n sendEmojiFeedbackApi({ emoji: EmojiFeedback[emoji], verbatim })\n }\n\n return (\n <>\n \n
\n Rate your experience\n
\n
\n {emojis.map((emoji) => (\n handleClick(emoji)}\n key={emoji}\n className=\"mr-6 ml-6\"\n >\n \n \n ))}\n
\n
\n \n {emojiFeedback === 'Happy' ? (\n <>\n

\n Recommend us to other home buyers by leaving us a rating or a review.\n

\n
\n \n Write a review\n \n
\n \n ) : (\n <>\n {emojiFeedback === 'Sad' && (\n

\n What can we do to improve your experience and help you in your home buying journey?\n

\n )}\n\n
\n \n
\n {255 - (feedbackInput ? feedbackInput.length : 0)}\n
\n
\n
\n \n Submit\n \n
\n \n )}\n \n \n )\n}\n","import { Chip } from '@mui/material'\nimport Link from 'next/link'\nimport React from 'react'\nimport { Card } from '@elements/card'\n\nexport const SellSideNewFeatureBanner = ({\n callbackDismiss,\n callbackAction,\n}: {\n callbackDismiss: () => any\n callbackAction: () => any\n}) => {\n return (\n \n
\n
\n \n
\n
Selling your NSW property?
\n

\n Request a contract of sale and get ready to sell in no time.\n

\n
\n
\n \n \n Add your property\n \n \n \n \n Not now{' '}\n
\n \n
\n
\n \n
\n \"House\n
\n
\n )\n}\n","// TODO\n// ONLY move these style overrides to ThemeProvider when rolled out\n// since that would be a global style override\n// it would affect the previous search bar because it also uses Autocomplete\n\nexport const AUTOCOMPLETE_TEXTFIELD_STYLE_OVERRIDE = {\n '& .MuiOutlinedInput-root': {\n borderRadius: '50px',\n backgroundColor: 'white',\n legend: {\n marginLeft: '30px',\n },\n },\n '& .MuiAutocomplete-inputRoot': {\n paddingLeft: '20px !important',\n borderRadius: '48px',\n backgroundColor: 'white',\n },\n '& .MuiInputLabel-outlined': {\n paddingLeft: '20px',\n },\n '& .MuiInputLabel-shrink': {\n marginLeft: '20px',\n paddingLeft: '10px',\n paddingRight: 0,\n background: 'white',\n },\n '& .MuiOutlinedInput-root.Mui-focused': {\n boxShadow: '0px 1px 14px 0px #00000040',\n },\n '& .MuiOutlinedInput-input::placeholder': {\n color: 'rgba(0, 0, 0, 0.54)',\n opacity: 1,\n },\n}\n\nexport const AUTOCOMPLETE_ROOT_STYLE_OVERRIDE = {\n // Removes the green border when focused\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n '&:hover .MuiOutlinedInput-root:not(.Mui-focused) .MuiOutlinedInput-notchedOutline': {\n boxShadow: '0px 1px 14px 0px #00000040',\n border: 'none',\n },\n}\n\nexport const AUTOCOMPLETE_POPPER_COMPONENT_STYLE_OVERRIDE = {\n boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08)',\n borderRadius: '14px',\n overflow: 'hidden',\n padding: '10px',\n backgroundColor: '#FFFFFF',\n marginTop: '8px!important',\n}\n\nexport const AUTOCOMPLETE_MANUAL_ADDRESS_LINK_STYLE = {\n paddingLeft: '16px',\n paddingRight: '16px',\n color: '#0611FF',\n textDecoration: 'underline',\n cursor: 'pointer',\n}\n\nexport const AUTOCOMPLETE_PAPER_COMPONENT_STYLE = {\n marginBottom: '12px',\n}\n","import SearchIcon from '@mui/icons-material/Search'\nimport { AutocompleteRenderInputParams } from '@mui/material'\nimport InputAdornment from '@mui/material/InputAdornment'\nimport TextField from '@mui/material/TextField'\nimport React from 'react'\nimport { AUTOCOMPLETE_TEXTFIELD_STYLE_OVERRIDE } from './autocomplete-style-overrides'\n\nexport default function SearchInput({\n params,\n setSearchText,\n searchText,\n}: {\n params: AutocompleteRenderInputParams\n setSearchText: React.Dispatch>\n searchText: string\n}) {\n return (\n setSearchText(event.target.value)}\n sx={AUTOCOMPLETE_TEXTFIELD_STYLE_OVERRIDE}\n placeholder={'Search to add a property'}\n InputProps={{\n ...params.InputProps,\n // Adds the search icon to the input field\n startAdornment: (\n \n \n \n ),\n endAdornment: params.InputProps.endAdornment,\n }}\n inputProps={{ ...params.inputProps, value: params.inputProps.value ? params.inputProps.value : searchText }}\n />\n )\n}\n","import { DomainProperty, DomainPropertySuggestionResponse } from '@home-in/models'\nimport { AutocompleteRenderOptionState } from '@mui/material'\nimport React from 'react'\n\nexport default function CustomAutocompleteOption({\n props,\n option,\n}: {\n props: React.HTMLAttributes & {\n key: any\n }\n option: DomainPropertySuggestionResponse[0]\n}) {\n // Removes the bottom border for the last option\n const { id, address } = option as DomainProperty\n\n return (\n
  • \n {address}\n
  • \n )\n}\n","import Box from '@mui/material/Box'\nimport Link from '@mui/material/Link'\nimport React from 'react'\nimport {\n AUTOCOMPLETE_MANUAL_ADDRESS_LINK_STYLE,\n AUTOCOMPLETE_PAPER_COMPONENT_STYLE,\n} from './autocomplete-style-overrides'\n\nexport default function CustomAutocompletePaperComponent({\n props,\n handleOpenManualAddressDialog,\n}: {\n props: React.HTMLAttributes\n handleOpenManualAddressDialog: () => void\n}) {\n return (\n event.preventDefault()}>\n {props.children}\n {/* Reason to disable onMouseDown above - https://stackoverflow.com/a/73266338 */}\n \n {\n handleOpenManualAddressDialog()\n }}\n >\n Add address manually\n \n \n \n )\n}\n","import { Popper, PopperProps } from '@mui/material'\nimport React from 'react'\nimport { AUTOCOMPLETE_POPPER_COMPONENT_STYLE_OVERRIDE } from './autocomplete-style-overrides'\n\nexport default function CustomAutocompletePopperComponent({ props }: { props: PopperProps }) {\n return (\n \n {props.children}\n \n )\n}\n","import { DomainPropertySuggestionResponse } from '@home-in/models'\nimport Autocomplete, { AutocompleteChangeReason } from '@mui/material/Autocomplete'\nimport React, { useState } from 'react'\nimport { useAppDispatch } from '@redux/hooks'\nimport { setDomainProperty } from '@redux/reducers/add-property'\nimport AutocompleteSearchInput from './autocomplete-components/autocomplete-search-input'\nimport CustomAutocompleteOption from './autocomplete-components/autocomplete-search-option'\nimport CustomAutocompletePaperComponent from './autocomplete-components/autocomplete-search-paper-component'\nimport CustomAutocompletePopperComponent from './autocomplete-components/autocomplete-search-popper-component'\nimport { AUTOCOMPLETE_ROOT_STYLE_OVERRIDE } from './autocomplete-components/autocomplete-style-overrides'\n\nexport default function SearchProperty({\n searchText,\n setSearchText,\n addressOptions,\n setSelectedOption,\n selectedOption,\n handleOpenAddPropertyDialog,\n handleOpenManualAddressDialog,\n}: {\n searchText: string\n setSearchText: React.Dispatch>\n addressOptions: DomainPropertySuggestionResponse\n setSelectedOption: React.Dispatch>\n selectedOption: DomainPropertySuggestionResponse[0] | null\n handleOpenAddPropertyDialog: () => void\n handleOpenManualAddressDialog: () => void\n}) {\n const [optionCount, setOptionCount] = useState(0)\n const [openOptionsList, setOpenOptionsList] = useState(false)\n const dispatch = useAppDispatch()\n\n // Calling filter options to count number of options in the list\n // which is used to remove the the last option bottom border\n const filterOptions = React.useCallback((options) => {\n if (optionCount !== options.length) {\n setOptionCount(options.length)\n }\n return options\n }, [])\n\n const handlePropertySelection = (newValue: DomainPropertySuggestionResponse[0] | null) => {\n if (newValue) {\n // Save the property details in Redux store for the add-property-dialog form to use\n dispatch(setDomainProperty(newValue))\n setSelectedOption(newValue)\n handleOpenAddPropertyDialog()\n setSearchText(newValue.address || '')\n }\n }\n\n const handleClear = () => {\n setSelectedOption(null)\n setSearchText('')\n }\n\n const handleOnChange = (newValue: DomainPropertySuggestionResponse[0] | null, reason: AutocompleteChangeReason) => {\n if (reason === 'selectOption') {\n handlePropertySelection(newValue)\n } else if (reason === 'clear') {\n handleClear()\n }\n }\n const getNoOptionsText = (searchText: string): string => {\n const alphaChars = searchText.replace(/[^a-zA-Z]/g, '')\n // You need to search atleast 4 characters to get the no matchin address found message\n // This is to avoid showing the message when user is typing the first few characters\n // FYI - When you enter 2 characters, it will show actual search results instead of this get no options text message\n return alphaChars.length < 5\n ? 'Search results will appear here.'\n : 'No matching addresses found. Try refining your search or add manually.'\n }\n\n // Only show the top 5 search results\n const displayingAddressOptions = addressOptions.slice(0, 5)\n\n return (\n handleOnChange(newValue, reason)}\n sx={AUTOCOMPLETE_ROOT_STYLE_OVERRIDE}\n onFocus={() => setOpenOptionsList(true)}\n onBlur={() => setOpenOptionsList(false)}\n getOptionLabel={(option: any) => option.address}\n PopperComponent={(props) => }\n PaperComponent={(props) => (\n \n )}\n renderOption={(props, option) => }\n filterOptions={filterOptions}\n renderInput={(params) => (\n \n )}\n />\n )\n}\n","import React from 'react'\nimport { MUIAlert, MUIAlertProps } from '@elements/alert'\nimport { Button } from '@elements/button'\n\nexport const ErrorAlert = ({\n heading,\n message,\n buttonText,\n buttonCallback,\n}: {\n heading: string\n message?: string\n buttonText?: string\n buttonCallback?: () => void\n}) => (\n \n
    {heading}
    \n {message &&
    {message}
    }\n {buttonText && buttonCallback && (\n \n )}\n
    \n)\n","import {\n Address,\n DomainListingResponse,\n DomainPropertyResponse,\n MuscovyPropertySchemaType,\n PropertySaleType,\n PropertyType,\n} from '@home-in/models'\nimport { AnyAction } from '@reduxjs/toolkit'\nimport { Dispatch, useEffect } from 'react'\nimport { UseFormReturn } from 'react-hook-form'\nimport { trackEvent } from '@redux/reducers/analytics'\nimport { AnalyticsCategories } from '@utils/helpers/analytics.enum'\nimport { AddPropertyDialogFormFields } from './add-property-dialog-form'\n\nexport const usePrefillPropertyTypeWithDomainPropertyData = (\n methods: UseFormReturn,\n domainProperty?: DomainPropertyResponse\n) => {\n useEffect(() => {\n if (!domainProperty) return\n methods.setValue('propertyType', PropertyType[domainProperty?.propertyType as keyof typeof PropertyType], {\n shouldTouch: true,\n shouldValidate: true,\n })\n }, [domainProperty])\n}\n\nexport const usePrefillFormWithDomainListingData = (\n methods: UseFormReturn,\n listing: DomainListingResponse | undefined\n) => {\n useEffect(() => {\n if (listing?.saleDetails?.saleMethod === 'auction' && listing?.saleDetails?.auctionDetails?.auctionSchedule) {\n methods.setValue('saleType', PropertySaleType.Auction, { shouldTouch: true })\n const date = new Date(listing?.saleDetails?.auctionDetails?.auctionSchedule?.openingDateTime || 'invalid')\n // Convert the UTC time given to the local time based on the users system clock\n const dateWithLocalTimezoneOffset = new Date(date.getTime() - date.getTimezoneOffset() * 60000)\n const isoDateStringWithoutSeconds = (dateWithLocalTimezoneOffset.toISOString() as string).split('.')?.[0]\n if (!isNaN(date.getTime())) {\n // Auction Date input field does not support seconds\n methods.setValue('auctionDate', isoDateStringWithoutSeconds, { shouldTouch: true })\n }\n }\n if (listing?.saleDetails?.saleMethod === 'privateTreaty') {\n methods.setValue('saleType', PropertySaleType.PrivateTreaty, { shouldTouch: true })\n }\n }, [listing])\n}\n\nexport const useResetAuctionDate = (\n methods: UseFormReturn,\n saleType?: PropertySaleType\n) => {\n // Reset auction date if sale type changes\n useEffect(() => {\n if (saleType !== PropertySaleType.Auction) methods.resetField('auctionDate')\n }, [saleType])\n}\n\nexport const isSellAddressAlreadyAdded = (\n address: Address | undefined,\n sellProperties: MuscovyPropertySchemaType[] | undefined\n): boolean => {\n // Check for address already added\n const hasAddedSameProperty = sellProperties?.find((property) => {\n if (address?.full_address && property.address) {\n return address.full_address === property.address\n }\n })\n\n if (hasAddedSameProperty) {\n return true\n }\n return false\n}\n\ninterface UseFireMixpanelErrorForAddPropertyProps {\n address: Address | undefined\n dispatch: Dispatch\n addPropertyError: string\n propertyType?: PropertyType\n}\n\nexport const fireMixpanelErrorForAddProperty = ({\n address,\n dispatch,\n addPropertyError,\n propertyType,\n}: UseFireMixpanelErrorForAddPropertyProps) => {\n dispatch(\n trackEvent({\n action: `Add Property Error: ${addPropertyError}`,\n category: AnalyticsCategories.AddProperty,\n value: {\n address: address?.full_address,\n state: address?.state,\n propertyType,\n },\n })\n )\n}\n","import { Address, DomainProperty, DomainPropertyResponse, State, TransactionType, YesNo } from '@home-in/models'\nimport { AnyAction, Dispatch } from '@reduxjs/toolkit'\nimport { MutationTrigger } from '@reduxjs/toolkit/dist/query/react/buildHooks'\nimport { NextRouter } from 'next/router'\nimport { IntercomContextValues } from 'react-use-intercom'\nimport { fireToastNotifications } from '@redux/reducers/notifications'\nimport { mergeAddress } from '@redux/utils/utils'\nimport { extractDomainHeroImg } from '@utils/helpers/domain-api.helpers'\nimport { AddPropertyDialogFormFields } from './add-property-dialog-form'\n\ninterface AddBuyPropertyProps {\n router: NextRouter\n address: Address | undefined\n form: AddPropertyDialogFormFields\n dispatch: Dispatch\n hbjIdToAddProperty?: string\n addBuyProperty: MutationTrigger\n imageUrl: string\n}\n\nconst addBuyPropertyHandler = async ({\n form,\n dispatch,\n hbjIdToAddProperty,\n addBuyProperty,\n address,\n imageUrl,\n router,\n}: AddBuyPropertyProps) => {\n const result = addBuyProperty({\n hbj_id: hbjIdToAddProperty!,\n address_key: address?.id || '',\n sale_type: form.saleType,\n are_contracts_exchanged: form.contractOfSale === YesNo.Yes,\n property_type: form.propertyType,\n has_cos_ready: form.hasCosReady === YesNo.Yes,\n property_image_url: imageUrl,\n // @ts-ignore // fixing this separately.\n address: {\n ...address,\n state: address?.state as State,\n },\n auction_date: form.auctionDate ? new Date(form.auctionDate).toISOString() : '',\n })\n\n dispatch(\n fireToastNotifications({\n result,\n successMessage: 'Added property',\n errorMessage: 'Error adding property',\n })\n )\n const addBuyPropertyResponse = (await result.unwrap()) as any\n router.push(`/checklist/${addBuyPropertyResponse?.hbjId}/${addBuyPropertyResponse?.propertyId}`)\n}\n\ninterface AddSellPropertyProps {\n router: NextRouter\n address: Address | undefined\n form: AddPropertyDialogFormFields\n dispatch: Dispatch\n addSellProperty: any\n addSellChecklist: any\n imageUrl: string\n intercom: IntercomContextValues\n domainPropertySuggestion?: DomainProperty\n}\n\nconst addSellPropertyHandler = async ({\n router,\n address,\n form,\n dispatch,\n addSellProperty,\n addSellChecklist,\n imageUrl,\n intercom,\n domainPropertySuggestion,\n}: AddSellPropertyProps) => {\n const addSellPropertyResponse = await addSellProperty({\n address: address?.full_address || '',\n state: address?.state as State,\n propertyArchived: false,\n addressComponents: {\n state: address?.state as State,\n suburb: address?.suburb || '',\n postcode: address?.postcode || '',\n manualEntry: address?.manual_entry || false,\n streetNumber: address?.street_number || '',\n streetName: address?.street_name || '',\n streetType: domainPropertySuggestion?.addressComponents?.streetType || '',\n streetTypeLong: domainPropertySuggestion?.addressComponents?.streetTypeLong || '',\n unitNumber: domainPropertySuggestion?.addressComponents?.unitNumber || undefined,\n },\n transactionType: form.transactionType,\n imageUrl,\n }).unwrap()\n const result = addSellChecklist({ propertyId: addSellPropertyResponse?.propertyId })\n\n dispatch(\n fireToastNotifications({\n result,\n onlyShowError: true,\n errorMessage: 'Error adding property',\n })\n )\n await result\n intercom.update({\n customAttributes: {\n 'Sell Phase': 'Added a sell property',\n },\n })\n router.push(`/sell/checklist/${addSellPropertyResponse.propertyId}`)\n}\n\ninterface SubmitAddPropertyFormParams {\n router: NextRouter\n intercom: IntercomContextValues\n form: AddPropertyDialogFormFields\n domainPropertySuggestion?: DomainProperty\n domainProperty?: DomainPropertyResponse\n manualAddress?: Address\n dispatch: Dispatch\n // Add buy property specific stuff\n hbjIdToAddProperty?: string\n addBuyProperty: MutationTrigger\n // Add sell property specific stuff\n addSellProperty: any\n addSellChecklist: any\n}\n\nexport const submitAddPropertyForm = async ({\n form,\n domainPropertySuggestion,\n domainProperty,\n manualAddress,\n dispatch,\n hbjIdToAddProperty,\n addBuyProperty,\n addSellProperty,\n addSellChecklist,\n router,\n intercom,\n}: SubmitAddPropertyFormParams): Promise => {\n const isManual = !!manualAddress\n // TODO: Is mergeAddress really needed?\n const address = mergeAddress({\n isManual,\n manualAddress,\n domainAddress: {\n id: domainPropertySuggestion?.id,\n address: domainPropertySuggestion?.address,\n addressComponents: domainPropertySuggestion?.addressComponents,\n },\n })\n const imageUrl = extractDomainHeroImg(domainProperty)\n\n if (form.transactionType === TransactionType.Buying) {\n await addBuyPropertyHandler({ address, form, dispatch, hbjIdToAddProperty, addBuyProperty, imageUrl, router })\n } else {\n await addSellPropertyHandler({\n address,\n form,\n dispatch,\n addSellProperty,\n addSellChecklist,\n imageUrl,\n intercom,\n router,\n domainPropertySuggestion,\n })\n }\n}\n","import {\n Address,\n DomainListingResponse,\n DomainProperty,\n DomainPropertyResponse,\n PropertySaleType,\n PropertyType,\n State,\n TransactionType,\n YesNo,\n} from '@home-in/models'\nimport { MonetizationOnRounded, SellRounded } from '@mui/icons-material'\nimport { DialogContent } from '@mui/material'\nimport { useRouter } from 'next/router'\nimport React, { FC, useEffect } from 'react'\nimport { SubmitHandler, UseFormReturn } from 'react-hook-form'\nimport { useIntercom } from 'react-use-intercom'\nimport { ErrorAlert } from '@elements/error-alert'\nimport { DateTimeField, Listbox, RadioCards } from '@elements/forms'\nimport { LabelRequired } from '@elements/forms/label-required'\nimport { useAddBuyPropertyErrorUnsupportedPropertyType } from '@hooks/useAddBuyPropertyErrorUnsupportedPropertyType'\nimport { useAddSellPropertyErrorAlreadyAdded } from '@hooks/useAddSellPropertyErrorAlreadyAdded'\nimport { useAddSellPropertyErrorOutsideOfNSW } from '@hooks/useAddSellPropertyErrorOutsideOfNSW'\nimport { useFireMixpanelErrorForNoHbjId, useGetHbjIdToAddProperty } from '@hooks/useGetHbjIdToAddProperty'\nimport { useSellProperties } from '@hooks/useSellProperties'\nimport { useAddPropertyMutation } from '@redux/apis/checklist'\nimport { useAddSellChecklistMutation } from '@redux/apis/sell-checklist'\nimport { useAddSellPropertyMutation } from '@redux/apis/sell-property'\nimport { useAppDispatch, useAppSelector } from '@redux/hooks'\nimport { mergeAddress } from '@redux/utils/utils'\nimport { sevenDaysAgo } from '@utils/helpers/date.helpers'\nimport { enumToSelectOptions, filterEnumToRadioCardInputs } from '@utils/helpers/enum.helpers'\nimport {\n usePrefillFormWithDomainListingData,\n usePrefillPropertyTypeWithDomainPropertyData,\n useResetAuctionDate,\n} from './form-helpers'\nimport { submitAddPropertyForm } from './submit-add-property-form'\n\ninterface AddPropertyDialogFormProps {\n domainPropertySuggestion: DomainProperty | undefined\n domainProperty: DomainPropertyResponse | undefined\n domainListing: DomainListingResponse | undefined\n manualAddress?: Address\n handleClose: () => void\n setIsFormSubmitting: React.Dispatch>\n setDisableAddPropertyButton: React.Dispatch>\n methods: UseFormReturn\n}\n\nexport interface AddPropertyDialogFormFields {\n transactionType: TransactionType\n auctionDate?: Date | string\n contractOfSale?: string\n saleType?: PropertySaleType\n propertyType?: PropertyType\n hasCosReady?: YesNo\n}\n\nexport const AddPropertyDialogForm: FC = ({\n domainPropertySuggestion,\n domainProperty,\n manualAddress,\n domainListing,\n handleClose,\n setIsFormSubmitting,\n setDisableAddPropertyButton,\n methods,\n}) => {\n const { control, handleSubmit, watch } = methods\n const saleType = watch('saleType')\n const transactionType = watch('transactionType')\n const propertyType = watch('propertyType')\n useResetAuctionDate(methods, saleType)\n usePrefillFormWithDomainListingData(methods, domainListing)\n usePrefillPropertyTypeWithDomainPropertyData(methods, domainProperty)\n\n const dispatch = useAppDispatch()\n const router = useRouter()\n const { show: showIntercom } = useIntercom()\n\n // For adding sell property\n const sellProperties = useSellProperties()\n const [addSellProperty] = useAddSellPropertyMutation()\n const [addSellChecklist] = useAddSellChecklistMutation()\n const intercom = useIntercom()\n\n // For adding buy property\n const hbj = useAppSelector((state) => state.home.hbj)\n const propertyData = useAppSelector((state) => state.checklist.checklists) || []\n const [addBuyProperty] = useAddPropertyMutation()\n const { hbjIdToAddProperty, validToAddProperty, errorSlugToAddProperty, errorMessageToAddProperty } =\n useGetHbjIdToAddProperty({\n address: domainPropertySuggestion,\n hbj,\n manual_address: manualAddress,\n propertyData,\n })\n useFireMixpanelErrorForNoHbjId({\n address: domainPropertySuggestion,\n dispatch,\n errorSlugToAddProperty,\n })\n\n const address = mergeAddress({\n isManual: !!manualAddress,\n manualAddress,\n domainAddress: {\n id: domainPropertySuggestion?.id,\n address: domainPropertySuggestion?.address,\n addressComponents: domainPropertySuggestion?.addressComponents,\n },\n })\n const alreadyAddedError = useAddSellPropertyErrorAlreadyAdded({\n transactionType,\n address,\n sellProperties,\n })\n const outsideOfNSWError = useAddSellPropertyErrorOutsideOfNSW({\n transactionType,\n address,\n })\n const unsupportedPropertyTypeError = useAddBuyPropertyErrorUnsupportedPropertyType({\n transactionType,\n propertyType,\n address,\n })\n\n useEffect(() => {\n setDisableAddPropertyButton(\n alreadyAddedError ||\n outsideOfNSWError ||\n unsupportedPropertyTypeError ||\n (transactionType === TransactionType.Buying && !validToAddProperty)\n )\n }, [alreadyAddedError, outsideOfNSWError, unsupportedPropertyTypeError, validToAddProperty, transactionType])\n\n const onSubmit: SubmitHandler = async (form) => {\n // We don't need to setIsFormSubmitting(false) since router takes customer to\n // checklists once a property is added successfully and this state is no longer relevant\n // (Parent dialog would be dismissed during redirect)\n setIsFormSubmitting(true)\n await submitAddPropertyForm({\n form,\n domainPropertySuggestion,\n domainProperty,\n manualAddress,\n dispatch,\n hbjIdToAddProperty,\n addBuyProperty,\n addSellProperty,\n addSellChecklist,\n router,\n intercom,\n })\n }\n\n return (\n <>\n
    \n \n \n {transactionType === TransactionType.Selling && (\n <>\n {outsideOfNSWError ? (\n
    \n \n
    \n ) : (\n alreadyAddedError && (\n
    \n \n
    \n )\n )}\n \n )}\n {transactionType === TransactionType.Buying && (\n <>\n {validToAddProperty ? (\n <>\n
    \n

    \n What is the property type?\n

    \n \n {unsupportedPropertyTypeError && (\n
    \n \n
    \n )}\n
    \n\n \n\n {saleType === PropertySaleType.Auction && (\n
    \n

    When is the auction?

    \n
    \n \n
    \n
    \n )}\n \n \n ) : (\n
    \n \n
    \n )}\n \n )}\n
    \n
    \n \n )\n}\n","import { Address, MuscovyPropertySchemaType, TransactionType } from '@home-in/models'\nimport { useEffect, useState } from 'react'\nimport { fireMixpanelErrorForAddProperty, isSellAddressAlreadyAdded } from '@elements/property-search/form-helpers'\nimport { useAppDispatch } from '@redux/hooks'\n\nexport const useAddSellPropertyErrorAlreadyAdded = ({\n transactionType,\n address,\n sellProperties,\n}: {\n transactionType: TransactionType\n address: Address | undefined\n sellProperties: MuscovyPropertySchemaType[] | undefined\n}) => {\n const [alreadyAddedError, setAlreadyAddedError] = useState(false)\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n const alreadyAdded =\n transactionType === TransactionType.Selling && isSellAddressAlreadyAdded(address, sellProperties)\n\n if (alreadyAdded) {\n fireMixpanelErrorForAddProperty({\n address,\n dispatch,\n addPropertyError: 'sell-property-already-added',\n })\n }\n setAlreadyAddedError(alreadyAdded)\n }, [transactionType])\n\n return alreadyAddedError\n}\n","import { Address, State, TransactionType } from '@home-in/models'\nimport { useEffect, useState } from 'react'\nimport { fireMixpanelErrorForAddProperty } from '@elements/property-search/form-helpers'\nimport { useAppDispatch } from '@redux/hooks'\n\nexport const useAddSellPropertyErrorOutsideOfNSW = ({\n transactionType,\n address,\n}: {\n transactionType: TransactionType\n address: Address | undefined\n}) => {\n const [unsupportedStateError, setUnsupportedStateError] = useState(false)\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n const unsupportedState = transactionType === TransactionType.Selling && address?.state !== State.NSW\n\n if (unsupportedState) {\n fireMixpanelErrorForAddProperty({\n address,\n dispatch,\n addPropertyError: 'sell-property-outside-of-nsw',\n })\n }\n setUnsupportedStateError(unsupportedState)\n }, [transactionType])\n\n return unsupportedStateError\n}\n","import { Address, PropertyType, SupportedPropertyType, TransactionType } from '@home-in/models'\nimport { useEffect, useState } from 'react'\nimport { fireMixpanelErrorForAddProperty } from '@elements/property-search/form-helpers'\nimport { useAppDispatch } from '@redux/hooks'\n\nexport const useAddBuyPropertyErrorUnsupportedPropertyType = ({\n transactionType,\n propertyType,\n address,\n}: {\n transactionType: TransactionType\n propertyType: PropertyType | undefined\n address: Address | undefined\n}) => {\n const [unsupportedPropertyTypeError, setUnsupportedPropertyTypeError] = useState(false)\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n const isUnsupportedPropertyType =\n transactionType === TransactionType.Buying && !!propertyType && !SupportedPropertyType.includes(propertyType)\n\n if (isUnsupportedPropertyType) {\n fireMixpanelErrorForAddProperty({\n address,\n dispatch,\n addPropertyError: 'buy-property-type-not-supported',\n propertyType,\n })\n }\n setUnsupportedPropertyTypeError(isUnsupportedPropertyType)\n }, [transactionType, propertyType])\n\n return unsupportedPropertyTypeError\n}\n","import ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded'\nimport BedOutlinedIcon from '@mui/icons-material/BedOutlined'\nimport DirectionsCarIcon from '@mui/icons-material/DirectionsCar'\nimport HomeIcon from '@mui/icons-material/Home'\nimport ShowerIcon from '@mui/icons-material/Shower'\nimport { Dialog, DialogActions, DialogContent, Link, Typography, Divider } from '@mui/material'\nimport Image from 'next/image'\nimport React, { FC, useState } from 'react'\nimport { Button } from '@elements/button'\nimport LoadingSpinner from '@elements/loading-spinner'\nimport { extractDomainHeroImg } from '@utils/helpers/domain-api.helpers'\nimport { AddPropertyDialogContentProps } from './add-property-dialog'\nimport { AddPropertyDialogForm } from './add-property-dialog-form'\n\nexport const AddPropertyDesktopDialog: FC = ({\n open,\n handleClose,\n domainPropertySuggestion,\n domainPropertyData,\n domainListingData,\n propertyDataIsLoading,\n manual_address,\n methods,\n}) => {\n const propertyImageFromDomain = extractDomainHeroImg(domainPropertyData)\n const [isFormSubmitting, setIsFormSubmitting] = useState(false)\n const [disableAddPropertyButton, setDisableAddPropertyButton] = useState(false)\n\n return (\n \n \n
    \n {/* Left Side */}\n
    \n
    \n \n {' '}\n \n
    Tell us about your property
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n \n Get started\n \n
    \n
    \n
    \n\n {/* Right Side */}\n
    \n {propertyDataIsLoading && }\n {(domainPropertyData || manual_address) && !propertyDataIsLoading && (\n
    \n {/* Image Section */}\n
    \n
    \n \n
    \n
    \n
    \n {domainPropertyData?.address || manual_address?.full_address}\n
    \n\n
    \n \n
    \n\n
    Property Features
    \n\n
    \n {!manual_address && (\n <>\n
    \n
    \n \n \n Land size: {domainPropertyData?.areaSize ? `${domainPropertyData?.areaSize}m²` : '--'}\n \n
    \n
    \n \n Car space: {domainPropertyData?.carSpaces || '--'}\n
    \n
    \n
    \n
    \n \n Bedroom: {domainPropertyData?.bedrooms || '--'}\n
    \n
    \n \n Bathroom: {domainPropertyData?.bathrooms || '--'}\n
    \n
    \n \n )}\n {manual_address &&

    Not available

    }\n
    \n
    \n )}\n
    \n
    \n
    \n \n )\n}\n","import ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded'\nimport BedOutlinedIcon from '@mui/icons-material/BedOutlined'\nimport DirectionsCarIcon from '@mui/icons-material/DirectionsCar'\nimport HomeIcon from '@mui/icons-material/Home'\nimport ShowerIcon from '@mui/icons-material/Shower'\nimport { Dialog, DialogActions, DialogContent, Divider, Link } from '@mui/material'\nimport Image from 'next/image'\nimport React, { FC, useState } from 'react'\nimport { Button } from '@elements/button'\nimport LoadingSpinner from '@elements/loading-spinner'\nimport { extractDomainHeroImg } from '@utils/helpers/domain-api.helpers'\nimport { AddPropertyDialogContentProps } from './add-property-dialog'\nimport { AddPropertyDialogForm } from './add-property-dialog-form'\n\nexport const AddPropertyMobileContent: FC = ({\n open,\n handleClose,\n domainPropertySuggestion,\n domainPropertyData,\n propertyDataIsLoading,\n manual_address,\n domainListingData,\n methods,\n}) => {\n const domainHeroImg = extractDomainHeroImg(domainPropertyData)\n const [isFormSubmitting, setIsFormSubmitting] = useState(false)\n const [disableAddPropertyButton, setDisableAddPropertyButton] = useState(false)\n\n return (\n \n \n
    \n \n
    \n\n \n \n {' '}\n \n \n\n {propertyDataIsLoading && }\n {(domainPropertyData || manual_address) && !propertyDataIsLoading && (\n <>\n
    \n {domainPropertyData?.address || manual_address?.full_address}\n
    \n\n
    \n
    \n \n {domainPropertyData?.areaSize ? `${domainPropertyData?.areaSize}m²` : '--'}\n
    \n
    \n \n \n {domainPropertyData?.carSpaces\n ? `${domainPropertyData.carSpaces} ${domainPropertyData.carSpaces === 1 ? 'garage' : 'garages'}`\n : '--'}\n \n
    \n
    \n \n \n {domainPropertyData?.bedrooms\n ? `${domainPropertyData.bedrooms} ${domainPropertyData.bedrooms === 1 ? 'room' : 'rooms'}`\n : '--'}\n \n
    \n
    \n \n \n {domainPropertyData?.bathrooms\n ? `${domainPropertyData.bathrooms} ${domainPropertyData.bathrooms === 1 ? 'bath' : 'baths'}`\n : '--'}\n \n
    \n
    \n \n )}\n
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n \n Get started\n \n
    \n
    \n
    \n
    \n \n )\n}\n","import {\n Address,\n DomainListingResponse,\n DomainProperty,\n DomainPropertyResponse,\n TransactionType,\n} from '@home-in/models'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport React, { FC, useEffect } from 'react'\nimport { useForm, UseFormReturn } from 'react-hook-form'\nimport { useGetDomainListingData } from '@hooks/useGetDomainListingData'\nimport { useGetDomainPropertyData } from '@hooks/useGetDomainPropertyData'\nimport { useAppDispatch, useAppSelector } from '@redux/hooks'\nimport { trackPageView } from '@redux/reducers/analytics'\nimport { AnalyticsCategories } from '@utils/helpers/analytics.enum'\nimport { AddPropertyDesktopDialog } from './add-property-dialog-desktop'\nimport { AddPropertyDialogFormFields } from './add-property-dialog-form'\nimport { AddPropertyMobileContent } from './add-property-dialog-mobile'\n\ninterface AddPropertyDialogProps {\n open: boolean\n handleClose: () => void\n}\nexport interface AddPropertyDialogContentProps {\n open: boolean\n handleClose: () => void\n domainPropertySuggestion: DomainProperty | undefined\n domainPropertyData: DomainPropertyResponse | undefined\n domainListingData: DomainListingResponse | undefined\n propertyDataIsLoading: boolean\n manual_address: Address | undefined\n methods: UseFormReturn\n}\n\nexport const AddPropertyDialog: FC = ({ open, handleClose }) => {\n const dispatch = useAppDispatch()\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\n const { domain_property, manual_address } = useAppSelector((state) => state.addProperty)\n const { domainPropertyData, isLoading: propertyDataIsLoading } = useGetDomainPropertyData(domain_property?.id)\n const { domainListingData } = useGetDomainListingData(domainPropertyData)\n const methods = useForm({\n mode: 'all',\n reValidateMode: 'onSubmit',\n criteriaMode: 'all',\n defaultValues: {\n transactionType: TransactionType.Buying,\n },\n })\n\n useEffect(() => {\n dispatch(\n trackPageView({\n action: 'Add property',\n category: AnalyticsCategories.PageView,\n })\n )\n }, [])\n\n return (\n <>\n {isMobile ? (\n \n ) : (\n \n )}\n \n )\n}\n","import { DomainPropertyResponse } from '@home-in/models'\nimport { useEffect } from 'react'\nimport { useLazyGetPropertyQuery } from '@redux/apis/domain'\n\nexport const useGetDomainPropertyData = (\n domainPropertyId: string | null | undefined\n): { domainPropertyData: DomainPropertyResponse | undefined; isLoading: boolean } => {\n // Get property info from Domain.com.au API\n const [getProperty, { data: domainPropertyData, isLoading }] = useLazyGetPropertyQuery()\n useEffect(() => {\n if (!domainPropertyId) return\n getProperty(domainPropertyId)\n }, [domainPropertyId])\n\n return { domainPropertyData, isLoading }\n}\n","import { DomainPropertyResponse } from '@home-in/models'\nimport { useEffect } from 'react'\nimport { useLazyGetListingQuery } from '@redux/apis/domain'\n\n// You should use `useGetDomainPropertyData` to get the `domainProperty`\nexport const useGetDomainListingData = (domainProperty: DomainPropertyResponse | null | undefined) => {\n // Get listing info from Domain.com.au API\n const [getListing, { data: domainListingData, isLoading }] = useLazyGetListingQuery()\n useEffect(() => {\n if (!domainProperty) return\n if (Array.isArray(domainProperty.adverts) && domainProperty.adverts?.[0]?.advertId) {\n getListing(domainProperty.adverts[0].advertId)\n }\n }, [domainProperty])\n\n return { domainListingData, isLoading }\n}\n","import { Address } from '@home-in/models'\nimport ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded'\nimport { Dialog, DialogActions, DialogContent, DialogTitle, Divider, Link } from '@mui/material'\nimport { useTheme } from '@mui/material/styles'\nimport useMediaQuery from '@mui/material/useMediaQuery'\nimport React, { FC } from 'react'\nimport { UseFormReturn } from 'react-hook-form'\nimport { Button } from '@elements/button'\nimport { ManualAddressProps } from '@elements/forms/groups/manual-address'\nimport { ManualAddressV2 } from '@elements/forms/groups/manual-address-v2'\nimport { useAppDispatch } from '@redux/hooks'\nimport { setManualAddress } from '@redux/reducers/add-property'\nimport { mergeAddress } from '@redux/utils/utils'\n\ninterface ManualAddPropertyDialogProps extends Partial {\n open: boolean\n handleClose: () => void\n handleOpenAddPropertyDialog: () => void\n formMethods: UseFormReturn
    \n}\n\nexport const ManualAddPropertyDialog: FC = ({\n open,\n handleClose,\n handleOpenAddPropertyDialog,\n formMethods,\n}) => {\n const theme = useTheme()\n const fullScreen = useMediaQuery(theme.breakpoints.down('md'))\n const { control, handleSubmit } = formMethods\n\n const dispatch = useAppDispatch()\n const onSubmit = (form: any) => {\n // Save the property details in Redux store for the add-property-dialog form to use\n const address = mergeAddress({\n isManual: true,\n manualAddress: {\n ...form['manual_add_property_dialog_from_property_search'],\n manual_entry: true,\n },\n domainAddress: undefined,\n })\n if (address) {\n dispatch(setManualAddress(address))\n }\n handleClose()\n handleOpenAddPropertyDialog()\n }\n\n return (\n <>\n \n
    \n \n \n {' '}\n {' '}\n \n \n {'Tell us about your property'}\n \n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n \n \n \n )\n}\n","import { Address, DomainPropertySuggestionResponse } from '@home-in/models'\nimport React, { useEffect, useState } from 'react'\nimport { useForm } from 'react-hook-form'\nimport { useDebouncedCallback } from 'use-debounce'\nimport PropertySearchBar from '@elements/property-search/property-search-bar'\nimport { useLazySuggestPropertiesQuery } from '@redux/apis/domain'\nimport { AddPropertyDialog } from './add-property-dialog'\nimport { ManualAddPropertyDialog } from './manual-add-property-dialog'\n\nexport default function PropertySearch() {\n const [searchText, setSearchText] = useState('')\n const [selectedOption, setSelectedOption] = useState(null)\n const [fetchSuggestProperties, { data }] = useLazySuggestPropertiesQuery()\n\n const doPropertySearch = useDebouncedCallback(async (address: string): Promise => {\n await fetchSuggestProperties({ terms: address, time: new Date().toString() })\n }, 300)\n\n useEffect(() => {\n doPropertySearch(searchText)\n }, [searchText])\n\n // Add property dialog\n const [openAddPropertyDialog, setAddPropertyDialogOpen] = useState(false)\n const handleOpenAddPropertyDialog = () => {\n setAddPropertyDialogOpen(true)\n }\n const handleCloseAddPropertyDialog = () => {\n setAddPropertyDialogOpen(false)\n }\n\n // Manual address dialog\n const formMethods = useForm
    ()\n const [openManualAddressDialog, setManualAddressDialogOpen] = useState(false)\n const handleOpenManualAddressDialog = () => {\n setManualAddressDialogOpen(true)\n }\n\n const handleCloseManualAddressDialog = () => {\n setManualAddressDialogOpen(false)\n }\n\n return (\n
    \n \n {openAddPropertyDialog && (\n \n )}\n {openManualAddressDialog && (\n \n )}\n
    \n )\n}\n","import React from 'react'\nimport { ContentWrapper } from '@elements/content-wrapper'\nimport PropertySearchBar from '@elements/property-search/property-search-bar-container'\n\nexport const FullWidthPropertySearchBar = () => (\n
    \n
    \n
    \n \n
    \n Ready to buy or sell?\n
    \n \n
    \n
    \n
    \n)\n","import { MuscovyPropertySchemaType } from '@home-in/models'\nimport Image, { StaticImageData } from 'next/image'\nimport Link from 'next/link'\nimport React, { FC } from 'react'\nimport { Card } from '@elements/card'\nimport { Icon, Icons } from '@elements/icons/icon'\nimport { generateTrashIconId } from '@features/home/utils/generate-trash-icon'\n\nconst TrashIcon = ({ id, handleRemoveClick }: { id: string; handleRemoveClick: () => void }) => (\n {\n e.stopPropagation() // Prevents the click event from bubbling up to the parent Link component\n handleRemoveClick()\n }}\n className=\"cursor-pointer rounded-full text-black transition-all duration-300 hover:text-error\"\n id={id}\n >\n \n \n)\n\nexport enum PropertyCardType {\n buy = 'buy',\n sell = 'sell',\n}\n\ninterface PropertyCardUI {\n link: string\n handleRemoveClick: () => void\n propertyAddress: string\n cardSubtitle?: string\n imgSource: string | StaticImageData\n sellChecklists: MuscovyPropertySchemaType[]\n propertyType: PropertyCardType\n}\n\nexport const PropertyCardUIContainer: FC<{}> = ({ children }) => (\n
    {children}
    \n)\n\nconst PropertyCardTag: FC<{}> = ({ children }) => (\n
    {children}
    \n)\n\nconst PropertyCardItem: FC = ({\n link,\n handleRemoveClick,\n propertyAddress,\n cardSubtitle,\n imgSource,\n propertyType,\n}) => {\n const purchaseTypeString = propertyType === PropertyCardType.buy ? 'Buy Property' : 'Sell Property'\n return (\n \n \n {/* Role is used by the smoke test add property selector */}\n
    \n
    \n
    \n \n
    \n {propertyAddress}\n
    \n\n
    \n
    {propertyAddress}
    \n
    \n
    \n {purchaseTypeString}\n {cardSubtitle && {cardSubtitle}}\n
    \n \n View full checklist\n \n
    \n \n
    \n )\n}\n\nexport const PropertyCardUIWrapper: FC = ({\n link,\n cardSubtitle,\n handleRemoveClick,\n imgSource,\n propertyAddress,\n sellChecklists,\n propertyType,\n}) => {\n return (\n \n )\n}\n","import React, { PropsWithChildren, useEffect, useRef, useState } from 'react'\nimport { Card } from '@elements/card'\nimport { IconButton, Icons } from '@elements/icons/icon'\nimport Illustration, { Illustrations } from '@elements/icons/illustration'\nimport { classNames } from '@utils/helpers/classNameHelper'\n\ninterface NotificationItemProps {\n title?: string\n message?: string\n illustration?: Illustrations\n callback?: () => void\n index?: number\n length?: number\n active?: boolean\n component?: JSX.Element\n}\n\nexport type NotificationItem = PropsWithChildren\n\nconst Item = (props: NotificationItem) => {\n return (\n
    \n \n {props.children ?? (\n \n )}\n \n
    \n )\n}\n\nconst ItemInterior = (props: Partial) => {\n return (\n <>\n \n
    \n
    {props.title}
    \n
    {props.message}
    \n
    \n {!!props.callback && (\n \n )}\n \n )\n}\n\nexport const NotificationGroup = ({ max = 2, items }: { max?: number; items: NotificationItem[] }) => {\n const ref = useRef(null)\n const [opened, setOpened] = useState(false)\n const [height, setHeight] = useState('0px')\n\n useEffect(() => {\n setHeight(opened ? `${ref.current?.scrollHeight || 0}px` : '0px')\n }, [opened])\n\n if (!items?.length) return null\n\n return (\n
    \n {(max < items.length || opened) && (\n
    \n
    \n Showing {opened ? items.length : max} of {items.length}\n setOpened(!opened)}\n />\n
    \n
    \n )}\n
    \n {items.slice(0, max).map((item, idx) =>\n !!item.component ? (\n \n {item.component}\n \n ) : (\n \n )\n )}\n \n {items.length !== max &&\n items.slice(max - items.length).map((item, idx) =>\n item.component ? (\n \n {item.component}\n \n ) : (\n \n )\n )}\n
    \n
    \n \n )\n}\n","import { GetHomeBuyingJourneyLoan, LoanStatusHome } from '@home-in/models'\nimport React from 'react'\nimport { Icon, Icons } from '@elements/icons/icon'\nimport { InfoIcon } from '@elements/info-icon'\nimport { Tooltip } from '@elements/tooltip'\n\nexport const PreApprovalCard = ({ loanAmount = '', status = '', expiryDate }: GetHomeBuyingJourneyLoan) => {\n const formatter = new Intl.NumberFormat('en-AU', {\n style: 'currency',\n currency: 'AUD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n })\n\n if (status === LoanStatusHome.InProgress) {\n return (\n
    \n \n
    \n

    Your conditional pre-approval

    \n In Progress\n
    \n
    \n )\n }\n\n if (!loanAmount) return null\n return (\n
    \n \n
    \n Your conditional pre-approval\n
    \n
    \n

    {formatter.format(Number(loanAmount))}

    \n \n \n \n
    \n {expiryDate && Valid until {expiryDate}}\n
    \n
    \n
    \n )\n}\n","import { useAppSelector } from '@redux/hooks'\n\n// Function to parse a date string in the format \"DD/MM/YYYY\" and return a Date object\nconst parseDate = (dateString: string): Date | undefined => {\n if (!dateString) return undefined\n const [day, month, year] = dateString.split('/').map(Number)\n return new Date(year, month - 1, day)\n}\n\nconst useCBAPreApprovalHBJ = () => {\n const allHbjs = useAppSelector((state) => state.home.hbj)\n const hbjsWithLoanAmounts = allHbjs.filter((hbj) => !!hbj.loan.loanAmount)\n\n if (hbjsWithLoanAmounts.length === 0) {\n return undefined\n }\n\n const hbjWithLatestExpiry = hbjsWithLoanAmounts.reduce((latest, current) => {\n const latestExpiry = parseDate(latest.loan.expiryDate)\n const currentExpiry = parseDate(current.loan.expiryDate)\n\n if (!latestExpiry) return current\n if (!currentExpiry) return latest\n\n return currentExpiry > latestExpiry ? current : latest\n }, hbjsWithLoanAmounts[0])\n\n return hbjWithLatestExpiry\n}\n\nexport default useCBAPreApprovalHBJ\n","import OpenInNewIcon from '@mui/icons-material/OpenInNew'\nimport Link from 'next/link'\nimport React from 'react'\nimport { Card } from '@elements/card'\n\ninterface AboutCardProps {\n title: string\n description: string\n linkText: string\n linkUrl: string\n external?: boolean\n}\n\nconst AboutCard: React.FC = ({ title, description, linkText, linkUrl, external = false }) => (\n \n
    {title}
    \n
    {description}
    \n
    \n \n \n {linkText}\n \n \n {external && (\n
    \n \n
    \n )}\n
    \n
    \n)\n\nexport const AboutHomeInCards = () => (\n
    \n \n \n
    \n)\n","import React, { HTMLAttributes } from 'react'\nimport { Card } from '@elements/card'\nimport Illustration, { Illustrations } from '@elements/icons/illustration'\nimport { classNames } from '@utils/helpers/classNameHelper'\n\ninterface IAddPropertyBanner extends HTMLAttributes {\n heading?: string\n content?: string\n}\n\nexport const AddPropertyBanner = ({\n className,\n heading = 'Buying a new home?',\n content = 'Unlock your personalised home buying checklist, access quality conveyancing, get a contract reviewed and more!',\n}: IAddPropertyBanner) => {\n return (\n \n
    \n \n
    \n
    \n {heading}\n {content}\n
    \n
    \n )\n}\n","import React, { FC } from 'react'\nimport { AddPropertyBanner } from '@elements/banners/add-property-banner'\n\nexport const AddPropertyCard: FC = () => {\n return (\n \n )\n}\n","// We need unique id for trash icon associated with a property to locate it in smoke test for archiving the property\nexport const generateTrashIconId = (isMobile: boolean, address: string) => {\n const platform = isMobile ? 'mobile' : 'desktop'\n if (!address) return `trash-icon-${platform}`\n return `trash-icon-${platform}-${address.split(',')?.[0].split(' ').join('-').toLowerCase()}`\n}\n","import { CampaignOffer } from '@home-in/models'\nimport React from 'react'\nimport { CbaFreeContractReviewOfferTile } from '@elements/banners/cba-free-contract-review-offer'\nimport { CBAWorkPlaceBankingOfferTile } from '@elements/banners/cba-workplace-banking-offer'\nimport { CBAYelloOfferTile } from '@elements/banners/cba-yello-offer'\nimport { useGetOffers } from '@hooks/useGetOffers'\nimport { EnhancedHomeInnerSection, EnhancedHomeSubtitle } from '../parts/activity'\n\ninterface OfferTileComponentMap {\n [key: string]: React.FC\n}\n\nconst offerTilesComponentMap: OfferTileComponentMap = {\n [CampaignOffer.YelloOffer001]: CBAYelloOfferTile,\n [CampaignOffer.CBAFreeContractReview]: CbaFreeContractReviewOfferTile,\n [CampaignOffer.CBAWorkplaceBanking001]: CBAWorkPlaceBankingOfferTile,\n}\n\nexport const YourOffers = () => {\n const campaignOffers = useGetOffers()\n const offerTiles = campaignOffers.map((campaignOffer) => offerTilesComponentMap[campaignOffer])\n\n if (!offerTiles.length) {\n return <>\n }\n\n return (\n
    \n \n Your offers\n
    \n {offerTiles.map((OfferTile, index) => (\n \n ))}\n
    \n
    \n
    \n )\n}\n","import { TransactionType } from '@home-in/models'\nimport React from 'react'\nimport { Button } from '@elements/button'\nimport { InfoIcon } from '@elements/info-icon'\n\ninterface PropertyModalContentProps {\n removable: boolean\n removeProperty: () => void\n cancel: () => void\n transactionType: TransactionType\n}\n\nconst ContactSupportContent = ({ transactionType }: { transactionType: TransactionType }) =>\n transactionType === TransactionType.Selling ? (\n <>\n
    Remove property
    \n

    You have already requested a contract preparation.

    \n

    \n If you no longer want to proceed contact your conveyancer who can advise of any associated costs.\n

    \n \n ) : (\n <>\n
    Are you sure you want to remove this property?
    \n

    \n You have already signed the contract. If you want to rescind this contract, you’ll need to ensure you have made\n adequate legal enquiries as you could incur major financial penalties.\n

    \n

    \n If you still want to proceed and permanently remove this property from your dashboard, Get in Touch with your\n Buying Assistant.\n

    \n \n )\nconst RemovePropertyContent = () => (\n <>\n
    Are you sure you want to remove this property?
    \n

    \n The property will be permanently removed from your dashboard. Any associated documents will remain available under\n the Documents tab.\n

    \n
    \n \n \n \n Please note:\n {' '}\n If any conveyancing services relating to this property are in progress at the time of removing, you will incur\n any associated conveyancing fees as per the Cost Agreement.\n \n
    \n \n)\n\nexport const RemovePropertyModal = ({\n removeProperty,\n cancel,\n removable,\n transactionType,\n}: PropertyModalContentProps) => {\n return (\n
    \n {removable ? : }\n {removable && (\n \n )}\n
    \n \n
    \n
    \n )\n}\n","import { SliceProperty, StateType, TransactionType } from '@home-in/models'\nimport React from 'react'\nimport mock_property from '@public/mock/checklist-property.png'\nimport { useRemovePropertyMutation } from '@redux/apis/checklist'\nimport { useArchiveSellPropertyMutation } from '@redux/apis/sell-property'\nimport { useAppDispatch, useAppSelector } from '@redux/hooks'\nimport { trackButtonClick } from '@redux/reducers/analytics'\nimport { disableModal, enableModal, setModalContent } from '@redux/reducers/modal'\nimport { fireToastNotifications } from '@redux/reducers/notifications'\nimport { AnalyticsCategories, ButtonClickEventNames } from '@utils/helpers/analytics.enum'\nimport { PropertyCardType, PropertyCardUIWrapper } from './property-card-ui'\nimport { getPropertySubtitle } from './property-card.helpers'\nimport { RemovePropertyModal } from './remove-property-modal'\n\nexport const PropertyCard = ({ hbjId, property, propertyId }: SliceProperty) => {\n const [removeProperty] = useRemovePropertyMutation()\n const dispatch = useAppDispatch()\n const sellChecklists = useAppSelector((state) => state.sell.sellProperties)\n const imgSource = property.imageUrl ? `${property.imageUrl}/800x800` : mock_property\n\n const cardSubtitle = getPropertySubtitle({\n auctionDate: property.auctionDate,\n saleType: property.saleType,\n settlementDate: property.settlementDate,\n })\n\n const handleCancelModal = () => {\n dispatch(setModalContent(null))\n dispatch(disableModal())\n }\n const handleRemoveProperty = async () => {\n dispatch(setModalContent(null))\n dispatch(disableModal())\n const result = removeProperty({ hbj: hbjId, propertyId })\n dispatch(fireToastNotifications({ result, optimisticUIUpdate: true, successMessage: 'Removed property' }))\n }\n\n const handleRemoveClick = () => {\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.RemovePropertyIcon,\n category: AnalyticsCategories.Property,\n })\n )\n\n dispatch(\n setModalContent(\n \n )\n )\n dispatch(enableModal())\n }\n\n return (\n \n )\n}\n\n// TODO declare this in Platypus when we have the final data design for sell property\ninterface SellPropertyCardInterface {\n propertyId: string\n property: {\n addressKey: string\n address: string\n state: StateType\n imageUrl: string | undefined\n }\n removable: boolean\n}\n\nexport const SellPropertyCard = ({ property, propertyId, removable }: SellPropertyCardInterface) => {\n const [archiveSellProperty] = useArchiveSellPropertyMutation()\n const dispatch = useAppDispatch()\n const sellChecklists = useAppSelector((state) => state.sell.sellProperties)\n const imgSource = property?.imageUrl || mock_property\n\n const handleCancelModal = () => {\n dispatch(setModalContent(null))\n dispatch(disableModal())\n }\n const handleRemoveProperty = async () => {\n dispatch(setModalContent(null))\n dispatch(disableModal())\n const result = archiveSellProperty({ propertyId })\n dispatch(fireToastNotifications({ result, optimisticUIUpdate: true, successMessage: 'Removed property' }))\n }\n\n const handleRemoveClick = () => {\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.RemovePropertyIcon,\n category: AnalyticsCategories.Property,\n })\n )\n\n dispatch(\n setModalContent(\n \n )\n )\n dispatch(enableModal())\n }\n\n return (\n \n )\n}\n","const card = 'relative cursor-pointer hover:text-primary h-full'\nconst cardBody = 'p-4'\nconst imageWrapper = 'relative h-56 min-h-56 mb-4'\nconst image = 'object-cover rounded-xl'\nconst contentWrapper = 'mb-1'\nconst address = 'text-lg text-muted-dark-800'\nconst floatingButton =\n 'absolute right-3 top-3 block text-black rounded-full bg-white p-1 transition-all duration-300 hover:text-error'\n\nexport const styles = {\n card,\n cardBody,\n imageWrapper,\n image,\n contentWrapper,\n address,\n floatingButton,\n}\n","import { TransactionType, typeOfSale } from '@home-in/models'\nimport { Card } from '@mui/material'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport React, { FC } from 'react'\nimport { Icon, Icons } from '@elements/icons/icon'\nimport mock_property from '@public/mock/checklist-property.png'\nimport { useAppDispatch } from '@redux/hooks'\nimport { trackButtonClick } from '@redux/reducers/analytics'\nimport { disableModal, enableModal, setModalContent } from '@redux/reducers/modal'\nimport { fireToastNotifications } from '@redux/reducers/notifications'\nimport { AnalyticsCategories, ButtonClickEventNames } from '@utils/helpers/analytics.enum'\nimport { getPropertySubtitle } from '../property-card.helpers'\nimport { RemovePropertyModal } from '../remove-property-modal'\nimport { styles } from './property-card.styles'\n\ninterface Props {\n imageUrl?: string\n auctionDate?: string\n saleType?: typeOfSale\n settlementDate?: string\n isRemovable?: boolean\n address: string\n removeProperty: Function\n tags?: string[]\n link: string\n transactionType: TransactionType\n propertyId?: string\n}\n\nexport const PropertyCardV2: FC = (props) => {\n const dispatch = useAppDispatch()\n const imgSource = props.imageUrl ?? mock_property\n\n const hideModal = () => {\n dispatch(setModalContent(null))\n dispatch(disableModal())\n }\n\n const removePropertyHandler = async () => {\n hideModal()\n const result = props.removeProperty()\n dispatch(fireToastNotifications({ result, optimisticUIUpdate: true, successMessage: 'Removed property' }))\n }\n\n const showRemovePropertyModal = () => {\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.RemovePropertyIcon,\n category: AnalyticsCategories.Property,\n })\n )\n\n dispatch(\n setModalContent(\n \n )\n )\n dispatch(enableModal())\n }\n\n const getFloatingButton = () => {\n const clickHandler = (e: React.MouseEvent) => {\n e.stopPropagation()\n showRemovePropertyModal()\n }\n\n return (\n \n )\n }\n\n const getTags = () => {\n const tagStyle = 'pr-4 text-sm text-muted-dark-600'\n\n const saleStatus = getPropertySubtitle({\n auctionDate: props.auctionDate,\n saleType: props.saleType,\n settlementDate: props.settlementDate,\n })\n\n const tags = [saleStatus]\n\n if (props.tags) {\n tags.push(...props.tags)\n }\n\n return tags.map((tag, index) => (\n \n {tag}\n \n ))\n }\n\n return (\n \n \n
    \n
    \n {props.address}\n\n {getFloatingButton()}\n
    \n\n
    \n
    {props.address}
    \n\n {getTags()}\n
    \n
    \n \n
    \n )\n}\n","import { SliceProperty, TransactionType } from '@home-in/models'\nimport React, { FC } from 'react'\nimport { useRemovePropertyMutation } from '@redux/apis/checklist'\nimport { PropertyCardV2 } from './property-card'\n\nexport const BuyPropertyCardV2: FC = ({ hbjId, property, propertyId }) => {\n const [removeProperty] = useRemovePropertyMutation()\n\n const removePropertyHandler = () => {\n removeProperty({ hbj: hbjId, propertyId: propertyId })\n }\n\n const imageUrl = property.imageUrl ? `${property.imageUrl}/800x800` : undefined\n\n return (\n \n )\n}\n","import { StateType, TransactionType } from '@home-in/models'\nimport React, { FC } from 'react'\nimport { useArchiveSellPropertyMutation } from '@redux/apis/sell-property'\nimport { PropertyCardV2 } from './property-card'\n\ninterface Property {\n addressKey: string\n address: string\n state: StateType\n imageUrl?: string | undefined\n}\n\ninterface Props {\n propertyId: string\n property: Property\n removable?: boolean\n}\n\nexport const SellPropertyCardV2: FC = ({ property, propertyId, removable }) => {\n const [archiveSellProperty] = useArchiveSellPropertyMutation()\n\n const removePropertyHandler = () => {\n archiveSellProperty({ propertyId })\n }\n\n const imageUrl = property.imageUrl ? property.imageUrl : undefined\n\n return (\n \n )\n}\n","import { useFlags } from 'launchdarkly-react-client-sdk'\nimport React from 'react'\nimport {\n CombinedProperty,\n isBuyProperty,\n isSellProperty,\n SellProperty,\n BuyProperty,\n} from '../../utils/get-properties.helper'\nimport { SellPropertyCard, PropertyCard } from './property-card'\nimport { BuyPropertyCardV2 } from './v2/property-card.buy'\nimport { SellPropertyCardV2 } from './v2/property-card.sell'\n\nconst SellPropertyCardComponent = ({ property }: { property: SellProperty }) => {\n return (\n
    \n \n
    \n )\n}\n\nconst BuyPropertyCardComponent = ({ property }: { property: BuyProperty }) => {\n return (\n
    \n \n
    \n )\n}\n\nconst SellPropertyCardComponentV2 = ({ property }: { property: SellProperty }) => {\n return (\n
    \n \n
    \n )\n}\n\nconst BuyPropertyCardComponentV2 = ({ property }: { property: BuyProperty }) => {\n return (\n
    \n \n
    \n )\n}\n\nexport const PropertyCards = ({ properties }: { properties: CombinedProperty[] }) => {\n const { propertyCardV2 } = useFlags()\n\n if (propertyCardV2) {\n return (\n <>\n {properties.map((data, idx) => {\n if (isSellProperty(data)) {\n return \n }\n\n if (isBuyProperty(data)) {\n return \n }\n\n return null\n })}\n \n )\n }\n\n return (\n <>\n {properties.map((data, idx) => {\n if (isSellProperty(data)) {\n return \n }\n\n if (isBuyProperty(data)) {\n return \n }\n\n return null\n })}\n \n )\n}\n","import React, { useState } from 'react'\nimport { Card } from '@elements/card'\nimport { LinkStyled } from '@elements/forms/link'\nimport { Icon, Icons } from '@elements/icons/icon'\nimport { Modal } from '@elements/modal'\n\nconst LearnMoreModalContent = () => (\n <>\n
    Learn More
    \n

    \n You’re eligible for the offer if you use the in-app legal services provided through Home-in. To secure the offer\n you will need to engage the services of Home-in’s partner law firm via the Home-in app. Customers will receive one\n Contract Review at no cost. If you proceed to use the Home-in app to settle on your property, full conveyancing\n and disbursements are additional and charged at cost.\n

    \n

    \n In conjunction to this offer, you may be eligible for an additional discount if you 1) Settle on a property with a\n CommBank home loan, and 2) Use the in-app legal services provided through Home-in. Eligible customers will receive\n a discount of $500 off the conveyancing fee, and disbursements are additional and charged at cost. Home-in\n reserves the right to terminate the offer and change the pricing at any time. Find out more about Home-in’s\n pricing by visiting{' '}\n \n home-in.com.au/pricing\n \n .\n

    \n \n)\n\nexport const CbaFreeContractReviewOfferTile = () => {\n const [showModal, setShowModal] = useState(false)\n\n return (\n <>\n \n \n
    Free contract review offer
    \n

    \n Get your first contract of sale reviewed for free. If you proceed to use the Home-in app to settle on your\n property, conveyancing fees and disbursements are additional and charged at cost.\n

    \n setShowModal(true)}\n className=\"cursor-pointer text-sm text-primary-700 hover:text-primary-800 sm:text-base\"\n >\n Learn more\n \n
    \n setShowModal(false)} quickDismiss={true}>\n \n \n \n )\n}\n","import Chip from '@mui/material/Chip'\nimport Grid from '@mui/material/Grid'\nimport React, { useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { Card } from '@elements/card'\nimport { LinkStyled } from '@elements/forms/link'\nimport { Icon, Icons } from '@elements/icons/icon'\nimport { Modal } from '@elements/modal'\nimport { trackButtonClick } from '@redux/reducers/analytics'\nimport { CBA_WORKPLACE_BANKING_OFFER_EXPIRY_DATE } from '@utils/constants/date.constants'\nimport { AnalyticsCategories, ButtonClickEventNames } from '@utils/helpers/analytics.enum'\nimport { isOfferExpired, formatDateWithOrdinalSuffix } from '@utils/helpers/date.helpers'\n\nconst LearnMoreOfferModalContents = () => {\n return (\n <>\n
    Learn More
    \n
    \n

    CommBank Workplace Banking Exclusive Offer

    \n

    \n *You're eligible for the offer if you:\n

    \n
      \n
    • \n 1) Are a CommBank Workplace Banking Customer,\n
    • \n
    • \n 2) Sign up for Home-in via the CommBank Workplace Banking Portal,\n
    • \n
    • \n 3) Settle on your Home-in property with a CommBank home loan by 30\n June 2025, and\n
    • \n
    • \n 4) Use the in-app legal services provided through Home-in for your\n Home-in property purchase.\n
    • \n
    \n

    \n This offer is only available through CommBank's proprietary channels, it is not available to customers\n that originate through Bankwest, Unloan or a broker channel.\n

    \n

    \n To secure the offer you will need to engage the services of Home-in's partner law firm via the Home-in\n app. Fulfilment of the offer will be completed by Home-in.\n

    \n

    \n Eligible customers will receive either a discount of $1000 off the conveyancing fee or, if your conveyancing\n fee is less than $1000, a waiver of the entire conveyancing fee.\n

    \n

    \n Disbursements are additional and charged at cost. Home-in reserves the right to terminate the offer and change\n the pricing at any time. Find out more about Home-in's pricing by visiting{' '}\n \n https://www.home-in.com.au/pricing\n \n .\n

    \n
    \n \n )\n}\n\nexport const CBAWorkPlaceBankingOfferTile = () => {\n const [showModal, setShowModal] = useState(false)\n const dispatch = useDispatch()\n\n const onClickLearnMore = () => {\n setShowModal(true)\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.CBAWorkplaceBankingOffer001TileLearnMore,\n category: AnalyticsCategories.HomeScreen,\n })\n )\n }\n\n return (\n <>\n \n \n \n \n \n
    CommBank Workplace Banking offer
    \n

    \n Save $1000 off your conveyancing fee when you buy with Home-in and settle with a CommBank home loan before 30\n June 2025\n *\n

    \n onClickLearnMore()}\n className=\"cursor-pointer text-sm text-primary-700 hover:text-primary-800 sm:text-base\"\n >\n Learn more\n \n
    \n setShowModal(false)} quickDismiss={true}>\n \n \n \n )\n}\n","import React, { useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { Card } from '@elements/card'\nimport { LinkStyled } from '@elements/forms/link'\nimport { Icon, Icons } from '@elements/icons/icon'\nimport { Modal } from '@elements/modal'\nimport { trackButtonClick } from '@redux/reducers/analytics'\nimport { AnalyticsCategories, ButtonClickEventNames } from '@utils/helpers/analytics.enum'\n\nconst LearnMoreCBAModalContents = () => {\n return (\n <>\n
    Learn More
    \n
    \n

    \n *To be eligible to receive the discount you must meet each of the following requirements:\n

    \n
      \n
    • \n a) you must either:\n
        \n
      • \n i) sell your current property using Home-in and then buy your\n next property using Home-in within 6 months after your sell side settlement; or\n
      • \n
      • \n ii) buy your next property using Home-in and then sell one of\n your current properties using Home-in within 12 months after your buy side settlement; and\n
      • \n
      \n
    • \n
    • \n b) each property (buy and sell) must be associated with a CommBank\n home loan; and\n
    • \n
    • \n c) you must engage the services of Home-in's partner law firm\n via the Home-in app on both of your property transactions (buy and sell).\n
    • \n
    \n

    \n This offer is only available through CommBank's proprietary channels, it is not available to customers\n that originate through Bankwest, Unloan or a broker channel.\n

    \n

    \n To secure the offer you will need to engage the services of Home-in's partner law firm via the Home-in\n app. Fulfilment of the offer will be completed by Home-in.\n

    \n

    \n If you sell and then buy, you will receive the $1,000 discount on your final Home-in buy side settlement\n invoice. If you buy and then sell, you will receive a $500 discount on your Home-in buy side settlement\n invoice and a $500 discount on Home-in sell side settlement invoice.\n

    \n

    \n Disbursements are additional and charged at cost. Home-in reserves the right to terminate the offer and change\n the pricing at any time. Find out more about Home-in's pricing by visiting{' '}\n \n https://www.home-in.com.au/pricing\n \n .\n

    \n

    \n This offer is only available to eligible CommBank Yello customers and is activated via the Yello Hub within\n the CommBank app. CommBank Yello is a customer recognition program offered by Commonwealth Bank of Australia\n ABN 48 123 123 124 AFSL 234945. You may be eligible to receive this offer if you meet the eligibility criteria\n of any of the benefit sets as part of CommBank Yello. Exclusions apply, see{' '}\n \n https://www.commbank.com.au/commbank-yello\n {' '}\n for full terms and conditions. CommBank Yello Terms and Conditions and eligibility criteria are subject to\n change.\n

    \n
    \n \n )\n}\n\nexport const CBAYelloOfferTile = () => {\n const [showModal, setShowModal] = useState(false)\n const dispatch = useDispatch()\n\n const onClickLearnMore = () => {\n setShowModal(true)\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.CBAYelloOffer001TileLearnMore,\n category: AnalyticsCategories.HomeScreen,\n })\n )\n }\n\n return (\n <>\n \n \n
    Exclusive CommBank Yello offer
    \n

    \n Save up to $1000 off your conveyancing fee when you buy and sell with Home-in and settle with a CommBank home\n loan*\n

    \n onClickLearnMore()}\n className=\"cursor-pointer text-sm text-primary-700 hover:text-primary-800 sm:text-base\"\n >\n Learn more\n \n
    \n setShowModal(false)} quickDismiss={true}>\n \n \n \n )\n}\n","import { GetMetadataResponse, USER_METADATA_ENUM } from '@home-in/models'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useRouter } from 'next/router'\nimport React, { useRef } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { EmojiFeedbackBanner } from '@elements/banners/emoji-feedback-banner'\nimport { SellSideNewFeatureBanner } from '@elements/banners/sell-side-new-feature'\nimport { ContentWrapper } from '@elements/content-wrapper'\nimport { FullWidthPropertySearchBar } from '@elements/property-search/full-width-property-search'\nimport { LoadingWrapper } from '@elements/status-handlers/loading-wrapper'\nimport { NotificationGroup, NotificationItem } from '@features/home/components/notification-group'\nimport { PreApprovalCard } from '@features/home/components/preapproval-card'\nimport { useAcknowledgeSellSideGetStartedCard } from '@hooks/useAcknowledgeSellSideLookingToSellCard'\nimport useCBAPreApprovalHBJ from '@hooks/useCBAPreApprovalHBJ'\nimport { useProperties } from '@hooks/useProperties'\nimport { useGetUserMetadataQuery } from '@redux/apis/profile'\nimport { useAppSelector } from '@redux/hooks'\nimport { trackButtonClick } from '@redux/reducers/analytics'\nimport { LDFeatureFlag } from '@redux/reducers/app'\nimport { AnalyticsCategories, ButtonClickEventNames } from '@utils/helpers/analytics.enum'\nimport { getActiveTransactions } from '@utils/helpers/buy-properties.helpers'\nimport { AboutHomeInCards } from '../components/about-home-in'\nimport { AddPropertyCard } from '../components/add-property-card'\nimport { PropertyCardUIContainer } from '../components/property-card/property-card-ui'\nimport { PropertyCards } from '../components/property-card/property-cards'\nimport { YourOffers } from '../components/your-offers'\nimport { getLenderTileDetails } from '../utils/get-lender-tile-details'\nimport { getCombinedPropertiesSortedByPropertyAddedDateTime } from '../utils/get-properties.helper'\n\nexport const EnhancedHomeInnerSection = ({ children }: { children: React.ReactNode }) => (\n
    {children}
    \n)\nexport const EnhancedHomeSubtitle = ({ children }: { children: React.ReactNode }) => (\n
    {children}
    \n)\n\nconst showSellSideGetStartedCard = ({\n userMetadata,\n userMetadataIsLoading,\n userMetadataIsError,\n sellProperties,\n}: {\n userMetadata: GetMetadataResponse | undefined\n userMetadataIsLoading: boolean\n userMetadataIsError: boolean\n sellProperties: Record[]\n}) => {\n if (!sellProperties || userMetadataIsLoading || userMetadataIsError || !userMetadata) {\n return false // don't show card when data still loading\n }\n if (sellProperties.length > 0) {\n return false // don't show if property added already\n }\n return (\n userMetadata?.find((metadata) => metadata.metadata_type === USER_METADATA_ENUM.acknowledgeSellSideGetStartedCard)\n ?.value !== true\n )\n}\n\nexport const Activity = () => {\n const { newHomeScreenArticles } = useFlags()\n const cbaPreApprovalHBJ = useCBAPreApprovalHBJ()\n const router = useRouter()\n\n const {\n dataWithoutArchivedProperties: properties,\n unarchivedBuyProperties,\n unarchivedSellProperties,\n loading: isCombinedPropertiesLoading,\n isError: isCombinedPropertiesError,\n } = useProperties()\n const isAnyProperties = !!properties?.length && properties?.length > 0\n const isAnyBuySideProperties = !!unarchivedBuyProperties?.length && unarchivedBuyProperties?.length > 0\n\n // Workaround for multi-transaction issue. Only display lender tile for the first HBJ.\n // https://home-in.atlassian.net/browse/TREE-1151?focusedCommentId=59198\n const home = useAppSelector((state) => state.home)\n const firstActiveTransaction = getActiveTransactions(home)?.[0]\n const lenderTile = getLenderTileDetails(firstActiveTransaction!)\n\n const items: NotificationItem[] = [\n {\n component: ,\n active: !!cbaPreApprovalHBJ?.loan?.loanAmount,\n },\n {\n illustration: lenderTile.illustration,\n title: lenderTile.title,\n message: lenderTile.message,\n callback: lenderTile.callback,\n active: lenderTile.active && isAnyBuySideProperties,\n },\n ]\n\n // BEL-2151 dismissable card\n const {\n data: userMetadata,\n isLoading: userMetadataIsLoading,\n isError: userMetadataIsError,\n } = useGetUserMetadataQuery()\n const { acknowledgeSellSideGetStartedCard } = useAcknowledgeSellSideGetStartedCard()\n const sellSideNewFeatureBannerDismissed = useRef(false) // workaround saving metadata latency\n const isSellSideGetStartedCardVisible =\n !sellSideNewFeatureBannerDismissed.current &&\n showSellSideGetStartedCard({\n userMetadata,\n userMetadataIsLoading,\n userMetadataIsError,\n sellProperties: unarchivedSellProperties,\n })\n const dispatch = useDispatch()\n\n const noPropertiesAdded = !isAnyProperties && !isCombinedPropertiesLoading\n\n const EnhancedHomePageLayout = () => {\n return (\n <>\n \n \n \n
    \n \n {' '}\n {/* Add lender and CBA pre-approval tile */}\n item.active)} />\n \n \n \n {noPropertiesAdded && !newHomeScreenArticles && }\n {newHomeScreenArticles && (\n
    \n About Home-in\n \n
    \n )}\n
    \n\n \n {isSellSideGetStartedCardVisible && (\n \n Your notifications\n {\n acknowledgeSellSideGetStartedCard()\n sellSideNewFeatureBannerDismissed.current = true\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.SellSideAddPropertyCardDismissed,\n category: AnalyticsCategories.HomeScreen,\n })\n )\n }}\n callbackAction={() => {\n router.push('/property/add')\n dispatch(\n trackButtonClick({\n action: ButtonClickEventNames.SellSideAddPropertyCardActioned,\n category: AnalyticsCategories.HomeScreen,\n })\n )\n }}\n />\n \n )}\n\n \n Tell us about your experience\n \n \n
    \n
    \n
    \n \n )\n }\n\n return \n}\n","import { GetHomeBuyingJourneyHbj } from '@home-in/models'\nimport router from 'next/router'\nimport { Illustrations } from '@elements/icons/illustration'\n\nexport const getLenderTileDetails = (hbjToAssignLender: GetHomeBuyingJourneyHbj) => {\n const illustration = Illustrations.homeDollar\n let title = ''\n let message = ''\n const callback = () => router.push(`/add-lender?hbjId=${hbjToAssignLender.hbj_id}`)\n let active = false\n\n // When a customer signs up via the CBA API consent flow they are assigned a dummy lender\n // This means customers still need to add their lender information in the Home-in App\n const accountCreatedWithCommbankAPIConsentFlow =\n hbjToAssignLender?.loan?.lenderEmail?.toLowerCase() === 'dummylender@cba.com.au'\n const lenderEmailSet = !!hbjToAssignLender?.loan?.lenderEmail?.length\n const lenderIsAdded = lenderEmailSet && !accountCreatedWithCommbankAPIConsentFlow\n\n if (!lenderIsAdded) {\n active = true\n title = 'Using your own lender?'\n message =\n 'You can add your lender details to help them receive important updates from Home-in and get you settlement ready'\n }\n\n const hasCbaLender = lenderIsAdded && !!hbjToAssignLender?.loan?.lenderEmail?.toLowerCase().endsWith('@cba.com.au')\n const hasChl = !!hbjToAssignLender?.loan?.chl?.length\n\n if (hasCbaLender && !hasChl) {\n active = true\n title = 'Add your CHL number'\n message =\n 'Add your home loan application number so that your lender can receive updates from Home-in and get you settlement ready'\n }\n\n return {\n illustration,\n title,\n message,\n active,\n callback,\n }\n}\n","import { USER_METADATA_ENUM } from '@home-in/models'\nimport { useAddUserMetadataMutation } from '@redux/apis/profile'\n\n/** Persist user acknowledgement/selection into db table */\nexport const useAcknowledgeSellSideGetStartedCard = () => {\n const [addUserMetadata, { isError, isLoading, isSuccess }] = useAddUserMetadataMutation()\n\n const acknowledgeSellSideGetStartedCard = async () => {\n return await addUserMetadata({\n metadata_type: USER_METADATA_ENUM.acknowledgeSellSideGetStartedCard,\n unique_metadata_id: 'default',\n value: true,\n })\n }\n\n return { acknowledgeSellSideGetStartedCard, isError, isLoading, isSuccess }\n}\n","import React, { FC } from 'react'\nimport { LoadingWrapper } from '@elements/status-handlers/loading-wrapper'\nimport { Activity } from '@features/home/parts/activity'\nimport { useGetHomeBuyingJourneyQuery } from '@redux/apis/home'\n\nexport const Home: FC = () => {\n const { isLoading, isError } = useGetHomeBuyingJourneyQuery()\n\n return (\n \n \n \n )\n}\n","import React from 'react'\nimport { ActionButtonEnum } from '@elements/actions/action-button'\nimport { Home } from '@features/home/layouts/home'\nimport { useActivateOffers } from '@hooks/useActivateOffers'\nimport { useAppSelector } from '@redux/hooks'\nimport type { NextPage } from 'next'\n\nconst HomePage: NextPage = () => {\n const user = useAppSelector((state) => state.auth.user)\n\n // This is called here after onboarding to ensure the users account has been created first\n // before adding the offer to their profile.\n useActivateOffers()\n\n return \n}\n\nexport async function getStaticProps() {\n return {\n props: {\n showHbjTitle: true,\n actionButton: ActionButtonEnum.AddProperty,\n actionButtonLink: '/property/add',\n title: 'Home',\n overridePageTitleForUI: 'Your Properties',\n noTopMargin: true,\n hideTitlePrefix: true,\n // Created a new property here to hide the title and action buttons (but only when another feature flag is active)\n hideTitleOverride: true,\n },\n }\n}\n\nexport default HomePage\n","export const CBA_WORKPLACE_BANKING_OFFER_EXPIRY_DATE = '2025-06-30T14:00:00.000Z'\n","import type { DomainPropertyResponse } from '@home-in/models'\n\nexport const extractDomainHeroImg = (resp: DomainPropertyResponse | null | undefined, size = '800x600'): string => {\n if (!resp) return ''\n\n const photos = resp?.photos?.filter((photo) => photo.imageType === 'Property').sort((a, b) => a.rank! - b.rank!)\n return photos?.[0]?.fullUrl ? `${photos[0].fullUrl}/${size}` : ''\n}\n","import { GetHomeBuyingJourneyResponse, GetHomeBuyingJourneyHbj, MuscovyPropertySchemaType } from '@home-in/models'\nimport { WaratahPropertyWithChecklist } from '@features/checklist/data/checklist-data-types'\nimport { SellChecklist } from '@redux/reducers/sell'\n\nexport interface MergedHbjAndChecklist {\n propertyChecklistInfo: WaratahPropertyWithChecklist\n transactionInfo: GetHomeBuyingJourneyHbj | undefined\n}\nexport interface MergedSellPropertyAndChecklist {\n propertyInfo: MuscovyPropertySchemaType\n checklistInfo: SellChecklist | undefined\n}\n\nexport const isMergedHbjAndChecklist = (property: MergedHbjAndChecklist | MergedSellPropertyAndChecklist): boolean => {\n return 'propertyChecklistInfo' in property && 'transactionInfo' in property\n}\n\nexport const isMergedSellPropertyAndChecklist = (\n property: MergedHbjAndChecklist | MergedSellPropertyAndChecklist\n): boolean => {\n return 'checklistInfo' in property && 'propertyInfo' in property\n}\n\nexport const mergeHbjAndChecklist = (\n hbjData: GetHomeBuyingJourneyResponse,\n checklistData: WaratahPropertyWithChecklist[]\n): MergedHbjAndChecklist[] => {\n return checklistData.map((checklist) => {\n const hbjOfChecklist = hbjData?.hbj?.find((hbj) => checklist.hbjId === hbj.hbj_id)\n return {\n propertyChecklistInfo: checklist,\n transactionInfo: hbjOfChecklist,\n }\n })\n}\n\nexport const mergeSellPropertiesAndChecklists = (\n sellPropertiesData: MuscovyPropertySchemaType[],\n sellChecklistsData: SellChecklist[]\n): MergedSellPropertyAndChecklist[] => {\n return sellPropertiesData.map((sellProperty) => {\n const checklistInfo = sellChecklistsData?.find((checklist) => checklist.propertyId === sellProperty.propertyId)\n return {\n checklistInfo,\n propertyInfo: sellProperty,\n }\n })\n}\n"],"names":["window","__NEXT_P","push","variantStyles","default","ManualAddressV2","name","control","restrictState","floatingLabels","errorDisplayType","restrictStateErrorMessage","variant","div","className","TextField","label","floatingLabel","placeholder","required","hasRequiredLabel","Listbox","defaultEmpty","values","enumToSelectOptions","State","rules","validate","validateManualAddress","value","maxLength","pattern","message","InfoIcon","margin","tabIndex","customColour","size","span","classNames","Illustration","asset","Illustrations","GenericError","errors","customErrorMessage","element","Card","withRefreshButton","router","useRouter","Element","filteredErrors","filter","error","p","Function","map","err","SupportEmailLink","Button","callback","reload","process","GenericLoadingWrapper","isLoading","children","isError","spinnerClassName","Array","isArray","LoadingSpinner","LoadingWrapper","props","LoadingThinWrapper","Tooltip","placement","disabled","useState","open","setOpen","arrowRef","useRef","useFloating","onOpenChange","whileElementsMounted","autoUpdate","middleware","offset","flip","fallbackPlacements","shift","arrow","x","y","reference","floating","strategy","context","middlewareData","hover","useHover","move","focus","useFocus","click","useClick","ignoreMouse","dismiss","useDismiss","role","useRole","useInteractions","getReferenceProps","getFloatingProps","staticSide","top","right","bottom","left","floatingPlacement","split","button","ref","FloatingPortal","style","position","width","height","arrowData","transform","useActivateOffers","data","useAppSelector","state","profile","user","auth","utmId","utm_id","addCampaignId","useAddCampaignIdMutation","useEffect","accountExistsInPega","created_at","activatedCampaigns","campaigns","campaign","campaign_id","yelloOffer001Activated","includes","CampaignOffer","cbaFreeContractReviewActivated","cbaWorkplaceBanking001Activated","campaignId","Cookies","useGetHbjIdToAddProperty","address","hbj","manual_address","propertyData","hbjIdToAddProperty","setHbjIdToAddProperty","undefined","errorSlugToAddProperty","setErrorSlugToAddProperty","errorMessageToAddProperty","setErrorMessageToAddProperty","addressComponents","getActiveTransactionForBuyProperty","hbjData","hbjId","waitingForData","errorMessage","errorSlug","validToAddProperty","useFireMixpanelErrorForNoHbjId","dispatch","trackEvent","action","category","AnalyticsCategories","useGetOffers","useProperties","properties","setProperties","unarchivedBuyProperties","setUnarchivedBuyProperties","unarchivedSellProperties","setUnarchivedSellProperties","removedBuyChecklists","checklist","removedChecklists","removedSellProperties","sell","useGetHomeBuyingJourneyQuery","isSuccess","isFetching","isUninitialized","checklistData","checklists","useGetSellPropertiesQuery","useGetAllSellChecklistsQuery","hbjIsSuccess","sellPropertiesSuccess","sellChecklistsSuccess","buyProperties","mergeHbjAndChecklist","sellProperties","mergeSellPropertiesAndChecklists","sellPropertiesData","sellChecklistsData","property","propertyChecklistInfo","propertyArchived","propertyId","buyPropertyIsArchived","find","removedChecklist","getUnarchivedBuyProperties","propertyInfo","sellPropertyIsArchived","removedProperty","getUnarchivedSellProperties","hbjIsUninitialized","sellPropertiesIsUninitialized","sellChecklistsIsUninitialized","hbjIsError","sellPropertiesIsError","sellChecklistsIsError","hbjIsFetching","sellPropertiesIsFetching","sellChecklistsIsFetching","dataWithoutArchivedProperties","loading","useSellProperties","removedProperties","getPropertySubtitle","settlementDate","saleType","auctionDate","formatDate","toLowerCase","prepareSellPropertiesDataForUI","sellChecklists","removable","propertyChecklist","some","taskId","SellChecklistTaskId","status","SellChecklistStatus","userHasRequestedContractPreparation","type","propertyAddedDateTime","imageUrl","addressKey","getCombinedBuyAndSellProperties","propertyList","isMergedSellPropertyAndChecklist","checklistInfo","isMergedHbjAndChecklist","auctionDateTime","contractExchanged","contractSigned","imageURL","PropertySaleType","settlementDateTime","flat","isSellProperty","isBuyProperty","getCombinedPropertiesSortedByPropertyAddedDateTime","combinedProperties","sort","a","b","Date","getTime","EmojiFeedbackBanner","emojiFeedback","useEmojiFeedbackSelector","auth0id","sub","useAppDispatch","isMobile","useMobileQuery","sendEmojiFeedbackApi","useSendEmojiFeedbackMutation","showModal","setShowModal","methods","useForm","defaultValues","userFeedback","feedbackInput","watch","dismissCall","getValues","setValue","sendFeedback","emoji","verbatim","analyticsEventBody","trackButtonClick","EmojiFeedback","onClick","setEmojiFeedback","dispatchDataToMammoth","isAppOnMobilePlatform","handleClick","Modal","active","toggler","modalTitle","quickDismiss","link","TextAreaField","rows","length","handleSubmit","SellSideNewFeatureBanner","callbackDismiss","callbackAction","Chip","color","sx","border","Link","href","img","src","alt","AUTOCOMPLETE_TEXTFIELD_STYLE_OVERRIDE","borderRadius","backgroundColor","legend","marginLeft","paddingLeft","paddingRight","background","boxShadow","opacity","AUTOCOMPLETE_ROOT_STYLE_OVERRIDE","AUTOCOMPLETE_POPPER_COMPONENT_STYLE_OVERRIDE","overflow","padding","marginTop","AUTOCOMPLETE_MANUAL_ADDRESS_LINK_STYLE","textDecoration","cursor","AUTOCOMPLETE_PAPER_COMPONENT_STYLE","marginBottom","SearchInput","params","setSearchText","searchText","onChange","event","target","InputProps","startAdornment","InputAdornment","SearchIcon","endAdornment","inputProps","CustomAutocompleteOption","option","id","li","key","paddingTop","paddingBottom","CustomAutocompletePaperComponent","handleOpenManualAddressDialog","Box","onMouseDown","preventDefault","CustomAutocompletePopperComponent","Popper","SearchProperty","addressOptions","setSelectedOption","selectedOption","handleOpenAddPropertyDialog","optionCount","setOptionCount","openOptionsList","setOpenOptionsList","filterOptions","React","options","handleOnChange","newValue","reason","setDomainProperty","handlePropertySelection","displayingAddressOptions","slice","Autocomplete","forcePopupIcon","noOptionsText","replace","getNoOptionsText","_event","onFocus","onBlur","getOptionLabel","PopperComponent","PaperComponent","renderOption","renderInput","AutocompleteSearchInput","ErrorAlert","heading","buttonText","buttonCallback","MUIAlert","severity","fireMixpanelErrorForAddProperty","addPropertyError","propertyType","full_address","addBuyPropertyHandler","form","addBuyProperty","result","addBuyPropertyResponse","hbj_id","address_key","sale_type","are_contracts_exchanged","contractOfSale","YesNo","property_type","has_cos_ready","hasCosReady","property_image_url","auction_date","toISOString","fireToastNotifications","successMessage","unwrap","addSellPropertyHandler","addSellProperty","addSellChecklist","intercom","domainPropertySuggestion","addSellPropertyResponse","suburb","postcode","manualEntry","manual_entry","streetNumber","street_number","streetName","street_name","streetType","streetTypeLong","unitNumber","transactionType","onlyShowError","update","customAttributes","submitAddPropertyForm","domainProperty","manualAddress","isManual","mergeAddress","domainAddress","extractDomainHeroImg","TransactionType","AddPropertyDialogForm","domainListing","handleClose","setIsFormSubmitting","setDisableAddPropertyButton","resetField","useResetAuctionDate","listing","saleDetails","saleMethod","auctionDetails","auctionSchedule","shouldTouch","date","openingDateTime","isoDateStringWithoutSeconds","getTimezoneOffset","isNaN","usePrefillFormWithDomainListingData","PropertyType","shouldValidate","usePrefillPropertyTypeWithDomainPropertyData","show","useIntercom","useAddSellPropertyMutation","useAddSellChecklistMutation","home","useAddPropertyMutation","alreadyAddedError","setAlreadyAddedError","alreadyAdded","isSellAddressAlreadyAdded","useAddSellPropertyErrorAlreadyAdded","outsideOfNSWError","unsupportedStateError","setUnsupportedStateError","unsupportedState","useAddSellPropertyErrorOutsideOfNSW","unsupportedPropertyTypeError","setUnsupportedPropertyTypeError","isUnsupportedPropertyType","SupportedPropertyType","useAddBuyPropertyErrorUnsupportedPropertyType","onSubmit","noValidate","DialogContent","RadioCards","labelClassName","inputs","input","icon","MonetizationOnRounded","SellRounded","LabelRequired","filterEnumToRadioCardInputs","DateTimeField","min","sevenDaysAgo","shrinkIfNoError","description","showIntercom","AddPropertyDesktopDialog","domainPropertyData","domainListingData","propertyDataIsLoading","propertyImageFromDomain","isFormSubmitting","disableAddPropertyButton","Dialog","fullScreen","fullWidth","maxWidth","onClose","aria-labelledby","data-testid","underline","ArrowBackRoundedIcon","Divider","muiSize","Image","layout","objectFit","unoptimized","HomeIcon","fontSize","areaSize","DirectionsCarIcon","carSpaces","BedOutlinedIcon","bedrooms","ShowerIcon","bathrooms","AddPropertyMobileContent","domainHeroImg","paddingX","DialogActions","justifyContent","display","alignItems","AddPropertyDialog","theme","useTheme","useMediaQuery","breakpoints","down","addProperty","domain_property","useGetDomainPropertyData","domainPropertyId","useLazyGetPropertyQuery","getProperty","useLazyGetListingQuery","getListing","adverts","advertId","useGetDomainListingData","mode","reValidateMode","criteriaMode","trackPageView","ManualAddPropertyDialog","formMethods","setManualAddress","DialogTitle","PropertySearch","useLazySuggestPropertiesQuery","fetchSuggestProperties","doPropertySearch","useDebouncedCallback","terms","time","toString","openAddPropertyDialog","setAddPropertyDialogOpen","openManualAddressDialog","setManualAddressDialogOpen","PropertySearchBar","FullWidthPropertySearchBar","ContentWrapper","Item","ItemInterior","illustration","title","IconButton","Icons","NotificationGroup","max","items","opened","setOpened","setHeight","current","scrollHeight","hr","item","idx","component","index","PreApprovalCard","loanAmount","expiryDate","formatter","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","LoanStatusHome","Icon","format","Number","parseDate","dateString","day","month","year","hbjsWithLoanAmounts","loan","reduce","latest","latestExpiry","currentExpiry","AboutCard","linkText","linkUrl","external","passHref","rel","OpenInNewIcon","AboutHomeInCards","AddPropertyBanner","content","AddPropertyCard","generateTrashIconId","platform","join","TrashIcon","handleRemoveClick","e","stopPropagation","PropertyCardType","buy","PropertyCardUIContainer","PropertyCardTag","PropertyCardItem","propertyAddress","cardSubtitle","imgSource","purchaseTypeString","pathname","PropertyCardUIWrapper","ContactSupportContent","h6","RemovePropertyContent","i","strong","RemovePropertyModal","removeProperty","cancel","overrideFullWidth","PropertyCard","useRemovePropertyMutation","mock_property","handleCancelModal","setModalContent","disableModal","handleRemoveProperty","optimisticUIUpdate","ButtonClickEventNames","enableModal","SellPropertyCard","archiveSellProperty","useArchiveSellPropertyMutation","styles","PropertyCardV2","hideModal","removePropertyHandler","isRemovable","tags","tag","getTags","BuyPropertyCardV2","SellPropertyCardV2","SellPropertyCardComponent","BuyPropertyCardComponent","SellPropertyCardComponentV2","BuyPropertyCardComponentV2","PropertyCards","useFlags","propertyCardV2","LearnMoreModalContent","LinkStyled","LearnMoreOfferModalContents","sup","ul","LearnMoreCBAModalContents","offerTilesComponentMap","useDispatch","Grid","container","direction","isOfferExpired","CBA_WORKPLACE_BANKING_OFFER_EXPIRY_DATE","formatDateWithOrdinalSuffix","YourOffers","offerTiles","campaignOffer","EnhancedHomeInnerSection","EnhancedHomeSubtitle","OfferTile","Activity","getActiveTransactions","cbaPreApprovalHBJ","newHomeScreenArticles","useCBAPreApprovalHBJ","isAnyProperties","isAnyBuySideProperties","lenderTile","hbjToAssignLender","accountCreatedWithCommbankAPIConsentFlow","lenderEmail","lenderIsAdded","hasCbaLender","endsWith","hasChl","chl","getLenderTileDetails","useGetUserMetadataQuery","useAddUserMetadataMutation","addUserMetadata","acknowledgeSellSideGetStartedCard","metadata_type","USER_METADATA_ENUM","unique_metadata_id","useAcknowledgeSellSideGetStartedCard","sellSideNewFeatureBannerDismissed","isSellSideGetStartedCardVisible","userMetadata","userMetadataIsLoading","userMetadataIsError","metadata","showSellSideGetStartedCard","noPropertiesAdded","isCombinedPropertiesLoading","EnhancedHomePageLayout","isCombinedPropertiesError","Home","resp","photos","photo","imageType","rank","fullUrl","hbjOfChecklist","transactionInfo","sellProperty"],"sourceRoot":""}