{"version":3,"file":"static/chunks/27229.0bd8d20aa1e538fe.js","mappings":"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E7D,KAAM,WACNL,MAAO,kBACPkE,KAAM,SAER,CACE7D,KAAM,QACNL,MAAO,SACPkE,KAAM,SAER,CACE7D,KAAM,OACNL,MAAO,MACPkE,KAAM,SAER,CACE7D,KAAM,OACNL,MAAO,wBACPkE,KAAM,OAER,CACE7D,KAAM,OACNL,MAAO,kBACPkE,KAAM,SAER,CACE7D,KAAM,OACNL,MAAO,iBACPkE,KAAM,SAER,CACE7D,KAAM,UACNL,MAAO,MACPkE,KAAM,QAER,CACE7D,KAAM,UACNL,MAAO,OACPkE,KAAM,MAER,CACE7D,KAAM,UACNL,MAAO,OACPkE,KAAM,OAER,CACE7D,KAAM,MACNL,MAAO,gBACPkE,KAAM,SAER,CACE7D,KAAM,MACNL,MAAO,mBACPkE,KAAM,SAER,CACE7D,KAAM,QACNL,MAAO,SACPkE,KAAM,SAER,CACE7D,KAAM,QACNL,MAAO,SACPkE,KAAM,SAER,CACE7D,KAAM,QACNL,MAAO,UACPkE,KAAM,OAER,CACE7D,KAAM,UACNL,MAAO,UACPkE,KAAM,QAER,CACE7D,KAAM,UACNL,MAAO,gBACPkE,KAAM,OAER,CACE7D,KAAM,UACNL,MAAO,0BACPkE,KAAM,KAER,CACE7D,KAAM,OACNL,MAAO,qBACPkE,KAAM,SAER,CACE7D,KAAM,OACNL,MAAO,eACPkE,KAAM,SAER,CACE7D,KAAM,MACNL,MAAO,MACPkE,KAAM,OAER,CACE7D,KAAM,MACNL,MAAO,gBACPkE,KAAM,QAER,CACE7D,KAAM,aACNL,MAAO,cACPkE,KAAM,QAER,CACE7D,KAAM,aACNL,MAAO,qBACPkE,KAAM,OAER,CACE7D,KAAM,QACNL,MAAO,oBACPkE,KAAM,SAER,CACE7D,KAAM,UACNL,MAAO,wBACPkE,KAAM,QAER,CACE7D,KAAM,UACNL,MAAO,wBACPkE,KAAM,SAER,CACE7D,KAAM,QACNL,MAAO,WACPkE,KAAM,OAER,CACE7D,KAAM,QACNL,MAAO,cACPkE,KAAM,QAER,CACE7D,KAAM,QACNL,MAAO,QACPkE,KAAM,SAER,CACE7D,KAAM,QACNL,MAAO,WACPkE,KAAM,QAER,CACE7D,KAAM,UACNL,MAAO,SACPkE,KAAM,OAER,CACE7D,KAAM,gBACNL,MAAO,MACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,MACPkE,KAAM,OAER,CACE7D,KAAM,gBACNL,MAAO,UACPkE,KAAM,SAER,CACE7D,KAAM,gBACNL,MAAO,UACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,UACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,eACPkE,KAAM,SAER,CACE7D,KAAM,gBACNL,MAAO,eACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,gBACPkE,KAAM,SAER,CACE7D,KAAM,gBACNL,MAAO,gBACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,gBACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,gBACPkE,KAAM,OAER,CACE7D,KAAM,gBACNL,MAAO,qBACPkE,KAAM,OAER,CACE7D,KAAM,gBACNL,MAAO,qBACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,qBACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,qBACPkE,KAAM,SAER,CACE7D,KAAM,gBACNL,MAAO,uBACPkE,KAAM,OAER,CACE7D,KAAM,gBACNL,MAAO,uBACPkE,KAAM,OAER,CACE7D,KAAM,gBACNL,MAAO,uBACPkE,KAAM,QAER,CACE7D,KAAM,gBACNL,MAAO,uBACPkE,KAAM,UAER,CACE7D,KAAM,OACNL,MAAO,kBACPkE,KAAM,SAER,CACE7D,KAAM,aACNL,MAAO,SACPkE,KAAM,SAER,CACE7D,KAAM,aACNL,MAAO,YACPkE,KAAM,SAER,CACE7D,KAAM,SACNL,MAAO,OACPkE,KAAM,QAER,CACE7D,KAAM,WACNL,MAAO,IACPkE,KAAM,OAER,CACE7D,KAAM,WACNL,MAAO,IACPkE,KAAM,OAER,CACE7D,KAAM,UACNL,MAAO,SACPkE,KAAM,OAER,CACE7D,KAAM,SACNL,MAAO,MACPkE,KAAM,MAER,CACE7D,KAAM,SACNL,MAAO,MACPkE,KAAM,MA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","sources":["webpack://_N_E/./src/hooks/useViewportSize/useViewportSize.tsx","webpack://_N_E/./src/hooks/useBreakpoint/useBreakpoint.tsx","webpack://_N_E/./src/components/base/Tooltip/Tooltip.styles.tsx","webpack://_N_E/./src/components/base/Tooltip/Tooltip.tsx","webpack://_N_E/./src/components/base/CarCard/CarCard.v5.tsx","webpack://_N_E/./src/components/base/CarCard/CarCard.tsx","webpack://_N_E/./src/components/contentful/CarFeature/CarFeature.types.tsx","webpack://_N_E/./src/components/contentful/CarFeature/EV_LIST.tsx","webpack://_N_E/./src/components/contentful/CarFeature/CarFeature.v5.tsx","webpack://_N_E/./src/components/contentful/CarFeature/CarFeature.tsx","webpack://_N_E/./src/components/provider/MMYProvider/VehicleProfile.types.ts","webpack://_N_E/./src/components/provider/MMYProvider/VehicleProfile.util.tsx","webpack://_N_E/./src/components/util/LabelWithTooltip/LabelWithTooltip.tsx","webpack://_N_E/./src/components/util/getAPR.ts","webpack://_N_E/./src/constants/calculatorConstants.tsx","webpack://_N_E/./src/hooks/useHomepageRedirect/useHomepageRedirect.tsx","webpack://_N_E/./src/hooks/usePopover/usePopover.tsx","webpack://_N_E/./src/v2-components/molecules/RichText/RichText.tsx","webpack://_N_E/./src/components/base/CarCard/CarCard.module.scss","webpack://_N_E/./src/components/base/CarCard/CarCard.v5.module.scss","webpack://_N_E/./src/components/contentful/CarFeature/CarFeature.module.scss","webpack://_N_E/./src/components/contentful/CarFeature/CarFeature.v5.module.scss","webpack://_N_E/./src/components/util/LabelWithTooltip/LabelWithTooltip.module.scss","webpack://_N_E/./src/v2-components/molecules/RichText/RichText.module.scss"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport useDebounce from \"#hooks/useDebounce/useDebounce\";\n\n/**\n * This hook returns an object containing the height and width values for the\n * current size of the viewport. If the user resizes the browser window, it will\n * return updated values. These values are debounced to avoid unnecessarily\n * frequent updates.\n */\nfunction useViewportSize() {\n const innerHeight = typeof window !== \"undefined\" ? window.innerHeight : 0;\n const innerWidth = typeof window !== \"undefined\" ? window.innerWidth : 0;\n const [height, setHeight] = useDebounce(innerHeight, 100);\n const [width, setWidth] = useDebounce(innerWidth, 100);\n\n const handleResize = () => {\n setHeight(window.innerHeight);\n setWidth(window.innerWidth);\n };\n\n useEffect(() => {\n window.addEventListener(\"resize\", handleResize);\n handleResize();\n\n return () => window.removeEventListener(\"resize\", handleResize);\n // Empty deps to ensure eventlistener is only inititialized on mount.\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return { height, width };\n}\n\nexport default useViewportSize;\n","import useViewportSize from \"#hooks/useViewportSize/useViewportSize\";\nimport { breakpoints } from \"#themes\";\n\nconst breakpointKeys = Object.keys(\n breakpoints.minWidths,\n) as (keyof typeof breakpoints.minWidths)[];\nconst breakpointWidths = Object.values(breakpoints.minWidths).sort(\n (a, b) => a - b,\n);\nconst { minWidths } = breakpoints;\n\n/**\n * This hook returns the name of the breakpoint that best matches the current\n * viewport size.\n */\nfunction useBreakpoint() {\n const { width } = useViewportSize();\n const currBreakpointWidth = breakpointWidths.reduce(\n (prev, curr) => ((width || 0) >= curr ? curr : prev),\n breakpointWidths[0],\n );\n const currBreakpoint = breakpointKeys.find(\n (key) => minWidths[key] === currBreakpointWidth,\n );\n\n return currBreakpoint;\n}\n\nexport default useBreakpoint;\n","import { css } from \"#themes\";\n\nexport const tooltip = css({\n background: \"$backgroundInverse\",\n borderRadius: 16,\n color: \"$textInverse\",\n fontSize: 12,\n lineHeight: 1.5,\n maxWidth: 320,\n padding: \"$gutter\",\n zIndex: 1,\n\n variants: {\n variant: {\n inverted: {\n color: \"$textPrimary\",\n backgroundColor: \"$backgroundPrimary\",\n border: \"1px solid black\",\n },\n },\n },\n});\n\nexport const trigger = css({\n display: \"inline-flex\",\n minHeight: 24,\n minWidth: 24,\n});\n","import { Popover } from \"@headlessui/react\";\nimport { createPortal } from \"react-dom\";\n\nimport Modal from \"#components/base/Modal/Modal\";\nimport Transition from \"#components/util/Transition/Transition\";\nimport useBreakpoint from \"#hooks/useBreakpoint/useBreakpoint\";\nimport useModalContext from \"#hooks/useModalContext/useModalContext\";\nimport usePopover from \"#hooks/usePopover/usePopover\";\nimport { flex, transition } from \"#styles\";\n\nimport * as css from \"./Tooltip.styles\";\nimport { Props } from \"./Tooltip.types\";\n\nconst bodyEl = typeof document === \"undefined\" ? undefined : document.body;\n\n/**\n * Tooltips display informative text when users hover over, focus on, or tap an\n * element.\n */\nconst Tooltip = ({\n children,\n placement = \"top\",\n portalTarget,\n trigger,\n variant = \"primary\",\n ...otherProps\n}: Props) => {\n const { modalEl } = useModalContext();\n const { setAnchorElement, setPopoverElement, popoverStyles } = usePopover({\n modifiers: [\n { name: \"offset\", options: { offset: [0, 16] } },\n {\n name: \"flip\",\n options: { fallbackPlacements: [\"bottom\", \"right\", \"left\"] },\n },\n ],\n placement,\n strategy: \"absolute\",\n });\n\n const currBreakpoint = useBreakpoint();\n const isMobileViewport = currBreakpoint === \"tabletSmall\";\n\n return (\n \n {({ close, open }) => (\n <>\n \n {trigger}\n \n\n {isMobileViewport ? (\n {\n close();\n return false;\n }}\n open={open}\n children={children}\n />\n ) : (\n bodyEl &&\n createPortal(\n \n \n \n {children}\n \n \n ,\n portalTarget || modalEl || bodyEl,\n )\n )}\n \n )}\n \n );\n};\n\nexport default Tooltip;\n","import \"lazysizes\";\nimport \"lazysizes/plugins/attrchange/ls.attrchange\";\n\nimport classNames from \"classnames\";\nimport { pmt } from \"financial\";\nimport NumberScroller from \"number-scroller\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { getImaginImageUrl } from \"#components/provider/MMYProvider/VehicleProfile.util\";\nimport { getAPR } from \"#components/util/getAPR\";\nimport useHomepageRedirect from \"#hooks/useHomepageRedirect/useHomepageRedirect\";\nimport { CalculatorConfig } from \"#types/calculator.types\";\nimport {\n centsToDollarString,\n numberToPercentString,\n} from \"#util/number/number\";\nimport Button from \"#v2-components/molecules/Button/Button\";\nimport { ButtonVariant } from \"#v2-components/molecules/Button/Button.types\";\n\nimport styles from \"./CarCard.module.scss\";\nimport stylesv5 from \"./CarCard.v5.module.scss\";\n\n/**\n * Car card for CarFeature component\n * @returns a car card with an image and example loan info\n */\nconst CarCardV5 = ({\n model,\n msrpCents,\n termLengthMonths,\n ficoBand,\n imageUrl,\n make,\n calculatorConfig,\n button1Text = \"Apply Now\",\n button1Url = \"/apply\",\n button2Text = \"Browse Vehicles\",\n button2Url = \"/browse\",\n}: {\n model: string;\n msrpCents: number;\n termLengthMonths: number;\n ficoBand: number;\n imageUrl?: string;\n make: string;\n calculatorConfig: CalculatorConfig;\n button1Text?: string;\n button1Url?: string;\n button2Text?: string;\n button2Url?: string;\n}) => {\n const { carFeatureRedirect } = useHomepageRedirect();\n const [showDeferred, setShowDeferred] = useState(true);\n const salesTax = 0.08;\n const msrpWithTaxCents = msrpCents * (1 + salesTax);\n const downPaymentCents = msrpWithTaxCents * 0.1;\n\n const avgLoanCents = Math.min(\n msrpWithTaxCents - downPaymentCents,\n 100 * 1000 * 100,\n );\n\n const estApr = getAPR(ficoBand, termLengthMonths, calculatorConfig);\n\n const deferredPaymentCents = avgLoanCents * 0.2;\n const standardMonthlyPayment = Math.round(\n -1 * pmt(estApr / 12, termLengthMonths, avgLoanCents),\n );\n const deferredMonthlyPayment = Math.round(\n -1 *\n pmt(\n estApr / 12,\n termLengthMonths,\n avgLoanCents,\n -1 * deferredPaymentCents,\n ),\n );\n\n const paymentRef = useRef(Math.ceil(deferredMonthlyPayment / 100));\n const imaginImageUrl = useMemo(\n () =>\n getImaginImageUrl({\n make,\n model,\n height: \"1200\",\n width: \"2600\",\n zoomType: \"relative\",\n zoomLevel: \"18\",\n }),\n [model, make],\n );\n\n useEffect(() => {\n paymentRef.current = !showDeferred\n ? Math.ceil(deferredMonthlyPayment / 100)\n : Math.ceil(standardMonthlyPayment / 100);\n }, [showDeferred]);\n\n return (\n
\n \n
\n

{make}

\n
\n
\n

{model}

\n
\n \n
\n $\n \n \n /mo\n \n
\n
\n {termLengthMonths !== 84 && (\n setShowDeferred(!showDeferred)}\n onKeyDown={(event) => {\n event.preventDefault();\n if (event.keyCode === 13) {\n setShowDeferred(!showDeferred);\n }\n }}\n role=\"button\"\n className={`${\n showDeferred ? styles.activeSelector : styles.inactiveSelector\n }`}\n >\n {showDeferred ? (\n With deferred\n ) : (\n With standard\n )}{\" \"}\n payment\n
\n )}\n
\n
\n Amount Financed (avg.)\n {centsToDollarString(avgLoanCents, 0, 0)}\n
\n
\n \n Estimated APR%*\n \n {numberToPercentString(estApr)}\n
\n
 
\n
\n carFeatureRedirect(make, model, button1Url)}\n id=\"get-started-button\"\n aria-label=\"new loan\"\n >\n {button1Text}\n \n
\n
\n {\n document.location = button2Url as unknown as Location;\n }}\n id=\"get-started-button\"\n aria-label=\"new loan\"\n >\n {button2Text}\n \n
\n \n \n );\n};\n\nexport default CarCardV5;\n","import \"lazysizes\";\nimport \"lazysizes/plugins/attrchange/ls.attrchange\";\n\nimport classNames from \"classnames\";\nimport { pmt } from \"financial\";\nimport NumberScroller from \"number-scroller\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { getImaginImageUrl } from \"#components/provider/MMYProvider/VehicleProfile.util\";\nimport { getAPR } from \"#components/util/getAPR\";\nimport useHomepageRedirect from \"#hooks/useHomepageRedirect/useHomepageRedirect\";\nimport { CalculatorConfig } from \"#types/calculator.types\";\nimport {\n centsToDollarString,\n numberToPercentString,\n} from \"#util/number/number\";\nimport Button from \"#v2-components/molecules/Button/Button\";\n\nimport styles from \"./CarCard.module.scss\";\nimport CarCardV5 from \"./CarCard.v5\";\n/**\n * Car card for CarFeature component\n * @returns a car card with an image and example loan info\n */\nconst CarCard = ({\n model,\n msrpCents,\n termLengthMonths,\n ficoBand,\n imageUrl,\n make,\n calculatorConfig,\n templateVersion,\n button1Text,\n button1Url,\n button2Text,\n button2Url,\n}: {\n model: string;\n msrpCents: number;\n termLengthMonths: number;\n ficoBand: number;\n imageUrl?: string;\n make: string;\n calculatorConfig: CalculatorConfig;\n templateVersion?: 3 | 4 | 5;\n button1Text?: string;\n button1Url?: string;\n button2Text?: string;\n button2Url?: string;\n}) => {\n const { carFeatureRedirect } = useHomepageRedirect();\n const [showDeferred, setShowDeferred] = useState(true);\n const salesTax = 0.08;\n const msrpWithTaxCents = msrpCents * (1 + salesTax);\n const downPaymentCents = msrpWithTaxCents * 0.1;\n\n const avgLoanCents = Math.min(\n msrpWithTaxCents - downPaymentCents,\n 100 * 1000 * 100,\n );\n\n const estApr = getAPR(ficoBand, termLengthMonths, calculatorConfig);\n\n const deferredPaymentCents = avgLoanCents * 0.2;\n const standardMonthlyPayment = Math.round(\n -1 * pmt(estApr / 12, termLengthMonths, avgLoanCents),\n );\n const deferredMonthlyPayment = Math.round(\n -1 *\n pmt(\n estApr / 12,\n termLengthMonths,\n avgLoanCents,\n -1 * deferredPaymentCents,\n ),\n );\n\n const paymentRef = useRef(deferredMonthlyPayment / 100);\n const imaginImageUrl = useMemo(\n () =>\n getImaginImageUrl({\n make,\n model,\n height: \"1200\",\n width: \"2600\",\n zoomType: \"relative\",\n zoomLevel: \"18\",\n }),\n [model, make],\n );\n\n useEffect(() => {\n paymentRef.current = !showDeferred\n ? deferredMonthlyPayment / 100\n : standardMonthlyPayment / 100;\n }, [showDeferred]);\n\n if (templateVersion === 3) {\n return null;\n }\n\n if (templateVersion === 5) {\n return (\n \n );\n }\n\n return (\n
\n \n \n

{make}

\n
{model}
\n
\n
\n {termLengthMonths !== 84 && (\n setShowDeferred(true)}\n tabIndex={0}\n onKeyDown={() => setShowDeferred(true)}\n role=\"button\"\n className={`${\n showDeferred ? styles.activeSelector : styles.inactiveSelector\n }`}\n >\n With Deferred\n
\n )}\n setShowDeferred(false)}\n tabIndex={0}\n onKeyDown={() => setShowDeferred(false)}\n role=\"button\"\n className={`${\n showDeferred ? styles.inactiveSelector : styles.activeSelector\n }`}\n >\n {termLengthMonths !== 84 ? \"Standard\" : \"\"}\n
\n
\n
\n Avg. Amount Financed\n {centsToDollarString(avgLoanCents, 0, 0)}\n
\n
\n Estimated APR *\n {numberToPercentString(estApr)}\n
\n
\n Estimated Monthly\n \n \n /mo.\n \n
\n\n carFeatureRedirect(make, model)}\n id=\"get-started-button\"\n aria-label=\"new loan\"\n >\n Apply\n \n \n \n );\n};\n\nexport default CarCard;\n","import {\n ContentfulCustomNode,\n CustomContentModelType,\n} from \"#components/contentful/contentful.custom.types\";\nimport { ContentfulRichText } from \"#v2-components/molecules/RichText/RichText.types\";\n\nexport enum CalculatorVariants {\n Light = \"Light\",\n Dark = \"Dark\",\n}\n\nexport type CalculatorFields = {\n disclaimer: ContentfulRichText;\n slashDivider?: boolean;\n sectionTitle?: string;\n themedTitle?: string;\n vehicleMake?: string;\n vehicleModel?: string;\n removedModels?: string[];\n priorityMakes?: string[];\n // experimental functionality for growth Aiden 01242023\n selectedModelsOnly?: boolean;\n selectedModels: string[];\n variant: CalculatorVariants;\n templateVersion: 4 | 5;\n button1Text?: string;\n button1Url?: string;\n button2Text?: string;\n button2Url?: string;\n};\n\nexport type CalculatorSection = ContentfulCustomNode<\n CalculatorFields,\n CustomContentModelType.CalculatorSection\n>;\n","/** [Make, Model, MsrpCents] */\nexport type VehicleMake =\n | \"Audi\"\n | \"Alfa Romeo\"\n | \"Bentley\"\n | \"BMW\"\n | \"Cadillac\"\n | \"Chevrolet\"\n | \"Chrysler\"\n | \"Dodge\"\n | \"Fiat\"\n | \"Fisker\"\n | \"Ford\"\n | \"Genesis\"\n | \"GMC\"\n | \"Honda\"\n | \"Hyundai\"\n | \"Jaguar\"\n | \"Jeep\"\n | \"Kia\"\n | \"Land Rover\"\n | \"Lexus\"\n | \"Lincoln\"\n | \"Lucid\"\n | \"Mazda\"\n | \"McLaren\"\n | \"Mercedes-Benz\"\n | \"Mini\"\n | \"Mitsubishi\"\n | \"Nissan\"\n | \"Polestar\"\n | \"Porsche\"\n | \"Rimac\"\n | \"Rivian\"\n | \"Smart\"\n | \"Subaru\"\n | \"Tesla\"\n | \"Toyota\"\n | \"Volkswagen\"\n | \"Volvo\";\n\nexport type VehicleObject = {\n make: VehicleMake;\n model: string;\n imageUrl?: string;\n msrp: number;\n};\n\n/**\n * list of vehicle make, model, and imageUrl\n * that is used in the homepage loan calculator\n * images are fetched by carsXe\n */\nexport const evArray: VehicleObject[] = [\n {\n make: \"Cadillac\",\n model: \"Lyriq\",\n msrp: 6299000,\n },\n {\n make: \"Fisker\",\n model: \"Ocean Extreme\",\n msrp: 6899900,\n },\n {\n make: \"Fisker\",\n model: \"Ocean Ultra\",\n msrp: 4999900,\n },\n {\n make: \"Fisker\",\n model: \"Ocean Sport\",\n msrp: 3749900,\n },\n {\n make: \"Fisker\",\n model: \"Ocean One\",\n msrp: 6899900,\n },\n {\n make: \"Jaguar\",\n model: \"I-PACE\",\n msrp: 7130000,\n },\n {\n make: \"BMW\",\n model: \"iX xDrive50\",\n msrp: 8410000,\n },\n {\n make: \"BMW\",\n model: \"iX M60\",\n msrp: 10890000,\n },\n {\n make: \"BMW\",\n model: \"i4 eDrive35\",\n msrp: 5140000,\n },\n {\n make: \"BMW\",\n model: \"i4 eDrive40\",\n msrp: 5590000,\n },\n {\n make: \"BMW\",\n model: \"i4 M50\",\n msrp: 6730000,\n },\n {\n make: \"BMW\",\n model: \"X5 xDrive45e\",\n msrp: 6570000,\n },\n {\n make: \"Alfa Romeo\",\n model: \"Tonale\",\n msrp: 4299500,\n },\n {\n make: \"Audi\",\n model: \"Q4 e-tron\",\n msrp: 4880000,\n },\n {\n make: \"Audi\",\n model: \"Q4 Sportback e-tron\",\n msrp: 5680000,\n },\n {\n make: \"Audi\",\n model: \"e-tron\",\n msrp: 7080000,\n },\n {\n make: \"Audi\",\n model: \"e-tron Sportback\",\n msrp: 7400000,\n },\n {\n make: \"Audi\",\n model: \"e-tron S\",\n msrp: 8820000,\n },\n {\n make: \"Audi\",\n model: \"e-tron S Sportback\",\n msrp: 9080000,\n },\n {\n make: \"Audi\",\n model: \"e-tron GT\",\n msrp: 10490000,\n },\n {\n make: \"Bentley\",\n model: \"Bentayga\",\n msrp: 19730000,\n },\n {\n make: \"Bentley\",\n model: \"Flying Spur\",\n msrp: 20860000,\n },\n {\n make: \"Chevrolet\",\n model: \"Bolt EV\",\n msrp: 2560000,\n },\n {\n make: \"Chevrolet\",\n model: \"Bolt EUV\",\n msrp: 2720000,\n },\n {\n make: \"Chrysler\",\n model: \"Pacifica Hybrid\",\n msrp: 4697800,\n },\n {\n make: \"Dodge\",\n model: \"Hornet\",\n msrp: 3073500,\n },\n {\n make: \"Fiat\",\n model: \"500\",\n msrp: 2984500,\n },\n {\n make: \"Ford\",\n model: \"Escape Plug-In Hybrid\",\n msrp: 3850000,\n },\n {\n make: \"Ford\",\n model: \"F-150 Lightning\",\n msrp: 5197400,\n },\n {\n make: \"Ford\",\n model: \"Mustang Mach-E\",\n msrp: 4689500,\n },\n {\n make: \"Genesis\",\n model: \"G80\",\n msrp: 5415000,\n },\n {\n make: \"Genesis\",\n model: \"GV60\",\n msrp: 5200000,\n },\n {\n make: \"Genesis\",\n model: \"GV70\",\n msrp: 4490000,\n },\n {\n make: \"GMC\",\n model: \"Hummer EV SUV\",\n msrp: 7999500,\n },\n {\n make: \"GMC\",\n model: \"Hummer EV Pickup\",\n msrp: 9717500,\n },\n {\n make: \"Honda\",\n model: \"Fit EV\",\n msrp: 3662500,\n },\n {\n make: \"Honda\",\n model: \"Accord\",\n msrp: 2789500,\n },\n {\n make: \"Honda\",\n model: \"Clarity\",\n msrp: 3340000,\n },\n {\n make: \"Hyundai\",\n model: \"Ioniq 5\",\n msrp: 4145000,\n },\n {\n make: \"Hyundai\",\n model: \"Kona Electric\",\n msrp: 3350000,\n },\n {\n make: \"Hyundai\",\n model: \"Santa Fe Plug-In Hybrid\",\n msrp: 4000000,\n },\n {\n make: \"Jeep\",\n model: \"Grand Cherokee 4xe\",\n msrp: 6209500,\n },\n {\n make: \"Jeep\",\n model: \"Wrangler 4xe\",\n msrp: 5473500,\n },\n {\n make: \"Kia\",\n model: \"EV6\",\n msrp: 4850000,\n },\n {\n make: \"Kia\",\n model: \"Niro Electric\",\n msrp: 3945000,\n },\n {\n make: \"Land Rover\",\n model: \"Range Rover\",\n msrp: 10740000,\n },\n {\n make: \"Land Rover\",\n model: \"Ranger Rover Sport\",\n msrp: 8360000,\n },\n {\n make: \"Lexus\",\n model: \"NX Plug-In Hybrid\",\n msrp: 5770500,\n },\n {\n make: \"Lincoln\",\n model: \"Aviator Grand Touring\",\n msrp: 6919000,\n },\n {\n make: \"Lincoln\",\n model: \"Corsair Grand Touring\",\n msrp: 5338500,\n },\n {\n make: \"Lucid\",\n model: \"Air Pure\",\n msrp: 8740000,\n },\n {\n make: \"Lucid\",\n model: \"Air Touring\",\n msrp: 10740000,\n },\n {\n make: \"Mazda\",\n model: \"CX-90\",\n msrp: 3959500,\n },\n {\n make: \"Mazda\",\n model: \"MX-30 EV\",\n msrp: 3411000,\n },\n {\n make: \"McLaren\",\n model: \"Artura\",\n msrp: 23300000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"GLC\",\n msrp: 4745000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"GLE\",\n msrp: 5770000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"B-Class\",\n msrp: 5178900,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"C-Class\",\n msrp: 4485000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"S-Class\",\n msrp: 11730000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQS 450+ SUV\",\n msrp: 11019000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQB 250+ SUV\",\n msrp: 5275000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"AMG EQS Sedan\",\n msrp: 14755000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"AMG EQE Sedan\",\n msrp: 10690000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQS450+ Sedan\",\n msrp: 10440000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQE350+ Sedan\",\n msrp: 7490000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQB 300 4MATIC SUV\",\n msrp: 5690000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQB 350 4MATIC SUV\",\n msrp: 6055000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQS 450 4MATIC SUV\",\n msrp: 10740000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQS 580 4MATIC SUV\",\n msrp: 12595000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQE 350 4MATIC Sedan\",\n msrp: 7790000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQE 500 4MATIC Sedan\",\n msrp: 8590000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQS 450 4MATIC Sedan\",\n msrp: 10740000,\n },\n {\n make: \"Mercedes-Benz\",\n model: \"EQS 580 4MATIC Sedan\",\n msrp: 125925000,\n },\n {\n make: \"Mini\",\n model: \"Cooper Electric\",\n msrp: 3422500,\n },\n {\n make: \"Mitsubishi\",\n model: \"I-MiEV\",\n msrp: 2299500,\n },\n {\n make: \"Mitsubishi\",\n model: \"Outlander\",\n msrp: 2839500,\n },\n {\n make: \"Nissan\",\n model: \"Leaf\",\n msrp: 2804000,\n },\n {\n make: \"Polestar\",\n model: \"3\",\n msrp: 8390000,\n },\n {\n make: \"Polestar\",\n model: \"2\",\n msrp: 4840000,\n },\n {\n make: \"Porsche\",\n model: \"Taycan\",\n msrp: 8670000,\n },\n {\n make: \"Rivian\",\n model: \"R1T\",\n msrp: 7300000,\n },\n {\n make: \"Rivian\",\n model: \"R1S\",\n msrp: 7800000,\n },\n {\n make: \"Smart\",\n model: \"Fortwo\",\n msrp: 2810000,\n },\n {\n make: \"Subaru\",\n model: \"Crosstrek Hybrid\",\n msrp: 3684500,\n },\n {\n make: \"Tesla\",\n model: \"Model 3\",\n msrp: 4024000,\n },\n {\n make: \"Tesla\",\n model: \"Model Y\",\n msrp: 5049000,\n },\n {\n make: \"Tesla\",\n model: \"Model S\",\n msrp: 7499000,\n },\n {\n make: \"Tesla\",\n model: \"Model X\",\n msrp: 7999000,\n },\n {\n make: \"Toyota\",\n model: \"BZ4X\",\n msrp: 4200000,\n },\n {\n make: \"Toyota\",\n model: \"Prius Prime\",\n msrp: 2877000,\n },\n {\n make: \"Toyota\",\n model: \"RAV4 Prime\",\n msrp: 4159000,\n },\n {\n make: \"Volkswagen\",\n model: \"ID.4\",\n msrp: 3749500,\n },\n {\n make: \"Volvo\",\n model: \"XC40 Recharge\",\n msrp: 5350000,\n },\n];\n\nexport const defaultEvArray = [\n {\n make: \"Tesla\",\n model: \"Model 3\",\n imageUrl:\n \"https://cdn-01.imagin.studio/getImage?&customer=ustenet&make=tesla&modelFamily=model-3&modelRange=model-3&modelVariant=sa&modelYear=2021&powerTrain=electric&transmission=0&bodySize=4&trim=eu&paintId=pspc0107®ion=us&angle=01&zoomType=relative&height=1200&width=2600&zoomLevel=18\",\n msrp: 4024000,\n },\n {\n make: \"Ford\",\n model: \"Mustang Mach-E\",\n imageUrl:\n \"https://cdn.imagin.studio/getImage?customer=ustenet&make=ford&modelFamily=mustang&modelRange=mustang-mach-e&modelVariant=od&modelYear=2020&powerTrain=electric&transmission=0&bodySize=5&trim=eu&paintId=pspc0146®ion=us&zoomType=relative&height=1200&width=2600&zoomLevel=18\",\n msrp: 4689500,\n },\n {\n make: \"Chevrolet\",\n model: \"Bolt EV\",\n imageUrl:\n \"https://cdn.imagin.studio/getImage?customer=ustenet&make=chevrolet&modelFamily=bolt&modelRange=bolt&modelVariant=ha&year=2022&paintId=pspc0266®ion=us&angle=01&format=webp&zoomType=relative&height=1200&width=2600&zoomLevel=18\",\n msrp: 2560000,\n },\n {\n make: \"Tesla\",\n model: \"Model Y\",\n imageUrl:\n \"https://cdn-01.imagin.studio/getImage?&customer=ustenet&make=tesla&modelFamily=model-y&modelRange=model-y&modelVariant=od&modelYear=2020&powerTrain=electric&transmission=0&bodySize=5&trim=eu&paintId=pspc0323®ion=us&angle=01&zoomType=relative&height=1200&width=2600&zoomLevel=18\",\n msrp: 5049000,\n },\n];\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport ArrowRightIcon from \"@heroicons/react/24/solid/ArrowRightIcon\";\nimport classNames from \"classnames\";\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { ComponentProps, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport LOSClient from \"#api.los/client\";\nimport CarCard from \"#components/base/CarCard/CarCard\";\nimport DropdownField from \"#components/base/DropdownField/DropdownField\";\nimport Modal from \"#components/base/Modal/Modal\";\nimport LabelWithTooltip from \"#components/util/LabelWithTooltip/LabelWithTooltip\";\nimport { CREDIT_BANDS, TERM_LENGTHS } from \"#constants/calculatorConstants\";\nimport { INDIVIDUAL_FICOS } from \"#constants/creditConstants\";\nimport RichText from \"#v2-components/molecules/RichText/RichText\";\nimport SectionWrapper from \"#v2-components/templates/section-wrapper/SectionWrapper\";\n\nimport styles from \"./CarFeature.module.scss\";\nimport { CalculatorFields } from \"./CarFeature.types\";\nimport stylesv5 from \"./CarFeature.v5.module.scss\";\n// prettier-ignore\nimport { defaultEvArray, evArray, VehicleObject } from \"./EV_LIST\";\n\n/**\n * Home page car feature\n * @returns an example loan calculator for popular cars\n * @author Jordon\n */\n\nconst CarFeature = ({\n fields,\n calculatorConfig,\n}: {\n fields: CalculatorFields;\n calculatorConfig: CalculatorConfig;\n}) => {\n const {\n removedModels,\n vehicleMake,\n vehicleModel,\n sectionTitle,\n themedTitle,\n selectedModelsOnly,\n selectedModels,\n disclaimer,\n button1Text = \"Apply Now\",\n button1Url = \"/apply\",\n button2Text = \"Browse Vehicles\",\n button2Url = \"/browse\",\n } = fields;\n const [modal, setModal] = useState(false);\n const [selectedMake, setSelectedMake] = useState(vehicleMake || undefined);\n const [selectedModel, setSelectedModel] = useState(vehicleModel || \"Model 3\");\n const [selectedCredit, setSelectedCredit] = useState(\n CREDIT_BANDS.SUPERB_CREDIT,\n );\n const [selectedTermLength, setSelectedTermLength] = useState(\n TERM_LENGTHS.SIXTY_MO,\n );\n const termLengthRef = useRef(null);\n\n // Makes a compatible object\n const creditBands = [\n {\n label: CREDIT_BANDS.SUBPRIME_CREDIT,\n value: CREDIT_BANDS.SUBPRIME_CREDIT,\n text: `Good (620 - ${CREDIT_BANDS.SUBPRIME_CREDIT})`,\n },\n {\n label: CREDIT_BANDS.NONPRIME_CREDIT,\n value: CREDIT_BANDS.NONPRIME_CREDIT,\n text: `Very good (${CREDIT_BANDS.SUBPRIME_CREDIT + 1} - ${\n CREDIT_BANDS.NONPRIME_CREDIT\n })`,\n },\n {\n label: CREDIT_BANDS.PRIME_CREDIT,\n value: CREDIT_BANDS.PRIME_CREDIT,\n text: `Great (${CREDIT_BANDS.NONPRIME_CREDIT + 1} - ${\n CREDIT_BANDS.PRIME_CREDIT\n })`,\n },\n {\n label: CREDIT_BANDS.SUPERB_CREDIT,\n value: CREDIT_BANDS.SUPERB_CREDIT,\n text: `Excellent (${CREDIT_BANDS.PRIME_CREDIT + 1}+)`,\n },\n ];\n\n const validVehicles = evArray.filter(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n (vehicle) => !removedModels?.includes(vehicle.model),\n );\n\n const sortedMakes = () => {\n const makes = new Set(validVehicles.map((vehicle) => vehicle.make).sort());\n\n return [...makes].map((make) => {\n return {\n label: make,\n text: make,\n value: make,\n };\n });\n };\n\n const handleMakeSelector = (e: React.ChangeEvent) => {\n setSelectedMake(e.target.value);\n const newModels = validVehicles.filter(\n (vehicle) => vehicle.make === e.target.value,\n );\n setSelectedModel(newModels[0]?.model);\n };\n\n const handleCreditSelector = (e: React.ChangeEvent) => {\n // Typesafe handling of e => enum\n // The way Object.values/Object.keys handles enums is quite strange, if this function is confusing try\n // console logging an enum and these opperations one at a time.\n if (Object.values(CREDIT_BANDS).includes(Number(e.target.value))) {\n const creditIndex = Object.values(CREDIT_BANDS).indexOf(\n Number(e.target.value),\n );\n const creditKey = Object.keys(CREDIT_BANDS)[creditIndex];\n setSelectedCredit(CREDIT_BANDS[creditKey] as CREDIT_BANDS);\n\n // EV : Changes the term length to 72 months if a user has 84 months selected with a credit that is\n // higher than good and changes it to \"Good\".\n if (\n creditKey === \"SUBPRIME_CREDIT\" &&\n selectedTermLength === TERM_LENGTHS.EIGHTY_FOUR_MO\n ) {\n setSelectedTermLength(TERM_LENGTHS.SEVENTY_TWO_MO);\n }\n }\n };\n\n const handleTermSelector = (e: React.ChangeEvent) => {\n // Typesafe handling of e => enum\n if (Object.values(TERM_LENGTHS).includes(Number(e.target.value))) {\n const termIndex = Object.values(TERM_LENGTHS).indexOf(\n Number(e.target.value),\n );\n const termKey = Object.keys(TERM_LENGTHS)[termIndex];\n setSelectedTermLength(TERM_LENGTHS[termKey] as TERM_LENGTHS);\n termLengthRef.current = TERM_LENGTHS[termKey];\n }\n };\n\n const termLengths = useMemo(() => {\n return Object.values(TERM_LENGTHS)\n .filter((key) => {\n if (\n selectedCredit === CREDIT_BANDS.SUBPRIME_CREDIT &&\n TERM_LENGTHS[key] === 84\n ) {\n return false;\n }\n\n return typeof key === \"string\";\n })\n .map((term) => {\n return {\n label: TERM_LENGTHS[term],\n value: TERM_LENGTHS[term],\n text: `${TERM_LENGTHS[term] as TERM_LENGTHS} months`,\n };\n });\n }, [selectedCredit]);\n\n if (fields.templateVersion === 5) {\n return ;\n }\n\n return (\n <>\n {slashDivider && (\n \n )}\n \n \n
\n
\n {sectionTitle ? (\n <>\n
\n

{sectionTitle}

\n
\n \n Finance calculator{\" \"}\n \n \n
\n
\n

{themedTitle}

\n \n ) : (\n

\n Calculate your estimated monthly payment\n

\n )}\n
\n
\n
\n
\n \n Tenet products are only available to those with positive\n credit histories. We have a minimum FICO®{\" \"}\n Score requirement of {INDIVIDUAL_FICOS.MIN_PURCHASE} for\n Purchase and Refinance Loans.\n \n }\n />\n \n
\n
\n Select your loan term\n \n
\n {!selectedModelsOnly && (\n
\n Select your vehicle\n \n
\n )}\n
\n
\n \n \n
\n \n
\n \n setModal(false)}>\n Actual rates and terms will depend on the applicant’s credit\n quality, verified income, and the collateral being financed. For\n example, a loan with an Annual Percentage Rate (APR) of 5.99% with\n a 72-month Term with $50,000 Amount Financed will have a Monthly\n Payment of $828.41 with Total Finance Charges of $9,645.52 and\n Total Payments of $59,645.52 over the life of the loan. If the\n Deferred Payment Option is chosen, and the maximum deferment of\n 20% is selected, there would be 72 Monthly Payments of $712.64\n with a Final Payment of $10,000 at the end of the Term, with Total\n Finance Charges of $11,310.08 and Total Payments of $61,310.08\n over the life of the loan.\n \n
\n
\n \n \n );\n};\n\nconst CarCardsDesktop = ({\n selectedMake,\n selectedCredit,\n selectedTermLength,\n validVehicles,\n selectedModels,\n calculatorConfig,\n}: {\n selectedMake?: string;\n selectedCredit: number;\n selectedTermLength: number;\n validVehicles: VehicleObject[];\n selectedModels?: string[];\n calculatorConfig: CalculatorConfig;\n}) => {\n const validMakes = selectedModels\n ? validVehicles.filter((vehicle) => selectedModels.includes(vehicle.model))\n : validVehicles.filter((vehicle) => vehicle.make === selectedMake);\n\n return (\n
\n = 3 || !validMakes.length\n ? styles.grid\n : styles.flexed\n }`}\n >\n {useCarCards(\n selectedCredit,\n selectedTermLength,\n validVehicles,\n calculatorConfig,\n selectedMake,\n undefined,\n selectedModels,\n )}\n
\n \n );\n};\n\nconst CarCardsMobile = ({\n selectedMake,\n selectedModel,\n selectedCredit,\n selectedTermLength,\n validVehicles,\n selectedModels,\n calculatorConfig,\n}: {\n selectedMake?: string;\n selectedModel: string;\n selectedCredit: number;\n selectedTermLength: number;\n validVehicles: VehicleObject[];\n selectedModels?: string[];\n calculatorConfig: CalculatorConfig;\n}) => {\n const validVehiclesLength = validVehicles.filter(\n (vehicle) => vehicle.make === selectedMake,\n ).length;\n return (\n
\n
\n \n {useCarCards(\n selectedCredit,\n selectedTermLength,\n validVehicles,\n calculatorConfig,\n selectedMake,\n selectedModel,\n selectedModels,\n ).map((card) => (\n \n {card}\n \n ))}\n \n
\n
\n );\n};\n\n/**\n * Renders a map of carCard components\n * @param {string} make the selected make of the electric vehicle\n * @param {number} creditBand the index of the selected credit band\n * @param {number} termLengthMonths the selected term length in months\n * @returns a map of CarCard components for the home page calculator\n */\nconst useCarCards = (\n creditBand: number,\n termLengthMonths: number,\n validVehicles: VehicleObject[],\n calculatorConfig: CalculatorConfig,\n make?: string,\n model?: string,\n selectedModels?: string[],\n) => {\n const validMakes = selectedModels\n ? validVehicles.filter((vehicle) => selectedModels.includes(vehicle.model))\n : validVehicles.filter((vehicle) => vehicle.make === make);\n\n // Sorts makes of model to return specified make first, if there is a specified make\n const sortedMakes = () => {\n if (make) {\n const carArray = model\n ? validMakes\n .filter((vehicle) => vehicle.model === model)\n .concat(validMakes.filter((vehicle) => vehicle.model !== model))\n : validMakes;\n return carArray;\n }\n return defaultEvArray;\n };\n const carCardArray = useMemo(\n () =>\n sortedMakes().map((vehicle) => {\n return (\n \n );\n }),\n [make, creditBand, termLengthMonths, model],\n );\n return carCardArray;\n};\n\nconst CalculatorConfigProvider = ({\n ...props\n}: Omit, \"calculatorConfig\">) => {\n const [config, setCalculatorConfig] = useState();\n\n useEffect(() => {\n LOSClient.calculator.get().then((res) => {\n setCalculatorConfig(res.response?.body?.data);\n });\n }, []);\n\n if (!config) {\n return null;\n }\n\n return ;\n};\n\nexport default CalculatorConfigProvider;\n","import { VehicleProfileProvider } from \"#api.los/client.types\";\nimport { Page } from \"#util/pageNavigationHelpers\";\n\nexport interface MMYTMake {\n make: string;\n logo_url: string;\n}\n\nexport enum EngineType {\n FULL_ELECTRIC = \"FULL_ELECTRIC\",\n HYBRID = \"HYBRID\",\n INTERNAL_COMBUSTION = \"INTERNAL_COMBUSTION\",\n UNKNOWN = \"UNKNOWN\",\n}\nexport interface MMYTVehicleProfile {\n id: string;\n externalVehicleProfileId: string;\n externalVehicleProfileProvider: VehicleProfileProvider;\n make: string;\n model: string;\n trim: string;\n year: string;\n imageUrl: string;\n isElectric: boolean;\n engineType: EngineType;\n}\n\nexport interface MMYTFieldValues {\n make?: string;\n model?: string;\n year?: string;\n trim?: string;\n loanApplicationId?: string;\n id?: string;\n destination?: Page;\n}\n\nexport enum PriorityMakes {\n TESLA = \"Tesla\",\n POLESTAR = \"Polestar\",\n FORD = \"Ford\",\n CHEVROLET = \"Chevrolet\",\n RIVIAN = \"Rivian\",\n OTHER = \"Other\",\n}\n\nexport interface GetImaginImageUrlArgs {\n make: string;\n model: string;\n year?: string | number;\n angle?: string;\n width?: string;\n height?: string;\n paintId?: string;\n zoomType?: string;\n zoomLevel?: string;\n}\n","import moment from \"moment\";\n\nimport { FuelType } from \"#api.los/client.types\";\nimport {\n EngineType,\n GetImaginImageUrlArgs,\n MMYTMake,\n PriorityMakes,\n} from \"#components/provider/MMYProvider/VehicleProfile.types\";\n\nexport const getEngineType = (fuelType: FuelType) => {\n if (fuelType === FuelType.ELECTRIC) {\n return EngineType.FULL_ELECTRIC;\n }\n if (fuelType === FuelType.HYBRID) {\n return EngineType.HYBRID;\n }\n if (fuelType === FuelType.GAS) {\n return EngineType.INTERNAL_COMBUSTION;\n }\n return EngineType.FULL_ELECTRIC;\n};\n\nexport const slugifyForImagin = (str: string) => {\n if (!str) {\n return \"\";\n }\n // Overrides for specific models\n if (str === \"eGolf\") {\n return \"golf&modelRange=e-golf\";\n }\n if (str === \"lucid air\") {\n return \"air&modelRange=air\";\n }\n return str.toLowerCase().replace(/[^a-zA-Z0-9]+/g, \"-\");\n};\n\nexport const getImaginImageUrl = (args: GetImaginImageUrlArgs) => {\n /*\n EV: This check exists since the image was given to us early. It is part of imagin's new\n v4 which isn't out yet. This early return will be removed once v4 is out and doesn't produce ugly\n images.\n */\n const isR1S = (() => {\n return args.make === PriorityMakes.RIVIAN && args.model === \"R1S\";\n })();\n\n const _zoomType = args.zoomType ?? \"fullscreen\";\n\n return `https://cdn.imagin.studio/getImage?customer=ustenet&make=${slugifyForImagin(\n args.make,\n )}&modelFamily=${slugifyForImagin(args.model)}&modelYear=${\n args.year || moment().year().toString()\n }&paintId=${args.paintId || \"imagin-grey\"}&angle=${\n args.angle || \"01\"\n }&width=${args.width || \"300\"}&format=webp&zoomType=${_zoomType}${\n args.height ? `&height=${args.height}` : \"\"\n }${isR1S ? \"&v4=true\" : \"\"}®ion=us${\n args.zoomLevel ? `&zoomLevel=${args.zoomLevel}` : \"\"\n }`;\n};\n\nexport const getMakeLogoUrl = (make: string) => {\n if (make.toLowerCase() === \"bmw\") {\n return \"/img/makes/BMW.svg\";\n }\n return `/img/makes/${make}.svg`;\n};\n\nexport const makeExists = (makes: MMYTMake[], make?: string) => {\n if (!make || make === \"\") return false;\n return makes?.reduce(\n (acc: boolean, val: MMYTMake) =>\n acc || val.make.toLowerCase() === make.toLowerCase(),\n false,\n );\n};\n","import classNames from \"classnames\";\n\nimport { Info } from \"#components/base/Icon/Icon\";\nimport Tooltip from \"#components/base/Tooltip/Tooltip\";\n\nimport s from \"./LabelWithTooltip.module.scss\";\n\nconst LabelWithTooltip = ({\n label,\n tooltipText,\n className,\n}: {\n label: string;\n tooltipText: string | JSX.Element;\n className?: string;\n}) => {\n return (\n
\n {label}\n }\n >\n {tooltipText}\n \n
\n );\n};\n\nexport default LabelWithTooltip;\n","import { CREDIT_BANDS, TERM_LENGTHS } from \"#constants/calculatorConstants\";\nimport { CalculatorConfig } from \"#types/calculator.types\";\n\n// returns APR\nexport const getAPR = (\n creditScore: CREDIT_BANDS,\n month: TERM_LENGTHS,\n calculatorConfig: CalculatorConfig,\n): number => {\n return calculatorConfig?.[creditScore]?.[month];\n};\n","/* eslint-disable no-case-declarations */\nexport enum CREDIT_BANDS {\n SUBPRIME_CREDIT = 669,\n NONPRIME_CREDIT = 699,\n PRIME_CREDIT = 759,\n SUPERB_CREDIT = 800,\n}\n\nexport enum TERM_LENGTHS {\n EIGHTY_FOUR_MO = 84,\n SEVENTY_TWO_MO = 72,\n SIXTY_MO = 60,\n FOURTY_EIGHT_MO = 48,\n THIRTY_SIX_MO = 36,\n}\n","import { Partner } from \"#api.los/client.types\";\nimport { LoanType } from \"#components/partial/ApplyPage/ApplyPage.types\";\nimport { ApplyConfig } from \"#components/provider/ProvidersOrchestration/Apply\";\nimport { useRouterContext } from \"#components/provider/Router\";\n\nfunction useGetLoanFlowType() {\n const { asPath, basePath, push } = useRouterContext();\n\n /**\n * We should use this instead of just push(something) because it\n * takes partner into account (so we only have to update the partner\n * enum in client.ts to make this redirect work) and is much less code\n * than testing for partner in every place we need to redirect.\n * @param loanType refi or direct\n * @returns a redirect to the beginning of the loan flow\n */\n const goToFlow = (loanType: LoanType) => {\n const flow = loanType === LoanType.Purchase ? \"new-loan\" : \"refinance\";\n if (\n !Object.keys(Partner)\n .map((partner) => asPath.includes(partner.toLowerCase()))\n .includes(true)\n )\n return push(`${basePath}/${flow}`);\n const segments = asPath.split(\"/\");\n const partner = segments[2];\n const newPath = `${basePath}/${partner}/${flow}`;\n return push(newPath);\n };\n\n /**\n * This is used by the car feature to send users to NVIF while taking\n * partner into account with the loan class, type, and use prepopulated\n * for a standard new loan (Individual, Purchase, and Personal) and to the\n * apply page otherwise\n */\n const carFeatureRedirect = (\n selectedCarMake: string,\n selectedCarModel: string,\n applyPathOverride?: string,\n ) => {\n const applyPath = applyPathOverride || \"/apply\";\n const query = `?make=${selectedCarMake}&model=${selectedCarModel}`;\n const step = \"new-loan-landing-redirector\";\n const flow = \"new-loan\";\n if (\n Object.keys(Partner).find((partner) =>\n asPath.toLowerCase().includes(`partner/${partner}`.toLowerCase()),\n )\n ) {\n return push(`${basePath}${applyPath}`);\n }\n\n return push(\n `${basePath}/${flow}/${step}/${query}&applyConfig=${ApplyConfig.STANDARD_NEW_LOAN}`,\n );\n };\n\n return { goToFlow, carFeatureRedirect };\n}\n\nexport default useGetLoanFlowType;\n","import type { Options, State } from \"@popperjs/core\";\nimport { useState } from \"react\";\nimport { usePopper } from \"react-popper\";\n\ninterface UsePopover {\n /**\n * `popoverState` contains useful information like which direction the popover\n * will render, references to the popover/anchor, and sizing and position\n * values of those references.\n */\n popoverState: State | null;\n /**\n * Styles for positioning the `popoverElement` within the viewport. You\n * should pass these, along with the `setPopoverElement` ref fn, to the\n * element you want to use as the popover:\n *\n * ```js\n *
\n * ```\n */\n popoverStyles: React.CSSProperties;\n /**\n * A function for capturing the ref of your popover trigger - this is what the\n * popover will be positioned relative to.\n */\n setAnchorElement: React.Dispatch>;\n /**\n * A function for capturing the ref of the popover element itself.\n */\n setPopoverElement: React.Dispatch>;\n /**\n * Force update the popover position. You may want to do this before or after\n * a transition runs.\n */\n updatePosition: () => void;\n}\n\n// usePopover is a wrapper for `usePopper`, which in turn is a react binding for\n// the `popperjs` positioning engine. This hook returns an object containing a\n// subset of the state and styles for a popper instance, as well as functions\n// for setting the Anchor and Popover elements used by popper.\n// For more info, see:\n// - https://popper.js.org/react-popper/v2/hook/\n// - https://popper.js.org/docs/v2/constructors/#createpopper\nconst usePopover = (popperOptions: Options): UsePopover => {\n const [anchorElement, setAnchorElement] = useState(null);\n const [popoverElement, setPopoverElement] = useState(\n null,\n );\n const { state, styles, update } = usePopper(\n anchorElement,\n popoverElement,\n popperOptions,\n );\n\n const updatePosition = () => {\n update?.();\n };\n\n return {\n popoverState: state,\n popoverStyles: styles.popper,\n setAnchorElement,\n setPopoverElement,\n updatePosition,\n };\n};\n\nexport default usePopover;\n","import {\n documentToReactComponents,\n NodeRenderer,\n Options,\n} from \"@contentful/rich-text-react-renderer\";\nimport { Block, BLOCKS, Inline, MARKS } from \"@contentful/rich-text-types\";\nimport React, { ReactNode } from \"react\";\n\nimport s from \"./RichText.module.scss\";\nimport { ContentfulRichText } from \"./RichText.types\";\n\n// Add functionality as needed Aiden 12082022\nconst Bold: React.FC = ({ children }) => (\n {children}\n);\nconst Italic: React.FC = ({ children }) => (\n {children}\n);\nconst Underline: React.FC = ({ children }) => (\n {children}\n);\n\nconst createHeadingComponent = (tag: string) => {\n const renderer: NodeRenderer = (node: Block | Inline, children) => {\n if (\n \"content\" in node &&\n Array.isArray(node.content) &&\n node.content.length > 0 &&\n \"value\" in node.content[0]\n ) {\n const id = node.content[0].value;\n const formattedId = id.replace(/[^a-zA-Z0-9 ]/g, \"\").replace(/ /g, \"_\");\n return React.createElement(tag, { id: formattedId }, children);\n }\n return React.createElement(tag, null, children);\n };\n return renderer;\n};\n\nconst RichText = ({ richText }: { richText: ContentfulRichText }) => {\n const options: Options = {\n renderMark: {\n [MARKS.BOLD]: (text: ReactNode) => {text},\n [MARKS.ITALIC]: (text: ReactNode) => {text},\n [MARKS.UNDERLINE]: (text: ReactNode) => {text},\n [MARKS.CODE]: (code: ReactNode) => (\n \n ),\n },\n renderNode: {\n [BLOCKS.HEADING_1]: createHeadingComponent(\"h1\"),\n [BLOCKS.HEADING_2]: createHeadingComponent(\"h2\"),\n [BLOCKS.HEADING_3]: createHeadingComponent(\"h3\"),\n [BLOCKS.HEADING_4]: createHeadingComponent(\"h4\"),\n [BLOCKS.HEADING_5]: createHeadingComponent(\"h5\"),\n },\n };\n return (\n
\n {documentToReactComponents(richText, options)}\n
\n );\n};\n\nexport default RichText;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"xs\":\"420px\",\"s\":\"800px\",\"s-m\":\"1024px\",\"m\":\"1280px\",\"l\":\"1440px\",\"xl\":\"1920px\",\"header0\":\"CarCard_header0__nE9KK\",\"header1\":\"CarCard_header1__AGZZW\",\"header2\":\"CarCard_header2__SAjmv\",\"header3\":\"CarCard_header3__LiDon\",\"header4\":\"CarCard_header4__AqW_u\",\"body1\":\"CarCard_body1__XAOsm\",\"body2\":\"CarCard_body2__3bVFS\",\"disclaimer\":\"CarCard_disclaimer___2Ii_\",\"mono\":\"CarCard_mono__29Yf3\",\"test\":\"CarCard_test__ChPpA\",\"carCardContainer\":\"CarCard_carCardContainer__y71tG\",\"detailsContainer\":\"CarCard_detailsContainer__urB5t\",\"link\":\"CarCard_link__fNRQp\",\"detailsContainerNoImage\":\"CarCard_detailsContainerNoImage__CxQLV\",\"car\":\"CarCard_car__gHlU4\",\"detailsHeader\":\"CarCard_detailsHeader__oWUwt\",\"detailRowTop\":\"CarCard_detailRowTop__hR1NN\",\"detailRowHighlighted\":\"CarCard_detailRowHighlighted__b685G\",\"detailRowBot\":\"CarCard_detailRowBot__yeTjo\",\"divider\":\"CarCard_divider__8uWRN\",\"bold\":\"CarCard_bold__A_gSO\",\"make\":\"CarCard_make__6AZ17\",\"perMonth\":\"CarCard_perMonth__0_6H0\",\"deferredStandardSelectors\":\"CarCard_deferredStandardSelectors__q6Pgc\",\"activeSelector\":\"CarCard_activeSelector__a4ZzT\",\"inactiveSelector\":\"CarCard_inactiveSelector__ClH9v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"xs\":\"420px\",\"s\":\"800px\",\"s-m\":\"1024px\",\"m\":\"1280px\",\"l\":\"1440px\",\"xl\":\"1920px\",\"header0\":\"CarCard_v5_header0__N6g5c\",\"header1\":\"CarCard_v5_header1__bz3v8\",\"header2\":\"CarCard_v5_header2__i02my\",\"header3\":\"CarCard_v5_header3__Ad_GH\",\"header4\":\"CarCard_v5_header4__UjRor\",\"body1\":\"CarCard_v5_body1__9I_Gz\",\"body2\":\"CarCard_v5_body2__MwSXm\",\"disclaimer\":\"CarCard_v5_disclaimer__WNKw5\",\"mono\":\"CarCard_v5_mono__DFFn7\",\"test\":\"CarCard_v5_test__X3mk7\",\"carCardContainer\":\"CarCard_v5_carCardContainer__08s86\",\"detailsContainer\":\"CarCard_v5_detailsContainer__kUI3D\",\"link\":\"CarCard_v5_link__4mTom\",\"detailsContainerNoImage\":\"CarCard_v5_detailsContainerNoImage__JKejH\",\"car\":\"CarCard_v5_car__1dmLW\",\"make\":\"CarCard_v5_make__u6v8r\",\"detailsHeader\":\"CarCard_v5_detailsHeader__WYCtG\",\"featured\":\"CarCard_v5_featured__2PClo\",\"withDeferred\":\"CarCard_v5_withDeferred__KpTVA\",\"amtLabel\":\"CarCard_v5_amtLabel__2iFOR\",\"detailRow\":\"CarCard_v5_detailRow__z6YOe\",\"buttonRow\":\"CarCard_v5_buttonRow__Rl_k4\",\"spacer\":\"CarCard_v5_spacer__FDjkb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"xs\":\"420px\",\"s\":\"800px\",\"s-m\":\"1024px\",\"m\":\"1280px\",\"l\":\"1440px\",\"xl\":\"1920px\",\"header0\":\"CarFeature_header0__O8Jh7\",\"header1\":\"CarFeature_header1__GXCuK\",\"header2\":\"CarFeature_header2__pCpQc\",\"header3\":\"CarFeature_header3__h6d1d\",\"header4\":\"CarFeature_header4__aoDLx\",\"body1\":\"CarFeature_body1__VfIWN\",\"body2\":\"CarFeature_body2__uM0ZF\",\"disclaimer\":\"CarFeature_disclaimer__2DMDC\",\"mono\":\"CarFeature_mono__MG_M3\",\"test\":\"CarFeature_test__VF8qS\",\"parentCarFeature\":\"CarFeature_parentCarFeature__XwTBb\",\"dark\":\"CarFeature_dark__kvhzh\",\"fieldContainer\":\"CarFeature_fieldContainer__bM4NZ\",\"dropdown\":\"CarFeature_dropdown__hFHU3\",\"light\":\"CarFeature_light__qrPk7\",\"featureHeader\":\"CarFeature_featureHeader__g1k7U\",\"slashDivider\":\"CarFeature_slashDivider__Qs_Zl\",\"carFeatureContainer\":\"CarFeature_carFeatureContainer__EBuiK\",\"swiperSlide\":\"CarFeature_swiperSlide__gVDKu\",\"highlightText\":\"CarFeature_highlightText__KaQG4\",\"loanInputsWrapper\":\"CarFeature_loanInputsWrapper__s2ut8\",\"loanInput\":\"CarFeature_loanInput__6LOLB\",\"infoDisclaimer\":\"CarFeature_infoDisclaimer__rjyUP\",\"menuItem\":\"CarFeature_menuItem__MENEu\",\"carCardWrapper\":\"CarFeature_carCardWrapper__GSnMv\",\"flexed\":\"CarFeature_flexed__75qUm\",\"grid\":\"CarFeature_grid___M4Qt\",\"carouselWrapper\":\"CarFeature_carouselWrapper__EXLEs\",\"carCardContainer\":\"CarFeature_carCardContainer__67ut0\",\"mobileDisclaimer\":\"CarFeature_mobileDisclaimer___Og1J\",\"desktop\":\"CarFeature_desktop__YgamS\",\"mobile\":\"CarFeature_mobile__UgTS_\",\"cardDesc\":\"CarFeature_cardDesc__5feO0\",\"tooltip\":\"CarFeature_tooltip__OW5Ol\",\"calculatorLink\":\"CarFeature_calculatorLink__wa_X5\",\"titleLinkContainer\":\"CarFeature_titleLinkContainer__Ka_AE\",\"linkContainer\":\"CarFeature_linkContainer___EXww\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"xs\":\"420px\",\"s\":\"800px\",\"s-m\":\"1024px\",\"m\":\"1280px\",\"l\":\"1440px\",\"xl\":\"1920px\",\"header0\":\"CarFeature_v5_header0__2ZRuP\",\"header1\":\"CarFeature_v5_header1__ZX91L\",\"header2\":\"CarFeature_v5_header2___0uvL\",\"header3\":\"CarFeature_v5_header3__htVlL\",\"header4\":\"CarFeature_v5_header4__ormZp\",\"body1\":\"CarFeature_v5_body1__uWlVN\",\"body2\":\"CarFeature_v5_body2__nQNo5\",\"disclaimer\":\"CarFeature_v5_disclaimer__ozivS\",\"mono\":\"CarFeature_v5_mono__DDHGe\",\"test\":\"CarFeature_v5_test__D9zHt\",\"featureHeader\":\"CarFeature_v5_featureHeader__Nnsox\",\"dropdownLabel\":\"CarFeature_v5_dropdownLabel__5OO_q\",\"dropdown\":\"CarFeature_v5_dropdown__0JNl5\",\"loanInputsWrapper\":\"CarFeature_v5_loanInputsWrapper__K7TzO\",\"gridWrapper\":\"CarFeature_v5_gridWrapper__LhaxK\",\"showMoreWrapper\":\"CarFeature_v5_showMoreWrapper__Qn_bM\",\"cardWrapper\":\"CarFeature_v5_cardWrapper__g9QhW\",\"parentCarFeature\":\"CarFeature_v5_parentCarFeature__j4izL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"xs\":\"420px\",\"s\":\"800px\",\"s-m\":\"1024px\",\"m\":\"1280px\",\"l\":\"1440px\",\"xl\":\"1920px\",\"header0\":\"LabelWithTooltip_header0__fV6_8\",\"header1\":\"LabelWithTooltip_header1__NxpD9\",\"header2\":\"LabelWithTooltip_header2__TaKEX\",\"header3\":\"LabelWithTooltip_header3__WSxQ3\",\"header4\":\"LabelWithTooltip_header4__XHPBg\",\"body1\":\"LabelWithTooltip_body1__7ElfU\",\"body2\":\"LabelWithTooltip_body2__Ye7dn\",\"disclaimer\":\"LabelWithTooltip_disclaimer__prkqg\",\"mono\":\"LabelWithTooltip_mono__jbSNt\",\"test\":\"LabelWithTooltip_test___NDq_\",\"labelWithTooltip\":\"LabelWithTooltip_labelWithTooltip___bJ_W\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"xs\":\"420px\",\"s\":\"800px\",\"s-m\":\"1024px\",\"m\":\"1280px\",\"l\":\"1440px\",\"xl\":\"1920px\",\"header0\":\"RichText_header0__sEcyC\",\"header1\":\"RichText_header1__z3FUN\",\"header2\":\"RichText_header2__Pmnt_\",\"header3\":\"RichText_header3__T71yZ\",\"header4\":\"RichText_header4__70Z_1\",\"body1\":\"RichText_body1__IZUXB\",\"body2\":\"RichText_body2__rC1H2\",\"disclaimer\":\"RichText_disclaimer__9Jn8D\",\"mono\":\"RichText_mono__xKAlZ\",\"test\":\"RichText_test___7hJv\",\"container\":\"RichText_container__ecrsl\",\"iframeContainer\":\"RichText_iframeContainer___18F9\",\"bold\":\"RichText_bold__8IW9D\",\"italic\":\"RichText_italic__sfi7C\",\"underline\":\"RichText_underline__l_DnF\"};"],"names":["innerHeight","window","innerWidth","height","setHeight","useDebounce","width","setWidth","handleResize","useEffect","addEventListener","removeEventListener","breakpointKeys","Object","keys","breakpoints","breakpointWidths","values","sort","a","b","minWidths","useViewportSize","currBreakpointWidth","reduce","prev","curr","find","key","tooltip","css","background","borderRadius","color","fontSize","lineHeight","maxWidth","padding","zIndex","variants","variant","inverted","backgroundColor","border","trigger","display","minHeight","minWidth","bodyEl","document","undefined","body","children","placement","portalTarget","otherProps","modalEl","useModalContext","setAnchorElement","setPopoverElement","popoverStyles","usePopover","modifiers","name","options","offset","fallbackPlacements","strategy","isMobileViewport","useBreakpoint","close","open","flex","ref","Modal","onClose","createPortal","style","Transition","show","transition","cssProps","model","msrpCents","termLengthMonths","ficoBand","imageUrl","make","calculatorConfig","button1Text","button1Url","button2Text","button2Url","carFeatureRedirect","useHomepageRedirect","showDeferred","setShowDeferred","useState","msrpWithTaxCents","downPaymentCents","avgLoanCents","Math","min","estApr","getAPR","deferredPaymentCents","standardMonthlyPayment","round","pmt","deferredMonthlyPayment","paymentRef","useRef","ceil","imaginImageUrl","useMemo","getImaginImageUrl","zoomType","zoomLevel","current","className","stylesv5","src","alt","classNames","decimalPlaces","step","timeout","from","to","tabIndex","onClick","onKeyDown","event","preventDefault","keyCode","role","styles","centsToDollarString","numberToPercentString","Button","ButtonVariant","id","location","templateVersion","toLocaleStringProps","currency","CalculatorVariants","evArray","msrp","defaultEvArray","CarFeature","fields","removedModels","vehicleMake","vehicleModel","sectionTitle","themedTitle","selectedModelsOnly","selectedModels","disclaimer","modal","setModal","selectedMake","setSelectedMake","selectedModel","setSelectedModel","selectedCredit","setSelectedCredit","CREDIT_BANDS","selectedTermLength","setSelectedTermLength","TERM_LENGTHS","termLengthRef","creditBands","label","value","text","validVehicles","filter","vehicle","includes","termLengths","map","term","SectionWrapper","LabelWithTooltip","tooltipText","INDIVIDUAL_FICOS","DropdownField","onChange","e","Number","target","creditIndex","indexOf","creditKey","termIndex","termKey","placeholder","Set","newModels","CarCardsDesktop","CarCardsMobile","RichText","richText","type","validMakes","length","useCarCards","showMore","setShowMore","slice","creditBand","concat","sortedMakes","props","config","setCalculatorConfig","LOSClient","then","res","response","data","belowFold","slashDivider","Light","href","validVehiclesLength","cssMode","pagination","mousewheel","keyboard","speed","slidesPerView","modules","Pagination","Mousewheel","Keyboard","loopedSlides","card","EngineType","PriorityMakes","getEngineType","fuelType","FuelType","slugifyForImagin","str","toLowerCase","replace","args","isR1S","_zoomType","year","moment","toString","paintId","angle","getMakeLogoUrl","makeExists","makes","acc","val","s","size","creditScore","month","asPath","basePath","push","useRouterContext","goToFlow","loanType","flow","LoanType","Partner","partner","split","selectedCarMake","selectedCarModel","applyPathOverride","applyPath","query","ApplyConfig","popperOptions","anchorElement","popoverElement","state","update","usePopper","popoverState","popper","updatePosition","Bold","Italic","Underline","createHeadingComponent","tag","node","Array","isArray","content","formattedId","React","renderMark","MARKS","code","dangerouslySetInnerHTML","__html","String","renderNode","BLOCKS","documentToReactComponents","module","exports"],"sourceRoot":""}