{"version":3,"sources":["webpack:///./src/components/PageMenu/PageMenu.tsx","webpack:///./src/components/ButtonLink/ButtonLink.tsx","webpack:///./src/pages/broker-centre/broker-portal/lending-areas/index.tsx","webpack:///./src/shared/utils/formatNumbers.ts","webpack:///./src/data/page-menus/broker-centre.ts"],"names":["PageMenu","menu","menuTitle","className","t","useTranslation","map","menuItem","i","key","textKey","to","iconOptions","icon","IconTypes","ARROW_NEXT","linkOptions","shouldEnableActiveState","enableActiveState","memo","ButtonLinkType","ButtonLinkSize","defaultLinkOptions","isExternalLink","shouldOpenInNewTab","defaultStyleOptions","isInline","type","PRIMARY","size","LARGE","invertColors","ButtonLink","styleOptions","aLinkProps","children","ariaLabel","styleOptionsWithDefault","linkOptionsWithDefault","classNames","classnames","small","SMALL","aLinkPropsDefault","href","target","rel","linkProps","partiallyActive","activeClassName","undefined","getIcon","IconComp","className_","position","React","Fragment","role","InputErrorType","withTranslation","LocaleNameSpaceKeys","BROKER_PORTAL","props","activeLocaleTag","useLocaleContext","lendingAreaInput","setLendingAreaInput","useState","value","isInvalid","validationMessage","results","setResult","formState","setFormState","submitted","submitting","shouldDisplayErrorMessage","layoutOptions","seo","title","page","heroSection","options","accentColor","HeroSectionColors","PARROT_GREEN","heroImage","fileName","alt","validateAndParseValue","validationResults","trim","SanitizeHtml","length","valid","errorType","INVALID_CHARACTERS","EMPTY","validatedState","inputErrorType","emptyField","invalidCharacters","getErrorValidationMessage","returnObjects","onSubmit","async","event","preventDefault","persist","lendingAreaInputTempState","prevState","finalObject","searchString","locale","fetch","qs","stringify","method","headers","client_id","process","client_secret","then","response","json","data","errorCode","Array","isArray","lendingAreas","catch","err","console","error","id","InputType","TEXT","label","inputProps","name","required","onChange","SEARCH","disabled","style","marginTop","colSpan","i18nKey","getPathFromRouteKey","RouteKeys","BROKER_CENTRE","MEET_THE_TEAM","row","Math","random","PostalCode__c","Area_Name__c","Territory__c","formatPercent","Max_LTV__c","brokerCentreMenu","COMMON","formatCurrency","amount","localeTag","defaultLocaleTag","Intl","NumberFormat","currency","format","replace","minimumFractionDigits","maximumFractionDigits","BROKER_CENTRE_KEY","LENDING_AREAS","APPROVED_APPRAISER_LIST","SLIDING_SCALE_CALCULATOR"],"mappings":"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","file":"component---src-pages-broker-centre-broker-portal-lending-areas-index-tsx-a16eee693d53188dee3c.js","sourcesContent":["import React, { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { IconTypes } from '../Icon/Icon';\nimport { PageMenuLinks } from '../../data/page-menus/pageMenuTypes';\nimport ButtonLink from '../ButtonLink/ButtonLink';\nimport './style.scss';\n\nexport interface OwnProps {\n menuTitle?: string;\n menu: PageMenuLinks;\n className?: string;\n}\n\ntype Props = OwnProps;\n\nconst PageMenu: React.FC = ({ menu, menuTitle = '', className = '' }: Props) => {\n const { t } = useTranslation();\n\n const getMenuContent = () => {\n return menu.map((menuItem, i) => (\n
  • \n \n {t(menuItem.textKey)}\n \n
  • \n ));\n };\n\n return (\n
    \n {menuTitle &&

    {menuTitle}

    }\n \n
    \n );\n};\n\nexport default memo(PageMenu);\n","import React, { memo } from 'react';\nimport classnames from 'classnames';\nimport './style.scss';\nimport Icon, { IconTypes } from '../Icon/Icon';\nimport Link from '../Link/Link';\n\nexport enum ButtonLinkType {\n PRIMARY = 'ButtonLink__primary',\n // SECONDARY = 'ButtonLink_secondary'\n}\n\nexport enum ButtonLinkSize {\n SMALL = 'ButtonLink__small',\n LARGE = 'ButtonLink__large',\n // SECONDARY = 'SECONDARY'\n}\nexport interface ButtonLinkLinkOptions {\n isExternalLink?: boolean;\n shouldOpenInNewTab?: boolean; // This option will be overridden if the external link is true\n shouldEnableActiveState?: boolean; // Only gets affected if isExternalLink is false\n}\n\nexport interface ButtonLinkStyleOptions {\n isInline?: boolean;\n type?: ButtonLinkType;\n size?: ButtonLinkSize;\n invertColors?: boolean;\n}\n\nexport interface ButtonLinkIconOptions {\n icon: IconTypes;\n position?: 'left' | 'right'; // default is always left\n}\n\ninterface AnchorLinkProps {\n href?: string;\n target?: string;\n rel?: string;\n}\n\nexport interface OwnProps {\n to: string;\n linkOptions?: ButtonLinkLinkOptions;\n iconOptions?: ButtonLinkIconOptions;\n children?: React.ReactNode;\n className?: string;\n styleOptions?: ButtonLinkStyleOptions;\n aLinkProps?: AnchorLinkProps;\n ariaLabel?: string;\n}\n\ntype Props = OwnProps;\n\nconst defaultLinkOptions: ButtonLinkLinkOptions = {\n isExternalLink: false,\n shouldOpenInNewTab: false, // This option will be overridden if the external link is true\n shouldEnableActiveState: true, // Only gets affected if isExternalLink is false\n};\n\nconst defaultStyleOptions: ButtonLinkStyleOptions = {\n isInline: false,\n type: ButtonLinkType.PRIMARY,\n size: ButtonLinkSize.LARGE,\n invertColors: false,\n};\n\nconst ButtonLink: React.FC = ({\n to,\n linkOptions,\n iconOptions,\n styleOptions,\n className = '',\n // onClick = () => {},\n aLinkProps,\n children = null,\n ariaLabel,\n}: Props) => {\n const styleOptionsWithDefault: ButtonLinkStyleOptions = {\n ...defaultStyleOptions,\n ...styleOptions,\n };\n\n const linkOptionsWithDefault: ButtonLinkLinkOptions = {\n ...defaultLinkOptions,\n ...linkOptions,\n };\n\n const classNames = classnames(\n `ButtonLink`,\n styleOptionsWithDefault.type,\n styleOptionsWithDefault.size,\n className,\n {\n 'ButtonLink__inline-link': !!styleOptions?.isInline,\n 'ButtonLink__invert-colors': !!styleOptions?.invertColors,\n small: styleOptionsWithDefault.size === ButtonLinkSize.SMALL,\n }\n );\n\n const aLinkPropsDefault = {\n href: to,\n target: '__blank',\n rel: 'noopener',\n ...aLinkProps,\n };\n\n const linkProps = {\n to,\n partiallyActive: !!linkOptionsWithDefault.shouldEnableActiveState,\n activeClassName: linkOptionsWithDefault?.shouldEnableActiveState\n ? 'ButtonLink--active'\n : undefined,\n };\n\n const getIcon = () => {\n if (iconOptions) {\n const IconComp = ({ className_ }: any) => (\n \n \n \n );\n return (\n \n );\n }\n return React.Fragment;\n };\n\n return linkOptionsWithDefault.isExternalLink ? (\n \n {(!iconOptions?.position || iconOptions?.position === 'left') && getIcon()}\n {children}\n {iconOptions?.position === 'right' && getIcon()}\n \n ) : (\n \n {(!iconOptions?.position || iconOptions?.position === 'left') && getIcon()}\n {children}\n {iconOptions?.position === 'right' && getIcon()}\n \n );\n};\n\nexport default memo(ButtonLink);\n","import React, { useState } from 'react';\nimport { PageProps } from 'gatsby';\nimport SanitizeHtml from 'sanitize-html';\nimport qs from 'qs';\n\nimport { WithTranslation, withTranslation, Trans } from 'react-i18next';\nimport { LocaleNameSpaceKeys } from '../../../../localization/translations';\nimport brokerCentreMenu from '../../../../data/page-menus/broker-centre';\nimport PageMenu from '../../../../components/PageMenu/PageMenu';\nimport Layout, { LayoutOptions, HeroSectionColors } from '../../../../components/Layout/Layout';\nimport './style.scss';\nimport Input, { InputType } from '../../../../components/primitives/Input/Input';\nimport { useLocaleContext } from '../../../../context/Locale';\nimport { IconTypes } from '../../../../components/Icon/Icon';\nimport Button from '../../../../components/primitives/Button/Button';\nimport ErrorMessage from '../../../../components/ErrorMessage/ErrorMessage';\nimport { formatPercent } from '../../../../shared/utils/formatNumbers';\nimport { getPathFromRouteKey } from '../../../../shared/utils/getPathFromRouteKey';\nimport RouteKeys from '../../../../../config/RouteKeys';\nimport Link from '../../../../components/Link/Link';\n\ntype Props = PageProps & WithTranslation;\n\nenum InputErrorType {\n EMPTY = 'EMPTY',\n INVALID_CHARACTERS = 'INVALID_CHARACTERS',\n}\n\nconst LendingAreas: React.FC = (props) => {\n const { t } = props;\n const { activeLocaleTag } = useLocaleContext();\n\n const initialState = {\n value: '',\n isInvalid: false,\n validationMessage: '',\n };\n\n const [lendingAreaInput, setLendingAreaInput] = useState(initialState);\n const [results, setResult] = useState([]);\n\n const [formState, setFormState] = useState({\n submitted: false,\n submitting: false,\n shouldDisplayErrorMessage: false,\n });\n\n const layoutOptions: LayoutOptions = {\n seo: {\n title: t('lendingAreas.seo.title'),\n },\n page: {\n title: t('lendingAreas.heading'),\n },\n heroSection: {\n options: {\n accentColor: HeroSectionColors.PARROT_GREEN,\n heroImage: {\n fileName: 'hero-image-4.jpg',\n alt: 'Image',\n },\n },\n },\n };\n\n const validateInput = (value: string): { valid: boolean; errorType: InputErrorType | null } => {\n if (value.trim()) {\n if (SanitizeHtml(value).length !== value.length) {\n return { valid: false, errorType: InputErrorType.INVALID_CHARACTERS };\n }\n\n return { valid: true, errorType: null };\n }\n\n return { valid: false, errorType: InputErrorType.EMPTY };\n };\n\n const getErrorValidationMessage = (\n inputErrorType: InputErrorType,\n validationMessage: { emptyField: string; invalidCharacters: string }\n ): string => {\n if (inputErrorType === InputErrorType.EMPTY) {\n return validationMessage.emptyField;\n }\n\n return validationMessage.invalidCharacters;\n };\n\n const validateAndParseValue = () => {\n const validationResults = validateInput(lendingAreaInput.value);\n\n const validatedState = {\n ...lendingAreaInput,\n validationMessage: '',\n isInvalid: false,\n };\n\n validatedState.isInvalid = !validationResults.valid;\n\n if (!validationResults.valid && validationResults.errorType) {\n const validationMessage = getErrorValidationMessage(\n validationResults.errorType,\n t('lendingAreas.form.lendingAreaInput.validationMessage', { returnObjects: true })\n );\n validatedState.validationMessage = validationMessage;\n }\n\n return validatedState;\n };\n const handleFormChange = (value: string) => {\n setLendingAreaInput((prevState) => ({\n ...prevState,\n value,\n }));\n };\n\n const handleSubmit = async (event: any) => {\n event.preventDefault();\n event.persist();\n\n const lendingAreaInputTempState = validateAndParseValue();\n\n setLendingAreaInput((prevState) => ({\n ...prevState,\n ...lendingAreaInputTempState,\n }));\n\n if (lendingAreaInputTempState.isInvalid) {\n return false;\n }\n\n const finalObject = {\n searchString: lendingAreaInputTempState.value,\n locale: activeLocaleTag,\n };\n\n setFormState((prevState) => ({\n ...prevState,\n submitting: true,\n submitted: false,\n }));\n\n await fetch(`${process.env.GATSBY_LENDING_AREAS_API_URL}?${qs.stringify(finalObject)}`, {\n method: 'GET',\n // @ts-ignore\n headers: {\n 'Content-Type': 'application/json',\n client_id: process.env.GATSBY_LENDING_AREAS_CLIENT_ID,\n client_secret: process.env.GATSBY_LENDING_AREAS_CLIENT_SECRET,\n },\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.errorCode || data.errorCode === 400) {\n setResult([]);\n } else if (Array.isArray(data.lendingAreas)) {\n setResult(data.lendingAreas);\n } else {\n setFormState((prevState) => ({\n ...prevState,\n submitting: false,\n submitted: true,\n shouldDisplayErrorMessage: true,\n }));\n return;\n }\n setFormState((prevState) => ({\n ...prevState,\n submitting: false,\n submitted: true,\n shouldDisplayErrorMessage: false,\n }));\n })\n .catch((err) => {\n console.error(`Failed: `, err);\n setFormState((prevState) => ({\n ...prevState,\n submitting: false,\n submitted: true,\n shouldDisplayErrorMessage: true,\n }));\n });\n\n return true;\n };\n\n const getResultRows = () => {\n if (results.length < 1) {\n return (\n \n \n \n \n \n \n \n );\n }\n\n return results.map((row: any) => {\n return (\n \n {row.PostalCode__c}\n {row.Area_Name__c}\n {row.Territory__c}\n {formatPercent(+row.Max_LTV__c, activeLocaleTag)}\n \n );\n });\n };\n\n return (\n \n
    \n
    \n
    \n

    {t('lendingAreas.note')}

    \n
    \n \n\n {formState.submitted && formState.shouldDisplayErrorMessage && (\n {t('lendingAreas.form.submissionValidation.error')}\n )}\n \n {formState.submitting\n ? t('lendingAreas.form.submittingLabel')\n : t('lendingAreas.form.submitLabel')}\n \n

    \n {t('lendingAreas.footerNote')}\n

    \n \n {formState.submitted && (\n
    \n \n \n \n \n \n \n \n \n \n {getResultRows()}\n
    {t('lendingAreas.postalCode')}{t('lendingAreas.postalDescription')}{t('lendingAreas.territory')}{t('lendingAreas.maximumLTV')}
    \n
    \n )}\n
    \n \n
    \n
    \n
    \n );\n};\n\nexport default withTranslation(LocaleNameSpaceKeys.BROKER_PORTAL)(LendingAreas);\n","import { LocaleTag, defaultLocaleTag } from '../../../config/locales';\n\n/**\n *\n * @param amount number value that needs to be formatted\n * @param localeTag target locale, defaults to \"defaultLocaleTag\" value from config\n */\nexport const formatCurrency = (amount: number, localeTag: LocaleTag = defaultLocaleTag) => {\n return new Intl.NumberFormat(`${localeTag}-CA`, {\n style: 'currency',\n currency: 'CAD',\n })\n .format(amount)\n .replace('CA', '');\n};\n\n/**\n *\n * @param value Should be just regular % value, the formatter handles everything else.\n * @param localeTag\n */\nexport const formatPercent = (value: number, localeTag: LocaleTag = defaultLocaleTag) => {\n return new Intl.NumberFormat(`${localeTag}-CA`, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(value / 100); // Percentages are fractions of 100\n};\n","import RouteKeys from '../../../config/RouteKeys';\nimport { PageMenuLinks } from './pageMenuTypes';\nimport { getPathFromRouteKey } from '../../shared/utils/getPathFromRouteKey';\n\nconst BROKER_CENTRE_KEY = RouteKeys.BROKER_CENTRE;\n\nconst brokerCentreMenu: PageMenuLinks = [\n {\n to: getPathFromRouteKey(BROKER_CENTRE_KEY.BROKER_PORTAL),\n textKey: 'pageTitles.brokerPortal',\n enableActiveState: false,\n },\n {\n to: getPathFromRouteKey(BROKER_CENTRE_KEY.BROKER_PORTAL.LENDING_AREAS),\n textKey: 'pageTitles.lendingAreas',\n },\n {\n to: getPathFromRouteKey(BROKER_CENTRE_KEY.BROKER_PORTAL.APPROVED_APPRAISER_LIST),\n textKey: 'pageTitles.approvedAppraiserList',\n },\n {\n to: getPathFromRouteKey(BROKER_CENTRE_KEY.BROKER_PORTAL.SLIDING_SCALE_CALCULATOR),\n textKey: 'pageTitles.slidingScaleCalculator',\n },\n {\n to: getPathFromRouteKey(BROKER_CENTRE_KEY.MEET_THE_TEAM),\n textKey: 'pageTitles.meetTheTeam',\n },\n];\n\nexport default brokerCentreMenu;\n"],"sourceRoot":""}