{"version":3,"sources":["webpack://_N_E/./src/pages/stay-and-defend/index.tsx","webpack://_N_E/./src/styles/colors.ts","webpack://_N_E/./src/styles/spacing.ts","webpack://_N_E/./src/styles/font-size.ts","webpack://_N_E/./src/styles/theme-light.ts","webpack://_N_E/./src/styles/media-queries.ts","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?ce0f","webpack://_N_E/./src/styles/theme-dark.ts","webpack://_N_E/./src/components/switch-theme/switch-theme.tsx","webpack://_N_E/./src/styles/border-radius.ts","webpack://_N_E/./src/styles/z-index.ts"],"names":["SurveyIntro","surveySpec","useAuth","startAnonymousSession","isAuthenticated","loading","useStore","state","set","survey","spec","updateSurveySpec","clearSurveyData","draft","currentSurveySpec","surveyDraft","router","useRouter","clearPlanData","onStart","useCallback","a","SurveyApi","SurveysApi","getSurveySpec","latestSpec","data","currentVersion","version","logger","warn","plan","type","PlanDataTypeEnum","Stay","isDirty","logStartSurvey","push","APP_ROUTES","stay","then","scrollToTop","error","useEffect","location","postcode","suburb","useEffectOnce","AnalyticsService","trackScreen","ScreenNames","surveyIntro","to","mainBackground","backgroundImages","treesBurn","title","description","this","palette","black","white","blue","lightBlue","greyLight","grey","greyDark","redDark","yellow","orange","orangeDark","green","greenLight","teal","moderate","high","extreme","catastrophic","preview","small","text","rem","medium","large","xLarge","borderRadius","colors","components","button","background","default","dark","secondary","transparent","border","download","heading","section","fontSize","space","mediaQueries","zIndex","baseUnits","em","xlarge","smallMax","window","__NEXT_P","SwitchTheme","props","currentTheme","themeDark","themeLight","theme","children","defaultProps"],"mappings":"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","file":"static/chunks/pages/stay-and-defend-823e382fc6c66ed5dcc5.js","sourcesContent":["import { logger } from '@hatchd/utils';\nimport { PlanDataTypeEnum, SurveysApi, SurveySpec } from 'api/client';\nimport Intro from 'components/intro';\nimport Layout from 'components/layout';\nimport SEO from 'components/seo';\nimport SwitchTheme from 'components/switch-theme';\nimport useAuth from 'hooks/use-auth';\nimport { GetStaticProps, NextPage } from 'next';\nimport { useRouter } from 'next/router';\nimport { useCallback, useEffect } from 'react';\nimport { useEffectOnce } from 'react-use';\nimport AnalyticsService, {\n logStartSurvey,\n ScreenNames,\n} from 'services/analytics';\nimport { useStore } from 'store';\nimport { backgroundImages } from 'utils/config';\nimport { scrollToTop } from 'utils/helpers';\nimport APP_ROUTES from 'utils/routes';\n\nconst PAGE_TITLE = 'Are You Prepared to Stay and Defend?';\nconst PAGE_DESCRIPTION =\n 'Being in a bushfire could be the most traumatic experience of your life. Make sure this is the right fire emergency plan for you and your household.';\n\ninterface Props {\n surveySpec: SurveySpec;\n}\n\nconst SurveyIntro: NextPage = ({ surveySpec }) => {\n const { startAnonymousSession, isAuthenticated, loading } = useAuth();\n const [\n set,\n currentSurveySpec,\n updateSurveySpec,\n clearSurveyData,\n surveyDraft,\n ] = useStore((state) => [\n state.set,\n state.survey.spec,\n state.updateSurveySpec,\n state.clearSurveyData,\n state.survey.draft,\n ]);\n const router = useRouter();\n\n const clearPlanData = useStore((state) => state.clearPlanData);\n\n const onStart = useCallback(async () => {\n try {\n // Start an anonymous session unless we already have a current session.\n if (!loading && !isAuthenticated) await startAnonymousSession();\n\n clearPlanData();\n\n // Check if the spec version at build time differs from the latest spec from the API\n // if yes, update the stored version...\n const SurveyApi = new SurveysApi();\n const { data: latestSpec } = await SurveyApi.getSurveySpec();\n\n let currentVersion = currentSurveySpec?.version ?? surveySpec.version;\n if (latestSpec.version !== currentVersion) {\n logger.warn('Survey version mismatch! Updating specs locally...');\n updateSurveySpec(latestSpec);\n currentVersion = latestSpec.version;\n }\n\n set(({ survey }) => {\n survey.draft.version = currentVersion;\n }, 'updateSurveyDraft');\n\n set(({ plan }) => {\n plan.draft.type = PlanDataTypeEnum.Stay;\n plan.isDirty = true;\n }, 'setPlanType');\n\n logStartSurvey();\n\n // Kick off the survey...\n router.push(APP_ROUTES.stay.survey).then(scrollToTop);\n } catch (error) {\n // TODO: What should happen here?\n logger.error('Error fetching the survey spec:', error);\n }\n }, [\n loading,\n isAuthenticated,\n startAnonymousSession,\n clearPlanData,\n currentSurveySpec?.version,\n surveySpec.version,\n set,\n router,\n updateSurveySpec,\n ]);\n\n useEffect(() => {\n // Reset the survey data at the beginning of the survey if there is data.\n const { location } = surveyDraft;\n if (location?.postcode || location?.suburb) {\n clearSurveyData();\n }\n }, [clearSurveyData, surveyDraft]);\n\n useEffect(() => {\n if (!currentSurveySpec) updateSurveySpec(surveySpec);\n }, [surveySpec, updateSurveySpec, currentSurveySpec]);\n\n useEffectOnce(() => {\n AnalyticsService.trackScreen(ScreenNames.surveyIntro);\n });\n\n return (\n \n \n \n \n \n \n );\n};\n\nexport const getStaticProps: GetStaticProps = async () => {\n const SurveyApi = new SurveysApi();\n const { data: surveySpec } = await SurveyApi.getSurveySpec();\n\n return {\n props: { surveySpec },\n };\n};\n\nexport default SurveyIntro;\n","export default {\n get text() {\n return this.palette.black;\n },\n get background() {\n return this.palette.white;\n },\n get primary() {\n return this.palette.white;\n },\n palette: {\n blue: '#00294D',\n lightBlue: '#2C7AFC',\n black: '#000',\n white: '#FFFFFF',\n greyLight: '#D1D3D4',\n grey: '#757575',\n greyDark: '#222222',\n redDark: '#A51B20',\n yellow: '#ffc700',\n orange: '#F99D1C',\n orangeDark: '#FF7A00',\n green: '#00A458',\n greenLight: '#05DC78',\n teal: '#009FD6',\n moderate: '#64BF30',\n high: '#FEDD3A',\n extreme: '#F78100',\n catastrophic: '#AD0909',\n },\n preview: '#0070f3',\n};\n","export default {\n small: '1rem',\n} as const;\n","import { rem } from 'polished';\n\nexport default {\n text: {\n small: rem(14),\n medium: rem(16),\n large: rem(20),\n xLarge: rem(24),\n },\n};\n","import borderRadius from './border-radius';\nimport colors from './colors';\nimport fontSize from './font-size';\nimport mediaQueries from './media-queries';\nimport space from './spacing';\nimport zIndex from './z-index';\n\nexport default {\n borderRadius,\n colors: { ...colors },\n components: {\n button: {\n background: {\n default: colors.palette.redDark,\n dark: colors.palette.black,\n secondary: colors.palette.greyLight,\n transparent: 'transparent',\n },\n border: {\n default: colors.palette.redDark,\n dark: colors.palette.white,\n secondary: colors.palette.black,\n transparent: colors.palette.black,\n },\n text: {\n default: colors.palette.white,\n dark: colors.palette.white,\n secondary: colors.palette.black,\n transparent: colors.palette.black,\n },\n },\n download: {\n text: colors.palette.black,\n background: colors.palette.white,\n },\n text: {\n text: colors.palette.black,\n },\n heading: {\n text: colors.palette.black,\n },\n section: {\n background: colors.palette.white,\n },\n },\n fontSize,\n space,\n mediaQueries,\n zIndex,\n};\n","import { em } from 'polished';\n\nexport const baseUnits = {\n small: em(400),\n medium: em(768),\n large: em(1024),\n xlarge: em(1200),\n};\n\nexport default {\n /** 400px */\n small: `@media screen and (min-width: ${baseUnits.small})`,\n /** 768px */\n medium: `@media screen and (min-width: ${baseUnits.medium})`,\n /** 1024px */\n large: `@media screen and (min-width: ${baseUnits.large})`,\n /** 1200px */\n xlarge: `@media screen and (min-width: ${baseUnits.xlarge})`,\n // This media query is used to handle the maximum screen size of mobile (400px)\n smallMax: `@media screen and (max-width: ${baseUnits.small})`,\n};\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/stay-and-defend\",\n function () {\n return require(\"private-next-pages/stay-and-defend/index.tsx\");\n }\n ]);\n ","import borderRadius from './border-radius';\nimport colors from './colors';\nimport fontSize from './font-size';\nimport mediaQueries from './media-queries';\nimport space from './spacing';\nimport zIndex from './z-index';\n\nexport default {\n borderRadius,\n colors: { ...colors },\n components: {\n button: {\n background: {\n default: colors.palette.redDark,\n dark: colors.palette.black,\n secondary: colors.palette.greyLight,\n transparent: 'transparent',\n },\n border: {\n default: colors.palette.redDark,\n dark: colors.palette.white,\n secondary: colors.palette.greyLight,\n transparent: 'transparent',\n },\n text: {\n default: colors.palette.white,\n dark: colors.palette.white,\n secondary: colors.palette.black,\n transparent: colors.palette.black,\n },\n },\n download: {\n text: colors.palette.white,\n background: colors.palette.black,\n },\n text: {\n text: colors.palette.white,\n },\n heading: {\n text: colors.palette.white,\n },\n section: {\n background: colors.palette.black,\n },\n },\n fontSize,\n space,\n mediaQueries,\n zIndex,\n};\n","import PropTypes from 'prop-types';\nimport React, { FC } from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport themeDark from 'styles/theme-dark';\nimport themeLight from 'styles/theme-light';\n\ninterface Props {\n to?: 'light' | 'dark';\n}\n\nconst SwitchTheme: FC = (props) => {\n let currentTheme;\n\n if (props.to === 'dark') {\n currentTheme = {\n ...themeDark,\n };\n } else {\n currentTheme = {\n ...themeLight,\n };\n }\n\n return {props.children};\n};\n\nSwitchTheme.defaultProps = {\n to: 'light',\n};\n\nSwitchTheme.propTypes = {\n to: PropTypes.oneOf(['light', 'dark']),\n};\n\nexport default SwitchTheme;\n","export default {\n small: '4px',\n medium: '20px',\n large: '100px',\n} as const;\n","export default {\n ...[\n 0, // default\n 1, // hover/focus\n 2, // active\n 10, // modal-backdrop\n 20, // modal\n 30, // popover\n 40, // tooltip\n ],\n};\n"],"sourceRoot":""}