\n
\n )\n}\n","import { useRouter } from 'next/router'\nimport { useEffect } from 'react'\nimport { getAccessToken, setAccessToken } from '@api/utils'\n\nconst beforeUnloadListener = (event: any) => {\n event.preventDefault()\n return (event.returnValue = 'Are you sure you want to exit?')\n}\n\nexport function useTokenVerification(disabled = false) {\n const router = useRouter()\n\n useEffect(() => {\n if (!disabled) {\n try {\n const token = getAccessToken()\n if (token) {\n addEventListener('beforeunload', beforeUnloadListener, {\n capture: true,\n })\n }\n } catch (err) {\n console.log({ tokenError: err })\n setAccessToken('')\n router.push('/')\n }\n return () => {\n removeEventListener('beforeunload', beforeUnloadListener, {\n capture: true,\n })\n }\n }\n }, [router, disabled])\n}\n","import { useRouter } from 'next/router'\nimport { useIdleTimer } from 'react-idle-timer'\nimport { useTokenVerification } from './useTokenVerification'\nimport { setAccessToken, setSessionId } from '@api/utils'\n\nconst FIFTEEN_MINUTES_IN_MILLIS = 1000 * 60 * 15\n\nexport const getInactivityTimeout = (\n INACTIVITY_TIMEOUT = FIFTEEN_MINUTES_IN_MILLIS\n) => INACTIVITY_TIMEOUT\n\nexport function useSessionTimer(\n timeoutCallback?: () => void,\n disableTokenVerification?: boolean,\n inactivityTimeout?: number\n) {\n const router = useRouter()\n\n useTokenVerification(disableTokenVerification)\n\n const sessionTimeoutHandler = async () => {\n timeoutCallback && timeoutCallback()\n // Sign out of cognito\n setAccessToken('')\n setSessionId('')\n await router.push(\n {\n pathname: router.route,\n query: { sessionTimeout: 'true' },\n },\n undefined,\n { shallow: true }\n )\n }\n\n const idleTimerFunctions = useIdleTimer({\n timeout: getInactivityTimeout(inactivityTimeout),\n onIdle: sessionTimeoutHandler,\n debounce: 500,\n })\n\n return {\n ...idleTimerFunctions,\n sessionTimeoutHandler,\n }\n}\n","import { Enrollment } from '@clear-denver/tpc-openapi-typescript'\n\ninterface ErrorMessage {\n key: string\n errorMessage: string\n}\n\nexport const getGlobalErrorMessage = (errors: any) => {\n return errors?.global?.length ? errors?.global[0].errorMessage : undefined\n}\n\nexport const createGlobalErrorMessage = (e: any) => {\n const globalError = {\n global: [\n {\n key: 'global',\n errorMessage: e.message,\n },\n ],\n }\n return globalError\n}\n\nexport interface ErrorsByProperty {\n [key: string]: Array
\n}\n\nexport const getApiErrorsByProperty = (\n errors: Array,\n formState: { [key: string]: any }\n): ErrorsByProperty => {\n const errorsByProperty = errors.reduce((acc: any, err: any) => {\n const formKeys = Object.keys(formState)\n const errorKey = formKeys.includes(err.property) ? err.property : 'global'\n if (!acc[errorKey]) acc[errorKey] = []\n acc[errorKey].push({\n key: err.property,\n errorMessage: err.message,\n })\n return acc\n }, {})\n\n return errorsByProperty\n}\n\nexport async function extractErrors(\n error: Response,\n data: any\n): Promise\nexport async function extractErrors(\n error: Error,\n data: any\n): Promise\nexport async function extractErrors(error: any, data: any) {\n try {\n const errorBody = await error.json()\n return getApiErrorsByProperty(\n errorBody.errors || errorBody.businessErrors,\n data\n )\n } catch {\n return createGlobalErrorMessage(error)\n }\n}\n\nexport function setFormErrors(\n errorsByProperty: ErrorsByProperty,\n setError: T\n) {\n Object.keys(errorsByProperty).forEach((errorKey) => {\n typeof setError === 'function' &&\n setError(errorKey, {\n message: errorsByProperty[errorKey][0].errorMessage,\n })\n })\n}\n","export const enrollSteps = [\n {\n name: 'You',\n },\n {\n name: 'Contact',\n },\n {\n name: 'Eligibility',\n },\n {\n name: 'Enroll',\n },\n {\n name: 'Complete',\n },\n]\n\nexport const renewalSteps = [\n {\n name: 'Eligibility',\n },\n {\n name: 'Contact',\n },\n {\n name: 'History',\n },\n {\n name: 'Verify',\n },\n {\n name: 'Pay',\n },\n {\n name: 'Complete',\n },\n]\n"],"names":["aboveMobile","theme","BackButton","props","isAboveMobile","useMedia","minWidth","text","textProps","display","variant","size","icon","iconPosition","ContinueButton","id","undefined","type","Form","as","flexDirection","Row","alignItems","mx","Actions","mt","justifyContent","StepTitle","textAlign","color","fontSize","mb","StepSubTitle","my","ErrorMessage","React","ref","children","displayName","clearEnrollmentState","useEnrollmentApi","clearState","router","useRouter","sessionTimeout","query","pathname","useState","showSessionModal","setShowSessionModal","useEffect","useSessionTimer","px","width","showModal","setShowModal","header","body","successButtonText","successClick","push","canClose","title","previewContent","containerProps","target","href","noop","Modal","bodyNote","successLink","showSuccessButton","handleCloseModal","className","onClick","p","backgroundColor","e","stopPropagation","name","pt","passHref","Spinner","beforeUnloadListener","event","preventDefault","returnValue","FIFTEEN_MINUTES_IN_MILLIS","getInactivityTimeout","INACTIVITY_TIMEOUT","timeoutCallback","disableTokenVerification","inactivityTimeout","disabled","getAccessToken","addEventListener","capture","err","console","log","tokenError","setAccessToken","removeEventListener","useTokenVerification","sessionTimeoutHandler","setSessionId","route","shallow","useIdleTimer","timeout","onIdle","debounce","getGlobalErrorMessage","errors","global","length","errorMessage","createGlobalErrorMessage","key","message","getApiErrorsByProperty","formState","reduce","acc","errorKey","Object","keys","includes","property","extractErrors","error","data","json","errorBody","businessErrors","setFormErrors","errorsByProperty","setError","forEach","enrollSteps","renewalSteps"],"sourceRoot":""}