{"version":3,"sources":["types/codegen.ts","types/index.ts","components/LoadingIndicators.tsx","components/module/ConfidenceQuestion.tsx","components/CustomLink.tsx","components/ErrorBoundary.tsx","components/module/AutoDialog.tsx","components/module/BasicAudio.jsx","components/module/BasicVideo.tsx","components/module/ButtonDialog.tsx","components/module/FinalPage.tsx","components/module/FinishModule.tsx","components/module/GoTo.jsx","components/module/GoalDialog.tsx","components/module/ImageGrid.tsx","components/module/ImageReveal.tsx","components/module/ImageStepper.tsx","components/module/Img.tsx","components/module/InternalButtonLink.tsx","components/module/Layouts.jsx","components/module/PreviousModuleQuestion.tsx","components/module/Quiz.tsx","components/module/TextCustom.tsx","components/module/Quote.tsx","components/module/SelectBox.jsx","components/module/SelectedGoal.tsx","components/module/SingleImage.tsx","components/module/Table.tsx","components/module/TextInput.tsx","components/module/TextReveal.tsx","components/module/TextStepper.tsx","components/FeedbackNode.tsx","components/FooterBar.jsx","components/FormikTextField.jsx","components/GoalsList.tsx","components/HeaderBar.tsx","components/MemoMDX.tsx","components/ModulesList.tsx","components/ModulesSelect.tsx","components/PageLayout.tsx","components/DummyModulePage.tsx","components/ModuleErrorBoundary.tsx","components/ScheduledSurveyList.tsx","components/InitialSurveyInfo.tsx","components/NoPermission.tsx","components/index.ts","routes/routes.jsx","routes/index.js","theme.ts","pages/404.jsx","pages/AdminDashboard.tsx","pages/EditModule.tsx","pages/EditModules.tsx","pages/EditPage.tsx","pages/EditPages.tsx","pages/FactDashboard.tsx","pages/Factsheet.tsx","pages/Feedback.tsx","pages/Login.tsx","pages/MemberDashboard.tsx","pages/Module.tsx","pages/Optout.tsx","pages/Page.tsx","pages/Register.tsx","pages/ResetPassword.tsx","pages/Survey.jsx","pages/VerifyAccount.tsx","pages/EditSurveys.tsx","pages/index.ts","assets/pip_logo.svg","routes/urls.ts","components/SurveyWrapper.tsx","serviceWorker.js","App.tsx","index.tsx","assets/pip_logo_small.svg","utils/variables.ts","utils/auth.ts","utils/gql.ts","utils/helpers.ts","utils/hooks.ts","utils/theme.ts","utils/index.js"],"names":["GoalStatus","ModuleType","SortDirection","AdminFieldsFragmentDoc","ScheduledSurveysFragmentDoc","ModuleDataFragmentDoc","ModuleUpdateFieldsFragmentDoc","PageDataFragmentDoc","GetMyGoalsDocument","useGetMyGoalsQuery","baseOptions","ApolloReactHooks","SetGoalStatusDocument","useSetGoalStatusMutation","DynamicHeaderLinksDocument","useDynamicHeaderLinksQuery","LoadUserSurveyDataDocument","useLoadUserSurveyDataQuery","GetMyModulesDocument","useGetMyModulesQuery","GetUserModulesDocument","useGetUserModulesQuery","SelectModulesDocument","useSelectModulesMutation","GetSurveyDocument","useGetSurveyQuery","GetPlainSurveyDocument","useGetPlainSurveyQuery","SaveSurveyDocument","useSaveSurveyMutation","FinishModuleDocument","useFinishModuleMutation","AdminDashboardDocument","useAdminDashboardQuery","GetModuleDocument","useGetModuleQuery","UpdateModuleDocument","useUpdateModuleMutation","GetAllModulesDocument","useGetAllModulesQuery","GetPageDocument","useGetPageQuery","UpdatePageDocument","useUpdatePageMutation","GetAllPagesDocument","useGetAllPagesQuery","GetAdminSurveyFieldsDocument","useGetAdminSurveyFieldsQuery","UpdateSurveyDocument","useUpdateSurveyMutation","GetAllSurveysDocument","useGetAllSurveysQuery","FactsheetUserDashboardDocument","useFactsheetUserDashboardQuery","FactsheetModulesDocument","useFactsheetModulesMutation","GetFactsheetContentDocument","useGetFactsheetContentQuery","GetFeedbackDocument","useGetFeedbackLazyQuery","GetSettingsDocument","useGetSettingsQuery","SendResetEmailDocument","useSendResetEmailMutation","GetMyParticipationDocument","useGetMyParticipationQuery","GetModuleStatusDocument","useGetModuleStatusQuery","SaveModuleDocument","useSaveModuleMutation","SetGoalDocument","useSetGoalMutation","OptOutDocument","useOptOutMutation","ResetPasswordDocument","useResetPasswordMutation","ResetPasswordTokenDocument","useResetPasswordTokenMutation","VerifyAccountDocument","useVerifyAccountMutation","GetWhoamiDocument","useGetWhoamiQuery","EventLogDocument","useEventLogMutation","useBusyTrigger","isBusy","delayMs","useState","trigger","setTrigger","useEffect","id","setTimeout","clearTimeout","LoadingSpinner","props","display","justifyContent","m","FixedLinearLoading","position","width","zIndex","BusyLinear","otherProps","BusyCircular","ConfidenceValues","AdapterLink","forwardRef","ref","ErrorBoundary","state","hasError","error","eventId","undefined","info","Sentry","scope","setExtras","setState","this","Container","Box","mt","Typography","variant","paragraph","clone","mr","Button","color","onClick","window","location","reload","component","Link","href","logoutUrl","stack","children","Component","AutoDialog","useToggle","open","toggle","Dialog","onClose","DialogContent","DialogActions","BasicAudio","src","type","preload","my","controls","controlsList","BasicVideo","height","other","useRef","size","useComponentSize","light","style","marginTop","marginBottom","marginLeft","marginRight","ButtonDialog","linkText","title","fullScreen","goToNext","disableButton","setOpen","context","useContext","ModuleControlContext","theme","useTheme","isSm","useMediaQuery","breakpoints","down","key","shouldFullscreen","handleClose","GoTo","activeStep","mb","Update","format","Date","ISOFormatString","moduleData","disabled","DialogTitle","ConfidenceQuestion","begin","keyData","question","confidenceQuestions","find","value","Card","CardContent","label","RadioGroup","row","aria-label","name","onChange","event","currentTarget","FormControlLabel","control","Radio","notConfident","littleConfident","somewhatConfident","veryConfident","FinalPage","Grid","container","item","xs","sm","Img","alt","gridSize","FinishModule","snackbar","useSnackbar","navigation","useNavigation","variables","moduleID","onCompleted","data","moduleComplete","enqueueSnackbar","navigate","memberUrl","dashboardUrl","refetchQueries","memberDashboardQueryName","awaitRefetchQueries","mutation","CursorLink","styled","cursor","page","GoalDialog","thisGoalSelected","SetGoal","description","moduleCompleted","htmlColor","green","fontSize","ImageGrid","list","mdGrid","smGrid","alignItems","justify","spacing","map","image","index","fullWidth","md","text","p","align","ImageReveal","fadeSpeed","mainItem","mainDescription","aboveReveal","belowReveal","clicked","addDateKey","Fade","in","timeout","ImageStepper","sequenceSpeed","React","length","count","setCount","useInterval","useStyles","makeStyles","img","maxWidth","objectFit","margin","classes","className","InternalButtonLink","redirectUrl","buttonText","Paper","elevation","square","moduleName","PreviousModuleQuestion","Select","target","moduleChosen","previousModule","MenuItem","PopConfidenceValue","answer","CorrectCheckbox","withStyles","root","checked","Checkbox","WrongCheckbox","red","checkedIcon","Quiz","anyAnswerGiven","Object","keys","saveAnswer","answerName","once","existingData","singleAnswer","FormGroup","answers","answerChecked","correct","response","inline","fallbackResponse","setClicked","Answer","handleClickOpen","flexDirection","disableTypography","ml","TextCustom","customColor","getColorHex","Quote","quote","author","createStyles","containedPrimary","background","textTransform","SelectBox","SelectedGoal","SingleImage","smallGridSize","py","StyledTableCell","head","backgroundColor","palette","common","black","white","TableCell","StyledTableRow","default","TableRow","overflowX","SimpleTable","Table","TextInput","TextField","addDataKey","defaultValue","multiline","rows","HoverCard","grey","TextReveal","header","mountOnEnter","textCustomProps","TextStepper","textVariant","PaperProps","randomItemLists","useMemo","randomColorNumbers","forEach","push","getRandomInt","customColorOptions","colors","long","findPropValue","propType","prop","element","Type","Value","generateAudioUrl","ids","process","encodeURIComponent","btoa","join","FeedbackNode","Children","child","Format","Content","Props","childrenIDS","findChildrenIDS","idProp","subResults","ExpansionPanel","ExpansionPanelSummary","expandIcon","ExpansionPanelDetails","linkProp","FooterBar","bgcolor","Toolbar","flexGrow","version","FormikTextField","helperText","useField","field","meta","isError","touched","GoalsList","loading","setGoal","goals","modules","modulesStatus","completeGoals","goal","completed","countCompletedGoals","filteredGoals","sort","a","b","aModule","module","bModule","setGoalStatus","goalID","status","Complete","CardHeader","Skeleton","LinearProgress","normalise","showDots","swipeable","draggable","responsive","breakpoint","max","min","items","slidesToSlide","lg","xl","minHeight","CardActions","appBar","drawer","DesktopLinks","links","link","prefetch","MobileLinks","popupState","usePopupState","popupId","bindTrigger","Menu","bindMenu","close","HeaderBar","isSmall","isSmallest","isActiveModule","useActive","moduleUrl","exact","customLogo","REACT_APP_CUSTOM_SITE_LOGO","linksData","logoHeight","userType","whoami","moduleType","myParticipation","dynamicLinks","pages","filter","showInMenu","menuName","route","activeModuleLinks","Module","Factsheet","moduleLinks","UserType","Admin","userLinks","Participant","noUserLinks","AppBar","pip_logo","pip_logo_small","Tooltip","message","MDXRuntime","lazy","MemoMDX","memo","mdx","cardMedia","padding","cardHeading","cardBody","cardContent","paddingTop","ModulesList","MODULES_FRAGMENT","activeModulesList","goToModule","filteredModulesList","selected","unlocked","actionAreaContent","CardMedia","imageUrl","CardActionArea","paddingRight","paddingLeft","paddingBottom","fontWhite","ModulesSelect","notMobile","up","toggleOpen","modulesList","setModulesList","selectedModules","setSelectedModules","selectModules","allModules","recommendedModules","moduleRecommendations","isModuleRecommended","some","isModuleSelected","number","toggleModuleSelection","selectedClone","found","findIndex","splice","bottom","right","Fab","DialogContentText","autoFocus","moduleIDs","PageLayout","loadingRoute","useLoadingRoute","CssBaseline","pt","fallback","render","RenderNotFound","DummyModuleState","moduleState","setModuleState","Provider","Alert","severity","AlertTitle","JSON","stringify","ModuleErrorBoundary","ScheduledSurveyList","surveys","baseUrl","survey","surveyUrl","InitialSurveyInfo","userID","surveyID","feedbackSurveyID","surveySavedDataKeyLength","parse","loadUserSurveyData","NoPermission","cleanupUser","client","async","localStorage","clear","fetch","logoutEndpoint","credentials","mode","resetStore","catch","routes","compose","withView","request","mount","redirect","homeUrl","siteName","view","contactUsUrl","linksUrl","aboutUsUrl","optoutUrl","resetUrl","getUserInfo","userQuery","token","params","isLoggedIn","verifyUrl","loginUrl","email","username","url","tokenAuthEndpoint","fetchLogin","options","registerUrl","code","tno","ex","adminUrl","factUrl","amikoFontFamily","primaryColour","secondaryColour","darkTheme","createMuiTheme","responsiveFontSizes","primary","main","contrastText","secondary","typography","fontFamily","fontWeightBold","fontWeightLight","fontWeightMedium","fontWeightRegular","body1","letterSpacing","lineHeight","body2","button","caption","h1","fontWeight","h2","h3","h4","h5","h6","overline","AdminDashboard","refetch","jsonKeys","Set","result","users","user","first","person","firstName","participant","feedbackSurvey","surveysStats","moduleLockInTime","locked_in","participantDataJSON","registrationForm","add","moduleStatus","moduleLocked","pradas","completions","participantType","verified","participantResult","isLoading","columns","exportAllData","pageSizeOptions","exportButton","actions","icon","tooltip","isFreeAction","detailPanel","rowData","List","ListItem","ListItemText","Array","from","ContentPagesField","moduleValidation","Yup","shape","of","required","unlockThreshold","EditModuleFetch","MODULES_UPDATE_FRAGMENT","fetchPolicy","contentJson","content","superUserID","backgroundUrl","EditModuleForm","closeSnackbar","updateModule","mutationLoading","useForm","defaultValues","validationSchema","errors","handleSubmit","watch","onSubmit","persist","changes","direction","as","rowsMax","EditModules","pageValidation","EditPageFetch","PAGE_DATA_FRAGMENT","EditPageForm","updatePage","mutationError","otherData","Switch","valueName","EditPages","goToPage","pageUrl","FactDashboard","SCHEDULED_SURVEYS_FRAGMENT","surveyCount","surveyStats","scheduledSurveys","pageTitle","factSheetUrl","queryError","finishModule","errorPolicy","eventLog","moduleContent","password","Feedback","getFeedback","feedbackLoading","feedbackError","feedbackRequirePassword","getSettings","keyValue","settingsData","settingsLoading","loadingError","feedbackResult","memberDashboardHref","queryErrors","autoComplete","CircularProgress","paper","avatar","form","submit","LoginValidationSchema","ResetPasswordValidationSchema","Login","useApolloClient","sendResetEmail","emailPrefilled","InitialFormData","redirectLoggedInUser","reFetchObservableQueries","navigateToPage","Avatar","authEndpoint","initialValues","isSubmitting","isValidating","MemberDashboard","notification","toggleNotification","notInitialSurvey","activeModulesLength","selectModulesRequired","modulesActive","pb","feedbackUrl","flexShrink","drawerPaper","toolbar","mixins","createContext","setActiveStep","drawerOpen","toggleDrawerOpen","saveModule","saveGoal","handleGoTo","step","unblocked","unblockThreshold","moduleJSON","scrollTo","drawerContents","Divider","isUnblocked","Hidden","lgUp","Drawer","mdDown","MobileStepper","steps","backButton","prevActiveStep","nextButton","Optout","optOutMessagePageID","messageData","messageLoading","messageError","optOut","stop","onError","busy","pageJSON","Page","Register","replace","LoginTokenValidationSchema","newPassword","matches","confirmNewPassword","oneOf","current","ResetPassword","resetPassword","resetPasswordToken","SurveyWrapper","Survey","useCurrentRoute","surveyName","VerifyAccount","verifyAccount","includes","EditSurveys","exports","appendixUrl","howToUrl","logoutItem","adminUrls","GET_SURVEY","GET_PLAIN_SURVEY","SAVE_SURVEY","pronounSubstitutes","singular","plural","setSingular","object","pronounObject","SurveyDataWrapper","setData","surveyContent","json","onComplete","sender","surveyAnswersJSON","setSurveyAnswersJSON","loadSurveyData","err","members","participantMemberType","participantMemberTypeChild","childName","childGender","gender","setPlural","setChild","saveSurvey","loadingSave","errorSave","surveyVersionID","surveyCompletions","surveyAllowedAttempts","allowedAttempts","uploadSurvey","complete","saveSurveyData","onCurrentPageChanged","Boolean","hostname","match","ApolloClient","defaultOptions","watchQuery","query","mutate","ApolloLink","graphQLErrors","networkError","HttpLink","uri","cache","InMemoryCache","App","maxSnack","dsn","environment","release","ReactDOM","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","participantUser","GET_WHOAMI","userAuthentication","matcher","mountpath","search","participantAuthentication","ok","resText","Math","ceil","floor","random","hashCode","str","split","reduce","prevHash","currVal","charCodeAt","callback","delay","savedCallback","setInterval","clearInterval","initialValue","setValue","useCallback","nextValue","currentValue"],"mappings":"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","file":"static/js/main.9f1b0e1e.chunk.js","sourcesContent":["import { gql } from 'graphql.macro'\nimport * as ApolloReactCommon from '@apollo/react-common'\nimport * as ApolloReactHooks from '@apollo/react-hooks'\nexport type Maybe = T | null | undefined\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string\n String: string\n Boolean: boolean\n Int: number\n Float: number\n}\n\nexport type CreateSurveyInput = {\n allowedAttempts?: Maybe\n content: Scalars['String']\n description: Scalars['String']\n name: Scalars['String']\n protected: Scalars['Boolean']\n savable: Scalars['Boolean']\n}\n\nexport type FeedbackResult = {\n __typename?: 'FeedbackResult'\n data: Scalars['String']\n}\n\nexport type Gender = {\n __typename?: 'Gender'\n id: Scalars['ID']\n name: Scalars['String']\n code: Scalars['String']\n}\n\nexport type Goal = {\n __typename?: 'Goal'\n id: Scalars['ID']\n /** Returns completed time in RFC3999 */\n completed?: Maybe\n description: Scalars['String']\n module: Module\n name: Scalars['String']\n}\n\nexport enum GoalStatus {\n Complete = 'COMPLETE',\n Incomplete = 'INCOMPLETE',\n}\n\nexport type KeyValue = {\n __typename?: 'KeyValue'\n key: Scalars['String']\n value: Scalars['String']\n}\n\nexport type Module = {\n __typename?: 'Module'\n id: Scalars['ID']\n content?: Maybe\n type?: Maybe\n name?: Maybe\n number?: Maybe\n description?: Maybe\n imageUrl?: Maybe\n}\n\nexport type ModuleStatus = {\n __typename?: 'ModuleStatus'\n id: Scalars['ID']\n /** Returns completed time in RFC3999 */\n completed?: Maybe\n data?: Maybe\n position?: Maybe\n /** Returns time that module was locked in, in RFC3999 */\n locked_in?: Maybe\n selected?: Maybe\n /** Returns unlocked time in RFC3999 */\n unlocked?: Maybe\n user?: Maybe\n module?: Maybe\n}\n\nexport enum ModuleType {\n Factsheet = 'FACTSHEET',\n Module = 'MODULE',\n}\n\nexport type Mutation = {\n __typename?: 'Mutation'\n /**\n * Logs an action to the database. When user is not logged in, will return\n * an error.\n *\n * Name can be up to 64 characters long\n * Message can be up to 128 characters long\n */\n logEvent: Scalars['Boolean']\n /** Opts the current user out of the trial/platform. */\n optOut: Scalars['Boolean']\n /**\n * Mark module as completed. If module is already completed, will return true\n * but will not change the recorded completion time.\n */\n moduleComplete: Scalars['Boolean']\n /**\n * Register a new participant user account.\n *\n * user: RegisterUser input\n * data: Registration surveyjs data\n */\n registerUser: Scalars['Boolean']\n /** Change password from current to new password. */\n resetPassword: Scalars['Boolean']\n /** Sends a reset password link to the provided email address. If false is reported, try again later. */\n resetPasswordEmail: Scalars['Boolean']\n /** Use a token to reset password. */\n resetPasswordToken: Scalars['Boolean']\n /** Save module related data, an arbitrary json field. */\n saveModuleData: Scalars['Boolean']\n /**\n * Save survey result.\n *\n * surveyVersionID: ID for the survey version.\n * data: Survey data.\n * an existing survey.\n * completed: Specify if the survey is finished completely or saving answers in\n * progress.\n */\n saveSurveyData: Scalars['Boolean']\n /**\n * Select which modules this user will initially have access to. Cannot be\n * changed once set, and will return false for subsequent attempts.\n */\n selectModules: Scalars['Boolean']\n /**\n * Set a goal for this account. Will return an error if there is already a\n * goal with that name for that module.\n */\n setGoal: Scalars['Boolean']\n /** Sets the goal as completed or uncompleted. */\n setGoalStatus: Scalars['Boolean']\n temporarySendEmail: Scalars['Boolean']\n /** Update module with the provided input. */\n updateModule?: Maybe\n /** Verify account with the provided token. */\n verifyAccount: Scalars['Boolean']\n /** Update page with the provided input. */\n updatePage?: Maybe\n createSurvey?: Maybe\n updateSurvey?: Maybe\n}\n\nexport type MutationLogEventArgs = {\n name: Scalars['String']\n message: Scalars['String']\n}\n\nexport type MutationModuleCompleteArgs = {\n moduleID: Scalars['ID']\n}\n\nexport type MutationRegisterUserArgs = {\n user: RegisterUser\n}\n\nexport type MutationResetPasswordArgs = {\n current: Scalars['String']\n newPassword: Scalars['String']\n}\n\nexport type MutationResetPasswordEmailArgs = {\n email: Scalars['String']\n}\n\nexport type MutationResetPasswordTokenArgs = {\n token: Scalars['String']\n newPassword: Scalars['String']\n}\n\nexport type MutationSaveModuleDataArgs = {\n moduleID: Scalars['ID']\n data: Scalars['String']\n}\n\nexport type MutationSaveSurveyDataArgs = {\n surveyVersionID: Scalars['ID']\n data: Scalars['String']\n completed: Scalars['Boolean']\n}\n\nexport type MutationSelectModulesArgs = {\n moduleIDs: Array\n}\n\nexport type MutationSetGoalArgs = {\n goal?: Maybe\n}\n\nexport type MutationSetGoalStatusArgs = {\n goalID: Scalars['ID']\n status: GoalStatus\n}\n\nexport type MutationUpdateModuleArgs = {\n id: Scalars['ID']\n changes: UpdateModuleInput\n}\n\nexport type MutationVerifyAccountArgs = {\n token: Scalars['String']\n}\n\nexport type MutationUpdatePageArgs = {\n id: Scalars['ID']\n page: UpdatePageInput\n}\n\nexport type MutationCreateSurveyArgs = {\n survey: CreateSurveyInput\n}\n\nexport type MutationUpdateSurveyArgs = {\n id: Scalars['ID']\n survey: UpdateSurveyInput\n}\n\nexport type Page = {\n __typename?: 'Page'\n id: Scalars['ID']\n content?: Maybe\n menuName?: Maybe\n route?: Maybe\n showInMenu?: Maybe\n}\n\nexport type PageInfo = {\n __typename?: 'PageInfo'\n hasNextPage: Scalars['Boolean']\n hasPreviousPage: Scalars['Boolean']\n}\n\nexport type Participant = {\n __typename?: 'Participant'\n id: Scalars['ID']\n members?: Maybe>\n moduleType?: Maybe\n data?: Maybe\n}\n\nexport type ParticipantMember = {\n __typename?: 'ParticipantMember'\n id: Scalars['ID']\n person?: Maybe\n participantMemberType?: Maybe\n}\n\nexport type ParticipantMemberType = {\n __typename?: 'ParticipantMemberType'\n id: Scalars['ID']\n name?: Maybe\n}\n\nexport type Person = {\n __typename?: 'Person'\n id: Scalars['ID']\n firstName?: Maybe\n lastName?: Maybe\n gender?: Maybe\n}\n\nexport type Query = {\n __typename?: 'Query'\n /** Get Environment Variable Settings */\n getSettings?: Maybe>>\n feedbackResult?: Maybe\n /** Returns all goals for current user. */\n goals: Array\n /**\n * Loads survey results/data for the given survey. Will load the most recent\n * entry, whether completed or not. Returns nothing if there is no saved survey\n * data.\n *\n * id: ID for the survey\n */\n loadSurveyData?: Maybe\n /** Works like loadSurveyData, but allows selecting user. */\n loadUserSurveyData?: Maybe\n module?: Maybe\n /** Returns a list of recommended modules */\n moduleRecommendations: Array\n /** Returns a list of all modules. */\n modules?: Maybe>\n /** Returns a list of the status for all modules for the current user */\n modulesStatus?: Maybe>\n /** Return the status of a single module */\n moduleStatus?: Maybe\n /**\n * Returns participation details if the current user is a participant and such\n * details are available\n */\n myParticipation?: Maybe\n /**\n * Returns any surveys that the user is currently scheduled to complete that\n * haven't yet been completed.\n */\n scheduledSurveys?: Maybe>\n /** Returns the page with the requested id */\n page?: Maybe\n /** Returns all pages */\n pages?: Maybe>>\n /** Fetches survey by ID */\n survey: Survey\n /**\n * Returns information about the survey as it relates to the current user. For\n * example, how many times the survey has been completed.\n */\n surveyStats: SurveyStats\n /** Fetches all surveys */\n surveys?: Maybe>>\n /** Returns all users */\n users: Array\n whoami?: Maybe\n}\n\nexport type QueryFeedbackResultArgs = {\n password?: Maybe\n}\n\nexport type QueryLoadSurveyDataArgs = {\n id: Scalars['ID']\n}\n\nexport type QueryLoadUserSurveyDataArgs = {\n userID: Scalars['ID']\n surveyID: Scalars['ID']\n}\n\nexport type QueryModuleArgs = {\n id: Scalars['ID']\n}\n\nexport type QueryModuleStatusArgs = {\n moduleID: Scalars['ID']\n}\n\nexport type QueryPageArgs = {\n id: Scalars['ID']\n}\n\nexport type QuerySurveyArgs = {\n id: Scalars['ID']\n}\n\nexport type QuerySurveyStatsArgs = {\n surveyID: Scalars['ID']\n}\n\nexport type RegisterUser = {\n email: Scalars['String']\n password: Scalars['String']\n data: Scalars['String']\n code?: Maybe\n}\n\nexport type ScheduledSurvey = {\n __typename?: 'ScheduledSurvey'\n id: Scalars['ID']\n survey: Survey\n}\n\nexport type SetGoalInput = {\n moduleID: Scalars['ID']\n name: Scalars['String']\n description: Scalars['String']\n}\n\nexport enum SortDirection {\n Asc = 'ASC',\n Desc = 'DESC',\n}\n\nexport type Survey = {\n __typename?: 'Survey'\n id: Scalars['ID']\n allowedAttempts?: Maybe\n content: Scalars['String']\n name: Scalars['String']\n /**\n * Protected surveys can be modified but cannot be removed. Used for PRADAS\n * and registration surveys that we want to ensure always exist, preventing\n * them from being deleted entirely.\n */\n protected: Scalars['Boolean']\n /** Specifies the version of the survey, used when saving survey results. */\n version: Scalars['String']\n}\n\nexport type SurveyResult = {\n __typename?: 'SurveyResult'\n id: Scalars['ID']\n completed: Scalars['Boolean']\n data: Scalars['String']\n survey: Survey\n}\n\nexport type SurveyStats = {\n __typename?: 'SurveyStats'\n id: Scalars['ID']\n completions: Scalars['Int']\n surveyID: Scalars['ID']\n}\n\nexport type UpdateModuleInput = {\n name?: Maybe\n content?: Maybe\n description?: Maybe\n imageUrl?: Maybe\n}\n\nexport type UpdatePageInput = {\n content?: Maybe\n menuName?: Maybe\n route?: Maybe\n showInMenu?: Maybe\n}\n\nexport type UpdateSurveyInput = {\n allowedAttempts?: Maybe\n content?: Maybe\n description?: Maybe\n name?: Maybe\n protected?: Maybe\n savable?: Maybe\n}\n\nexport type User = {\n __typename?: 'User'\n id: Scalars['ID']\n email?: Maybe\n userType?: Maybe\n person?: Maybe\n /** If this user is a participant, returns their selected goals. */\n goals?: Maybe>\n /**\n * If this user has access to modules as a participant, then returns the\n * status of those modules.\n */\n modulesStatus?: Maybe>\n /**\n * If this user is a participant, returns whether they are a module or factsheet\n * user.\n */\n participant?: Maybe\n /**\n * Returns information about the survey as it relates to the current user. For\n * example, how many times the survey has been completed.\n */\n surveysStats: Array>\n verified?: Maybe\n}\n\nexport type UserType = {\n __typename?: 'UserType'\n id: Scalars['ID']\n name: Scalars['String']\n}\n\nexport type GetMyGoalsQueryVariables = {}\n\nexport type GetMyGoalsQuery = { __typename?: 'Query' } & {\n modulesStatus: Maybe<\n Array<\n { __typename?: 'ModuleStatus' } & Pick<\n ModuleStatus,\n 'id' | 'position'\n > & { module: Maybe<{ __typename?: 'Module' } & Pick> }\n >\n >\n goals: Array<\n { __typename?: 'Goal' } & Pick & {\n module: { __typename?: 'Module' } & Pick\n }\n >\n}\n\nexport type SetGoalStatusMutationVariables = {\n goalID: Scalars['ID']\n status: GoalStatus\n}\n\nexport type SetGoalStatusMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'setGoalStatus'\n>\n\nexport type DynamicHeaderLinksQueryVariables = {}\n\nexport type DynamicHeaderLinksQuery = { __typename?: 'Query' } & {\n pages: Maybe<\n Array<\n Maybe<\n { __typename?: 'Page' } & Pick<\n Page,\n 'id' | 'menuName' | 'route' | 'showInMenu'\n >\n >\n >\n >\n}\n\nexport type LoadUserSurveyDataQueryVariables = {\n userID: Scalars['ID']\n surveyID: Scalars['ID']\n}\n\nexport type LoadUserSurveyDataQuery = { __typename?: 'Query' } & {\n loadUserSurveyData: Maybe<\n { __typename?: 'SurveyResult' } & Pick<\n SurveyResult,\n 'id' | 'completed' | 'data'\n >\n >\n}\n\nexport type GetMyModulesQueryVariables = {}\n\nexport type GetMyModulesQuery = { __typename?: 'Query' } & {\n modulesStatus: Maybe<\n Array<\n { __typename?: 'ModuleStatus' } & Pick<\n ModuleStatus,\n 'id' | 'position' | 'completed' | 'unlocked' | 'selected'\n > & { module: Maybe<{ __typename?: 'Module' } & ModuleDataFragment> }\n >\n >\n}\n\nexport type GetUserModulesQueryVariables = {}\n\nexport type GetUserModulesQuery = { __typename?: 'Query' } & {\n moduleRecommendations: Array<{ __typename?: 'Module' } & Pick>\n modules: Maybe>\n}\n\nexport type SelectModulesMutationVariables = {\n moduleIDs: Array\n}\n\nexport type SelectModulesMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'selectModules'\n>\n\nexport type GetSurveyQueryVariables = {\n survey: Scalars['ID']\n}\n\nexport type GetSurveyQuery = { __typename?: 'Query' } & {\n survey: { __typename?: 'Survey' } & Pick<\n Survey,\n 'id' | 'content' | 'name' | 'version' | 'allowedAttempts'\n >\n loadSurveyData: Maybe<\n { __typename?: 'SurveyResult' } & Pick\n >\n surveyStats: { __typename?: 'SurveyStats' } & Pick<\n SurveyStats,\n 'id' | 'completions'\n >\n myParticipation: Maybe<\n { __typename?: 'Participant' } & Pick & {\n members: Maybe<\n Array<\n { __typename?: 'ParticipantMember' } & Pick<\n ParticipantMember,\n 'id'\n > & {\n person: Maybe<\n { __typename?: 'Person' } & Pick<\n Person,\n 'id' | 'firstName'\n > & {\n gender: Maybe<\n { __typename?: 'Gender' } & Pick\n >\n }\n >\n participantMemberType: Maybe<\n { __typename?: 'ParticipantMemberType' } & Pick<\n ParticipantMemberType,\n 'id' | 'name'\n >\n >\n }\n >\n >\n }\n >\n}\n\nexport type GetPlainSurveyQueryVariables = {\n survey: Scalars['ID']\n}\n\nexport type GetPlainSurveyQuery = { __typename?: 'Query' } & {\n survey: { __typename?: 'Survey' } & Pick<\n Survey,\n 'id' | 'content' | 'name' | 'version'\n >\n}\n\nexport type SaveSurveyMutationVariables = {\n surveyVersionID: Scalars['ID']\n data: Scalars['String']\n completed: Scalars['Boolean']\n}\n\nexport type SaveSurveyMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'saveSurveyData'\n>\n\nexport type FinishModuleMutationVariables = {\n moduleID: Scalars['ID']\n}\n\nexport type FinishModuleMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'moduleComplete'\n>\n\nexport type AdminDashboardQueryVariables = {}\n\nexport type AdminDashboardQuery = { __typename?: 'Query' } & {\n users: Array<\n { __typename?: 'User' } & Pick & {\n userType: Maybe<\n { __typename?: 'UserType' } & Pick\n >\n person: Maybe<{ __typename?: 'Person' } & Pick>\n participant: Maybe<\n { __typename?: 'Participant' } & Pick<\n Participant,\n 'id' | 'moduleType' | 'data'\n > & {\n members: Maybe<\n Array<\n { __typename?: 'ParticipantMember' } & {\n person: Maybe<\n { __typename?: 'Person' } & Pick<\n Person,\n 'firstName' | 'lastName'\n > & {\n gender: Maybe<\n { __typename?: 'Gender' } & Pick<\n Gender,\n 'id' | 'name'\n >\n >\n }\n >\n participantMemberType: Maybe<\n { __typename?: 'ParticipantMemberType' } & Pick<\n ParticipantMemberType,\n 'id' | 'name'\n >\n >\n }\n >\n >\n }\n >\n goals: Maybe<\n Array<\n { __typename?: 'Goal' } & Pick<\n Goal,\n 'id' | 'completed' | 'name' | 'description'\n > & {\n module: { __typename?: 'Module' } & Pick\n }\n >\n >\n modulesStatus: Maybe<\n Array<\n { __typename?: 'ModuleStatus' } & Pick<\n ModuleStatus,\n 'id' | 'completed' | 'selected' | 'unlocked' | 'locked_in'\n > & {\n module: Maybe<\n { __typename?: 'Module' } & Pick\n >\n }\n >\n >\n surveysStats: Array<\n Maybe<\n { __typename?: 'SurveyStats' } & Pick<\n SurveyStats,\n 'id' | 'completions' | 'surveyID'\n >\n >\n >\n }\n >\n}\n\nexport type GetModuleQueryVariables = {\n id: Scalars['ID']\n}\n\nexport type GetModuleQuery = { __typename?: 'Query' } & {\n whoami: Maybe<{ __typename?: 'User' } & Pick>\n module: Maybe<{ __typename?: 'Module' } & ModuleUpdateFieldsFragment>\n}\n\nexport type UpdateModuleMutationVariables = {\n id: Scalars['ID']\n changes: UpdateModuleInput\n}\n\nexport type UpdateModuleMutation = { __typename?: 'Mutation' } & {\n updateModule: Maybe<{ __typename?: 'Module' } & ModuleUpdateFieldsFragment>\n}\n\nexport type GetAllModulesQueryVariables = {}\n\nexport type GetAllModulesQuery = { __typename?: 'Query' } & {\n whoami: Maybe<{ __typename?: 'User' } & Pick>\n modules: Maybe>\n}\n\nexport type GetPageQueryVariables = {\n id: Scalars['ID']\n}\n\nexport type GetPageQuery = { __typename?: 'Query' } & {\n whoami: Maybe<{ __typename?: 'User' } & Pick>\n page: Maybe<{ __typename?: 'Page' } & PageDataFragment>\n}\n\nexport type UpdatePageMutationVariables = {\n id: Scalars['ID']\n page: UpdatePageInput\n}\n\nexport type UpdatePageMutation = { __typename?: 'Mutation' } & {\n updatePage: Maybe<{ __typename?: 'Page' } & PageDataFragment>\n}\n\nexport type GetAllPagesQueryVariables = {}\n\nexport type GetAllPagesQuery = { __typename?: 'Query' } & {\n whoami: Maybe<{ __typename?: 'User' } & Pick>\n pages: Maybe>>\n}\n\nexport type AdminFieldsFragment = { __typename?: 'Survey' } & Pick<\n Survey,\n 'id' | 'allowedAttempts' | 'content' | 'name' | 'protected'\n>\n\nexport type GetAdminSurveyFieldsQueryVariables = {\n id: Scalars['ID']\n}\n\nexport type GetAdminSurveyFieldsQuery = { __typename?: 'Query' } & {\n whoami: Maybe<{ __typename?: 'User' } & Pick>\n survey: { __typename?: 'Survey' } & AdminFieldsFragment\n}\n\nexport type UpdateSurveyMutationVariables = {\n id: Scalars['ID']\n survey: UpdateSurveyInput\n}\n\nexport type UpdateSurveyMutation = { __typename?: 'Mutation' } & {\n updateSurvey: Maybe<{ __typename?: 'Survey' } & AdminFieldsFragment>\n}\n\nexport type GetAllSurveysQueryVariables = {}\n\nexport type GetAllSurveysQuery = { __typename?: 'Query' } & {\n whoami: Maybe<{ __typename?: 'User' } & Pick>\n surveys: Maybe<\n Array<\n Maybe<{ __typename?: 'Survey' } & Pick>\n >\n >\n}\n\nexport type FactsheetUserDashboardQueryVariables = {\n surveyID: Scalars['ID']\n}\n\nexport type FactsheetUserDashboardQuery = { __typename?: 'Query' } & {\n whoami: Maybe<\n { __typename?: 'User' } & Pick & {\n person: Maybe<\n { __typename?: 'Person' } & Pick\n >\n }\n >\n surveyStats: { __typename?: 'SurveyStats' } & Pick<\n SurveyStats,\n 'id' | 'completions'\n >\n modulesStatus: Maybe<\n Array<\n { __typename?: 'ModuleStatus' } & Pick<\n ModuleStatus,\n 'id' | 'selected' | 'unlocked'\n > & {\n module: Maybe<{ __typename?: 'Module' } & Pick>\n }\n >\n >\n scheduledSurveys: Maybe<\n Array<{ __typename?: 'ScheduledSurvey' } & ScheduledSurveysFragment>\n >\n}\n\nexport type FactsheetModulesMutationVariables = {}\n\nexport type FactsheetModulesMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'selectModules'\n>\n\nexport type GetFactsheetContentQueryVariables = {\n moduleID: Scalars['ID']\n}\n\nexport type GetFactsheetContentQuery = { __typename?: 'Query' } & {\n module: Maybe<\n { __typename?: 'Module' } & Pick\n >\n}\n\nexport type GetFeedbackQueryVariables = {\n password?: Maybe\n}\n\nexport type GetFeedbackQuery = { __typename?: 'Query' } & {\n feedbackResult: Maybe<\n { __typename?: 'FeedbackResult' } & Pick\n >\n}\n\nexport type GetSettingsQueryVariables = {}\n\nexport type GetSettingsQuery = { __typename?: 'Query' } & {\n getSettings: Maybe<\n Array>>\n >\n}\n\nexport type SendResetEmailMutationVariables = {\n email: Scalars['String']\n}\n\nexport type SendResetEmailMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'resetPasswordEmail'\n>\n\nexport type GetMyParticipationQueryVariables = {\n surveyID: Scalars['ID']\n}\n\nexport type GetMyParticipationQuery = { __typename?: 'Query' } & {\n whoami: Maybe<\n { __typename?: 'User' } & Pick & {\n person: Maybe<\n { __typename?: 'Person' } & Pick\n >\n }\n >\n surveyStats: { __typename?: 'SurveyStats' } & Pick<\n SurveyStats,\n 'id' | 'completions'\n >\n modulesStatus: Maybe<\n Array<{ __typename?: 'ModuleStatus' } & Pick>\n >\n scheduledSurveys: Maybe<\n Array<{ __typename?: 'ScheduledSurvey' } & ScheduledSurveysFragment>\n >\n}\n\nexport type GetModuleStatusQueryVariables = {\n moduleID: Scalars['ID']\n}\n\nexport type GetModuleStatusQuery = { __typename?: 'Query' } & {\n moduleStatus: Maybe<\n { __typename?: 'ModuleStatus' } & Pick<\n ModuleStatus,\n 'data' | 'completed'\n > & {\n module: Maybe<\n { __typename?: 'Module' } & Pick\n >\n }\n >\n}\n\nexport type SaveModuleMutationVariables = {\n moduleID: Scalars['ID']\n data: Scalars['String']\n}\n\nexport type SaveModuleMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'saveModuleData'\n>\n\nexport type SetGoalMutationVariables = {\n goal?: Maybe\n}\n\nexport type SetGoalMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'setGoal'\n>\n\nexport type OptOutMutationVariables = {}\n\nexport type OptOutMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'optOut'\n>\n\nexport type SubmitRegistrationMutationVariables = {\n user: RegisterUser\n}\n\nexport type SubmitRegistrationMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'registerUser'\n>\n\nexport type ResetPasswordMutationVariables = {\n current: Scalars['String']\n newPassword: Scalars['String']\n}\n\nexport type ResetPasswordMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'resetPassword'\n>\n\nexport type ResetPasswordTokenMutationVariables = {\n token: Scalars['String']\n newPassword: Scalars['String']\n}\n\nexport type ResetPasswordTokenMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'resetPasswordToken'\n>\n\nexport type VerifyAccountMutationVariables = {\n token: Scalars['String']\n}\n\nexport type VerifyAccountMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'verifyAccount'\n>\n\nexport type GetWhoamiQueryVariables = {}\n\nexport type GetWhoamiQuery = { __typename?: 'Query' } & {\n whoami: Maybe<\n { __typename?: 'User' } & Pick & {\n userType: Maybe<\n { __typename?: 'UserType' } & Pick\n >\n }\n >\n myParticipation: Maybe<\n { __typename?: 'Participant' } & Pick\n >\n}\n\nexport type ScheduledSurveysFragment = {\n __typename?: 'ScheduledSurvey'\n} & Pick & {\n survey: { __typename?: 'Survey' } & Pick\n }\n\nexport type ModuleDataFragment = { __typename?: 'Module' } & Pick<\n Module,\n 'id' | 'description' | 'imageUrl' | 'name' | 'number' | 'type'\n>\n\nexport type ModuleUpdateFieldsFragment = { __typename?: 'Module' } & Pick<\n Module,\n 'id' | 'name' | 'content' | 'description' | 'imageUrl'\n>\n\nexport type PageDataFragment = { __typename?: 'Page' } & Pick<\n Page,\n 'id' | 'content' | 'menuName' | 'route' | 'showInMenu'\n>\n\nexport type EventLogMutationVariables = {\n name: Scalars['String']\n message: Scalars['String']\n}\n\nexport type EventLogMutation = { __typename?: 'Mutation' } & Pick<\n Mutation,\n 'logEvent'\n>\n\nexport const AdminFieldsFragmentDoc = gql`\n fragment adminFields on Survey {\n id\n allowedAttempts\n content\n name\n protected\n }\n`\nexport const ScheduledSurveysFragmentDoc = gql`\n fragment scheduledSurveys on ScheduledSurvey {\n id\n survey {\n id\n name\n }\n }\n`\nexport const ModuleDataFragmentDoc = gql`\n fragment moduleData on Module {\n id\n description\n imageUrl\n name\n number\n type\n }\n`\nexport const ModuleUpdateFieldsFragmentDoc = gql`\n fragment moduleUpdateFields on Module {\n id\n name\n content\n description\n imageUrl\n }\n`\nexport const PageDataFragmentDoc = gql`\n fragment pageData on Page {\n id\n content\n menuName\n route\n showInMenu\n }\n`\nexport const GetMyGoalsDocument = gql`\n query GetMyGoals {\n modulesStatus {\n id\n position\n module {\n id\n }\n }\n goals {\n id\n completed\n description\n module {\n id\n name\n }\n }\n }\n`\n\n/**\n * __useGetMyGoalsQuery__\n *\n * To run a query within a React component, call `useGetMyGoalsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyGoalsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyGoalsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetMyGoalsQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetMyGoalsQuery,\n GetMyGoalsQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetMyGoalsDocument,\n baseOptions,\n )\n}\nexport function useGetMyGoalsLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetMyGoalsQuery,\n GetMyGoalsQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetMyGoalsQuery,\n GetMyGoalsQueryVariables\n >(GetMyGoalsDocument, baseOptions)\n}\nexport type GetMyGoalsQueryHookResult = ReturnType\nexport type GetMyGoalsLazyQueryHookResult = ReturnType<\n typeof useGetMyGoalsLazyQuery\n>\nexport type GetMyGoalsQueryResult = ApolloReactCommon.QueryResult<\n GetMyGoalsQuery,\n GetMyGoalsQueryVariables\n>\nexport const SetGoalStatusDocument = gql`\n mutation setGoalStatus($goalID: ID!, $status: GoalStatus!) {\n setGoalStatus(goalID: $goalID, status: $status)\n }\n`\nexport type SetGoalStatusMutationFn = ApolloReactCommon.MutationFunction<\n SetGoalStatusMutation,\n SetGoalStatusMutationVariables\n>\n\n/**\n * __useSetGoalStatusMutation__\n *\n * To run a mutation, you first call `useSetGoalStatusMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSetGoalStatusMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [setGoalStatusMutation, { data, loading, error }] = useSetGoalStatusMutation({\n * variables: {\n * goalID: // value for 'goalID'\n * status: // value for 'status'\n * },\n * });\n */\nexport function useSetGoalStatusMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SetGoalStatusMutation,\n SetGoalStatusMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SetGoalStatusMutation,\n SetGoalStatusMutationVariables\n >(SetGoalStatusDocument, baseOptions)\n}\nexport type SetGoalStatusMutationHookResult = ReturnType<\n typeof useSetGoalStatusMutation\n>\nexport type SetGoalStatusMutationResult = ApolloReactCommon.MutationResult<\n SetGoalStatusMutation\n>\nexport type SetGoalStatusMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SetGoalStatusMutation,\n SetGoalStatusMutationVariables\n>\nexport const DynamicHeaderLinksDocument = gql`\n query DynamicHeaderLinks {\n pages {\n id\n menuName\n route\n showInMenu\n }\n }\n`\n\n/**\n * __useDynamicHeaderLinksQuery__\n *\n * To run a query within a React component, call `useDynamicHeaderLinksQuery` and pass it any options that fit your needs.\n * When your component renders, `useDynamicHeaderLinksQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useDynamicHeaderLinksQuery({\n * variables: {\n * },\n * });\n */\nexport function useDynamicHeaderLinksQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n DynamicHeaderLinksQuery,\n DynamicHeaderLinksQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n DynamicHeaderLinksQuery,\n DynamicHeaderLinksQueryVariables\n >(DynamicHeaderLinksDocument, baseOptions)\n}\nexport function useDynamicHeaderLinksLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n DynamicHeaderLinksQuery,\n DynamicHeaderLinksQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n DynamicHeaderLinksQuery,\n DynamicHeaderLinksQueryVariables\n >(DynamicHeaderLinksDocument, baseOptions)\n}\nexport type DynamicHeaderLinksQueryHookResult = ReturnType<\n typeof useDynamicHeaderLinksQuery\n>\nexport type DynamicHeaderLinksLazyQueryHookResult = ReturnType<\n typeof useDynamicHeaderLinksLazyQuery\n>\nexport type DynamicHeaderLinksQueryResult = ApolloReactCommon.QueryResult<\n DynamicHeaderLinksQuery,\n DynamicHeaderLinksQueryVariables\n>\nexport const LoadUserSurveyDataDocument = gql`\n query loadUserSurveyData($userID: ID!, $surveyID: ID!) {\n loadUserSurveyData(userID: $userID, surveyID: $surveyID) {\n id\n completed\n data\n }\n }\n`\n\n/**\n * __useLoadUserSurveyDataQuery__\n *\n * To run a query within a React component, call `useLoadUserSurveyDataQuery` and pass it any options that fit your needs.\n * When your component renders, `useLoadUserSurveyDataQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useLoadUserSurveyDataQuery({\n * variables: {\n * userID: // value for 'userID'\n * surveyID: // value for 'surveyID'\n * },\n * });\n */\nexport function useLoadUserSurveyDataQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n LoadUserSurveyDataQuery,\n LoadUserSurveyDataQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n LoadUserSurveyDataQuery,\n LoadUserSurveyDataQueryVariables\n >(LoadUserSurveyDataDocument, baseOptions)\n}\nexport function useLoadUserSurveyDataLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n LoadUserSurveyDataQuery,\n LoadUserSurveyDataQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n LoadUserSurveyDataQuery,\n LoadUserSurveyDataQueryVariables\n >(LoadUserSurveyDataDocument, baseOptions)\n}\nexport type LoadUserSurveyDataQueryHookResult = ReturnType<\n typeof useLoadUserSurveyDataQuery\n>\nexport type LoadUserSurveyDataLazyQueryHookResult = ReturnType<\n typeof useLoadUserSurveyDataLazyQuery\n>\nexport type LoadUserSurveyDataQueryResult = ApolloReactCommon.QueryResult<\n LoadUserSurveyDataQuery,\n LoadUserSurveyDataQueryVariables\n>\nexport const GetMyModulesDocument = gql`\n query GetMyModules {\n modulesStatus {\n id\n position\n completed\n unlocked\n selected\n module {\n ...moduleData\n }\n }\n }\n ${ModuleDataFragmentDoc}\n`\n\n/**\n * __useGetMyModulesQuery__\n *\n * To run a query within a React component, call `useGetMyModulesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyModulesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyModulesQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetMyModulesQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetMyModulesQuery,\n GetMyModulesQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetMyModulesQuery,\n GetMyModulesQueryVariables\n >(GetMyModulesDocument, baseOptions)\n}\nexport function useGetMyModulesLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetMyModulesQuery,\n GetMyModulesQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetMyModulesQuery,\n GetMyModulesQueryVariables\n >(GetMyModulesDocument, baseOptions)\n}\nexport type GetMyModulesQueryHookResult = ReturnType<\n typeof useGetMyModulesQuery\n>\nexport type GetMyModulesLazyQueryHookResult = ReturnType<\n typeof useGetMyModulesLazyQuery\n>\nexport type GetMyModulesQueryResult = ApolloReactCommon.QueryResult<\n GetMyModulesQuery,\n GetMyModulesQueryVariables\n>\nexport const GetUserModulesDocument = gql`\n query getUserModules {\n moduleRecommendations {\n id\n }\n modules {\n ...moduleData\n }\n }\n ${ModuleDataFragmentDoc}\n`\n\n/**\n * __useGetUserModulesQuery__\n *\n * To run a query within a React component, call `useGetUserModulesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetUserModulesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetUserModulesQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetUserModulesQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetUserModulesQuery,\n GetUserModulesQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetUserModulesQuery,\n GetUserModulesQueryVariables\n >(GetUserModulesDocument, baseOptions)\n}\nexport function useGetUserModulesLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetUserModulesQuery,\n GetUserModulesQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetUserModulesQuery,\n GetUserModulesQueryVariables\n >(GetUserModulesDocument, baseOptions)\n}\nexport type GetUserModulesQueryHookResult = ReturnType<\n typeof useGetUserModulesQuery\n>\nexport type GetUserModulesLazyQueryHookResult = ReturnType<\n typeof useGetUserModulesLazyQuery\n>\nexport type GetUserModulesQueryResult = ApolloReactCommon.QueryResult<\n GetUserModulesQuery,\n GetUserModulesQueryVariables\n>\nexport const SelectModulesDocument = gql`\n mutation selectModules($moduleIDs: [ID!]!) {\n selectModules(moduleIDs: $moduleIDs)\n }\n`\nexport type SelectModulesMutationFn = ApolloReactCommon.MutationFunction<\n SelectModulesMutation,\n SelectModulesMutationVariables\n>\n\n/**\n * __useSelectModulesMutation__\n *\n * To run a mutation, you first call `useSelectModulesMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSelectModulesMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [selectModulesMutation, { data, loading, error }] = useSelectModulesMutation({\n * variables: {\n * moduleIDs: // value for 'moduleIDs'\n * },\n * });\n */\nexport function useSelectModulesMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SelectModulesMutation,\n SelectModulesMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SelectModulesMutation,\n SelectModulesMutationVariables\n >(SelectModulesDocument, baseOptions)\n}\nexport type SelectModulesMutationHookResult = ReturnType<\n typeof useSelectModulesMutation\n>\nexport type SelectModulesMutationResult = ApolloReactCommon.MutationResult<\n SelectModulesMutation\n>\nexport type SelectModulesMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SelectModulesMutation,\n SelectModulesMutationVariables\n>\nexport const GetSurveyDocument = gql`\n query getSurvey($survey: ID!) {\n survey(id: $survey) {\n id\n content\n name\n version\n allowedAttempts\n }\n loadSurveyData(id: $survey) {\n id\n data\n }\n surveyStats(surveyID: $survey) {\n id\n completions\n }\n myParticipation {\n id\n members {\n id\n person {\n id\n firstName\n gender {\n id\n code\n }\n }\n participantMemberType {\n id\n name\n }\n }\n }\n }\n`\n\n/**\n * __useGetSurveyQuery__\n *\n * To run a query within a React component, call `useGetSurveyQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetSurveyQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetSurveyQuery({\n * variables: {\n * survey: // value for 'survey'\n * },\n * });\n */\nexport function useGetSurveyQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetSurveyQuery,\n GetSurveyQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetSurveyDocument,\n baseOptions,\n )\n}\nexport function useGetSurveyLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetSurveyQuery,\n GetSurveyQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery(\n GetSurveyDocument,\n baseOptions,\n )\n}\nexport type GetSurveyQueryHookResult = ReturnType\nexport type GetSurveyLazyQueryHookResult = ReturnType<\n typeof useGetSurveyLazyQuery\n>\nexport type GetSurveyQueryResult = ApolloReactCommon.QueryResult<\n GetSurveyQuery,\n GetSurveyQueryVariables\n>\nexport const GetPlainSurveyDocument = gql`\n query getPlainSurvey($survey: ID!) {\n survey(id: $survey) {\n id\n content\n name\n version\n }\n }\n`\n\n/**\n * __useGetPlainSurveyQuery__\n *\n * To run a query within a React component, call `useGetPlainSurveyQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetPlainSurveyQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetPlainSurveyQuery({\n * variables: {\n * survey: // value for 'survey'\n * },\n * });\n */\nexport function useGetPlainSurveyQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetPlainSurveyQuery,\n GetPlainSurveyQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetPlainSurveyQuery,\n GetPlainSurveyQueryVariables\n >(GetPlainSurveyDocument, baseOptions)\n}\nexport function useGetPlainSurveyLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetPlainSurveyQuery,\n GetPlainSurveyQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetPlainSurveyQuery,\n GetPlainSurveyQueryVariables\n >(GetPlainSurveyDocument, baseOptions)\n}\nexport type GetPlainSurveyQueryHookResult = ReturnType<\n typeof useGetPlainSurveyQuery\n>\nexport type GetPlainSurveyLazyQueryHookResult = ReturnType<\n typeof useGetPlainSurveyLazyQuery\n>\nexport type GetPlainSurveyQueryResult = ApolloReactCommon.QueryResult<\n GetPlainSurveyQuery,\n GetPlainSurveyQueryVariables\n>\nexport const SaveSurveyDocument = gql`\n mutation saveSurvey(\n $surveyVersionID: ID!\n $data: String!\n $completed: Boolean!\n ) {\n saveSurveyData(\n surveyVersionID: $surveyVersionID\n data: $data\n completed: $completed\n )\n }\n`\nexport type SaveSurveyMutationFn = ApolloReactCommon.MutationFunction<\n SaveSurveyMutation,\n SaveSurveyMutationVariables\n>\n\n/**\n * __useSaveSurveyMutation__\n *\n * To run a mutation, you first call `useSaveSurveyMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSaveSurveyMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [saveSurveyMutation, { data, loading, error }] = useSaveSurveyMutation({\n * variables: {\n * surveyVersionID: // value for 'surveyVersionID'\n * data: // value for 'data'\n * completed: // value for 'completed'\n * },\n * });\n */\nexport function useSaveSurveyMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SaveSurveyMutation,\n SaveSurveyMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SaveSurveyMutation,\n SaveSurveyMutationVariables\n >(SaveSurveyDocument, baseOptions)\n}\nexport type SaveSurveyMutationHookResult = ReturnType<\n typeof useSaveSurveyMutation\n>\nexport type SaveSurveyMutationResult = ApolloReactCommon.MutationResult<\n SaveSurveyMutation\n>\nexport type SaveSurveyMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SaveSurveyMutation,\n SaveSurveyMutationVariables\n>\nexport const FinishModuleDocument = gql`\n mutation finishModule($moduleID: ID!) {\n moduleComplete(moduleID: $moduleID)\n }\n`\nexport type FinishModuleMutationFn = ApolloReactCommon.MutationFunction<\n FinishModuleMutation,\n FinishModuleMutationVariables\n>\n\n/**\n * __useFinishModuleMutation__\n *\n * To run a mutation, you first call `useFinishModuleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useFinishModuleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [finishModuleMutation, { data, loading, error }] = useFinishModuleMutation({\n * variables: {\n * moduleID: // value for 'moduleID'\n * },\n * });\n */\nexport function useFinishModuleMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n FinishModuleMutation,\n FinishModuleMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n FinishModuleMutation,\n FinishModuleMutationVariables\n >(FinishModuleDocument, baseOptions)\n}\nexport type FinishModuleMutationHookResult = ReturnType<\n typeof useFinishModuleMutation\n>\nexport type FinishModuleMutationResult = ApolloReactCommon.MutationResult<\n FinishModuleMutation\n>\nexport type FinishModuleMutationOptions = ApolloReactCommon.BaseMutationOptions<\n FinishModuleMutation,\n FinishModuleMutationVariables\n>\nexport const AdminDashboardDocument = gql`\n query AdminDashboard {\n users {\n id\n email\n verified\n userType {\n id\n name\n }\n person {\n firstName\n }\n participant {\n id\n members {\n person {\n firstName\n lastName\n gender {\n id\n name\n }\n }\n participantMemberType {\n id\n name\n }\n }\n moduleType\n data\n }\n goals {\n id\n completed\n module {\n id\n name\n }\n name\n description\n }\n modulesStatus {\n id\n completed\n selected\n unlocked\n locked_in\n module {\n id\n name\n }\n }\n surveysStats {\n id\n completions\n surveyID\n }\n }\n }\n`\n\n/**\n * __useAdminDashboardQuery__\n *\n * To run a query within a React component, call `useAdminDashboardQuery` and pass it any options that fit your needs.\n * When your component renders, `useAdminDashboardQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useAdminDashboardQuery({\n * variables: {\n * },\n * });\n */\nexport function useAdminDashboardQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n AdminDashboardQuery,\n AdminDashboardQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n AdminDashboardQuery,\n AdminDashboardQueryVariables\n >(AdminDashboardDocument, baseOptions)\n}\nexport function useAdminDashboardLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n AdminDashboardQuery,\n AdminDashboardQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n AdminDashboardQuery,\n AdminDashboardQueryVariables\n >(AdminDashboardDocument, baseOptions)\n}\nexport type AdminDashboardQueryHookResult = ReturnType<\n typeof useAdminDashboardQuery\n>\nexport type AdminDashboardLazyQueryHookResult = ReturnType<\n typeof useAdminDashboardLazyQuery\n>\nexport type AdminDashboardQueryResult = ApolloReactCommon.QueryResult<\n AdminDashboardQuery,\n AdminDashboardQueryVariables\n>\nexport const GetModuleDocument = gql`\n query GetModule($id: ID!) {\n whoami {\n id\n }\n module(id: $id) {\n ...moduleUpdateFields\n }\n }\n ${ModuleUpdateFieldsFragmentDoc}\n`\n\n/**\n * __useGetModuleQuery__\n *\n * To run a query within a React component, call `useGetModuleQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetModuleQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetModuleQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetModuleQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetModuleQuery,\n GetModuleQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetModuleDocument,\n baseOptions,\n )\n}\nexport function useGetModuleLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetModuleQuery,\n GetModuleQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery(\n GetModuleDocument,\n baseOptions,\n )\n}\nexport type GetModuleQueryHookResult = ReturnType\nexport type GetModuleLazyQueryHookResult = ReturnType<\n typeof useGetModuleLazyQuery\n>\nexport type GetModuleQueryResult = ApolloReactCommon.QueryResult<\n GetModuleQuery,\n GetModuleQueryVariables\n>\nexport const UpdateModuleDocument = gql`\n mutation UpdateModule($id: ID!, $changes: UpdateModuleInput!) {\n updateModule(id: $id, changes: $changes) {\n ...moduleUpdateFields\n }\n }\n ${ModuleUpdateFieldsFragmentDoc}\n`\nexport type UpdateModuleMutationFn = ApolloReactCommon.MutationFunction<\n UpdateModuleMutation,\n UpdateModuleMutationVariables\n>\n\n/**\n * __useUpdateModuleMutation__\n *\n * To run a mutation, you first call `useUpdateModuleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateModuleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateModuleMutation, { data, loading, error }] = useUpdateModuleMutation({\n * variables: {\n * id: // value for 'id'\n * changes: // value for 'changes'\n * },\n * });\n */\nexport function useUpdateModuleMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n UpdateModuleMutation,\n UpdateModuleMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n UpdateModuleMutation,\n UpdateModuleMutationVariables\n >(UpdateModuleDocument, baseOptions)\n}\nexport type UpdateModuleMutationHookResult = ReturnType<\n typeof useUpdateModuleMutation\n>\nexport type UpdateModuleMutationResult = ApolloReactCommon.MutationResult<\n UpdateModuleMutation\n>\nexport type UpdateModuleMutationOptions = ApolloReactCommon.BaseMutationOptions<\n UpdateModuleMutation,\n UpdateModuleMutationVariables\n>\nexport const GetAllModulesDocument = gql`\n query GetAllModules {\n whoami {\n id\n }\n modules {\n ...moduleData\n }\n }\n ${ModuleDataFragmentDoc}\n`\n\n/**\n * __useGetAllModulesQuery__\n *\n * To run a query within a React component, call `useGetAllModulesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetAllModulesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetAllModulesQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetAllModulesQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetAllModulesQuery,\n GetAllModulesQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetAllModulesQuery,\n GetAllModulesQueryVariables\n >(GetAllModulesDocument, baseOptions)\n}\nexport function useGetAllModulesLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetAllModulesQuery,\n GetAllModulesQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetAllModulesQuery,\n GetAllModulesQueryVariables\n >(GetAllModulesDocument, baseOptions)\n}\nexport type GetAllModulesQueryHookResult = ReturnType<\n typeof useGetAllModulesQuery\n>\nexport type GetAllModulesLazyQueryHookResult = ReturnType<\n typeof useGetAllModulesLazyQuery\n>\nexport type GetAllModulesQueryResult = ApolloReactCommon.QueryResult<\n GetAllModulesQuery,\n GetAllModulesQueryVariables\n>\nexport const GetPageDocument = gql`\n query GetPage($id: ID!) {\n whoami {\n id\n }\n page(id: $id) {\n ...pageData\n }\n }\n ${PageDataFragmentDoc}\n`\n\n/**\n * __useGetPageQuery__\n *\n * To run a query within a React component, call `useGetPageQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetPageQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetPageQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetPageQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetPageQuery,\n GetPageQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetPageDocument,\n baseOptions,\n )\n}\nexport function useGetPageLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetPageQuery,\n GetPageQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery(\n GetPageDocument,\n baseOptions,\n )\n}\nexport type GetPageQueryHookResult = ReturnType\nexport type GetPageLazyQueryHookResult = ReturnType\nexport type GetPageQueryResult = ApolloReactCommon.QueryResult<\n GetPageQuery,\n GetPageQueryVariables\n>\nexport const UpdatePageDocument = gql`\n mutation UpdatePage($id: ID!, $page: UpdatePageInput!) {\n updatePage(id: $id, page: $page) {\n ...pageData\n }\n }\n ${PageDataFragmentDoc}\n`\nexport type UpdatePageMutationFn = ApolloReactCommon.MutationFunction<\n UpdatePageMutation,\n UpdatePageMutationVariables\n>\n\n/**\n * __useUpdatePageMutation__\n *\n * To run a mutation, you first call `useUpdatePageMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdatePageMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updatePageMutation, { data, loading, error }] = useUpdatePageMutation({\n * variables: {\n * id: // value for 'id'\n * page: // value for 'page'\n * },\n * });\n */\nexport function useUpdatePageMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n UpdatePageMutation,\n UpdatePageMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n UpdatePageMutation,\n UpdatePageMutationVariables\n >(UpdatePageDocument, baseOptions)\n}\nexport type UpdatePageMutationHookResult = ReturnType<\n typeof useUpdatePageMutation\n>\nexport type UpdatePageMutationResult = ApolloReactCommon.MutationResult<\n UpdatePageMutation\n>\nexport type UpdatePageMutationOptions = ApolloReactCommon.BaseMutationOptions<\n UpdatePageMutation,\n UpdatePageMutationVariables\n>\nexport const GetAllPagesDocument = gql`\n query GetAllPages {\n whoami {\n id\n }\n pages {\n ...pageData\n }\n }\n ${PageDataFragmentDoc}\n`\n\n/**\n * __useGetAllPagesQuery__\n *\n * To run a query within a React component, call `useGetAllPagesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetAllPagesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetAllPagesQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetAllPagesQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetAllPagesQuery,\n GetAllPagesQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetAllPagesDocument,\n baseOptions,\n )\n}\nexport function useGetAllPagesLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetAllPagesQuery,\n GetAllPagesQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetAllPagesQuery,\n GetAllPagesQueryVariables\n >(GetAllPagesDocument, baseOptions)\n}\nexport type GetAllPagesQueryHookResult = ReturnType\nexport type GetAllPagesLazyQueryHookResult = ReturnType<\n typeof useGetAllPagesLazyQuery\n>\nexport type GetAllPagesQueryResult = ApolloReactCommon.QueryResult<\n GetAllPagesQuery,\n GetAllPagesQueryVariables\n>\nexport const GetAdminSurveyFieldsDocument = gql`\n query GetAdminSurveyFields($id: ID!) {\n whoami {\n id\n }\n survey(id: $id) {\n ...adminFields\n }\n }\n ${AdminFieldsFragmentDoc}\n`\n\n/**\n * __useGetAdminSurveyFieldsQuery__\n *\n * To run a query within a React component, call `useGetAdminSurveyFieldsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetAdminSurveyFieldsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetAdminSurveyFieldsQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetAdminSurveyFieldsQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetAdminSurveyFieldsQuery,\n GetAdminSurveyFieldsQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetAdminSurveyFieldsQuery,\n GetAdminSurveyFieldsQueryVariables\n >(GetAdminSurveyFieldsDocument, baseOptions)\n}\nexport function useGetAdminSurveyFieldsLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetAdminSurveyFieldsQuery,\n GetAdminSurveyFieldsQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetAdminSurveyFieldsQuery,\n GetAdminSurveyFieldsQueryVariables\n >(GetAdminSurveyFieldsDocument, baseOptions)\n}\nexport type GetAdminSurveyFieldsQueryHookResult = ReturnType<\n typeof useGetAdminSurveyFieldsQuery\n>\nexport type GetAdminSurveyFieldsLazyQueryHookResult = ReturnType<\n typeof useGetAdminSurveyFieldsLazyQuery\n>\nexport type GetAdminSurveyFieldsQueryResult = ApolloReactCommon.QueryResult<\n GetAdminSurveyFieldsQuery,\n GetAdminSurveyFieldsQueryVariables\n>\nexport const UpdateSurveyDocument = gql`\n mutation UpdateSurvey($id: ID!, $survey: UpdateSurveyInput!) {\n updateSurvey(id: $id, survey: $survey) {\n ...adminFields\n }\n }\n ${AdminFieldsFragmentDoc}\n`\nexport type UpdateSurveyMutationFn = ApolloReactCommon.MutationFunction<\n UpdateSurveyMutation,\n UpdateSurveyMutationVariables\n>\n\n/**\n * __useUpdateSurveyMutation__\n *\n * To run a mutation, you first call `useUpdateSurveyMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateSurveyMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateSurveyMutation, { data, loading, error }] = useUpdateSurveyMutation({\n * variables: {\n * id: // value for 'id'\n * survey: // value for 'survey'\n * },\n * });\n */\nexport function useUpdateSurveyMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n UpdateSurveyMutation,\n UpdateSurveyMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n UpdateSurveyMutation,\n UpdateSurveyMutationVariables\n >(UpdateSurveyDocument, baseOptions)\n}\nexport type UpdateSurveyMutationHookResult = ReturnType<\n typeof useUpdateSurveyMutation\n>\nexport type UpdateSurveyMutationResult = ApolloReactCommon.MutationResult<\n UpdateSurveyMutation\n>\nexport type UpdateSurveyMutationOptions = ApolloReactCommon.BaseMutationOptions<\n UpdateSurveyMutation,\n UpdateSurveyMutationVariables\n>\nexport const GetAllSurveysDocument = gql`\n query GetAllSurveys {\n whoami {\n id\n }\n surveys {\n id\n name\n version\n }\n }\n`\n\n/**\n * __useGetAllSurveysQuery__\n *\n * To run a query within a React component, call `useGetAllSurveysQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetAllSurveysQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetAllSurveysQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetAllSurveysQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetAllSurveysQuery,\n GetAllSurveysQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetAllSurveysQuery,\n GetAllSurveysQueryVariables\n >(GetAllSurveysDocument, baseOptions)\n}\nexport function useGetAllSurveysLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetAllSurveysQuery,\n GetAllSurveysQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetAllSurveysQuery,\n GetAllSurveysQueryVariables\n >(GetAllSurveysDocument, baseOptions)\n}\nexport type GetAllSurveysQueryHookResult = ReturnType<\n typeof useGetAllSurveysQuery\n>\nexport type GetAllSurveysLazyQueryHookResult = ReturnType<\n typeof useGetAllSurveysLazyQuery\n>\nexport type GetAllSurveysQueryResult = ApolloReactCommon.QueryResult<\n GetAllSurveysQuery,\n GetAllSurveysQueryVariables\n>\nexport const FactsheetUserDashboardDocument = gql`\n query FactsheetUserDashboard($surveyID: ID!) {\n whoami {\n id\n person {\n id\n firstName\n }\n }\n surveyStats(surveyID: $surveyID) {\n id\n completions\n }\n modulesStatus {\n id\n selected\n unlocked\n module {\n id\n name\n }\n }\n scheduledSurveys {\n ...scheduledSurveys\n }\n }\n ${ScheduledSurveysFragmentDoc}\n`\n\n/**\n * __useFactsheetUserDashboardQuery__\n *\n * To run a query within a React component, call `useFactsheetUserDashboardQuery` and pass it any options that fit your needs.\n * When your component renders, `useFactsheetUserDashboardQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useFactsheetUserDashboardQuery({\n * variables: {\n * surveyID: // value for 'surveyID'\n * },\n * });\n */\nexport function useFactsheetUserDashboardQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n FactsheetUserDashboardQuery,\n FactsheetUserDashboardQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n FactsheetUserDashboardQuery,\n FactsheetUserDashboardQueryVariables\n >(FactsheetUserDashboardDocument, baseOptions)\n}\nexport function useFactsheetUserDashboardLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n FactsheetUserDashboardQuery,\n FactsheetUserDashboardQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n FactsheetUserDashboardQuery,\n FactsheetUserDashboardQueryVariables\n >(FactsheetUserDashboardDocument, baseOptions)\n}\nexport type FactsheetUserDashboardQueryHookResult = ReturnType<\n typeof useFactsheetUserDashboardQuery\n>\nexport type FactsheetUserDashboardLazyQueryHookResult = ReturnType<\n typeof useFactsheetUserDashboardLazyQuery\n>\nexport type FactsheetUserDashboardQueryResult = ApolloReactCommon.QueryResult<\n FactsheetUserDashboardQuery,\n FactsheetUserDashboardQueryVariables\n>\nexport const FactsheetModulesDocument = gql`\n mutation FactsheetModules {\n selectModules(moduleIDs: [])\n }\n`\nexport type FactsheetModulesMutationFn = ApolloReactCommon.MutationFunction<\n FactsheetModulesMutation,\n FactsheetModulesMutationVariables\n>\n\n/**\n * __useFactsheetModulesMutation__\n *\n * To run a mutation, you first call `useFactsheetModulesMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useFactsheetModulesMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [factsheetModulesMutation, { data, loading, error }] = useFactsheetModulesMutation({\n * variables: {\n * },\n * });\n */\nexport function useFactsheetModulesMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n FactsheetModulesMutation,\n FactsheetModulesMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n FactsheetModulesMutation,\n FactsheetModulesMutationVariables\n >(FactsheetModulesDocument, baseOptions)\n}\nexport type FactsheetModulesMutationHookResult = ReturnType<\n typeof useFactsheetModulesMutation\n>\nexport type FactsheetModulesMutationResult = ApolloReactCommon.MutationResult<\n FactsheetModulesMutation\n>\nexport type FactsheetModulesMutationOptions = ApolloReactCommon.BaseMutationOptions<\n FactsheetModulesMutation,\n FactsheetModulesMutationVariables\n>\nexport const GetFactsheetContentDocument = gql`\n query getFactsheetContent($moduleID: ID!) {\n module(id: $moduleID) {\n id\n name\n content\n }\n }\n`\n\n/**\n * __useGetFactsheetContentQuery__\n *\n * To run a query within a React component, call `useGetFactsheetContentQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetFactsheetContentQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetFactsheetContentQuery({\n * variables: {\n * moduleID: // value for 'moduleID'\n * },\n * });\n */\nexport function useGetFactsheetContentQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetFactsheetContentQuery,\n GetFactsheetContentQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetFactsheetContentQuery,\n GetFactsheetContentQueryVariables\n >(GetFactsheetContentDocument, baseOptions)\n}\nexport function useGetFactsheetContentLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetFactsheetContentQuery,\n GetFactsheetContentQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetFactsheetContentQuery,\n GetFactsheetContentQueryVariables\n >(GetFactsheetContentDocument, baseOptions)\n}\nexport type GetFactsheetContentQueryHookResult = ReturnType<\n typeof useGetFactsheetContentQuery\n>\nexport type GetFactsheetContentLazyQueryHookResult = ReturnType<\n typeof useGetFactsheetContentLazyQuery\n>\nexport type GetFactsheetContentQueryResult = ApolloReactCommon.QueryResult<\n GetFactsheetContentQuery,\n GetFactsheetContentQueryVariables\n>\nexport const GetFeedbackDocument = gql`\n query getFeedback($password: String) {\n feedbackResult(password: $password) {\n data\n }\n }\n`\n\n/**\n * __useGetFeedbackQuery__\n *\n * To run a query within a React component, call `useGetFeedbackQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetFeedbackQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetFeedbackQuery({\n * variables: {\n * password: // value for 'password'\n * },\n * });\n */\nexport function useGetFeedbackQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetFeedbackQuery,\n GetFeedbackQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetFeedbackDocument,\n baseOptions,\n )\n}\nexport function useGetFeedbackLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetFeedbackQuery,\n GetFeedbackQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetFeedbackQuery,\n GetFeedbackQueryVariables\n >(GetFeedbackDocument, baseOptions)\n}\nexport type GetFeedbackQueryHookResult = ReturnType\nexport type GetFeedbackLazyQueryHookResult = ReturnType<\n typeof useGetFeedbackLazyQuery\n>\nexport type GetFeedbackQueryResult = ApolloReactCommon.QueryResult<\n GetFeedbackQuery,\n GetFeedbackQueryVariables\n>\nexport const GetSettingsDocument = gql`\n query getSettings {\n getSettings {\n key\n value\n }\n }\n`\n\n/**\n * __useGetSettingsQuery__\n *\n * To run a query within a React component, call `useGetSettingsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetSettingsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetSettingsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetSettingsQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetSettingsQuery,\n GetSettingsQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetSettingsDocument,\n baseOptions,\n )\n}\nexport function useGetSettingsLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetSettingsQuery,\n GetSettingsQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetSettingsQuery,\n GetSettingsQueryVariables\n >(GetSettingsDocument, baseOptions)\n}\nexport type GetSettingsQueryHookResult = ReturnType\nexport type GetSettingsLazyQueryHookResult = ReturnType<\n typeof useGetSettingsLazyQuery\n>\nexport type GetSettingsQueryResult = ApolloReactCommon.QueryResult<\n GetSettingsQuery,\n GetSettingsQueryVariables\n>\nexport const SendResetEmailDocument = gql`\n mutation SendResetEmail($email: String!) {\n resetPasswordEmail(email: $email)\n }\n`\nexport type SendResetEmailMutationFn = ApolloReactCommon.MutationFunction<\n SendResetEmailMutation,\n SendResetEmailMutationVariables\n>\n\n/**\n * __useSendResetEmailMutation__\n *\n * To run a mutation, you first call `useSendResetEmailMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSendResetEmailMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [sendResetEmailMutation, { data, loading, error }] = useSendResetEmailMutation({\n * variables: {\n * email: // value for 'email'\n * },\n * });\n */\nexport function useSendResetEmailMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SendResetEmailMutation,\n SendResetEmailMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SendResetEmailMutation,\n SendResetEmailMutationVariables\n >(SendResetEmailDocument, baseOptions)\n}\nexport type SendResetEmailMutationHookResult = ReturnType<\n typeof useSendResetEmailMutation\n>\nexport type SendResetEmailMutationResult = ApolloReactCommon.MutationResult<\n SendResetEmailMutation\n>\nexport type SendResetEmailMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SendResetEmailMutation,\n SendResetEmailMutationVariables\n>\nexport const GetMyParticipationDocument = gql`\n query getMyParticipation($surveyID: ID!) {\n whoami {\n id\n person {\n id\n firstName\n }\n }\n surveyStats(surveyID: $surveyID) {\n id\n completions\n }\n modulesStatus {\n id\n }\n scheduledSurveys {\n ...scheduledSurveys\n }\n }\n ${ScheduledSurveysFragmentDoc}\n`\n\n/**\n * __useGetMyParticipationQuery__\n *\n * To run a query within a React component, call `useGetMyParticipationQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyParticipationQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyParticipationQuery({\n * variables: {\n * surveyID: // value for 'surveyID'\n * },\n * });\n */\nexport function useGetMyParticipationQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetMyParticipationQuery,\n GetMyParticipationQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetMyParticipationQuery,\n GetMyParticipationQueryVariables\n >(GetMyParticipationDocument, baseOptions)\n}\nexport function useGetMyParticipationLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetMyParticipationQuery,\n GetMyParticipationQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetMyParticipationQuery,\n GetMyParticipationQueryVariables\n >(GetMyParticipationDocument, baseOptions)\n}\nexport type GetMyParticipationQueryHookResult = ReturnType<\n typeof useGetMyParticipationQuery\n>\nexport type GetMyParticipationLazyQueryHookResult = ReturnType<\n typeof useGetMyParticipationLazyQuery\n>\nexport type GetMyParticipationQueryResult = ApolloReactCommon.QueryResult<\n GetMyParticipationQuery,\n GetMyParticipationQueryVariables\n>\nexport const GetModuleStatusDocument = gql`\n query getModuleStatus($moduleID: ID!) {\n moduleStatus(moduleID: $moduleID) {\n data\n completed\n module {\n id\n name\n content\n }\n }\n }\n`\n\n/**\n * __useGetModuleStatusQuery__\n *\n * To run a query within a React component, call `useGetModuleStatusQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetModuleStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetModuleStatusQuery({\n * variables: {\n * moduleID: // value for 'moduleID'\n * },\n * });\n */\nexport function useGetModuleStatusQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetModuleStatusQuery,\n GetModuleStatusQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery<\n GetModuleStatusQuery,\n GetModuleStatusQueryVariables\n >(GetModuleStatusDocument, baseOptions)\n}\nexport function useGetModuleStatusLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetModuleStatusQuery,\n GetModuleStatusQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery<\n GetModuleStatusQuery,\n GetModuleStatusQueryVariables\n >(GetModuleStatusDocument, baseOptions)\n}\nexport type GetModuleStatusQueryHookResult = ReturnType<\n typeof useGetModuleStatusQuery\n>\nexport type GetModuleStatusLazyQueryHookResult = ReturnType<\n typeof useGetModuleStatusLazyQuery\n>\nexport type GetModuleStatusQueryResult = ApolloReactCommon.QueryResult<\n GetModuleStatusQuery,\n GetModuleStatusQueryVariables\n>\nexport const SaveModuleDocument = gql`\n mutation saveModule($moduleID: ID!, $data: String!) {\n saveModuleData(moduleID: $moduleID, data: $data)\n }\n`\nexport type SaveModuleMutationFn = ApolloReactCommon.MutationFunction<\n SaveModuleMutation,\n SaveModuleMutationVariables\n>\n\n/**\n * __useSaveModuleMutation__\n *\n * To run a mutation, you first call `useSaveModuleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSaveModuleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [saveModuleMutation, { data, loading, error }] = useSaveModuleMutation({\n * variables: {\n * moduleID: // value for 'moduleID'\n * data: // value for 'data'\n * },\n * });\n */\nexport function useSaveModuleMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SaveModuleMutation,\n SaveModuleMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SaveModuleMutation,\n SaveModuleMutationVariables\n >(SaveModuleDocument, baseOptions)\n}\nexport type SaveModuleMutationHookResult = ReturnType<\n typeof useSaveModuleMutation\n>\nexport type SaveModuleMutationResult = ApolloReactCommon.MutationResult<\n SaveModuleMutation\n>\nexport type SaveModuleMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SaveModuleMutation,\n SaveModuleMutationVariables\n>\nexport const SetGoalDocument = gql`\n mutation setGoal($goal: SetGoalInput) {\n setGoal(goal: $goal)\n }\n`\nexport type SetGoalMutationFn = ApolloReactCommon.MutationFunction<\n SetGoalMutation,\n SetGoalMutationVariables\n>\n\n/**\n * __useSetGoalMutation__\n *\n * To run a mutation, you first call `useSetGoalMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSetGoalMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [setGoalMutation, { data, loading, error }] = useSetGoalMutation({\n * variables: {\n * goal: // value for 'goal'\n * },\n * });\n */\nexport function useSetGoalMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SetGoalMutation,\n SetGoalMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SetGoalMutation,\n SetGoalMutationVariables\n >(SetGoalDocument, baseOptions)\n}\nexport type SetGoalMutationHookResult = ReturnType\nexport type SetGoalMutationResult = ApolloReactCommon.MutationResult<\n SetGoalMutation\n>\nexport type SetGoalMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SetGoalMutation,\n SetGoalMutationVariables\n>\nexport const OptOutDocument = gql`\n mutation OptOut {\n optOut\n }\n`\nexport type OptOutMutationFn = ApolloReactCommon.MutationFunction<\n OptOutMutation,\n OptOutMutationVariables\n>\n\n/**\n * __useOptOutMutation__\n *\n * To run a mutation, you first call `useOptOutMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useOptOutMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [optOutMutation, { data, loading, error }] = useOptOutMutation({\n * variables: {\n * },\n * });\n */\nexport function useOptOutMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n OptOutMutation,\n OptOutMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation(\n OptOutDocument,\n baseOptions,\n )\n}\nexport type OptOutMutationHookResult = ReturnType\nexport type OptOutMutationResult = ApolloReactCommon.MutationResult<\n OptOutMutation\n>\nexport type OptOutMutationOptions = ApolloReactCommon.BaseMutationOptions<\n OptOutMutation,\n OptOutMutationVariables\n>\nexport const SubmitRegistrationDocument = gql`\n mutation submitRegistration($user: RegisterUser!) {\n registerUser(user: $user)\n }\n`\nexport type SubmitRegistrationMutationFn = ApolloReactCommon.MutationFunction<\n SubmitRegistrationMutation,\n SubmitRegistrationMutationVariables\n>\n\n/**\n * __useSubmitRegistrationMutation__\n *\n * To run a mutation, you first call `useSubmitRegistrationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSubmitRegistrationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [submitRegistrationMutation, { data, loading, error }] = useSubmitRegistrationMutation({\n * variables: {\n * user: // value for 'user'\n * },\n * });\n */\nexport function useSubmitRegistrationMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n SubmitRegistrationMutation,\n SubmitRegistrationMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n SubmitRegistrationMutation,\n SubmitRegistrationMutationVariables\n >(SubmitRegistrationDocument, baseOptions)\n}\nexport type SubmitRegistrationMutationHookResult = ReturnType<\n typeof useSubmitRegistrationMutation\n>\nexport type SubmitRegistrationMutationResult = ApolloReactCommon.MutationResult<\n SubmitRegistrationMutation\n>\nexport type SubmitRegistrationMutationOptions = ApolloReactCommon.BaseMutationOptions<\n SubmitRegistrationMutation,\n SubmitRegistrationMutationVariables\n>\nexport const ResetPasswordDocument = gql`\n mutation ResetPassword($current: String!, $newPassword: String!) {\n resetPassword(current: $current, newPassword: $newPassword)\n }\n`\nexport type ResetPasswordMutationFn = ApolloReactCommon.MutationFunction<\n ResetPasswordMutation,\n ResetPasswordMutationVariables\n>\n\n/**\n * __useResetPasswordMutation__\n *\n * To run a mutation, you first call `useResetPasswordMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useResetPasswordMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [resetPasswordMutation, { data, loading, error }] = useResetPasswordMutation({\n * variables: {\n * current: // value for 'current'\n * newPassword: // value for 'newPassword'\n * },\n * });\n */\nexport function useResetPasswordMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n ResetPasswordMutation,\n ResetPasswordMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n ResetPasswordMutation,\n ResetPasswordMutationVariables\n >(ResetPasswordDocument, baseOptions)\n}\nexport type ResetPasswordMutationHookResult = ReturnType<\n typeof useResetPasswordMutation\n>\nexport type ResetPasswordMutationResult = ApolloReactCommon.MutationResult<\n ResetPasswordMutation\n>\nexport type ResetPasswordMutationOptions = ApolloReactCommon.BaseMutationOptions<\n ResetPasswordMutation,\n ResetPasswordMutationVariables\n>\nexport const ResetPasswordTokenDocument = gql`\n mutation ResetPasswordToken($token: String!, $newPassword: String!) {\n resetPasswordToken(token: $token, newPassword: $newPassword)\n }\n`\nexport type ResetPasswordTokenMutationFn = ApolloReactCommon.MutationFunction<\n ResetPasswordTokenMutation,\n ResetPasswordTokenMutationVariables\n>\n\n/**\n * __useResetPasswordTokenMutation__\n *\n * To run a mutation, you first call `useResetPasswordTokenMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useResetPasswordTokenMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [resetPasswordTokenMutation, { data, loading, error }] = useResetPasswordTokenMutation({\n * variables: {\n * token: // value for 'token'\n * newPassword: // value for 'newPassword'\n * },\n * });\n */\nexport function useResetPasswordTokenMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n ResetPasswordTokenMutation,\n ResetPasswordTokenMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n ResetPasswordTokenMutation,\n ResetPasswordTokenMutationVariables\n >(ResetPasswordTokenDocument, baseOptions)\n}\nexport type ResetPasswordTokenMutationHookResult = ReturnType<\n typeof useResetPasswordTokenMutation\n>\nexport type ResetPasswordTokenMutationResult = ApolloReactCommon.MutationResult<\n ResetPasswordTokenMutation\n>\nexport type ResetPasswordTokenMutationOptions = ApolloReactCommon.BaseMutationOptions<\n ResetPasswordTokenMutation,\n ResetPasswordTokenMutationVariables\n>\nexport const VerifyAccountDocument = gql`\n mutation VerifyAccount($token: String!) {\n verifyAccount(token: $token)\n }\n`\nexport type VerifyAccountMutationFn = ApolloReactCommon.MutationFunction<\n VerifyAccountMutation,\n VerifyAccountMutationVariables\n>\n\n/**\n * __useVerifyAccountMutation__\n *\n * To run a mutation, you first call `useVerifyAccountMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useVerifyAccountMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [verifyAccountMutation, { data, loading, error }] = useVerifyAccountMutation({\n * variables: {\n * token: // value for 'token'\n * },\n * });\n */\nexport function useVerifyAccountMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n VerifyAccountMutation,\n VerifyAccountMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n VerifyAccountMutation,\n VerifyAccountMutationVariables\n >(VerifyAccountDocument, baseOptions)\n}\nexport type VerifyAccountMutationHookResult = ReturnType<\n typeof useVerifyAccountMutation\n>\nexport type VerifyAccountMutationResult = ApolloReactCommon.MutationResult<\n VerifyAccountMutation\n>\nexport type VerifyAccountMutationOptions = ApolloReactCommon.BaseMutationOptions<\n VerifyAccountMutation,\n VerifyAccountMutationVariables\n>\nexport const GetWhoamiDocument = gql`\n query getWhoami {\n whoami {\n id\n email\n userType {\n id\n name\n }\n }\n myParticipation {\n id\n moduleType\n }\n }\n`\n\n/**\n * __useGetWhoamiQuery__\n *\n * To run a query within a React component, call `useGetWhoamiQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWhoamiQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWhoamiQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetWhoamiQuery(\n baseOptions?: ApolloReactHooks.QueryHookOptions<\n GetWhoamiQuery,\n GetWhoamiQueryVariables\n >,\n) {\n return ApolloReactHooks.useQuery(\n GetWhoamiDocument,\n baseOptions,\n )\n}\nexport function useGetWhoamiLazyQuery(\n baseOptions?: ApolloReactHooks.LazyQueryHookOptions<\n GetWhoamiQuery,\n GetWhoamiQueryVariables\n >,\n) {\n return ApolloReactHooks.useLazyQuery(\n GetWhoamiDocument,\n baseOptions,\n )\n}\nexport type GetWhoamiQueryHookResult = ReturnType\nexport type GetWhoamiLazyQueryHookResult = ReturnType<\n typeof useGetWhoamiLazyQuery\n>\nexport type GetWhoamiQueryResult = ApolloReactCommon.QueryResult<\n GetWhoamiQuery,\n GetWhoamiQueryVariables\n>\nexport const EventLogDocument = gql`\n mutation eventLog($name: String!, $message: String!) {\n logEvent(name: $name, message: $message)\n }\n`\nexport type EventLogMutationFn = ApolloReactCommon.MutationFunction<\n EventLogMutation,\n EventLogMutationVariables\n>\n\n/**\n * __useEventLogMutation__\n *\n * To run a mutation, you first call `useEventLogMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useEventLogMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [eventLogMutation, { data, loading, error }] = useEventLogMutation({\n * variables: {\n * name: // value for 'name'\n * message: // value for 'message'\n * },\n * });\n */\nexport function useEventLogMutation(\n baseOptions?: ApolloReactHooks.MutationHookOptions<\n EventLogMutation,\n EventLogMutationVariables\n >,\n) {\n return ApolloReactHooks.useMutation<\n EventLogMutation,\n EventLogMutationVariables\n >(EventLogDocument, baseOptions)\n}\nexport type EventLogMutationHookResult = ReturnType\nexport type EventLogMutationResult = ApolloReactCommon.MutationResult<\n EventLogMutation\n>\nexport type EventLogMutationOptions = ApolloReactCommon.BaseMutationOptions<\n EventLogMutation,\n EventLogMutationVariables\n>\n","export * from './codegen'\n","import React, { useState } from 'react'\nimport { Box, CircularProgress, LinearProgress } from '@material-ui/core'\nimport { CircularProgressProps } from '@material-ui/core/CircularProgress'\nimport { LinearProgressProps } from '@material-ui/core/LinearProgress'\nimport { useEffect } from 'react'\n\ninterface UseBusyProps {\n delayMs: number\n isBusy: boolean\n}\n\nfunction useBusyTrigger(isBusy: boolean, delayMs: number) {\n const [trigger, setTrigger] = useState(false)\n\n useEffect(() => {\n function tick() {\n setTrigger(true)\n }\n if (isBusy) {\n let id = setTimeout(tick, delayMs)\n return () => clearTimeout(id)\n } else {\n setTrigger(false)\n }\n }, [isBusy, delayMs])\n\n return trigger\n}\n\nexport const LoadingSpinner = (props: CircularProgressProps) => (\n \n \n \n)\n\nexport const FixedLinearLoading = (props: LinearProgressProps) => (\n \n \n \n)\n\nexport function BusyLinear({\n isBusy,\n delayMs,\n ...otherProps\n}: LinearProgressProps & UseBusyProps) {\n const trigger = useBusyTrigger(isBusy, delayMs)\n\n return trigger && isBusy ? : null\n}\n\nexport function BusyCircular({\n isBusy,\n delayMs,\n ...otherProps\n}: CircularProgressProps & UseBusyProps) {\n const trigger = useBusyTrigger(isBusy, delayMs)\n\n return trigger && isBusy ? : null\n}\n","import React, { ChangeEventHandler, FunctionComponent, useContext } from 'react'\nimport {\n Box,\n Card,\n CardContent,\n FormControlLabel,\n Radio,\n RadioGroup,\n Typography,\n} from '@material-ui/core'\nimport { ModuleControlContext } from '../../pages'\nimport { confidenceQuestions } from '.'\n\ninterface ConfidenceQuestionProps {\n id: string\n begin: boolean\n}\n\nexport enum ConfidenceValues {\n notConfident = 'notConfident',\n littleConfident = 'littleConfident',\n somewhatConfident = 'somewhatConfident',\n veryConfident = 'veryConfident',\n}\n\nexport const ConfidenceQuestion: FunctionComponent = (\n props,\n) => {\n const context = useContext(ModuleControlContext)\n const key = `Confidence_${props.id}_${props.begin ? 'begin' : 'end'}`\n const keyData = context.moduleData?.[key] ?? ''\n const question = confidenceQuestions.find((value) => value.value === props.id)\n\n const handleChange: ChangeEventHandler = (event) => {\n context.Update({\n ...context.moduleData,\n [key]: event.currentTarget.value,\n })\n }\n\n return (\n \n \n \n \n {props.begin\n ? \"Next, before you complete this module, we'd like to know how confident you feel in this area of parenting. We'll ask you this question again at the end of the module.\"\n : \"Now that you've completed this module, we'd like to know how confident you feel in this area of parenting your teenager.\"}\n \n {question?.label}\n \n }\n value={ConfidenceValues.notConfident}\n label=\"Not at all confident\"\n />\n }\n label=\"A little confident\"\n />\n }\n label=\"Somewhat confident\"\n />\n }\n label=\"Very confident\"\n />\n \n \n \n \n )\n}\n","import React, { forwardRef } from 'react'\nimport { Link } from 'react-navi'\nimport { LinkProps } from 'react-navi/dist/types/Link'\n\nexport const AdapterLink = forwardRef(\n (props, ref) => ,\n)\n","import * as Sentry from '@sentry/browser'\nimport React, { Component, ErrorInfo, Fragment } from 'react'\nimport { Box, Button, Container, Link, Typography } from '@material-ui/core'\nimport { logoutUrl } from '../routes'\n\ninterface IErrorState {\n hasError: boolean\n error: Error | null\n eventId: string | undefined\n}\n\n/**\n * Basic ErrorBoundary Component\n */\nexport class ErrorBoundary extends Component<{}, IErrorState> {\n constructor(props: {}) {\n super(props)\n this.state = { hasError: false, error: null, eventId: undefined }\n }\n\n public componentDidCatch(error: Error, info: ErrorInfo) {\n Sentry.withScope((scope) => {\n scope.setExtras(info)\n const eventId = Sentry.captureException(error)\n this.setState({ hasError: true, error, eventId })\n })\n }\n\n public render() {\n if (this.state.hasError) {\n return (\n \n \n \n A critical error has occurred while rendering the application.\n \n \n {this.state.error !== null && this.state.eventId !== null ? (\n \n \n You can use the 'Report Feedback' button to write a short\n description of what you were working on before you encountered\n the issue. Extra details always helps with tracking down errors.\n If this is the first time you've encountered this error it might\n just be a once off. After reporting feedback you can click\n 'Refresh' to go back to the page you were previously on. If you\n encounter the same error multiple times this can sometimes be\n fixed by clearing the cache. Click 'Clear Cache' to try that.\n \n \n \n Sentry.showReportDialog({ eventId: this.state.eventId })\n }\n >\n Report feedback\n \n \n \n {\n window.location.reload()\n }}\n >\n Refresh\n \n \n \n \n Here is the error that was reported:\n
Error: {this.state.error.stack}
\n
\n
\n ) : null}\n
\n )\n }\n\n return this.props.children\n }\n}\n","import React, { FunctionComponent } from 'react'\nimport { Button, Dialog, DialogActions, DialogContent } from '@material-ui/core'\nimport { useToggle } from '../../utils'\n\nexport const AutoDialog: FunctionComponent = ({ children }) => {\n const [open, toggle] = useToggle(true)\n\n return (\n \n {children}\n \n \n \n \n )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Box, Typography, Link } from '@material-ui/core'\n\nexport const BasicAudio = ({ src, type, preload }) => (\n \n \n \n)\n\nBasicAudio.propTypes = {\n /** Url of the audio file you want to play*/\n src: PropTypes.string,\n /** Audio codec the audio file uses. This is important to set so the browser can tell if it knows how to play the given file. Some common formats are listed as options for this prop. */\n type: PropTypes.oneOf([\n 'audio/mpeg',\n 'audio/wav',\n 'audio/ogg',\n 'audio/aac',\n 'audio/opus',\n 'audio/vorbis',\n ]),\n preload: PropTypes.oneOf(['none', 'metadata', 'auto']),\n}\n","import React, { FunctionComponent, useRef } from 'react'\nimport ReactPlayer, { ReactPlayerProps } from 'react-player'\nimport useComponentSize from '@rehooks/component-size'\n\nconst defaultWidth = 960\nconst defaultHeight = 540\n\n/**\n * Simple Wrapper around ReactPlayer to provide some automatic resizing at small\n * screen sizes. The video will center itself inside its parent and if the\n * parent is smaller than 960 it will also resize to that smaller size while\n * maintaining the aspect ratio of 16:9\n */\nexport const BasicVideo: FunctionComponent = ({\n width,\n height,\n ...other\n}) => {\n const ref = useRef(null)\n const size = useComponentSize(ref)\n\n return (\n
\n \n
\n )\n}\n","import React, { Fragment, FunctionComponent, useContext, useState } from 'react'\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core'\nimport { format } from 'date-fns'\nimport { ISOFormatString } from '../../utils'\nimport { ModuleControlContext } from '../../pages'\n\ninterface ButtonDialogProps {\n /**\n * If id is set then this dialog will save its opened timestamp to moduleData\n * */\n id?: string\n /** The text displayed by the button. */\n linkText: string\n /** The Text displayed in the title of the dialog. */\n title?: string\n /**\n * If set to true then the dialog will always open in fullscreen mode. Note:\n * if fullScreen is undefined on mobile the dialog will always open in full\n * screen mode. */\n fullScreen?: boolean\n /**\n * If set to true then the dialog will always goto the next page on close or\n * on clicking the action button instead of just closing */\n goToNext?: boolean\n disableButton?: boolean\n onClick?: () => void\n}\n\nexport const ButtonDialog: FunctionComponent = ({\n linkText,\n title,\n children,\n fullScreen,\n goToNext,\n disableButton,\n onClick,\n id,\n}) => {\n const [open, setOpen] = useState(false)\n const context = useContext(ModuleControlContext)\n const theme = useTheme()\n const isSm = useMediaQuery(theme.breakpoints.down('sm'))\n\n const key = `ButtonDialog_${id}`\n const shouldFullscreen =\n fullScreen === undefined || fullScreen === null ? isSm : fullScreen\n\n function handleClickOpen() {\n if (onClick) {\n onClick()\n }\n if (id) {\n context.Update({\n [key]: format(new Date(), ISOFormatString),\n ...context.moduleData,\n })\n }\n setOpen(true)\n }\n\n function handleClose() {\n setOpen(false)\n if (goToNext) {\n context.GoTo(context.activeStep + 1)\n }\n }\n\n return (\n \n \n \n {linkText}\n \n \n \n {title ? {title} : null}\n {children}\n \n \n \n \n \n )\n}\n","import React from 'react'\nimport { FunctionComponent } from 'react'\nimport { Fragment } from 'react'\nimport { Typography, Grid } from '@material-ui/core'\nimport { Img, FinishModule, SingleImage } from '.'\n\nexport const FinalPage: FunctionComponent = () => (\n \n Keep in mind\n
\n \n \n \n Don't be afraid to try out new ways of parenting. Putting these ideas\n into practice with your teenager takes time. Be patient.\n \n \n If you feel you've made some parenting mistakes, don't be too hard on\n yourself. You can always learn from these mistakes.{' '}\n Be kind to yourself.\n \n \n If your teenager has already developed depression or clinical anxiety,\n don't feel that it is a failure on your part or blame yourself. Any\n teenager can develop these problems.{' '}\n \n Just by completing this module, you are already taking steps in the\n right direction towards helping your teenager.\n \n \n \n \n \n \n \n \n \n
\n)\n","import React, { useContext } from 'react'\nimport { Button, Box } from '@material-ui/core'\nimport { dashboardUrl, memberUrl } from '../../routes'\nimport { gql } from 'graphql.macro'\nimport { memberDashboardQueryName, ModuleControlContext } from '../../pages'\nimport { useFinishModuleMutation } from '../../types'\nimport { useNavigation } from 'react-navi'\nimport { useSnackbar } from 'notistack'\n\nexport const FINISH_MODULE = gql`\n mutation finishModule($moduleID: ID!) {\n moduleComplete(moduleID: $moduleID)\n }\n`\n\nexport const FinishModule = () => {\n const context = useContext(ModuleControlContext)\n const snackbar = useSnackbar()\n const navigation = useNavigation()\n const [mutation] = useFinishModuleMutation({\n variables: { moduleID: context.moduleID ? context.moduleID : '' },\n onCompleted: (data) => {\n if (data.moduleComplete) {\n snackbar.enqueueSnackbar(\"You've completed a module\", {\n variant: 'success',\n })\n }\n navigation.navigate(`${memberUrl}${dashboardUrl}`)\n },\n refetchQueries: [memberDashboardQueryName],\n awaitRefetchQueries: true,\n })\n\n return (\n \n {\n mutation()\n }}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n Click here to finish module\n \n \n )\n}\n","import React, { useContext } from 'react'\nimport { ModuleControlContext } from '../../pages'\nimport { Link, styled } from '@material-ui/core'\n\nconst CursorLink = styled(Link)({\n '&:hover': {\n cursor: 'pointer',\n },\n})\n\nexport const GoTo = ({ page, children }) => {\n const context = useContext(ModuleControlContext)\n\n function onClick() {\n context.GoTo(page)\n }\n\n return {children}\n}\n","import React, { FunctionComponent, useContext } from 'react'\nimport { Box, Button, Typography } from '@material-ui/core'\nimport { Paper } from '.'\nimport { ClipboardCheck } from 'mdi-material-ui'\nimport { green } from '@material-ui/core/colors'\nimport { ModuleControlContext } from '../../pages'\n\ninterface GoalDialogProps {\n id: string\n description: string\n}\n\nexport const GoalDialog: FunctionComponent = (props) => {\n const context = useContext(ModuleControlContext)\n const key = `Goal_${context.moduleID}`\n const keyData = context.moduleData?.[key]\n const thisGoalSelected = keyData === props.id\n\n function handleSelect() {\n context.SetGoal(props.id, props.description)\n context.Update({\n ...context.moduleData,\n [key]: props.id,\n })\n }\n\n return (\n \n {props.children}\n \n \n Select\n \n {thisGoalSelected ? (\n \n \n You've selected this goal.\n \n ) : null}\n \n \n )\n}\n","import React from 'react'\nimport { Box, Grid, Typography } from '@material-ui/core'\nimport { GridSize } from '@material-ui/core/Grid'\nimport { Img } from '.'\n\ninterface ImageGridItems {\n src: string\n alt?: string\n text?: string\n fullWidth?: boolean\n}\n\ninterface ImageGridProps {\n /** Defines how much space a grid item should take up at md size (about laptop\n * size)*/\n mdGrid?: GridSize\n /** Defines how much space a grid item should take up at sm size (about tablet\n * size)*/\n smGrid?: GridSize\n list: ImageGridItems[]\n}\n\n/**\n * React component for placing a single image in the document. Should scale the\n * image to fit the screen width if the screen is smaller than the image.\n */\nexport const ImageGrid = ({ list, mdGrid, smGrid }: ImageGridProps) => {\n return (\n \n {list.map((image, index) => (\n \n {image.text ? (\n \n \n {image.text}\n \n \n ) : null}\n {image.src ? (\n \n ) : null}\n \n ))}\n \n )\n}\n","import React, { useContext, ReactNode, FunctionComponent } from 'react'\nimport { Card, CardContent, Fade } from '@material-ui/core'\nimport { Img } from '.'\nimport { addDateKey } from '../../utils'\nimport { ModuleControlContext } from '../../pages'\n\ninterface ImageRevealItem {\n src: string\n alt: string\n}\n\ninterface ImageRevealProps {\n id: string\n mainDescription: ReactNode\n mainItem: ImageRevealItem\n aboveReveal?: ImageRevealItem\n belowReveal?: ImageRevealItem\n /** How long the fade effect takes to transition from invisible to fully\n * visible. In milliseconds. */\n fadeSpeed: number\n}\n\n/**\n * React component for rendering a grid list of images where each item will fade\n * in after the previous one.\n */\nexport const ImageReveal: FunctionComponent = ({\n fadeSpeed,\n mainItem,\n mainDescription,\n aboveReveal,\n belowReveal,\n id,\n}) => {\n const context = useContext(ModuleControlContext)\n const key = `TextReveal_${id}`\n const keyData = context.moduleData?.[key]\n const clicked = keyData ? true : false\n\n function click() {\n if (!keyData) {\n addDateKey(key, context)\n }\n }\n\n return (\n \n \n {aboveReveal ? (\n \n {aboveReveal.alt}\n \n ) : null}\n {mainDescription}\n {mainItem.alt}\n {belowReveal ? (\n \n {belowReveal.alt}\n \n ) : null}\n \n \n )\n}\n","import React, { useContext } from 'react'\nimport { Fade, Grid } from '@material-ui/core'\nimport { Img } from '.'\nimport { useInterval, ISOFormatString } from '../../utils'\nimport { ModuleControlContext } from '../../pages'\nimport { format } from 'date-fns'\n\ninterface ImageStepperItems {\n src: string\n alt?: string\n fullWidth?: boolean\n}\n\ninterface ImageStepperProps {\n id?: string\n list: ImageStepperItems[]\n /** How long before the next image starts fading in. In Milliseconds. */\n sequenceSpeed: number\n /** How long the fade effect takes to transition from invisible to fully\n * visible. In milliseconds. */\n fadeSpeed: number\n}\n\n/**\n * React component for rendering a grid list of images where each item will fade\n * in after the previous one.\n */\nexport const ImageStepper = ({\n id,\n list,\n sequenceSpeed,\n fadeSpeed,\n}: ImageStepperProps) => {\n const context = useContext(ModuleControlContext)\n const key = `ImageStepper_${id ? id : context.activeStep}`\n const keyData = context.moduleData?.[key]\n const [count, setCount] = React.useState(keyData ? list.length : 1)\n\n useInterval(() => {\n if (count <= list.length) {\n setCount(count + 1)\n }\n if (count === list.length && !keyData) {\n context.Update({\n [key]: format(new Date(), ISOFormatString),\n ...context.moduleData,\n })\n }\n }, sequenceSpeed)\n\n return (\n \n {list.map((item, index) => (\n \n \n
\n \n
\n
\n
\n ))}\n \n )\n}\n","import React, { forwardRef, ImgHTMLAttributes, Ref } from 'react'\nimport { makeStyles, Box } from '@material-ui/core'\n\nconst useStyles = makeStyles(() => ({\n img: {\n maxWidth: '100%',\n objectFit: 'contain',\n display: 'block',\n margin: '0 auto',\n },\n}))\n\nexport const Img = forwardRef(\n (props: ImgHTMLAttributes, ref: Ref) => {\n const classes = useStyles()\n const { src, alt, ...other } = props\n return (\n \n {alt}\n \n )\n },\n)\n","import React from 'react'\nimport { AdapterLink } from '..'\nimport { Button } from '@material-ui/core'\n\ntype InternalButtonLinkProps = {\n redirectUrl: string\n buttonText: string\n}\n\nexport const InternalButtonLink = ({\n redirectUrl,\n buttonText,\n}: InternalButtonLinkProps) => (\n \n {buttonText}\n \n)\n","import React from 'react'\nimport { Paper as MaterialPaper, Box } from '@material-ui/core'\n\nexport const Paper = (props) => (\n \n \n {props.children}\n \n \n)\n","import React, { useContext, ChangeEvent } from 'react'\nimport {\n Box,\n Card,\n CardContent,\n FormControlLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Typography,\n} from '@material-ui/core'\nimport { ConfidenceValues } from './ConfidenceQuestion'\nimport { ModuleControlContext, ModuleKeyObject } from '../../pages'\n\ntype PreviousModuleQuestionProps = {\n id: string\n}\n\ntype confidenceQuestion = {\n value: string\n moduleName: string\n label: string\n}\n\nexport const confidenceQuestions: confidenceQuestion[] = [\n {\n value: 'first',\n moduleName: 'Not applicable - this is my first module',\n label: '',\n },\n {\n value: 'TeenagerRelationship',\n moduleName: 'Connect',\n label:\n 'How confident do you feel about your ability to build and maintain a close relationship with your teenager?',\n },\n {\n value: 'Balance',\n moduleName: 'Nurture roots & inspire wings',\n label:\n 'How confident do you feel about your ability to find a balance between being involved in your teenager’s life and encouraging age-appropriate independence?',\n },\n {\n value: 'FamilyRules',\n moduleName: 'Raising good kids into great adults',\n label:\n 'How confident do you feel about your ability to establish family rules and consequences?',\n },\n {\n value: 'SolveConflict',\n moduleName: 'Calm versus conflict',\n label:\n 'How confident do you feel about your ability to solve conflicts with your teenager in a constructive manner?',\n },\n {\n value: 'TeenagerSkill',\n moduleName: 'Good friends, supportive relationships',\n label:\n 'How confident do you feel about your ability to help your teenager to build their social skills?',\n },\n {\n value: 'HealthyLifestyle',\n moduleName: 'Good health habits for good mental health',\n label:\n 'How confident do you feel about your ability to influence your teenager to make healthy lifestyle choices?',\n },\n {\n value: 'TeenagerProblems',\n moduleName: 'Partners in problem solving',\n label:\n 'How confident do you feel about your ability to support your teenager when they face problems in their life?',\n },\n {\n value: 'TeenagerAnxiety',\n moduleName:\n 'From surviving to thriving: Helping your teenager deal with anxiety',\n label:\n 'How confident do you feel about your ability to help your teenager cope with anxiety?',\n },\n {\n value: 'ProfessionalHelp',\n moduleName: 'When things aren’t okay: Getting professional help',\n label:\n 'If you noticed a persistent change in your teenager’s mood or behaviour, how confident do you feel about your ability to help your teenager seek appropriate professional help?',\n },\n]\n\nexport const PreviousModuleQuestion = ({ id }: PreviousModuleQuestionProps) => {\n const context = useContext(ModuleControlContext)\n const key = `PreviousModule_${id}`\n const keyData = (context.moduleData?.[key] as ModuleKeyObject) ?? {}\n\n const handleChange = (event: ChangeEvent<{ value: unknown }>) => {\n if (typeof keyData === 'object' && typeof event.target.value === 'string') {\n context.Update({\n ...context.moduleData,\n [key]: {\n ...keyData,\n answer: event.target.value as string,\n },\n })\n }\n }\n\n const handleModuleChange = (event: ChangeEvent<{ value: unknown }>) => {\n if (typeof keyData === 'object' && typeof event.target.value === 'string') {\n context.Update({\n ...context.moduleData,\n [key]: {\n ...keyData,\n moduleChosen: event.target.value,\n },\n })\n }\n }\n\n return (\n \n \n \n \n We'd like to check in about your confidence levels. First, please\n select the title of your last module from the list below:\n \n \n \n {confidenceQuestions.map((previousModule) => (\n \n {previousModule.moduleName}\n \n ))}\n \n \n \n {\n confidenceQuestions.find(\n (PopConfidenceValue) =>\n PopConfidenceValue.value === keyData.moduleChosen,\n )?.label\n }\n \n {keyData.moduleChosen && keyData.moduleChosen !== 'first' ? (\n \n }\n value={ConfidenceValues.notConfident}\n label=\"Not at all confident\"\n />\n }\n label=\"A little confident\"\n />\n }\n label=\"Somewhat confident\"\n />\n }\n label=\"Very confident\"\n />\n \n ) : null}\n \n \n \n )\n}\n","import React, {\n ChangeEvent,\n Fragment,\n FunctionComponent,\n ReactNode,\n useContext,\n useState,\n} from 'react'\nimport {\n Box,\n Button,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Fade,\n FormControlLabel,\n FormGroup,\n Grid,\n Typography,\n withStyles,\n} from '@material-ui/core'\nimport { CheckboxProps } from '@material-ui/core/Checkbox'\nimport { CheckCircle, CloseBox, CloseCircle } from 'mdi-material-ui'\nimport { format } from 'date-fns'\nimport { green, red } from '@material-ui/core/colors'\nimport { ISOFormatString } from '../../utils'\nimport { ModuleControlContext } from '../../pages'\n\nconst CorrectCheckbox = withStyles({\n root: {\n '&$checked': {\n color: green['A400'],\n },\n },\n checked: {},\n})((props: CheckboxProps) => )\n\nconst WrongCheckbox = withStyles({\n root: {\n '&$checked': {\n color: red['A400'],\n },\n },\n checked: {},\n})((props: CheckboxProps) => (\n } {...props} />\n))\n\ninterface AnswerProps extends AnswerData {\n clicked: boolean\n disabled: boolean\n question: ReactNode\n setClicked: (answerName: string) => void\n}\n\ninterface AnswerData {\n name: string\n correct: boolean\n response?: ReactNode\n}\n\ninterface QuizProps {\n id: string\n /**\n * If this is set to true then the user will only be able to attempt to answer\n * this question a single time. After their first attempt all answers will be\n * disabled. */\n once: boolean\n /**\n * If singleAnswer is set then the question will only save the last answered question.\n */\n singleAnswer: boolean\n /**\n * If true response will be displayed below the quiz instead of in a dialog.\n * */\n inline: boolean\n question: ReactNode\n fallbackResponse?: ReactNode\n answers: AnswerData[]\n}\n\nexport const Quiz: FunctionComponent = (props) => {\n const context = useContext(ModuleControlContext)\n const key = `Quiz_${props.id}`\n const keyData = context.moduleData?.[key]\n const anyAnswerGiven =\n typeof keyData === 'object' &&\n Object.keys(keyData ? keyData : {}).length > 0\n\n function saveAnswer(answerName: string) {\n if (!(anyAnswerGiven && props.once)) {\n let existingData: { [childKey: string]: string } = {}\n if (!props.singleAnswer) {\n existingData = keyData && typeof keyData === 'object' ? keyData : {}\n }\n existingData[answerName] = format(new Date(), ISOFormatString)\n\n context.Update({\n ...context.moduleData,\n [key]: existingData,\n })\n }\n }\n\n return (\n \n \n \n {props.question}\n \n \n \n {props.answers.map((answer, index) => {\n let answerChecked = false\n if (keyData && typeof keyData === 'object') {\n answerChecked = keyData[answer.name] ? true : false\n }\n\n return (\n \n )\n })}\n \n \n \n {props.inline ? (\n \n {props.fallbackResponse}\n \n ) : null}\n \n )\n}\n\nexport const Answer = ({\n correct,\n response,\n name,\n disabled,\n setClicked,\n clicked,\n question,\n}: AnswerProps) => {\n const [open, setOpen] = useState(false)\n\n function handleClickOpen(event: ChangeEvent) {\n setClicked(name)\n setOpen(true)\n }\n\n function handleClose() {\n setOpen(false)\n }\n\n return (\n \n \n ) : (\n \n )\n }\n label={name}\n />\n {response ? (\n \n \n \n \n {correct ? (\n \n \n \n ) : (\n \n \n \n )}\n \n {question}\n \n \n \n {response}\n \n \n \n \n \n ) : null}\n \n )\n}\n","import React, { FunctionComponent } from 'react'\nimport { Box, Typography } from '@material-ui/core'\nimport { Colors, getColorHex } from '../../utils'\nimport { TypographyProps } from '@material-ui/core/Typography'\n\nexport interface TextCustomProps extends TypographyProps<'div'> {\n customColor?: Colors\n}\n\nexport const TextCustom: FunctionComponent = ({\n customColor,\n children,\n ...other\n}) => {\n return (\n \n \n {children}\n \n \n )\n}\n","import React, { FunctionComponent } from 'react'\nimport { TextCustom } from './TextCustom'\n\nexport interface QuoteProps {\n quote: string\n author: string\n}\n\nexport const Quote: FunctionComponent = ({ quote, author }) => (\n
\n \n {quote}\n \n \n {author}\n \n
\n)\n","import React from 'react'\nimport { makeStyles, createStyles, Button } from '@material-ui/core'\nimport { useToggle } from '../../utils'\n\nconst useStyles = makeStyles(\n createStyles({\n containedPrimary: {\n background: `linear-gradient(45deg, #ff8a23 30%, #ff7801 90%)`,\n },\n label: {\n textTransform: 'none',\n },\n }),\n)\n\nexport const SelectBox = (props) => {\n const classes = useStyles()\n const [clicked, toggle] = useToggle(false)\n const { children, color, variant, ...other } = props\n\n return (\n \n {children}\n \n )\n}\n","import React, { FunctionComponent, useContext } from 'react'\nimport { Box, Grid } from '@material-ui/core'\nimport { Fragment } from 'react'\nimport { Img, TextCustom } from '.'\nimport { ModuleControlContext } from '../../pages'\n\ninterface GoalDialogProps {\n id: string\n}\n\nexport const SelectedGoal: FunctionComponent = (props) => {\n const context = useContext(ModuleControlContext)\n const key = `Goal_${context.moduleID}`\n const keyData = context.moduleData?.[key]\n const thisGoalSelected = keyData === props.id\n\n if (thisGoalSelected) {\n return (\n \n \n The goal you have selected for this week is…\n \n \n {props.children}\n \n \n \n

Think about:

\n \n
    \n
  • When will this happen?
  • \n
  • Who will be involved?
  • \n
  • What might get in the way of this happening?
  • \n
\n
\n
\n \n \n \n
\n
\n )\n }\n\n return null\n}\n","import React, { FunctionComponent } from 'react'\nimport { Box, Grid } from '@material-ui/core'\nimport { GridSize } from '@material-ui/core/Grid'\nimport { Img } from '.'\n\ninterface SingleImageProps {\n /** The url of the image you want to display */\n src: string\n /** This prop defines an alternative text description of the image. */\n alt: string\n /** This defines how much space the image should take up on the page. On\n * mobile the gridSize will always be 12 (full width). For larger screens you\n * can set this to a value less than 12. For example setting 6 will mean the\n * image's width will be set to 50% of the page. */\n gridSize: GridSize\n smallGridSize?: GridSize\n}\n\n/**\n * React component for placing a single image in the document. Should scale the\n * image to fit the screen width if the screen is smaller than the image.\n */\nexport const SingleImage: FunctionComponent = ({\n src,\n alt,\n gridSize,\n smallGridSize,\n}) => {\n return (\n \n \n \n {alt}\n \n \n \n )\n}\n","import React from 'react'\nimport {\n createStyles,\n makeStyles,\n Paper,\n Table,\n TableCell,\n TableRow,\n Theme,\n withStyles,\n} from '@material-ui/core'\nimport { FunctionComponent } from 'react'\n\nexport const StyledTableCell = withStyles((theme: Theme) =>\n createStyles({\n head: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n },\n }),\n)(TableCell)\n\nexport const StyledTableRow = withStyles((theme: Theme) =>\n createStyles({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.background.default,\n },\n },\n }),\n)(TableRow)\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: '100%',\n marginTop: theme.spacing(3),\n overflowX: 'auto',\n },\n }),\n)\n\nexport const SimpleTable: FunctionComponent = (props) => {\n const classes = useStyles()\n\n return (\n \n {props.children}
\n
\n )\n}\n","import { addDataKey } from '../../utils'\nimport { ModuleControlContext } from '../../pages'\nimport { TextField } from '@material-ui/core'\nimport React, { ChangeEvent, FunctionComponent, useContext } from 'react'\n\ninterface TextInputProps {\n id: string\n}\n\nexport const TextInput: FunctionComponent = ({ id }) => {\n const context = useContext(ModuleControlContext)\n const key = `TextInput_${id}`\n const keyData = context.moduleData?.[key]\n\n function change(event: ChangeEvent) {\n addDataKey(key, event.currentTarget.value, context)\n }\n\n return (\n \n )\n}\n","import React, { FunctionComponent, useContext } from 'react'\nimport { addDateKey } from '../../utils'\nimport { Card, CardContent, Fade, styled, Box } from '@material-ui/core'\nimport { grey } from '@material-ui/core/colors'\nimport { ModuleControlContext } from '../../pages'\nimport { TextCustom, TextCustomProps } from '.'\n\nconst HoverCard = styled(Card)({\n '&:hover': {\n background: grey[100],\n cursor: 'pointer',\n },\n})\n\ninterface TextRevealProps extends TextCustomProps {\n id?: string\n header: JSX.Element\n mountOnEnter?: boolean\n}\n\n/**\n * React component for placing a single image in the document. Should scale the\n * image to fit the screen width if the screen is smaller than the image.\n */\nexport const TextReveal: FunctionComponent = ({\n id,\n header,\n mountOnEnter,\n children,\n ...textCustomProps\n}) => {\n const context = useContext(ModuleControlContext)\n const key = `TextReveal_${id ? id : header}`\n const keyData = context.moduleData?.[key]\n const clicked = keyData ? true : false\n\n function click() {\n if (!keyData) {\n addDateKey(key, context)\n }\n }\n\n return (\n \n \n \n \n {header}\n \n \n \n
{children}
\n
\n
\n
\n )\n}\n","import PropTypes from 'prop-types'\nimport React, { useMemo } from 'react'\nimport { Box, Fade, Grid, Paper } from '@material-ui/core'\nimport {\n Colors,\n customColorOptions,\n getRandomInt,\n useInterval,\n ISOFormatString,\n} from '../../utils'\nimport { ModuleControlContext } from '../../pages'\nimport { TextCustom } from '.'\nimport { useContext } from 'react'\nimport { format } from 'date-fns'\nimport { PaperProps } from '@material-ui/core/Paper'\n\ninterface TextStepperItemProps {\n long?: boolean\n text: string | JSX.Element\n color: Colors\n}\n\ninterface TextStepperProps extends PaperProps {\n id: string\n sequenceSpeed: number\n fadeSpeed: number\n textVariant?: any\n list: TextStepperItemProps[]\n}\n\ninterface RandomItem {\n colors: number[]\n}\n\n/**\n * React component for rendering a grid list of text where each item will fade in after the previous one.\n */\nexport const TextStepper = ({\n id,\n list,\n sequenceSpeed,\n fadeSpeed,\n textVariant,\n ...PaperProps\n}: TextStepperProps) => {\n const context = useContext(ModuleControlContext)\n const key = `TextStepper_${id}`\n const keyData = context.moduleData?.[key]\n const [count, setCount] = React.useState(keyData ? list.length : 1)\n\n const randomItemLists: RandomItem = useMemo(() => {\n const randomColorNumbers: number[] = []\n list.forEach(() => {\n randomColorNumbers.push(getRandomInt(0, customColorOptions.length))\n })\n\n return { colors: randomColorNumbers }\n }, [list])\n\n useInterval(() => {\n if (count <= list.length) {\n setCount(count + 1)\n }\n if (count === list.length && !keyData) {\n context.Update({\n [key]: format(new Date(), ISOFormatString),\n ...context.moduleData,\n })\n }\n }, sequenceSpeed)\n\n return (\n \n \n \n {list.map((item, index) => (\n \n \n {typeof item.text === 'string' ? (\n \n {item.text}\n \n ) : (\n item.text\n )}\n \n \n ))}\n \n \n \n )\n}\n\nTextStepper.propTypes = {\n /** How long before the next sentence starts fading in. In Milliseconds. */\n sequenceSpeed: PropTypes.number,\n /** How long the fade effect takes to transition from invisible to fully visible. In milliseconds. */\n fadeSpeed: PropTypes.number,\n variant: PropTypes.string,\n list: PropTypes.arrayOf(\n PropTypes.shape({\n long: PropTypes.bool,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n .isRequired,\n color: PropTypes.oneOf([\n 'red',\n 'green',\n 'lightGreen',\n 'yellow',\n 'blue',\n 'purple',\n 'orange',\n ]),\n }),\n ),\n}\n","import React, { Fragment } from 'react'\nimport { ChevronDown } from 'mdi-material-ui'\nimport {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n Link,\n Typography,\n Box,\n} from '@material-ui/core'\nimport { BasicAudio } from './module'\n\ntype PropType = 'href' | 'id' | 'title'\ninterface PropNode {\n Type: PropType\n Value: string\n}\n\ninterface FeedbackNode {\n Format:\n | 'body'\n | 'paragraph'\n | 'text'\n | 'bold'\n | 'italics'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'unorderedList'\n | 'listItem'\n | 'fragment'\n | 'div'\n | 'link'\n Content: string\n Children?: FeedbackNode[]\n Props?: PropNode[]\n}\n\nfunction findPropValue(\n props: PropNode[],\n propType: PropType,\n): string | undefined {\n const prop = props.find((element) => element.Type === propType)\n return prop ? prop.Value : undefined\n}\n\nfunction findChildrenIDS(children: FeedbackNode[]): string[] {\n const ids: string[] = []\n children.forEach((child) => {\n if (child.Props) {\n const idProp = findPropValue(child.Props, 'id')\n if (idProp) {\n ids.push(idProp)\n }\n }\n if (child.Children) {\n const subResults = findChildrenIDS(child.Children)\n if (subResults.length > 0) {\n ids.push(...subResults)\n }\n }\n })\n return ids\n}\n\nfunction generateAudioUrl(ids: string[]): string {\n return `${process.env.REACT_APP_API}/file/audio/feedback/${encodeURIComponent(\n btoa(ids.join(',')),\n )}/feedback.mp3`\n}\n\nexport const FeedbackNode: React.FunctionComponent = (props) => {\n const children = props.Children\n ? props.Children.map((child, index) => (\n \n ))\n : null\n\n switch (props.Format) {\n case 'body':\n return (\n
\n {props.Content}\n {children}\n
\n )\n case 'paragraph':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'text':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'bold':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'italics':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'heading1':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'heading2':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'heading3':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'unorderedList':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'listItem':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'fragment':\n return (\n \n {props.Content}\n {children}\n \n )\n case 'div':\n const title = props.Props\n ? findPropValue(props.Props, 'title')\n : undefined\n const id = props.Props ? findPropValue(props.Props, 'id') : undefined\n\n if (title) {\n const childrenIDS = findChildrenIDS(\n props.Children ? props.Children : [],\n )\n return (\n \n }>\n {title}\n \n \n
\n {children}\n \n
\n
\n
\n )\n }\n\n if (id && (id === 'main_header' || id === 'main_footer')) {\n return (\n \n {children}\n \n \n )\n }\n\n return
{children}
\n case 'link':\n const linkProp = props.Props\n ? props.Props.find(function (element) {\n return element.Type === 'href'\n })\n : undefined\n\n return (\n \n {props.Content}\n {children}\n \n )\n default:\n return (\n
\n {props.Content}\n {children}\n
\n )\n }\n}\n","import React from 'react'\nimport { Toolbar, Typography, Box } from '@material-ui/core'\nimport { grey } from '@material-ui/core/colors'\nimport { version } from '../../package.json'\n\n/**\n * FooterBar can be used to display anything that needs to be in the footer of\n * the app. It is designed to be a sticky footer but in order to do so the root\n * element of the app should contain:\n * @example\n * display: flex;\n * min-height: 100vh;\n * flex-direction: column;\n */\nexport function FooterBar() {\n return (\n \n \n \n \n \n Version {version} | Made by Episub\n \n \n \n \n \n )\n}\n","import React from 'react'\nimport { useField } from 'formik'\nimport { TextField } from '@material-ui/core'\n\nexport const FormikTextField = ({ error, helperText, ...props }) => {\n const [field, meta] = useField(props.name)\n const isError = meta.touched && meta.error ? true : false\n\n return (\n \n )\n}\n","import Carousel from 'react-multi-carousel'\nimport React, { Fragment, FunctionComponent, MouseEvent, useMemo } from 'react'\nimport {\n Box,\n Button,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n Grid,\n LinearProgress,\n Typography,\n useTheme,\n} from '@material-ui/core'\nimport { Check } from 'mdi-material-ui'\nimport {\n GoalStatus,\n useGetMyGoalsQuery,\n useSetGoalStatusMutation,\n} from '../types'\nimport { gql } from 'graphql.macro'\nimport { green } from '@material-ui/core/colors'\nimport { normalise } from '../utils'\nimport { Skeleton } from '@material-ui/lab'\n\nexport const getMyGoalsQueryName = 'GetMyGoals'\n\nexport const GET_MY_GOALS = gql`\n query GetMyGoals {\n modulesStatus {\n id\n position\n module {\n id\n }\n }\n goals {\n id\n completed\n description\n module {\n id\n name\n }\n }\n }\n`\n\nexport const SET_GOAL_STATUS = gql`\n mutation setGoalStatus($goalID: ID!, $status: GoalStatus!) {\n setGoalStatus(goalID: $goalID, status: $status)\n }\n`\n\nexport const GoalsList: FunctionComponent = () => {\n const theme = useTheme()\n const { loading, data } = useGetMyGoalsQuery()\n const [setGoal] = useSetGoalStatusMutation({\n refetchQueries: [getMyGoalsQueryName],\n })\n\n const goals = data?.goals\n const modules = data?.modulesStatus\n const completeGoals = countCompletedGoals()\n const filteredGoals = useMemo(() => {\n if (goals && modules) {\n return goals.sort((a, b) => {\n const aModule = modules.find(\n (module) => module.module?.id === a.module.id,\n )\n const bModule = modules.find(\n (module) => module.module?.id === b.module.id,\n )\n if (aModule?.position && bModule?.position) {\n if (aModule.position < bModule.position) {\n return -1\n }\n if (aModule.position > bModule.position) {\n return 1\n }\n }\n return 0\n })\n }\n return undefined\n }, [goals, modules])\n\n function countCompletedGoals() {\n let count = 0\n if (goals) {\n goals.forEach((goal) => {\n if (goal.completed) {\n count = count + 1\n }\n })\n }\n return count\n }\n\n function setGoalStatus(event: MouseEvent) {\n setGoal({\n variables: {\n goalID: event.currentTarget.value,\n status: GoalStatus.Complete,\n },\n })\n }\n\n if (loading) {\n return (\n \n \n Your Goals\n \n \n \n \n } />\n \n \n \n \n \n \n \n \n \n )\n }\n\n if (!filteredGoals || !goals) {\n return null\n }\n\n return (\n \n \n Your Goals\n \n {filteredGoals.length > 0 ? (\n \n \n \n {`${completeGoals}/${goals.length} goals complete`}\n \n \n {filteredGoals.map((goal) => (\n \n \n \n \n \n \n {goal.description}\n \n \n \n \n {goal.completed ? (\n \n \n \n ) : (\n \n )}\n \n \n \n ))}\n \n \n ) : (\n You haven't selected any goals yet\n )}\n \n )\n}\n","import React, { FunctionComponent, Fragment } from 'react'\nimport pip_logo from '../assets/pip_logo.svg'\nimport pip_logo_small from '../assets/pip_logo_small.svg'\nimport {\n activeModuleLinks,\n LinkInfo,\n memberUrl,\n moduleLinks,\n moduleUrl,\n noUserLinks,\n userLinks,\n} from '../routes'\nimport { AdapterLink } from './CustomLink'\nimport {\n AppBar,\n Box,\n Button,\n makeStyles,\n Menu,\n MenuItem,\n Toolbar,\n useMediaQuery,\n useTheme,\n Tooltip,\n} from '@material-ui/core'\nimport {\n bindMenu,\n bindTrigger,\n usePopupState,\n} from 'material-ui-popup-state/hooks'\nimport {\n ModuleType,\n useGetWhoamiQuery,\n useDynamicHeaderLinksQuery,\n} from '../types'\nimport { useActive } from 'react-navi'\nimport { UserType } from '../utils'\nimport { gql } from 'graphql.macro'\nimport { BusyLinear } from '.'\nimport { Alert } from 'mdi-material-ui'\n\nexport const DYNAMIC_HEADER_LINKS = gql`\n query DynamicHeaderLinks {\n pages {\n id\n menuName\n route\n showInMenu\n }\n }\n`\n\nconst useStyles = makeStyles(({ zIndex }) => ({\n appBar: {\n zIndex: zIndex.drawer + 1,\n },\n}))\n\ninterface LinkRenderProps {\n links: LinkInfo[]\n}\n\nconst DesktopLinks: FunctionComponent = ({ links }) => {\n return (\n \n {links.map((link) => (\n \n {link.title}\n \n ))}\n \n )\n}\n\nconst MobileLinks: FunctionComponent = ({ links }) => {\n const popupState = usePopupState({\n variant: 'popover',\n popupId: 'mobileLinksMenu',\n })\n return (\n \n \n \n {links.map((link) => (\n \n {link.title}\n \n ))}\n \n \n )\n}\n\nexport const HeaderBar: FunctionComponent = () => {\n const classes = useStyles()\n const theme = useTheme()\n const isSmall = useMediaQuery(theme.breakpoints.down('md'))\n const isSmallest = useMediaQuery(theme.breakpoints.down('xs'))\n const isActiveModule = useActive(`${memberUrl}${moduleUrl}`, {\n exact: false,\n })\n const customLogo = process.env.REACT_APP_CUSTOM_SITE_LOGO\n const { data } = useGetWhoamiQuery()\n const { data: linksData, loading, error } = useDynamicHeaderLinksQuery()\n\n const links: LinkInfo[] = []\n const logoHeight = isSmall ? 48 : 56\n const userType = data?.whoami?.userType?.name\n const moduleType = data?.myParticipation?.moduleType\n const dynamicLinks: LinkInfo[] =\n linksData?.pages\n ?.filter((link) =>\n link?.showInMenu && link.menuName && link.route ? true : false,\n )\n .map((link) => ({\n title: link?.menuName ?? '',\n href: link?.route ?? '',\n })) ?? []\n\n if (isActiveModule) {\n links.push(...activeModuleLinks[ModuleType.Module])\n } else {\n links.push(...dynamicLinks)\n\n switch (moduleType) {\n case ModuleType.Factsheet:\n links.push(...moduleLinks[ModuleType.Factsheet])\n break\n case ModuleType.Module:\n links.push(...moduleLinks[ModuleType.Module])\n break\n }\n\n switch (userType) {\n case UserType.Admin:\n links.push(...userLinks[UserType.Admin])\n break\n case UserType.Participant:\n links.push(...userLinks[UserType.Participant])\n break\n default:\n links.push(...noUserLinks)\n break\n }\n }\n\n return (\n \n \n \n \n \n {!isSmallest && customLogo && moduleType === ModuleType.Module ? (\n \n \n \n \n \n ) : null}\n \n {error ? (\n \n \n \n ) : null}\n \n \n \n \n \n )\n}\n","import React, { lazy, memo, NamedExoticComponent } from 'react'\n\nconst MDXRuntime = lazy(() => import('../components/MDXRuntime'))\n\nexport const MemoMDX: NamedExoticComponent<{\n mdx: string\n}> = memo(({ mdx }) => )\n","import Carousel from 'react-multi-carousel'\nimport React, { Fragment, FunctionComponent, MouseEvent } from 'react'\nimport {\n Box,\n Card,\n CardActionArea,\n CardActions,\n CardContent,\n CardMedia,\n makeStyles,\n Typography,\n useTheme,\n} from '@material-ui/core'\nimport { Check, Lock, LockOpenVariant } from 'mdi-material-ui'\nimport { gql } from 'graphql.macro'\nimport { memberUrl, moduleUrl } from '../routes'\nimport { MODULES_FRAGMENT } from '../utils'\nimport { useGetMyModulesQuery } from '../types'\nimport { useNavigation } from 'react-navi'\nimport 'react-multi-carousel/lib/styles.css'\n\nconst useStyles = makeStyles({\n cardMedia: {\n padding: '20px',\n },\n cardHeading: {\n marginBottom: '15px',\n },\n cardBody: {\n color: '#373737',\n },\n cardContent: {\n paddingTop: 0,\n },\n})\n\nexport const myActiveModulesQueryName = 'GetMyModules'\n\nexport const GET_MY_MODULES = gql`\n query GetMyModules {\n modulesStatus {\n id\n position\n completed\n unlocked\n selected\n module {\n ...moduleData\n }\n }\n }\n ${MODULES_FRAGMENT}\n`\n\nexport const ModulesList: FunctionComponent = () => {\n const classes = useStyles()\n const navigation = useNavigation()\n const theme = useTheme()\n const { data } = useGetMyModulesQuery()\n\n // idx calls to nested graphql data\n const activeModulesList = data?.modulesStatus\n\n function goToModule(event: MouseEvent) {\n navigation.navigate(\n `${memberUrl}${moduleUrl}/${encodeURIComponent(event.currentTarget.id)}`,\n )\n }\n\n if (!activeModulesList || activeModulesList.length <= 0) {\n return (\n \n No Available Modules\n \n )\n }\n\n const filteredModulesList = activeModulesList\n .filter((module) => (module.selected || module.unlocked) && module.module)\n .sort((a, b) => (a.position ?? 0) - (b.position ?? 0))\n\n return (\n \n \n Your modules\n \n \n {filteredModulesList.map((module) => {\n const actionAreaContent = (\n \n \n \n \n \n {module.module?.name}\n \n \n {module.module?.description}\n \n \n \n \n \n {module.unlocked ? (\n module.completed ? (\n \n ) : (\n \n )\n ) : (\n \n )}\n \n \n \n )\n return (\n \n \n {module.unlocked ? (\n \n {actionAreaContent}\n \n ) : (\n actionAreaContent\n )}\n \n \n )\n })}\n \n \n )\n}\n","import React, { Fragment, FunctionComponent, useEffect, useState } from 'react'\nimport {\n Box,\n Button,\n Card,\n CardActionArea,\n CardActions,\n CardContent,\n CardMedia,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Fab,\n Grid,\n makeStyles,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core'\nimport { BusyCircular } from '.'\nimport { Check } from 'mdi-material-ui'\nimport { gql } from 'graphql.macro'\nimport { memberDashboardQueryName } from '../pages'\nimport { MODULES_FRAGMENT, useToggle } from '../utils'\nimport {\n ModuleType,\n useGetUserModulesQuery,\n ModuleDataFragment,\n useSelectModulesMutation,\n} from '../types'\n\nconst useStyles = makeStyles({\n cardMedia: {\n padding: '20px',\n },\n cardHeading: {\n marginBottom: '15px',\n },\n cardBody: {\n fontSize: '15px',\n color: '#373737',\n },\n cardContent: {\n paddingTop: 0,\n paddingRight: '20px',\n paddingLeft: '20px',\n paddingBottom: '20px',\n },\n fontWhite: {\n color: '#fff',\n },\n})\n\nexport const GET_USER_MODULES = gql`\n query getUserModules {\n moduleRecommendations {\n id\n }\n modules {\n ...moduleData\n }\n }\n ${MODULES_FRAGMENT}\n`\n\nexport const SELECT_MODULES = gql`\n mutation selectModules($moduleIDs: [ID!]!) {\n selectModules(moduleIDs: $moduleIDs)\n }\n`\n\nexport const ModulesSelect: FunctionComponent = () => {\n const theme = useTheme()\n const classes = useStyles()\n const notMobile = useMediaQuery(theme.breakpoints.up('sm'))\n const [open, toggleOpen] = useToggle(false)\n const [modulesList, setModulesList] = useState([])\n const [selectedModules, setSelectedModules] = useState([])\n const { data, loading, error } = useGetUserModulesQuery()\n const [selectModules] = useSelectModulesMutation({\n refetchQueries: [memberDashboardQueryName],\n awaitRefetchQueries: true,\n })\n\n const allModules = data?.modules\n const recommendedModules = data?.moduleRecommendations\n\n // Setup initial values\n useEffect(() => {\n const list: ModuleDataFragment[] = []\n const selected: string[] = []\n\n if (allModules) {\n allModules.forEach(function (module) {\n if (module.type === ModuleType.Module) {\n list.push(module)\n if (isModuleRecommended(module.id, recommendedModules)) {\n selected.push(module.id)\n }\n }\n })\n\n list.sort((a, b) => {\n if (a.number && b.number) {\n return a.number - b.number\n }\n return 0\n })\n\n setSelectedModules(selected)\n setModulesList(list)\n }\n }, [allModules, recommendedModules])\n\n function isModuleRecommended(\n moduleID: string,\n recommendedModules: { id: string }[] | undefined | null,\n ) {\n return recommendedModules &&\n recommendedModules.some((m) => {\n return m.id === moduleID\n })\n ? true\n : false\n }\n\n function isModuleSelected(moduleID: string) {\n return selectedModules.some((m) => {\n return m === moduleID\n })\n }\n\n function selectActiveModules() {\n if (!loading) {\n selectModules({ variables: { moduleIDs: selectedModules } })\n }\n }\n\n const toggleModuleSelection = (moduleID: string) => () => {\n const selectedClone = [...selectedModules]\n const found = selectedClone.findIndex((id) => {\n return id === moduleID\n })\n if (found !== -1) {\n selectedClone.splice(found, 1)\n } else {\n selectedClone.push(moduleID)\n }\n setSelectedModules(selectedClone)\n }\n\n if (error) {\n return (\n \n There was an error while loading module selection: {error.message}\n \n )\n }\n\n if (loading) {\n return \n }\n\n return (\n \n \n Welcome to your Partners in Parenting program.\n \n \n Based on your responses to the survey, we have recommended specific\n topics (also referred to as ‘modules’) in our program just for you --\n see titles below marked as ‘Recommended’. These modules correspond to\n the feedback you have just received, and are designed to support you in\n making the changes recommended in your feedback. However, this is your\n program, so feel free to choose other topics that are not included in\n our recommended list.\n \n \n Each module takes about 15-25 minutes to complete, depending on the\n topic and the way you choose to engage with it. We encourage you to\n focus on working through one module each week, to allow yourself time to\n apply some of the tips and work on your selected goal.\n \n \n Once you have decided on your modules, click “Confirm modules and start\n my program” and you’ll be able to check out your first module!\n \n \n \n Available Modules\n \n \n {modulesList.map((module) => (\n \n \n {isModuleRecommended(module.id, recommendedModules) ? (\n \n \n \n Recommended\n \n \n \n ) : (\n \n )}\n \n \n \n \n \n {module.name}\n \n \n {module.description}\n \n \n \n \n \n \n \n {isModuleSelected(module.id)\n ? 'Selected'\n : 'Not Selected'}\n \n \n \n {isModuleSelected(module.id)\n ? 'Click to deselect'\n : 'Click to select'}\n \n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n Confirm modules and start my program\n \n \n \n {selectedModules.length > 0 ? (\n \n Confirm Selection?\n \n \n You have selected {selectedModules.length} out of 9 modules.\n Please note that once you confirm your modules, you will not be\n able to change this. Click ‘Confirm’ to lock in your modules, or\n ‘Close’ to go back and change your selection.\n \n \n \n \n \n \n \n ) : (\n \n Please select at least one module\n \n \n You have not selected any modules. In order to continue your\n program, you need to lock in at least one module. Please click\n 'Close' to go back and select your modules.\n \n \n \n \n \n \n )}\n \n \n )\n}\n","import React, { FunctionComponent, Suspense } from 'react'\nimport { Box, CssBaseline } from '@material-ui/core'\nimport { BusyCircular } from './LoadingIndicators'\nimport { BusyLinear, FooterBar, HeaderBar } from '.'\nimport { NotFoundBoundary, useLoadingRoute, View } from 'react-navi'\nimport { RenderNotFound } from '../pages'\n\nexport const PageLayout: FunctionComponent = (props) => {\n const loadingRoute = useLoadingRoute()\n\n return (\n \n \n \n \n \n
\n }>\n \n \n \n \n
\n
\n \n
\n )\n}\n","import React, { FunctionComponent, useState } from 'react'\nimport { Card, CardContent } from '@material-ui/core'\nimport { ModuleControlContext, ModuleState } from '../pages'\nimport { MemoMDX } from '.'\nimport { Alert, AlertTitle } from '@material-ui/lab'\n\nexport const DummyModuleState: FunctionComponent<{ page: string }> = ({\n page,\n}) => {\n const [moduleState, setModuleState] = useState({})\n\n function handleModuleState(state: ModuleState) {\n setModuleState(state)\n }\n\n return (\n \n \n {},\n SetGoal: () => {},\n Update: handleModuleState,\n activeStep: 0,\n color: '#fff',\n moduleCompleted: false,\n moduleData: moduleState,\n moduleID: undefined,\n }}\n >\n \n \n \n Page State\n {JSON.stringify(moduleState, null, 2)}\n \n \n \n )\n}\n","import React, { Component, ErrorInfo } from 'react'\nimport { Box, Card, CardContent, Typography } from '@material-ui/core'\n\ninterface IErrorState {\n hasError: boolean\n error: Error | null\n}\n\n/**\n * ErrorBoundary Component for reporting errors when attempting to render an mdx\n * page preview\n */\nexport class ModuleErrorBoundary extends Component<{}, IErrorState> {\n constructor(props: {}) {\n super(props)\n this.state = { hasError: false, error: null }\n }\n\n public componentDidCatch(error: Error, info: ErrorInfo) {\n this.setState({ hasError: true, error })\n }\n\n public render() {\n if (this.state.hasError) {\n return (\n \n \n \n \n The markdown code is invalid and we were unable to parse the\n page.\n \n {this.state.error !== null ? (\n \n Here is the error that was reported:\n
Error: {this.state.error.stack}
\n
\n ) : null}\n
\n
\n
\n )\n }\n\n return this.props.children\n }\n}\n","import React, { Fragment } from 'react'\nimport { AdapterLink } from '.'\nimport { Box, Button, Typography } from '@material-ui/core'\nimport { Maybe, ScheduledSurveysFragment } from '../types'\nimport { surveyUrl } from '../routes'\n\nexport const ScheduledSurveyList = ({\n surveys,\n baseUrl,\n}: {\n surveys: Maybe\n baseUrl: string\n}) => (\n \n {surveys?.map((survey) => (\n \n You have a new survey to complete.\n \n Click here to start the {survey.survey.name} survey\n \n \n ))}\n \n)\n","import React from 'react'\nimport { Alert } from '@material-ui/lab'\nimport { feedbackSurveyID } from '../utils'\nimport { gql } from 'graphql.macro'\nimport { useLoadUserSurveyDataQuery } from '../types'\n\nexport const LOAD_USER_SURVEY_DATA = gql`\n query loadUserSurveyData($userID: ID!, $surveyID: ID!) {\n loadUserSurveyData(userID: $userID, surveyID: $surveyID) {\n id\n completed\n data\n }\n }\n`\n\n/**\n * Returns an detailing how many questions have been saved to the\n * database for the feedbackSurvey for a given userID. Used as a rough indicator\n * of how far through the initial survey a user is.\n */\nexport const InitialSurveyInfo = ({ userID }: { userID: string }) => {\n const { data, error, loading } = useLoadUserSurveyDataQuery({\n variables: { userID, surveyID: feedbackSurveyID },\n })\n\n const surveySavedDataKeyLength = Object.keys(\n JSON.parse(data?.loadUserSurveyData?.data ?? '{}'),\n ).length\n\n return (\n
\n {error ? {error.message} : null}\n {loading ? Loading... : null}\n {data ? (\n \n {surveySavedDataKeyLength} questions saved\n \n ) : null}\n
\n )\n}\n","import React from 'react'\nimport { Box, Typography } from '@material-ui/core'\nimport { Skull } from 'mdi-material-ui'\n\nexport const NoPermission = () => (\n \n \n No Permission\n \n)\n","export * from './CustomLink'\nexport * from './ErrorBoundary'\nexport * from './FeedbackNode'\nexport * from './FooterBar'\nexport * from './FormikTextField'\nexport * from './GoalsList'\nexport * from './HeaderBar'\nexport * from './LoadingIndicators'\nexport * from './MemoMDX'\nexport * from './module'\nexport * from './ModulesList'\nexport * from './ModulesSelect'\nexport * from './PageLayout'\nexport * from './SurveyWrapper'\nexport * from './DummyModulePage'\nexport * from './ModuleErrorBoundary'\nexport * from './ScheduledSurveyList'\nexport * from './InitialSurveyInfo'\nexport * from './NoPermission'\n","import React from 'react'\nimport { lazy, mount, route, redirect, compose, withView, map } from 'navi'\nimport {\n Login,\n Register,\n Optout,\n ResetPassword,\n VerifyAccount,\n Page,\n} from '../pages'\nimport { PageLayout } from '../components'\nimport {\n adminUrl,\n homeUrl,\n contactUsUrl,\n linksUrl,\n loginUrl,\n memberUrl,\n logoutUrl,\n registerUrl,\n factUrl,\n optoutUrl,\n logoutEndpoint,\n tokenAuthEndpoint,\n resetUrl,\n verifyUrl,\n aboutUsUrl,\n} from './urls'\nimport { getUserInfo, siteName, fetchLogin } from '../utils'\nimport { Container } from '@material-ui/core'\n\nasync function cleanupUser(client) {\n localStorage.clear()\n await fetch(logoutEndpoint, { credentials: 'include', mode: 'cors' })\n await client.resetStore().catch(() => {})\n}\n\nexport const routes = compose(\n withView(async (request, context) => ),\n mount({\n '/': redirect(homeUrl),\n [homeUrl]: route({\n title: `${siteName}: Home`,\n view: (\n \n \n \n ),\n }),\n [contactUsUrl]: route({\n title: `${siteName}: Contact Us`,\n view: (\n \n \n \n ),\n }),\n [linksUrl]: route({\n title: `${siteName}: Useful Links`,\n view: (\n \n \n \n ),\n }),\n [aboutUsUrl]: route({\n title: `${siteName}: About Us`,\n view: (\n \n \n \n ),\n }),\n [optoutUrl]: route({\n title: `${siteName}: Opt Out`,\n view: (\n \n \n \n ),\n }),\n [resetUrl]: map(async (request, context) => {\n const userQuery = await getUserInfo(context.client).catch(() => {})\n const userID = userQuery?.data?.whoami?.id\n const { token } = request.params\n\n return route({\n title: `${siteName}: Reset Password`,\n view: (\n \n \n \n ),\n })\n }),\n [verifyUrl]: map(async (request) => {\n const { token } = request.params\n\n return route({\n title: `${siteName}: Verify Account`,\n view: ,\n })\n }),\n [logoutUrl]: redirect(async (request, context) => {\n await cleanupUser(context.client)\n return homeUrl\n }),\n [loginUrl]: map(async (request, context) => {\n const { email, token, username } = request.params\n const userQuery = await getUserInfo(context.client).catch(() => {})\n const userID = userQuery?.data?.whoami?.id\n\n if (username && token) {\n const url = `${tokenAuthEndpoint}?username=${encodeURIComponent(\n username,\n )}&token=${encodeURIComponent(token)}`\n const result = await fetchLogin(url)\n if (result.options.variant === 'success') {\n return redirect(\n request.params.redirect ? request.params.redirect : homeUrl,\n )\n }\n }\n\n return !userID\n ? route({\n title: `${siteName}: Login`,\n view: (\n \n \n \n ),\n })\n : redirect(homeUrl)\n }),\n [registerUrl]: route(async (request, context) => {\n cleanupUser(context.client)\n const { email, code, tno, ex } = request.params\n\n return {\n title: `${siteName}: Register`,\n view: (\n \n \n \n ),\n }\n }),\n [adminUrl]: lazy(() => import('./adminRoutes')),\n [memberUrl]: lazy(() => import('./memberRoutes')),\n [factUrl]: lazy(() => import('./factRoutes')),\n }),\n)\n","export * from './routes'\nexport * from './urls'\n","import { createMuiTheme, responsiveFontSizes } from '@material-ui/core'\n\nconst amikoFontFamily = ['Amiko', 'Helvetica', 'sans-serif'].join(',')\nexport const primaryColour = '#04BEBE'\nexport const secondaryColour = '#0461BE'\n\nexport const darkTheme = createMuiTheme({\n palette: {\n type: 'dark',\n },\n})\n\nexport const theme = responsiveFontSizes(\n createMuiTheme({\n palette: {\n primary: { main: primaryColour, contrastText: '#fff' },\n secondary: { main: secondaryColour },\n },\n typography: {\n fontFamily: amikoFontFamily,\n fontWeightBold: 700,\n fontWeightLight: 400,\n fontWeightMedium: 600,\n fontWeightRegular: 400,\n body1: {\n letterSpacing: -1,\n lineHeight: 1.7,\n },\n body2: {\n letterSpacing: -1,\n lineHeight: 1.7,\n },\n button: {\n letterSpacing: 1,\n lineHeight: 1.7,\n },\n caption: {\n lineHeight: 1.7,\n },\n h1: {\n color: primaryColour,\n fontSize: '4rem',\n fontWeight: 300,\n letterSpacing: -2,\n lineHeight: 1,\n },\n h2: {\n fontSize: '3rem',\n fontWeight: 300,\n letterSpacing: -2,\n lineHeight: 1,\n },\n h3: {\n fontSize: '2.5rem',\n fontWeight: 300,\n letterSpacing: -2,\n lineHeight: 1,\n },\n h4: {\n fontSize: '2rem',\n fontWeight: 300,\n letterSpacing: -2,\n lineHeight: 1,\n },\n h5: {\n fontSize: '1.75rem',\n fontWeight: 400,\n letterSpacing: -2,\n lineHeight: 1,\n },\n h6: {\n fontSize: '1.25rem',\n fontWeight: 600,\n letterSpacing: -2,\n lineHeight: 1.7,\n },\n overline: {\n letterSpacing: 1,\n lineHeight: 1.7,\n },\n },\n }),\n)\n","import React from 'react'\nimport { Typography } from '@material-ui/core'\n\nexport const RenderNotFound = () => {\n return 404 - Page Not Found\n}\n","import MaterialTable from 'material-table'\nimport React from 'react'\nimport { Alert } from '@material-ui/lab'\nimport {\n Box,\n List,\n ListItem,\n ListItemText,\n Typography,\n} from '@material-ui/core'\nimport { feedbackSurveyID } from '../utils'\nimport { format } from 'date-fns'\nimport { gql } from 'graphql.macro'\nimport { InitialSurveyInfo } from '../components'\nimport { Reload } from 'mdi-material-ui'\nimport { useAdminDashboardQuery } from '../types'\n\nexport const USER_QUERY = gql`\n query AdminDashboard {\n users {\n id\n email\n verified\n userType {\n id\n name\n }\n person {\n firstName\n }\n participant {\n id\n members {\n person {\n firstName\n lastName\n gender {\n id\n name\n }\n }\n participantMemberType {\n id\n name\n }\n }\n moduleType\n data\n }\n goals {\n id\n completed\n module {\n id\n name\n }\n name\n description\n }\n modulesStatus {\n id\n completed\n selected\n unlocked\n locked_in\n module {\n id\n name\n }\n }\n surveysStats {\n id\n completions\n surveyID\n }\n }\n }\n`\n\ntype ParticipantData = {\n registrationForm?: {\n [formKey: string]: string | number | (string | number)[]\n }\n}\n\nexport const AdminDashboard = () => {\n const { data, refetch, error, loading } = useAdminDashboardQuery()\n\n const jsonKeys = new Set()\n const result =\n data?.users?.map((user) => {\n const first = user.person?.firstName\n const userType = user.userType?.name\n const moduleType = user.participant?.moduleType\n const feedbackSurvey =\n user.surveysStats &&\n user.surveysStats.find((survey) => {\n if (survey) {\n return survey.surveyID === feedbackSurveyID\n }\n return false\n })\n const moduleLockInTime = user.modulesStatus?.find((module) =>\n module.locked_in ? true : false,\n )?.locked_in\n\n const participantDataJSON: ParticipantData = JSON.parse(\n user.participant?.data ?? '{}',\n )\n\n Object.keys(participantDataJSON.registrationForm ?? {}).forEach((key) =>\n jsonKeys.add(key),\n )\n\n return {\n id: user.id,\n email: user.email ? user.email : '',\n name: first,\n user: userType,\n module: moduleType,\n moduleStatus: user.modulesStatus,\n moduleLocked: moduleLockInTime,\n goals: user.goals,\n pradas: feedbackSurvey && feedbackSurvey.completions > 0,\n participantType: userType,\n verified: user.verified,\n ...participantDataJSON.registrationForm,\n }\n }) ?? []\n\n const participantResult = result.filter(function (result) {\n return result.module !== undefined\n })\n\n return (\n \n Welcome to the admin dashboard\n \n Here you can view a list of registered users and their progress in the\n program.\n \n {error ? {error.message} : null}\n \n ({ ...row }))}\n options={{\n exportAllData: true,\n pageSizeOptions: [5, 10, 20, 50, 100],\n exportButton:\n process.env.REACT_APP_CSV_EXPORT === 'true' ? true : false,\n }}\n actions={[\n {\n icon: () => ,\n tooltip: 'Refresh',\n isFreeAction: true,\n onClick: () => refetch(),\n },\n ]}\n detailPanel={[\n {\n tooltip: 'PRADAS Progress',\n render: (rowData) => ,\n },\n {\n tooltip: 'Modules',\n render: (rowData) => {\n if (rowData.moduleStatus && rowData.moduleStatus.length > 0) {\n return rowData.moduleStatus.map((module) => {\n const moduleName = module.module?.name\n return (\n \n \n \n \n \n )\n })\n }\n return (\n \n \n \n \n \n )\n },\n },\n {\n tooltip: 'Goals',\n render: (rowData) => {\n if (rowData.goals && rowData.goals.length > 0) {\n return rowData.goals.map((goal) => {\n return (\n \n \n ${goal.description}`}\n secondary={\n goal.completed\n ? `Completed on: ${format(\n new Date(goal.completed),\n 'yyyy/MM/dd HH:mm',\n )}`\n : 'Not Completed'\n }\n />\n \n \n )\n })\n }\n return (\n \n \n \n \n \n )\n },\n },\n ]}\n />\n \n\n {process.env.REACT_APP_TNO_MODE !== 'true' ? (\n \n ({\n title: key,\n field: key,\n })),\n ]}\n data={participantResult}\n options={{\n exportAllData: true,\n pageSizeOptions: [5, 10, 20, 50, 100],\n exportButton:\n process.env.REACT_APP_CSV_EXPORT === 'true' ? true : false,\n }}\n actions={[\n {\n icon: () => ,\n tooltip: 'Refresh',\n isFreeAction: true,\n onClick: () => refetch(),\n },\n ]}\n />\n \n ) : null}\n \n )\n}\n","import * as Yup from 'yup'\nimport React, { FunctionComponent, lazy, useMemo } from 'react'\nimport { Alert } from '@material-ui/lab'\nimport { Box, Button, Container, Grid, TextField } from '@material-ui/core'\nimport { BusyCircular, NoPermission } from '../components'\nimport { Controller, OnSubmit, useForm } from 'react-hook-form'\nimport { gql } from 'graphql.macro'\nimport { ModuleJSON } from './Module'\nimport { MODULES_UPDATE_FRAGMENT, superUserID } from '../utils'\nimport {\n UpdateModuleInput,\n useGetModuleQuery,\n useUpdateModuleMutation,\n} from '../types'\nimport { useSnackbar } from 'notistack'\n\nconst ContentPagesField = lazy(() => import('../components/ContentPagesField'))\n\nconst moduleValidation = Yup.object().shape({\n name: Yup.string(),\n description: Yup.string(),\n imageUrl: Yup.string(),\n moduleName: Yup.string(),\n pages: Yup.array().of(\n Yup.object().shape({\n page: Yup.string().required(),\n unlockThreshold: Yup.number(),\n }),\n ),\n})\n\nexport const GET_MODULE = gql`\n query GetModule($id: ID!) {\n whoami {\n id\n }\n module(id: $id) {\n ...moduleUpdateFields\n }\n }\n ${MODULES_UPDATE_FRAGMENT}\n`\n\nexport const UPDATE_MODULE = gql`\n mutation UpdateModule($id: ID!, $changes: UpdateModuleInput!) {\n updateModule(id: $id, changes: $changes) {\n ...moduleUpdateFields\n }\n }\n ${MODULES_UPDATE_FRAGMENT}\n`\n\nexport interface UpdateModuleFormFields\n extends Omit, 'content'>,\n Omit, 'name'> {\n moduleName: string\n}\n\nexport const EditModuleFetch: FunctionComponent<{ id: string }> = ({ id }) => {\n const { data, loading } = useGetModuleQuery({\n variables: { id },\n fetchPolicy: 'network-only',\n })\n\n const contentJson = useMemo(() => {\n if (data?.module?.content) {\n return JSON.parse(data.module.content) as ModuleJSON\n }\n return undefined\n }, [data])\n\n return loading ? (\n \n ) : data?.whoami?.id !== superUserID ? (\n \n ) : (\n \n )\n}\n\nexport const EditModuleForm: FunctionComponent<{\n id: string\n data: UpdateModuleFormFields\n}> = ({ id, data }) => {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar()\n const [updateModule, { loading: mutationLoading }] = useUpdateModuleMutation()\n const { errors, control, handleSubmit, watch } = useForm<\n UpdateModuleFormFields\n >({\n defaultValues: data,\n validationSchema: moduleValidation,\n })\n\n const onSubmit: OnSubmit = async (data) => {\n const { name, description, imageUrl, moduleName, ...moduleData } = data\n const key = enqueueSnackbar('Updating Module', { persist: true })\n\n try {\n const response = await updateModule({\n variables: {\n id,\n changes: {\n name,\n description,\n imageUrl,\n content: JSON.stringify({ ...moduleData, name: moduleName }),\n },\n },\n })\n\n if (key) {\n closeSnackbar(key)\n }\n\n if (response.data?.updateModule?.id) {\n enqueueSnackbar('Module Updated', { variant: 'success' })\n }\n } catch (e) {\n enqueueSnackbar(e.message, { variant: 'error' })\n }\n }\n\n return (\n \n
\n \n \n \n \n }\n name=\"name\"\n control={control}\n />\n \n \n \n }\n name=\"description\"\n control={control}\n />\n \n \n \n }\n name=\"imageUrl\"\n control={control}\n />\n \n \n \n }\n name=\"moduleName\"\n control={control}\n />\n \n \n \n {Object.keys(errors).length > 0 ? (\n \n Validation Errors Detected\n \n ) : null}\n \n Apply Changes\n \n \n \n \n \n \n
\n
\n )\n}\n","import React, { FunctionComponent, MouseEvent } from 'react'\nimport { adminUrl, moduleUrl } from '../routes'\nimport {\n Box,\n Card,\n CardActionArea,\n CardContent,\n CardMedia,\n Grid,\n Typography,\n} from '@material-ui/core'\nimport { BusyCircular, NoPermission } from '../components'\nimport { gql } from 'graphql.macro'\nimport { MODULES_FRAGMENT, superUserID } from '../utils'\nimport { useGetAllModulesQuery } from '../types'\nimport { useNavigation } from 'react-navi'\n\nexport const GET_ALL_MODULES = gql`\n query GetAllModules {\n whoami {\n id\n }\n modules {\n ...moduleData\n }\n }\n ${MODULES_FRAGMENT}\n`\n\nexport const EditModules: FunctionComponent = () => {\n const navigation = useNavigation()\n const { data, loading } = useGetAllModulesQuery()\n\n function goToModule(event: MouseEvent) {\n navigation.navigate(\n `${adminUrl}${moduleUrl}/${encodeURIComponent(event.currentTarget.id)}`,\n )\n }\n\n if (data?.whoami?.id !== superUserID && !loading) {\n return \n }\n\n return (\n \n \n \n {data?.modules?.map((module) => (\n \n \n \n {module.imageUrl ? (\n \n ) : null}\n \n {module.name}\n \n {module.description}\n \n \n \n \n \n ))}\n \n \n )\n}\n","import * as Yup from 'yup'\nimport React, { Fragment, FunctionComponent, lazy, useMemo } from 'react'\nimport { Alert } from '@material-ui/lab'\nimport {\n Box,\n Button,\n Container,\n FormControlLabel,\n Grid,\n Switch,\n TextField,\n} from '@material-ui/core'\nimport { BusyCircular, NoPermission } from '../components'\nimport { Controller, OnSubmit, useForm } from 'react-hook-form'\nimport { gql } from 'graphql.macro'\nimport { ModuleJSON, ModulePage } from '.'\nimport { PAGE_DATA_FRAGMENT, superUserID } from '../utils'\nimport {\n UpdatePageInput,\n useGetPageQuery,\n useUpdatePageMutation,\n} from '../types'\nimport { useSnackbar } from 'notistack'\n\nconst ContentPagesField = lazy(() => import('../components/ContentPagesField'))\n\nconst pageValidation = Yup.object().shape({\n menuName: Yup.string().required(),\n route: Yup.string(),\n showInMenu: Yup.boolean(),\n content: Yup.object().shape({\n pages: Yup.array().of(\n Yup.object().shape({\n page: Yup.string().required(),\n }),\n ),\n }),\n})\n\nexport const GET_PAGE = gql`\n query GetPage($id: ID!) {\n whoami {\n id\n }\n page(id: $id) {\n ...pageData\n }\n }\n ${PAGE_DATA_FRAGMENT}\n`\n\n// UpdatePageInput\nexport const UPDATE_PAGE = gql`\n mutation UpdatePage($id: ID!, $page: UpdatePageInput!) {\n updatePage(id: $id, page: $page) {\n ...pageData\n }\n }\n ${PAGE_DATA_FRAGMENT}\n`\n\n// Get data and custom modify data\nexport interface UpdatePageFormFields\n extends Omit, 'content'> {\n pages: ModulePage[]\n}\n\n//Fetch data\nexport const EditPageFetch: FunctionComponent<{ id: string }> = ({ id }) => {\n const { data, loading, error } = useGetPageQuery({\n variables: { id },\n fetchPolicy: 'network-only',\n })\n\n const page = data?.page\n\n const contentJson = useMemo(() => {\n if (page?.content) {\n return JSON.parse(page.content) as ModuleJSON\n }\n return undefined\n }, [page])\n\n return (\n \n {error ? : null}\n {loading ? (\n \n ) : data?.whoami?.id !== superUserID ? (\n \n ) : page ? (\n \n ) : null}\n \n )\n}\n\nconst EditPageForm: FunctionComponent<{\n id: string\n data: UpdatePageFormFields\n}> = ({ id, data }) => {\n const { enqueueSnackbar } = useSnackbar()\n const [\n updatePage,\n { loading: mutationLoading, error: mutationError },\n ] = useUpdatePageMutation({\n onCompleted: (data) => {\n if (data.updatePage?.id) {\n enqueueSnackbar('Page Updated', { variant: 'success' })\n }\n },\n })\n const { errors, control, handleSubmit, watch } = useForm<\n UpdatePageFormFields\n >({\n defaultValues: data,\n validationSchema: pageValidation,\n })\n\n const onSubmit: OnSubmit = async (data) => {\n const { pages, ...otherData } = data\n\n updatePage({\n variables: {\n id,\n page: {\n ...otherData,\n content: JSON.stringify({ pages }),\n },\n },\n })\n }\n\n return (\n \n
\n {mutationError ? (\n \n ) : null}\n \n \n \n \n \n \n \n \n \n }\n control={control}\n name=\"showInMenu\"\n valueName=\"checked\"\n disabled={mutationLoading}\n variant=\"outlined\"\n />\n }\n label=\"Display in Menu\"\n />\n \n \n \n \n \n \n \n \n \n \n
\n )\n}\n","import React, { FunctionComponent, MouseEvent } from 'react'\nimport { adminUrl, pageUrl } from '../routes'\nimport { Alert } from '@material-ui/lab'\nimport {\n Box,\n Card,\n Container,\n List,\n ListItem,\n ListItemText,\n} from '@material-ui/core'\nimport { BusyCircular, NoPermission } from '../components'\nimport { gql } from 'graphql.macro'\nimport { PAGE_DATA_FRAGMENT, superUserID } from '../utils'\nimport { useGetAllPagesQuery } from '../types'\nimport { useNavigation } from 'react-navi'\n\nexport const GET_ALL_PAGES = gql`\n query GetAllPages {\n whoami {\n id\n }\n pages {\n ...pageData\n }\n }\n ${PAGE_DATA_FRAGMENT}\n`\n\nexport const EditPages: FunctionComponent = () => {\n const navigation = useNavigation()\n const { data, loading, error } = useGetAllPagesQuery()\n\n function goToPage(event: MouseEvent) {\n navigation.navigate(\n `${adminUrl}${pageUrl}/${encodeURIComponent(event.currentTarget.id)}`,\n )\n }\n\n if (data?.whoami?.id !== superUserID && !loading) {\n return \n }\n\n return (\n \n \n \n {error ? : null}\n \n \n {data?.pages?.map((page) => (\n \n \n \n ))}\n \n \n \n \n )\n}\n","import React, { Fragment, FunctionComponent, useEffect } from 'react'\nimport { AdapterLink, ScheduledSurveyList, BusyCircular } from '../components'\nimport { Alert } from '@material-ui/lab'\nimport {\n Box,\n Button,\n Card,\n CardActionArea,\n CardActions,\n CardHeader,\n Grid,\n Typography,\n} from '@material-ui/core'\nimport { factSheetUrl, factUrl, surveyInstructionsUrl } from '../routes'\nimport { feedbackSurveyID, SCHEDULED_SURVEYS_FRAGMENT } from '../utils'\nimport { gql } from 'graphql.macro'\nimport { Lock, LockOpenVariant } from 'mdi-material-ui'\nimport {\n Maybe,\n useFactsheetModulesMutation,\n useFactsheetUserDashboardQuery,\n} from '../types'\n\nexport const FACTSHEET_USER_DASHBOARD = gql`\n query FactsheetUserDashboard($surveyID: ID!) {\n whoami {\n id\n person {\n id\n firstName\n }\n }\n surveyStats(surveyID: $surveyID) {\n id\n completions\n }\n modulesStatus {\n id\n selected\n unlocked\n module {\n id\n name\n }\n }\n scheduledSurveys {\n ...scheduledSurveys\n }\n }\n ${SCHEDULED_SURVEYS_FRAGMENT}\n`\n\nexport const FEEDBACK_USER_MODULE_SELECTION = gql`\n mutation FactsheetModules {\n selectModules(moduleIDs: [])\n }\n`\n\nexport const FactDashboard: FunctionComponent<{ survey: Maybe }> = ({\n survey,\n}) => {\n const { data, loading, error } = useFactsheetUserDashboardQuery({\n variables: { surveyID: feedbackSurveyID },\n })\n const [selectModules] = useFactsheetModulesMutation({\n refetchQueries: ['FactsheetUserDashboard'],\n })\n\n const firstName = data?.whoami?.person?.firstName\n const surveyCount = data?.surveyStats.completions\n const modules = data?.modulesStatus\n const scheduledSurveys = data?.scheduledSurveys\n\n useEffect(() => {\n if (\n !loading &&\n surveyCount &&\n modules &&\n surveyCount > 0 &&\n modules.length === 0\n ) {\n selectModules()\n }\n }, [loading, surveyCount, modules, selectModules])\n\n const pageTitle = (\n \n Welcome to your personal dashboard, {firstName}\n \n )\n\n if (loading) {\n return \n }\n\n if (\n process.env.REACT_APP_LEGACY_SURVEY_INSTRUCTIONS === 'true' &&\n surveyCount === 0\n ) {\n return (\n \n {pageTitle}\n \n To get started you need to complete a survey.\n \n \n Click here to start the survey\n \n \n )\n }\n\n return (\n \n {pageTitle}\n {error ? {error.message} : null}\n \n {survey ? (\n \n \n Thank you for completing the survey! Below you can access the first\n of your 5 factsheets about teenagers’ development and well-being.\n \n \n After this, one factsheet will ‘unlock’ each week. To view the\n factsheets, click on the buttons below. Once a factsheet is\n ‘unlocked’, you can revisit it as many times as you like.\n \n \n Each factsheet takes about 5-10 minutes to read, and will cover a\n different topic each week. We encourage you to read one factsheet\n each week, to allow yourself time to absorb the information before\n moving on to the next topic.\n \n \n ) : (\n \n \n On this page, you can access your weekly factsheets. One factsheet\n will ‘unlock’ each week. To view the factsheets, click on the\n buttons below. Once a factsheet is ‘unlocked’, you can revisit it as\n many times as you like.\n \n \n Each factsheet takes about 5-10 minutes to read, and covers a\n different topic related to adolescent development and wellbeing. We\n encourage you to read one factsheet each week, to allow yourself\n time to absorb the information before moving on to the next topic.\n \n \n )}\n \n \n {modules?.map((module) => {\n const id = module.module?.id\n const name = module.module?.name\n return module.selected ? (\n \n \n \n \n \n \n \n \n {!module.unlocked ? (\n \n ) : (\n \n )}\n \n \n \n \n \n ) : null\n })}\n \n \n \n )\n}\n","import React, { FunctionComponent, useEffect, useMemo } from 'react'\nimport { BusyCircular, MemoMDX } from '../components'\nimport { Container, Typography } from '@material-ui/core'\nimport { gql } from 'graphql.macro'\nimport { ModuleJSON } from './Module'\nimport {\n useFinishModuleMutation,\n useGetFactsheetContentQuery,\n useEventLogMutation,\n} from '../types'\n\nexport const FACTSHEET_CONTENT = gql`\n query getFactsheetContent($moduleID: ID!) {\n module(id: $moduleID) {\n id\n name\n content\n }\n }\n`\ninterface FactsheetProps {\n moduleID: string\n}\n\nexport const Factsheet: FunctionComponent = ({ moduleID }) => {\n const { data, loading, error: queryError } = useGetFactsheetContentQuery({\n variables: { moduleID },\n })\n const [finishModule, { error: mutationError }] = useFinishModuleMutation({\n variables: { moduleID },\n })\n const [eventLog] = useEventLogMutation({\n errorPolicy: 'ignore',\n variables: { name: 'factsheet_opened', message: moduleID },\n })\n\n const moduleContent = useMemo(() => {\n try {\n return JSON.parse(data?.module?.content ?? '{}') as ModuleJSON\n } catch {\n return undefined\n }\n }, [data])\n\n useEffect(() => {\n finishModule()\n eventLog()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n \n {mutationError ? (\n \n There was an error trying to save your progress {mutationError}\n \n ) : null}\n {queryError ? (\n \n There was an error trying to load the factsheet {queryError}\n \n ) : null}\n {loading ? (\n \n ) : (\n \n )}\n \n )\n}\n","import * as Yup from 'yup'\nimport React, { Fragment, FunctionComponent } from 'react'\nimport { AdapterLink, BusyCircular, FeedbackNode } from '../components'\nimport {\n Box,\n Button,\n Container,\n Card,\n CardContent,\n CardActions,\n TextField,\n Typography,\n CircularProgress,\n} from '@material-ui/core'\nimport { dashboardUrl, memberUrl } from '../routes'\nimport { gql } from 'graphql.macro'\nimport { useGetSettingsQuery, useGetFeedbackLazyQuery } from '../types'\nimport { Alert } from '@material-ui/lab'\nimport { useForm, OnSubmit, Controller } from 'react-hook-form'\n\nexport const GET_FEEDBACK = gql`\n query getFeedback($password: String) {\n feedbackResult(password: $password) {\n data\n }\n }\n`\n\nexport const GET_SETTINGS = gql`\n query getSettings {\n getSettings {\n key\n value\n }\n }\n`\n\nconst validationSchema = Yup.object().shape({\n password: Yup.string().required('Required'),\n})\n\ntype LoginForm = Yup.InferType\n\nexport const Feedback: FunctionComponent = () => {\n const [\n getFeedback,\n { data, loading: feedbackLoading, error: feedbackError },\n ] = useGetFeedbackLazyQuery({ fetchPolicy: 'no-cache' })\n const {\n data: settingsData,\n loading: settingsLoading,\n error: loadingError,\n } = useGetSettingsQuery({\n onCompleted: (data) => {\n const feedbackRequirePassword = data?.getSettings?.find(\n (keyValue) => keyValue?.key === 'FeedbackRequirePassword',\n )\n if (feedbackRequirePassword?.value === 'false') {\n getFeedback()\n }\n },\n })\n const { errors, control, handleSubmit } = useForm({\n defaultValues: { password: '' },\n validationSchema,\n })\n\n const feedbackRequirePassword = settingsData?.getSettings?.find(\n (keyValue) => keyValue?.key === 'FeedbackRequirePassword',\n )\n const feedbackResult = data?.feedbackResult?.data\n const memberDashboardHref = `${memberUrl}${dashboardUrl}`\n\n const onSubmit: OnSubmit = (data) => {\n getFeedback({ variables: { ...data } })\n }\n\n const queryErrors = (\n \n {feedbackError ? (\n {feedbackError.message}\n ) : null}\n {loadingError ? (\n {loadingError.message}\n ) : null}\n \n )\n\n if (settingsLoading) {\n return \n }\n\n if (\n feedbackRequirePassword?.value === 'true' &&\n feedbackResult === undefined\n ) {\n return (\n \n \n
\n \n {queryErrors}\n \n Enter your password to view your feedback.\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n )\n }\n\n return (\n \n {queryErrors}\n {feedbackLoading ? (\n \n ) : null}\n \n \n \n View Modules\n \n \n \n )\n}\n","import * as Yup from 'yup'\nimport React, { FunctionComponent } from 'react'\nimport {\n authEndpoint,\n dashboardUrl,\n factUrl,\n homeUrl,\n memberUrl,\n} from '../routes'\nimport {\n Avatar,\n Button,\n CircularProgress,\n Container,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Link,\n makeStyles,\n Theme,\n Typography,\n} from '@material-ui/core'\nimport { fetchLogin, getUserInfo, useToggle } from '../utils'\nimport { Field, Form, Formik } from 'formik'\nimport { FormikTextField } from '../components'\nimport { gql } from 'graphql.macro'\nimport { LockOutline } from 'mdi-material-ui'\nimport { Maybe, ModuleType, useSendResetEmailMutation } from '../types'\nimport { useApolloClient } from '@apollo/react-hooks'\nimport { useNavigation } from 'react-navi'\nimport { useSnackbar } from 'notistack'\n\nexport const SEND_RESET_EMAIL = gql`\n mutation SendResetEmail($email: String!) {\n resetPasswordEmail(email: $email)\n }\n`\n\ninterface LoginProps {\n email: Maybe\n redirectUrl: Maybe\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n paper: {\n marginTop: theme.spacing(8),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.primary.main,\n },\n form: {\n marginTop: theme.spacing(1),\n },\n submit: {\n margin: theme.spacing(3, 0, 2),\n },\n}))\n\nconst LoginValidationSchema = Yup.object().shape({\n email: Yup.string().email('Must be valid email').required('Required'),\n password: Yup.string().min(2, 'Too Short').required('Required'),\n})\n\nconst ResetPasswordValidationSchema = Yup.object().shape({\n email: Yup.string().email('Must be valid email').required('Required'),\n})\n\nexport const Login: FunctionComponent = ({\n email,\n redirectUrl,\n}) => {\n const classes = useStyles()\n const snackbar = useSnackbar()\n const navigation = useNavigation()\n const client = useApolloClient()\n const [open, toggleOpen] = useToggle(false)\n const [sendResetEmail] = useSendResetEmailMutation()\n\n const emailPrefilled = email ? true : false\n const InitialFormData = { email: email ? email : '', password: '' }\n const InitialResetFormData = { email: '' }\n\n async function onLogin({\n email,\n password,\n }: {\n email: string\n password: string\n }) {\n const url = `${authEndpoint}?username=${encodeURIComponent(\n email,\n )}&password=${encodeURIComponent(password)}`\n\n const result = await fetchLogin(url)\n const variant = result.options?.variant\n snackbar.enqueueSnackbar(result.message, result.options)\n if (variant === 'success') {\n redirectLoggedInUser()\n }\n }\n\n async function redirectLoggedInUser() {\n await client.reFetchObservableQueries().catch(() => {})\n const userQuery = await getUserInfo(client).catch(() => {})\n let moduleType\n if (userQuery) {\n moduleType = userQuery.data.myParticipation?.moduleType\n navigateToPage(moduleType)\n }\n }\n\n function navigateToPage(moduleType: Maybe) {\n if (redirectUrl) {\n navigation.navigate(redirectUrl)\n } else {\n switch (moduleType) {\n case ModuleType.Module:\n navigation.navigate(`${memberUrl}${dashboardUrl}`)\n break\n case ModuleType.Factsheet:\n navigation.navigate(`${factUrl}${dashboardUrl}`)\n break\n default:\n navigation.navigate(homeUrl)\n }\n }\n }\n\n return (\n \n
\n \n \n \n \n Sign in\n \n \n {({ isSubmitting, isValidating }) => (\n
\n \n \n \n {isSubmitting || isValidating ? (\n \n ) : (\n 'Sign In'\n )}\n \n \n )}\n \n \n Forgot Password?\n \n
\n \n {\n const response = await sendResetEmail({ variables: { email } })\n if (response && response.data) {\n snackbar.enqueueSnackbar('Reset Email Sent', {\n variant: 'success',\n })\n toggleOpen()\n }\n }}\n initialValues={InitialResetFormData}\n validationSchema={ResetPasswordValidationSchema}\n >\n {({ isSubmitting, isValidating }) => (\n
\n Forgot Password?\n \n \n Enter the email you used to register and we will send you an\n email with instructions on how to reset your password.\n \n \n \n \n \n \n \n
\n )}\n \n
\n
\n )\n}\n","import React, { Fragment, FunctionComponent } from 'react'\nimport {\n AdapterLink,\n BusyCircular,\n ModulesList,\n ModulesSelect,\n ScheduledSurveyList,\n} from '../components'\nimport { Alert } from '@material-ui/lab'\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Typography,\n} from '@material-ui/core'\nimport {\n feedbackSurveyID,\n SCHEDULED_SURVEYS_FRAGMENT,\n useToggle,\n} from '../utils'\nimport {\n feedbackUrl,\n memberUrl,\n surveyInstructionsUrl,\n surveyUrl,\n} from '../routes'\nimport { GoalsList } from '../components'\nimport { gql } from 'graphql.macro'\nimport { useGetMyParticipationQuery } from '../types'\n\nexport const memberDashboardQueryName = 'getMyParticipation'\n\nexport const GET_MY_PARTICIPATION = gql`\n query getMyParticipation($surveyID: ID!) {\n whoami {\n id\n person {\n id\n firstName\n }\n }\n surveyStats(surveyID: $surveyID) {\n id\n completions\n }\n modulesStatus {\n id\n }\n scheduledSurveys {\n ...scheduledSurveys\n }\n }\n ${SCHEDULED_SURVEYS_FRAGMENT}\n`\n\nexport const MemberDashboard: FunctionComponent = () => {\n const [notification, toggleNotification] = useToggle(false)\n const { data, loading, error } = useGetMyParticipationQuery({\n variables: { surveyID: feedbackSurveyID },\n fetchPolicy: 'network-only',\n onCompleted: (data) => {\n const notInitialSurvey = data.surveyStats.completions > 0\n const scheduledSurveys = (data.scheduledSurveys?.length ?? 0) > 0\n if (notInitialSurvey && scheduledSurveys) {\n toggleNotification()\n }\n },\n })\n\n const surveyCount = data?.surveyStats.completions\n const scheduledSurveys = data?.scheduledSurveys\n\n // State trackers\n const activeModulesLength = data?.modulesStatus?.length ?? 0\n const selectModulesRequired =\n surveyCount && surveyCount > 0 && activeModulesLength === 0\n const modulesActive =\n surveyCount && surveyCount > 0 && activeModulesLength > 0\n\n const pageTitle = (\n \n Welcome to your personal dashboard, {data?.whoami?.person?.firstName}\n \n )\n\n if (loading) {\n return \n }\n\n if (\n process.env.REACT_APP_LEGACY_SURVEY_INSTRUCTIONS === 'true' &&\n surveyCount === 0\n ) {\n return (\n \n {pageTitle}\n \n To get started you need to complete a survey.\n \n \n Click here to start the survey\n \n \n )\n }\n\n return (\n \n {pageTitle}\n {error ? {error.message} : null}\n \n \n New Survey Available\n \n We'd love to hear about your experience of the PiP program in our\n follow-up survey. This will help us to evaluate and improve the\n program in future. If you're happy to complete the survey, please\n click the 'start survey' button.\n \n \n \n {scheduledSurveys?.[0] ? (\n \n Start Survey\n \n ) : null}\n \n \n {selectModulesRequired ? : null}\n {modulesActive ? (\n \n \n Welcome back to your Partners in Parenting program.\n \n \n This is where you will find all of the modules in your personalised\n parenting program. When you complete your program for the first\n time, you will have access to one module every 7 days, until you\n complete all the modules in your program. We encourage you to work\n through the modules in the order they are presented. After\n completing all modules in your program, you can access any of the 9\n modules in any order, as many times as you like.\n \n \n Below you will also see a list of goals you have selected from each\n of your completed modules (one per module). You can mark your goals\n as complete at any time – just click the button under each goal.\n \n \n You can also re-visit your personalised parenting feedback at any\n time. Just click the button below to view your feedback.\n \n \n \n View Your Feedback\n \n \n \n \n \n \n \n \n \n ) : null}\n \n )\n}\n","import React, {\n createContext,\n FunctionComponent,\n useEffect,\n useState,\n useMemo,\n} from 'react'\nimport {\n Box,\n Button,\n Container,\n createStyles,\n Divider,\n Drawer,\n Hidden,\n List,\n ListItem,\n ListItemText,\n makeStyles,\n MobileStepper,\n Theme,\n} from '@material-ui/core'\nimport { BusyCircular, MemoMDX } from '../components'\nimport { gql } from 'graphql.macro'\nimport {\n useEventLogMutation,\n useGetModuleStatusQuery,\n useSaveModuleMutation,\n useSetGoalMutation,\n} from '../types'\nimport { useToggle } from '../utils'\nimport { Alert } from '@material-ui/lab'\n\nconst drawerWidth = 160\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n content: {\n marginLeft: drawerWidth,\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n },\n drawerPaper: {\n width: drawerWidth,\n },\n toolbar: theme.mixins.toolbar as any,\n }),\n)\n\nexport const MODULE_STATUS = gql`\n query getModuleStatus($moduleID: ID!) {\n moduleStatus(moduleID: $moduleID) {\n data\n completed\n module {\n id\n name\n content\n }\n }\n }\n`\n\nexport const SAVE_MODULE_DATA = gql`\n mutation saveModule($moduleID: ID!, $data: String!) {\n saveModuleData(moduleID: $moduleID, data: $data)\n }\n`\n\nexport const SET_GOAL = gql`\n mutation setGoal($goal: SetGoalInput) {\n setGoal(goal: $goal)\n }\n`\n\nexport interface ModuleControlContextProps {\n GoTo: (step: number) => void\n Update: (moduleState: ModuleState) => void\n SetGoal: (name: string, description: string) => void\n color: string\n activeStep: number\n moduleID: undefined | string\n moduleData: undefined | ModuleState\n moduleCompleted: boolean\n}\n\nexport type ModuleKeyObject = { [childKey: string]: string }\n\nexport interface ModuleState {\n [dataKey: string]: string | ModuleKeyObject\n}\n\nexport type ModulePage = {\n page: string\n unlockThreshold?: number\n}\n\nexport type ModuleJSON = {\n name?: string\n color?: string\n backgroundUrl?: string\n pages?: ModulePage[]\n}\n\ninterface ModuleProps {\n moduleID: string\n}\n\nexport const ModuleControlContext = createContext({\n GoTo: () => {},\n Update: () => {},\n SetGoal: () => {},\n color: '#fff',\n activeStep: 0,\n moduleID: undefined,\n moduleData: undefined,\n moduleCompleted: false,\n})\n\nexport const Module: FunctionComponent = ({ moduleID }) => {\n const classes = useStyles()\n const [activeStep, setActiveStep] = useState(0)\n const [moduleState, setModuleState] = useState({})\n const [drawerOpen, toggleDrawerOpen] = useToggle(false)\n const { loading, data, error } = useGetModuleStatusQuery({\n variables: { moduleID },\n fetchPolicy: 'network-only',\n })\n const [saveModule] = useSaveModuleMutation()\n const [saveGoal] = useSetGoalMutation()\n const [eventLog] = useEventLogMutation({\n errorPolicy: 'ignore',\n variables: { name: 'module_opened', message: moduleID },\n })\n\n const moduleData = data?.moduleStatus?.data\n const moduleCompleted = data?.moduleStatus?.completed\n const moduleContent = useMemo(() => {\n const content = data?.moduleStatus?.module?.content\n if (content) {\n return JSON.parse(content) as ModuleJSON\n }\n return undefined\n }, [data])\n\n if (process.env.NODE_ENV === 'development') {\n console.log('key count', Object.keys(moduleState).length)\n console.log(\n 'next page threshold',\n moduleContent?.pages?.[activeStep + 1]?.unlockThreshold,\n )\n }\n\n useEffect(() => {\n eventLog()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // Load initial module state from api\n useEffect(() => {\n if (!loading) {\n const moduleJSON = moduleData ? JSON.parse(moduleData) : {}\n if (process.env.NODE_ENV !== 'production') {\n console.log('State reset from query')\n console.log(moduleJSON)\n }\n setModuleState(moduleJSON)\n }\n }, [moduleData, loading])\n\n // Reset scroll to the top of the page on a page transition to avoid users\n // starting at the bottom of the page. Especially on mobile. Popups interfere\n // with the reset at the moment\n useEffect(() => {\n window.scrollTo(0, 0)\n }, [activeStep])\n\n function handleNext() {\n setActiveStep((prevActiveStep) => prevActiveStep + 1)\n }\n\n function handleBack() {\n setActiveStep((prevActiveStep) => prevActiveStep - 1)\n }\n\n function handleGoTo(step: number) {\n if (\n moduleContent?.pages &&\n step >= 0 &&\n step < moduleContent?.pages?.length\n ) {\n setActiveStep(step)\n }\n }\n\n function unblocked(unblockThreshold: number | undefined) {\n return unblockThreshold\n ? Object.keys(moduleState).length >= unblockThreshold\n : true\n }\n\n function handleGoalSet(name: string, description: string) {\n saveGoal({ variables: { goal: { moduleID, name, description } } })\n }\n\n function handleModuleState(state: ModuleState) {\n setModuleState(state)\n saveModule({ variables: { moduleID, data: JSON.stringify(state) } })\n }\n\n if (error) {\n return {error.message}\n }\n\n if (loading) {\n return \n }\n\n const drawerContents = (\n \n \n \n \n \n {moduleContent?.pages?.map((page, index) => {\n const isUnblocked = unblocked(page.unlockThreshold)\n\n return (\n {\n handleGoTo(index)\n toggleDrawerOpen(false)\n }}\n disabled={!isUnblocked}\n selected={activeStep === index}\n >\n \n \n )\n })}\n \n )\n\n return (\n \n \n \n \n {drawerContents}\n \n \n \n \n
\n {drawerContents}\n \n \n \n \n \n \n \n \n \n \n \n Back\n \n }\n nextButton={\n \n Next\n \n }\n />\n \n \n \n \n )\n}\n","import React, { FunctionComponent, useMemo } from 'react'\nimport { Button } from '@material-ui/core'\nimport { Fragment } from 'react'\nimport { gql } from 'graphql.macro'\nimport { logoutUrl } from '../routes'\nimport { useApolloClient } from '@apollo/react-hooks'\nimport { useGetWhoamiQuery, useOptOutMutation, useGetPageQuery } from '../types'\nimport { useNavigation } from 'react-navi'\nimport { useSnackbar } from 'notistack'\nimport { optOutMessagePageID } from '../utils'\nimport { ModuleJSON } from '.'\nimport { Alert } from '@material-ui/lab'\nimport { BusyCircular, MemoMDX } from '../components'\n\nexport const OPTOUT = gql`\n mutation OptOut {\n optOut\n }\n`\n\nexport const Optout: FunctionComponent = () => {\n const snackbar = useSnackbar()\n const navigation = useNavigation()\n const client = useApolloClient()\n const {\n data: messageData,\n loading: messageLoading,\n error: messageError,\n } = useGetPageQuery({ variables: { id: optOutMessagePageID } })\n const { data, loading } = useGetWhoamiQuery()\n const [optOut] = useOptOutMutation({\n onCompleted: async (data) => {\n if (data.optOut) {\n snackbar.enqueueSnackbar('Opt out complete')\n client.stop()\n await client.resetStore().catch(() => {})\n navigation.navigate(logoutUrl)\n }\n },\n onError: (error) =>\n snackbar.enqueueSnackbar(error.message, { variant: 'error' }),\n })\n\n const userType = data?.whoami?.userType?.name\n const busy = loading || messageLoading\n\n const pageJSON = useMemo(() => {\n try {\n return JSON.parse(messageData?.page?.content ?? '{}') as ModuleJSON\n } catch {\n return undefined\n }\n }, [messageData])\n\n function optOutUser() {\n optOut()\n }\n\n return (\n \n {messageError ? (\n {messageError.message}\n ) : null}\n {busy ? (\n \n ) : (\n \n {pageJSON?.pages?.map((page, index) => (\n \n ))}\n {userType ? (\n \n ) : (\n \n )}\n \n )}\n \n )\n}\n","import React, { Fragment, FunctionComponent, useMemo } from 'react'\nimport { Alert } from '@material-ui/lab'\nimport { BusyCircular, MemoMDX } from '../components'\nimport { ModuleJSON } from '.'\nimport { useGetPageQuery } from '../types'\n\nexport const Page: FunctionComponent<{ id: string }> = ({ id }) => {\n const { data, loading, error } = useGetPageQuery({ variables: { id } })\n\n const pageJSON = useMemo(() => {\n try {\n return JSON.parse(data?.page?.content ?? '{}') as ModuleJSON\n } catch {\n return undefined\n }\n }, [data])\n\n return (\n \n {error ? {error.message} : null}\n {loading ? (\n \n ) : (\n pageJSON?.pages?.map((page, index) => (\n \n ))\n )}\n \n )\n}\n","import { gql } from 'graphql.macro'\nimport { FunctionComponent, useEffect } from 'react'\n\nexport const SUBMIT_REGISTRATION = gql`\n mutation submitRegistration($user: RegisterUser!) {\n registerUser(user: $user)\n }\n`\n\ninterface RegisterProps {\n code: string\n email: string\n tno: string\n ex: string\n}\n\nexport const Register: FunctionComponent = () => {\n // redirect to new website\n useEffect(() => {\n window.location.replace('https://partnersinparenting.com.au/auth/signup')\n })\n\n return null\n}\n","import * as Yup from 'yup'\nimport React, { FunctionComponent } from 'react'\nimport {\n Avatar,\n Box,\n Button,\n CircularProgress,\n Container,\n makeStyles,\n Theme,\n Typography,\n} from '@material-ui/core'\nimport { Field, Form, Formik } from 'formik'\nimport { FormikTextField } from '../components'\nimport { gql } from 'graphql.macro'\nimport { LockReset } from 'mdi-material-ui'\nimport { loginUrl } from '../routes'\nimport { useNavigation } from 'react-navi'\nimport {\n useResetPasswordMutation,\n useResetPasswordTokenMutation,\n} from '../types'\nimport { useSnackbar } from 'notistack'\n\nconst useStyles = makeStyles((theme: Theme) => ({\n paper: {\n marginTop: theme.spacing(8),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.primary.main,\n },\n form: {\n marginTop: theme.spacing(1),\n },\n submit: {\n margin: theme.spacing(3, 0, 2),\n },\n}))\n\nconst LoginTokenValidationSchema = Yup.object().shape({\n newPassword: Yup.string()\n .matches(\n /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{10,}$/,\n 'Password must contain at least one upper case character, one lower, and one number, with a minimum length of 10',\n )\n .required('Required'),\n confirmNewPassword: Yup.string()\n .oneOf([Yup.ref('newPassword')], 'Passwords must match')\n .required('Password confirmation is required'),\n})\n\nconst LoginValidationSchema = Yup.object().shape({\n current: Yup.string().required('Required'),\n newPassword: Yup.string()\n .matches(\n /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{10,}$/,\n 'Password must contain at least one upper case character, one lower, and one number, with a minimum length of 10',\n )\n .required('Required'),\n confirmNewPassword: Yup.string()\n .oneOf([Yup.ref('newPassword')], 'Passwords must match')\n .required('Password confirmation is required'),\n})\n\nexport const RESET_PASSWORD = gql`\n mutation ResetPassword($current: String!, $newPassword: String!) {\n resetPassword(current: $current, newPassword: $newPassword)\n }\n`\n\nexport const RESET_PASSWORD_TOKEN = gql`\n mutation ResetPasswordToken($token: String!, $newPassword: String!) {\n resetPasswordToken(token: $token, newPassword: $newPassword)\n }\n`\n\ninterface ResetPasswordProps {\n isLoggedIn: boolean\n token: string\n}\n\nexport const ResetPassword: FunctionComponent = ({\n isLoggedIn,\n token,\n}) => {\n const classes = useStyles()\n const navigation = useNavigation()\n const { enqueueSnackbar } = useSnackbar()\n const [resetPassword] = useResetPasswordMutation()\n const [resetPasswordToken] = useResetPasswordTokenMutation()\n\n const InitialFormData = {\n token: token ? token : '',\n current: '',\n newPassword: '',\n confirmNewPassword: '',\n }\n\n if (!token && !isLoggedIn) {\n return (\n \n If you have forgotten your password. Click the 'I forgot my password'\n button on the login page for instructions on resetting your password.\n \n )\n }\n\n return (\n \n
\n \n \n \n \n Reset Your Password\n \n {\n let response\n\n // choose mutation\n if (token) {\n response = await resetPasswordToken({\n variables: { token, newPassword },\n })\n } else {\n response = await resetPassword({\n variables: { current, newPassword },\n })\n }\n\n // print response\n if (response && response.errors) {\n enqueueSnackbar(response.errors[0].message, {\n variant: 'error',\n })\n }\n if (response && response.data) {\n enqueueSnackbar('Password Reset', { variant: 'success' })\n navigation.navigate(loginUrl)\n }\n }}\n initialValues={InitialFormData}\n validationSchema={\n token ? LoginTokenValidationSchema : LoginValidationSchema\n }\n >\n {({ isSubmitting, isValidating }) => (\n
\n \n \n \n {isLoggedIn && !token ? (\n \n ) : null}\n \n \n \n {isSubmitting || isValidating ? (\n \n ) : (\n 'Reset Password'\n )}\n \n \n )}\n \n
\n
\n )\n}\n","import React from 'react'\nimport { useCurrentRoute } from 'react-navi'\n\nconst SurveyWrapper = React.lazy(() => import('../components/SurveyWrapper'))\n\nexport const Survey = () => {\n const route = useCurrentRoute()\n\n return \n}\n","import React, { Fragment, useEffect } from 'react'\nimport { AdapterLink } from '../components'\nimport { Alert } from '@material-ui/lab'\nimport {\n Avatar,\n Button,\n CircularProgress,\n Container,\n makeStyles,\n Theme,\n Typography,\n} from '@material-ui/core'\nimport { gql } from 'graphql.macro'\nimport { LockReset } from 'mdi-material-ui'\nimport { loginUrl } from '../routes'\nimport { useVerifyAccountMutation } from '../types'\n\nconst useStyles = makeStyles((theme: Theme) => ({\n paper: {\n marginTop: theme.spacing(8),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.primary.main,\n },\n}))\n\nexport const VERIFY_ACCOUNT_TOKEN = gql`\n mutation VerifyAccount($token: String!) {\n verifyAccount(token: $token)\n }\n`\n\ninterface VerifyAccountProps {\n token?: string\n}\n\nexport const VerifyAccount = ({ token }: VerifyAccountProps) => {\n const classes = useStyles()\n const [verifyAccount, { loading, data, error }] = useVerifyAccountMutation()\n\n useEffect(() => {\n if (token) {\n verifyAccount({ variables: { token } })\n }\n }, [verifyAccount, token])\n\n return (\n \n
\n \n \n \n {!token ? (\n \n Accounts must be verified with a special url\n \n ) : loading ? (\n \n Verifying Account...\n \n \n ) : data?.verifyAccount ? (\n \n \n Account Verified\n \n \n \n ) : error?.message.includes('has already been verified') ? (\n \n \n This email has already been verified\n \n \n \n ) : (\n {error?.message}\n )}\n
\n
\n )\n}\n","import React, { FunctionComponent, MouseEvent } from 'react'\nimport { adminUrl, surveyUrl } from '../routes'\nimport { Alert } from '@material-ui/lab'\nimport {\n Box,\n Card,\n Container,\n List,\n ListItem,\n ListItemText,\n} from '@material-ui/core'\nimport { BusyCircular, NoPermission } from '../components'\nimport { gql } from 'graphql.macro'\nimport { superUserID } from '../utils'\nimport { useGetAllSurveysQuery } from '../types'\nimport { useNavigation } from 'react-navi'\n\nexport const GET_ALL_SURVEYS = gql`\n query GetAllSurveys {\n whoami {\n id\n }\n surveys {\n id\n name\n version\n }\n }\n`\n\nexport const EditSurveys: FunctionComponent = () => {\n const navigation = useNavigation()\n const { data, loading, error } = useGetAllSurveysQuery()\n\n function goToPage(event: MouseEvent) {\n navigation.navigate(\n `${adminUrl}${surveyUrl}/${encodeURIComponent(event.currentTarget.id)}`,\n )\n }\n\n if (data?.whoami?.id !== superUserID && !loading) {\n return \n }\n\n return (\n \n \n \n {error ? {error.message} : null}\n \n \n {data?.surveys?.map((survey) => (\n \n \n \n ))}\n \n \n \n \n )\n}\n","export * from './404'\nexport * from './AdminDashboard'\nexport * from './EditModule'\nexport * from './EditModules'\nexport * from './EditPage'\nexport * from './EditPages'\nexport * from './FactDashboard'\nexport * from './Factsheet'\nexport * from './Feedback'\nexport * from './Login'\nexport * from './MemberDashboard'\nexport * from './Module'\nexport * from './Optout'\nexport * from './Page'\nexport * from './Register'\nexport * from './ResetPassword'\nexport * from './Survey'\nexport * from './VerifyAccount'\nexport * from './EditSurveys'\n","module.exports = __webpack_public_path__ + \"static/media/pip_logo.d7dd70c5.svg\";","import { ModuleType } from '../types'\nimport { UserType } from '../utils'\n\ninterface LinkMap {\n [type: string]: LinkInfo[]\n}\n\nexport interface LinkInfo {\n title: string\n href: string\n}\n\nexport const authEndpoint = `${process.env.REACT_APP_API}${process.env.REACT_APP_AUTH_ENDPOINT}`\nexport const logoutEndpoint = `${process.env.REACT_APP_API}${process.env.REACT_APP_LOGOUT_ENDPOINT}`\nexport const tokenAuthEndpoint = `${process.env.REACT_APP_API}${process.env.REACT_APP_TOKEN_AUTH_ENDPOINT}`\n\nexport const adminUrl = '/admin'\nexport const appendixUrl = '/appendix'\nexport const contactUsUrl = '/contact-us'\nexport const dashboardUrl = '/dashboard'\nexport const factSheetUrl = '/factsheet'\nexport const factUrl = '/facts'\nexport const feedbackUrl = '/feedback'\nexport const homeUrl = '/home'\nexport const howToUrl = '/howto'\nexport const linksUrl = '/links'\nexport const loginUrl = '/login'\nexport const logoutUrl = '/logout'\nexport const memberUrl = '/member'\nexport const moduleUrl = '/module'\nexport const optoutUrl = '/optout'\nexport const pageUrl = '/page'\nexport const registerUrl = '/register'\nexport const resetUrl = '/reset'\nexport const surveyInstructionsUrl = '/instructions'\nexport const surveyUrl = '/survey'\nexport const verifyUrl = '/verify'\nexport const aboutUsUrl = '/about-us'\nconst logoutItem = { title: 'Logout', href: logoutUrl }\n\nexport const activeModuleLinks: LinkMap = {\n [ModuleType.Module]: [logoutItem],\n}\n\nexport const moduleLinks: LinkMap = {\n [ModuleType.Module]: [\n {\n title: 'Appendix',\n href: memberUrl + appendixUrl,\n },\n {\n title: 'Dashboard',\n href: memberUrl + dashboardUrl,\n },\n ],\n [ModuleType.Factsheet]: [\n {\n title: 'Dashboard',\n href: factUrl + dashboardUrl,\n },\n ],\n}\n\nconst adminUrls = [\n {\n title: 'Admin',\n href: adminUrl + dashboardUrl,\n },\n]\n\nif (process.env.REACT_APP_EDIT_MODULES === 'true') {\n adminUrls.push({\n title: 'Edit Modules',\n href: adminUrl + moduleUrl,\n })\n}\n\nif (process.env.REACT_APP_EDIT_PAGES === 'true') {\n adminUrls.push({\n title: 'Edit Pages',\n href: adminUrl + pageUrl,\n })\n}\n\nif (process.env.REACT_APP_EDIT_SURVEYS === 'true') {\n adminUrls.push({\n title: 'Edit Surveys',\n href: adminUrl + surveyUrl,\n })\n}\n\nadminUrls.push(logoutItem)\n\nexport const userLinks: LinkMap = {\n [UserType.Participant]: [logoutItem],\n [UserType.Admin]: adminUrls,\n}\n\nexport const noUserLinks: LinkInfo[] = [\n {\n title: 'Register',\n href: registerUrl,\n },\n {\n title: 'Login',\n href: loginUrl,\n },\n]\n","import * as Sentry from '@sentry/browser'\nimport React, { Dispatch, Fragment, useState } from 'react'\nimport { Alert } from '@material-ui/lab'\nimport { Box, Typography } from '@material-ui/core'\nimport { BusyCircular, BusyLinear } from './LoadingIndicators'\nimport { dashboardUrl, howToUrl, feedbackUrl, logoutUrl } from '../routes'\nimport { feedbackSurveyID, participantMemberTypeChild } from '../utils'\nimport { gql } from 'graphql.macro'\nimport {\n useGetPlainSurveyQuery,\n useGetSurveyQuery,\n useSaveSurveyMutation,\n} from '../types'\nimport { SetStateAction } from 'react'\nimport { Survey, SurveyModel } from 'survey-react'\nimport { useNavigation } from 'react-navi'\nimport { useSnackbar } from 'notistack'\nimport '../assets/survey.css'\n\nexport const GET_SURVEY = gql`\n query getSurvey($survey: ID!) {\n survey(id: $survey) {\n id\n content\n name\n version\n allowedAttempts\n }\n loadSurveyData(id: $survey) {\n id\n data\n }\n surveyStats(surveyID: $survey) {\n id\n completions\n }\n myParticipation {\n id\n members {\n id\n person {\n id\n firstName\n gender {\n id\n code\n }\n }\n participantMemberType {\n id\n name\n }\n }\n }\n }\n`\n\nexport const GET_PLAIN_SURVEY = gql`\n query getPlainSurvey($survey: ID!) {\n survey(id: $survey) {\n id\n content\n name\n version\n }\n }\n`\n\nexport const SAVE_SURVEY = gql`\n mutation saveSurvey(\n $surveyVersionID: ID!\n $data: String!\n $completed: Boolean!\n ) {\n saveSurveyData(\n surveyVersionID: $surveyVersionID\n data: $data\n completed: $completed\n )\n }\n`\n\nexport const pronounSubstitutes: {\n name: string\n singular: string\n plural: string\n}[] = [\n {\n name: 'has_have',\n singular: 'has',\n plural: 'have',\n },\n {\n name: 'is_are',\n singular: 'is',\n plural: 'are',\n },\n {\n name: 'wants_want',\n singular: 'wants',\n plural: 'want',\n },\n {\n name: 'learns_learn',\n singular: 'learns',\n plural: 'learn',\n },\n {\n name: 'hasnt_havent',\n singular: 'hasn’t',\n plural: 'haven’t',\n },\n {\n name: 'trusts_trust',\n singular: 'trusts',\n plural: 'trust',\n },\n {\n name: 'faces_face',\n singular: 'faces',\n plural: 'face',\n },\n {\n name: 'doesnt_dont',\n singular: 'doesn’t',\n plural: 'don’t',\n },\n {\n name: 'finds_find',\n singular: 'finds',\n plural: 'find',\n },\n {\n name: 'self_selves',\n singular: 'self',\n plural: 'selves',\n },\n {\n name: 'sees_see',\n singular: 'sees',\n plural: 'see',\n },\n {\n name: 'realise_realises',\n singular: 'realises',\n plural: 'realise',\n },\n\n {\n name: 'was_were',\n singular: 'was',\n plural: 'were',\n },\n {\n name: 'thinks_think',\n singular: 'thinks',\n plural: 'think',\n },\n {\n name: 'needs_need',\n singular: 'needs',\n plural: 'need',\n },\n]\n\nfunction setSingular(object: { [key: string]: string }) {\n pronounSubstitutes.forEach(\n (pronounObject) => (object[pronounObject.name] = pronounObject.singular),\n )\n return object\n}\n\nfunction setPlural(object: { [key: string]: string }) {\n pronounSubstitutes.forEach(\n (pronounObject) => (object[pronounObject.name] = pronounObject.plural),\n )\n return object\n}\n\ntype SurveyWrapperProps = {\n surveyName: string\n}\n\nfunction SurveyWrapper({ surveyName }: SurveyWrapperProps) {\n const { enqueueSnackbar } = useSnackbar()\n const navigation = useNavigation()\n const [surveyAnswersJSON, setSurveyAnswersJSON] = useState<\n undefined | { [key: string]: string }\n >(undefined)\n const { data, loading, error } = useGetSurveyQuery({\n variables: { survey: surveyName },\n fetchPolicy: 'network-only',\n onCompleted: (data) => {\n function setChild(object: { [key: string]: string }) {\n const members = data.myParticipation?.members\n let child\n if (members) {\n child = members.find(\n (element) =>\n element.participantMemberType?.id === participantMemberTypeChild,\n )\n }\n\n const childName = child?.person?.firstName\n const childGender = child?.person?.gender?.code\n\n if (childName) {\n object['child_name'] = childName\n }\n\n switch (childGender) {\n case 'F':\n object['child_him_her'] = 'her'\n object['child_his_her'] = 'her'\n object['child_he_she'] = 'she'\n object = setSingular(object)\n break\n case 'M':\n object['child_him_her'] = 'him'\n object['child_his_her'] = 'his'\n object['child_he_she'] = 'he'\n object = setSingular(object)\n break\n default:\n object['child_him_her'] = 'them'\n object['child_his_her'] = 'their'\n object['child_he_she'] = 'they'\n object = setPlural(object)\n }\n return object\n }\n\n let json = {}\n try {\n json = JSON.parse(data.loadSurveyData?.data ?? '{}')\n } catch (err) {\n Sentry.captureException(err)\n }\n setSurveyAnswersJSON(setChild(json))\n },\n })\n const [\n saveSurvey,\n { loading: loadingSave, error: errorSave },\n ] = useSaveSurveyMutation()\n\n const surveyVersionID = data?.survey.version\n const surveyContent = data?.survey.content\n const surveyCompletions = data?.surveyStats.completions ?? 0\n const surveyAllowedAttempts = data?.survey.allowedAttempts ?? 1\n\n async function uploadSurvey(complete: boolean, sender: SurveyModel) {\n if (!surveyVersionID) {\n enqueueSnackbar(\n \"Data is missing. We can't save survey results to the server.\",\n { variant: 'error' },\n )\n return\n }\n\n let result\n\n try {\n result = await saveSurvey({\n awaitRefetchQueries: true,\n refetchQueries: ['getMyParticipation'],\n variables: {\n completed: complete,\n data: JSON.stringify(sender.data),\n surveyVersionID: surveyVersionID,\n },\n })\n } catch (error) {\n if (error.message.includes('401')) {\n enqueueSnackbar(\n \"We couldn't save your progress. You're login session has expired.\",\n {\n variant: 'error',\n },\n )\n navigation.navigate(logoutUrl)\n } else {\n enqueueSnackbar('error.message', {\n variant: 'error',\n })\n }\n }\n\n return result?.data?.saveSurveyData\n }\n\n function saveIncompleteSurvey(sender: SurveyModel) {\n uploadSurvey(false, sender)\n }\n\n function completeSurvey(sender: SurveyModel) {\n const saveSurveyData = uploadSurvey(true, sender)\n\n if (saveSurveyData) {\n enqueueSnackbar('You’ve Completed the Parent Survey', {\n variant: 'success',\n })\n const redirectUrl =\n data?.survey.id === feedbackSurveyID\n ? process.env.REACT_APP_HOW_TO === 'true'\n ? `..${howToUrl}`\n : `..${feedbackUrl}`\n : `..${dashboardUrl}`\n navigation.navigate(redirectUrl)\n }\n }\n\n if (loading) {\n return \n }\n\n if (surveyCompletions >= surveyAllowedAttempts) {\n return (\n \n \n You have already completed this survey\n \n \n )\n }\n\n return (\n \n {error ? {error.message} : null}\n {errorSave ? {errorSave.message} : null}\n \n {surveyContent && surveyAnswersJSON ? (\n \n ) : (\n No Survey Content Found\n )}\n \n )\n}\n\ninterface SurveyDataWrapperProps {\n surveyName: string\n setData: Dispatch>\n}\n\nexport function SurveyDataWrapper({\n surveyName,\n setData,\n}: SurveyDataWrapperProps) {\n const { data, loading, error } = useGetPlainSurveyQuery({\n variables: { survey: surveyName },\n fetchPolicy: 'network-only',\n })\n\n function returnData(sender: SurveyModel) {\n setData(JSON.stringify(sender.data))\n }\n\n if (error) {\n return
Error! {error.message}
\n }\n\n if (loading) {\n return \n }\n\n const surveyContent = data?.survey.content\n\n return surveyContent ? (\n \n ) : (\n Survey Content Not Found. Try refreshing the page.\n )\n}\n\nexport default SurveyWrapper\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n )\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister()\n })\n }\n}\n","import HelmetProvider from 'react-navi-helmet'\nimport React, { Suspense } from 'react'\nimport { ApolloClient } from 'apollo-client'\nimport { ApolloLink } from 'apollo-link'\nimport { ApolloProvider } from '@apollo/react-hooks'\nimport { BusyCircular, ErrorBoundary } from './components'\nimport { HttpLink } from 'apollo-link-http'\nimport { InMemoryCache, NormalizedCacheObject } from 'apollo-cache-inmemory'\nimport { MuiThemeProvider } from '@material-ui/core'\nimport { onError } from 'apollo-link-error'\nimport { Router, View } from 'react-navi'\nimport { routes } from './routes'\nimport { SnackbarProvider } from 'notistack'\nimport { theme } from './theme'\n\nconst client = new ApolloClient({\n defaultOptions: {\n watchQuery: { fetchPolicy: 'cache-and-network', errorPolicy: 'all' },\n query: { fetchPolicy: 'network-only', errorPolicy: 'all' },\n mutate: { errorPolicy: 'none' },\n },\n link: ApolloLink.from([\n onError(({ graphQLErrors, networkError }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (graphQLErrors)\n graphQLErrors.map(({ message, locations, path }) =>\n console.log(\n `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`,\n ),\n )\n if (networkError) console.log(`[Network error]: ${networkError}`)\n }\n }),\n new HttpLink({\n uri: `${process.env.REACT_APP_API}${process.env.REACT_APP_GRAPHQL_ENDPOINT}`,\n credentials: 'include',\n }),\n ]),\n cache: new InMemoryCache(),\n})\n\nexport interface AppNaviContext {\n client: ApolloClient\n}\n\nfunction App() {\n return (\n \n \n \n \n \n }>\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default App\n","import * as Sentry from '@sentry/browser'\nimport * as serviceWorker from './serviceWorker'\nimport App from './App'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { version } from '../package.json'\nimport 'react-app-polyfill/stable'\n\nif (\n process.env.REACT_APP_TNO_MODE !== 'true' &&\n process.env.REACT_APP_TNO_MODE !== 'false'\n) {\n throw new Error('REACT_APP_TNO_MODE does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_CSV_EXPORT !== 'true' &&\n process.env.REACT_APP_CSV_EXPORT !== 'false'\n) {\n throw new Error('REACT_APP_CSV_EXPORT does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_EDIT_PAGES !== 'true' &&\n process.env.REACT_APP_EDIT_PAGES !== 'false'\n) {\n throw new Error('REACT_APP_EDIT_PAGES does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_EDIT_SURVEYS !== 'true' &&\n process.env.REACT_APP_EDIT_SURVEYS !== 'false'\n) {\n throw new Error('REACT_APP_EDIT_SURVEYS does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_EDIT_MODULES !== 'true' &&\n process.env.REACT_APP_EDIT_MODULES !== 'false'\n) {\n throw new Error('REACT_APP_EDIT_MODULES does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_HOW_TO !== 'true' &&\n process.env.REACT_APP_HOW_TO !== 'false'\n) {\n throw new Error('REACT_APP_HOW_TO does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_SINGLE_USER_TYPE_MODE !== 'true' &&\n process.env.REACT_APP_SINGLE_USER_TYPE_MODE !== 'false'\n) {\n throw new Error('REACT_APP_SINGLE_USER_TYPE_MODE does not appear to be set')\n}\n\nif (\n process.env.REACT_APP_LEGACY_SURVEY_INSTRUCTIONS !== 'true' &&\n process.env.REACT_APP_LEGACY_SURVEY_INSTRUCTIONS !== 'false'\n) {\n throw new Error(\n 'REACT_APP_LEGACY_SURVEY_INSTRUCTIONS does not appear to be set',\n )\n}\n\nif (process.env.NODE_ENV === 'production') {\n Sentry.init({\n dsn: 'https://27522fe16a514c55b1f7fd905aadf586@sentry.io/1781011',\n environment: process.env.NODE_ENV,\n release: version,\n })\n}\n\nReactDOM.render(, document.getElementById('root'))\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","module.exports = __webpack_public_path__ + \"static/media/pip_logo_small.ef21c130.svg\";","export const feedbackSurveyID = '78d836ce-a784-4882-8cbb-4a31426b699a'\nexport const siteName = 'Partners in Parenting'\nexport const participantMemberTypeChild = 'b6dc8fd5-c993-4e47-9b67-081cbe4fe455'\nexport const participantUser = 'PARTICIPANT'\nexport const optOutMessagePageID = 'b5756e39-ca51-4c5a-b883-9ca96a0ac37b'\nexport const superUserID = 'cbb345eb-26c3-4850-a732-b0bee215178b'\n\nexport enum UserType {\n Participant = 'PARTICIPANT',\n Admin = 'ADMIN',\n System = 'SYSTEM',\n}\n","import * as Sentry from '@sentry/browser'\nimport ApolloClient from 'apollo-client'\nimport { AppNaviContext } from '../App'\nimport { GetWhoamiQuery, ModuleType, Maybe } from '../types'\nimport { gql } from 'graphql.macro'\nimport { loginUrl } from '../routes'\nimport { map, Matcher, redirect } from 'navi'\nimport { OptionsObject } from 'notistack'\nimport { participantUser } from './variables'\nimport { ReactNode } from 'react'\n\nconst GET_WHOAMI = gql`\n query getWhoami {\n whoami {\n id\n email\n userType {\n id\n name\n }\n }\n myParticipation {\n id\n moduleType\n }\n }\n`\n\nexport const getUserInfo = (client: ApolloClient) => {\n return client.query({\n query: GET_WHOAMI,\n })\n}\n\nexport function userAuthentication(type: string, matcher: Matcher) {\n return map(async (request, context: AppNaviContext) => {\n const userQuery = await getUserInfo(context.client).catch(() => {})\n let userType = undefined\n if (userQuery) {\n userType = userQuery.data.whoami?.userType?.name\n }\n\n return userType === type\n ? matcher\n : redirect(\n `${loginUrl}?redirectTo=${encodeURIComponent(\n request.mountpath + request.search,\n )}`,\n { exact: false },\n )\n })\n}\n\nexport function participantAuthentication(\n type: string,\n matcher: Matcher,\n) {\n return map(async (request, context: AppNaviContext) => {\n const userQuery = await getUserInfo(context.client).catch(() => {})\n let userType: Maybe = undefined\n let moduleType: Maybe = undefined\n if (userQuery) {\n userType = userQuery.data.whoami?.userType?.name\n moduleType = userQuery.data.myParticipation?.moduleType\n }\n\n return userType === participantUser && moduleType === type\n ? matcher\n : redirect(\n `${loginUrl}?redirectTo=${encodeURIComponent(\n request.mountpath + request.search,\n )}`,\n { exact: false },\n )\n })\n}\n\nexport function withAuthentication(type: string, matcher: Matcher) {\n return map(async (request, context: AppNaviContext) => {\n const userQuery = await getUserInfo(context.client).catch(() => {})\n let userType: Maybe = undefined\n if (userQuery) {\n userType = userQuery.data.whoami?.userType?.name\n }\n\n return userType === type\n ? matcher\n : redirect(\n `${loginUrl}?redirectTo=${encodeURIComponent(\n request.mountpath + request.search,\n )}`,\n )\n })\n}\n\ninterface SnackbarResult {\n message: string | ReactNode\n options?: OptionsObject\n}\n\nexport async function fetchLogin(url: string): Promise {\n try {\n const result = await fetch(url, { credentials: 'include', mode: 'cors' })\n\n if (result.status === 200 && result.ok) {\n //Valid result\n return {\n message: 'Logged In',\n options: {\n variant: 'success',\n },\n }\n } else {\n //Api error\n try {\n const resText = await result.text()\n return { message: resText, options: { variant: 'error' } }\n } catch (e) {\n Sentry.captureException(e)\n return {\n message: `${result.status} -> An Error Occurred`,\n options: {\n variant: 'error',\n },\n }\n }\n }\n } catch (e) {\n //Network error\n return { message: e.stack || e.message, options: { variant: 'error' } }\n }\n}\n","import { gql } from 'graphql.macro'\n\nexport const SCHEDULED_SURVEYS_FRAGMENT = gql`\n fragment scheduledSurveys on ScheduledSurvey {\n id\n survey {\n id\n name\n }\n }\n`\n\nexport const MODULES_FRAGMENT = gql`\n fragment moduleData on Module {\n id\n description\n imageUrl\n name\n number\n type\n }\n`\n\nexport const MODULES_UPDATE_FRAGMENT = gql`\n fragment moduleUpdateFields on Module {\n id\n name\n content\n description\n imageUrl\n }\n`\n\nexport const PAGE_DATA_FRAGMENT = gql`\n fragment pageData on Page {\n id\n content\n menuName\n route\n showInMenu\n }\n`\n\nexport const LOG_EVENT = gql`\n mutation eventLog($name: String!, $message: String!) {\n logEvent(name: $name, message: $message)\n }\n`\n","import { ModuleControlContextProps } from '../pages'\nimport { format } from 'date-fns'\n\nexport function getRandomInt(min: number, max: number) {\n min = Math.ceil(min)\n max = Math.floor(max)\n return Math.floor(Math.random() * (max - min)) + min //The maximum is exclusive and the minimum is inclusive\n}\n\nexport const ISOFormatString = \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\"\n\nexport const addDateKey = (key: string, context: ModuleControlContextProps) => {\n context.Update({\n ...context.moduleData,\n [key]: format(new Date(), ISOFormatString),\n })\n}\n\nexport const addDataKey = (\n key: string,\n data: string,\n context: ModuleControlContextProps,\n) => {\n context.Update({\n ...context.moduleData,\n [key]: data,\n })\n}\n\n/**\n * Manually reorder an array by moving an item from startIndex to endIndex\n */\nexport function reorder(list: T[], startIndex: number, endIndex: number) {\n const result = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\n/**\n * MIN = Minimum expected value\n * MAX = Maximium expected value\n * Function to normalise the values (MIN / MAX could be integrated)\n */\nexport const normalise = (value: number, min: number, max: number) =>\n ((value - min) * 100) / (max - min)\n\n/**\n * Generate a basic hash\n * @param str\n */\nexport function hashCode(str: string) {\n return str\n .split('')\n .reduce(\n (prevHash, currVal) =>\n ((prevHash << 5) - prevHash + currVal.charCodeAt(0)) | 0,\n 0,\n )\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\n\n/**\n * @see https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n */\nexport function useInterval(callback: any, delay: number) {\n const savedCallback = useRef(undefined)\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback\n }, [callback])\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current()\n }\n if (delay !== null) {\n let id = setInterval(tick, delay)\n return () => clearInterval(id)\n }\n }, [delay])\n}\n\n/**\n * @see https://github.com/streamich/react-use\n */\nexport const useToggle = (\n initialValue: boolean,\n): [boolean, (nextValue?: any) => void] => {\n const [value, setValue] = useState(initialValue)\n\n const toggle = useCallback(\n (nextValue?: any) => {\n if (typeof nextValue === 'boolean') {\n setValue(nextValue)\n } else {\n setValue((currentValue) => !currentValue)\n }\n },\n [setValue],\n )\n\n return [value, toggle]\n}\n","import { primaryColour, secondaryColour } from '../theme'\n\nexport type Colors =\n | 'blue'\n | 'darkCerulean'\n | 'deepPurple'\n | 'green'\n | 'irisBlue'\n | 'maroon'\n | 'orange'\n | 'pelorous'\n | 'purple'\n | 'purpleHeart'\n | 'teal'\n | 'themeMain'\n | 'themeSecondary'\n\nexport const customColorOptions: Colors[] = [\n 'blue',\n 'darkCerulean',\n 'deepPurple',\n 'green',\n 'irisBlue',\n 'maroon',\n 'orange',\n 'pelorous',\n 'purple',\n 'purpleHeart',\n 'teal',\n 'themeMain',\n 'themeSecondary',\n]\n\nexport function getColorHex(color: Colors) {\n switch (color) {\n case 'themeMain':\n return primaryColour\n case 'themeSecondary':\n return secondaryColour\n case 'blue':\n return '#1976d2'\n case 'darkCerulean':\n return '#0E4686'\n case 'pelorous':\n return '#1C80AD'\n case 'irisBlue':\n return '#03BDBD'\n case 'teal':\n return '#009aa0'\n case 'purple':\n return '#4b4bab'\n case 'maroon':\n return '#a0282e'\n case 'green':\n return '#005f56'\n case 'deepPurple':\n return '#4a126b'\n case 'purpleHeart':\n return '#6B2394'\n case 'orange':\n return '#af3711'\n default:\n return '#000'\n }\n}\n","export * from './auth'\nexport * from './gql'\nexport * from './helpers'\nexport * from './hooks'\nexport * from './theme'\nexport * from './variables'\n"],"sourceRoot":""}