{"version":3,"file":"lib-B6n7di5d.js","sources":["../../../lib/components/Accordion.tsx","../../../lib/components/AppInsights.tsx","../../../lib/components/Buttons.tsx","../../../lib/components/Checkbox.tsx","../../../lib/components/CookieModal.tsx","../../../lib/components/Modal.tsx","../../../lib/components/epc-graph/EpcGraphBar.tsx","../../../lib/components/epc-graph/EpcRatingArrow.tsx","../../../lib/components/epc-graph/EpcGraph.tsx","../../../lib/utils/api.ts","../../../lib/utils/cookies.ts","../../../lib/utils/form.ts","../../../lib/utils/generic.ts","../../../lib/utils/commonPasswords.ts","../../../lib/utils/passwordValidationSchema.ts","../../../lib/components/ErrorBoundary.tsx","../../../lib/components/Image.tsx","../../../lib/components/Lines.tsx","../../../lib/components/Loading.tsx","../../../lib/context/themeContext.tsx","../../../lib/components/NumberInput.tsx","../../../lib/components/Select.tsx","../../../lib/components/SensitiveTextInput.tsx","../../../lib/components/SimpleProgressBar.tsx","../../../lib/components/TextAreaInput.tsx","../../../lib/components/TextInput.tsx","../../../lib/context/toastContext.tsx","../../../lib/hooks/useClarity.ts","../../../lib/components/ReferrerCookieHandler.tsx","../../../lib/hooks/usePreloadImage.ts","../../../lib/network/properties.ts","../../../lib/hooks/usePropertyOwnerStatuses.ts","../../../lib/hooks/properties/usePropertyEPC.ts","../../../lib/hooks/useReferrerSourceCookie.ts"],"sourcesContent":["import React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { Children } from '../utils';\n\nexport const Accordion = ({\n children,\n onClick,\n accordionOpen,\n accordionChildren,\n}: {\n children?: Children;\n onClick?: () => void;\n accordionOpen?: boolean;\n accordionChildren?: Children;\n}) => {\n return (\n <>\n \n {children}\n \n {accordionOpen &&
{accordionChildren}
}\n \n );\n};\n\n//This will be our accordion moving forward\nexport const NewAccordion = ({\n children,\n onClick,\n accordionOpen,\n accordionChildren,\n accordionButtonClassName,\n accordionBodyClassName,\n id,\n}: {\n children?: Children;\n onClick?: () => void;\n accordionOpen?: boolean;\n accordionChildren?: Children;\n accordionButtonClassName?: string;\n accordionBodyClassName?: string;\n id?: string;\n}) => {\n const baseAccordionButtonClassName = `${accordionOpen} flex w-full flex-row items-center justify-between p-2 ${onClick && 'cursor-pointer'}`;\n const finalAccordionButtonClassName = twMerge(baseAccordionButtonClassName, accordionButtonClassName);\n\n const baseAccordionBodyClassName = 'flex pb-4 flex-row items-center';\n const finalAccordionBodyClassName = twMerge(baseAccordionBodyClassName, accordionBodyClassName);\n\n return (\n <>\n \n {accordionOpen &&
{accordionChildren}
}\n \n );\n};\n","import { ApplicationInsights } from '@microsoft/applicationinsights-web';\n\ntype AppInsightsConfig = {\n instrumentationKey: string;\n};\n\nclass AppInsightsManager {\n private static instance: AppInsightsManager | null = null;\n private appInsights: ApplicationInsights | null = null;\n\n private constructor() {}\n\n public static getInstance(): AppInsightsManager {\n if (!AppInsightsManager.instance) {\n AppInsightsManager.instance = new AppInsightsManager();\n }\n return AppInsightsManager.instance;\n }\n\n public initialize(config: AppInsightsConfig): void {\n this.appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: config.instrumentationKey,\n },\n });\n this.appInsights.loadAppInsights();\n }\n\n public getAppInsights(): ApplicationInsights | null {\n return this.appInsights;\n }\n}\nconst appInsightsManager = AppInsightsManager.getInstance();\n\nexport { appInsightsManager };\n\nexport const initializeAppInsights = (config: AppInsightsConfig): void => {\n appInsightsManager.initialize(config);\n};\n","import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { BarLoader } from 'react-spinners';\nimport { Children } from '../utils';\n\ntype ButtonProps = Omit & {\n children?: Children;\n type?: 'reset' | 'submit';\n style?: 'primary' | 'secondary' | 'delete' | 'custom';\n loading?: boolean;\n overrideBaseClassnames?: boolean;\n widthFitContent?: boolean;\n renderChildrenOutsideParagraph?: boolean;\n};\n\nexport const Button = (props: ButtonProps) => {\n const {\n children,\n type,\n className,\n style = 'primary',\n loading,\n disabled,\n overrideBaseClassnames,\n widthFitContent = false,\n renderChildrenOutsideParagraph,\n ...rest\n } = props;\n\n const baseClassNames = `${className} text-base font-header h-12 shadow rounded-[24px] flex items-center justify-center px-4 min-w-fit ${widthFitContent ? 'w-fit' : 'w-full'}`;\n\n const primaryStyleClassNames =\n 'bg-light border-2 border-primary dark:border-none dark:bg-primary text-primary dark:text-light hover:bg-primary-lighter hover:border-primary-lighter dark:hover:bg-primary-dark dark:active:bg-dark-lighter active:bg-primary active:border-primary active:text-dark-dark disabled:text-neutral-darker disabled:bg-neutral-lighter disabled:border-neutral-darkest dark:disabled:text-neutral-darktext dark:disabled:bg-dark-lightest';\n\n const secondaryStyleClassNames =\n 'bg-color text-primary border-2 border-blue hover:opacity-80 disabled:text-neutral-darker disabled:bg-neutral-lighter disabled:border-none dark:disabled:text-neutral-darktext dark:disabled:bg-dark-lightest dark:disabled:border-none';\n\n const deleteStyleClassNames = 'bg-color text-secondary-dark border-2 border-secondary-dark';\n\n const customStyleClassNames =\n 'bg-blue text-dark border-primary-lighter dark:bg-primary dark:text-light hover:bg-primary-lighter hover:border-primary-lighter dark:hover:bg-primary-dark dark:disabled:text-neutral-darktext dark:disabled:bg-dark-lightest h-12 w-full rounded-[24px] border-2 px-4 font-bold dark:border-none';\n\n return (\n \n {loading ? : renderChildrenOutsideParagraph ? children :

{children}

}\n \n );\n};\n\nButton.displayName = 'Button';\n\nexport const IconButton = ({\n children,\n id,\n style = 'primary',\n onClick,\n disabled,\n className = '',\n}: {\n children: JSX.Element;\n id?: string;\n style?: 'primary' | 'secondary' | 'delete';\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}) => {\n const baseClassNames = 'rounded-full border-2 h-12 w-12 flex justify-center items-center cursor-pointer';\n const primaryClassNames =\n 'bg-blue-lighter dark:bg-primary-darker hover:bg-blue-dark dark:hover:bg-[#52AFA4] border-none';\n const secondaryClassNames =\n 'border-blue-lighter hover:border-blue-dark dark:border-primary-darker hover:dark:border-primary bg-color-secondary text-color';\n const deleteStyleClassNames =\n 'bg-color-secondary text-error-light border-error-light hover:border-error hover:text-error';\n\n if (disabled) {\n return
{children}
;\n }\n\n return (\n \n {children}\n \n );\n};\n\n// This will be as our button moving forward.\ntype NewButtonVariant = 'primary' | 'secondary' | 'delete';\ntype IconPosition = 'start' | 'end';\ntype AlignmentClass = 'start' | 'center';\n\ntype NewButtonProps = Omit & {\n id: string;\n icon?: JSX.Element;\n text?: string;\n variant?: NewButtonVariant;\n loading?: boolean;\n onClick?: () => void;\n type?: 'button' | 'submit';\n sizeClasses?: string;\n iconPosition?: IconPosition;\n alignmentClass?: AlignmentClass;\n};\n\nconst baseClassNames =\n 'text-color dark:border-primary border-blue flex flex-row items-center border-2 px-4 w-full font-bold';\n\nconst styleClassNames: Record = {\n primary:\n 'bg-blue-lighter dark:bg-primary-darker enabled:hover:bg-blue-dark enabled:dark:hover:bg-[#52AFA4] border-none disabled:text-[#7AC2B9]',\n secondary:\n 'border-blue-lighter enabled:hover:border-blue-dark bg-color-secondary enabled:dark:hover:border-[#52AFA4] dark:border-primary-darker disabled:text-[#7AC2B9] dark:disabled:text-[#227D72]',\n delete:\n 'bg-color-secondary border-secondary-dark enabled:hover:border-[#BC5A41] enabled:dark:hover:bg-secondary-dark dark:border-secondary-dark',\n};\n\nexport const NewButton = (props: NewButtonProps) => {\n const {\n id,\n text,\n icon,\n variant = 'primary',\n loading,\n disabled,\n onClick,\n type = 'button',\n sizeClasses,\n iconPosition = 'start',\n } = props;\n const alignmentClass = props.alignmentClass\n ? `justify-${props.alignmentClass}`\n : icon\n ? 'justify-start'\n : 'justify-center';\n const responsiveBorderRadius = 'rounded-[10px] lg:rounded-[20px]';\n const responsiveHeight = 'h-10 lg:h-12';\n const responsiveTextSize = 'text-sm lg:text-base';\n const finalClassNames = `${baseClassNames} ${responsiveHeight} ${responsiveBorderRadius} ${responsiveTextSize} ${styleClassNames[variant]} ${sizeClasses || ''} ${alignmentClass}`;\n\n return (\n \n );\n};\n\ninterface SidebarButtonProps {\n id: string;\n icon: JSX.Element;\n text: string;\n href?: string;\n active?: string;\n setActive?: React.Dispatch>;\n onClick?: () => void;\n showText?: boolean;\n}\n\nexport const SidebarButton: React.FC = ({\n id,\n icon,\n text,\n href,\n active,\n setActive,\n onClick,\n showText = false,\n}) => {\n const navigate = useNavigate();\n const baseClassNames = 'flex font-bold flex-row items-center h-12 rounded-xl px-3 cursor-pointer border-2';\n const activeClassNames = active === id ? 'text-primary border-none' : 'hover:text-[#7ac2b9] border-none';\n\n const handleClick = () => {\n setActive?.(id);\n if (href) {\n navigate(href);\n }\n onClick?.();\n };\n\n return (\n \n );\n};\n","import React, { ReactNode } from 'react';\nimport { BsCheck } from 'react-icons/bs';\n\ntype CheckboxProps = Omit & {\n label?: ReactNode | string;\n labelclassname?: string;\n};\n\nconst Checkbox = React.forwardRef((props, ref) => {\n const { id, label, labelclassname } = props;\n\n const baseClassNames = 'h-6 w-6 flex justify-center items-center border-2 rounded-lg';\n\n return (\n \n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import React, { useState } from 'react';\nimport { clarity } from 'react-microsoft-clarity';\nimport { useLocation } from 'react-router-dom';\nimport Cookies from 'js-cookie';\nimport { Button } from './Buttons';\n\nconst CookieModal = ({ marketingUrl }: { marketingUrl?: string }) => {\n const [acceptedCookieExists, setAcceptedCookieExists] = useState(Cookies.get('accepts_cookies'));\n\n const location = useLocation();\n const isOnPrivacyPage = location.pathname.indexOf('/privacy') !== -1;\n const rootDomain = import.meta.env.VITE_ROOT_DOMAIN;\n\n if (isOnPrivacyPage) return null;\n\n const onAccept = () => {\n Cookies.set('accepts_cookies', 'true', { domain: `.${rootDomain}`, expires: 365 });\n setAcceptedCookieExists('true');\n clarity.init(import.meta.env.VITE_CLARITY_ID);\n clarity.consent();\n };\n\n const onReject = () => {\n Cookies.set('accepts_cookies', 'false', { domain: `.${rootDomain}`, expires: 365 });\n setAcceptedCookieExists('false');\n clarity.init(import.meta.env.VITE_CLARITY_ID);\n };\n\n const privacyPolicyLink = marketingUrl ? `${marketingUrl}/privacy` : '/privacy';\n\n return (\n <>\n {!acceptedCookieExists && (\n
\n
\n
\n

EPC Builder Cookies 🍪

\n
\n

\n We use cookies to tailor your experience and optimize our site's performance. We would also like to use\n to cookies help us understand how you interact with our content so that we can enhance the services\n provided.\n

\n

By clicking accept, you agree to our use of these cookies.

\n

\n For more information about how this is used, please read our{' '}\n \n privacy policy\n \n .\n

\n
\n
\n \n \n
\n
\n
\n )}\n \n );\n};\n\nexport default CookieModal;\n","import React, { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { MdClose } from 'react-icons/md';\nimport { twMerge } from 'tailwind-merge';\nimport { Children } from '../utils';\nimport { Button, NewButton } from './Buttons';\n\nconst modalRoot =\n typeof document !== 'undefined' ? document.getElementById('modal-root') || document.createElement('div') : null;\n\nif (modalRoot) {\n modalRoot.id = 'modal-root';\n document.body.appendChild(modalRoot);\n}\n\nconst Modal = ({\n onClose,\n id,\n maxWidth,\n children,\n containerClassName,\n className,\n closeButtonClassName,\n}: {\n onClose: () => void;\n id?: string;\n maxWidth?: string;\n children: Children;\n containerClassName?: string;\n className?: string;\n closeButtonClassName?: string;\n}) => {\n useEffect(() => {\n document.body.style.overflowY = 'hidden';\n document.body.style.paddingRight = '5px';\n\n return () => {\n document.body.style.overflowY = 'scroll';\n document.body.style.paddingRight = '0';\n };\n }, []);\n\n if (!modalRoot) return;\n\n const baseContainerClassName = 'fixed inset-0 z-50 flex sm:items-center sm:justify-center';\n const finalContainerClassName = twMerge(baseContainerClassName, containerClassName);\n\n const baseClassName = `${maxWidth || ''} dark:bg-dark-dark px-8 pb-8 relative flex h-screen w-screen flex-col overflow-auto bg-[#F8F9FA] shadow sm:size-auto sm:max-h-[min(650px,90vh)] sm:w-full sm:max-w-lg sm:rounded-xl`;\n const finalClassName = twMerge(baseClassName, className);\n\n const baseCloseButtonClassName = 'sticky top-0 z-10 cursor-pointer p-2 pt-2 text-color flex justify-end -mr-8';\n const finalCloseButtonClassName = twMerge(baseCloseButtonClassName, closeButtonClassName);\n\n return createPortal(\n
\n \n
\n \n {children}\n
\n
,\n modalRoot\n );\n};\n\nexport default Modal;\n\nexport const RemoveUserFromCompanyModal = ({\n value,\n onClose,\n callback,\n}: {\n value: string | undefined;\n onClose: () => void;\n callback: () => Promise;\n}) => {\n return (\n \n

Are you sure?

\n

\n You are about to remove {value} from the company\n

\n
\n
\n \n
\n
\n {\n await callback();\n onClose();\n }}\n >\n Confirm\n \n
\n
\n
\n );\n};\n\nexport const DeleteModal = ({\n value,\n onClose,\n callback,\n}: {\n value: string | undefined;\n onClose: () => void;\n callback: () => Promise;\n}) => {\n return (\n \n

Are you sure?

\n

\n You are about to delete {value}\n

\n
\n \n {\n await callback();\n onClose();\n }}\n />\n
\n
\n );\n};\n","import React from 'react';\n\nconst EpcGraphBar = ({ rating, className }: { rating: string; className: string }) => {\n return (\n
\n

{rating}

\n
\n );\n};\n\nexport default EpcGraphBar;\n","import React from 'react';\nimport { CiDroplet } from 'react-icons/ci';\n\nconst EpcRatingArrow = ({\n rating,\n propertyRating,\n className,\n}: {\n rating: string;\n propertyRating: string;\n className: string;\n}) => {\n return (\n <>\n \n \n

{`${rating}`}

\n \n \n );\n};\n\nexport default EpcRatingArrow;\n","import React from 'react';\nimport EpcGraphBar from './EpcGraphBar';\nimport EpcRatingArrow from './EpcRatingArrow';\n\nconst EpcGraph = ({ propertyRating }: { propertyRating?: string }) => {\n return (\n
\n
\n \n \n \n \n \n \n \n
\n
\n {propertyRating && (\n <>\n \n \n \n \n \n \n \n \n )}\n
\n
\n );\n};\n\nexport default EpcGraph;\n","import { toast } from 'react-toastify';\nimport axios from 'axios';\nimport { appInsightsManager } from '../components';\n\nexport const initApi = (baseUrl: string) => {\n axios.defaults.baseURL = baseUrl;\n};\n\nexport const initToken = (token: string | null) => {\n axios.defaults.headers.common['Authorization'] = token;\n};\n\nexport const getToken = () => {\n return axios.defaults.headers.common['Authorization'];\n};\n\nexport type ErrorLogRequest = {\n message: string;\n stackTrace?: string;\n};\n\nexport type AxiosErrorData = {\n errors: unknown;\n detail: string;\n url: string;\n status?: string;\n};\n\nconst handleError = async (error: unknown) => {\n if (axios.isAxiosError(error)) {\n throw {\n errors: error.response?.data.errors,\n status: error.response?.data.status,\n detail: error.response?.data.detail,\n url: error.config?.url,\n };\n } else {\n await api.logError(error as Error);\n }\n};\n\nexport const api = {\n get: async (endpoint: string) => {\n try {\n const response = await axios.get(endpoint);\n return response.data;\n } catch (err: unknown) {\n return await handleError(err);\n }\n },\n getFile: async (endpoint: string, defaultFileName: string) => {\n try {\n const response = await axios.get(endpoint, { responseType: 'arraybuffer' });\n const matches = response.headers['content-disposition'].match(/filename[^;=\\n]*=((['\"])(?:(?!\\2)[\\s\\S])*?)\\2/);\n let fileName = defaultFileName;\n if (matches && matches.length > 1) {\n const encodedFilename = matches[1];\n fileName = decodeURIComponent(encodedFilename.replace(/^[\"']/, ''));\n }\n return { file: response.data, fileName };\n } catch (err: unknown) {\n return await handleError(err);\n }\n },\n post: async (endpoint: string, data?: T) => {\n try {\n const response = data ? await axios.post(endpoint, data) : await axios.post(endpoint);\n return response;\n } catch (err: unknown) {\n return await handleError(err);\n }\n },\n put: async (endpoint: string, data?: T) => {\n try {\n const response = data ? await axios.put(endpoint, data) : await axios.put(endpoint);\n return response;\n } catch (err: unknown) {\n return await handleError(err);\n }\n },\n patch: async (endpoint: string, data?: T) => {\n try {\n const response = await axios.patch(endpoint, data);\n return response;\n } catch (err: unknown) {\n return await handleError(err);\n }\n },\n delete: async (endpoint: string) => {\n try {\n const response = await axios.delete(endpoint);\n return response;\n } catch (err: unknown) {\n return await handleError(err);\n }\n },\n logError: async (error: Error) => {\n if (process.env.NODE_ENV !== 'development') {\n const appInsights = appInsightsManager.getAppInsights();\n if (appInsights) {\n appInsights.trackException({ exception: error });\n }\n } else {\n console.log(error);\n }\n toast.error(\n 'An unknown error occured. Please try again and contact support on 0800 058 4140 if the error persists.'\n );\n return;\n },\n};\n\nexport const clearSWRError = (mutate: (data: () => void, options: boolean) => void) => mutate(() => null, false);\n\nexport const handleUnknownDetail = (error: unknown) => {\n const { detail, url } = error as AxiosErrorData;\n if (detail) {\n api.logError({ message: detail, stack: url } as Error);\n }\n};\n","export const REFERRER_COOKIE_NAME = 'ref_source';\nexport const REFERRER_URL_PARAM = 'ref_src';\n","import { FieldValues, Path, UseFormSetError } from 'react-hook-form';\n\nexport const handleFormErrors = (setError: UseFormSetError, errors: unknown) => {\n if (errors) {\n for (const [key, value] of Object.entries(errors as { [s: string]: string[] })) {\n setError(key as Path, { type: 'custom', message: value[0] });\n }\n }\n};\n","export const capitalize = (string: string) => {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n};\n\nexport const EMAIL_REGEX = /^\\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\s*$/i;\nexport const POSTCODE_REGEX = /^\\s*[a-z]{1,2}\\d[a-z\\d]?(?:\\s*\\d[a-z]{2}\\s*)?$/i;\nexport const PHONE_REGEX = /^(?:\\+44|0)\\s*\\d\\s*\\d\\s*\\d\\s*\\d\\s*\\d\\s*\\d\\s*\\d\\s*\\d\\s*\\d\\s*\\d$/;\n\nexport type Option = {\n label: string;\n value: T;\n};\n\nexport type EnumType = Record;\n\nexport const enumToKeyValueArray = (enumObject: EnumType): Option[] =>\n Object.keys(enumObject)\n .filter((key) => isNaN(Number(key)))\n .map((key) => {\n const formattedKey = String(key)\n .split('_')\n .map((word) => (word === 'EPC' ? 'EPC' : capitalize(word)))\n .join(' ');\n return { value: enumObject[key], label: formattedKey };\n });\n\nexport const getOptionByValue = (options: Option[], value: T): Option | undefined =>\n options.find((option) => option.value === value);\n\nexport type Children = string | JSX.Element | false | undefined | (JSX.Element | JSX.Element[] | false | undefined)[];\n\nexport const isJSONString = (string: string) => {\n try {\n JSON.parse(string);\n return true;\n } catch (error) {\n return false;\n }\n};\n","//List sourced from https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt\n//A \"common password\" is defined as in the top 1 million common passwords list, and satisfies our password requirements\nexport const commonPasswords = [\n 'L58jkdjP!',\n 'P@ssw0rd',\n '!QAZ2wsx',\n '1qaz!QAZ',\n '4_LiFe',\n 'P030710P$E4O',\n '1qaz@WSX',\n 'ZAQ!2wsx',\n '!QAZxsw2',\n '%E2%82%AC',\n 'NICK1234-rem936',\n 'xxPa33bq.aDNA',\n '!QAZ1qaz',\n 'g00dPa$$w0rD',\n 'Jhon@ta2011',\n 'Nloq_010101',\n '1qazZAQ!',\n 'zaq1ZAQ!',\n 'Ab.1234567',\n 'ZAQ!xsw2',\n 'Pa$$w0rd',\n 'Mosquito@13',\n 'onlyOne4-myXworld',\n 'Euq8pvHrnpSSdymIZQx+',\n 'Dybik.66.',\n 'Az.1996.',\n 'Art_06.05',\n 'Al#kS3!kSj0xX',\n 'zaq1!QAZ',\n 'Qwerty1!',\n 'P@$$w0rd',\n 'PnEv_12',\n 'Password1!',\n 'Ford-1',\n 'F5_mK6Vn',\n 'eXpl0it|ng',\n 'AES-128',\n 'abcd!EFG!123',\n '9B2u*c',\n '1.2E+66',\n 'ZAQ!1qaz',\n 'xx85.eNK7a8M2',\n '$Tatyana09$',\n 'Samantha1!',\n '$RFV4rfv',\n '!QAZzaq1',\n '!QAZxsw2#EDCvfr4',\n '!QAZ2ws',\n 'Pw_310la',\n 'P@ssw0r',\n 'P@55w0rd',\n '..oO3xPZokK6',\n 'OmL47#yW',\n 'NCC-1701',\n 'Mif_123',\n 'Marco1997!',\n 'M3hm3t_k',\n 'LOLO-909',\n 'Juninho1999@',\n 'jack33_lWR9L',\n 'Hengsha_2_23',\n 'gNdb4b3$',\n 'GiASox-291',\n 'Gfhjkm_2',\n 'Bmw_540_i',\n 'bb33BB##',\n 'aZiA-J64',\n '5tgbBGT%',\n '..5630E',\n '4c@J&$sS',\n '2wsx#EDC',\n '1qaz@WS',\n '1qaz!QA',\n '1Password!',\n '1.23E+47',\n 'ZXCvbn123!',\n 'ZGMF-X20',\n 'Zachary1!',\n '@YZA6y9aduBadu',\n '$yxH2T',\n '@YSU9e2eXUNupa',\n 'ysQN*AXT5oKP',\n 'Yr7$jiRO',\n 'ynaJAWave$U6Y4',\n 'y9Y%aTy3EpYXUQ',\n 'xxO03Olo.QHZ2',\n 'xx0trl.Ebiq5E',\n 'xsw2#EDC',\n 'X-rated9437',\n 'X-rated5562',\n 'X-rated1893',\n '$XeaRoMs8upWyBtS',\n 'Ww3Ymb8f$fhr',\n 'wtG6Z@A',\n 'Wolki1H%ig',\n 'wL7320JQ!8',\n 'whigginb1-S739RHT8',\n 'War3xpansion_',\n 'W8STED_R0x',\n 'w!2E3B#pszD9fXAv',\n 'W0mbatdrug$',\n 'VqGbShD5BmMw$Lup',\n 'Vixens.comreaper999MOR098GO',\n 'VITALINA_1992',\n 'VcW19uNO3o!p',\n 'v9ActnwQoy$Y',\n 'V6#WnsBLDES2!7Zg',\n 'Uz3*',\n 'UXUdE%U7uqeryG',\n 'umyZu@APY7ytYQ',\n 'u@eLy2y6u#erY4',\n 'Tm3A..M2',\n 'Tickled.comreaper999MOR098GO',\n 'taQU5ybY5e#YbA',\n 't69_XDKx',\n 'sUtY8yLaDyhe!A',\n 'Super.168',\n 'STALKER.1993',\n 'S!OsoP8duGDbqEcH',\n 'Sorboro@14',\n 'Some@1128',\n 'Sky!blu3',\n 'sk68xzd!3NhY',\n 'Sj2323!!',\n 'Simpsons1#',\n 'Shad0w*10*1',\n 'S=#Et!041mAkToeZ',\n 'Seriy.290199',\n 'SCCUTER_9',\n 's5j1Ko6Sa#',\n 'REN.2007',\n 'RaBe_1968',\n 'R9lk7..y7IE.',\n 'QWERTY_123',\n '!@QW12qw',\n '*Q_sS886004_',\n '..QfZe5pxdVA',\n '!QAZ2wsx#EDC',\n '!Qaz2wsx',\n 'qA@Yf8',\n '!QA2ws3ed',\n 'P@ssW0rd',\n 'PRAT123*',\n 'PML_963',\n 'Play-b0y',\n 'Password1.',\n 'Passw0rd!',\n 'Panda-9',\n 'PAA-0001',\n 'P@55w0r',\n 'onlyOne4-eXcesS',\n 'Oleg.Kapustin_95',\n 'Ocgatk2-Llaveatk2',\n 'n.Zp6Wx',\n 'NY#77G-f',\n 'Number123456789!!!',\n 'No_Hack8',\n '??????N?N?12345',\n 'Nicole_1',\n 'n6mjx7yQ@orw',\n 'm#XI!RZYvh681=Fn',\n 'Mumi-l0v',\n 'Monster_1',\n 'Money4me2!',\n 'Mark_24',\n 'ManicSon-love908',\n 'MAGODEOZ_9',\n 'Mach1_03',\n 'm!6jAnlik0Mt97',\n 'M2141-01',\n 'LucXakK_00',\n 'LT95vv@s',\n 'L_h1o2rn',\n 'Lena_9Tanya',\n 'LazerBoy_1',\n 'Lavey-Lavey666',\n 'LA%u9E5y2YVuVA',\n 'Killer_123',\n 'Kauguri98-02',\n 'Katya13.12',\n 'Katty_Astro1',\n 'Karina_1996',\n 'K0gzg$f',\n 'Jonbm86!',\n 'Joed++?8',\n '_JJJDDDl29_',\n 'Jhood22-december',\n 'Jesus777!',\n 'Jerk921@',\n 'J3z*rQ',\n 'J33p3rs!',\n 'iPhone43.',\n 'INMDinmd_93',\n 'iA!VK#S=72q0UjG4',\n 'i05#2VWET!GfCO7M',\n 'HXUNS2-M',\n];\n","import * as Yup from 'yup';\nimport { commonPasswords } from './commonPasswords';\n\nexport const passwordValidationSchema = Yup.string()\n .required('Password must not be empty')\n .min(8, 'Password must be at least 8 characters long')\n .matches(/[!@#$%^&*(),.?\":{}|<>]/, 'Password must contain at least one special character')\n .matches(/[A-Z]/, 'Password must contain at least one uppercase letter')\n .matches(/\\d/, 'Password must contain at least one number')\n .notOneOf(commonPasswords, 'Password is common and may be easily guessed');\n\nexport const newPasswordValidationSchema = Yup.string()\n .required('New Password must not be empty')\n .min(8, 'New Password must be at least 8 characters long')\n .matches(/[!@#$%^&*(),.?\":{}|<>]/, 'New Password must contain at least one special character')\n .matches(/[A-Z]/, 'New Password must contain at least one uppercase letter')\n .matches(/\\d/, 'New Password must contain at least one number')\n .notOneOf(commonPasswords, 'New Password is common and may be easily guessed')\n //Test required as cannot use multiple \"notOneOf\" statements in the same validation\n .test('check-against-previous-password', 'New Password cannot be the same as the Current Password', function (value) {\n const { oldPassword } = this.parent;\n return value !== oldPassword;\n });\n","import React, { Component, ReactNode } from 'react';\nimport { api } from '@epcbuilder/lib/utils';\n\ntype ErrorBoundaryProps = {\n children: ReactNode;\n};\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n};\n\nclass ErrorBoundary extends Component {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n\n this.state = { hasError: false };\n }\n static getDerivedStateFromError(_: Error): ErrorBoundaryState {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error): void {\n this.handleError(error);\n }\n\n async handleError(error: Error) {\n try {\n await api.logError(error);\n } catch (e) {\n console.log('Error logging error', JSON.stringify(e));\n }\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Something went wrong

\n \n
\n );\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from 'react';\n\ntype ImageProps = Omit & { src: string };\n\nconst Image = (props: ImageProps) => {\n const { src, alt, ...rest } = props;\n const isDevelopment = process.env.NODE_ENV === 'development';\n\n const basePath = src.replace(/\\.[^/.]+$/, '');\n\n return (\n \n {!isDevelopment && }\n {alt\n \n );\n};\n\nexport default Image;\n","import React from 'react';\n\nexport const ColorfulHorizontalLine = ({\n width = '100%',\n height = '0.125rem',\n}: {\n width?: string;\n height?: string;\n}) => {\n return (\n
\n
\n
\n
\n );\n};\n\nexport const HorizontalLine = () => {\n return (\n
\n );\n};\n\nexport const VerticalLine = () => {\n return (\n
\n );\n};\n","import React from 'react';\nimport { BarLoader } from 'react-spinners';\n\nconst Loading = ({ id, color, className }: { id?: string; color?: string; className?: string }) => {\n return (\n
\n \n
\n );\n};\n\nexport default Loading;\n","import React, { createContext, Dispatch, SetStateAction, useContext, useEffect, useState } from 'react';\nimport { Children } from '../utils';\n\ninterface ThemeContextProps {\n theme: string;\n setTheme: Dispatch>;\n}\n\nconst defaultThemeContext: ThemeContextProps = {\n theme: 'light',\n setTheme: () => {},\n};\n\nconst ThemeContext = createContext(defaultThemeContext);\n\nexport const ThemeProvider = ({ children }: { children: Children }) => {\n const [theme, setTheme] = useState(() => {\n const userPreferredTheme = localStorage.getItem('theme');\n return userPreferredTheme || getSystemTheme();\n });\n\n useEffect(() => {\n const applyThemeToDocument = () => {\n const d = document.documentElement;\n d.classList.remove('light', 'dark');\n d.classList.add(theme);\n localStorage.setItem('theme', theme);\n };\n\n applyThemeToDocument();\n }, [theme]);\n\n useEffect(() => {\n const handleSystemThemeChange = (e: MediaQueryListEvent) => {\n if (!localStorage.getItem('theme')) {\n setTheme(getSystemTheme(e));\n }\n };\n\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQueryList.addEventListener('change', handleSystemThemeChange);\n\n return () => {\n mediaQueryList.removeEventListener('change', handleSystemThemeChange);\n };\n }, []);\n\n const contextValue: ThemeContextProps = { theme, setTheme };\n\n return {children};\n};\n\nexport const useTheme = (): ThemeContextProps => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n\nconst getSystemTheme = (e?: MediaQueryListEvent | MediaQueryList) => {\n const isDark = (e && e.matches) || window.matchMedia('(prefers-color-scheme: dark)').matches;\n return isDark ? 'dark' : 'light';\n};\n","import React from 'react';\n\ntype NumberInputProps = JSX.IntrinsicElements['input'] & {\n className?: string;\n overrideBaseClassnames?: boolean;\n label?: string;\n error?: string;\n};\n\nexport const NumberInput = React.forwardRef((props, ref) => {\n const { label, error, name, className, overrideBaseClassnames, ...rest } = props;\n\n const baseClassNames = `${className} text-dark border-neutral bg-light focus:border-primary placeholder:text-neutral-dark h-10 w-full rounded-xl border-2 px-4 text-base outline-none`;\n\n return (\n
\n {label &&

{label}

}\n
\n \n
\n {error && (\n
\n

{error}

\n
\n )}\n
\n );\n});\n\nNumberInput.displayName = 'NumberInput';\n\nexport default NumberInput;\n","import React from 'react';\nimport { Control, Controller, FieldValues, Path } from 'react-hook-form';\nimport { MdDone } from 'react-icons/md';\nimport ReactSelect, { components, MultiValueProps, OptionProps } from 'react-select';\nimport { twMerge } from 'tailwind-merge';\nimport { Option } from '../utils/generic';\n\ntype OptionType = { label: string; value: boolean | number | string };\n\nconst MultiValue = ({ index, getValue }: MultiValueProps) => {\n const values = getValue();\n\n if (values.length === 1) {\n const value = values[0];\n return
{String(value.label)}
;\n }\n if (index === 0 && values.length > 1) {\n return
{`${values.length} items selected`}
;\n }\n\n return null;\n};\n\nconst CustomOption = (props: OptionProps) => {\n const { isSelected, label } = props;\n return (\n \n
\n {label}\n {isSelected && (\n \n \n \n )}\n
\n
\n );\n};\n\nexport const Select = ({\n id,\n control,\n name,\n label,\n placeholder,\n options,\n error,\n inline = false,\n className,\n multiple = false,\n}: {\n id: string;\n control: Control;\n title: string;\n name: Path;\n label?: string;\n placeholder?: string;\n options: Option[];\n error?: string;\n inline?: boolean;\n className?: string;\n multiple?: boolean;\n}) => {\n const baseClassNames =\n 'h-10 w-full flex items-center text-base text-color rounded-xl pl-4 py-2 border-2 bg-color cursor-pointer pr-8';\n return (\n
\n {label &&

{label}

}\n
\n {\n if (multiple) {\n return (\n 0 ? options.find((option) => option.value === value) : []}\n onChange={(options) => onChange(options.map((option) => option.value))}\n menuPortalTarget={document.body}\n unstyled={true}\n placeholder={placeholder}\n components={{ MultiValue }}\n maxMenuHeight={246}\n styles={{\n menuPortal: (base) => ({ ...base, zIndex: 9999 }),\n option: (baseStyles) => ({\n ...baseStyles,\n cursor: 'pointer',\n }),\n }}\n classNames={{\n control: (state) =>\n `${className} ${baseClassNames} ${state.menuIsOpen ? 'border-primary' : 'border-neutral'}`,\n dropdownIndicator: () => 'absolute right-2 bottom-2 text-color',\n menu: () => 'bg-color border-blue border-2 rounded-xl overflow-hidden',\n option: (state) =>\n `${state.isSelected && 'bg-primary text-light'} px-4 py-2 hover:bg-neutral hover:text-dark`,\n clearIndicator: () => 'cursor-pointer',\n noOptionsMessage: () => 'py-2',\n }}\n />\n );\n }\n return (\n option.value === value)}\n onChange={(option) => onChange(option?.value)}\n menuPortalTarget={document.body}\n unstyled={true}\n placeholder={placeholder}\n maxMenuHeight={246}\n styles={{\n menuPortal: (base) => ({ ...base, zIndex: 9999 }),\n option: (baseStyles) => ({\n ...baseStyles,\n cursor: 'pointer',\n }),\n }}\n classNames={{\n control: (state) =>\n `${className} ${baseClassNames} ${state.menuIsOpen ? 'border-blue' : 'border-neutral'}`,\n dropdownIndicator: () => 'absolute text-color',\n menu: () => 'bg-color border-blue border-2 rounded-xl overflow-hidden',\n option: (state) =>\n `${state.isSelected && 'bg-primary-lighter text-dark'} px-4 py-2 hover:bg-neutral hover:text-dark`,\n noOptionsMessage: () => 'py-2',\n }}\n />\n );\n }}\n />\n
\n {error && (\n
\n

{error}

\n
\n )}\n
\n );\n};\n\n//This will be our Select moving forward\nexport const NewSelect = ({\n id,\n control,\n name,\n placeholder,\n options,\n error,\n inline = false,\n className,\n multiple = false,\n noBackground = false,\n isSearchable = true,\n label,\n}: {\n id: string;\n control: Control;\n title?: string;\n name: Path;\n placeholder?: string;\n options: Option[];\n error?: string;\n inline?: boolean;\n className?: string;\n multiple?: boolean;\n noBackground?: boolean;\n isSearchable?: boolean;\n label?: string;\n}) => {\n const baseClassName = `h-10 text-color border-2 cursor-pointer pr-8 hover:shadow-grey-sm hover:dark:border-primary hover:border-blue-dark dark:border-primary-darker hover:border-primary-lighter placeholder:text-color rounded-[20px] px-4 outline-none focus:dark:border-[#7AC2B9] ${noBackground ? 'bg-none' : 'bg-color-secondary'}`; // Conditionally apply the background class\n\n const finalClassName = twMerge(baseClassName, className);\n\n return (\n
\n
\n {label &&

{label}

}\n {\n if (multiple) {\n return (\n value.includes(option.value)) : []}\n onChange={(options) => onChange(options.map((option) => option.value))}\n menuPortalTarget={document.body}\n unstyled={true}\n placeholder={placeholder}\n components={{ MultiValue, Option: CustomOption }}\n maxMenuHeight={300}\n hideSelectedOptions={false}\n isSearchable={isSearchable}\n menuPlacement=\"auto\"\n styles={{\n menuPortal: (base) => ({ ...base, zIndex: 9999 }),\n option: (baseStyles) => ({\n ...baseStyles,\n cursor: 'pointer',\n }),\n }}\n classNames={{\n control: (state) =>\n `${finalClassName} ${state.menuIsOpen ? 'border-primary' : 'border-blue-lighter'}`,\n clearIndicator: () => 'absolute right-8 text-color cursor-pointer',\n dropdownIndicator: () => 'absolute right-2 text-color cursor-pointer',\n menu: () =>\n 'mt-1 bg-color-secondary border-blue dark:border-primary border-2 rounded-xl overflow-hidden shadow-grey-sm',\n option: (state) =>\n `${state.isSelected ? 'text-color' : ''} px-4 py-2 dark:hover:bg-primary hover:bg-blue-lighter`,\n noOptionsMessage: () => 'py-2 min-h-6',\n }}\n />\n );\n }\n return (\n option.value === value)}\n onChange={(option) => onChange(option?.value)}\n menuPortalTarget={document.body}\n unstyled={true}\n placeholder={placeholder}\n maxMenuHeight={300}\n menuPlacement=\"auto\"\n isSearchable={isSearchable}\n styles={{\n menuPortal: (base) => ({ ...base, zIndex: 9999 }),\n option: (baseStyles) => ({\n ...baseStyles,\n cursor: 'pointer',\n }),\n }}\n classNames={{\n control: (state) =>\n `${finalClassName} ${state.menuIsOpen ? 'border-primary' : 'border-blue-lighter'}`,\n dropdownIndicator: () => 'absolute right-2 text-color cursor-pointer',\n singleValue: () => 'text-color mr-6',\n placeholder: () => 'text-color',\n menu: () =>\n 'mt-1 bg-color-secondary border-blue dark:border-primary border-2 rounded-xl overflow-hidden shadow-grey-sm',\n option: (state) =>\n `${state.isSelected ? 'text-color' : ''} px-4 py-2 dark:hover:bg-primary hover:bg-blue-lighter`,\n noOptionsMessage: () => 'py-2 min-h-6',\n }}\n />\n );\n }}\n />\n
\n {error && (\n
\n

{error}

\n
\n )}\n
\n );\n};\n","import React, { useState } from 'react';\nimport { BiHide, BiShow } from 'react-icons/bi';\n\ntype SensitiveTextInputProps = JSX.IntrinsicElements['input'] & {\n label?: string;\n error?: string;\n callbackOnChange?: (name?: string) => void;\n};\n\nexport const SensitiveTextInput = React.forwardRef((props, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n const { label, error, name, className, callbackOnChange, ...rest } = props;\n\n const baseClassNames = `${className} text-color focus:border-primary focus:dark:border-[#7AC2B9] outline-none border-blue-lighter dark:border-primary-darker bg-color-secondary focus:border-primary placeholder:text-neutral-dark h-10 w-full rounded-xl border-2 px-4 text-base hover:shadow-grey-sm hover:border-blue-dark hover:dark:shadow-dark-sm hover:dark:border-primary`;\n\n const handleChange = (e: React.ChangeEvent) => {\n if (callbackOnChange && name) {\n callbackOnChange(name);\n }\n if (props.onChange) {\n props.onChange(e);\n }\n };\n\n return (\n
\n {label &&

{label}

}\n
\n \n\n setShowPassword(!showPassword)}\n >\n {!showPassword ? : }\n \n
\n {error && (\n
\n

{error}

\n
\n )}\n
\n );\n});\n\nSensitiveTextInput.displayName = 'SensitiveTextInput';\n\nexport default SensitiveTextInput;\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport interface ISimpleProgressBarProps {\n progress: number; // % progress\n backgroundColor?: string;\n progressColor?: string;\n className?: string;\n}\n\nconst SimpleProgressBar = ({\n progress,\n backgroundColor = '#dce1e3',\n progressColor = '#2a9c8e', // primary background color\n className,\n}: ISimpleProgressBarProps) => {\n const baseClassName = 'w-full h-2';\n const finalClassName = twMerge(baseClassName, className);\n\n return (\n
\n
\n
\n );\n};\n\nexport default SimpleProgressBar;\n","import React from 'react';\n\ntype TextAreaInputProps = JSX.IntrinsicElements['textarea'] & {\n className?: string;\n overrideBaseClassnames?: boolean;\n label?: string;\n error?: string;\n};\n\nexport const TextAreaInput = React.forwardRef((props, ref) => {\n const { label, error, name, className, overrideBaseClassnames, rows, ...rest } = props;\n\n const baseClassNames = `${className} focus:border-primary focus:dark:border-[#7AC2B9] outline-none border-blue-lighter dark:border-primary-darker bg-color-secondary focus:border-primary placeholder:text-neutral-dark rounded-xl border-2 px-4 py-2 text-base hover:shadow-grey-sm hover:border-blue-dark hover:dark:shadow-dark-sm hover:dark:border-primary disabled:border-[#CBD3D6] disabled:text-neutral-dark disabled:bg-[#F8F9FA] disabled:dark:border-[#85979E] disabled:dark:bg-dark-dark placeholder:text-neutral-dark w-full rounded-xl text-base`;\n return (\n
\n {label &&

{label}

}\n \n {error && (\n
\n

{error}

\n
\n )}\n
\n );\n});\n\nTextAreaInput.displayName = 'TextAreaInput';\n\nexport default TextAreaInput;\n","import React from 'react';\n\ntype TextInputProps = JSX.IntrinsicElements['input'] & {\n className?: string;\n overrideBaseClassnames?: boolean;\n label?: string;\n error?: string;\n formatValue?: (value: string) => string;\n callbackOnChange?: (name?: string) => void;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n};\n\n/**\n * The callbackOnChange prop allows you to pass a function that will be called\n * whenever the input value changes.\n * Note: callbackOnChange is not the same as react-hook-form clearErrors,\n * but you can pass a function that calls clearErrors internally.\n */\nexport const TextInput = React.forwardRef((props, ref) => {\n const {\n label,\n type,\n error,\n name,\n className,\n overrideBaseClassnames,\n formatValue,\n callbackOnChange,\n iconLeft,\n iconRight,\n ...rest\n } = props;\n\n const baseClassNames = `${className} text-color focus:border-primary focus:dark:border-[#7AC2B9] outline-none border-blue-lighter dark:border-primary-darker bg-color-secondary focus:border-primary placeholder:text-neutral-dark h-10 w-full rounded-xl border-2 px-4 text-base hover:shadow-grey-sm hover:border-blue-dark hover:dark:shadow-dark-sm hover:dark:border-primary disabled:border-[#CBD3D6] disabled:text-neutral-dark disabled:bg-[#F8F9FA] disabled:dark:border-[#85979E] disabled:dark:bg-dark-dark`;\n\n const handleChange = (e: React.ChangeEvent) => {\n let { value } = e.target;\n if (formatValue) {\n value = formatValue(value);\n e.target.value = value;\n }\n if (callbackOnChange && name) {\n callbackOnChange(name);\n }\n if (props.onChange) {\n props.onChange(e);\n }\n };\n\n return (\n
\n {label &&

{label}

}\n
\n {iconLeft &&
{iconLeft}
}\n\n \n\n {iconRight &&
{iconRight}
}\n
\n {error && (\n
\n

{error}

\n
\n )}\n
\n );\n});\n\nTextInput.displayName = 'TextInput';\n\nexport default TextInput;\n","'use client';\n\nimport React from 'react';\nimport { Theme, ToastContainer } from 'react-toastify';\nimport { Children } from '../utils';\nimport 'react-toastify/dist/ReactToastify.css';\n\nexport const ToastProvider = ({ theme, children }: { theme: string; children: Children }) => {\n return (\n <>\n {children}\n \n \n );\n};\n","import { clarity } from 'react-microsoft-clarity';\nimport Cookies from 'js-cookie';\n\nconst useClarity = () => {\n const acceptedCookieExists = Cookies.get('accepts_cookies');\n\n if (acceptedCookieExists?.toLowerCase() === 'true') {\n clarity.init(import.meta.env.VITE_CLARITY_ID);\n }\n};\n\nexport default useClarity;\n","import { useSearchParams } from 'react-router-dom';\nimport { REFERRER_COOKIE_NAME, REFERRER_URL_PARAM } from '../utils';\nimport { Children } from '../utils/generic';\n\nexport const ReferrerCookieHandler = ({ children }: { children: Children }) => {\n const rootDomain = import.meta.env.VITE_ROOT_DOMAIN;\n\n const [params] = useSearchParams();\n const refSrcValue = params.get(REFERRER_URL_PARAM) ?? undefined;\n\n if (refSrcValue !== undefined) {\n document.cookie = `${REFERRER_COOKIE_NAME}=${refSrcValue}; path=/; domain=.${rootDomain}; SameSite=Strict`;\n }\n\n return children;\n};\n","import { useEffect } from 'react';\n\nconst usePreloadImage = (imageUrl: string) => {\n useEffect(() => {\n const isDevelopment = process.env.NODE_ENV !== 'development';\n\n const basePath = imageUrl.replace(/\\.[^/.]+$/, '');\n\n const preload = (src: string) => {\n const img = new Image();\n img.src = src;\n };\n\n preload(imageUrl);\n\n if (!isDevelopment) {\n preload(`${basePath}.webp`);\n }\n }, [imageUrl]);\n};\n\nexport default usePreloadImage;\n","import { api } from '../utils';\n\nexport const getAddressesForPostcode = async ({ postcode }: { postcode: string }) => {\n return await api.get(`/loqate/find?postcode=${postcode.trim()}`);\n};\n\nexport const getAddressRetrieve = async ({ id }: { id: string }) => {\n return await api.get(`/loqate/address/retrieve?id=${id}`);\n};\n\nexport const getPropertyOwnerStatuses = async () => {\n return await api.get('/properties/owner-statuses');\n};\n\nexport const getPropertyEpc = async ({ postcode, addressLine1 }: { postcode: string; addressLine1: string }) => {\n return await api.get(`/properties/epc-certificate?postcode=${postcode}&addressLine1=${addressLine1}`);\n};\n","import useSWR from 'swr';\nimport { PropertyOwnerStatuses } from '../models/properties';\nimport { getPropertyOwnerStatuses } from '../network/properties';\nimport { Option } from '../utils/generic';\n\nconst usePropertyOwnerStatuses = () => {\n const { data, error, mutate, isLoading } = useSWR(\n 'property-owner-statuses',\n async () => await getPropertyOwnerStatuses()\n );\n\n return {\n statuses: data && data,\n statusOptions:\n data &&\n (data\n .map((item) => (item.isActive ? { value: item.id, label: item.name } : undefined))\n .filter((item) => item !== undefined) as Option[]),\n error,\n mutate,\n isLoading,\n };\n};\n\nexport default usePropertyOwnerStatuses;\n","import useSWR from 'swr';\nimport { PropertyRating } from '../../models/properties';\nimport { getPropertyEpc } from '../../network/properties';\n\nconst useProperty = ({ postcode, addressLine1 }: { postcode: string; addressLine1: string }) => {\n const { data, error, mutate, isLoading } = useSWR(\n `property-epc-data-${postcode}-${addressLine1}`,\n async () => await getPropertyEpc({ postcode, addressLine1 })\n );\n\n return {\n epc: data,\n error,\n mutate,\n isLoading,\n };\n};\n\nexport default useProperty;\n","import { REFERRER_COOKIE_NAME } from '../utils';\n\nconst useReferrerSourceCookie = () => {\n const allCookies = document.cookie.split(';');\n const refCookie = allCookies\n .map((x) => x.trim()) // Otherwise strings have a leading space\n .find((x) => x.startsWith(REFERRER_COOKIE_NAME));\n const split = refCookie?.split('=');\n\n if (!split || !split[1]) return undefined;\n\n return split[1];\n};\n\nexport default useReferrerSourceCookie;\n"],"names":["Accordion","children","onClick","accordionOpen","accordionChildren","jsxs","Fragment","jsx","_AppInsightsManager","__publicField","config","ApplicationInsights","AppInsightsManager","appInsightsManager","initializeAppInsights","Button","props","type","className","style","loading","disabled","overrideBaseClassnames","widthFitContent","renderChildrenOutsideParagraph","rest","baseClassNames","BarLoader","styleClassNames","NewButton","id","text","icon","variant","sizeClasses","iconPosition","alignmentClass","finalClassNames","Checkbox","React","ref","label","labelclassname","BsCheck","CookieModal","marketingUrl","acceptedCookieExists","setAcceptedCookieExists","useState","Cookies","isOnPrivacyPage","useLocation","rootDomain","onAccept","clarity","onReject","privacyPolicyLink","modalRoot","Modal","onClose","maxWidth","containerClassName","closeButtonClassName","useEffect","finalContainerClassName","twMerge","baseClassName","finalClassName","finalCloseButtonClassName","createPortal","MdClose","EpcGraphBar","rating","EpcRatingArrow","propertyRating","CiDroplet","EpcGraph","initApi","baseUrl","axios","handleError","error","_a","_b","_c","_d","api","endpoint","err","defaultFileName","response","matches","fileName","encodedFilename","data","appInsights","toast","handleUnknownDetail","detail","url","REFERRER_COOKIE_NAME","REFERRER_URL_PARAM","handleFormErrors","setError","errors","key","value","EMAIL_REGEX","POSTCODE_REGEX","PHONE_REGEX","commonPasswords","passwordValidationSchema","Yup.string","oldPassword","ErrorBoundary","Component","_","e","Image","src","alt","basePath","ColorfulHorizontalLine","width","height","Loading","color","defaultThemeContext","createContext","NumberInput","name","MultiValue","index","getValue","values","CustomOption","isSelected","components","MdDone","NewSelect","control","placeholder","options","inline","multiple","noBackground","isSearchable","Controller","onChange","ReactSelect","option","base","baseStyles","state","SensitiveTextInput","showPassword","setShowPassword","callbackOnChange","handleChange","BiShow","BiHide","SimpleProgressBar","progress","backgroundColor","progressColor","TextAreaInput","rows","TextInput","formatValue","iconLeft","iconRight","ToastProvider","theme","ToastContainer","useClarity","ReferrerCookieHandler","params","useSearchParams","refSrcValue","usePreloadImage","imageUrl","img","getAddressesForPostcode","postcode","getAddressRetrieve","getPropertyOwnerStatuses","getPropertyEpc","addressLine1","usePropertyOwnerStatuses","mutate","isLoading","useSWR","item","useProperty","useReferrerSourceCookie","refCookie","x","split"],"mappings":"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OADU,MAAMR,EAAM,OAAOQ,CAAQ,QAErCC,EAAc,CACd,OAAA,MAAMR,EAAYQ,CAAG,CAC9B,CACF,EACA,SAAU,MAAOP,GAAiB,CACY,CACpC,MAAAc,EAAclF,EAAmB,iBACnCkF,GACFA,EAAY,eAAe,CAAE,UAAWd,CAAO,CAAA,CAInD,CACMe,EAAA,MACJ,wGAAA,CAGJ,CACF,EAIaC,GAAuBhB,GAAmB,CAC/C,KAAA,CAAE,OAAAiB,EAAQ,IAAAC,CAAQ,EAAAlB,EACpBiB,GACFZ,EAAI,SAAS,CAAE,QAASY,EAAQ,MAAOC,EAAc,CAEzD,ECvHaC,EAAuB,aACvBC,GAAqB,UCCrBC,GAAmB,CAAwBC,EAA8BC,IAAoB,CACxG,GAAIA,EACF,SAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAkBF,CAAmC,EAC5ED,EAAAE,EAAgB,CAAE,KAAM,SAAU,QAASC,EAAM,CAAC,EAAG,CAGpE,ECJaC,GAAc,iDACdC,GAAiB,kDACjBC,GAAc,iECJdC,EAAkB,CAC7B,YACA,WACA,WACA,WACA,SACA,eACA,WACA,WACA,WACA,YACA,kBACA,gBACA,WACA,eACA,cACA,cACA,WACA,WACA,aACA,WACA,WACA,cACA,oBACA,uBACA,YACA,WACA,YACA,gBACA,WACA,WACA,WACA,UACA,aACA,SACA,WACA,aACA,UACA,eACA,SACA,UACA,WACA,gBACA,cACA,aACA,WACA,WACA,mBACA,UACA,WACA,UACA,WACA,eACA,WACA,WACA,UACA,aACA,WACA,WACA,eACA,eACA,eACA,WACA,aACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,UACA,aACA,WACA,aACA,WACA,YACA,iBACA,SACA,iBACA,eACA,WACA,iBACA,iBACA,gBACA,gBACA,WACA,cACA,cACA,cACA,mBACA,eACA,UACA,aACA,aACA,qBACA,gBACA,aACA,mBACA,cACA,mBACA,8BACA,gBACA,eACA,eACA,mBACA,OACA,iBACA,iBACA,iBACA,WACA,+BACA,iBACA,WACA,iBACA,YACA,eACA,mBACA,aAC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"}