{"version":3,"file":"LazyResultsPage.294d6edcb08ae32d.prod.js","mappings":"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","sources":["webpack://aurora-new-frontend/./packages/common/packages/core/src/collapsible-drawer/drawer-icon.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/collapsible-drawer/collapsible-drawer.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/results/components/cad.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/results/components/buttons.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/results/components/next-step.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/results/components/savings-estimate.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/results/components/solar-equation.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/results/results-page.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/utils/text-constants.tsx","webpack://aurora-new-frontend/./packages/common/packages/core/src/collapsible-drawer/ lazy ^\\.\\/.*\\.svg$ chunkName: collapsible-drawer-icons prefetchOrder: 0 namespace object"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nconst lazyLoadDrawerIcons: (iconName: string) => Promise = async (iconName) => {\n const icon = (\n await import(\n /* webpackChunkName: 'collapsible-drawer-icons' */\n /* webpackPrefetch: true */\n `./${iconName}.svg`\n )\n ).default;\n return icon as string;\n};\n\nconst getIconLabel = (isOpen: boolean) => {\n return isOpen ? 'collapse' : 'expand';\n};\n\nconst IconObject = styled.object`\n pointer-events: none;\n`;\n\ninterface DrawerIconProps {\n isOpen: boolean;\n}\n\nexport const DrawerIcon = ({ isOpen }: DrawerIconProps) => {\n const [iconString, setIconString] = useState();\n\n useEffect(() => {\n const asyncLoadIcon = async () => {\n setIconString(await lazyLoadDrawerIcons(getIconLabel(isOpen)));\n };\n\n asyncLoadIcon();\n }, [isOpen]);\n\n return (\n \n );\n};\n","import {\n forwardRef,\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Box, Flex } from 'reflexbox/styled-components';\nimport styled, { FlattenSimpleInterpolation } from 'styled-components';\n\nimport { Overlay } from '@blueprintjs/core';\nimport { animated, SpringValue, useSpring, useTransition } from '@react-spring/web';\n\nimport { Colors } from '../colors';\nimport { useDebouncedCallback } from '../hooks';\nimport { AuroraIcon, AuroraIconType } from '../icon';\nimport { DrawerIcon } from './drawer-icon';\n\nconst DRAWER_PADDING_X = 24;\nconst BUTTON_BORDER_RADIUS = 6;\nconst BUTTON_CLASS = 'collapsible-drawer-button';\nconst BUTTON_CLOSED_CLASS = 'collapsible-drawer-button--closed';\nconst BUTTON_OPENED_CLASS = 'collapsible-drawer-button--opened';\nconst DRAWER_BODY_CLASS = 'collapsible-drawer-body';\nconst DRAWER_BUTTON_ICON_CLASS = 'drawer-button-icon';\n\nconst StyledDrawerContainer = styled(Flex)`\n background-color: ${Colors.WHITE};\n min-height: 100%;\n max-height: 100%;\n width: 100%;\n flex-direction: column;\n border-radius: ${BUTTON_BORDER_RADIUS}px;\n overflow: hidden;\n\n .${DRAWER_BODY_CLASS} {\n overflow-y: auto;\n height: 100%;\n padding: 0 ${DRAWER_PADDING_X}px;\n flex: 1 1 0;\n position: relative;\n }\n`;\n\nconst StyleOverrideContainer = styled.div<{ styleOverrides?: FlattenSimpleInterpolation }>`\n ${({ styleOverrides }) => styleOverrides};\n`;\n\nconst StyledDrawerButton = styled(animated.div)`\n width: 100%;\n border-radius: ${BUTTON_BORDER_RADIUS}px;\n background-color: ${Colors.GRAY_800};\n padding: 18px ${DRAWER_PADDING_X}px;\n color: ${Colors.WHITE};\n margin: 0 auto;\n cursor: pointer;\n`;\n\nconst IconContainer = styled.button`\n background-color: ${Colors.WHITE};\n color: ${Colors.GRAY_800};\n border-radius: ${BUTTON_BORDER_RADIUS}px;\n width: 50px;\n height: 50px;\n justify-content: center;\n align-items: center;\n border: none;\n padding-left: 0;\n padding-right: 0;\n cursor: pointer;\n flex-shrink: 0;\n`;\n\nconst DrawerFixedContainer = styled(animated.div)`\n height: 100%;\n position: fixed;\n`;\n\n// Builds the animations for the drawer opening and closing\nfunction useBuildAnimations(\n isOpen: boolean,\n sourceRef: MutableRefObject,\n isPaused: boolean,\n onDestroyed: () => void,\n onStart: () => void,\n onRest: () => void,\n) {\n const drawerTransition = useTransition<\n boolean,\n {\n clipPath: SpringValue;\n }\n >(isOpen, {\n enter: {\n clipPath: 0,\n width: '100%',\n x: 0,\n y: 0,\n },\n from: () => {\n const refCoordinates = sourceRef.current.getBoundingClientRect();\n return {\n clipPath: window.innerHeight - refCoordinates.height,\n width: `${(refCoordinates.width / window.innerWidth) * 100}%`,\n x: refCoordinates.left,\n y: refCoordinates.top,\n };\n },\n immediate: CYPRESS_BUILD,\n leave: () => {\n const refCoordinates = sourceRef.current.getBoundingClientRect();\n return {\n clipPath: window.innerHeight - refCoordinates.height,\n width: `${(refCoordinates.width / window.innerWidth) * 100}%`,\n x: refCoordinates.left,\n y: refCoordinates.top,\n };\n },\n onDestroyed,\n onRest,\n onStart,\n pause: isPaused,\n });\n\n const buttonAnimation = useSpring({\n from: {\n borderBottomLeftRadius: `${BUTTON_BORDER_RADIUS}px`,\n borderBottomRightRadius: `${BUTTON_BORDER_RADIUS}px`,\n },\n immediate: CYPRESS_BUILD,\n pause: isPaused,\n reverse: !isOpen,\n to: {\n borderBottomLeftRadius: '0px',\n borderBottomRightRadius: '0px',\n },\n });\n\n return {\n buttonAnimation,\n drawerTransition,\n };\n}\n\nfunction preventScrollOnBodyAndElements(selectors: string[] = []) {\n const scrollBarSize =\n window.innerWidth - (document.querySelector('html') as HTMLElement).clientWidth;\n\n const existingPaddingSize = parseInt(window.getComputedStyle(document.body).paddingRight, 10);\n\n // Add padding to offset the scrollbar disappearing\n document.body.style.paddingRight = `${scrollBarSize + existingPaddingSize}px`;\n document.body.style.overflow = 'hidden';\n\n selectors.forEach((selector) => {\n const element = document.querySelector(selector) as HTMLElement;\n\n if (element) {\n const elementScrollBarSize = element.offsetWidth - element.clientWidth;\n const existingElementPaddingSize = parseInt(\n window.getComputedStyle(element).paddingRight,\n 10,\n );\n element.style.overflow = 'hidden';\n element.style.paddingRight = `${elementScrollBarSize + existingElementPaddingSize}px`;\n } else {\n console.warn(`Could not find ${selector}`);\n }\n });\n}\n\nfunction enableScrollOnBodyAndElements(selectors: string[] = []) {\n document.body.style.paddingRight = '';\n document.body.style.overflow = '';\n\n selectors.forEach((selector) => {\n const element = document.querySelector(selector) as HTMLElement;\n\n if (element) {\n element.style.overflow = '';\n element.style.paddingRight = '';\n } else {\n console.warn(`Could not find ${selector}`);\n }\n });\n}\n\ninterface DrawerButtonProps {\n onClick: () => void;\n isOpen: boolean;\n buttonAnimationStyles?: { [key: string]: SpringValue };\n children?: ReactNode;\n 'data-testid'?: string;\n useAnimatedDrawerIcon: boolean;\n}\n\nconst DrawerButton = forwardRef(\n (\n {\n onClick,\n buttonAnimationStyles,\n children,\n isOpen,\n 'data-testid': testId,\n useAnimatedDrawerIcon,\n },\n ref,\n ) => {\n return (\n \n \n {children}\n \n {useAnimatedDrawerIcon ? (\n \n ) : (\n \n )}\n \n \n \n );\n },\n);\n\n// Use absolute positioning to make sizing of component inside\n// more reliable\nconst DrawerBodyAnimatedDiv = styled(animated.div)`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n`;\n\nconst DrawerBody = ({ children }: { children: JSX.Element }) => {\n const drawerBodyAnimation = useSpring({\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n });\n return {children};\n};\n\ninterface DrawerContainerProps {\n children: JSX.Element;\n sourceRef: MutableRefObject;\n closeDrawer: () => void;\n isOpen: boolean;\n onDestroyed: () => void;\n buttonLabel: ReactNode;\n openButtonLabel?: ReactNode;\n elementsToDisableScrollOn?: string[];\n 'data-testid'?: string;\n useAnimatedDrawerIcon: boolean;\n}\n\nconst DrawerContainer = ({\n children,\n closeDrawer,\n 'data-testid': testId,\n sourceRef,\n isOpen,\n onDestroyed,\n buttonLabel,\n elementsToDisableScrollOn,\n openButtonLabel,\n useAnimatedDrawerIcon,\n}: DrawerContainerProps) => {\n if (!sourceRef.current) {\n throw new Error('No source ref');\n }\n\n // Initial render lets us render the elements in the non-open state first\n // so we can smoothly transition\n const [hasRendered, setHasRendered] = useState(false);\n\n useLayoutEffect(() => {\n setHasRendered(true);\n }, []);\n\n useEffect(() => {\n return () => enableScrollOnBodyAndElements(elementsToDisableScrollOn);\n }, [elementsToDisableScrollOn]);\n\n const [isAnimating, setIsAnimating] = useState(false);\n\n const { drawerTransition, buttonAnimation } = useBuildAnimations(\n isOpen,\n sourceRef as MutableRefObject,\n !hasRendered,\n () => {\n // kinda redudant but makes it more obvious\n enableScrollOnBodyAndElements(elementsToDisableScrollOn);\n onDestroyed();\n },\n () => {\n if (isOpen) {\n preventScrollOnBodyAndElements(elementsToDisableScrollOn);\n }\n setIsAnimating(true);\n },\n () => {\n setIsAnimating(false);\n },\n );\n\n return drawerTransition(\n (style, open) =>\n open && (\n \n `inset(0 0 ${value}px 0 round 0 0 ${BUTTON_BORDER_RADIUS}px ${BUTTON_BORDER_RADIUS}px)`,\n ),\n }}\n >\n \n \n \n {openButtonLabel ? (\n \n {isOpen && openButtonLabel && hasRendered ? openButtonLabel : buttonLabel}\n \n ) : (\n buttonLabel\n )}\n \n \n \n {/* Doesn't render until the drawer is fully open to increase performance */}\n {!isAnimating && {children}}\n \n \n \n ),\n );\n};\n\ninterface DrawerProps {\n children: JSX.Element;\n sourceRef: MutableRefObject;\n closeDrawer: () => void;\n isOpen: boolean;\n buttonLabel: ReactNode;\n openButtonLabel?: ReactNode;\n elementsToDisableScrollOn?: string[];\n styleOverrides?: FlattenSimpleInterpolation;\n hideOverflowOn?: string[];\n useAnimatedDrawerIcon: boolean;\n}\n\nconst Drawer = ({\n children,\n isOpen,\n sourceRef,\n closeDrawer,\n styleOverrides,\n ...props\n}: DrawerProps) => {\n /**\n * Offsets the unmounting until the animation is done\n */\n const [internalOpenState, setInternalOpenState] = useState(isOpen);\n\n useEffect(() => {\n if (isOpen) {\n setInternalOpenState(true);\n }\n }, [isOpen]);\n\n const animationDoneCallback = useCallback(() => {\n setInternalOpenState(false);\n }, []);\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\n/**\n * Helper element that transitions between children.\n *\n * The component works by animating between two children elements. When a\n * new `transitionKey` is passed in, the component stores the new child in\n * currently unused child ref, measures the new child, and then transitions\n * between the two\n */\nconst TransitionChildren = ({\n children,\n transitionKey,\n}: {\n children: ReactNode;\n transitionKey: unknown;\n}) => {\n const previousKey = useRef(transitionKey);\n const trueChild = useRef(children);\n const falseChild = useRef();\n const [showTrueChild, setShowTrueChild] = useState(true);\n const [{ currentHeight, targetHeight }, setHeights] = useState<{\n currentHeight: number;\n targetHeight: number;\n }>({\n currentHeight: 0,\n targetHeight: 0,\n });\n const [gettingDimensions, setGettingDimensions] = useState(true);\n const transition = useTransition(showTrueChild, {\n enter: {\n opacity: 1,\n },\n from: {\n opacity: 0,\n },\n immediate: CYPRESS_BUILD,\n pause: gettingDimensions,\n to: {\n opacity: 0,\n },\n });\n\n const spring = useSpring({\n from: {\n height: currentHeight,\n },\n immediate: CYPRESS_BUILD,\n pause: gettingDimensions,\n reset: showTrueChild,\n to: {\n height: targetHeight,\n },\n });\n\n useEffect(() => {\n if (previousKey.current !== transitionKey) {\n if (showTrueChild) {\n falseChild.current = children;\n } else {\n trueChild.current = children;\n }\n previousKey.current = transitionKey;\n setShowTrueChild(!showTrueChild);\n setGettingDimensions(true);\n }\n }, [showTrueChild, transitionKey, children]);\n\n if (gettingDimensions) {\n return (\n {\n if (node) {\n const dimensions = node.getBoundingClientRect();\n const newTargetHeight = dimensions.height;\n let newCurrentHeight = targetHeight;\n\n if (!currentHeight) {\n newCurrentHeight = dimensions.height;\n }\n\n setHeights({\n currentHeight: newCurrentHeight,\n targetHeight: newTargetHeight,\n });\n\n setGettingDimensions(false);\n }\n }}\n >\n {children}\n \n );\n }\n\n return transition((style, state) => {\n return state ? (\n \n {trueChild.current}\n \n ) : (\n \n {falseChild.current}\n \n );\n });\n};\n\nexport interface CollapsibleDrawerProps {\n children: JSX.Element;\n buttonLabel: ReactNode;\n openButtonLabel?: ReactNode;\n elementsToDisableScrollOn?: string[];\n // Needed due to how the drawer places items using a portal\n styleOverrides?: FlattenSimpleInterpolation;\n 'data-testid-close'?: string;\n 'data-testid-open'?: string;\n isDefaultOpen?: boolean;\n onSetOpen?: (isOpen: boolean) => void;\n useAnimatedDrawerIcon?: boolean;\n}\n\nexport const CollapsibleDrawer = ({\n isDefaultOpen = false,\n children,\n buttonLabel,\n openButtonLabel,\n styleOverrides,\n elementsToDisableScrollOn,\n 'data-testid-close': closeTestId,\n 'data-testid-open': openTestId,\n onSetOpen,\n useAnimatedDrawerIcon = false,\n}: CollapsibleDrawerProps) => {\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n const buttonRef = useRef(null);\n\n return (\n <>\n \n {\n setIsOpen(true);\n onSetOpen?.(true);\n },\n [onSetOpen],\n 200,\n )}\n useAnimatedDrawerIcon={useAnimatedDrawerIcon}\n >\n {buttonLabel}\n \n \n {\n setIsOpen(false);\n onSetOpen?.(false);\n },\n [onSetOpen],\n 200,\n )}\n data-testid={closeTestId}\n elementsToDisableScrollOn={elementsToDisableScrollOn}\n isOpen={isOpen}\n openButtonLabel={openButtonLabel}\n sourceRef={buttonRef}\n styleOverrides={styleOverrides}\n useAnimatedDrawerIcon={useAnimatedDrawerIcon}\n >\n {children}\n \n \n );\n};\n\nexport const CollapsibleDrawerClasses = {\n BUTTON_CLASS,\n BUTTON_CLOSED_CLASS,\n BUTTON_OPENED_CLASS,\n DRAWER_BODY_CLASS,\n DRAWER_BUTTON_ICON_CLASS,\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Flex } from 'reflexbox/styled-components';\nimport styled, { css } from 'styled-components';\n\nimport {\n CadContextProvider,\n CadStatus,\n useCadContext,\n useLeadCaptureCad,\n} from '@aurorasolar/cad-core';\nimport { CAD_CONTAINER_TESTID } from '@aurorasolar/cad-core/src/cad-wrapper';\nimport { CadLoadingPage } from '@aurorasolar/cad-core/src/cad-wrapper/cad-loading-page';\nimport { CenteringGuide } from '@aurorasolar/common-core/src/centering-guide';\nimport {\n CollapsibleDrawer,\n CollapsibleDrawerClasses,\n} from '@aurorasolar/common-core/src/collapsible-drawer';\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { Analytics, AnalyticsEventTypes, useAppModule } from '@aurorasolar/common-module-loader';\nimport { useInterceptMouse } from '@aurorasolar/common-shared-domain';\n\nimport { PortalContainer, PoweredByAurora } from '../../../shared-components';\nimport { LCAIText } from '../../../typography/lcai-text/lcai-text';\nimport { Z_ORDER } from '../../../utils/constants';\n\nconst CadWrapper = styled.div`\n position: relative;\n height: 100%;\n`;\n\nconst CadContainer = styled.div`\n position: absolute;\n inset: 0;\n`;\n\nconst NonInteractiveCad = styled.div`\n pointer-events: none;\n`;\n\nconst AddressWithEllipsis = styled(LCAIText)`\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n margin-right: 16px;\n`;\n\nconst DrawerContainer = styled.div`\n position: absolute;\n bottom: 40px;\n width: 100%;\n padding: 0 24px;\n\n @media screen and (orientation: portrait) {\n transform: translateY(50%);\n bottom: 0;\n }\n`;\n\nconst DrawerStyles = css`\n z-index: ${Z_ORDER.CAD};\n\n .${CollapsibleDrawerClasses.BUTTON_CLASS} {\n --transition-time: 0.2s;\n\n background-color: ${Colors.WHITE};\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);\n transition: padding var(--transition-time) ease-in;\n\n .${CollapsibleDrawerClasses.DRAWER_BUTTON_ICON_CLASS} {\n background-color: ${Colors.BLACK};\n transition: width var(--transition-time) ease-in, height var(--transition-time) ease-in,\n color var(--transition-time) ease-in, background-color var(--transition-time) ease-in;\n }\n }\n\n .${CollapsibleDrawerClasses.BUTTON_CLASS}.${CollapsibleDrawerClasses.BUTTON_OPENED_CLASS} {\n --transition-time: 0.2s;\n\n padding: 12px 24px;\n\n .${CollapsibleDrawerClasses.DRAWER_BUTTON_ICON_CLASS} {\n background-color: ${Colors.BLACK};\n }\n }\n`;\n\ninterface CADPortalProps {\n container: HTMLElement;\n projectId: string;\n showCenteringGuide?: boolean;\n}\n\nconst CADPortal = ({ container, projectId, showCenteringGuide }: CADPortalProps) => {\n const { status } = useCadContext();\n const analytics = useAppModule(Analytics);\n\n const [cadContainer, setCadContainer] = useState(null);\n const setRef = (ref: HTMLDivElement) => setCadContainer(ref);\n\n useLeadCaptureCad({\n cadContainer,\n hasOrbitMode: true,\n id: projectId,\n });\n\n const wasClicked = useInterceptMouse({\n cadDomNode: useCadContext()?.domNode?.querySelector('canvas'),\n });\n\n useEffect(() => {\n if (wasClicked) {\n analytics?.track(AnalyticsEventTypes.LeadCaptureClickedCADView, {\n project_id: projectId,\n });\n }\n }, [wasClicked, analytics, projectId]);\n\n return createPortal(\n <>\n \n {status === CadStatus.Loading && }\n \n {showCenteringGuide && !wasClicked && (\n \n )}\n \n ,\n container,\n );\n};\n\ninterface CadProps {\n address: string;\n projectId: string;\n solarPanelCount: number;\n}\n\nexport function Cad({ address, projectId, solarPanelCount }: CadProps) {\n const [renderFullScreen, setRenderFullScreen] = useState(false);\n const switchView = () => setRenderFullScreen(!renderFullScreen);\n const container = useMemo(() => document.createElement('div'), []);\n\n return (\n \n \n \n \n \n \n \n \n Explore your 3D model\n \n \n {address}\n \n \n }\n data-testid-close=\"lcai-cad-toggle-close\"\n data-testid-open=\"lcai-cad-toggle-open\"\n onSetOpen={switchView}\n openButtonLabel={\n \n \n Your solar model\n \n \n {solarPanelCount} solar panels\n \n \n }\n styleOverrides={DrawerStyles}\n useAnimatedDrawerIcon\n >\n \n \n \n \n \n \n );\n}\n","import { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\n\nimport { LCAIButton, LCAIButtonIntent } from '../../../typography/lcai-button/lcai-button';\nimport { TEXT } from '../../../utils/text-constants';\n\nexport enum ResultsButtonsTestIds {\n COMPLETE_PROFILE_BUTTON = 'complete-profile-button-test-id',\n QUOTE_BUTTON = 'quote-button-test-id',\n DONE_BUTTON = 'done-button-test-id',\n}\n\ninterface ButtonsProps {\n closeLCAIWithRedirect: () => void;\n completeProfile: () => void;\n endFlowButtonPrimary?: string | null;\n hasCustomerInfo: boolean;\n isProfileComplete: boolean;\n requestQuote: () => void;\n resultsPageButtonPrimary?: string | null;\n}\n\nexport function Buttons({\n closeLCAIWithRedirect,\n completeProfile,\n endFlowButtonPrimary,\n hasCustomerInfo,\n isProfileComplete,\n requestQuote,\n resultsPageButtonPrimary,\n}: ButtonsProps) {\n return (\n <>\n {!isProfileComplete ? (\n \n \n {resultsPageButtonPrimary || TEXT.results.primaryButtonText}\n \n ) : (\n <>\n \n {endFlowButtonPrimary || TEXT.common.endFlowButton}\n \n \n )}\n \n );\n}\n","import { Box } from 'reflexbox/styled-components';\nimport styled from 'styled-components';\n\nimport { BoxWithMargin } from '../../../shared-components';\nimport { LCAIButton, LCAIButtonIntent } from '../../../typography/lcai-button/lcai-button';\nimport { LCAIText } from '../../../typography/lcai-text/lcai-text';\nimport { HEADER_COLOR } from '../../../utils/constants';\n\nexport enum NextStepTestIds {\n NEXT_STEP_QUOTE = 'next-step-quote-test-id',\n NEXT_STEP_COMPLETE_PROFILE = 'next-step-complete-profile-test-id',\n}\n\ninterface NextStepProps {\n completeProfile: () => void;\n hasCustomerInfo: boolean;\n requestQuote: () => void;\n}\n\nexport function NextStep({ completeProfile, hasCustomerInfo, requestQuote }: NextStepProps) {\n return (\n \n \n Next step\n \n \n \n \n Get a more accurate quote from a solar expert.\n \n \n \n \n );\n}\n\nconst StepButton = styled(LCAIButton)`\n text-align: initial;\n`;\n","import { Box } from 'reflexbox/styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\n\nimport { LCAIText } from '../../../typography/lcai-text/lcai-text';\n\ninterface SavingsEstimateProps {\n savings: string;\n savingsPeriod: number;\n}\n\nexport function SavingsEstimate({ savings, savingsPeriod }: SavingsEstimateProps) {\n return (\n <>\n \n \n ${savings}\n \n \n \n \n Over {savingsPeriod} years, estimated\n \n \n \n );\n}\n","import { Flex } from 'reflexbox/styled-components';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\n\nimport { BoxWithMargin } from '../../../shared-components';\nimport { LCAIText } from '../../../typography/lcai-text/lcai-text';\n\ninterface SolarEquationProps {\n energyOffset: number;\n solarPanelCount: number;\n sunlightHours: string | 0;\n}\n\nexport function SolarEquation({\n energyOffset,\n solarPanelCount,\n sunlightHours,\n}: SolarEquationProps) {\n return (\n \n \n \n \n {solarPanelCount}\n solar panels\n \n +\n \n \n {sunlightHours}\n hours of sunlight\n \n =\n \n \n {energyOffset}%\n energy offset\n \n \n \n );\n}\n\nconst Container = styled(Flex)`\n justify-content: space-around;\n text-align: center;\n align-items: center;\n background-color: #f9f9f9;\n padding: 24px 0;\n border-radius: 6px;\n`;\n\nconst Item = styled(Flex)`\n align-items: center;\n flex-direction: column;\n width: 73px;\n`;\n\nconst Icon = styled(AuroraIcon).attrs((props) => ({\n fillColor: Colors.BLACK,\n size: props.size ?? '20px',\n}))`\n height: 24px;\n display: flex;\n align-items: center;\n`;\n\nconst Value = styled(LCAIText).attrs(() => ({\n color: Colors.BLACK,\n fontWeight: 'medium',\n marginTop: '16px',\n type: 'header-3',\n}))``;\n\nconst Description = styled(LCAIText).attrs(() => ({\n color: Colors.GRAY_700,\n fontWeight: 'regular',\n marginTop: '10px',\n textTransform: 'uppercase',\n type: 'body-4',\n}))`\n letter-spacing: 0.75px;\n`;\n\nconst Equation = styled(LCAIText).attrs(() => ({\n color: Colors.GRAY_700,\n fontWeight: 'regular',\n type: 'results-equation',\n}))``;\n","import { useEffect } from 'react';\nimport { Box } from 'reflexbox/styled-components';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { useDebouncedCallback } from '@aurorasolar/common-core/src/hooks';\nimport {\n Analytics,\n AnalyticsEventTypes,\n AnalyticsPageTypes,\n AppRouterNavigation,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\n\nimport { useCloseLcaiWithRedirect, useRouteData } from '../../hooks';\nimport { useGetLeadCaptureProjectDataQuery } from '../../lead-capture.generated';\nimport {\n MessageType,\n sendQuoteRequestedMessage,\n useSendSDKMessageWithData,\n} from '../../message/message';\nimport { AnimateView, BoxWithMargin, SplitView, TopRail } from '../../shared-components';\nimport { LCAIText } from '../../typography';\nimport { DEBOUNCE_TIME, HEADER_COLOR } from '../../utils/constants';\nimport { SourcePage } from '../../utils/source-page';\nimport { TEXT } from '../../utils/text-constants';\nimport { Buttons, Cad, NextStep, SavingsEstimate, SolarEquation } from './components';\n\nconst DrawerSpacing = styled(Box)`\n @media screen and (orientation: portrait) and (max-width: 767px) {\n padding-top: 40px;\n }\n`;\n\nexport interface ResultsPageProps {\n projectId: string;\n sourcePage: SourcePage;\n}\n\nexport function ResultsPage({ projectId, sourcePage }: ResultsPageProps) {\n const analytics = useAppModule(Analytics);\n const navigation = useAppModule(AppRouterNavigation);\n\n const { customSettings, hasUtilityBillCapture, hideSavings, templateId } = useRouteData();\n const closeLCAIWithRedirect = useCloseLcaiWithRedirect({\n projectId,\n redirectUrl: customSettings?.endFlowRedirectUrl,\n sourcePage,\n templateId,\n });\n\n useSendSDKMessageWithData(MessageType.RESULTS, projectId, templateId);\n useSendSDKMessageWithData(MessageType.LEAD, projectId, templateId);\n\n const { data, loading } = useGetLeadCaptureProjectDataQuery({\n variables: { id: projectId },\n });\n\n const hasCustomerInfo = !!data?.projectData.customer;\n\n // if UBU ff off - consider UBU as completed already so it won't be accessible\n // if UBU ff on - use the value from the BE to know if completed or not\n const isProfileComplete = hasCustomerInfo && !hasUtilityBillCapture;\n\n useEffect(() => {\n if (!loading) {\n analytics?.page(AnalyticsPageTypes.LeadCaptureResults, {\n project_id: projectId,\n quote_hidden: false,\n quote_submitted: hasCustomerInfo,\n });\n }\n }, [analytics, loading, projectId, hasCustomerInfo]);\n\n const completeProfile = useDebouncedCallback(\n async () => {\n if (projectId != null) {\n await analytics?.track(AnalyticsEventTypes.LeadCaptureClickedCompleteProfile, {\n project_id: projectId,\n });\n navigation?.navigate(`/projects/${projectId}/bill-upload`, { replace: true });\n }\n },\n [analytics, navigation, projectId],\n DEBOUNCE_TIME,\n );\n\n const requestQuote = useDebouncedCallback(\n async () => {\n if (projectId != null) {\n await analytics?.track(AnalyticsEventTypes.LeadCaptureClickedGetAQuote, {\n project_id: projectId,\n });\n navigation?.navigate(`/projects/${projectId}/quote`, { replace: true });\n sendQuoteRequestedMessage();\n }\n },\n [analytics, navigation, projectId],\n DEBOUNCE_TIME,\n );\n\n if (loading) return <>;\n\n const projectData = data?.projectData;\n\n const savings = (\n projectData?.scenarios[0].avoidedCost?.escalatedSavingsInUsDollars ?? 0\n ).toLocaleString();\n const savingsPeriod = projectData?.scenarios[0].avoidedCost?.savingsPeriodYears ?? 0;\n\n const address = projectData?.address ?? '';\n const energyOffset = projectData?.scenarios[0].avoidedCost?.billOffsetPercentage ?? 0;\n const solarPanelCount = projectData?.scenarios[0].design?.moduleCount ?? 0;\n const sunlightHours = projectData?.scenarios[0].sunlightHours?.toLocaleString() ?? 0;\n const defaultHeader = !hideSavings ? TEXT.results.primaryHeader : TEXT.results.secondaryHeader;\n\n return (\n <>\n \n \n \n }\n leftContent={\n <>\n \n \n {customSettings?.resultsPageHeader || defaultHeader}\n \n \n {!hideSavings && }\n \n {!isProfileComplete && (\n \n )}\n \n \n This is a preliminary estimate for illustration purpose only. Actual system\n production or savings may vary and are not guaranteed.\n \n \n \n }\n rightContent={\n \n }\n />\n \n \n );\n}\n\nexport default ResultsPage;\n","export interface Tip {\n message: string;\n primaryHeader: string;\n}\n\nexport interface LCAIText {\n alternatePrimaryButtonText?: string;\n endFlowButton?: string;\n primaryHeader?: string;\n placeholder?: string;\n secondaryHeader?: string;\n subheader?: string;\n disclaimer?: string;\n primaryButtonText?: string;\n tips?: Tip[];\n}\n\nexport const TEXT: Record = {\n common: {\n endFlowButton: 'Done',\n },\n error: {\n alternatePrimaryButtonText: 'Contact us',\n primaryHeader: 'Automated estimates are coming soon to your area.',\n subheader: \"Our solar experts will design a system that's perfect for your home.\",\n },\n landing: {\n primaryHeader: 'See solar on your home in minutes.',\n subheader:\n 'Bring solar to life on your home and learn how much you could save with solar in just a few simple steps.',\n },\n profileComplete: {\n primaryButtonText: 'Estimate your savings',\n primaryHeader: \"Thanks, now let's add solar to your home!\",\n subheader:\n 'Our advanced simulation engine is ready to build your home in 3D, automatically place solar panels, and estimate how much energy your house can generate every year.',\n },\n profileReview: {\n primaryHeader: 'Thank you, your profile is being reviewed.',\n subheader: 'If your home is a good fit for solar, a solar expert will reach out to you soon.',\n },\n progress: {\n tips: [\n {\n message:\n \"Solar panels save you money while you own the home, then add value when you're ready to sell. Homes with solar sell for 4.1% more on average than homes without.\",\n primaryHeader: 'Invest in your future',\n },\n {\n message:\n \"Solar is a clean, renewable source of energy that reduces your home's carbon footprint. A typical solar installation can reduce a home's CO2 impact by 6 tons per year.\",\n primaryHeader: 'Help build a better tomorrow',\n },\n {\n message:\n 'Pairing battery storage with solar panels helps ensure your home stays running even during outages, keeping your lights on and your food fresh.',\n primaryHeader: 'Power when you need it most',\n },\n {\n message:\n \"Air conditioning is the largest single contributor to most home's electricity bills. Going solar can help reduce high bills during hot summer months.\",\n primaryHeader: 'Take control over high bills',\n },\n {\n message:\n 'While electricity prices have increased 15% in the last decade, the cost of solar has decreased over 60%.',\n primaryHeader: \"There's never been a better time to go solar\",\n },\n ],\n },\n quote: {\n disclaimer:\n 'By checking the box, I am providing my electronic signature authorizing the company to contact me by email, text, or phone, including an automated technology, at the phone number or email provided above. This consent is not a required condition of purchase.',\n },\n results: {\n primaryButtonText: 'Get a more accurate quote',\n primaryHeader: 'With solar you could save',\n secondaryHeader: \"Here's how solar adds up for your home\",\n },\n};\n","var map = {\n\t\"./collapse.svg\": [\n\t\t\"./packages/common/packages/core/src/collapsible-drawer/collapse.svg\",\n\t\t\"collapsible-drawer-icons0\"\n\t],\n\t\"./expand.svg\": [\n\t\t\"./packages/common/packages/core/src/collapsible-drawer/expand.svg\",\n\t\t\"collapsible-drawer-icons1\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./packages/common/packages/core/src/collapsible-drawer lazy recursive ^\\\\.\\\\/.*\\\\.svg$\";\nmodule.exports = webpackAsyncContext;"],"names":["getIconLabel","isOpen","IconObject","object","DrawerIcon","iconString","setIconString","useState","useEffect","async","iconName","default","lazyLoadDrawerIcons","asyncLoadIcon","className","data","role","type","BUTTON_CLASS","BUTTON_CLOSED_CLASS","BUTTON_OPENED_CLASS","DRAWER_BODY_CLASS","DRAWER_BUTTON_ICON_CLASS","StyledDrawerContainer","WHITE","StyleOverrideContainer","div","styleOverrides","StyledDrawerButton","animated","GRAY_800","IconContainer","button","DrawerFixedContainer","enableScrollOnBodyAndElements","selectors","document","body","style","paddingRight","overflow","forEach","selector","element","querySelector","console","warn","DrawerButton","forwardRef","onClick","buttonAnimationStyles","children","testId","useAnimatedDrawerIcon","ref","alignItems","justifyContent","name","FULL_SCREEN_IN","FULL_SCREEN","size","DrawerBodyAnimatedDiv","DrawerBody","drawerBodyAnimation","useSpring","from","opacity","to","DrawerContainer","closeDrawer","sourceRef","onDestroyed","buttonLabel","elementsToDisableScrollOn","openButtonLabel","current","Error","hasRendered","setHasRendered","useLayoutEffect","isAnimating","setIsAnimating","drawerTransition","buttonAnimation","isPaused","onStart","onRest","useTransition","enter","clipPath","width","x","y","refCoordinates","getBoundingClientRect","window","innerHeight","height","innerWidth","left","top","immediate","leave","pause","borderBottomLeftRadius","borderBottomRightRadius","reverse","useBuildAnimations","scrollBarSize","clientWidth","existingPaddingSize","parseInt","getComputedStyle","elementScrollBarSize","offsetWidth","existingElementPaddingSize","preventScrollOnBodyAndElements","open","value","flex","TransitionChildren","transitionKey","Drawer","props","internalOpenState","setInternalOpenState","animationDoneCallback","useCallback","hasBackdrop","transitionDuration","previousKey","useRef","trueChild","falseChild","showTrueChild","setShowTrueChild","currentHeight","targetHeight","setHeights","gettingDimensions","setGettingDimensions","transition","spring","reset","node","dimensions","newTargetHeight","newCurrentHeight","state","CollapsibleDrawer","isDefaultOpen","closeTestId","openTestId","onSetOpen","setIsOpen","buttonRef","CollapsibleDrawerClasses","CadWrapper","CadContainer","NonInteractiveCad","AddressWithEllipsis","DrawerStyles","css","CAD","BLACK","CADPortal","container","projectId","showCenteringGuide","status","analytics","cadContainer","setCadContainer","hasOrbitMode","id","wasClicked","cadDomNode","domNode","track","LeadCaptureClickedCADView","project_id","createPortal","Loading","text","icon","ZOOM_ROTATE","maxSize","minSize","right","Cad","address","solarPanelCount","renderFullScreen","setRenderFullScreen","useMemo","createElement","content","flexDirection","color","fontWeight","mb","GRAY_600","textTransform","ResultsButtonsTestIds","NextStepTestIds","Buttons","closeLCAIWithRedirect","completeProfile","endFlowButtonPrimary","hasCustomerInfo","isProfileComplete","requestQuote","resultsPageButtonPrimary","DONE_BUTTON","intent","PRIMARY_LIGHT","common","endFlowButton","COMPLETE_PROFILE_BUTTON","QUOTE_BUTTON","BTN_ARROW","results","primaryButtonText","NextStep","marginTop","StepButton","NEXT_STEP_COMPLETE_PROFILE","NEXT_STEP_QUOTE","LINK","SavingsEstimate","savings","savingsPeriod","PRIMARY_GREEN","letterSpacing","SolarEquation","energyOffset","sunlightHours","Container","Item","Icon","SYSTEM_DESIGN_FILL","Value","Description","Equation","IRRADIANCE_FILL","ENERGY_FILL","attrs","fillColor","GRAY_700","DrawerSpacing","ResultsPage","sourcePage","navigation","customSettings","hasUtilityBillCapture","hideSavings","templateId","redirectUrl","endFlowRedirectUrl","RESULTS","LEAD","loading","variables","projectData","customer","page","LeadCaptureResults","quote_hidden","quote_submitted","LeadCaptureClickedCompleteProfile","navigate","replace","LeadCaptureClickedGetAQuote","scenarios","avoidedCost","escalatedSavingsInUsDollars","toLocaleString","savingsPeriodYears","billOffsetPercentage","design","moduleCount","defaultHeader","secondaryHeader","primaryHeader","buttons","leftContent","resultsPageHeader","GRAY_500","rightContent","TEXT","error","alternatePrimaryButtonText","subheader","landing","profileComplete","profileReview","progress","tips","message","quote","disclaimer","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","code","ids","keys","Object","module","exports"],"sourceRoot":""}