{"version":3,"sources":["components/DatePicker.jsx","components/SecondaryButton.jsx","components/StyledNavLink.jsx","responsive/break-points.js","responsive/media-conditions.js","utils/endpoints.js","assets/fonts/Brown-Regular.woff2","assets/fonts/Brown-Light.woff2","theme/enoBreatheTheme.js","utils/computeSectionIcons.jsx","forms/constants/completeProfileConstants.js","utils/scrollToElement.jsx","components/EditableSection.jsx","components/CustomSnackbar.jsx","utils/useLoadDataFromAPI.jsx","components/BirthDate.jsx","utils/api.js","components/admin/Header.jsx","routes/admin/ClinicsAndReferral/UploadFileComponent.jsx","components/TruncatedTooltip.jsx","forms/constants/userStatusesConstants.js","utils/parseUserStatus.jsx","utils/parseUserEthnicity.jsx","utils/parseUserGender.jsx","components/admin/AdminTable.jsx","services/clinicsService.jsx","routes/admin/ClinicsAndReferral/ClinicsList.jsx","routes/admin/ClinicsAndReferral/ClinicsSection.jsx","routes/admin/ClinicsAndReferral/ClinicsAndReferralPage.jsx","utils/computeChartData.jsx","services/usersService.jsx","services/groupsService.jsx","routes/admin/Dashboard.jsx","components/DropInSession.jsx","components/admin/EditDetailsForm.jsx","components/ChangeStatusSection.jsx","routes/admin/Users/UsersDetails.jsx","components/ColorButton.jsx","components/DownloadButton.jsx","components/admin/TableFilters.jsx","routes/admin/Groups/GroupsFilter.jsx","routes/admin/Groups/GroupsList.jsx","routes/admin/Groups/GroupDetails.jsx","routes/admin/Surveys/UserSurvey.jsx","routes/admin/Users/SurveyDetail.jsx","utils/TabPanel.jsx","services/surveysService.jsx","routes/admin/Groups/GroupSurvey.jsx","routes/admin/Groups/GroupSurveys.jsx","routes/admin/Groups/CreateGroup.jsx","routes/admin/Groups/AssignGroupModal.jsx","components/CustomModal.jsx","utils/session.js","routes/admin/Users/hooks.js","routes/admin/Users/UsersFilter.jsx","utils/getAgeForBirthdate.js","routes/admin/Users/UsersList.jsx","routes/AdminPage.jsx","context/UserContext.jsx","components/NeutralButton.jsx","utils/environment.js","components/ErrorPanel.jsx","context/NotificationSnackbarContext.jsx","assets/images/ENO_BREATHE_LOGOTYPE_POS_AW-FINAL.svg","utils/appInsights.js","components/LoggedInHeaderContent.jsx","components/NotLoggedInHeaderContent.jsx","components/AppHeader.jsx","components/ButtonNewsletter.jsx","components/AppFooter.jsx","routes/Home.jsx","routes/HowEnoBreatheHelpedMe.jsx","routes/MeetTheTeam.jsx","routes/ContentPage.jsx","routes/AboutTheEnoBreatheProgramme.jsx","routes/ContactUs.jsx","routes/contentPagesConfig.js","mocks/homeRteContent.js","mocks/aboutRteContent.js","mocks/whoIsForRteContent.js","mocks/faqRteContent.js","mocks/howEnoBreatheHelpedMeRteContent.js","mocks/howEnoBreatheHelpedMeTestimonialsRteContent.js","mocks/meetTheTeam.js","mocks/contactUsRteContent.js","components/Login.jsx","utils/roles.js","components/NotificationSnackbar.jsx","App.jsx","reportWebVitals.js","keycloak.js","index.jsx","routes/PrivateRoute.jsx","components/SecondaryLink.jsx"],"names":["DatePicker","label","name","onBlur","value","onChange","helperText","error","format","disableFuture","disabled","maxDate","minDate","utils","DateFnsUtils","placeholder","variant","color","inputVariant","autoOk","KeyboardButtonProps","InputLabelProps","shrink","undefined","defaultProps","Date","SecondaryButton","withStyles","enoBreatheTheme","root","palette","common","white","backgroundColor","secondary","main","contrastText","Button","StyledNavLink","styled","Link","marginInlineEnd","textDecoration","display","SMALL_SCREEN_MEDIA_CONDITION","endpoints","getUsersProfiles","postAdminGroups","getGroups","getsessionLeaders","getAssignedGroups","getcoordinatorsName","getAssignedStatuses","getClinics","getClinicsDashboard","getUsersDashboard","getGroupsDashboard","getAssignedClinics","uploadClinics","uploadReferralCodes","getSurvey","postAnswers","getUsers","assignUserToGroup","getGroupsSurveys","getDownloadedGroupSurveys","getUserSurvey","getMembersEmailAddresses","themeColours","primary","hint","brownRegular","fontFamily","fontStyle","fontDisplay","fontWeight","src","BrownRegularWoff2","unicodeRange","brownLight","BrownLightWoff2","spacingTheme","createMuiTheme","spacing","text","neutral","darkNeutral","light","dark","lightNeutral","typography","join","fontSize","h1","h2","h3","subtitle1","body1","body2","caption","button","overrides","MuiCssBaseline","MuiBreadcrumbs","marginBlockStart","MuiLink","MuiListSubheader","position","marginInlineStart","content","left","MuiButton","marginBlock","borderRadius","MuiTextField","width","MuiDivider","MuiTypography","gutterBottom","marginBlockEnd","MuiFormControl","fullWidth","margin","alignItems","MuiFormLabel","MuiCard","height","MuiSlider","marginTop","thumb","MuiTableCell","head","lineHeight","body","MuiTabs","overflow","minWidth","computeSectionIcons","rawPageContent","anchorHooks","headings","generateHeadings","JSON","parse","blocks","filter","block","type","Array","forEach","concat","anchors","map","heading","disableGutters","onClick","scrollToElement","key","mb","aria-label","genderOptions","pronounsOptions","ethnicityOptions","elementBoundingClientRectangle","document","querySelector","getBoundingClientRect","bodyBoundingClientRectangle","headerBoundingClientRectangle","window","scrollTo","top","behavior","HorizontalRule","Subtitle","children","draftEditorProps","blockStyleFn","contentBlock","getType","EditableSection","isAdmin","editableContent","useState","editMode","setEditMode","readOnly","toolbar","defaultValue","onSave","data","inlineToolbar","toolbarButtonSize","controls","customControls","icon","blockWrapper","SnackbarTypes","ERROR","SUCCESS","WARNING","CustomSnackbar","props","message","autoHideDuration","vertical","horizontal","open","setOpen","anchorOrigin","onClose","event","reason","severity","useLoadDataFromAPI","url","queryParams","forceReload","setForceReload","React","statusCode","setStatusCode","loading","setLoading","apiData","setApiData","useEffect","createRequest","api","getAPI","then","status","finally","useStyles","makeStyles","ageInput","background","paper","black","BirthDate","inputValue","handleChangeValue","age","setAge","classes","setAgeLabel","datepickerValue","yearsDiff","calculateYearsDiff","currentDate","selectedValue","getFullYear","monthsDiff","getMonth","daysDiff","getDate","container","item","sm","xs","lg","md","handleDateChange","className","fetchAPI","method","headers","baseUrl","environment","enoBackendBasePath","fetchUrl","URLSearchParams","axios","baseURL","Accept","Authorization","sessionStorage","getItem","postAPI","putAPI","patchApi","Header","Box","pb","component","NavLink","activeClassName","to","input","iconSize","UploadFileComponent","uploadUrl","inputId","title","uploadButtonLabel","prepareForRender","keycloak","useKeycloak","selectedFile","setSelectedFile","isSelected","setIsSelected","setStatus","errorFile","setErrorFile","Typography","mr","accept","id","target","includes","files","htmlFor","disableElevation","size","FormData","append","fetch","token","response","json","result","Error","console","log","catch","getElementById","mt","TooltipForTruncatedText","opened","setOpened","Tooltip","onMouseEnter","e","scrollWidth","clientWidth","onMouseOut","disableHoverListener","statuses","getStatusValueFromArrObject","options","found","find","option","getEthnicityValueFromArrString","constants","getGenderValueFromArrString","tableCellValue","row","col","dropInSessions","c","dropInSessionDate","participants","length","tableType","toLowerCase","barrierToParticipation","style","colorStatus","newValue","Chip","dateFormat","maxWidth","noWrap","table","actionsContainer","AdminTable","dataColumns","dataRows","page","rowsPerPageProp","showPagination","totalNumberOfPages","actionsList","onChangePage","onChangeRows","myDataColumns","setMyDataColumns","myDataRows","setMyDataRows","pathname","useLocation","currentPage","setCurrentPage","rowsPerPage","setRowsPerPage","headersWithParents","parent","renderedParents","TableContainer","Paper","Table","stickyHeader","TableHead","TableRow","TableCell","rowSpan","colSpan","i","align","rowTitle","TableBody","classNames","TablePagination","rowsPerPageOptions","count","newPage","onChangeRowsPerPage","rowsPerPg","dataHeaders","inputType","availableAnswers","getAllClinics","a","res","getAllClinicsDashboard","ClinicsList","render","clinics","setClinics","clinicsHeaders","setClinicsHeaders","fetchData","dbUsers","ClinicsAndReferralPage","setRender","Grid","ClinicsSection","labelColors","Object","keys","colors","slice","chartLegend","elem","idx","computeChartDataSet","chartValues","percentage","datasets","dataTableHeaders2","dataLabels","section","editable","required","usersFilters","queryParamKey","values","active","getAllUsersDashboard","dataTableHeaders","dataLabelsCreateAdminGroup","participantHeaders","groupsFilters","getAllGroups","availableGroups","getAllGroupsDashboard","getAllGroupsHeaders","getGroupByName","groups","group","groupName","getNewGroupFormHeaders","getGroupsFilters","initialValues","Dashboard","theme","useTheme","setUsers","setGroups","cardsDetails","setCardsDetails","dbGroups","dbClinics","navLink","animation","cutoutPercentage","layout","padding","legend","maintainAspectRatio","responsive","tooltips","bodyFontColor","borderColor","divider","borderWidth","enabled","footerFontColor","intersect","mode","titleFontColor","cardTitle","keyToChart","Card","CardActionArea","CardContent","category","CardActions","RemoveIcon","HighlightOffIcon","paddingRight","cursor","DropInSession","onChangeSessions","dropInDate","setDropInDate","dropInDates","setDropInDates","formatDate","date","tempDate","split","marginBottom","datePicked","index","newDropIns","dropDate","push","handleRemoveDropInSession","getModalStyle","transform","boxShadow","shadows","createGroupNote","invalidDateMsg","customTemplate","customTheme","EditDetailsForm","handleSave","forCreate","forEdit","handleGetCustomTemplates","history","useHistory","modalStyle","openModal","setOpenModal","editedData","setEditedData","invalidInputKeys","setInvalidInputKeys","saveError","setSaveError","useContext","NotificationSnackbarContext","notification","setNotification","disableYesButtonSubmit","setDisableYesButtonSubmit","disableSaveButtonSubmit","setDisableSaveButtonSubmit","validateInput","validateInputText","test","validateLink","findParentAndUpdateValue","stateData","newData","findParentAndGetValue","handleInputChange","newUpdatedData","formValidation","updatedInvalidDates","inputKey","formInvalidInputs","allInputFieldsCompleted","header","some","element","setAllSessions","initialDate","keysForDates","counter","sessionDates","finalDate","n","newDate","setDate","getFutureSessionsDates","parsedDate","getDay","handleGoBack","rootUrl","location","pop","getSelectOptionValue","toUpperCase","handleSaveForm","handleStatusChange","handleModal","existingGroups","exists","groupDTOS","p","pl","pr","elements","TextField","autoComplete","multiline","rows","inputProps","maxLength","dates","handleDropInSessions","select","MenuItem","ampm","strictCompareDates","k","handleDateAndTimeChange","disablePast","getInputType","NeutralButton","Modal","aria-labelledby","aria-describedby","ChangeStatusSection","userId","useParams","selectedStatus","setSelectedStatus","availableStatuses","ev","UserDetails","formLabels","setFormLabels","handleSaveToDb","stringify","user","ErrorPanel","handleChange","ColorButton","DownloadButton","downloadUrl","fileName","blob","saveAs","gridItem","borderBottomWidth","drawerContents","activeFiltersChip","filterButton","marginRight","filterContents","paddingBottom","drawerTitleBar","zIndex","flex","drawerButtonsContainer","justifyContent","bottom","closeDrawerBtn","getValue","TableFilters","filtersData","handleFilterChange","handleFilterReset","handleDeleteFilter","isFiltersOpen","setIsFiltersOpen","resultsLength","downloadedFileName","setPage","debounce","func","wait","timeout","args","later","clearTimeout","setTimeout","filtersArray","min","InputProps","max","FormControl","RadioGroup","checked","FormLabel","FormControlLabel","control","Radio","handleFiltersButtonClick","handleFilterExit","getTime","onDelete","Drawer","anchor","IconButton","elevation","GroupsFilter","setFetchUrl","setFiltersData","sessionLeaders","coordinatorsName","activeFilters","isArray","disableRefreshDataForFilters","updatedFiltersData","indexOf","Set","updateFiltersAvailableData","initialFilterNameValue","filters","loadInitialFilters","newFilterData","GroupsList","groupsHeaders","setGroupsHeaders","updatedGroups","allGroupsFilter","setAllGroupsFiler","totalNumber","setTotalNumber","numberRow","setNumberRow","grps","nextPageId","totalNumberOfFilteredGroups","getActionsTemplate","actions","action","query","enable","handleClick","nrRows","GroupDetails","groupId","userGroupHeaders","setUserGroupHeaders","users","loadingUsers","statusCodeUsers","emailAddress","loadingEmailAddress","statusEmailAddress","navigator","clipboard","writeText","UserSurvey","SurveyTypes","1","2","3","orangeText","redText","paddingVertical10","paddingLeft50","paddingLeft","SurveyDetail","surveyId","replace","surveyScoreData","table2Config","getLabel","isJsonString","str","userSurveyScores","scores","survey","surveyNumber","rowInfo","surveyAnswersByCategory","owner","paddingVertopopaical10","questions","questionInfo","answer","parentQuestionOrder","marginLeft","answ","TabPanel","other","role","hidden","sx","downloadButton","dropdownSurveys","GroupSurvey","surveyValues","surveysHeaders","disableDownload","setDisableDownload","getScore","score","classNameGad7","gad7","classNameSF36EnergyOrFatigue","sf36EnergyOrFatigue","AT_REST","DURING_ACTIVITY_CLIMBING_STAIRS","DURING_ACTIVITY_RUNNING","DURING_ACTIVITY_WALKING_AROUND","sf36SocialFunctioning","sf36EmotionalWellBeing","sf36GeneralHealth","sf36Pain","sf36PhysicalFunctioning","sf36RoleLimitationsDueToPhysicalHealth","sf36RoleLimitationsDueToEmotionalProblems","notesFromOneOnOne","GroupSurveys","tabIndex","setTabIndex","surveyOne","loadingSurveyOne","laoding","statusCodeSurveyOne","surveyTwo","loadingSurveyTwo","statusCodeSurveyTwo","surveyThree","loadingSurveyThree","statusCodeSurveyThree","a11yProps","groupNumber","borderBottom","Tabs","Tab","CreateGroup","sessionLeader","coordinator","week1DateTime","week2DateTime","week3DateTime","week4DateTime","week5DateTime","week6DateTime","sessionLink","groupBody","AssignGroupModal","participant","handleCloseModal","formik","useFormik","selectedGroupId","validationSchema","Yup","onSubmit","handleAssignGroup","firstname","lastname","handleBlur","touched","errors","Boolean","isSubmitting","handleSubmit","modal","CustomModal","disableBackdropClick","closeAfterTransition","Fade","in","initProps","USER_FILTERS_KEY","encodeURL","string","encodeURIComponent","filtersToQueryParamsMapFn","today","itemValueWithoutSpaces","dateFilter","setFullYear","parseInt","trim","filterData2QueryParams","UsersFilter","sessionController","assignedGroups","assignedStatuses","assignedClinics","sessionFilters","getUserFilters","setUserFilters","this","userFilters","setItem","usersFiltersString","getAgeForBirthdate","birthDate","m","addAge","dateOfBirth","toString","UsersList","usersHeaders","setUsersHeaders","selectedUser","setSelectedUser","snackbarType","setSnackbarType","snackbarMessage","setSnackbarMessage","userDisplayDTOS","userListSize","usr","additionalNotes","sessionBarriers","barriersDescription","gender","ethnicity","dateCovidInfection","hospitalAdmitted","morningSessionAvailability","lunchtimeSessionAvailability","afternoonSessionAvailability","eveningSessionAvailability","englishFirstLanguage","city","AdminPage","exact","from","PrivateRoute","path","allowedRoles","UserContext","createContext","medium","process","keycloakBasePath","shout","actionButton","startIcon","go","reload","doAction","reactPlugin","ReactPlugin","LoggedInHeaderContent","anchorEl","setAnchorEl","roles","handleClose","ml","edge","aria-haspopup","currentTarget","AccountCircle","Menu","disableScrollLock","getContentAnchorEl","transformOrigin","keepMounted","logout","redirectUri","origin","NotLoggedInHeaderContent","isSmallScreen","useMediaQuery","flexDirection","StyledAppBar","AppBar","AppHeader","checkIsFullScreen","initialized","Toolbar","logo","alt","authenticated","visibility","ButtonNewsletter","textTransform","maxHeight","minHeight","alignEnd","center","artsCouncilLogo","AppFooter","useAppInsightsContext","trackMetric","clone","bgcolor","rel","href","Facebook","Twitter","Instagram","border","Home","heroImage","editableContentLocations","HowEnoBreatheHelpedMe","breadcrumbs","Breadcrumbs","separator","SecondaryLink","frameBorder","allow","allowFullScreen","MeetTheTeam","setPageContent","imageContainer","imageContainerRight","img","overflowY","editableimg","rowContainer","paddingTop","image","imageEdit","backgroundPosition","NameImage","textAlign","imageRight","imageLeft","ContentPage","navAnchors","pageContent","computedPageAnchors","setComputedPageAnchors","AboutTheEnoBreatheProgramme","Consumer","ContactUs","data-offset-key","contentPagesConfig","meta","showIfAuthenticated","Login","userRoles","tokenParsed","realm_access","login","admin","inProgramme","preProgramme","postProgramme","NotificationSnackbar","SignUp","lazy","Styles","Survey","Programme","Profile","ParticipantHub","NotFoundPage","OutOfProgramPage","WeekOne","WeekTwo","WeekThree","WeekFour","WeekFive","WeekSix","CalmingPlaylist","WhatToExpectFromASession","fullWidthPaths","Loader","checkFullScreen","isFullScreen","pathfull","ScrollToTop","withRouter","App","userInfo","setUserInfo","isFullWidth","setIsFullWidth","interceptors","use","success","config","Promise","reject","localStorage","AppInsightsContext","Provider","ThemeProvider","CssBaseline","Container","fallback","pageConfig","createElement","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","Keycloak","realm","clientId","ReactDOM","StrictMode","authClient","onTokens","tokens","Component","rest","isAuthorized","setIsAuthorized","allowedRole"],"mappings":"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","file":"static/js/main.27cfdb65.chunk.js","sourcesContent":["import \"date-fns\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport {\n MuiPickersUtilsProvider,\n KeyboardDatePicker,\n} from \"@material-ui/pickers\";\n\nconst DatePicker = ({\n label,\n name,\n onBlur,\n value,\n onChange,\n helperText,\n error,\n format,\n disableFuture,\n disabled,\n maxDate,\n minDate,\n}) => {\n return (\n \n \n \n );\n};\n\nDatePicker.propTypes = {\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n value: PropTypes.instanceOf(Date),\n onChange: PropTypes.func.isRequired,\n helperText: PropTypes.string,\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n format: PropTypes.string,\n disableFuture: PropTypes.bool,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n};\n\nDatePicker.defaultProps = {\n value: null,\n onBlur: null,\n helperText: null,\n error: false,\n disabled: false,\n format: \"dd/MM/yyyy\",\n disableFuture: false,\n maxDate: new Date(\"2100/01/01\"),\n minDate: new Date(\"1900/01/01\"),\n};\n\nexport default DatePicker;\n","import { Button, withStyles } from \"@material-ui/core\";\n\n// black to white button\nconst SecondaryButton = withStyles((enoBreatheTheme) => ({\n root: {\n color: enoBreatheTheme.palette.common.white,\n backgroundColor: enoBreatheTheme.palette.secondary.main,\n \"&:hover\": {\n backgroundColor: enoBreatheTheme.palette.common.white,\n color: enoBreatheTheme.palette.secondary.main,\n },\n },\n disabled: {\n color: enoBreatheTheme.palette.common.white,\n backgroundColor: enoBreatheTheme.palette.secondary.contrastText,\n },\n}))(Button);\n\nexport default SecondaryButton;\n","import { Link, styled } from \"@material-ui/core\";\n\nconst StyledNavLink = styled(Link)({\n color: \"#000\",\n marginInlineEnd: 20,\n textDecoration: \"none\",\n display: \"inline-block\",\n\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n});\n\nexport default StyledNavLink;\n","// eslint-disable-next-line import/prefer-default-export\nexport const SMALL = 500;\n","import { SMALL } from \"./break-points\";\n\n// eslint-disable-next-line import/prefer-default-export\nexport const SMALL_SCREEN_MEDIA_CONDITION = `(max-width:${SMALL}px)`;\n","const endpoints = {\n getUsersProfiles: \"/users-profiles\",\n postAdminGroups: \"/groups\",\n getGroups: \"/groups\",\n getsessionLeaders: \"/groups/sessionLeaders\",\n getAssignedGroups: \"/groups/assignedGroups\",\n getcoordinatorsName: \"/groups/coordinatorsName\",\n getAssignedStatuses: \"/statuses/assignedStatuses\",\n getClinics: \"/clinics\",\n getClinicsDashboard: \"/users/dashboard/region\",\n getUsersDashboard: \"/users/dashboard/status\",\n getGroupsDashboard: \"/groups/dashboard\",\n getAssignedClinics: \"/clinics/assignedClinics\",\n uploadClinics: \"/clinics/import\",\n uploadReferralCodes: \"/referral-codes/import\",\n getSurvey: \"/surveys\",\n postAnswers: \"/answers\",\n getUsers: \"/users\",\n assignUserToGroup: \"/users/\",\n getGroupsSurveys: \"/users/groups/{groupId}/scores/{surveyNumber}\",\n getDownloadedGroupSurveys: \"/users/groups/{groupId}/surveys/{surveyNumber}\",\n getUserSurvey: \"/users/{userId}/survey-score/{surveyId}\",\n getMembersEmailAddresses: \"/groups\",\n};\n\nexport default endpoints;\n","export default __webpack_public_path__ + \"static/media/Brown-Regular.b3641be7.woff2\";","export default __webpack_public_path__ + \"static/media/Brown-Light.02adb465.woff2\";","import { createMuiTheme } from \"@material-ui/core\";\nimport BrownRegularWoff2 from \"../assets/fonts/Brown-Regular.woff2\";\nimport BrownLightWoff2 from \"../assets/fonts/Brown-Light.woff2\";\n\n// ENO colors\n// #000000 #000 #333333 black\n// #b2b2b2 #fff #ffffff white\n// #515456 #75787b #909395 dark grey\n// #919190 #d0d0ce #d9d9d7 light grey\n\nconst themeColours = {\n primary: \"#0162B4\", // #EF3340 #0162B4\n secondary: \"#000000\",\n neutral: \"#ffffff\",\n error: \"#a7232c\",\n darkNeutral: \"#75787b\", // dark grey main\n darkNeutralDark: \"#515456\",\n darkNeutralLight: \"#909395\",\n lightNeutral: \"#d0d0ce\", // light grey main\n lightNeutralDark: \"#919190\",\n lightNeutralLight: \"#d9d9d7\",\n text: {\n primary: \"#000000\",\n secondary: \"#909395\", // dark grey -> light\n hint: \"#FFFFFF\",\n },\n};\n\nconst brownRegular = {\n fontFamily: \"LL Brown\",\n fontStyle: \"normal\",\n fontDisplay: \"swap\",\n fontWeight: 400,\n src: `\n local('LL Brown'),\n local('Brown-Regular'),\n url(${BrownRegularWoff2}) format('woff2')\n `,\n unicodeRange:\n \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF\",\n};\n\nconst brownLight = {\n fontFamily: \"LL Brown\",\n fontStyle: \"normal\",\n fontDisplay: \"swap\",\n fontWeight: 300,\n src: `\n local('LL Brown'),\n local('Brown-Light'),\n url(${BrownLightWoff2}) format('woff2')\n `,\n unicodeRange:\n \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF\",\n};\n\nconst spacingTheme = createMuiTheme({\n spacing: 8,\n});\n\nconst enoBreatheTheme = createMuiTheme({\n palette: {\n text: {\n primary: themeColours.text.primary,\n secondary: themeColours.text.secondary,\n hint: themeColours.text.hint,\n },\n primary: {\n main: themeColours.primary,\n neutral: themeColours.neutral,\n },\n secondary: {\n // #000000 #000 #333333 black\n main: themeColours.secondary,\n },\n neutral: {\n // #b2b2b2 #fff #ffffff white\n main: themeColours.neutral,\n },\n darkNeutral: {\n // #515456 #75787b #909395 dark grey\n light: themeColours.darkNeutralLight,\n main: themeColours.darkNeutral,\n dark: themeColours.darkNeutralDark,\n },\n lightNeutral: {\n // #919190 #d0d0ce #d9d9d7 light grey\n light: themeColours.lightNeutralLight,\n main: themeColours.lightNeutral,\n dark: themeColours.lightNeutralDark,\n },\n error: {\n // #a7232c #EF3340 #f25b66 red\n main: themeColours.error,\n },\n },\n typography: {\n fontFamily: [\n brownRegular.fontFamily,\n \"Gill Sans\",\n \"Gill Sans MT\",\n \"Calibri\",\n \"sans-serif\",\n ].join(\",\"),\n fontSize: 18,\n h1: {\n fontSize: 64,\n fontWeight: 300,\n },\n h2: {\n fontSize: 36,\n fontWeight: 300,\n },\n h3: {\n // should be 24 and allcaps to use it on the login /registration form?\n fontSize: 18,\n fontWeight: 700,\n },\n subtitle1: {\n // or h3?\n fontSize: 18,\n fontWeight: 700,\n },\n body1: {\n // for main text\n fontSize: 18,\n fontWeight: 400,\n },\n body2: {\n // for footer? - should be fontsize: 14?\n fontSize: 14,\n fontWeight: 400,\n },\n caption: {\n fontSize: 14,\n fontWeight: 400,\n },\n button: {\n fontSize: 18,\n fontWeight: 400,\n },\n error: {\n fontSize: 14,\n fontWeight: 400,\n },\n },\n\n overrides: {\n MuiCssBaseline: {\n \"@global\": {\n \"@font-face\": [brownRegular, brownLight],\n },\n },\n MuiBreadcrumbs: {\n root: {\n marginBlockStart: 50,\n fontSize: 14,\n },\n },\n MuiLink: {\n root: {\n fontWeight: 400,\n textDecoration: \"none\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n },\n MuiListSubheader: {\n root: {\n position: \"relative\",\n color: \"inherit\",\n marginInlineStart: spacingTheme.spacing(3),\n \"&::before\": {\n content: '\"•\"',\n position: \"absolute\",\n left: -10,\n },\n },\n },\n MuiButton: {\n root: {\n marginBlock: 10,\n borderRadius: 5,\n },\n },\n MuiTextField: {\n root: {\n marginBlock: 10,\n width: \"100%\",\n borderRadius: 5,\n backgroundColor: \"#fff\",\n },\n },\n MuiDivider: {\n root: {\n marginBlock: \"1rem\",\n },\n },\n MuiTypography: {\n gutterBottom: {\n marginBlockEnd: spacingTheme.spacing(3),\n },\n },\n MuiFormControl: {\n fullWidth: {\n \"&.odd\": {\n backgroundColor: \"#d9d9d7\",\n },\n \"& label.MuiFormLabel-root\": {\n margin: 15,\n },\n \"& div>div\": {\n display: \"flex\",\n alignItems: \"center\",\n },\n },\n },\n MuiFormLabel: {\n root: {\n color: \"#000\",\n // marginLeft: \"15px\",\n },\n },\n MuiCard: {\n root: {\n height: \"100%\",\n },\n },\n MuiSlider: {\n root: {\n marginTop: \"20px\",\n },\n thumb: {\n width: \"24px\",\n height: \"24px\",\n marginTop: \"-12px\",\n },\n },\n MuiTableCell: {\n head: {\n fontSize: 12,\n fontWeight: 700,\n lineHeight: 1.5,\n // whiteSpace: \"nowrap\",\n },\n body: {\n fontSize: 12,\n // whiteSpace: \"nowrap\",\n },\n },\n MuiTabs: {\n root: {\n overflow: \"visible\",\n minWidth: \"200px\",\n },\n },\n },\n});\n\nexport default enoBreatheTheme;\n","import { Box, Link, List, ListItem } from \"@material-ui/core\";\nimport React from \"react\";\nimport scrollToElement from \"./scrollToElement\";\n\n/**\n * @name computeSectionIcons\n * @desc Generates a list of in-page anchors to specified sections in the page.\n * @param {string} rawPageContent Stringified Draft.js RawContentState object\n * @param {string} anchorHooks The type that the anchors will link to. Must be a \"type\" property of the blocks in rawPageContent.\n * @returns {JSX.Element} A list of links\n */\nconst computeSectionIcons = (rawPageContent, anchorHooks) => {\n let headings = [];\n\n const generateHeadings = (content) => {\n return (\n JSON.parse(content).blocks?.filter(\n (block) => block.type === anchorHooks\n ) || []\n );\n };\n\n if (rawPageContent instanceof Array) {\n rawPageContent.forEach((content) => {\n headings = headings.concat(generateHeadings(content));\n });\n } else {\n headings = generateHeadings(rawPageContent);\n }\n\n const anchors = headings.map((heading) => (\n \n scrollToElement(heading.key)}\n >\n {heading.text}\n \n \n ));\n\n return (\n \n {anchors}\n \n );\n};\n\nexport default computeSectionIcons;\n","export const genderOptions = [\n {\n value: \"MALE\",\n label: \"Male\",\n },\n {\n value: \"FEMALE\",\n label: \"Female\",\n },\n {\n value: \"NON_BINARY\",\n label: \"Non-Binary\",\n },\n {\n value: \"TRANSGENDER\",\n label: \"Transgender\",\n },\n {\n value: \"INTERSEX\",\n label: \"Intersex\",\n },\n {\n value: \"PREFER_NOT_TO_SAY\",\n label: \"Prefer not to say\",\n },\n];\n\nexport const pronounsOptions = [\n {\n value: \"SHE_HER\",\n label: \"She/Her\",\n },\n {\n value: \"HE_HIM\",\n label: \"He/Him\",\n },\n {\n value: \"THEY_THEM\",\n label: \"They/Them\",\n },\n {\n value: \"OTHER\",\n label: \"other\",\n },\n];\n\nexport const ethnicityOptions = [\n {\n value: \"ASIAN_OR_ASIAN_BRITISH\",\n label: \"Asian or Asian British\",\n },\n {\n value: \"BLACK_OR_BLACK_BRITISH\",\n label: \"Black or Black British\",\n },\n {\n value: \"MIXED\",\n label: \"Mixed\",\n },\n {\n value: \"MULTIPLE_ETHNIC_BACKGROUND\",\n label: \"Multiple ethnic background\",\n },\n {\n value: \"WHITE_BRITISH\",\n label: \"White British\",\n },\n {\n value: \"ANY_OTHER_WHITE_BACKGROUND\",\n label: \"Any other White background\",\n },\n {\n value: \"OTHER\",\n label: \"Other\",\n },\n {\n value: \"PREFER_NOT_TO_SAY\",\n label: \"Prefer not to say\",\n },\n];\n","const scrollToElement = (key) => {\n const elementBoundingClientRectangle = document\n .querySelector(`[data-offset-key='${key}-0-0']`)\n .getBoundingClientRect();\n const bodyBoundingClientRectangle = document.body.getBoundingClientRect();\n const headerBoundingClientRectangle = document\n .querySelector(\"header\")\n .getBoundingClientRect();\n\n window.scrollTo({\n top:\n elementBoundingClientRectangle.top -\n bodyBoundingClientRectangle.top -\n headerBoundingClientRectangle.height -\n 30,\n behavior: \"smooth\",\n });\n};\n\nexport default scrollToElement;\n","import React, { useState } from \"react\";\nimport { Button, styled } from \"@material-ui/core\";\nimport { HorizontalSplit, TextFields } from \"@material-ui/icons\";\nimport MUIRichTextEditor from \"mui-rte\";\nimport PropTypes from \"prop-types\";\nimport enoBreatheTheme from \"../theme/enoBreatheTheme\";\n\nconst HorizontalRule = () => {\n return
;\n};\n\n// eslint-disable-next-line react/prop-types\nconst Subtitle = ({ children }) => {\n return

{children}

;\n};\n\nconst RteEditButton = styled(Button)({\n marginBlockEnd: enoBreatheTheme.spacing(3),\n});\n\nconst draftEditorProps = {\n blockStyleFn: (contentBlock) => {\n // eslint-disable-next-line react/destructuring-assignment\n const type = contentBlock.getType();\n if (type === \"header-two\") {\n return \"MuiTypography-root MuiTypography-h2 MuiTypography-gutterBottom\";\n }\n return null;\n },\n};\n\nconst EditableSection = ({ isAdmin, editableContent }) => {\n const [editMode, setEditMode] = useState(false);\n\n const handleEditButtonClick = () => {\n setEditMode(true);\n };\n\n const handleRteSave = (data) => {\n // eslint-disable-next-line no-console\n // setPageContent(data);\n setEditMode(false);\n };\n\n return (\n <>\n {/* {isAdmin && !editMode && (\n \n Edit content\n \n )} */}\n\n ,\n type: \"block\",\n blockWrapper: ,\n },\n {\n name: \"subtitle\",\n icon: ,\n type: \"block\",\n blockWrapper: ,\n },\n ]}\n />\n \n );\n};\n\nEditableSection.propTypes = {\n isAdmin: PropTypes.bool,\n editableContent: PropTypes.string.isRequired,\n};\n\nEditableSection.defaultProps = {\n isAdmin: false,\n};\n\nexport default EditableSection;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Alert } from \"@material-ui/lab\";\nimport { Snackbar } from \"@material-ui/core\";\n\nexport const SnackbarTypes = {\n ERROR: \"error\",\n SUCCESS: \"success\",\n WARNING: \"warning\",\n};\nconst CustomSnackbar = (props) => {\n const { message, autoHideDuration, vertical, horizontal, color } = props;\n const [open, setOpen] = useState(true);\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n setOpen(false);\n };\n return (\n \n {message}\n \n );\n};\n\nCustomSnackbar.propTypes = {\n message: PropTypes.string.isRequired,\n color: PropTypes.oneOf([\"info\", \"success\", \"warning\", \"error\"]).isRequired,\n vertical: PropTypes.oneOf([\"top\", \"bottom\"]),\n horizontal: PropTypes.oneOf([\"right\", \"left\", \"center\"]),\n autoHideDuration: PropTypes.number,\n};\nCustomSnackbar.defaultProps = {\n vertical: \"top\",\n horizontal: \"right\",\n autoHideDuration: 3000,\n};\nexport default CustomSnackbar;\n","import React from \"react\";\nimport api from \"./api\";\n\nconst useLoadDataFromAPI = ({\n url,\n queryParams,\n forceReload,\n setForceReload,\n}) => {\n const [statusCode, setStatusCode] = React.useState(0);\n const [loading, setLoading] = React.useState(false);\n const [apiData, setApiData] = React.useState();\n\n React.useEffect(() => {\n url && createRequest();\n }, [url]);\n\n React.useEffect(() => {\n if (forceReload) {\n createRequest();\n setForceReload(false);\n }\n }, [forceReload]);\n\n const createRequest = () => {\n setLoading(true);\n api\n .getAPI(url, null, queryParams)\n .then((data) => {\n setStatusCode(data.status);\n if (data.status < 400) {\n return data.data;\n }\n return null;\n })\n .then((data) => {\n setApiData(data);\n })\n .finally(() => setLoading(false));\n };\n return { data: apiData, statusCode, loading };\n};\n\nexport default useLoadDataFromAPI;\n","import { Grid, makeStyles, TextField } from \"@material-ui/core\";\nimport React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport DatePicker from \"./DatePicker\";\n\nconst useStyles = makeStyles((enoBreatheTheme) => ({\n // ageContainer: {\n // margin: \"auto\",\n // },\n ageInput: {\n \":disabled\": {\n backgroundColor: enoBreatheTheme.palette.background.paper,\n color: enoBreatheTheme.palette.common.black,\n },\n },\n}));\nconst BirthDate = ({\n inputValue,\n name,\n label,\n helperText,\n error,\n handleChangeValue,\n onBlur,\n disabled,\n}) => {\n const [age, setAge] = React.useState(0);\n const classes = useStyles();\n\n useEffect(() => {\n if (inputValue) {\n setAgeLabel(new Date(inputValue));\n }\n });\n\n const handleDateChange = (value) => {\n setAgeLabel(new Date(value));\n handleChangeValue(value);\n };\n\n const setAgeLabel = (datepickerValue) => {\n const yearsDiff = calculateYearsDiff(new Date(), datepickerValue);\n setAge(yearsDiff);\n };\n\n const calculateYearsDiff = (currentDate, selectedValue) => {\n let yearsDiff = currentDate.getFullYear() - selectedValue.getFullYear();\n const monthsDiff = currentDate.getMonth() - selectedValue.getMonth();\n const daysDiff = currentDate.getDate() - selectedValue.getDate();\n if (monthsDiff < 0 || (monthsDiff === 0 && daysDiff < 0)) {\n yearsDiff -= 1;\n }\n return yearsDiff;\n };\n return (\n <>\n \n \n handleDateChange(value)}\n helperText={helperText}\n disabled={disabled}\n error={error}\n />\n \n \n \n \n \n \n );\n};\nBirthDate.propTypes = {\n inputValue: PropTypes.instanceOf(Date),\n name: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n label: PropTypes.string.isRequired,\n helperText: PropTypes.string,\n error: PropTypes.bool,\n handleChangeValue: PropTypes.func.isRequired,\n onBlur: PropTypes.func,\n};\n\nBirthDate.defaultProps = {\n disabled: false,\n inputValue: null,\n helperText: null,\n error: false,\n onBlur: null,\n};\nexport default BirthDate;\n","import axios from \"axios\";\nimport environment from \"./environment\";\n\nconst fetchAPI = (url, method, headers, body, queryParams) => {\n const baseUrl = `${environment.enoBackendBasePath}${url}`;\n const fetchUrl = queryParams\n ? `${baseUrl}?${new URLSearchParams(queryParams)}`\n : baseUrl;\n\n return axios({\n baseURL: fetchUrl,\n method,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Access-Control-Allow-Origin\": \"*\",\n \"Ocp-Apim-Subscription-Key\": \"5d0bead443864a23b5eb134554de3971\",\n Authorization: `Bearer ${sessionStorage.getItem(\"auth.accessToken\")}`,\n ...headers,\n },\n data: body,\n });\n};\n\nconst getAPI = (url, headers = null, queryParams) => {\n return fetchAPI(url, \"GET\", headers, null, queryParams);\n};\n\nconst postAPI = (url, headers, body) => {\n return fetchAPI(url, \"POST\", headers, body);\n};\n\nconst putAPI = (url, headers, body) => {\n return fetchAPI(url, \"PUT\", headers, body);\n};\n\nconst patchApi = (url, headers, body) => {\n return fetchAPI(url, \"PATCH\", headers, body);\n};\n\nconst api = {\n fetchAPI,\n getAPI,\n postAPI,\n putAPI,\n patchApi,\n};\nexport default api;\n","import React from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport { Box } from \"@material-ui/core\";\nimport StyledNavLink from \"../StyledNavLink\";\n\nconst Header = () => {\n return (\n \n \n Dashboard\n \n \n Users\n \n \n Groups\n \n \n Clinics and Referral Codes\n \n \n );\n};\n\nexport default Header;\n","import React, { useState } from \"react\";\nimport { Button, Typography, Box } from \"@material-ui/core\";\nimport AttachFileIcon from \"@material-ui/icons/AttachFile\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useKeycloak } from \"@react-keycloak/web\";\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles(() => ({\n input: {\n display: \"none\",\n },\n iconSize: {\n fontSize: \"inherit\",\n },\n}));\n\nconst UploadFileComponent = ({\n uploadUrl,\n inputId,\n title,\n uploadButtonLabel,\n prepareForRender,\n}) => {\n const { keycloak } = useKeycloak();\n const classes = useStyles();\n\n const [selectedFile, setSelectedFile] = useState();\n const [isSelected, setIsSelected] = useState(false);\n const [status, setStatus] = useState(undefined);\n const [errorFile, setErrorFile] = useState(false);\n\n const handleUpload = (event) => {\n if (\n event.target.value.includes(\".xls\") ||\n event.target.value.includes(\".xlsx\")\n ) {\n setErrorFile(false);\n setStatus({ type: \"not_sent\" });\n setSelectedFile(event.target.files[0]);\n setIsSelected(true);\n if (prepareForRender) {\n prepareForRender(false);\n }\n } else {\n setErrorFile(true);\n setStatus(undefined);\n setSelectedFile();\n setIsSelected(false);\n }\n };\n\n const handleSend = () => {\n const data = new FormData();\n\n data.append(\"file\", selectedFile);\n\n fetch(uploadUrl, {\n method: \"POST\",\n body: data,\n headers: {\n Authorization: `Bearer ${keycloak.token}`,\n },\n })\n .then((response) => response.json())\n .then((result) => {\n if ([\"INTERNAL_SERVER_ERROR\", \"BAD_REQUEST\"].includes(result.status)) {\n throw new Error(result.message);\n } else {\n setStatus({ type: \"success\" });\n console.log(\"Response:\", result);\n }\n })\n .catch((error) => {\n setStatus({ type: \"error\", error });\n console.error(\"Error:\", error);\n })\n .finally(() => {\n document.getElementById(inputId).value = \"\";\n if (prepareForRender) {\n prepareForRender(true);\n }\n });\n };\n\n return (\n <>\n \n {title}\n \n \n \n {/* eslint-disable jsx-a11y/label-has-associated-control */}\n \n \n\n \n \n Send\n \n \n {errorFile && (\n \n File format should be xls or xlsx.\n \n )}\n {isSelected && status?.type === \"not_sent\" ? (\n \n \n \n {selectedFile.name}\n \n \n ) : (\n
\n {status?.type === \"success\" && (\n \n Your file "{selectedFile.name}" was successfully\n uploaded!\n \n )}\n {status?.type === \"error\" && (\n \n Error: Your file "{selectedFile.name}\n " was not uploaded\n \n )}\n
\n )}\n \n );\n};\n\nUploadFileComponent.propTypes = {\n uploadUrl: PropTypes.string.isRequired,\n inputId: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n uploadButtonLabel: PropTypes.string.isRequired,\n prepareForRender: PropTypes.func,\n};\n\nUploadFileComponent.defaultProps = {\n prepareForRender: null,\n};\n\nexport default UploadFileComponent;\n","import React from \"react\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport PropTypes from \"prop-types\";\n\nconst TooltipForTruncatedText = ({ children, title }) => {\n const [opened, setOpened] = React.useState(false);\n const onMouseEnter = (e) => {\n setOpened(e.target.scrollWidth > e.target.clientWidth);\n };\n const onMouseLeave = () => {\n setOpened(false);\n };\n\n return (\n <>\n \n {children}\n \n \n );\n};\n\nTooltipForTruncatedText.propTypes = {\n children: PropTypes.shape({}).isRequired,\n title: PropTypes.string.isRequired,\n};\n\nexport default TooltipForTruncatedText;\n","const statuses = [\n {\n value: \"WAITING\",\n label: \"Waiting\",\n },\n {\n value: \"REGISTRATION_TO_BE_COMPLETED\",\n label: \"Registration to be completed\",\n },\n {\n value: \"REGISTRATION_TO_BE_CHECKED\",\n label: \"Registration to be checked\",\n },\n {\n value: \"ON_HOLD_FURTHER_DISCUSSION_NEEDED\",\n label: \"On hold further discussion needed\",\n },\n {\n value: \"SURVEY_ONE_TO_BE_COMPLETED\",\n label: \"Survey one to be completed\",\n },\n {\n value: \"ASSIGN_GROUP_AND_OFFER_ONE_ON_ONE\",\n label: \"Assign group and offer one on one\",\n },\n {\n value: \"ONE_ON_ONE_PENDING\",\n label: \"One on one pending\",\n },\n {\n value: \"ONE_ON_ONE_CONFIRMED\",\n label: \"One on one confirmed\",\n },\n {\n value: \"IN_PROGRAMME_TBC\",\n label: \"In programme TBC\",\n },\n {\n value: \"IN_PROGRAMME\",\n label: \"In programme\",\n },\n {\n value: \"SURVEY_TWO_TO_BE_COMPLETED\",\n label: \"Survey two to be completed\",\n },\n {\n value: \"POST_PROGRAMME\",\n label: \"Post programme\",\n },\n {\n value: \"POST_PROGRAMME_NO_TWILIGHT\",\n label: \"Post programme no twilight\",\n },\n {\n value: \"REJECTED_REFERRAL_AND_MEDICAL_CRITERIA_NOT_MET\",\n label: \"Rejected referral and medical criteria not met\",\n },\n {\n value: \"REJECTED_RECOVERY_DATE_TOO_SOON\",\n label: \"Rejected recovery date too soon\",\n },\n {\n value: \"REJECTED_OTHER\",\n label: \"Rejected other\",\n },\n {\n value: \"LEFT_NOT_FEELING_WELL_ENOUGH\",\n label: \"Left not feeling well enough\",\n },\n {\n value: \"LEFT_FEELING_BETTER\",\n label: \"Left feeling better\",\n },\n {\n value: \"LEFT_NOT_FOR_THEM\",\n label: \"Left not for them\",\n },\n {\n value: \"LEFT_DUE_TO_TECHNICAL_ASPECTS\",\n label: \"Left due to technical aspects\",\n },\n {\n value: \"LEFT_OTHER\",\n label: \"Left other\",\n },\n {\n value: \"POST_PROGRAMME_SURVEY_THREE_TO_BE_COMPLETED\",\n label: \"Post programme survey three to be completed\",\n },\n {\n value: \"POST_PROGRAMME_SURVEY_THREE_COMPLETED\",\n label: \"Post programme survey three completed\",\n },\n {\n value: \"POST_PROGRAMME_NO_TWILIGHT_SURVEY_THREE_TO_BE_COMPLETED\",\n label: \"Post programme no twilight survey three to be completed\",\n },\n {\n value: \"POST_PROGRAMME_NO_TWILIGHT_SURVEY_THREE_COMPLETED\",\n label: \"Post programme no twilight survey three completed\",\n },\n];\n\nexport default statuses;\n","import statuses from \"../forms/constants/userStatusesConstants\";\n\nexport const getStatusValueFromArrObject = (value, options) => {\n const found = options.find((option) => option.value === value);\n\n if (found) {\n return found.value === \"IN_PROGRAMME_TBC\"\n ? \"Post 1-1 eligibility check\"\n : found.label;\n }\n return \"-\";\n};\n\nexport const getStatusValueFromArrString = (value, options) => {\n const found = options.find((option) => option === value);\n return found ? getStatusValueFromArrObject(found, statuses) : \"-\";\n};\n","import * as constants from \"../forms/constants/completeProfileConstants\";\n\nconst getEthnicityValueFromArrString = (value) => {\n const found = constants.ethnicityOptions.find(\n (option) => option.value === value\n );\n return found ? found.label : \"-\";\n};\n\nexport default getEthnicityValueFromArrString;\n","import * as constants from \"../forms/constants/completeProfileConstants\";\n\nconst getGenderValueFromArrString = (value) => {\n const found = constants.genderOptions.find(\n (option) => option.value === value\n );\n return found ? found.label : \"-\";\n};\n\nexport default getGenderValueFromArrString;\n","import React, { useEffect, useState } from \"react\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Table from \"@material-ui/core/Table\";\nimport PropTypes from \"prop-types\";\nimport { useLocation } from \"react-router-dom\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { Chip, makeStyles } from \"@material-ui/core\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { format } from \"date-fns\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TooltipForTruncatedText from \"../TruncatedTooltip\";\nimport statuses from \"../../forms/constants/userStatusesConstants\";\nimport { getStatusValueFromArrObject } from \"../../utils/parseUserStatus\";\nimport getEthnicityValueFromArrString from \"../../utils/parseUserEthnicity\";\nimport getGenderValueFromArrString from \"../../utils/parseUserGender\";\n\nconst tableCellValue = (row, col) => {\n if (col.key === \"dropInSessions\") {\n return row.dropInSessions.map((c) => c.dropInSessionDate).join(\", \");\n }\n\n if (col.key === \"ethnicity\") {\n return getEthnicityValueFromArrString(row[col.key]);\n }\n\n if (col.key === \"gender\") {\n return getGenderValueFromArrString(row[col.key]);\n }\n\n if (col.key === \"numberOfParticipants\") {\n return row.participants.length;\n }\n\n if (col.tableType === \"boolean\") {\n if (\n row[col.key] === true ||\n row[col.key] === \"true\" ||\n (row[col.key] && row[col.key].toLowerCase() === \"yes\")\n ) {\n if (col.key === \"sessionBarriers\") {\n return (\n \n \n \n );\n }\n\n return ;\n }\n return \"-\";\n }\n\n let colorStatus = \"black\";\n if (col.key === \"registrationStatus\" || col.key === \"status\") {\n const newValue = getStatusValueFromArrObject(row.status, statuses);\n if (\n row[col.key] === \"ON_HOLD_FURTHER_DISCUSSION_NEEDED\" ||\n row[col.key] === \"IN_PROGRAMME_TBC\"\n ) {\n colorStatus = \"red\";\n }\n if (row[col.key] === \"ASSIGN_GROUP_AND_OFFER_ONE_ON_ONE\") {\n colorStatus = \"#00D100\";\n }\n return (\n \n );\n }\n\n if (row[col.key]) {\n if (col.key === \"dateCovidInfection\" || col.key === \"registrationDate\") {\n const dateFormat = format(new Date(row[col.key]), \"dd/MM/yyyy\");\n return (\n \n \n {dateFormat}\n \n \n );\n }\n return (\n \n \n {row[col.key]}\n \n \n );\n }\n return row[col.key] || \"-\";\n};\nconst useStyles = makeStyles({\n table: {\n minWidth: 650,\n },\n actionsContainer: {\n display: \"flex\",\n },\n});\nconst AdminTable = ({\n dataColumns,\n dataRows,\n page,\n rowsPerPageProp,\n showPagination,\n totalNumberOfPages,\n actionsList,\n onChangePage,\n onChangeRows,\n}) => {\n const classes = useStyles();\n const [myDataColumns, setMyDataColumns] = useState([]);\n const [myDataRows, setMyDataRows] = useState([]);\n\n const location = useLocation();\n const { pathname } = location;\n\n const [currentPage, setCurrentPage] = React.useState(page);\n const [rowsPerPage, setRowsPerPage] = React.useState(5);\n const headersWithParents = dataColumns.filter((item) => !!item.parent);\n const renderedParents = {};\n\n useEffect(() => {\n setMyDataRows(dataRows);\n setMyDataColumns(dataColumns);\n setCurrentPage(page);\n setRowsPerPage(rowsPerPageProp);\n }, [dataRows, dataColumns, page, rowsPerPageProp]);\n\n const handleChangePage = (event, newPage) => {\n setCurrentPage(newPage);\n onChangePage(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n const rowsPerPg = +event.target.value;\n setCurrentPage(0);\n setRowsPerPage(rowsPerPg);\n onChangeRows(0, rowsPerPg);\n };\n\n const markParentAsRendered = (parent) => {\n renderedParents[parent] = true;\n return headersWithParents.filter((i) => i.parent === parent).length;\n };\n\n return (\n <>\n \n \n \n \n {actionsList && (\n 0 ? 2 : 1}\n >\n Actions\n \n )}\n {myDataColumns.map((col) =>\n !col.parent || (col.parent && !renderedParents[col.parent]) ? (\n 0 && !col.parent ? 2 : 1\n }\n colSpan={\n headersWithParents.length > 0 && col.parent\n ? markParentAsRendered(col.parent)\n : 1\n }\n align={col.parent ? \"center\" : \"left\"}\n >\n {col.parent ? col.parent : col.rowTitle}\n \n ) : null\n )}\n \n {headersWithParents.length > 0 && (\n \n {headersWithParents.map((col) => (\n {col.rowTitle}\n ))}\n \n )}\n \n \n {myDataRows &&\n myDataRows.length > 0 &&\n myDataRows.map((row) => (\n \n {actionsList && (\n \n
{actionsList(row, pathname)}
\n
\n )}\n {myDataColumns.map((col) => (\n \n {tableCellValue(row, col)}\n \n ))}\n
\n ))}\n
\n
\n
\n {showPagination && (\n \n )}\n \n );\n};\n\nAdminTable.propTypes = {\n dataColumns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n dataRows: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n page: PropTypes.number,\n rowsPerPageProp: PropTypes.number,\n showPagination: PropTypes.bool,\n totalNumberOfPages: PropTypes.number,\n actionsList: PropTypes.func,\n onChangePage: PropTypes.func,\n onChangeRows: PropTypes.func,\n};\nAdminTable.defaultProps = {\n page: 0,\n rowsPerPageProp: 5,\n showPagination: false,\n totalNumberOfPages: 0,\n actionsList: null,\n onChangePage: null,\n onChangeRows: null,\n};\n\nexport default AdminTable;\n","import api from \"../utils/api\";\nimport endpoints from \"../utils/endpoints\";\n\nconst dataHeaders = [\n {\n rowTitle: \"Full name\",\n key: \"clinicName\",\n tableType: \"text\",\n inputType: \"text\",\n availableAnswers: [],\n disabled: false,\n },\n {\n rowTitle: \"Short name\",\n key: \"threeLettersCode\",\n tableType: \"text\",\n inputType: \"text\",\n availableAnswers: [],\n disabled: false,\n },\n {\n rowTitle: \"County\",\n key: \"county\",\n tableType: \"text\",\n inputType: \"text\",\n availableAnswers: [],\n disabled: false,\n },\n {\n rowTitle: \"Region name\",\n key: \"region\",\n tableType: \"text\",\n inputType: \"text\",\n availableAnswers: [],\n disabled: false,\n },\n];\n\nconst getAllClinics = async () => {\n return api\n .getAPI(endpoints.getClinics)\n .then((response) => {\n return response.data;\n })\n .then((res) => res);\n};\n\nconst getAllClinicsDashboard = async () => {\n return api\n .getAPI(endpoints.getClinicsDashboard)\n .then((response) => {\n return response.data;\n })\n .then((res) => res);\n};\n\nconst getAllClinicsHeaders = () => {\n return dataHeaders;\n};\n\nconst getClinic = async (id) => {\n const clincs = getAllClinics();\n const ClinicsInfo = clincs.find((e) => e.id === id);\n return ClinicsInfo;\n};\n\nexport {\n getAllClinics,\n getClinic,\n getAllClinicsHeaders,\n getAllClinicsDashboard,\n};\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport AdminTable from \"../../../components/admin/AdminTable\";\nimport {\n getAllClinicsHeaders,\n getAllClinics,\n} from \"../../../services/clinicsService\";\n\nconst ClinicsList = (props) => {\n const { render } = props;\n const [loading, setLoading] = useState(true);\n const [clinics, setClinics] = useState([]);\n const [clinicsHeaders, setClinicsHeaders] = useState([]);\n\n const fetchData = async () => {\n const dbUsers = await getAllClinics();\n setClinics(dbUsers);\n };\n\n useEffect(() => {\n const titleHeaders = getAllClinicsHeaders();\n setClinicsHeaders(titleHeaders);\n fetchData().then(() => {\n setLoading(false);\n });\n }, []);\n\n useEffect(() => {\n if (render) {\n setLoading(true);\n fetchData().then(() => {\n setLoading(false);\n });\n }\n }, [render]);\n\n return (\n <>\n {loading ? (\n <>\n

Loading data...

\n \n ) : (\n \n )}\n \n );\n};\n\nClinicsList.propTypes = {\n render: PropTypes.bool.isRequired,\n};\n\nexport default ClinicsList;\n","import React, { useState } from \"react\";\nimport { Grid, Box } from \"@material-ui/core\";\nimport UploadFileComponent from \"./UploadFileComponent\";\nimport ClinicsList from \"./ClinicsList\";\nimport environment from \"../../../utils/environment\";\nimport endpoints from \"../../../utils/endpoints\";\n\nconst ClinicsAndReferralPage = () => {\n const [render, setRender] = useState(false);\n\n const prepareForRender = (value) => {\n setRender(value);\n };\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default ClinicsAndReferralPage;\n","import React from \"react\";\nimport { Grid } from \"@material-ui/core\";\nimport UploadFileComponent from \"./UploadFileComponent\";\nimport ClinicsSection from \"./ClinicsSection\";\nimport environment from \"../../../utils/environment\";\nimport endpoints from \"../../../utils/endpoints\";\n\nconst ClinicsAndReferralPage = () => {\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default ClinicsAndReferralPage;\n","import { colors } from \"@material-ui/core\";\n\nconst labelColors = Object.keys(colors)\n .map((key) => colors[key][600])\n .slice(1);\n\nexport const chartLegend = (data) => {\n return data.map((elem, idx) => ({ ...elem, color: labelColors[idx] }));\n};\n\nexport const computeChartDataSet = (data) => {\n const chartValues = data.map((elem) => elem.percentage);\n return {\n datasets: [\n {\n data: chartValues,\n backgroundColor: labelColors.slice(0, chartValues.length),\n },\n ],\n };\n};\n","import environment from \"../utils/environment\";\nimport api from \"../utils/api\";\nimport endpoints from \"../utils/endpoints\";\n\nconst dbJson = [\n {\n id: \"1\",\n registrationDate: \"11/02/2020\",\n referralCode: \"SUF490TPEB\",\n referralClinic: \"Norfolk Community Health and Care Trust\",\n clinicCounty: \"Norfolk\",\n region: \"East of England\",\n firstname: \"John\",\n lastname: \"Doe\",\n status: \"Active\",\n assignedGroup: \"Group 1\",\n sessionLeader: \"Leader 1\",\n groupCoordinator: \"Coordinator 1\",\n additionalNotes:\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\n sessionBarriers: \"No\",\n barrierToParticipation: \"No Barrier\",\n dateOfBirth: \"11/12/1982\",\n age: \"59\",\n city: \"Birmingham\",\n gender: \"female\",\n ethnicity: \"caucasian\",\n dateCovidInfection: \"01/2021\",\n admittedToHospital: \"true\",\n sessionAvailability: \"Tuesdays from 5PM\",\n englishFirstLanguage: \"false\",\n dropinSessionAttended: \"true\",\n },\n {\n id: \"2\",\n firstname: \"Ana\",\n lastname: \"Blandiana\",\n status: \"In programme\",\n assignedGroup: \"Group 1\",\n sessionLeader: \"Leader 1\",\n groupCoordinator: \"Coordinator 1\",\n additionalNotes:\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\n sessionBarriers: \"No\",\n barrierToParticipation: \"No Barrier\",\n registrationDate: \"04/04/2021\",\n referralClinic: \"Royal Victoria Infirmary, Newcastle\",\n region: \"West Midlands\",\n age: \"46\",\n city: \"London\",\n gender: \"female\",\n ethnicity: \"asian\",\n dateCovidInfection: \"03/2021\",\n admittedToHospital: \"false\",\n sessionAvailability: \"weekdays after 8PM\",\n englishFirstLanguage: \"true\",\n dropinSessionAttended: \"false\",\n },\n {\n id: \"3\",\n firstname: \"John\",\n lastname: \"Smith\",\n status: \"In programme\",\n assignedGroup: \"Group 2\",\n sessionLeader: \"Leader 2\",\n groupCoordinator: \"Coordinator 2\",\n additionalNotes:\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\n sessionBarriers: \"No\",\n barrierToParticipation: \"No Barrier\",\n registrationDate: \"05/04/2021\",\n referralClinic: \"Royal Victoria Infirmary, Newcastle\",\n region: \"West Midlands\",\n age: \"46\",\n city: \"London\",\n gender: \"male\",\n ethnicity: \"caucasian\",\n dateCovidInfection: \"01/2021\",\n admittedToHospital: \"true\",\n sessionAvailability: \"weekdays after 8PM\",\n englishFirstLanguage: \"true\",\n dropinSessionAttended: \"false\",\n },\n {\n id: \"4\",\n firstname: \"Bill\",\n lastname: \"John\",\n status: \"Post-programme\",\n assignedGroup: \"Group 1\",\n sessionLeader: \"Leader 1\",\n groupCoordinator: \"Coordinator 1\",\n additionalNotes:\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\n sessionBarriers: \"No\",\n barrierToParticipation: \"No Barrier\",\n registrationDate: \"04/04/2021\",\n referralClinic: \"Royal Victoria Infirmary, Newcastle\",\n region: \"North West\",\n age: \"32\",\n city: \"Southampton\",\n gender: \"male\",\n ethnicity: \"asian\",\n dateCovidInfection: \"12/2020\",\n admittedToHospital: \"true\",\n sessionAvailability: \"weekends\",\n englishFirstLanguage: \"true\",\n dropinSessionAttended: \"true\",\n },\n {\n id: \"5\",\n firstname: \"Samantha\",\n lastname: \"Robinson\",\n status: \"post-programme\",\n assignedGroup: \"Group 3\",\n sessionLeader: \"Leader 3\",\n groupCoordinator: \"Coordinator 3\",\n additionalNotes: \"Additional notes\",\n sessionBarriers: \"true\",\n barrierToParticipation: \"doesn't like singing\",\n registrationDate: \"15/09/2020\",\n referralClinic: \"St George’s Hospital NHS Trust\",\n region: \"London\",\n age: \"68\",\n city: \"London\",\n gender: \"female\",\n ethnicity: \"asian\",\n dateCovidInfection: \"08/2020\",\n admittedToHospital: \"false\",\n sessionAvailability: \"anytime\",\n englishFirstLanguage: \"false\",\n dropinSessionAttended: \"true\",\n },\n {\n id: \"6\",\n firstname: \"Harry\",\n lastname: \"Potter\",\n status: \"On Hold\",\n assignedGroup: \"Group 3\",\n sessionLeader: \"Leader 3\",\n groupCoordinator: \"Coordinator 3\",\n additionalNotes: \"Additional notes\",\n sessionBarriers: \"No\",\n barrierToParticipation: \"No Barrier\",\n registrationDate: \"14/08/2020\",\n referralClinic: \"South Warwickshire Foundation Trust\",\n region: \"West Midlands\",\n age: \"23\",\n city: \"Liverpool\",\n gender: \"male\",\n ethnicity: \"caucasian\",\n dateCovidInfection: \"01/2021\",\n admittedToHospital: \"true\",\n sessionAvailability: \"Tuesdays from 5PM\",\n englishFirstLanguage: \"false\",\n dropinSessionAttended: \"true\",\n },\n {\n id: \"7\",\n firstname: \"Irma\",\n lastname: \"Pince\",\n status: \"On Hold\",\n assignedGroup: \"Group 1\",\n sessionLeader: \"Leader 1\",\n groupCoordinator: \"Coordinator 1\",\n additionalNotes:\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\n sessionBarriers: \"No\",\n barrierToParticipation: \"No Barrier\",\n },\n];\n\n// const dataTableHeaders = [\n// {\n// rowTitle: \"First Name\",\n// key: \"firstname\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Last Name\",\n// key: \"lastname\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Status\",\n// key: \"status\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Assigned Group\",\n// key: \"assignedGroup\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Session Leader\",\n// key: \"sessionLeader\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Group Coordinator\",\n// key: \"groupCoordinator\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Additional Notes\",\n// key: \"additionalNotes\",\n// tableType: \"input\",\n// },\n// {\n// rowTitle: \"Any Barrier To Participation\",\n// key: \"sessionBarriers\",\n// tableType: \"text\",\n// },\n// {\n// rowTitle: \"Barrier to participation\",\n// key: \"barrierToParticipation\",\n// tableType: \"text\",\n// },\n// ];\n\nconst dataTableHeaders2 = [\n {\n rowTitle: \"First Name\",\n key: \"firstname\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Last Name\",\n key: \"lastname\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Status\",\n key: \"status\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Assigned Group\",\n key: \"assignedGroup\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session Leader\",\n key: \"sessionLeader\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Group Coordinator\",\n key: \"coordinator\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Barriers\",\n key: \"sessionBarriers\",\n tableType: \"boolean\",\n },\n {\n rowTitle: \"Registration\",\n key: \"registrationDate\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Referral clinic\",\n key: \"clinicName\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Region\",\n key: \"region\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Age\",\n key: \"age\",\n tableType: \"text\", // interval??\n },\n {\n rowTitle: \"City/town\",\n key: \"city\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Gender\",\n key: \"gender\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Ethnicity\",\n key: \"ethnicity\",\n tableType: \"text\",\n },\n {\n rowTitle: \"COVID infection date\",\n key: \"dateCovidInfection\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Admitted to hospital\",\n key: \"admittedToHospital\",\n tableType: \"boolean\",\n },\n {\n rowTitle: \"Session availability\",\n key: \"sessionAvailability\",\n tableType: \"text\",\n },\n {\n rowTitle: \"English as first language\",\n key: \"englishFirstLanguage\",\n tableType: \"boolean\",\n },\n {\n rowTitle: \"Twilight sessions attended\",\n key: \"twilightSession\",\n tableType: \"boolean\",\n },\n {\n rowTitle: \"Additional notes\",\n key: \"additionalNotes\",\n // tableType: \"text\",\n tableType: \"input\",\n },\n];\n\nconst dataLabels = [\n {\n label: \"Registration date\",\n key: \"registrationDate\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: null,\n editable: false,\n required: true,\n },\n {\n label: \"Referral Code\",\n key: \"referralCode\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: null,\n editable: false,\n required: true,\n },\n {\n label: \"Referral clinic\",\n key: \"referralClinic\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: null,\n editable: false,\n required: false,\n },\n {\n label: \"Clinic county\",\n key: \"county\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"region\",\n editable: false,\n required: true,\n },\n {\n label: \"Region\",\n key: \"name\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"region\",\n editable: false,\n required: true,\n },\n {\n label: \"First Name\",\n key: \"firstname\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: null,\n editable: true,\n required: true,\n },\n {\n label: \"Last Name\",\n key: \"lastname\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: null,\n editable: true,\n required: true,\n },\n {\n label: \"Any barriers to participation\",\n key: \"sessionBarriers\",\n parent: \"userProfile\",\n type: \"select\",\n section: \"user\",\n availableAnswers: [\"Yes\", \"No\"],\n editable: true,\n required: true,\n },\n {\n label: \"Barriers to participation\",\n key: \"barriersDescription\",\n type: \"textarea\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Date of Birth\",\n key: \"dateOfBirth\",\n type: \"custom\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Email\",\n key: \"email\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: null,\n editable: true,\n required: true,\n },\n {\n label: \"Home phone number\",\n key: \"homePhoneNumber\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Mobile phone number\",\n key: \"mobilePhoneNumber\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Address\",\n key: \"address\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"address\",\n editable: true,\n required: true,\n },\n {\n label: \"Second Address Line\", // not to be displayed\n key: \"secondAddressLine\",\n type: \"text\",\n availableAnswers: [],\n parent: \"address\",\n editable: true,\n required: true,\n },\n {\n label: \"Post Code\",\n key: \"postCode\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"address\",\n editable: true,\n required: true,\n },\n {\n label: \"City/Town\",\n key: \"townOrCity\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"address\",\n editable: true,\n required: true,\n },\n {\n label: \"Gender\",\n key: \"gender\",\n type: \"select\",\n section: \"user\",\n parent: \"userProfile\",\n availableAnswers: [\n \"Male\",\n \"Female\",\n \"Non-Binary\",\n \"Transgender\",\n \"Intersex\",\n \"Prefer not to say\",\n ],\n editable: true,\n required: true,\n },\n {\n label: \"Ethnicity\",\n key: \"ethnicity\",\n type: \"select\",\n section: \"user\",\n availableAnswers: [\n \"Asian or Asian British\",\n \"Black or Black British\",\n \"Mixed\",\n \"Multiple ethnic background\",\n \"White British\",\n \"Any other White background\",\n \"Other\",\n \"Prefer not to say\",\n ],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Emergency Contact first name\",\n key: \"firstname\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"emergencyContact\",\n editable: true,\n required: true,\n },\n {\n label: \"Emergency Contact last name\",\n key: \"lastname\",\n type: \"text\",\n availableAnswers: [],\n parent: \"emergencyContact\",\n editable: true,\n required: true,\n },\n {\n label: \"Emergency Contact Phone Number\",\n key: \"phoneNumber\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"emergencyContact\",\n editable: true,\n required: true,\n },\n {\n label: \"Emergency Contact's Relationship to you\",\n key: \"relationship\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"emergencyContact\",\n editable: true,\n required: true,\n },\n {\n label: \"What date would you say you fell ill with COVID?\",\n key: \"covidInfectionDate\",\n type: \"date\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Were you admitted to hospital?\",\n key: \"hospitalAdmitted\",\n type: \"select\",\n section: \"user\",\n parent: \"userProfile\",\n availableAnswers: [\"Yes\", \"No\"],\n editable: true,\n required: true,\n },\n {\n label: \"What date were you admitted to hospital?\",\n key: \"hospitalAdmittedDate\",\n type: \"date\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"What date were you released from hospital?\",\n key: \"hospitalReleaseDate\",\n type: \"date\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Morning availability\",\n key: \"morningSessionAvailability\",\n type: \"select\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n section: \"user\",\n editable: true,\n required: true,\n },\n {\n label: \"Lunchtime availability\",\n key: \"lunchtimeSessionAvailability\",\n type: \"select\",\n availableAnswers: [\"Yes\", \"No\"],\n section: \"user\",\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Afternoon availability\",\n key: \"afternoonSessionAvailability\",\n type: \"select\",\n section: \"user\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Evening availability\",\n key: \"eveningSessionAvailability\",\n type: \"select\",\n section: \"user\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Is English your first language?\",\n key: \"englishAsFirstLanguage\",\n type: \"select\",\n section: \"user\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Specify Language\",\n key: \"firstLanguage\",\n type: \"text\",\n section: \"user\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Consent Given\", // not to be displayed\n key: \"consentGiven\",\n type: \"text\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: false,\n required: true,\n },\n {\n label: \"Registration Passed\",\n key: \"registrationPassed\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Pre-programme Health and Wellbeing Survey completed\",\n key: \"firstSurveyCompleted\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Pre Programme Call\",\n key: \"preProgrammeCall\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Additional notes\",\n key: \"additionalNotes\",\n type: \"textarea\",\n section: \"admin\",\n availableAnswers: [],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Assigned Group\",\n key: \"assignedGroup\",\n type: \"text\",\n section: \"admin\",\n availableAnswers: [],\n parent: \"group\",\n editable: false,\n required: true,\n },\n {\n label: \"Session Leader\",\n key: \"sessionLeader\",\n type: \"text\",\n section: \"admin\",\n availableAnswers: [],\n parent: \"group\",\n editable: false,\n required: true,\n },\n {\n label: \"Group Coordinator\",\n key: \"groupCoordinator\",\n type: \"text\",\n section: \"admin\",\n availableAnswers: [],\n parent: \"group\",\n editable: false,\n required: true,\n },\n {\n label: \"Session 1\",\n key: \"sessionOne\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Session 2\",\n key: \"sessionTwo\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Session 3\",\n key: \"sessionThree\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Session 4\",\n key: \"sessionFour\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Session 5\",\n key: \"sessionFive\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Session 6\",\n key: \"sessionSix\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Post programme Health and Wellbeing Survey completed\",\n key: \"secondSurveyCompleted\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Twilight sessions attended\",\n key: \"twilightSession\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Third survey completed\",\n key: \"thirdSurveyCompleted\",\n type: \"select\",\n section: \"admin\",\n availableAnswers: [\"Yes\", \"No\"],\n parent: \"userProfile\",\n editable: true,\n required: true,\n },\n {\n label: \"Status\",\n key: \"status\",\n type: \"custom\",\n availableAnswers: [],\n parent: null,\n editable: true,\n required: true,\n },\n {\n label: \"Status description\",\n key: \"statusDescription\",\n type: \"text\",\n section: \"admin\",\n availableAnswers: [],\n parent: null,\n editable: false,\n required: true,\n },\n];\n\nconst usersFilters = [\n {\n rowTitle: \"First Name\",\n key: \"firstname\",\n tableType: \"textfield\",\n value: \"null\",\n queryParamKey: \"firstname\",\n },\n {\n rowTitle: \"Last Name\",\n key: \"lastname\",\n tableType: \"textfield\",\n value: \"null\",\n queryParamKey: \"lastname\",\n },\n {\n rowTitle: \"Additional Notes\",\n key: \"additionalNotes\",\n tableType: \"textfield\",\n value: \"null\",\n queryParamKey: \"userProfile.additionalNotes\",\n },\n {\n rowTitle: \"Assigned Group\",\n key: \"assignedGroup\",\n tableType: \"text\",\n values: [\"Group 1\", \"Group 2\", \"Group 3\"],\n active: false,\n value: null,\n queryParamKey: \"group.name\",\n },\n {\n rowTitle: \"Status\",\n key: \"status\",\n tableType: \"text\",\n values: [\"In programme\", \"Post-programme\"],\n active: false,\n value: null,\n queryParamKey: \"status\",\n },\n {\n rowTitle: \"Any barriers to participation\",\n key: \"sessionBarriers\",\n tableType: \"boolean\",\n active: false,\n value: null,\n queryParamKey: \"userProfile.sessionBarriers\",\n },\n {\n rowTitle: \"Registration date\",\n key: \"registrationDate\",\n tableType: \"dateRange\",\n active: false,\n value: null,\n queryParamKey: \"registrationDate\",\n },\n {\n rowTitle: \"Referral clinic\",\n key: \"clinicName\",\n tableType: \"text\",\n values: [\"Clinic 1\", \"Clinic 2\"],\n active: false,\n value: null,\n queryParamKey: \"referralCode.clinic.fullName\",\n },\n {\n rowTitle: \"Referral code\",\n key: \"referralCode\",\n tableType: \"textfield\",\n value: null,\n queryParamKey: \"referralCode.code\",\n },\n {\n rowTitle: \"Region\",\n key: \"region\",\n tableType: \"text\",\n values: [\"North West\", \"London\"],\n active: false,\n value: null,\n queryParamKey: \"referralCode.clinic.region.name\",\n },\n {\n rowTitle: \"Age\",\n key: \"age\",\n tableType: \"intRange\",\n active: false,\n value: null,\n queryParamKey: \"userProfile.dateOfBirth\",\n },\n {\n rowTitle: \"City/town\",\n key: \"city\",\n tableType: \"text\",\n values: [\"London\", \"Birmingham\", \"Southampton\"],\n active: false,\n value: null,\n queryParamKey: \"userProfile.address.townOrCity\",\n },\n {\n rowTitle: \"Gender\",\n key: \"gender\",\n tableType: \"text\",\n values: [\n \"Male\",\n \"Female\",\n \"Non-binary\",\n \"Transgender\",\n \"Intersex\",\n \"Prefer not to say\",\n ],\n active: false,\n value: null,\n queryParamKey: \"userProfile.gender\",\n },\n {\n rowTitle: \"Ethnicity\",\n key: \"ethnicity\",\n tableType: \"text\",\n values: [\"asian\", \"caucasian\"],\n active: false,\n value: null,\n queryParamKey: \"userProfile.ethnicity\",\n },\n {\n rowTitle: \"Felt ill with COVID?\",\n key: \"dateCovidInfection\",\n tableType: \"dateRange\",\n active: false,\n value: null,\n queryParamKey: \"userProfile.covidInfectionDate\",\n },\n {\n rowTitle: \"Admitted to hospital?\",\n key: \"admittedToHospital\",\n tableType: \"boolean\",\n active: false,\n value: null,\n queryParamKey: \"userProfile.hospitalAdmitted\",\n },\n {\n rowTitle: \"Session availability\",\n key: \"sessionAvailability\",\n tableType: \"text\",\n values: [\"morning\", \"lunch time\", \"afternoon\", \"evening\"],\n active: false,\n value: null,\n queryParamKey:\n \"userProfile.morningSessionAvailability OR userProfile.lunchtimeSessionAvailability OR userProfile.afternoonSessionAvailabilityORuserProfile.eveningSessionAvailability\",\n },\n {\n rowTitle: \"First language - English\",\n key: \"englishFirstLanguage\",\n tableType: \"boolean\",\n active: false,\n value: null,\n queryParamKey: \"userProfile.englishAsFirstLanguage\",\n },\n {\n rowTitle: \"Twilight sessions attended\",\n key: \"twilightSession\",\n tableType: \"boolean\",\n active: false,\n value: null,\n queryParamKey: \"userProfile.twilightSession\",\n },\n];\n\nconst getAllUsers = async () => {\n return api\n .getAPI(endpoints.getUsers)\n .then((response) => {\n return response.data;\n })\n .then((res) => res);\n};\n\nconst getAllUsersDashboard = async () => {\n return api\n .getAPI(endpoints.getUsersDashboard)\n .then((response) => {\n return response.data;\n })\n .then((res) => res);\n};\n\nconst getAllUsersMocked = async () => {\n return dbJson;\n};\n\nconst getAllUsersHeaders = () => {\n return dataTableHeaders2;\n};\n\nconst getUser = async (id) => {\n const headers = {\n Authorization: `Bearer ${sessionStorage.getItem(\"auth.accessToken\")}`,\n };\n\n return fetch(`${environment.enoBackendBasePath}/users/${id}`, {\n headers,\n })\n .then((response) => {\n return response.json();\n })\n .then((res) => res);\n};\n\nconst getUserFormHeaders = () => {\n return dataLabels;\n};\n\nconst getUsersFilters = () => {\n return usersFilters;\n};\n\nexport {\n getAllUsers,\n getAllUsersMocked,\n getUser,\n getAllUsersHeaders,\n getUserFormHeaders,\n getUsersFilters,\n getAllUsersDashboard,\n};\n","import api from \"../utils/api\";\nimport endpoints from \"../utils/endpoints\";\nimport environment from \"../utils/environment\";\n\nconst dataTableHeaders = [\n {\n rowTitle: \"Group Number\",\n key: \"groupName\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session Leader\",\n key: \"sessionLeader\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Group Coordinator\",\n key: \"coordinator\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Zoom session link\",\n key: \"sessionLink\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 1\",\n key: \"week1DateTime\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Session 2\",\n key: \"week2DateTime\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Session 3\",\n key: \"week3DateTime\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Session 4\",\n key: \"week4DateTime\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Session 5\",\n key: \"week5DateTime\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Session 6\",\n key: \"week6DateTime\",\n tableType: \"date\",\n },\n {\n rowTitle: \"Total number of participants in the Group\",\n key: \"numberOfParticipants\",\n tableType: \"text\",\n },\n];\n\nconst dataLabels = [\n {\n label: \"Group Number\",\n key: \"groupName\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: true,\n },\n {\n label: \"Session Leader\",\n key: \"sessionLeader\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: true,\n },\n {\n label: \"Group Coordinator\",\n key: \"coordinator\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: false,\n },\n {\n label: \"Zoom session link\",\n key: \"sessionLink\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: true,\n },\n {\n label: \"Session 1\",\n key: \"week1DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Session 2\",\n key: \"week2DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Session 3\",\n key: \"week3DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Session 4\",\n key: \"week4DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Session 5\",\n key: \"week5DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Session 6\",\n key: \"week6DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Total number of participants in the Group\",\n key: \"participants\",\n type: \"count\",\n availableAnswers: [],\n editable: false,\n required: true,\n },\n {\n label: \"Notes\",\n key: \"notes\",\n type: \"textarea\",\n availableAnswers: [],\n editable: true,\n required: true,\n },\n];\n\nconst dataLabelsCreateAdminGroup = [\n {\n label: \"Group Number\",\n key: \"groupName\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Session Leader\",\n key: \"sessionLeader\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Group Coordinator\",\n key: \"coordinator\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: false,\n parent: \"createGroup\",\n },\n {\n label: \"Session 1\",\n key: \"week1DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Session 2\",\n key: \"week2DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Session 3\",\n key: \"week3DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Session 4\",\n key: \"week4DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Session 5\",\n key: \"week5DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Session 6\",\n key: \"week6DateTime\",\n type: \"dateAndTime\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n {\n label: \"Zoom session link\",\n key: \"sessionLink\",\n type: \"text\",\n availableAnswers: [],\n editable: true,\n required: true,\n parent: \"createGroup\",\n },\n];\nconst participantHeaders = [\n {\n rowTitle: \"First Name\",\n key: \"firstName\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Last Name\",\n key: \"lastName\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Status\",\n key: \"status\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Email address\",\n key: \"emailAdress\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Phone number\",\n key: \"mobilePhoneNumber\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Survey scores\",\n key: \"surveyScores\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 1\",\n key: \"sessionOne\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 2\",\n key: \"sessionTwo\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 3\",\n key: \"sessionThree\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 4\",\n key: \"sessionFour\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 5\",\n key: \"sessionFive\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Session 6\",\n key: \"sessionSix\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Drop in sessions\",\n key: \"dropInSessions\",\n tableType: \"text\",\n },\n];\n// const test123 = async () => {\n// const requestOptions = {\n// method: \"POST\",\n// body: JSON.stringify(requestOptions),\n// headers: {\n// Authorization:\n// \"Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhbFpNel90Tmkxc3FOTjMzdV8yVGxRMmxkYWhjb19yTlhXalBvdE8ycUFFIn0.eyJleHAiOjE2MjIxMTkxMTcsImlhdCI6MTYyMjExODgxNywiYXV0aF90aW1lIjoxNjIyMTE4ODE1LCJqdGkiOiJlOWE1M2IyZS1hODZmLTQ3YzItYmQ1Ni0xOWUzZjQxNTc0YTEiLCJpc3MiOiJodHRwczovL2Rldi1hcHBzZXIta2V5Y2xvYWstMDAxLmF6dXJld2Vic2l0ZXMubmV0L2F1dGgvcmVhbG1zL0VubyIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI1NTMzODlhNC1hYTA0LTQ1NjMtYmExMy01ZjY1Zjg1ODcwN2EiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJSZWFjdC1hcHAiLCJub25jZSI6IjRiNTc0ZTAwLWRlZjctNDkxOC1hNjZhLTA1YjIzMjU3NjlkZiIsInNlc3Npb25fc3RhdGUiOiIwMTQ5NTUzMS0wNDM0LTRjYjctYjBlOS04YWZjNDE2ODY3MzgiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwiYWRtaW4iLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiJCZW4gQWZmbGVjayIsInByZWZlcnJlZF91c2VybmFtZSI6ImJlbi5hZmZsZWNrIiwiZ2l2ZW5fbmFtZSI6IkJlbiIsImZhbWlseV9uYW1lIjoiQWZmbGVjayIsImVtYWlsIjoiYmVuLmFmZmxlY2tAbWVtby5jb20ifQ.UmMCkMst-m6MqOC7ZnkL00bog6W-M4KMUGr4raMOgMItyw6jGIxvtOKmAhlwYYQXs7YVB2Yc662s2OjqwjTxNicGWC4dA5Ju5I4CyB8K1N7951fkMu65SwnU12pldN3tN9hqdLnEr_3F65fPMolouwv9INsUmK3EMhqZ60eQzcRw1V7bRyXDPhIKF_aBWTDzavfqzQkC4ddmy4M8PjF636s-ZW_GiXjUFC_S8NxkCQnQavSpI2PTC0Sp8DaC-Cipr7f10NbgCPMUrVmhrhzENmlPKWbAMHQrzKI2DaFSe1XX6qTBI2jdqGlk4rsIs1GlAtjaavgVonFqxjlU-vGXTg\",\n// },\n// };\n// fetch(\"https://jsonplaceholder.typicode.com/posts\", requestOptions)\n// .then((response) => response.json())\n// .then((data) => {\n// console.log(data.json());\n// })\n// .catch((error) => {\n// console.log(error);\n// });\n// return dbJson;\n// };\n\nconst groupsFilters = [\n {\n rowTitle: \"Group Number\",\n key: \"groupName\",\n tableType: \"text\",\n values: [\"aaaa\", \"Group 2\", \"Group 3\"],\n active: false,\n value: null,\n queryParamKey: \"name\",\n },\n {\n rowTitle: \"Session leader\",\n key: \"sessionLeader\",\n tableType: \"text\",\n values: [\"In programme\", \"Post-programme\"],\n active: false,\n value: null,\n queryParamKey: \"sessionLeader\",\n },\n {\n rowTitle: \"Group coordinator\",\n key: \"coordinator\",\n tableType: \"text\",\n values: [\"John\", \"Post-programme\"],\n active: false,\n value: null,\n queryParamKey: \"coordinator\",\n },\n];\n\nconst getAllGroups = async () => {\n return api\n .getAPI(endpoints.getGroups, null, { availableGroups: false, page: 0 })\n .then((response) => {\n return response.data;\n });\n};\n\nconst getAllGroupsDashboard = async () => {\n return api.getAPI(endpoints.getGroupsDashboard).then((response) => {\n return response.data;\n });\n};\n\nconst getAllGroupsHeaders = () => {\n return dataTableHeaders;\n};\n\nconst getGroup = async (id) => {\n const headers = {\n Authorization: `Bearer ${sessionStorage.getItem(\"auth.accessToken\")}`,\n };\n return fetch(`${environment.enoBackendBasePath}/groups/${id}`, {\n headers,\n })\n .then((response) => {\n return response.json();\n })\n .then((res) => res);\n};\n\nconst getGroupByName = (groups, name) => {\n if (groups.find((group) => group.groupName === name)) return true;\n return false;\n};\n\nconst getGroupFormHeaders = () => {\n return dataLabels;\n};\n\nconst getAllGroupParticipantsHeaders = () => {\n return participantHeaders;\n};\n\nconst getNewGroupFormHeaders = () => {\n return dataLabelsCreateAdminGroup;\n};\n\nconst getGroupsFilters = (initialValues) => {\n return groupsFilters.map((item) => ({\n ...item,\n values: initialValues[item.key], // || item.values,\n }));\n};\n\nexport {\n getAllGroups,\n getGroup,\n getGroupByName,\n getAllGroupsHeaders,\n getGroupFormHeaders,\n getAllGroupParticipantsHeaders,\n getNewGroupFormHeaders,\n getGroupsFilters,\n getAllGroupsDashboard,\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport { NavLink } from \"react-router-dom\";\nimport {\n Card,\n CardContent,\n CardActionArea,\n CardActions,\n Button,\n Typography,\n Grid,\n useTheme,\n} from \"@material-ui/core\";\n\nimport { computeChartDataSet, chartLegend } from \"../../utils/computeChartData\";\nimport enoBreatheTheme from \"../../theme/enoBreatheTheme\";\nimport { getAllUsersDashboard } from \"../../services/usersService\";\nimport { getAllClinicsDashboard } from \"../../services/clinicsService\";\nimport { getAllGroupsDashboard } from \"../../services/groupsService\";\n\nconst Dashboard = () => {\n const theme = useTheme(enoBreatheTheme);\n\n const [users, setUsers] = useState([]);\n const [clinics, setClinics] = useState([]);\n const [groups, setGroups] = useState([]);\n const [loading, setLoading] = useState(true);\n const [cardsDetails, setCardsDetails] = useState([]);\n\n useEffect(() => {\n async function fetchData() {\n const dbUsers = await getAllUsersDashboard();\n const dbGroups = await getAllGroupsDashboard();\n const dbClinics = await getAllClinicsDashboard();\n\n setUsers(dbUsers);\n setClinics(dbClinics);\n setGroups(dbGroups);\n setCardsDetails([\n {\n title: \"Users\",\n navLink: \"/admin/users\",\n data: dbUsers,\n },\n {\n title: \"Groups\",\n navLink: \"/admin/groups\",\n data: dbGroups,\n },\n {\n title: \"Clinics and Referral codes\",\n navLink: \"/admin/clinicsAndReferral\",\n data: dbClinics,\n },\n ]);\n }\n\n fetchData().then(() => {\n setLoading(false);\n });\n }, []);\n\n const options = {\n animation: false,\n cutoutPercentage: 80,\n layout: { padding: 80 },\n legend: {\n display: true,\n },\n maintainAspectRatio: true,\n responsive: true,\n tooltips: {\n backgroundColor: theme.palette.background.paper,\n bodyFontColor: theme.palette.text.secondary,\n borderColor: theme.palette.divider,\n borderWidth: 1,\n enabled: true,\n footerFontColor: theme.palette.text.secondary,\n intersect: false,\n mode: \"index\",\n titleFontColor: theme.palette.text.primary,\n },\n };\n\n return (\n <>\n {loading ? (\n <>\n ) : (\n \n {cardsDetails.map(\n ({ title: cardTitle, navLink, data, keyToChart }) => {\n return (\n \n \n \n \n \n {cardTitle}\n \n \n \n {chartLegend(data).map(\n ({ category, percentage, color }) => (\n \n \n {category}\n \n \n {percentage}%\n \n \n )\n )}\n \n \n \n \n \n VIEW PAGE\n \n \n \n \n );\n }\n )}\n \n )}\n \n );\n};\n\nexport default Dashboard;\n","import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { styled } from \"@material-ui/core/styles\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport { format } from \"date-fns\";\nimport DatePicker from \"./DatePicker\";\n\nconst RemoveIcon = styled(HighlightOffIcon)({\n paddingRight: \"10px\",\n width: \"35px\",\n cursor: \"pointer\",\n color: \"red\",\n});\n\nconst DropInSession = ({ data, onChangeSessions }) => {\n const [dropInDate, setDropInDate] = useState();\n const [dropInDates, setDropInDates] = useState(\n data.dropInSessions ? [...data.dropInSessions] : []\n );\n\n const handleDateChange = (datePicked) => {\n setDropInDate({\n dropInSessionDate: datePicked,\n });\n setDropInDates(\n dropInDates?.concat({\n dropInSessionDate: format(datePicked, \"MM/dd/yyyy\"),\n })\n );\n };\n const formatDate = (date) => {\n const tempDate = date.split(\"/\");\n return `${tempDate[1]}/${tempDate[0]}/${tempDate[2]}`;\n };\n\n const handleRemoveDropInSession = (index) => {\n const newDropIns = [];\n dropInDates.map((dropDate, i) =>\n i !== index ? newDropIns.push(dropDate) : null\n );\n setDropInDates(newDropIns);\n setDropInDate(null);\n };\n\n useEffect(() => {\n onChangeSessions(dropInDates);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dropInDates]);\n\n return (\n
\n handleDateChange(datePicked)}\n />\n
    \n {dropInDates?.map((res, index) => (\n
    \n handleRemoveDropInSession(index)} />\n {formatDate(res.dropInSessionDate)}\n
    \n ))}\n
\n
\n );\n};\n\nDropInSession.propTypes = {\n data: PropTypes.arrayOf(PropTypes.string).isRequired,\n onChangeSessions: PropTypes.func.isRequired,\n};\n\nexport default DropInSession;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport TextField from \"@material-ui/core/TextField\";\nimport PropTypes from \"prop-types\";\nimport Modal from \"@material-ui/core/Modal\";\nimport Box from \"@material-ui/core/Box\";\nimport Paper from \"@material-ui/core/Paper\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles, createMuiTheme } from \"@material-ui/core\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n DateTimePicker,\n MuiPickersUtilsProvider,\n KeyboardDateTimePicker,\n} from \"@material-ui/pickers\";\nimport { MuiThemeProvider } from \"@material-ui/core/styles\";\nimport { format } from \"date-fns\";\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport NeutralButton from \"../NeutralButton\";\nimport SecondaryButton from \"../SecondaryButton\";\nimport DatePicker from \"../DatePicker\";\nimport NotificationSnackbarContext from \"../../context/NotificationSnackbarContext\";\nimport { SnackbarTypes } from \"../CustomSnackbar\";\nimport { getAllGroups, getGroupByName } from \"../../services/groupsService\";\nimport DropInSession from \"../DropInSession\";\n\nfunction getModalStyle() {\n const top = 50;\n const left = 50;\n\n return {\n top: `${top}%`,\n left: `${left}%`,\n transform: `translate(-${top}%, -${left}%)`,\n };\n}\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n position: \"absolute\",\n width: 400,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n borderRadius: 10,\n },\n createGroupNote: {\n fontSize: \"smaller\",\n fontStyle: \"italic\",\n },\n invalidDateMsg: {\n color: \"red\",\n fontSize: \"smaller\",\n fontStyle: \"italic\",\n customTemplate: {\n display: \"flex\",\n },\n },\n}));\n\nexport const customTheme = createMuiTheme({\n \"&.MuiPickersModal-dialogRootWider\": {\n minWidth: 400,\n },\n \".MuiFormControl-root\": {\n display: \"flex\",\n },\n});\n\nconst EditDetailsForm = ({\n headers,\n data,\n handleSave,\n forCreate = false,\n forEdit = false,\n handleGetCustomTemplates,\n}) => {\n const classes = useStyles();\n const history = useHistory();\n const [modalStyle] = useState(getModalStyle);\n\n const [openModal, setOpenModal] = useState(false);\n const [loading, setLoading] = useState(true);\n const [editedData, setEditedData] = useState(null);\n const [invalidInputKeys, setInvalidInputKeys] = useState([]);\n const [saveError, setSaveError] = useState(false);\n const { notification, setNotification } = useContext(\n NotificationSnackbarContext\n );\n const [disableYesButtonSubmit, setDisableYesButtonSubmit] = useState(false);\n const [disableSaveButtonSubmit, setDisableSaveButtonSubmit] = useState(false);\n\n useEffect(() => {\n setEditedData(data);\n setLoading(false);\n }, [data]);\n\n const validateInput = (date) => !!(new Date(date) > new Date());\n\n const validateInputText = (text) => {\n const regex = /^[a-z0-9 ]+$/i;\n const itIsName = regex.test(text);\n return itIsName;\n };\n\n const validateLink = (text) => {\n const regex = /(ftp|https?):\\/\\/[^ \"]+$/;\n const itIsURL = regex.test(text);\n return itIsURL;\n };\n\n const findParentAndUpdateValue = (stateData, value, key, parent) => {\n const newData = { ...stateData };\n if (forCreate) {\n newData[key] = value;\n } else if (parent) {\n if (parent in stateData && stateData[parent]) {\n newData[parent][key] = value;\n } else {\n newData[parent] = {};\n newData[parent][key] = value;\n }\n } else {\n newData[key] = value;\n }\n\n return newData;\n };\n\n const findParentAndGetValue = (key, parent) => {\n if (parent)\n if (\n parent in editedData &&\n editedData[parent] !== null &&\n key in editedData[parent]\n ) {\n return editedData[parent][key];\n } else return null;\n\n return editedData[key];\n };\n\n const formValidation = (parent, name, value, newData) => {\n switch (parent) {\n case \"createGroup\":\n if (name === \"groupName\") setEditedData(newData);\n else if (name === \"sessionLink\" && validateLink(value))\n setEditedData(newData);\n else if (validateInputText(value)) setEditedData(newData);\n break;\n default:\n setEditedData(newData);\n }\n };\n\n const formInvalidInputs = (parent, name, value) => {\n switch (parent) {\n case \"createGroup\":\n if (name === \"sessionLeader\" || name === \"coordinator\") {\n if (forCreate && validateInputText(value)) {\n const updatedInvalidDates = invalidInputKeys?.filter(\n (inputKey) => inputKey !== name\n );\n setInvalidInputKeys(updatedInvalidDates);\n } else if (forCreate && !validateInputText(value)) {\n if (!invalidInputKeys || !invalidInputKeys?.includes(name)) {\n invalidInputKeys.push(name);\n setInvalidInputKeys([...invalidInputKeys]);\n }\n }\n }\n if (name === \"sessionLink\") {\n if (forCreate && validateLink(value)) {\n const updatedInvalidDates = invalidInputKeys?.filter(\n (inputKey) => inputKey !== name\n );\n setInvalidInputKeys(updatedInvalidDates);\n } else if (forCreate && !validateLink(value)) {\n if (!invalidInputKeys || !invalidInputKeys?.includes(name)) {\n invalidInputKeys.push(name);\n setInvalidInputKeys([...invalidInputKeys]);\n }\n }\n }\n break;\n default:\n setInvalidInputKeys([...invalidInputKeys]);\n }\n if (forEdit) {\n if (name === \"notes\") {\n if (forEdit && value.length < 2000) {\n const updatedInvalidDates = invalidInputKeys?.filter(\n (inputKey) => inputKey !== name\n );\n setInvalidInputKeys(updatedInvalidDates);\n } else if (forEdit && value.length > 2000) {\n if (!invalidInputKeys || !invalidInputKeys?.includes(name)) {\n invalidInputKeys.push(name);\n setInvalidInputKeys([...invalidInputKeys]);\n }\n }\n }\n }\n };\n\n const handleInputChange = (e, parent) => {\n const newUpdatedData = findParentAndUpdateValue(\n editedData,\n e.target.value,\n e.target.name,\n parent\n );\n\n formValidation(parent, e.target.name, e.target.value, newUpdatedData);\n formInvalidInputs(parent, e.target.name, e.target.value);\n };\n\n const allInputFieldsCompleted = () => {\n let response = true;\n if (forCreate) {\n const inputFields = headers.filter(\n (header) =>\n (header.type === \"text\" ||\n header.type === \"date\" ||\n header.type === \"dateAndTime\") &&\n header.key !== \"week2DateTime\" &&\n header.key !== \"week3DateTime\" &&\n header.key !== \"week4DateTime\" &&\n header.key !== \"week5DateTime\" &&\n header.key !== \"week6DateTime\"\n );\n response = inputFields.some((element) => editedData[element.key] === \"\");\n }\n return !response;\n };\n\n const getFutureSessionsDates = (date, n) => {\n const newDate = new Date(date);\n newDate.setDate(newDate.getDate() + n * 7);\n return newDate;\n };\n\n const getDateTimeFieldValue = (parent, key) => {\n if (parent === \"createGroup\") {\n return editedData[key] ? Date.parse(editedData[key]) : null;\n }\n return Date.parse(findParentAndGetValue(key, parent));\n };\n\n const getAllDatesKeys = () => {\n const datesArr = headers.filter(\n (header) => header.type === \"date\" || header.type === \"dateAndTime\"\n );\n const resultKeys = datesArr.map((date) => date.key);\n return resultKeys;\n };\n\n const formatDate = (date) => {\n if (typeof date === \"object\") {\n return `${new Date(date).getDay()}/${new Date(\n date\n ).getMonth()}/${new Date(date).getFullYear()}`;\n }\n const tempDate = date.split(\"/\");\n return `${tempDate[1]}/${tempDate[0]}/${tempDate[2]}`;\n };\n\n const setAllSessions = (initialDate) => {\n const formatPattern = \"dd/MM/yyyy HH:mm\";\n const keysForDates = getAllDatesKeys();\n let counter = 0;\n const sessionDates = {};\n keysForDates.map((currentDate) => {\n const finalDate = getFutureSessionsDates(initialDate, counter);\n const formatedFinalDate = format(finalDate, formatPattern);\n const parsedDate = formatDate(formatedFinalDate);\n sessionDates[currentDate] = parsedDate;\n counter += 1;\n });\n setEditedData({ ...editedData, ...sessionDates });\n };\n\n const handleDateChange = (date, key, parent) => {\n if (forCreate && validateInput(date)) {\n setAllSessions(date);\n } else if (!validateInput(date)) {\n const formatPattern = \"MM/dd/yyyy\";\n const newUpdatedData = findParentAndUpdateValue(\n editedData,\n format(date, formatPattern),\n key,\n parent\n );\n setEditedData(newUpdatedData);\n }\n };\n\n const handleDropInSessions = (dates) => {\n const newUpdatedData = { ...editedData };\n newUpdatedData.dropInSessions = [];\n dates.map((res) => {\n return res.id\n ? newUpdatedData?.dropInSessions.push(res)\n : newUpdatedData?.dropInSessions.push({\n dropInSessionDate: res.dropInSessionDate,\n });\n });\n setEditedData(newUpdatedData);\n };\n\n const handleDateAndTimeChange = (date, key, parent) => {\n if (forCreate) {\n if (validateInput(date)) {\n if (editedData[key]) {\n const formatPattern = \"MM/dd/yyyy HH:mm\";\n const newUpdatedData = findParentAndUpdateValue(\n editedData,\n format(new Date(date), formatPattern),\n key,\n null\n );\n setEditedData(newUpdatedData);\n } else {\n setAllSessions(date);\n }\n setInvalidInputKeys(invalidInputKeys.filter((k) => k !== key));\n } else {\n setInvalidInputKeys([...invalidInputKeys, key]);\n }\n } else {\n const newUpdatedData = findParentAndUpdateValue(\n editedData,\n format(new Date(date), \"MM/dd/yyyy HH:mm\"),\n key,\n parent\n );\n setEditedData(newUpdatedData);\n }\n };\n\n const handleGoBack = () => {\n let rootUrl = history.location.pathname.split(\"/\");\n rootUrl.pop();\n rootUrl = rootUrl.join(\"/\");\n history.push(rootUrl);\n };\n\n const getSelectOptionValue = (option) => {\n if (option.toUpperCase() === \"YES\") return true;\n if (option.toUpperCase() === \"NO\") return false;\n return option.split(\" \").join(\"_\").toUpperCase();\n };\n\n const handleSaveForm = async () => {\n setDisableYesButtonSubmit(true);\n await handleSave(editedData)\n .then(() => {\n setOpenModal(false);\n handleGoBack();\n })\n .catch((e) => {\n setOpenModal(false);\n setSaveError(e.message);\n });\n };\n const handleStatusChange = async (value) => {\n const newUpdatedData = findParentAndUpdateValue(\n editedData,\n value,\n \"status\",\n null\n );\n setEditedData(newUpdatedData);\n };\n\n const handleModal = async () => {\n setDisableSaveButtonSubmit(true);\n const existingGroups = await getAllGroups();\n const exists = getGroupByName(\n existingGroups.groupDTOS,\n editedData.groupName\n );\n\n if (!forCreate) {\n setOpenModal(true);\n } else if (\n (forCreate && invalidInputKeys.length !== 0) ||\n (forCreate && !allInputFieldsCompleted())\n ) {\n setNotification({\n ...notification,\n message: \"You can't save an incorrect or incomplete form\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n setDisableSaveButtonSubmit(false);\n } else if (allInputFieldsCompleted && exists) {\n setNotification({\n ...notification,\n message:\n \"There's already an existing group with this name, please choose another name and try again.\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n setDisableSaveButtonSubmit(false);\n } else {\n setOpenModal(true);\n }\n };\n\n const getDate = (key, parent) => {\n return Date.parse(findParentAndGetValue(key, parent));\n };\n\n function getInputType() {\n const elements = headers.map((header) => {\n switch (header.type) {\n case \"text\":\n return (\n <>\n handleInputChange(e, header.parent)}\n disabled={!header.editable}\n />\n {forCreate &&\n header.key === \"coordinator\" &&\n invalidInputKeys?.includes(header.key) && (\n

\n {header.label} name cannot be composed of special characters\n

\n )}\n {forCreate &&\n header.key === \"sessionLeader\" &&\n invalidInputKeys?.includes(header.key) && (\n

\n {header.label} name cannot be composed of special characters\n

\n )}\n {forCreate &&\n header.key === \"sessionLink\" &&\n invalidInputKeys?.includes(header.key) && (\n

\n {header.label} must be a valid link\n

\n )}\n \n );\n case \"textarea\":\n return (\n <>\n handleInputChange(e, header.parent)}\n disabled={!header.editable}\n />\n {forEdit &&\n header.key === \"notes\" &&\n invalidInputKeys?.includes(header.key) && (\n

\n {header.label} should contain a maximum of 2000 chars\n

\n )}\n \n );\n case \"date\":\n return header.key === \"dropInSession\" ? (\n handleDropInSessions(dates)}\n />\n ) : (\n <>\n handleDateChange(e, header.key, header.parent)}\n disabled={\n header.parent === \"createGroup\" &&\n header.key !== \"week1DateTime\"\n }\n format={forCreate ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy\"}\n disableFuture={!forCreate}\n />\n\n {forCreate &&\n header.parent === \"createGroup\" &&\n header.key === \"week3DateTime\" && (\n \n *Mid-point evaluation 30 min\n \n )}\n {forCreate &&\n header.parent === \"createGroup\" &&\n header.key === \"week1DateTime\" && (\n \n *Plan your sessions one week from each other based on\n session one selection\n \n )}\n {forCreate &&\n header.parent === \"createGroup\" &&\n header.key === \"week1DateTime\" &&\n invalidInputKeys?.includes(header.key) && (\n

\n {header.label} date must be higher than the current one.\n

\n )}\n \n );\n case \"select\":\n return (\n handleInputChange(e, header.parent)}\n disabled={!header.editable}\n >\n {header.availableAnswers.map((option) => (\n \n {option}\n \n ))}\n \n );\n case \"dateAndTime\":\n return (\n <>\n \n \n \n handleDateAndTimeChange(\n e,\n header.key,\n forCreate ? editedData[header.key] : header.parent\n )\n }\n disablePast={\n !!(forCreate || header.parent === \"createGroup\")\n }\n label={header.label}\n variant=\"dialog\"\n style={{ display: \"flex\", marginBottom: \"10px\" }}\n />\n {forCreate &&\n header.parent === \"createGroup\" &&\n (header.key === \"week1DateTime\" ||\n header.key === \"week2DateTime\" ||\n header.key === \"week3DateTime\" ||\n header.key === \"week4DateTime\" ||\n header.key === \"week5DateTime\" ||\n header.key === \"week6DateTime\") &&\n invalidInputKeys?.includes(header.key) && (\n

\n {header.label} date must be higher than the current\n date.\n

\n )}\n
\n
\n {header.key === \"week3DateTime\" && (\n \n *Followed by mid point evaluation\n \n )}\n \n );\n case \"count\":\n return (\n {}}\n disabled={!header.editable}\n />\n );\n case \"custom\": {\n return (\n
\n {handleGetCustomTemplates(\n header.key === \"dateOfBirth\"\n ? editedData[header.parent][header.key]\n : data[header.key],\n header.key,\n header.parent,\n header.label,\n !header.editable,\n header.key === \"status\" ? handleStatusChange : handleDateChange\n )}\n
\n );\n }\n default:\n return
No Data
;\n }\n });\n return
{elements}
;\n }\n\n return (\n <>\n \n {loading ? (\n <>\n ) : (\n <>\n \n {getInputType()}\n \n \n handleModal()}\n >\n Save\n \n \n \n {\n handleGoBack();\n }}\n >\n Cancel\n \n \n \n {\n setDisableSaveButtonSubmit(false);\n setOpenModal(false);\n }}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n
\n
Are you sure you want to save your changes?
\n \n \n handleSaveForm()}\n >\n Yes\n \n \n \n {\n setOpenModal(false);\n setDisableSaveButtonSubmit(false);\n }}\n >\n Cancel\n \n \n \n
\n \n setSaveError(false)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n
\n
{saveError}
\n \n \n setSaveError(false)}\n >\n Ok\n \n \n \n
\n \n
\n \n )}\n
\n \n );\n};\n\nEditDetailsForm.propTypes = {\n headers: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n data: PropTypes.shape({}).isRequired,\n handleSave: PropTypes.func.isRequired,\n handleGetCustomTemplates: PropTypes.func,\n forCreate: PropTypes.bool,\n forEdit: PropTypes.bool,\n};\nEditDetailsForm.defaultProps = {\n handleGetCustomTemplates: null,\n forCreate: false,\n forEdit: false,\n};\n\nexport default EditDetailsForm;\n","import React, { useEffect, useState } from \"react\";\nimport \"date-fns\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@material-ui/core/TextField\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { useParams } from \"react-router-dom\";\nimport statuses from \"../forms/constants/userStatusesConstants\";\nimport useLoadDataFromAPI from \"../utils/useLoadDataFromAPI\";\nimport { getStatusValueFromArrObject } from \"../utils/parseUserStatus\";\nimport endpoints from \"../utils/endpoints\";\n\nconst ChangeStatusSection = ({ label, key, value, handleChangeValue }) => {\n const { userId } = useParams();\n const [selectedStatus, setSelectedStatus] = useState(\"\");\n\n const { data: availableStatuses, loading, statusCode } = useLoadDataFromAPI({\n url: `${endpoints.getUsers}/${userId}/statuses`,\n method: \"GET\",\n });\n\n useEffect(() => {\n setSelectedStatus(value);\n }, [value]);\n\n const onStatusChanged = (status) => {\n setSelectedStatus(status);\n handleChangeValue(status);\n };\n\n return (\n <>\n onStatusChanged(ev.target.value)}\n select\n >\n \n {`${getStatusValueFromArrObject(value, statuses)}`}\n \n {availableStatuses?.map((option) => (\n \n {`${getStatusValueFromArrObject(option, statuses)}`}\n \n ))}\n \n \n );\n};\n\nChangeStatusSection.propTypes = {\n label: PropTypes.string.isRequired,\n key: PropTypes.string.isRequired,\n value: PropTypes.instanceOf(Date),\n handleChangeValue: PropTypes.func.isRequired,\n};\n\nChangeStatusSection.defaultProps = {\n value: null,\n};\n\nexport default ChangeStatusSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport EditDetailsForm from \"../../../components/admin/EditDetailsForm\";\nimport { getUserFormHeaders } from \"../../../services/usersService\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport endpoints from \"../../../utils/endpoints\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport api from \"../../../utils/api\";\nimport BirthDate from \"../../../components/BirthDate\";\nimport ChangeStatusSection from \"../../../components/ChangeStatusSection\";\n\nconst UserDetails = () => {\n const { userId } = useParams();\n const [formLabels, setFormLabels] = useState([]);\n\n const handleSaveToDb = async (newData) => {\n return api\n .putAPI(`${endpoints.getUsers}/${userId}`, null, JSON.stringify(newData))\n .then((data) => {\n if (data.status >= 400) {\n throw {\n message:\n \"There was an error saving the survey. Please try again later or contact the administrator\",\n };\n }\n })\n .catch(() => {\n throw {\n message:\n \"There was an error saving the survey. Please try again later or contact the administrator\",\n };\n });\n };\n\n useEffect(() => {\n const headers = getUserFormHeaders();\n\n setFormLabels(headers);\n }, [userId]);\n\n const getCustomTemplate = (\n inputValue,\n key,\n parent,\n label,\n disabled,\n handleChange\n ) => {\n switch (key) {\n case \"dateOfBirth\":\n return (\n handleChange(value, key, parent)}\n />\n );\n case \"status\":\n return (\n handleChange(value)}\n />\n );\n default:\n return
No Template
;\n }\n };\n\n const { data: user, loading, statusCode } = useLoadDataFromAPI({\n url: `${endpoints.getUsers}/${userId}`,\n method: \"GET\",\n });\n\n if (loading) {\n return <>Loading ... ;\n }\n\n if (statusCode >= 400) {\n return (\n \n The page could not be loaded. Please try again later ot contact the\n administrator\n \n );\n }\n\n return (\n <>\n \n \n );\n};\n\nexport default UserDetails;\n","import { Button, withStyles } from \"@material-ui/core\";\n\n// white to black button\nconst ColorButton = withStyles((enoBreatheTheme) => ({\n root: {\n color: enoBreatheTheme.palette.primary.main,\n backgroundColor: enoBreatheTheme.palette.common.white,\n \"&:hover\": {\n backgroundColor: enoBreatheTheme.palette.primary.dark,\n color: enoBreatheTheme.palette.common.white,\n },\n },\n}))(Button);\n\nexport default ColorButton;\n","import React, { useContext } from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\nimport PropTypes from \"prop-types\";\nimport { saveAs } from \"file-saver\";\nimport NotificationSnackbarContext from \"../context/NotificationSnackbarContext\";\nimport { SnackbarTypes } from \"./CustomSnackbar\";\nimport environment from \"../utils/environment\";\n\nconst DownloadButton = ({ downloadUrl, fileName }) => {\n const { notification, setNotification } = useContext(\n NotificationSnackbarContext\n );\n const downloadFile = () => {\n return fetch(`${environment.enoBackendBasePath}${downloadUrl}`, {\n method: \"GET\",\n headers: {\n Accept:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n Authorization: `Bearer ${sessionStorage.getItem(\"auth.accessToken\")}`,\n },\n })\n .then((response) => response.blob())\n .then((blob) => saveAs(blob, fileName))\n .catch(() => {\n setNotification({\n ...notification,\n message:\n \"There was an error. Please try again later or contact the administrator\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n });\n };\n return (\n <>\n \n \n );\n};\n\nDownloadButton.propTypes = {\n downloadUrl: PropTypes.string.isRequired,\n fileName: PropTypes.string.isRequired,\n};\n\nexport default DownloadButton;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n FormControlLabel,\n TextField,\n Grid,\n Button,\n Paper,\n MenuItem,\n Box,\n makeStyles,\n Drawer,\n Chip,\n IconButton,\n RadioGroup,\n FormLabel,\n Radio,\n FormControl,\n} from \"@material-ui/core\";\nimport { format } from \"date-fns\";\nimport FilterListIcon from \"@material-ui/icons/FilterList\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport DatePicker from \"../DatePicker\";\nimport SecondaryButton from \"../SecondaryButton\";\nimport NeutralButton from \"../NeutralButton\";\nimport DownloadButton from \"../DownloadButton\";\nimport statuses from \"../../forms/constants/userStatusesConstants\";\nimport { getStatusValueFromArrObject } from \"../../utils/parseUserStatus\";\nimport getEthnicityValueFromArrString from \"../../utils/parseUserEthnicity\";\n\nconst useStyles = makeStyles((theme) => ({\n gridItem: {\n \".MuiGrid-spacing-xs-5 > .MuiGrid-item&\": {\n padding: \"0 20px\",\n display: \"flex\",\n alignItems: \"center\",\n },\n // \".MuiGrid-spacing-xs-5 > .MuiGrid-item& .MuiFormControlLabel-label\": {\n // backgroundColor: \"pink\",\n // fontSize: 12,\n // },\n \".MuiGrid-spacing-xs-5 > .MuiGrid-item& .MuiOutlinedInput-notchedOutline\": {\n borderWidth: 0,\n borderBottomWidth: 1,\n borderRadius: 0,\n },\n \".MuiGrid-spacing-xs-5 > .MuiGrid-item& .MuiOutlinedInput-input\": {\n padding: 14,\n },\n },\n drawerContents: {\n maxWidth: 750,\n margin: 20,\n padding: 20,\n },\n activeFiltersChip: {\n margin: \"0 5px\",\n },\n filterButton: {\n marginRight: 10,\n },\n filterContents: {\n paddingBottom: 20,\n },\n drawerTitleBar: {\n padding: 20,\n backgroundColor: \"#fff\",\n position: \"sticky\",\n zIndex: 999,\n alignItems: \"center\",\n top: 0,\n height: 70,\n display: \"flex\",\n \"& div\": {\n display: \"inline-block\",\n flex: 1,\n fontSize: 24,\n fontWeight: \"bold\",\n },\n },\n drawerButtonsContainer: {\n backgroundColor: \"#fff\",\n position: \"sticky\",\n zIndex: 999,\n alignItems: \"center\",\n justifyContent: \"center\",\n bottom: 0,\n display: \"flex\",\n },\n closeDrawerBtn: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n \"&:hover\": {\n color: theme.palette.primary.main,\n },\n },\n}));\n\nconst getValueLabel = (type, key, value) => {\n if (type === \"boolean\") {\n if (value === true || value === \"true\") {\n return \"Yes\";\n }\n return \"No\";\n }\n if (type === \"date\") {\n return format(value, \"dd/MM/yyyy\");\n }\n if (type === \"intRange\") {\n return `${value.min || \"\"} - ${value.max || \"\"}`;\n }\n if (type === \"dateRange\") {\n return `${\n value.min && value.min.getTime() === value.min.getTime()\n ? format(value.min, \"dd/MM/yyyy\")\n : \"\"\n } - ${\n value.max && value.max.getTime() === value.max.getTime()\n ? format(value.max, \"dd/MM/yyyy\")\n : \"\"\n }`;\n }\n if (type === \"text\") {\n if (key.toLowerCase() === \"ethnicity\") {\n return getEthnicityValueFromArrString(value);\n }\n }\n return value;\n};\n\nconst getValue = (key, value) => {\n if (key === \"status\") {\n return getStatusValueFromArrObject(value, statuses);\n }\n if (key === \"ethnicity\") {\n return getEthnicityValueFromArrString(value);\n }\n return value;\n};\n\nconst TableFilters = ({\n filtersData,\n handleFilterChange,\n handleFilterReset,\n handleDeleteFilter,\n isFiltersOpen,\n setIsFiltersOpen,\n resultsLength,\n downloadUrl,\n downloadedFileName,\n setPage,\n}) => {\n const classes = useStyles();\n\n const debounce = (func, wait) => {\n let timeout;\n\n return function executedFunction(...args) {\n const later = () => {\n clearTimeout(timeout);\n func(...args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n };\n\n const filtersArray = filtersData?.map((filter) => {\n switch (filter.tableType) {\n case \"text\": {\n return (\n \n \n handleFilterChange(filter.key, e.target.value)}\n // helperText=\"Select a value\"\n >\n {filter?.values?.map((value) => (\n \n {getValue(filter.key, value)}\n \n ))}\n \n \n \n );\n }\n case \"textfield\": {\n return (\n \n \n handleFilterChange(filter.key, e.target.value),\n 500\n )}\n // helperText=\"Select a value\"\n />\n \n \n );\n }\n case \"intRange\": {\n return (\n \n \n {filter.rowTitle} (in range)\n \n \n \n handleFilterChange(filter.key, {\n ...filter.value,\n min: e.target.value,\n })\n }\n type=\"number\"\n InputProps={{\n // shrink: true,\n inputProps: {\n min: 18,\n },\n }}\n />\n \n \n \n handleFilterChange(filter.key, {\n ...filter.value,\n max: e.target.value,\n })\n }\n type=\"number\"\n InputProps={{\n // shrink: true,\n inputProps: {\n min: 18,\n },\n }}\n />\n \n \n \n \n );\n }\n case \"boolean\": {\n return (\n \n \n \n {\n handleFilterChange(filter.key, checked);\n }}\n color=\"secondary\"\n >\n \n \n {filter.rowTitle}\n \n \n }\n label=\"Yes\"\n />\n }\n label=\"No\"\n />\n \n \n \n \n );\n }\n case \"dateRange\": {\n return (\n \n \n {filter.rowTitle} (in range)\n \n \n \n handleFilterChange(filter.key, {\n ...filter.value,\n min: value,\n })\n }\n name={`${filter.key}-min`}\n value={\n filter.value && filter.value.min\n ? new Date(filter.value.min)\n : null\n }\n />\n \n \n \n handleFilterChange(filter.key, {\n ...filter.value,\n max: value,\n })\n }\n name={`${filter.key}-max`}\n value={\n filter.value && filter.value.max\n ? new Date(filter.value.max)\n : null\n }\n />\n \n \n \n \n );\n }\n case \"date\": {\n return (\n \n \n handleFilterChange(filter.key, value)}\n name={filter.rowTitle}\n value={filter.value ? new Date(filter.value) : null}\n />\n \n \n );\n }\n default:\n return null;\n }\n });\n\n const handleFiltersButtonClick = () => {\n setIsFiltersOpen(!isFiltersOpen);\n };\n const handleFilterExit = () => {\n setPage(0);\n };\n\n return (\n <>\n {\n handleFilterExit();\n handleFiltersButtonClick();\n }}\n className={classes.filterButton}\n >\n \n Filter\n \n {downloadUrl && (\n \n )}\n item.active).length > 0\n ? classes.filterContents\n : null\n }\n >\n {filtersData\n .filter((item) => item.active)\n .map((item) => {\n return (\n handleDeleteFilter(item)}\n variant=\"outlined\"\n />\n );\n })}\n \n \n
\n
Filters
\n \n \n \n
\n \n {filtersArray}\n \n
\n \n {\n handleFilterReset();\n handleFiltersButtonClick();\n }}\n >\n Reset\n \n \n \n {\n handleFilterExit();\n handleFiltersButtonClick();\n }}\n >\n Filter\n \n \n
\n \n
\n \n \n );\n};\n\nTableFilters.propTypes = {\n filtersData: PropTypes.arrayOf(PropTypes.object).isRequired,\n handleFilterChange: PropTypes.func.isRequired,\n handleDeleteFilter: PropTypes.func.isRequired,\n handleFilterReset: PropTypes.func.isRequired,\n isFiltersOpen: PropTypes.bool.isRequired,\n setIsFiltersOpen: PropTypes.func.isRequired,\n resultsLength: PropTypes.number.isRequired,\n downloadUrl: PropTypes.string,\n downloadedFileName: PropTypes.string,\n setPage: PropTypes.func.isRequired,\n};\n\nTableFilters.defaultProps = {\n downloadUrl: null,\n downloadedFileName: null,\n};\nexport default TableFilters;\n","import React, { useEffect, useState } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { format } from \"date-fns\";\r\nimport endpoints from \"../../../utils/endpoints\";\r\nimport { getGroupsFilters } from \"../../../services/groupsService\";\r\nimport TableFilters from \"../../../components/admin/TableFilters\";\r\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\r\nimport CustomSnackbar, {\r\n SnackbarTypes,\r\n} from \"../../../components/CustomSnackbar\";\r\n\r\nconst GroupsFilter = ({\r\n fetchUrl,\r\n setFetchUrl,\r\n isFiltersOpen,\r\n setIsFiltersOpen,\r\n groups,\r\n setPage,\r\n}) => {\r\n const [filtersData, setFiltersData] = useState([]);\r\n const [forceReload, setForceReload] = useState(false);\r\n\r\n const { data: sessionLeaders } = useLoadDataFromAPI({\r\n url: endpoints.getsessionLeaders,\r\n forceReload,\r\n setForceReload,\r\n });\r\n\r\n const { data: coordinatorsName } = useLoadDataFromAPI({\r\n url: endpoints.getcoordinatorsName,\r\n forceReload,\r\n setForceReload,\r\n });\r\n\r\n useEffect(() => {\r\n if (!sessionLeaders && !coordinatorsName) return;\r\n const updateFiltersAvailableData = async () => {\r\n const activeFilters = filtersData?.filter((item) => item.active);\r\n if (groups && Array.isArray(groups) && activeFilters.length === 0) {\r\n const disableRefreshDataForFilters = [\r\n \"sessionBarriers\",\r\n \"age\",\r\n \"gender\",\r\n \"dateCovidInfection\",\r\n \"admittedToHospital\",\r\n \"sessionAvailability\",\r\n \"englishFirstLanguage\",\r\n \"twilightSession\",\r\n ];\r\n const updatedFiltersData = filtersData?.map((filter) => {\r\n if (disableRefreshDataForFilters.indexOf(filter.key) > -1) {\r\n return filter;\r\n }\r\n if (filter.key === \"sessionLeaders\") {\r\n return { ...filter, values: sessionLeaders };\r\n }\r\n if (filter.key === \"coordinatorsName\") {\r\n return { ...filter, values: coordinatorsName };\r\n }\r\n return {\r\n ...filter,\r\n values: [\r\n ...new Set(\r\n groups?.map((user) => user[filter.key]).filter((item) => !!item)\r\n ),\r\n ],\r\n };\r\n });\r\n setFiltersData(updatedFiltersData);\r\n }\r\n };\r\n\r\n updateFiltersAvailableData();\r\n }, [groups, sessionLeaders, coordinatorsName]);\r\n\r\n useEffect(() => {\r\n const loadInitialFilters = async () => {\r\n const initialFilterNameValue = groups.map((item) => item.groupName);\r\n const initialValues = {\r\n groupName: initialFilterNameValue,\r\n };\r\n const filters = await getGroupsFilters(initialValues);\r\n setFiltersData(filters);\r\n };\r\n\r\n loadInitialFilters();\r\n }, []);\r\n\r\n useEffect(() => {\r\n // update fetch url based on filters\r\n const activeFilters = filtersData?.filter((item) => item.active);\r\n\r\n let queryParams = activeFilters\r\n .map((item) => {\r\n switch (item.key) {\r\n case \"sessionAvailability\":\r\n switch (item.value) {\r\n case \"morning\":\r\n return \"userProfile.morningSessionAvailability==true\";\r\n case \"lunch time\":\r\n return \"userProfile.lunchtimeSessionAvailability==true\";\r\n case \"afternoon\":\r\n return \"userProfile.afternoonSessionAvailability==true\";\r\n default:\r\n // \"evening\"\r\n return \"userProfile.eveningSessionAvailability==true\";\r\n }\r\n default:\r\n if (item.tableType === \"date\") {\r\n return `${item.queryParamKey}==\"${format(\r\n item.value,\r\n \"yyyy-MM-dd\"\r\n )}\"`;\r\n }\r\n return `${item.queryParamKey}==\"${item.value}\"`;\r\n }\r\n })\r\n .join(\";\");\r\n if (queryParams) {\r\n queryParams = `?search=${queryParams}`;\r\n }\r\n setFetchUrl(`${endpoints.getGroups}${queryParams}`);\r\n }, [filtersData]);\r\n\r\n const handleFilterChange = (key, value) => {\r\n const newFilterData = filtersData?.map((item) => {\r\n if (item.key === key) {\r\n return { ...item, active: true, value };\r\n }\r\n return item;\r\n });\r\n setFiltersData(newFilterData);\r\n };\r\n const handleDeleteFilter = (item) => {\r\n const newFilterData = filtersData?.map((filter) => {\r\n if (item.key === filter.key) {\r\n return { ...filter, active: false, value: null };\r\n }\r\n return filter;\r\n });\r\n setFiltersData(newFilterData);\r\n };\r\n const resetFilters = () => {\r\n setFiltersData(\r\n filtersData?.map((item) => ({ ...item, active: false, value: null }))\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {groups?.length > 1000 && fetchUrl !== endpoints.getGroups && groups && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\nGroupsFilter.propTypes = {\r\n fetchUrl: PropTypes.string.isRequired,\r\n setFetchUrl: PropTypes.func.isRequired,\r\n groups: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n isFiltersOpen: PropTypes.bool.isRequired,\r\n setIsFiltersOpen: PropTypes.func.isRequired,\r\n setPage: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default GroupsFilter;\r\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport AdminTable from \"../../../components/admin/AdminTable\";\nimport {\n getAllGroups,\n getAllGroupsHeaders,\n} from \"../../../services/groupsService\";\nimport ColorButton from \"../../../components/ColorButton\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport endpoints from \"../../../utils/endpoints\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport GroupsFilter from \"./GroupsFilter\";\n\nconst GroupsList = () => {\n const [groupsHeaders, setGroupsHeaders] = useState([]);\n const [updatedGroups, setGroups] = useState([]);\n const [allGroupsFilter, setAllGroupsFiler] = useState([]);\n const [forceReload, setForceReload] = useState(false);\n const [fetchUrl, setFetchUrl] = useState(endpoints.getGroups);\n const [isFiltersOpen, setIsFiltersOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [totalNumber, setTotalNumber] = useState(0);\n const [numberRow, setNumberRow] = useState(5);\n const { data, loading, statusCode } = useLoadDataFromAPI({\n url: fetchUrl.includes(\"?\")\n ? `${fetchUrl}&availableGroups&page=${page}&size=${numberRow}`\n : `${fetchUrl}?availableGroups&page=${page}&size=${numberRow}`,\n forceReload,\n setForceReload,\n });\n\n const history = useHistory();\n\n useEffect(() => {\n const headers = getAllGroupsHeaders();\n setGroupsHeaders(headers);\n fetchData();\n }, []);\n\n useEffect(() => {\n if (!data) return;\n\n if (data.nextPageId !== null) {\n setPage(data.nextPageId - 1);\n }\n setGroups(data.groupDTOS);\n setTotalNumber(data.totalNumberOfFilteredGroups);\n }, [data]);\n\n async function fetchData() {\n const grps = await getAllGroups();\n setAllGroupsFiler(grps.groupDTOS);\n }\n\n const handleActions = (row, pathname) => {\n const actions = [\n {\n text: \"View\",\n query: row,\n handleClick: () => history.push(`${pathname}/${row.id}`),\n enable: true,\n },\n ];\n return getActionsTemplate(actions);\n };\n const handleChangePage = (newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (newPage, nrRows) => {\n setPage(newPage);\n setNumberRow(nrRows);\n };\n\n const getActionsTemplate = (actions) => {\n return actions.map((action) => (\n \n {action.text}\n \n ));\n };\n return (\n <>\n \n history.push(\"/admin/groups/create\")}\n size=\"small\"\n >\n Create Group\n \n
\n {statusCode >= 400 && (\n \n The page could not be loaded. Please try again later ot contact the\n administrator\n \n )}\n {loading && <>Loading...}\n {!loading && statusCode < 400 && (\n \n )}\n \n );\n};\n\nexport default GroupsList;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport { Typography } from \"@material-ui/core\";\nimport { object } from \"prop-types\";\nimport {\n getAllGroupParticipantsHeaders,\n getGroupFormHeaders,\n} from \"../../../services/groupsService\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport endpoints from \"../../../utils/endpoints\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport ColorButton from \"../../../components/ColorButton\";\nimport EditDetailsForm from \"../../../components/admin/EditDetailsForm\";\nimport AdminTable from \"../../../components/admin/AdminTable\";\nimport api from \"../../../utils/api\";\nimport { SnackbarTypes } from \"../../../components/CustomSnackbar\";\nimport NotificationSnackbarContext from \"../../../context/NotificationSnackbarContext\";\nimport NeutralButton from \"../../../components/NeutralButton\";\n\nconst GroupDetails = () => {\n const { groupId } = useParams();\n const [formLabels, setFormLabels] = useState([]);\n const [userGroupHeaders, setUserGroupHeaders] = useState([]);\n const { notification, setNotification } = useContext(\n NotificationSnackbarContext\n );\n\n const history = useHistory();\n\n const { data: group, loading, statusCode } = useLoadDataFromAPI({\n url: `${endpoints.getGroups}/${groupId}`,\n method: \"GET\",\n });\n\n const { data: users, loadingUsers, statusCodeUsers } = useLoadDataFromAPI({\n url: `${endpoints.getGroups}/${groupId}/members`,\n method: \"GET\",\n });\n const {\n data: emailAddress,\n loadingEmailAddress,\n statusEmailAddress,\n } = useLoadDataFromAPI({\n url: `${endpoints.getMembersEmailAddresses}/${groupId}/members/email-addresses`,\n method: \"GET\",\n });\n\n const handleSaveToDb = (newData) => {\n return api\n .patchApi(\n `${endpoints.getGroups}/${groupId}/groupDetails`,\n null,\n JSON.stringify(newData)\n )\n .then(() => {\n setNotification({\n ...notification,\n message: \"The user was successfully updated\",\n color: SnackbarTypes.SUCCESS,\n key: new Date(),\n });\n })\n .catch(() => {\n setNotification({\n ...notification,\n message: \"There was an error on updating the group\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n });\n };\n\n useEffect(() => {\n const headers = getGroupFormHeaders();\n setFormLabels(headers);\n\n const userGroupHeadersGet = getAllGroupParticipantsHeaders();\n setUserGroupHeaders(userGroupHeadersGet);\n }, [groupId]);\n\n const handleActions = (row) => {\n const actions = [\n {\n text: \"View\",\n query: row,\n handleClick: () => history.push(`/admin/users/${row.id}`),\n enable: true,\n },\n ];\n return getActionsTemplate(actions);\n };\n\n const handleEmailCopy = () => {\n navigator.clipboard.writeText(emailAddress.join(\";\"));\n };\n\n const getActionsTemplate = (actions) => {\n return actions.map((action) => (\n \n {action.text}\n \n ));\n };\n\n if (loading || loadingUsers || loadingEmailAddress) {\n return <>Loading ... ;\n }\n if (\n statusCode >= 400 ||\n statusCodeUsers >= 400 ||\n statusEmailAddress >= 400\n ) {\n return (\n \n The page could not be loaded. Please try again later ot contact the\n administrator\n \n );\n }\n\n return (\n <>\n {\n history.push(`/admin/groups/${groupId}/surveys`);\n }}\n >\n View group surveys\n \n \n

Group participants

\n \n Copy Email Addresses\n \n \n *Copy the email addresses of participants who have not left or been\n rejected\n \n \n \n );\n};\n\nexport default GroupDetails;\n","import React from \"react\";\n\nconst UserSurvey = () => {\n return <>User Survey;\n};\n\nexport default UserSurvey;\n","import React, { useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Table from \"@material-ui/core/Table\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport { makeStyles } from \"@material-ui/core\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport { getAllGroupsHeaders } from \"../../../services/groupsService\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport endpoints from \"../../../utils/endpoints\";\n\nconst SurveyTypes = {\n 1: \"PRE PROGRAMME SURVEY\",\n 2: \"END OF PROGRAMME SURVEY\",\n 3: \"3 MONTHS FOLLOW UP SURVEY\",\n};\n\nconst useStyles = makeStyles({\n orangeText: {\n color: \"orange\",\n },\n redText: {\n color: \"red\",\n },\n paddingVertical10: {\n padding: 10,\n },\n paddingLeft50: {\n paddingLeft: 50,\n },\n});\n\nconst SurveyDetail = () => {\n const { surveyId, userId } = useParams();\n const classes = useStyles();\n const [groupsHeaders, setGroupsHeaders] = useState(getAllGroupsHeaders());\n const [forceReload, setForceReload] = useState(false);\n\n const { data: surveyScoreData, loading, statusCode } = useLoadDataFromAPI({\n url: endpoints.getUserSurvey\n .replace(\"{userId}\", userId)\n .replace(\"{surveyId}\", surveyId),\n method: \"GET\",\n forceReload,\n setForceReload,\n });\n\n const tableConfig = [\n {\n label: \"First Name\",\n key: \"firstname\",\n },\n {\n label: \"Last Name\",\n key: \"lastname\",\n },\n {\n label: \"Group Number\",\n key: \"groupNumber\",\n },\n {\n label: \"Pre programme survey completed\",\n key: \"survey1\",\n },\n {\n label: \"End of programme survey completed\",\n key: \"survey2\",\n },\n {\n label: \"3 months follow up survey completed\",\n key: \"survey3\",\n },\n {\n label: \"Hopes to gain\",\n key: \"HOPES_TO_GAIN\",\n },\n {\n label: \"Medical conditions\",\n key: \"MEDICAL_CONDITIONS\",\n },\n {\n label: \"Medication/Other treatments\",\n key: \"OTHER_TREATMENT\",\n },\n ];\n const table2Config = [\n {\n label: \"At rest:\",\n key: \"AT_REST\",\n parent: \"Breathlessness\",\n },\n {\n label: \"During activity - Walking around the house:\",\n key: \"DURING_ACTIVITY_WALKING_AROUND\",\n parent: \"Breathlessness\",\n },\n {\n label: \"During activity - Climbing stairs:\",\n key: \"DURING_ACTIVITY_CLIMBING_STAIRS\",\n parent: \"Breathlessness\",\n },\n {\n label: \"During activity - Running:\",\n key: \"DURING_ACTIVITY_RUNNING\",\n parent: \"Breathlessness\",\n },\n {\n label: \"GAD 7\",\n key: \"gad7\",\n },\n {\n label: \"Physical Functioning\",\n key: \"sf36PhysicalFunctioning\",\n parent: \"RAND 36\",\n },\n {\n label: \"Role Limitations Due To Physical Health\",\n key: \"sf36RoleLimitationsDueToPhysicalHealth\",\n parent: \"RAND 36\",\n },\n\n {\n label: \"Pain\",\n key: \"sf36Pain\",\n parent: \"RAND 36\",\n },\n {\n label: \"General Health\",\n key: \"sf36GeneralHealth\",\n parent: \"RAND 36\",\n },\n {\n label: \"Energy Or Fatigue\",\n key: \"sf36EnergyOrFatigue\",\n parent: \"RAND 36\",\n },\n {\n label: \"Social Functioning\",\n key: \"sf36SocialFunctioning\",\n parent: \"RAND 36\",\n },\n {\n label: \"Role Limitations Due To Emotional Problems\",\n key: \"sf36RoleLimitationsDueToEmotionalProblems\",\n parent: \"RAND 36\",\n },\n {\n label: \"Emotional Well Being\",\n key: \"sf36EmotionalWellBeing\",\n parent: \"RAND 36\",\n },\n {\n label: \"Notes from 1:1\",\n key: \"notesFromOneOnOne\",\n tableType: \"text\",\n },\n ];\n const getLabel = (value) => {\n if (value !== undefined) {\n if (typeof value == \"boolean\") {\n return value ? \"Yes\" : \"No\";\n }\n return value;\n }\n return value;\n };\n const renderedParents = {};\n const isJsonString = (str) => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n };\n const getNumberOfChildComponents = (owner, parent) => {\n if (!owner || !parent) {\n return 1;\n }\n renderedParents[parent] = true;\n return owner.filter((item) => item.parent === parent).length;\n };\n return (\n <>\n {surveyScoreData && (\n

\n {SurveyTypes[\n surveyScoreData.userSurveyScores?.scores?.survey?.surveyNumber\n ] || \"Survey\"}\n

\n )}\n\n {statusCode >= 400 && (\n \n The page could not be loaded. Please try again later ot contact the\n administrator\n \n )}\n {loading &&
Loading...
}\n {!loading && statusCode < 400 && surveyScoreData && (\n <>\n \n \n \n {tableConfig.map((rowInfo) => (\n \n {rowInfo.label}\n \n {(rowInfo.key &&\n getLabel(\n surveyScoreData.userSurveyScores[rowInfo.key]\n )) ||\n getLabel(\n surveyScoreData.userSurveyScores\n .surveyAnswersByCategory[rowInfo.key]\n )}\n \n \n ))}\n \n \n \n

Survey details

\n \n \n \n {table2Config.map((rowInfo) => (\n \n {rowInfo.parent && !renderedParents[rowInfo.parent] && (\n \n {rowInfo.parent}\n \n )}\n \n {rowInfo.label}\n \n \n {rowInfo.key &&\n ((surveyScoreData.userSurveyScores.scores &&\n (getLabel(\n surveyScoreData.userSurveyScores[rowInfo.key]\n ) ||\n getLabel(\n surveyScoreData.userSurveyScores.scores[\n rowInfo.key\n ]\n ))) ||\n (surveyScoreData.userSurveyScores\n .surveyAnswersByCategory &&\n getLabel(\n surveyScoreData.userSurveyScores\n .surveyAnswersByCategory[rowInfo.key]\n )))}\n \n \n ))}\n \n \n \n

Survey answers

\n \n \n \n {surveyScoreData.questions.map((questionInfo) => (\n \n {!questionInfo.answer && (\n {questionInfo.text}\n )}\n {questionInfo.answer && (\n <>\n \n {questionInfo.text.length > 6 && (\n <>\n {questionInfo.text}\n
\n \n )}\n {questionInfo.type === \"SLIDER\"\n ? JSON.parse(questionInfo.availableAnswers).join(\n \" / \"\n )\n : null}\n \n \n {isJsonString(questionInfo.answer) &&\n Array.isArray(JSON.parse(questionInfo.answer)) ? (\n
    \n {JSON.parse(questionInfo.answer).map((answ) => (\n
  • {answ}
  • \n ))}\n
\n ) : (\n questionInfo.answer\n )}\n
\n \n )}\n
\n ))}\n
\n
\n
\n \n )}\n \n );\n // \n // \n // {tableConfig.map((rowInfo) => (\n // \n // {rowInfo.label}\n // \n // {rowInfo.key}\n // {rowInfo.key && getLabel(mockData[rowInfo.key])}\n // \n // \n // ))}\n // \n // \n // {mockData.questions\n // ?.filter((item) => !!item.answer)\n // .map((questionInfo) => (\n // \n // \n // {questionInfo.parentQuestionOrder} - {questionInfo.id}\n // {questionInfo.parentQuestionOrder &&\n // mockData.questions.filter(\n // (row) => row.id === questionInfo.parentQuestionOrder\n // )[0].text}\n // \n // \n // {questionInfo.text.length > 6 && (\n // <>\n // {questionInfo.text}\n //
\n // \n // )}\n // {questionInfo.type === \"SLIDER\"\n // ? JSON.parse(questionInfo.availableAnswers).join(\" / \")\n // : null}\n //
\n //\n // {questionInfo.answer}\n //
\n // ))}\n //
\n //
\n};\n\nexport default SurveyDetail;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Typography } from \"@material-ui/core\";\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n );\n}\n\nTabPanel.propTypes = {\n children: PropTypes.node.isRequired,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\nexport default TabPanel;\n","const dbJson = [\n {\n id: \"39193e7d-9e0b-46c1-a257-b29f14de90a4\",\n registrationDate: \"07/02/2021\",\n referralCode: \"SUF490TPEB\",\n county: \"Norfolk\",\n region: \"East of England\",\n clinicName: \"Norfolk Community Health and Care Trust\",\n threeLettersCode: \"SUF\",\n firstname: \"Samuel\",\n lastname: \"Umtiti\",\n status: \"REGISTRATION_TO_BE_CHECKED\",\n sessionLeader: \"Allan Parker\",\n coordinator: \"Kevin Peterson\",\n assignedGroup: \"Group1\",\n additionalNotes: null,\n scoresId: 1,\n gAD7: 0,\n sF36PhysicalFunctioning: 20,\n sF36RoleLimitationsDueToPhysicalHealth: 20,\n sF36Pain: 20,\n sF36GeneralHealth: 20,\n sF36EnergyOrFatigue: 20,\n sF36SocialFunctioning: 20,\n sFRoleLimitationsDueToEmotionalProblems: 20,\n sF36EmotionalWellBeing: 20,\n breathlessnessAtRest: 10,\n breathlessnessDuringWalking: 22,\n breathlessnessDuringClimbingStairs: 76,\n breathlessnessDuringRunning: 83,\n },\n {\n id: \"9063f9ba-688f-4bf4-a0ad-1769286de975\",\n registrationDate: \"07/02/2021\",\n referralCode: \"SUF471TPEB\",\n county: \"Norfolk\",\n region: \"East of England\",\n clinicName: \"Norfolk Community Health and Care Trust\",\n threeLettersCode: \"SUF\",\n firstname: \"aa\",\n lastname: \"AA\",\n status: \"REGISTRATION_TO_BE_CHECKED\",\n sessionLeader: \"Allan Parker\",\n coordinator: \"Kevin Peterson\",\n assignedGroup: \"Group1\",\n additionalNotes: null,\n scoresId: 2,\n gAD7: 5,\n sF36PhysicalFunctioning: 60,\n sF36RoleLimitationsDueToPhysicalHealth: 70,\n sF36Pain: 40,\n sF36GeneralHealth: 50,\n sF36EnergyOrFatigue: 90,\n sF36SocialFunctioning: 40,\n sFRoleLimitationsDueToEmotionalProblems: 20,\n sF36EmotionalWellBeing: 20,\n breathlessnessAtRest: 10,\n breathlessnessDuringWalking: 22,\n breathlessnessDuringClimbingStairs: 76,\n breathlessnessDuringRunning: 83,\n notes1to1: \"This is the notes that have been added\",\n },\n {\n id: \"92091995-5db3-455c-8852-105e85e42038\",\n registrationDate: \"07/02/2021\",\n referralCode: \"SUF472TPEB\",\n county: \"Norfolk\",\n region: \"East of England\",\n clinicName: \"Norfolk Community Health and Care Trust\",\n threeLettersCode: \"SUF\",\n firstname: \"bb\",\n lastname: \"BB\",\n status: \"REGISTRATION_TO_BE_CHECKED\",\n sessionLeader: \"Allan Parker\",\n coordinator: \"Kevin Peterson\",\n assignedGroup: \"Group1\",\n additionalNotes: null,\n scoresId: 3,\n gAD7: 10,\n sF36PhysicalFunctioning: 66,\n sF36RoleLimitationsDueToPhysicalHealth: 20,\n sF36Pain: 20,\n sF36GeneralHealth: 99,\n sF36EnergyOrFatigue: 10,\n sF36SocialFunctioning: 55,\n sFRoleLimitationsDueToEmotionalProblems: 33,\n sF36EmotionalWellBeing: 20,\n breathlessnessAtRest: 10,\n breathlessnessDuringWalking: 22,\n breathlessnessDuringClimbingStairs: 76,\n breathlessnessDuringRunning: 83,\n },\n {\n id: \"2ac85254-e751-4e75-9342-acff17890af3\",\n registrationDate: \"07/02/2021\",\n referralCode: \"SUF473TPEB\",\n county: \"Norfolk\",\n region: \"East of England\",\n clinicName: \"Norfolk Community Health and Care Trust\",\n threeLettersCode: \"SUF\",\n firstname: \"cc\",\n lastname: \"CC\",\n status: \"REGISTRATION_TO_BE_CHECKED\",\n sessionLeader: \"Allan Parker\",\n coordinator: \"Kevin Peterson\",\n assignedGroup: \"Group1\",\n additionalNotes: null,\n scoresId: 4,\n gAD7: 15,\n sF36PhysicalFunctioning: 20,\n sF36RoleLimitationsDueToPhysicalHealth: 97,\n sF36Pain: 78,\n sF36GeneralHealth: 23,\n sF36EnergyOrFatigue: 3,\n sF36SocialFunctioning: 44,\n sFRoleLimitationsDueToEmotionalProblems: 11,\n sF36EmotionalWellBeing: 5,\n breathlessnessAtRest: 10,\n breathlessnessDuringWalking: 22,\n breathlessnessDuringClimbingStairs: 76,\n breathlessnessDuringRunning: 83,\n notes1to1: \"This is the notes that have been added\",\n },\n];\nconst dataTableHeaders = [\n {\n rowTitle: \"First Name\",\n key: \"firstname\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Last Name\",\n key: \"lastname\",\n tableType: \"text\",\n },\n {\n rowTitle: \"At rest:\",\n key: \"AT_REST\",\n tableType: \"text\",\n parent: \"Breathlessness\",\n },\n {\n rowTitle: \"During activity - Walking around the house:\",\n key: \"DURING_ACTIVITY_WALKING_AROUND\",\n tableType: \"text\",\n parent: \"Breathlessness\",\n },\n {\n rowTitle: \"During activity - Climbing stairs:\",\n key: \"DURING_ACTIVITY_CLIMBING_STAIRS\",\n tableType: \"text\",\n parent: \"Breathlessness\",\n },\n {\n rowTitle: \"During activity - Running:\",\n key: \"DURING_ACTIVITY_RUNNING\",\n tableType: \"text\",\n parent: \"Breathlessness\",\n },\n {\n rowTitle: \"GAD 7\",\n key: \"gad7\",\n tableType: \"text\",\n },\n {\n rowTitle: \"Physical Functioning\",\n key: \"sf36PhysicalFunctioning\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n {\n rowTitle: \"Role Limitations Due To Physical Health\",\n key: \"sf36RoleLimitationsDueToPhysicalHealth\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n\n {\n rowTitle: \"Role Limitations Due To Emotional Problems\",\n key: \"sf36RoleLimitationsDueToEmotionalProblems\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n\n {\n rowTitle: \"Pain\",\n key: \"sf36Pain\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n {\n rowTitle: \"General Health\",\n key: \"sf36GeneralHealth\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n {\n rowTitle: \"Energy Or Fatigue\",\n key: \"sf36EnergyOrFatigue\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n {\n rowTitle: \"Social Functioning\",\n key: \"sf36SocialFunctioning\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n {\n rowTitle: \"Emotional Well Being\",\n key: \"sf36EmotionalWellBeing\",\n tableType: \"text\",\n parent: \"RAND 36\",\n },\n {\n rowTitle: \"Notes from 1:1\",\n key: \"notesFromOneOnOne\",\n tableType: \"text\",\n },\n];\n\nconst getAllSurveys = () => {\n return dbJson;\n};\n\nconst getAllSurveysHeaders = () => {\n return dataTableHeaders;\n};\n\nconst getGroup = async (id) => {\n const groupInfo = dbJson.find((e) => e.id === id);\n return groupInfo;\n};\n\nexport { getAllSurveys, getGroup, getAllSurveysHeaders };\n","import React, { useState, useContext } from \"react\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { saveAs } from \"file-saver\";\nimport { getAllSurveysHeaders } from \"../../../services/surveysService\";\nimport endpoints from \"../../../utils/endpoints\";\nimport AdminTable from \"../../../components/admin/AdminTable\";\nimport ColorButton from \"../../../components/ColorButton\";\nimport NeutralButton from \"../../../components/NeutralButton\";\nimport environment from \"../../../utils/environment\";\nimport NotificationSnackbarContext from \"../../../context/NotificationSnackbarContext\";\nimport { SnackbarTypes } from \"../../../components/CustomSnackbar\";\n\nconst useStyles = makeStyles({\n orangeText: {\n color: \"orange\",\n },\n redText: {\n color: \"red\",\n },\n downloadButton: {\n marginLeft: 10,\n },\n dropdownSurveys: {\n zIndex: 10,\n },\n});\n\nconst GroupSurvey = ({ surveyValues, id, name }) => {\n const classes = useStyles();\n const history = useHistory();\n const { groupId } = useParams();\n const { notification, setNotification } = useContext(\n NotificationSnackbarContext\n );\n const [surveysHeaders, setSurveysHeaders] = useState(getAllSurveysHeaders());\n const [disableDownload, setDisableDownload] = useState(false);\n\n const getScore = (score) => {\n return score || score === 0 ? score : \"-\";\n };\n\n const addClassNamesToData = (data) => {\n if (!data) {\n return data;\n }\n return data.map((row) => {\n let classNameGad7 = null;\n if (row.scores?.gad7 >= 10) {\n if (row.scores?.gad7 < 15) {\n classNameGad7 = classes.orangeText;\n } else {\n classNameGad7 = classes.redText;\n }\n }\n\n let classNameSF36EnergyOrFatigue = null;\n if (row.scores?.sf36EnergyOrFatigue <= 10) {\n classNameSF36EnergyOrFatigue = classes.redText;\n }\n\n return {\n ...row,\n AT_REST: `${getScore(row.surveyAnswersByCategory?.AT_REST)}`,\n DURING_ACTIVITY_CLIMBING_STAIRS: `${getScore(\n row.surveyAnswersByCategory?.DURING_ACTIVITY_CLIMBING_STAIRS\n )}`,\n DURING_ACTIVITY_RUNNING: `${getScore(\n row.surveyAnswersByCategory?.DURING_ACTIVITY_RUNNING\n )}`,\n DURING_ACTIVITY_WALKING_AROUND: `${getScore(\n row.surveyAnswersByCategory?.DURING_ACTIVITY_WALKING_AROUND\n )}`,\n gad7: `${getScore(row.scores?.gad7)}/21`,\n sf36EnergyOrFatigue: `${getScore(row.scores?.sf36EnergyOrFatigue)}`,\n sf36SocialFunctioning: `${getScore(row.scores?.sf36SocialFunctioning)}`,\n sf36EmotionalWellBeing: `${getScore(\n row.scores?.sf36EmotionalWellBeing\n )}`,\n sf36GeneralHealth: `${getScore(row.scores?.sf36GeneralHealth)}`,\n sf36Pain: `${getScore(row.scores?.sf36Pain)}`,\n sf36PhysicalFunctioning: `${getScore(\n row.scores?.sf36PhysicalFunctioning\n )}`,\n sf36RoleLimitationsDueToPhysicalHealth: `${getScore(\n row.scores?.sf36RoleLimitationsDueToPhysicalHealth\n )}`,\n sf36RoleLimitationsDueToEmotionalProblems: `${getScore(\n row.scores?.sf36RoleLimitationsDueToEmotionalProblems\n )}`,\n notesFromOneOnOne: row.notesFromOneOnOne ? row.notesFromOneOnOne : \"-\",\n classNames: {\n gad7: classNameGad7,\n sf36EnergyOrFatigue: classNameSF36EnergyOrFatigue,\n },\n };\n });\n };\n\n const handleActions = (row) => {\n return (\n row.scores?.survey.id && (\n \n history.push(\n `/admin/user/${row.id}/surveys/${row.scores?.survey.id}`\n )\n }\n style={{ fontSize: \"inherit\" }}\n >\n View\n \n )\n );\n };\n\n const downloadSurvey = () => {\n setDisableDownload(true);\n const url = endpoints.getDownloadedGroupSurveys\n .replace(\"{groupId}\", groupId)\n .replace(\"{surveyNumber}\", id);\n const fileName = `survey${id}_group ${name}`;\n\n fetch(`${environment.enoBackendBasePath}${url}`, {\n method: \"GET\",\n headers: {\n Accept:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n Authorization: `Bearer ${sessionStorage.getItem(\"auth.accessToken\")}`,\n },\n })\n .then((response) => response.blob())\n .then((blob) => {\n setDisableDownload(false);\n saveAs(blob, fileName);\n })\n .catch(() => {\n setDisableDownload(false);\n setNotification({\n ...notification,\n message:\n \"There was an error. Please try again later or contact the administrator\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n });\n };\n\n return (\n <>\n \n Download Survey\n \n \n \n );\n};\n\nGroupSurvey.propTypes = {\n surveyValues: PropTypes.oneOfType([PropTypes.object]).isRequired,\n id: PropTypes.number.isRequired,\n name: PropTypes.oneOfType([PropTypes.object]).isRequired,\n};\n\nexport default GroupSurvey;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { Box, Tab, Tabs } from \"@material-ui/core\";\nimport TabPanel from \"../../../utils/TabPanel\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport endpoints from \"../../../utils/endpoints\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport GroupSurvey from \"./GroupSurvey\";\n\nconst GroupSurveys = () => {\n const { groupId } = useParams();\n const [tabIndex, setTabIndex] = React.useState(0);\n\n const {\n data: surveyOne,\n laoding: loadingSurveyOne,\n statusCode: statusCodeSurveyOne,\n } = useLoadDataFromAPI({\n url: endpoints.getGroupsSurveys\n .replace(\"{groupId}\", groupId)\n .replace(\"{surveyNumber}\", 1),\n method: \"GET\",\n });\n\n const {\n data: surveyTwo,\n loading: loadingSurveyTwo,\n statusCode: statusCodeSurveyTwo,\n } = useLoadDataFromAPI({\n url: endpoints.getGroupsSurveys\n .replace(\"{groupId}\", groupId)\n .replace(\"{surveyNumber}\", 2),\n method: \"GET\",\n });\n\n const {\n data: surveyThree,\n loading: loadingSurveyThree,\n statusCode: statusCodeSurveyThree,\n } = useLoadDataFromAPI({\n url: endpoints.getGroupsSurveys\n .replace(\"{groupId}\", groupId)\n .replace(\"{surveyNumber}\", 3),\n method: \"GET\",\n });\n\n const handleChange = (event, newValue) => {\n setTabIndex(newValue);\n };\n\n const a11yProps = (index) => {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`,\n };\n };\n\n return (\n <>\n

Surveys for group {surveyOne ? surveyOne[0].groupNumber : \" \"}

\n {((loadingSurveyOne && !surveyOne) ||\n (loadingSurveyTwo && !surveyTwo) ||\n (loadingSurveyThree && !surveyThree)) &&
Loading...
}\n\n {(surveyOne || surveyTwo || surveyThree) && (\n <>\n \n \n \n \n \n \n \n \n {statusCodeSurveyOne >= 400 ? (\n \n The page could not be loaded. Please try again later or contact\n the administrator\n \n ) : (\n \n )}\n \n \n {statusCodeSurveyTwo >= 400 ? (\n \n The page could not be loaded. Please try again later or contact\n the administrator\n \n ) : (\n \n )}\n \n \n {statusCodeSurveyThree >= 400 ? (\n \n The page could not be loaded. Please try again later or contact\n the administrator\n \n ) : (\n \n )}\n \n \n )}\n \n );\n};\n\nexport default GroupSurveys;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport EditDetailsForm from \"../../../components/admin/EditDetailsForm\";\nimport { getNewGroupFormHeaders } from \"../../../services/groupsService\";\nimport api from \"../../../utils/api\";\nimport endpoints from \"../../../utils/endpoints\";\nimport NotificationSnackbarContext from \"../../../context/NotificationSnackbarContext\";\nimport { SnackbarTypes } from \"../../../components/CustomSnackbar\";\n\nconst CreateGroup = () => {\n const history = useHistory();\n\n const { groupId } = useParams();\n const [formLabels, setFormLabels] = useState([]);\n const [loading, setLoading] = useState(true);\n const { notification, setNotification } = useContext(\n NotificationSnackbarContext\n );\n const [group, setGroup] = useState({\n groupName: \"\",\n sessionLeader: \"\",\n participants: [],\n coordinator: \"\",\n week1DateTime: \"\",\n week2DateTime: \"\",\n week3DateTime: \"\",\n week4DateTime: \"\",\n week5DateTime: \"\",\n week6DateTime: \"\",\n sessionLink: \"\",\n });\n\n const handleSaveToDb = async (newData) => {\n const groupBody = JSON.stringify(newData);\n return api\n .postAPI(endpoints.postAdminGroups, null, groupBody)\n .then((data) => {\n if (data.status >= 400) {\n setNotification({\n ...notification,\n message: \"The was an error saving this group\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n } else {\n setNotification({\n ...notification,\n message: \"Group saved\",\n color: SnackbarTypes.SUCCESS,\n key: new Date(),\n });\n }\n })\n .catch(() => {\n setNotification({\n ...notification,\n message: \"The was an error saving this group\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n });\n };\n\n useEffect(() => {\n async function fetchData() {\n const headers = await getNewGroupFormHeaders();\n setFormLabels(headers);\n }\n\n fetchData().then(() => {\n setLoading(false);\n });\n }, [groupId]);\n\n return (\n <>\n {loading ? (\n <>\n ) : (\n \n )}\n \n );\n};\n\nexport default CreateGroup;\n","import React from \"react\";\nimport { Grid, Typography } from \"@material-ui/core\";\nimport PropTypes from \"prop-types\";\nimport Box from \"@material-ui/core/Box\";\nimport TextField from \"@material-ui/core/TextField\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useFormik } from \"formik\";\nimport * as Yup from \"yup\";\nimport SecondaryButton from \"../../../components/SecondaryButton\";\nimport NeutralButton from \"../../../components/NeutralButton\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport endpoints from \"../../../utils/endpoints\";\nimport api from \"../../../utils/api\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport { SnackbarTypes } from \"../../../components/CustomSnackbar\";\n\nconst useStyles = makeStyles(() => ({\n container: {\n width: \"350px\",\n },\n}));\n\nconst AssignGroupModal = ({ participant, handleCloseModal }) => {\n const classes = useStyles();\n const formik = useFormik({\n initialValues: {\n selectedGroupId: \"\",\n },\n validationSchema: Yup.object({\n selectedGroupId: Yup.string().required(\"This field is required\"),\n }),\n onSubmit: (values) => {\n handleAssignGroup(values.selectedGroupId);\n },\n });\n const { data: availableGroups, loading, statusCode } = useLoadDataFromAPI({\n url: endpoints.getGroups,\n queryParams: { availableGroups: true, page: 0 },\n method: \"GET\",\n });\n\n const handleAssignGroup = (selectedGroupId) => {\n if (selectedGroupId) {\n api\n .patchApi(\n `${endpoints.assignUserToGroup}${participant.id}`,\n null,\n JSON.stringify({ id: selectedGroupId })\n )\n .then((data) => {\n if (data.status >= 400) {\n handleCloseModal(\n SnackbarTypes.ERROR,\n \"Sorry, it looks like the server is taking too long to respond. \" +\n \"This can be caused by either poor connectivity or an error with our servers. \" +\n \"Please try again in a while.\"\n );\n } else {\n handleCloseModal(\n SnackbarTypes.SUCCESS,\n \"Participant has been successfully assigned\"\n );\n }\n })\n .catch(() => {\n handleCloseModal(\n SnackbarTypes.ERROR,\n \"Sorry, it looks like the server is taking too long to respond. \" +\n \"This can be caused by either poor connectivity or an error with our servers. \" +\n \"Please try again in a while.\"\n );\n handleCloseModal();\n });\n }\n };\n\n if (loading) {\n return <>Loading ... ;\n }\n if (statusCode >= 400) {\n return (\n <>\n \n The page could not be loaded. Please try again later ot contact the\n administrator\n \n \n handleCloseModal()}\n >\n Cancel\n \n \n \n );\n }\n\n return (\n <>\n
\n \n Assign to Group\n \n \n {`${participant.firstname} ${participant.lastname}`}\n \n \n \n {availableGroups ? (\n availableGroups.groupDTOS.map((option) => (\n \n {`${option.groupName} | ${option.sessionLeader} | ${option.coordinator}`}\n \n ))\n ) : (\n No available groups\n )}\n \n \n \n formik.handleSubmit()}\n >\n Assign\n \n \n \n handleCloseModal()}\n >\n Cancel\n \n \n
\n \n );\n};\nAssignGroupModal.propTypes = {\n participant: PropTypes.shape({\n firstname: PropTypes.string,\n lastname: PropTypes.string,\n id: PropTypes.string,\n }).isRequired,\n handleCloseModal: PropTypes.func,\n};\nAssignGroupModal.defaultProps = {\n handleCloseModal: null,\n};\nexport default AssignGroupModal;\n","import React from \"react\";\nimport Fade from \"@material-ui/core/Fade\";\nimport Modal from \"@material-ui/core/Modal\";\nimport { makeStyles } from \"@material-ui/core\";\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles((theme) => ({\n modal: {\n margin: \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n children: {\n backgroundColor: theme.palette.background.paper,\n padding: \"25px\",\n borderRadius: \"10px\",\n },\n}));\nconst CustomModal = ({ open, children }) => {\n const classes = useStyles();\n\n return (\n
\n \n \n
{children}
\n
\n \n
\n );\n};\nCustomModal.propTypes = {\n children: PropTypes.node.isRequired,\n open: PropTypes.bool.isRequired,\n};\nCustomModal.initProps = {\n children: null,\n open: false,\n};\nexport default CustomModal;\n","const USER_FILTERS_KEY = \"userFilters\";\n\n// eslint-disable-next-line import/prefer-default-export\nexport class SessionController {\n #sessionStorage;\n\n constructor(sessionStorage) {\n this.#sessionStorage = sessionStorage;\n }\n\n setUserFilters(userFilters) {\n this.#sessionStorage.setItem(USER_FILTERS_KEY, JSON.stringify(userFilters));\n }\n\n getUserFilters() {\n const usersFiltersString = this.#sessionStorage.getItem(USER_FILTERS_KEY);\n\n if (!usersFiltersString) {\n return [];\n }\n\n try {\n return JSON.parse(usersFiltersString);\n } catch (e) {\n return [];\n }\n }\n}\n","import { format } from \"date-fns\";\n\nconst encodeURL = (string) => {\n return encodeURIComponent(string);\n};\n\nconst filtersToQueryParamsMapFn = (item) => {\n let today;\n let age = \"\";\n let dateFilter = \"\";\n let itemValueWithoutSpaces;\n switch (item.key) {\n case \"sessionAvailability\":\n switch (item.value) {\n case \"morning\":\n return \"userProfile.morningSessionAvailability==true\";\n case \"lunch time\":\n return \"userProfile.lunchtimeSessionAvailability==true\";\n case \"afternoon\":\n return \"userProfile.afternoonSessionAvailability==true\";\n default:\n // \"evening\"\n return \"userProfile.eveningSessionAvailability==true\";\n }\n case \"age\":\n if (item.value?.min) {\n today = new Date();\n today.setFullYear(today.getFullYear() - parseInt(item.value.min, 10));\n age = `${item.queryParamKey}<=${format(today, \"yyyy-MM-dd\")}`;\n }\n if (item.value?.max) {\n today = new Date();\n today.setFullYear(\n today.getFullYear() - parseInt(item.value.max, 10) - 1\n );\n age = `${age}${age.length > 0 ? \";\" : \"\"}${item.queryParamKey}>${format(\n today,\n \"yyyy-MM-dd\"\n )}`;\n }\n return age;\n case \"registrationDate\":\n case \"dateCovidInfection\":\n if (\n item.value?.min &&\n item.value?.min.getTime() === item.value?.min.getTime()\n ) {\n dateFilter = `${item.queryParamKey}>=${format(\n item.value?.min,\n \"yyyy-MM-dd\"\n )}`;\n }\n if (\n item.value?.max &&\n item.value?.max.getTime() === item.value?.max.getTime()\n ) {\n dateFilter = `${dateFilter}${\n dateFilter && dateFilter.length > 0 ? \";\" : \"\"\n }${item.queryParamKey}<=${format(item.value?.max, \"yyyy-MM-dd\")}`;\n }\n return dateFilter;\n case \"gender\":\n return `${item.queryParamKey}==\"${item.value\n .toUpperCase()\n .split(/-| /)\n .join(\"_\")}\"`;\n case \"additionalNotes\":\n itemValueWithoutSpaces = item.value.trim().split(/\\s+/).join(\"*\");\n return `${item.queryParamKey}==${encodeURL(\n `*${itemValueWithoutSpaces}*`\n )}`;\n default:\n if (item.tableType === \"date\") {\n return `${item.queryParamKey}==\"${format(item.value, \"yyyy-MM-dd\")}\"`;\n }\n return `${item.queryParamKey}==\"${encodeURL(item.value)}\"`;\n }\n};\n\nconst filterData2QueryParams = (filtersData) => {\n const activeFilters = filtersData?.filter((item) => item.active);\n\n let queryParams = activeFilters.map(filtersToQueryParamsMapFn).join(\";\");\n\n if (queryParams) {\n queryParams = `?search=${queryParams}`;\n }\n\n return queryParams;\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const useFilterUtils = () => {\n return { filtersToQueryParamsMapFn, filterData2QueryParams };\n};\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { format } from \"date-fns\";\nimport endpoints from \"../../../utils/endpoints\";\nimport { getUsersFilters } from \"../../../services/usersService\";\nimport TableFilters from \"../../../components/admin/TableFilters\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport CustomSnackbar, {\n SnackbarTypes,\n} from \"../../../components/CustomSnackbar\";\nimport { SessionController } from \"../../../utils/session\";\nimport { useFilterUtils } from \"./hooks\";\n\nconst UsersFilter = ({\n fetchUrl,\n setFetchUrl,\n isFiltersOpen,\n setIsFiltersOpen,\n users,\n setPage,\n sessionController,\n}) => {\n const [filtersData, setFiltersData] = useState([]);\n const [forceReload, setForceReload] = useState(false);\n const { filterData2QueryParams } = useFilterUtils();\n\n const { data: assignedGroups } = useLoadDataFromAPI({\n url: endpoints.getAssignedGroups,\n forceReload,\n setForceReload,\n });\n\n const { data: assignedStatuses } = useLoadDataFromAPI({\n url: endpoints.getAssignedStatuses,\n forceReload,\n setForceReload,\n });\n\n const { data: assignedClinics } = useLoadDataFromAPI({\n url: endpoints.getAssignedClinics,\n forceReload,\n setForceReload,\n });\n\n useEffect(() => {\n if (!assignedClinics && !assignedGroups && !assignedStatuses) return;\n const updateFiltersAvailableData = async () => {\n const activeFilters = filtersData?.filter((item) => item.active);\n if (users && Array.isArray(users) && activeFilters.length === 0) {\n const disableRefreshDataForFilters = [\n \"sessionBarriers\",\n \"age\",\n \"gender\",\n \"dateCovidInfection\",\n \"admittedToHospital\",\n \"sessionAvailability\",\n \"englishFirstLanguage\",\n \"twilightSession\",\n ];\n const updatedFiltersData = filtersData?.map((filter) => {\n if (disableRefreshDataForFilters.indexOf(filter.key) > -1) {\n return filter;\n }\n if (filter.key === \"assignedGroup\") {\n return { ...filter, values: assignedGroups };\n }\n if (filter.key === \"clinicName\") {\n return { ...filter, values: assignedClinics };\n }\n if (filter.key === \"status\") {\n return { ...filter, values: assignedStatuses };\n }\n return {\n ...filter,\n values: [\n ...new Set(\n users?.map((user) => user[filter.key]).filter((item) => !!item)\n ),\n ],\n };\n });\n setFiltersData(updatedFiltersData);\n }\n };\n\n updateFiltersAvailableData();\n }, [users, assignedGroups, assignedStatuses, assignedClinics]);\n\n useEffect(() => {\n const loadInitialFilters = async () => {\n const sessionFilters = sessionController.getUserFilters();\n const filters = sessionFilters.length\n ? sessionFilters\n : await getUsersFilters();\n setFiltersData(filters);\n setFetchUrl(`${endpoints.getUsers}${filterData2QueryParams(filters)}`);\n };\n\n loadInitialFilters();\n }, []);\n\n const handleFilterChange = (key, value) => {\n const newFilterData = filtersData?.map((item) => {\n if (item.key === key) {\n return { ...item, active: true, value };\n }\n return item;\n });\n setFiltersData(newFilterData);\n setFetchUrl(\n `${endpoints.getUsers}${filterData2QueryParams(newFilterData)}`\n );\n sessionController.setUserFilters(newFilterData);\n };\n const handleDeleteFilter = (item) => {\n const newFilterData = filtersData?.map((filter) => {\n if (item.key === filter.key) {\n return { ...filter, active: false, value: null };\n }\n return filter;\n });\n setFiltersData(newFilterData);\n setFetchUrl(\n `${endpoints.getUsers}${filterData2QueryParams(newFilterData)}`\n );\n sessionController.setUserFilters(newFilterData);\n };\n const resetFilters = () => {\n const newFilterData = filtersData?.map((item) => ({\n ...item,\n active: false,\n value: null,\n }));\n setFiltersData(newFilterData);\n setFetchUrl(\n `${endpoints.getUsers}${filterData2QueryParams(newFilterData)}`\n );\n sessionController.setUserFilters(newFilterData);\n };\n\n return (\n <>\n {users?.length > 1000 && fetchUrl !== endpoints.getUsers && users && (\n \n )}\n \n \n );\n};\n\nUsersFilter.propTypes = {\n fetchUrl: PropTypes.string.isRequired,\n setFetchUrl: PropTypes.func.isRequired,\n users: PropTypes.arrayOf(PropTypes.object).isRequired,\n isFiltersOpen: PropTypes.bool.isRequired,\n setIsFiltersOpen: PropTypes.func.isRequired,\n setPage: PropTypes.func.isRequired,\n sessionController: SessionController,\n};\n\nUsersFilter.defaultProps = {\n sessionController: new SessionController(sessionStorage),\n};\n\nexport default UsersFilter;\n","const getAgeForBirthdate = (date) => {\n if (!date) {\n return null;\n }\n const today = new Date();\n const birthDate = new Date(date);\n let age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age -= 1;\n }\n return age;\n};\nexport default getAgeForBirthdate;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport AdminTable from \"../../../components/admin/AdminTable\";\nimport { getAllUsersHeaders } from \"../../../services/usersService\";\nimport useLoadDataFromAPI from \"../../../utils/useLoadDataFromAPI\";\nimport endpoints from \"../../../utils/endpoints\";\nimport ErrorPanel from \"../../../components/ErrorPanel\";\nimport ColorButton from \"../../../components/ColorButton\";\nimport AssignGroupModal from \"../Groups/AssignGroupModal\";\nimport CustomModal from \"../../../components/CustomModal\";\nimport CustomSnackbar from \"../../../components/CustomSnackbar\";\nimport UsersFilter from \"./UsersFilter\";\nimport getAgeForBirthdate from \"../../../utils/getAgeForBirthdate\";\n\nconst addAge = (data) => {\n if (!data) {\n return data;\n }\n return data.map((item) => ({\n ...item,\n age: getAgeForBirthdate(item.dateOfBirth)?.toString(),\n }));\n};\n\nconst UsersList = () => {\n const [usersHeaders, setUsersHeaders] = useState([]);\n const [users, setUsers] = useState([]);\n const [openModal, setOpenModal] = useState(false);\n const [selectedUser, setSelectedUser] = useState({});\n const [snackbarType, setSnackbarType] = useState(\"\");\n const [snackbarMessage, setSnackbarMessage] = useState(\"\");\n const [forceReload, setForceReload] = useState(false);\n const [fetchUrl, setFetchUrl] = useState(null);\n const [isFiltersOpen, setIsFiltersOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [totalNumber, setTotalNumber] = useState(0);\n const [numberRow, setNumberRow] = useState(5);\n\n const { data, loading, statusCode } = useLoadDataFromAPI({\n url:\n fetchUrl &&\n (fetchUrl.includes(\"?\")\n ? `${fetchUrl}&page=${page}&size=${numberRow}`\n : `${fetchUrl}?page=${page}&size=${numberRow}`),\n forceReload,\n setForceReload,\n });\n const history = useHistory();\n\n useEffect(() => {\n const headers = getAllUsersHeaders();\n setUsersHeaders(headers);\n }, []);\n\n useEffect(() => {\n if (!data) return;\n\n if (data.nextPageId !== null) {\n setPage(data.nextPageId - 1);\n }\n setUsers(data.userDisplayDTOS);\n setTotalNumber(data.userListSize);\n }, [data]);\n\n const handleActions = (row, pathname) => {\n const user = users.find((usr) => usr.id === row.id);\n const actions = [\n {\n text: \"Edit\",\n query: row,\n handleClick: () => history.push(`${pathname}/${row.id}`),\n enable:\n user?.additionalNotes ||\n user?.sessionBarriers ||\n user?.barriersDescription ||\n user?.dateOfBirth ||\n user?.gender ||\n user?.ethnicity ||\n user?.dateCovidInfection ||\n user?.hospitalAdmitted ||\n user?.morningSessionAvailability ||\n user?.lunchtimeSessionAvailability ||\n user?.afternoonSessionAvailability ||\n user?.eveningSessionAvailability ||\n user?.englishFirstLanguage ||\n user?.city,\n },\n {\n text: \"Assign group\",\n query: row,\n handleClick: () => handleAssignGroup(row),\n enable: row.status === \"ASSIGN_GROUP_AND_OFFER_ONE_ON_ONE\",\n },\n ];\n return getActionsTemplate(actions);\n };\n\n const getActionsTemplate = (actions) => {\n return actions.map((action) => (\n \n {action.text}\n \n ));\n };\n\n const handleAssignGroup = (row) => {\n setOpenModal(true);\n setSelectedUser(row);\n setSnackbarMessage(\"\");\n setSnackbarType(\"\");\n };\n\n const handleCloseModal = (type, message) => {\n setOpenModal(false);\n setSnackbarType(type);\n setSnackbarMessage(message);\n if (type && message) {\n setForceReload(true);\n }\n };\n\n const handleChangePage = (newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (newPage, nrRows) => {\n setPage(newPage);\n setNumberRow(nrRows);\n };\n\n return (\n <>\n \n {statusCode >= 400 && (\n \n The page could not be loaded. Please try again later ot contact the\n administrator\n \n )}\n {loading && <>Loading...}\n {!loading && statusCode < 400 && (\n <>\n {snackbarType && snackbarMessage && (\n \n )}\n \n {selectedUser && (\n \n \n \n )}\n \n )}\n \n );\n};\n\nexport default UsersList;\n","import React from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport Header from \"../components/admin/Header\";\nimport ClinicsAndReferralPage from \"./admin/ClinicsAndReferral/ClinicsAndReferralPage\";\nimport Dashboard from \"./admin/Dashboard\";\nimport UserDetails from \"./admin/Users/UsersDetails\";\nimport GroupsList from \"./admin/Groups/GroupsList\";\nimport SurveysList from \"./admin/Surveys/SurveysList\";\nimport GroupDetails from \"./admin/Groups/GroupDetails\";\nimport UserSurvey from \"./admin/Surveys/UserSurvey\";\nimport SurveyDetail from \"./admin/Users/SurveyDetail\";\nimport GroupSurveys from \"./admin/Groups/GroupSurveys\";\nimport CreateGroup from \"./admin/Groups/CreateGroup\";\nimport PrivateRoute from \"./PrivateRoute\";\nimport UsersList from \"./admin/Users/UsersList\";\n\nconst AdminPage = () => {\n return (\n <>\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AdminPage;\n","import React from \"react\";\n\nconst UserContext = React.createContext();\n\nexport default UserContext;\n","import { Button, withStyles } from \"@material-ui/core\";\n\n// white to black button\nconst NeutralButton = withStyles((enoBreatheTheme) => ({\n root: {\n color: enoBreatheTheme.palette.secondary.main,\n backgroundColor: enoBreatheTheme.palette.common.white,\n \"&:hover\": {\n backgroundColor: enoBreatheTheme.palette.secondary.main,\n color: enoBreatheTheme.palette.common.white,\n },\n },\n}))(Button);\n\nexport default NeutralButton;\n","/**\n * @name environment\n * @desc Environment variables as declared in the .env files\n * @type {{enoBackendBasePath: string, keycloakBasePath: string, medium: string}}\n */\nconst environment = {\n medium: process.env.NODE_ENV,\n enoBackendBasePath: process.env.REACT_APP_ENO_BACKEND_BASE_PATH,\n keycloakBasePath: process.env.REACT_APP_KEYCLOAK_BASE_PATH,\n};\n\nexport default environment;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Refresh, ArrowBack } from \"@material-ui/icons\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Button } from \"@material-ui/core\";\n\nconst doAction = (action) => {\n switch (action) {\n case \"back\": {\n window.history.go(-1);\n return;\n }\n\n default: {\n window.location.reload();\n }\n }\n};\nconst useStyles = makeStyles({\n shout: { fontSize: 100 },\n heading: { fontSize: 32 },\n content: { fontSize: 19 },\n // section: { maxWidth: 360 },\n actionButton: { marginTop: 50 },\n});\nconst ErrorPanel = ({ shout, heading, children, action }) => {\n const classes = useStyles();\n return (\n
\n
{shout}
\n
{heading}
\n
{children}
\n {action !== \"none\" && (\n : }\n onClick={() => doAction(action)}\n >\n {action === \"back\" ? \"Back\" : \"Refresh\"}\n \n )}\n
\n );\n};\n\nErrorPanel.propTypes = {\n shout: PropTypes.string,\n heading: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n action: PropTypes.oneOf([\"back\", \"reload\", \"none\"]),\n};\n\nErrorPanel.defaultProps = {\n shout: \"Oops!\",\n action: \"none\",\n};\n\nexport default ErrorPanel;\n","import React from \"react\";\n\nconst NotificationSnackbarContext = React.createContext();\n\nexport default NotificationSnackbarContext;\n","export default __webpack_public_path__ + \"static/media/ENO_BREATHE_LOGOTYPE_POS_AW-FINAL.faddd895.svg\";","// Used by Microsoft AppInsights\n// For more information: https://docs.microsoft.com/en-us/azure/azure-monitor/app/javascript-react-plugin\nimport { ReactPlugin } from \"@microsoft/applicationinsights-react-js\";\n\nconst reactPlugin = new ReactPlugin();\nexport default reactPlugin;\n","import { useKeycloak } from \"@react-keycloak/web\";\nimport React, { useContext, useState } from \"react\";\nimport { Box, IconButton, Menu, MenuItem, Typography } from \"@material-ui/core\";\nimport { AccountCircle } from \"@material-ui/icons\";\nimport { NavLink } from \"react-router-dom\";\nimport StyledNavLink from \"./StyledNavLink\";\nimport UserContext from \"../context/UserContext\";\n\nconst LoggedInHeaderContent = () => {\n const { keycloak } = useKeycloak();\n const [anchorEl, setAnchorEl] = useState(null);\n const { name, roles } = useContext(UserContext);\n\n const handleProfileMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n \n {`Welcome ${name}!`}\n \n \n \n \n {roles && !roles.includes(\"admin\") && !roles.includes(\"disabled\")\n ? [\n \n \n Participant Hub\n \n ,\n ]\n : null}\n \n keycloak.logout({ redirectUri: window.location.origin })\n }\n >\n \n Logout\n \n \n \n \n );\n};\n\nexport default LoggedInHeaderContent;\n","import { Box, useMediaQuery } from \"@material-ui/core\";\nimport { NavLink } from \"react-router-dom\";\nimport React from \"react\";\nimport NeutralButton from \"./NeutralButton\";\nimport SecondaryButton from \"./SecondaryButton\";\nimport { SMALL_SCREEN_MEDIA_CONDITION } from \"../responsive/media-conditions\";\n\nconst NotLoggedInHeaderContent = () => {\n const isSmallScreen = useMediaQuery(SMALL_SCREEN_MEDIA_CONDITION);\n return (\n <>\n \n \n \n \n Sign up\n \n \n \n \n \n \n Sign in\n \n \n \n \n \n );\n};\n\nexport default NotLoggedInHeaderContent;\n","import {\n AppBar,\n Box,\n Toolbar,\n Link,\n styled,\n useMediaQuery,\n} from \"@material-ui/core\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useKeycloak } from \"@react-keycloak/web\";\nimport { NavLink, useLocation } from \"react-router-dom\";\nimport logo from \"../assets/images/ENO_BREATHE_LOGOTYPE_POS_AW-FINAL.svg\";\nimport LoggedInHeaderContent from \"./LoggedInHeaderContent\";\nimport NotLoggedInHeaderContent from \"./NotLoggedInHeaderContent\";\nimport { SMALL_SCREEN_MEDIA_CONDITION } from \"../responsive/media-conditions\";\n\nconst StyledAppBar = styled(AppBar)({\n padding: 30,\n position: \"sticky\",\n});\n\nconst AppHeader = ({ checkIsFullScreen }) => {\n const { keycloak, initialized } = useKeycloak();\n const location = useLocation();\n const isSmallScreen = useMediaQuery(SMALL_SCREEN_MEDIA_CONDITION);\n\n React.useEffect(() => {\n checkIsFullScreen(location.pathname);\n }, [location, checkIsFullScreen]);\n return (\n <>\n \n \n {/* Example of using a wrapper to leverage CSS utilities */}\n \n \"logo\"\n \n {initialized && (\n <>\n {keycloak.authenticated ? (\n \n ) : (\n <>\n \n {!isSmallScreen && (\n \n \n \"logo\"\n \n \n )}\n \n )}\n \n )}\n \n \n \n \n );\n};\nAppHeader.propTypes = {\n checkIsFullScreen: PropTypes.func.isRequired,\n};\nexport default AppHeader;\n","import { Button, withStyles } from \"@material-ui/core\";\r\n\r\n// white to black button\r\nconst ButtonNewsletter = withStyles((enoBreatheTheme) => ({\r\n root: {\r\n color: enoBreatheTheme.palette.primary.neutral,\r\n borderColor: enoBreatheTheme.palette.primary.neutral,\r\n borderRadius: 0,\r\n textTransform: \"none\",\r\n maxWidth: \"100px\",\r\n maxHeight: \"48px\",\r\n minHeight: \"48px\",\r\n fontSize: \"80%\",\r\n \"&:hover\": {\r\n backgroundColor: enoBreatheTheme.palette.primary.neutral,\r\n color: enoBreatheTheme.palette.primary.main,\r\n },\r\n },\r\n}))(Button);\r\n\r\nexport default ButtonNewsletter;\r\n","import React from \"react\";\nimport {\n Box,\n IconButton,\n Typography,\n Grid,\n Link,\n TextField,\n makeStyles,\n} from \"@material-ui/core\";\nimport { styled } from \"@material-ui/styles\";\nimport {\n Facebook as FacebookIcon,\n Twitter as TwitterIcon,\n Instagram as InstagramIcon,\n YouTube as YoutubeIcon,\n} from \"@material-ui/icons\";\nimport { useAppInsightsContext } from \"@microsoft/applicationinsights-react-js\";\nimport ButtonNewsletter from \"./ButtonNewsletter\";\n\nconst CssTextField = styled(TextField)({\n \"& label.Mui-focused\": {\n backgroundColor: \"white\",\n width: \"75px\",\n marginLeft: \"-4px\",\n },\n});\n\nconst useStyles = makeStyles(() => ({\n alignEnd: {\n justifyContent: \"flex-end\",\n },\n center: {\n justifyContent: \"space-evenly\",\n },\n}));\n\nconst artsCouncilLogo = {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2016/01/arts-logo.svg\",\n alt: \"Arts Council Logo\",\n};\n\nconst AppFooter = () => {\n const classes = useStyles();\n const appInsights = useAppInsightsContext();\n\n appInsights.trackMetric(\"Component 'AppFooter' is in use\");\n\n return (\n \n
\n \n \n \n \n ENO Breathe is a project of English National Opera.\n \n \n English National Opera, London Coliseum, St Martin’s Lane,\n London WC2N 4ES\n \n \n \n Find out more about ENO\n \n \n \n \n Donate to ENO\n \n \n \n \n Privacy Notice\n \n \n \n \n Cookie Notice\n \n \n \n \n Terms and Conditions\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Sign up to the ENO’s newsletter\n \n \n Sign up\n \n \n \n \n \n \n English National Opera is a charitable company limited by\n guarantee incorporated in England and Wales (Company number\n 00426792).\n \n \n Charity Registered Number 257210\n \n \n {artsCouncilLogo.alt}\n \n Developed with Endava\n \n \n \n
\n
\n );\n};\n\nexport default AppFooter;\n","import React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Typography } from \"@material-ui/core\";\nimport EditableSection from \"../components/EditableSection\";\nimport UserContext from \"../context/UserContext\";\n\nconst Home = ({ title, heroImage, editableContentLocations }) => {\n const { isAdmin } = useContext(UserContext);\n return (\n <>\n \n {heroImage.alt}\n \n\n \n {title}\n \n\n \n \n );\n};\n\nHome.propTypes = {\n title: PropTypes.string.isRequired,\n heroImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n editableContentLocations: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nHome.defaultProps = {\n heroImage: null,\n};\n\nexport default Home;\n","import React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Breadcrumbs, Grid, Typography } from \"@material-ui/core\";\nimport { NavLink } from \"react-router-dom\";\nimport EditableSection from \"../components/EditableSection\";\nimport SecondaryLink from \"../components/SecondaryLink\";\nimport UserContext from \"../context/UserContext\";\n\nconst HowEnoBreatheHelpedMe = ({\n title,\n breadcrumbs,\n heroImage,\n editableContentLocations,\n}) => {\n const { isAdmin } = useContext(UserContext);\n return (\n <>\n {heroImage && (\n \n {heroImage.alt}\n \n )}\n\n {/* TODO: Integrate with React router? */}\n {breadcrumbs && (\n \n \n ENO Breathe\n \n {title}\n \n )}\n\n \n {title}\n \n\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nHowEnoBreatheHelpedMe.propTypes = {\n title: PropTypes.string.isRequired,\n breadcrumbs: PropTypes.bool,\n heroImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n editableContentLocations: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nHowEnoBreatheHelpedMe.defaultProps = {\n breadcrumbs: true,\n heroImage: null,\n};\n\nexport default HowEnoBreatheHelpedMe;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Breadcrumbs, Typography, Grid } from \"@material-ui/core\";\nimport { makeStyles, styled } from \"@material-ui/core/styles\";\nimport { NavLink } from \"react-router-dom\";\nimport UserContext from \"../context/UserContext\";\nimport EditableSection from \"../components/EditableSection\";\nimport SecondaryLink from \"../components/SecondaryLink\";\n\nconst MeetTheTeam = ({\n title,\n breadcrumbs,\n heroImage,\n editableContentLocations,\n}) => {\n const [pageContent, setPageContent] = useState(\n '{ \"blocks\": [], \"entityMap\": {} }'\n );\n const { isAdmin } = useContext(UserContext);\n\n const useStyles = makeStyles({\n imageContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-around\",\n height: \"300px\",\n alignItems: \"center\",\n },\n imageContainerRight: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-around\",\n height: \"300px\",\n alignItems: \"center\",\n },\n img: {\n height: \"100%\",\n width: \"auto\",\n },\n editable: {\n // maxHeight: \"500px\",\n overflowY: \"auto\",\n },\n editableimg: {\n maxHeight: \"300px\",\n overflowY: \"auto\",\n },\n rowContainer: {\n paddingTop: \"4rem\",\n },\n image: {\n height: \"100%\",\n paddingTop: \"1rem\",\n paddingBottom: \"1rem\",\n },\n imageEdit: {\n backgroundPosition: \"center\",\n alignItems: \"center\",\n height: \"100%\",\n paddingTop: \"1rem\",\n paddingBottom: \"1rem\",\n },\n });\n\n const classes = useStyles();\n\n const NameImage = styled(Typography)({\n textAlign: \"center\",\n });\n\n useEffect(() => {\n // TODO: replace with an async call to API endpoint\n setPageContent(editableContentLocations);\n }, [editableContentLocations]);\n\n return (\n <>\n {heroImage && (\n \n {heroImage.alt}\n \n )}\n\n {/* TODO: Integrate with React router? */}\n {breadcrumbs && (\n \n \n ENO Breathe\n \n {title}\n \n )}\n \n {title}\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n \n Suzi Zumpe\n
\n
\n
\n \n \n \n \n \n
\n \n Lea Cornthwaite\n
\n
\n
\n \n \n \n \n \n
\n \n Jonathan Ainscough\n
\n
\n
\n \n \n
\n \n Robert Gildon\n
\n
\n \n \n \n
\n \n \n
\n \n Abigail Kelly\n
\n
\n \n \n \n
\n \n \n
\n \n Nicola Wydenbach\n
\n
\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n \n Jo Carey\n
\n
\n
\n \n \n \n \n \n
\n \n Amy Kearsley\n
\n
\n
\n \n \n \n \n \n
\n \n Laura O’Keefe\n
\n
\n
\n \n \n
\n \n Amy Hollinrake\n
\n
\n \n \n \n
\n \n \n
\n \n Vanessa Havell\n
\n
\n \n \n \n
\n \n \n
\n \n Jess Croll-Knight\n
\n
\n \n \n \n
\n \n \n \n \n \n
\n \n Caroline Foulkes\n
\n
\n
\n \n \n \n \n \n
\n \n Eleanor Wood\n
\n
\n
\n \n \n \n \n \n
\n \n Naomi Cull\n
\n
\n
\n \n );\n};\n\nMeetTheTeam.propTypes = {\n title: PropTypes.string.isRequired,\n breadcrumbs: PropTypes.bool,\n heroImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n editableContentLocations: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nMeetTheTeam.defaultProps = {\n breadcrumbs: true,\n heroImage: null,\n};\n\nexport default MeetTheTeam;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Breadcrumbs, Typography, Box } from \"@material-ui/core\";\nimport { NavLink } from \"react-router-dom\";\nimport SecondaryLink from \"../components/SecondaryLink\";\nimport computeSectionIcons from \"../utils/computeSectionIcons\";\nimport EditableSection from \"../components/EditableSection\";\nimport UserContext from \"../context/UserContext\";\n\nconst ContentPage = ({\n title,\n breadcrumbs,\n heroImage,\n navAnchors,\n editableContentLocations,\n}) => {\n const [pageContent, setPageContent] = useState(\n '{ \"blocks\": [], \"entityMap\": {} }'\n );\n const [computedPageAnchors, setComputedPageAnchors] = useState([]);\n const { isAdmin } = useContext(UserContext);\n\n useEffect(() => {\n // TODO: replace with an async call to API endpoint\n setPageContent(editableContentLocations[0]);\n }, [editableContentLocations]);\n\n useEffect(() => {\n navAnchors &&\n setComputedPageAnchors(computeSectionIcons(pageContent, navAnchors));\n }, [navAnchors, pageContent]);\n\n return (\n <>\n {heroImage && (\n \n {heroImage.alt}\n \n )}\n\n {/* TODO: Integrate with React router? */}\n {breadcrumbs && (\n \n \n ENO Breathe\n \n {title}\n \n )}\n\n \n {title}\n \n\n {navAnchors && computedPageAnchors}\n\n \n \n );\n};\n\nContentPage.propTypes = {\n title: PropTypes.string.isRequired,\n breadcrumbs: PropTypes.bool,\n heroImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n navAnchors: PropTypes.oneOf([\"header-two\", \"SUBTITLE\", false]),\n editableContentLocations: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nContentPage.defaultProps = {\n breadcrumbs: true,\n heroImage: null,\n navAnchors: false,\n};\n\nexport default ContentPage;\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { NavLink } from \"react-router-dom\";\nimport { Box, Breadcrumbs, Grid, Typography } from \"@material-ui/core\";\nimport computeSectionIcons from \"../utils/computeSectionIcons\";\nimport SecondaryLink from \"../components/SecondaryLink\";\nimport UserContext from \"../context/UserContext\";\nimport EditableSection from \"../components/EditableSection\";\n\nconst AboutTheEnoBreatheProgramme = ({\n title,\n breadcrumbs,\n heroImage,\n navAnchors,\n editableContentLocations,\n}) => {\n const [pageContent, setPageContent] = useState(\n '{ \"blocks\": [], \"entityMap\": {} }'\n );\n const [computedPageAnchors, setComputedPageAnchors] = useState([]);\n\n useEffect(() => {\n // TODO: replace with an async call to API endpoint\n setPageContent(editableContentLocations[0]);\n }, [editableContentLocations]);\n\n useEffect(() => {\n navAnchors &&\n setComputedPageAnchors(computeSectionIcons(pageContent, navAnchors));\n }, [navAnchors, pageContent]);\n\n return (\n <>\n {heroImage && (\n \n {heroImage.alt}\n \n )}\n\n {/* TODO: Integrate with React router? */}\n {breadcrumbs && (\n \n \n ENO Breathe\n \n {title}\n \n )}\n\n \n {title}\n \n \n \n {navAnchors && computedPageAnchors}\n \n \n \n \n \n \n {({ isAdmin }) => (\n \n )}\n \n \n );\n};\n\nAboutTheEnoBreatheProgramme.propTypes = {\n title: PropTypes.string.isRequired,\n breadcrumbs: PropTypes.bool,\n heroImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n navAnchors: PropTypes.oneOf([\"header-two\", \"SUBTITLE\", false]),\n editableContentLocations: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nAboutTheEnoBreatheProgramme.defaultProps = {\n breadcrumbs: true,\n heroImage: null,\n navAnchors: false,\n};\n\nexport default AboutTheEnoBreatheProgramme;\n","import React, { useContext } from \"react\";\nimport { Box, Breadcrumbs, Link, Typography } from \"@material-ui/core\";\nimport { NavLink } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport UserContext from \"../context/UserContext\";\nimport SecondaryLink from \"../components/SecondaryLink\";\nimport EditableSection from \"../components/EditableSection\";\nimport scrollToElement from \"../utils/scrollToElement\";\n\nconst ContactUs = ({\n title,\n breadcrumbs,\n heroImage,\n editableContentLocations,\n}) => {\n const { isAdmin } = useContext(UserContext);\n\n return (\n <>\n {heroImage && (\n \n {heroImage.alt}\n \n )}\n\n {/* TODO: Integrate with React router? */}\n {breadcrumbs && (\n \n \n ENO Breathe\n \n {title}\n \n )}\n\n \n {title}\n \n\n \n If you are a patient who had COVID-19 and are still suffering from\n breathlessness and its associated anxiety and symptoms, please get in\n touch with your local specialist long COVID clinic to be referred onto\n the programme.{\" \"}\n scrollToElement(\"covid\")}\n >\n View a list of all current participating specialist long COVID clinics\n here.\n \n \n \n If you are a Healthcare professional and would like to be able to refer\n your patients onto the programme, please get in touch with{\" \"}\n info.breathe@eno.org\n \n \n If you are a social prescribing link worker, your patient will need to\n have been medically assessed by their local long COVID clinic to be\n referred.\n \n \n If you would like to know more about the programme and your question has\n not been answered on our FAQ page here, please\n get in touch with{\" \"}\n info.breathe@eno.org\n \n \n Additional help for people recovering from COVID-19 can be found at{\" \"}\n \n yourcovidrecovery.nhs.uk\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nContactUs.propTypes = {\n title: PropTypes.string.isRequired,\n breadcrumbs: PropTypes.bool,\n heroImage: PropTypes.shape({\n url: PropTypes.string,\n alt: PropTypes.string,\n }),\n editableContentLocations: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nContactUs.defaultProps = {\n breadcrumbs: true,\n heroImage: null,\n};\nexport default ContactUs;\n","import homeRteContent from \"../mocks/homeRteContent\";\nimport aboutRteContent from \"../mocks/aboutRteContent\";\nimport whoIsForRteContent from \"../mocks/whoIsForRteContent\";\nimport {\n meetTheTeamFirst,\n meetTheTeamSecond,\n meetTheTeamThird,\n meetTheTeamFour,\n meetTheTeamFive,\n meetTheTeamSix,\n meetTheTeamSeven,\n meetTheTeam03,\n meetTheTeam04,\n meetTheTeam05,\n meetTheTeam06,\n meetTheTeam07,\n meetTheTeam08,\n meetTheTeam09,\n meetTheTeam10,\n meetTheTeam11,\n meetTheTeam12,\n meetTheTeam13,\n meetTheTeam14,\n meetTheTeam15,\n meetTheTeam16,\n} from \"../mocks/meetTheTeam\";\nimport faqRteContent from \"../mocks/faqRteContent\";\nimport howEnoBreatheHelpedMeRteContent from \"../mocks/howEnoBreatheHelpedMeRteContent\";\nimport Home from \"./Home\";\nimport HowEnoBreatheHelpedMe from \"./HowEnoBreatheHelpedMe\";\nimport MeetTheTeam from \"./MeetTheTeam\";\nimport ContentPage from \"./ContentPage\";\nimport howEnoBreatheHelpedMeTestimonialsRteContent from \"../mocks/howEnoBreatheHelpedMeTestimonialsRteContent\";\nimport AboutTheEnoBreatheProgramme from \"./AboutTheEnoBreatheProgramme\";\nimport {\n contactUsRteContent,\n contactUsRteContent2,\n} from \"../mocks/contactUsRteContent\";\nimport ContactUs from \"./ContactUs\";\nimport AdminPage from \"./AdminPage\";\n\n/**\n * @name contentPagesConfig\n * @description List of editable pages\n * @type {({path: string, component: ReactElement, meta: {heroImage: {alt: string, url: string}, title: string, editableContentLocations: array, breadcrumbs: boolean, navAnchors: string}})[]}\n */\nconst contentPagesConfig = [\n {\n path: \"\",\n component: Home,\n meta: {\n title: \"ENO Breathe\",\n breadcrumbs: false,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/06/ENOBreatheDandelions001_Website-scaled.jpg\",\n alt: \"The moon on a blue background, and dandelions beneath\",\n },\n navAnchors: false,\n editableContentLocations: [homeRteContent],\n },\n },\n {\n path: \"about-the-eno-breathe-programme\",\n component: AboutTheEnoBreatheProgramme,\n meta: {\n title: \"About the ENO Breathe Programme\",\n breadcrumbs: true,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/01/AboutENOBreatheHero.jpg\",\n alt: \"A camera filming a set with people and dandelions\",\n },\n navAnchors: \"header-two\",\n // TODO: replace with endpoint URL\n editableContentLocations: [aboutRteContent],\n },\n },\n {\n path: \"who-is-the-programme-for\",\n component: ContentPage,\n meta: {\n title: \"Who is the programme for?\",\n breadcrumbs: true,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/01/WhoBreatheisForHero.jpg\",\n alt: \"A dandelion on blue background\",\n },\n navAnchors: false,\n // TODO: replace with endpoint URL\n editableContentLocations: [whoIsForRteContent],\n },\n },\n {\n path: \"faqs\",\n component: ContentPage,\n meta: {\n title: \"FAQs\",\n breadcrumbs: true,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/01/ENOBreathePlaylistHero.jpg\",\n alt: \"A dandelion on orange background\",\n },\n navAnchors: \"SUBTITLE\",\n // TODO: replace with endpoint URL\n editableContentLocations: [faqRteContent],\n },\n },\n {\n path: \"how-eno-breathe-helped-me\",\n component: HowEnoBreatheHelpedMe,\n meta: {\n title: \"How ENO Breathe helped me\",\n breadcrumbs: true,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/01/HowBreatheHelpedMeHero.jpg\",\n alt:\n \"A screenshot of participants in a video call holding up mugs that are personalized with the ENO logo\",\n },\n navAnchors: false,\n editableContentLocations: [\n howEnoBreatheHelpedMeRteContent,\n howEnoBreatheHelpedMeTestimonialsRteContent,\n ],\n },\n },\n {\n path: \"meet-the-eno-breathe-team\",\n component: MeetTheTeam,\n meta: {\n title: \"Meet the Team\",\n breadcrumbs: true,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/01/MeettheteamFeat-800x400.jpg\",\n alt: \"A member of the team\",\n },\n navAnchors: false,\n // TODO: replace with endpoint URL\n editableContentLocations: [\n meetTheTeamFirst,\n meetTheTeamSecond,\n meetTheTeamThird,\n meetTheTeamFour,\n meetTheTeamFive,\n meetTheTeamSix,\n meetTheTeamSeven,\n meetTheTeam03,\n meetTheTeam04,\n meetTheTeam05,\n meetTheTeam06,\n meetTheTeam07,\n meetTheTeam08,\n meetTheTeam09,\n meetTheTeam10,\n meetTheTeam11,\n meetTheTeam12,\n meetTheTeam13,\n meetTheTeam14,\n meetTheTeam15,\n meetTheTeam16,\n ],\n },\n },\n {\n path: \"contact-us\",\n component: ContactUs,\n meta: {\n title: \"Contact Us\",\n breadcrumbs: true,\n heroImage: {\n url:\n \"https://english-national-opera-live.s3.amazonaws.com/wp-content/uploads/2021/01/BreatheFAQsHero.jpg\",\n alt:\n \"A screenshot of participants in a video call holding up mugs that are personalized with the ENO logo\",\n },\n navAnchors: false,\n editableContentLocations: [contactUsRteContent, contactUsRteContent2],\n },\n },\n {\n path: \"admin/dashboard\",\n component: AdminPage,\n meta: {\n title: \"Admin Dashboard\",\n },\n showIfAuthenticated: true,\n },\n];\n\nexport default contentPagesConfig;\n","// const homeRteContent = '{ \"blocks\": [], \"entityMap\": {} }';\nconst homeRteContent =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"A breathing and wellbeing programme for people recovering from the effects of COVID-19\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nexport default homeRteContent;\n","const aboutRteContent =\n '{\"blocks\":[{\"key\":\"2940a\",\"text\":\"What is ENO Breathe?\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"56i8e\",\"text\":\"A breathing and wellbeing programme developed specifically for people recovering from COVID-19, who are still suffering from breathlessness and associated anxiety. Delivered by ENO in collaboration with Imperial College Healthcare teams entirely online, the programme focuses on breathing re-training through singing.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4hq8u\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"21qcd\",\"text\":\"No prior experience or interest in singing is required to take part in ENO Breathe.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":83,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"fdrg1\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9r44r\",\"text\":\"ENO Breathe is not a choir or singing group. It is a social prescribing (non-clinical) intervention that uses singing techniques to aid recovery from COVID-19.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3mgkv\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bbbj0\",\"text\":\"ENO Breathe offers participants:\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a5thg\",\"text\":\"An initial one-to-one online conversation with a member of our ENO Breathe team to discuss your suitability to the programme, introduce you to the work we will be doing and answer any questions you might have.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4n1r\",\"text\":\"Six weekly group online workshop sessions, led by an ENO vocal specialist. Workshops will encourage participants to take part in exercises and activities especially designed to support breathing control, providing tools for self-management of breath and anxiety.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3k933\",\"text\":\"Access to bespoke online digital resources, designed to support you between sessions. These will include exercises, song sheets and audio and video materials, especially recorded by the ENO for participants on the programme.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"57cj4\",\"text\":\"Lullabies will be used as a way into exercises throughout the six weeks on the programme. Lullabies are expressly designed to calm and soothe, and have the benefit of being short, memorable and accessible to all.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"25rp8\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c708n\",\"text\":\"The aim of ENO Breathe is to empower patients in the management of breathlessness and anxiety post COVID-19 infection, by equipping them with the tools they need for self-management.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"23qto\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dd6ls\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6vf4n\",\"text\":\"What happens in a session and what are the online resources?\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1m5nh\",\"text\":\"‘Singing lullabies builds emotional connections with the other activities and exercises on the programme. Participants leave sessions with a calming song in their hearts – and crucially – this creates a positive emotional connection to a wealth of tools and exercises to help manage their symptoms, making these exercises more memorable, more meaningful and more usable.’\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"90hmc\",\"text\":\"Suzi Zumpe – Singing Specialist and Creative Director of ENO Breathe\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":68,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"7naaq\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1gd9l\",\"text\":\"The online weekly one hour sessions offer:\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dtaf1\",\"text\":\"Warm-up exercises to prepare the body and mind.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8rilq\",\"text\":\"Practical tools to support improvement in posture and breath control, encouraging self-management of anxiety and breathlessness.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c9np3\",\"text\":\"Guided and supported singing of culturally diverse lullabies, selected for their power to calm and soothe. These are memorable and accessible to all.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6eora\",\"text\":\"A moment for participants to connect with each other in a safe and supportive environment.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d14iu\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dh1lu\",\"text\":\"The online resources contain:\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c6fl8\",\"text\":\"Lullabies to sing along with or listen to through a specially recorded playlist of lullabies used on the ENO Breathe programme.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a2dqh\",\"text\":\"Lullabies from operas performed by ENO singers and players, selected and recorded especially for this moment in time for ENO Breathe participants to watch and listen to.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ar313\",\"text\":\"Downloadable playlists for bedtime or moments of panic.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3c9mm\",\"text\":\"Filmed exercise videos explaining and guiding viewers through breathing, vocal and warm-up techniques.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5khj7\",\"text\":\"Further exercises and tools for daily practise.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dte9l\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"eu97e\",\"text\":\"What happens after the programme?\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ak8d8\",\"text\":\"Following the six week programme, participants will also have access to post-programme digital resources, designed to support them to continue the exercises on their own after the programme has finished.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4hj6q\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"egs7v\",\"text\":\"In addition, all post programme participants will have access to fortnightly twilight drop-in online sessions. These take place on Thursday evenings from 19.00-20.00, or Lunchtimes on Fridays 12.30-1.15pm.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nexport default aboutRteContent;\n","const whoIsForRteContent =\n '{\"blocks\":[{\"key\":\"2940a\",\"text\":\"ENO Breathe has been specifically developed for people recovering from COVID-19, who are still suffering from breathlessness and its associated anxiety.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"240bh\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5n2ho\",\"text\":\"The programme is inclusive and open to all ethnicities, levels of spoken English, religious backgrounds and identities.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"20pd0\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7ukt\",\"text\":\"No prior experience or interest in singing is required to take part.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7jfoq\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ded1n\",\"text\":\"Participants need to be available for the six sessions and aged 18 or over.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ah4rt\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1ifnp\",\"text\":\"There is no cost to take part in the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6h9r8\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1vcpa\",\"text\":\"\",\"type\":\"HORIZONTAL-LINE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"73n22\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"lnn\",\"text\":\"ENO Breathe is currently only available for patients who have been medically assessed by a specialist long COVID clinic in England.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7n4g9\",\"text\":\"If you are a patient who had COVID-19 and are still suffering from breathlessness more that 8 weeks after your illness, please ask your GP to refer you to your local specialist long COVID clinic. Once medically assessed by a long COVID clinic, they can then refer you onto the programme. To view a list of all current participating specialist long COVID clinics, scroll down.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b3lsn\",\"text\":\"If you are a social prescribing link worker, your patient will need to have been medically assessed by their local long COVID clinic to be referred.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"akmvm\",\"text\":\"If you are a Healthcare professional and would like to be able to refer your patients onto the programme, please get in touch with info.breathe@eno.org .\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":131,\"length\":20,\"key\":0}],\"data\":{}},{\"key\":\"bj2d5\",\"text\":\"Additional help for people recovering from COVID-19 can be found at yourcovidrecovery.nhs.uk\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":68,\"length\":24,\"key\":1}],\"data\":{}},{\"key\":\"3umo2\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7881h\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4s73b\",\"text\":\"Participating post-COVID clinics\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fn7p3\",\"text\":\"North West\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3qvgh\",\"text\":\"Cheshire and Merseyside\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":23,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"9bqe4\",\"text\":\"Liverpool University Hospitals NHS Foundation Trust (Long Covid Assessment Hub)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4egf9\",\"text\":\"Liverpool University Hospitals NHS Foundation Trust (Pulmonary Rehabilitation)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cb8b\",\"text\":\"Lancashire and South Cumbria\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"45m85\",\"text\":\"Manchester\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":10,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"71alk\",\"text\":\"Royal Oldham Hospital, Manchester\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4o62e\",\"text\":\"North Manchester General Hospital London\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4o8m6\",\"text\":\"Leeds COVID Rehabilitation Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"egpod\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4ffsu\",\"text\":\"North East\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"45rdm\",\"text\":\"Royal Victoria Infirmary, Newcastle\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9ikk0\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2r3s8\",\"text\":\"Lancashire\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9kp7f\",\"text\":\"Blackpool Teaching Hospital Long COVID Service (Lancashire & South Cumbria Respiratory Network)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5gh5v\",\"text\":\"Central Lancashire ICP (Lancashire & South Cumbria Respiratory Network)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5uu4f\",\"text\":\"Blackpool Teaching Hospital Long COVID Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9mr4p\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1hf24\",\"text\":\"West Midlands\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e9vih\",\"text\":\"South Warwickshire Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2uq4o\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"qdln\",\"text\":\"London\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5e9hh\",\"text\":\"UCLH integrated post COVID service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"epni\",\"text\":\"Homerton University Hospital Foundation Trust (City & Hackney)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5g5pm\",\"text\":\"Imperial College Healthcare NHS Trust (St Mary’s Hospital/Charing Cross Hospital/Hammersmith Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4qsa8\",\"text\":\"Chelsea and Westminster Hospital NHS Foundation Trust (Chelsea and Westminster and West Middlesex Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2u7k6\",\"text\":\"Guys and St Thomas NHS Foundation Trust – St Thomas’ Hospital\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ck5t5\",\"text\":\"King’s College Health NHS Foundation Trust (Princess Royal University Hospital/Kings College Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"557n9\",\"text\":\"Royal Free Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ac4r4\",\"text\":\"Barnet Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dd46o\",\"text\":\"Barts Health NHS Trust, (Royal London Hospital and St Bartholomew’s Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8romn\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"elbc7\",\"text\":\"East of England\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4hi88\",\"text\":\"Cambridge Breathlessness Intervention Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8qoqa\",\"text\":\"East Suffolk and North Essex NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ablpg\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fkhc4\",\"text\":\"South East\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3utam\",\"text\":\"Oxfordshire Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1t7m3\",\"text\":\"North West Surrey\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2k47o\",\"text\":\"Sussex Community Foundation Trust.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e4k2b\",\"text\":\"Berkshire Healthcare NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d4sn5\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"382b1\",\"text\":\"South West\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"eurvc\",\"text\":\"Sirona Long Covid Service (Bristol, North Somerset and South Gloucestershire)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fjc06\",\"text\":\"Dorset Post Covid Syndrome Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a8i2c\",\"text\":\"Participating referral centres (post-COVID clinics and hospitals)\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"21csf\",\"text\":\"Barnet Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"20jsj\",\"text\":\"Barts Health NHS Trust, (Royal London Hospital and St Bartholomew’s Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"eqkoq\",\"text\":\"Berkshire Healthcare NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6sf57\",\"text\":\"Blackpool Teaching Hospital Long COVID Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2ejej\",\"text\":\"Bromley Post Covid Community Pathway\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"747l2\",\"text\":\"BSW (Bath, Swindon, Wiltshire) Long Covid Assessment Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"afng\",\"text\":\"Buckinghamshire NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c00nv\",\"text\":\"Bury Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1fakn\",\"text\":\"Cambridge Breathlessness Intervention Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d6lr\",\"text\":\"Chelsea and Westminster Hospital NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"alam\",\"text\":\"County Durham & Darlington NHS Foundation Trust Long-Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d3cun\",\"text\":\"Dorset Post Covid Syndrome Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"92bfa\",\"text\":\"East Cheshire Trust Long Covid MDT\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8mosb\",\"text\":\"East Sussex Healthcare NHS Trust - PCASS\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5cfkc\",\"text\":\"Epsom and St Helier integrated post covid assessment service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"67a33\",\"text\":\"First Community Health and Care COVID Rehab Team\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6seuu\",\"text\":\"Guys and St Thomas NHS Foundation Trust – St Thomas’ Hospital (London)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d5tf7\",\"text\":\"Herefordshire & Worcestershire ICS Long/Post Covid clinics\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"blnlq\",\"text\":\"Hertfordshire Community Service Health Care Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cjm2t\",\"text\":\"HMR (Heywood, Middleton and Rochdale) Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cr623\",\"text\":\"Homerton University Hospital Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3fl9m\",\"text\":\"Imperial College Healthcare NHS Trust Post covid clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4ptkl\",\"text\":\"Isle of Wight\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6lcmu\",\"text\":\"Kent & Medway Post Covid Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8jkea\",\"text\":\"King George Hospital (Barking Havering and Redbridge University Hospital NHS Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2auft\",\"text\":\"King\\'s College London Hospitals NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"39g8n\",\"text\":\"Kingston Hospital Post Covid Assessment Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"av89l\",\"text\":\"Leeds COVID Rehabilitation Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"16nut\",\"text\":\"Liverpool University Hospitals NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7atfd\",\"text\":\"Livewell Southwest NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"brpvl\",\"text\":\"London North West University Healthcare NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3fojv\",\"text\":\"Manchester NHS Foundation Trust, PACAS (post-acute COVID assessment service)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dk0b4\",\"text\":\"Mid Cheshire Long Covid Hub\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7rlof\",\"text\":\"Newcastle Upon Tyne NHS Foundation Trust (Newcastle)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"42d4d\",\"text\":\"Newham and Tower Hamlets Long Covid Triage Hub\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a7j7p\",\"text\":\"Norfolk Community Health and Care Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4kfv3\",\"text\":\"North Cumbria Long COVID Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a3ohg\",\"text\":\"North West Surrey Post COVID service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7152p\",\"text\":\"Northumbria Healthcare NHS Trust Post COVID Clinics\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"65o7b\",\"text\":\"Oxfordshire Long Covid Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dqi5f\",\"text\":\"Richmond Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cvj5m\",\"text\":\"Royal Devon & Exeter NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1j5ns\",\"text\":\"Royal Free London Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bm648\",\"text\":\"Royal Oldham Hospital, Chest Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"doako\",\"text\":\"Royal Surrey County Hospital and CResT long covid clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3it46\",\"text\":\"Salford Post Acute Covid Assessment Service (Manchester)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dr7ks\",\"text\":\"Sheffield Post Covid Rehabilitation Hub\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5r3md\",\"text\":\"Shropshire Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"em0uq\",\"text\":\"Sirona Long Covid Service (Bristol, North Somerset and South Gloucestershire).\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7qqnf\",\"text\":\"Solent NHS Trust, Southern Health Foundation Trust and IOW NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5i6ah\",\"text\":\"South Warwickshire Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a9v63\",\"text\":\"South West London Specialist Post COVID-19 Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1ev5\",\"text\":\"St George\\'s Hospital NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"draco\",\"text\":\"Stockport FT Long Covid MDT Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a6k18\",\"text\":\"Suffolk and North East Essex Long Covid Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8boob\",\"text\":\"Sussex Community Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1jd5i\",\"text\":\"Tameside and Glossop Integrated Care NHSFT\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8orue\",\"text\":\"UCLH integrated post COVID service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e96qg\",\"text\":\"Warrington & Halton NHS Teaching Hospital Pulmonary Rehab Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"eradv\",\"text\":\"West Cheshire and Wirral Partnership Long Covid MDT\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e93bt\",\"text\":\"West Herts Long covid service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"38j5k\",\"text\":\"Wrightington, Wigan and Leigh Teaching Hospitals NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b8n90\",\"text\":\"York and Scarborough Teaching Hospitals NHSFT - Post COVID Syndrome Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{\"0\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"1\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"http://www.yourcovidrecovery.nhs.uk/\",\"rel\":\"noopener\",\"target\":\"_blank\",\"url\":\"http://www.yourcovidrecovery.nhs.uk/\"}}}}';\nexport default whoIsForRteContent;\n","const faqRteContent =\n '{\"blocks\":[{\"key\":\"2940a\",\"text\":\"I had COVID-19 and I am still suffering, how can I join? \",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ct047\",\"text\":\"If you have had confirmed COVID-19 and are still struggling with symptoms of breathlessness 8 weeks after recovering from the main symptoms, your GP should refer you to your local specialist long COVID clinic. They will medically assess you and, if they think that you are medically suitable, will be able to refer you onto the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d61de\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"94il7\",\"text\":\"My local long COVID clinic is not yet partnered with ENO Breathe, what can I do?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2ria\",\"text\":\"Please let us know which long COVID clinic you have approached and we will aim to make contact with them to ensure you can be referred. Please allow four to six weeks for us to process arrangements with a new long COVID clinic.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"augn9\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cv0e8\",\"text\":\"Why do I need to wait eight or ten weeks after having recovered from COVID-19 before being able to be referred to this programme?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"22ih5\",\"text\":\"Hospitalised patients must wait 8 weeks after hospital discharge and Community patients must wait 10 weeks after diagnosis / onset of symptoms (e.g 2 weeks illness + 8 weeks recovery). This is because many patients will naturally recover in the first eight weeks post infection. This programme is specifically designed for patients still suffering with more long-standing symptoms.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8plvq\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"esj9g\",\"text\":\"Why do I need to be assessed by a long COVID-19 clinic?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7gk77\",\"text\":\"Whilst our programme has been designed in collaboration with a team of medical professionals, it does not include a medical assessment. In order to ensure the safety of participants it is essential that they have an assessment by a specialist COVID-19 service.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1nmmd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b2r30\",\"text\":\"I have been referred by a specialist long COVID clinic. What do I do now?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d93d2\",\"text\":\"Your long COVID clinic will have given you a referral code. If they haven’t done so, please check back with them to ensure you have this referral code. Once you have the code, you can register your details online and a member of ENO Breathe will be in touch with you.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":184,\"length\":28,\"key\":0}],\"data\":{}},{\"key\":\"a21va\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"div0l\",\"text\":\"I live outside of England. Can I join the programme?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3frlk\",\"text\":\"The ENO Breathe programme is currently only available to people living in England in this next phase of funding. We are currently looking into the potential to develop partnerships across the UK and internationally, as well as further developing and expanding our online teaching resources from the programme so that they can be made available more widely. Any updates will be given on this website and on ENO social media channels.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2s7qd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"aeshi\",\"text\":\"I am a GP, how can I refer patients?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"60m89\",\"text\":\"Patients may be referred onto the programme by a GP provided they have been medically assessed by a specialist long COVID clinic and deemed medically suitable to participate. As a GP, you will need to certify that your patient meets the medical criteria by sending us a confirmation of this.Please get in touch at info.breathe@eno.org to receive full details of ENO breathe medical criteria and referral suitability.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":314,\"length\":20,\"key\":1}],\"data\":{}},{\"key\":\"aes0o\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cc8tj\",\"text\":\"I am a link worker, how can I refer patients?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fd6u8\",\"text\":\"Link workers are advised to guide their patients to their local specialist long COVID clinic so that they are medically assessed. The medical criteria for the project is specific and rigorous in order ensure it is safe and suitable for the participants.Please get in touch at info.breathe@eno.org to receive full details of ENO breathe medical criteria and referral suitability.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":276,\"length\":21,\"key\":2}],\"data\":{}},{\"key\":\"c6fr4\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d3okr\",\"text\":\"I lead a long COVID clinic, how can we offer this programme to our patients?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6nu0s\",\"text\":\"Please get in touch with us at info.breathe@eno.org. As a first step, we will organise for you to join one of our video conference calls to talk through the programme and discuss the next steps.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":31,\"length\":20,\"key\":3}],\"data\":{}},{\"key\":\"dedsr\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ckg7e\",\"text\":\"What is the referral process?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e1cni\",\"text\":\"Specialist long COVID clinics are partnering with us to be able to refer patients onto the programme. Once a patient has been assessed by a partner specialist long COVID clinic and deemed medically suitable for our programme, the patient will be given a referral code. The patient will then be able to self-refer by registering directly on our website.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":344,\"length\":7,\"key\":4}],\"data\":{}},{\"key\":\"5ou6m\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"btshr\",\"text\":\"What happens once I have registered on the programme?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"keta\",\"text\":\"Once you have completed the registration form, you will be contacted by the ENO Breathe team and offered a one-to-one discussion with your vocal leader and programme manager/coordinator. This one-to-one is for us to get to know you and to ensure that your situation meets the essential criteria that this programme will be responding to. It will also be an opportunity to share all the details and information about the programme and for you to ask us any questions you might have. Once this is completed and satisfactory on both parts, you will be assigned to a specific group.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b7g1v\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3rpjp\",\"text\":\"What if I cannot make the time/dates of my assigned group?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9273f\",\"text\":\"If you are assigned to a group that falls on a time of the week that doesn’t suit you, let the ENO Breathe team know at info.breathe@eno.org. You will be put on a waiting list and assigned to a new group as soon as one opens.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":120,\"length\":20,\"key\":5}],\"data\":{}},{\"key\":\"si1v\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7q8qp\",\"text\":\"What will I be doing in a session?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8731e\",\"text\":\"The group sessions will take place online once a week, for six weeks. There will be warm-ups, exercises using singing, breath work, and exercises to deepen awareness of physical sensation. All exercises can be done sitting or standing. Read more about the content of sessions here.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":276,\"length\":4,\"key\":6}],\"data\":{}},{\"key\":\"19eqb\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"al9to\",\"text\":\"I can’t sing/don’t like singing. Is that a problem?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8qj8p\",\"text\":\"This is not a problem at all. Most people joining us have never sung before. Singing is the vehicle used to achieve a particular outcome: to improve your breathlessness through aligning body, mind and breathing.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cq89j\",\"text\":\"Musically, the programme uses lullabies to calm and soothe. Lullabies are known for being accessible to any vocal range. The sessions take place online via Zoom which does not allow for multiple voices to be singing together, so you will be muted in all the singing sections during a session.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"711bd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e6t3n\",\"text\":\"I love singing. Can I join in?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4nn5g\",\"text\":\"ENO Breathe is not a choir or singing group. This programme is not open to members of the public looking to take part in a singing group.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dqj6i\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"evtg8\",\"text\":\"What are the medical criteria to be able to join the programme?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"798v3\",\"text\":\"We ask all referring specialist long COVID clinics and GPs to follow before our medical criteria referring a patient onto the programme. Please get in touch at info.breathe@eno.org to receive full details on ENO breathe medical criteria and referral suitability.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":160,\"length\":20,\"key\":7}],\"data\":{}},{\"key\":\"fi0k8\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cfs1e\",\"text\":\"English is not my first language. Can I still join?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a1o3g\",\"text\":\"Yes, absolutely. Although the sessions are led in English, all the exercises will be demonstrated on screen so non-native English speakers will be able to follow too. The music comes from all over the world. Lyrics are simple and led as a call and response, and with some songs there are no words at all.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3vopm\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7qdu0\",\"text\":\"I don’t have a computer, laptop or smartphone. How can I still take part?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8l9mm\",\"text\":\"All sessions are currently taking place online. If you do not have access to technology, please contact us at info.breathe@eno.org and a member of our team will be in touch to discuss how we can support you. Alternatively, we also recommend getting in touch with your local library.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":110,\"length\":20,\"key\":8}],\"data\":{}},{\"key\":\"bjqks\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"95r0e\",\"text\":\"I understand that all online sessions take place on Zoom. I have never used Zoom before. What do I do?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8db97\",\"text\":\"When you register online, please tick the box specifying that you are not familiar using Zoom. We will then give you a phone call first to guide you through it.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6p5jt\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2ojpa\",\"text\":\"Why singing?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"896ua\",\"text\":\"Singing has long been proven to improve health and general wellbeing.  It releases endorphins, engages abdominal and intercostal muscles and the diaphragm and stimulates circulation. Singing has also been proven to help us breathe more deeply.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"95b9i\",\"text\":\"The programme encourages a combined approach in which we train the mind to work with the body, mirroring techniques used by opera singers. Participants will learn strategies to help focus constructively on their breathing, in a musically soothing environment.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"iud3\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3kamf\",\"text\":\"Why lullabies?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2lj31\",\"text\":\"Traditional lullabies are universal in their appeal. They cross boundaries of culture and tend to sit comfortably within a non-specialist singer’s vocal range, making them accessible for people who may feel singing is not for them, or who are anxious about their physiological capability.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8a670\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8c45n\",\"text\":\"Will I be singing opera?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8sj5e\",\"text\":\"We have chosen to focus on lullabies to calm and soothe. Although some lullabies appear in operas, we will not be singing operatic pieces. Once you join the programme, you will have access to a recorded and filmed playlist of lullabies, performed and curated especially by the ENO for participants on the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"aidk6\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5vpje\",\"text\":\"What do the online resources contain?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d5r3i\",\"text\":\"Read more and view an outline of the online resources.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":0,\"length\":54,\"key\":9}],\"data\":{}},{\"key\":\"bn1md\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5t5dr\",\"text\":\"How do I access the online resources?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"63qt1\",\"text\":\"Once you are fully registered on the programme, the ENO Breathe online resources will be made available to you via a website link where you will need to create an account.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dhc31\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"58n68\",\"text\":\"What happens after the six week programme?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8tfrp\",\"text\":\"You will receive access to post-programme digital resources, designed to support you to continue the exercises on your own. In addition, all post programme participants will have access to fortnightly twilight drop-in online sessions taking place on Thursday evenings from 19.00-20.00 and Friday lunchtimes from 12.30-1.15pm.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4c30a\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"aksa8\",\"text\":\"How much does it cost?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"47pr2\",\"text\":\"ENO Breathe is free for participants to take part.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"27k9l\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ahrqq\",\"text\":\"Who is funding this programme?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5944r\",\"text\":\"To date, ENO Breathe has been generously funded by donations from ENO Supporters and Members. Our development team at ENO are continuing to raise funds for the next phases of the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5i5qo\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"67bm\",\"text\":\"I would like to support this programme. How can I get involved?\",\"type\":\"SUBTITLE\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"436r2\",\"text\":\"If you would like to make a donation towards the programme, please follow this link or get in touch with Katherine Sayer at ksayer@eno.org\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":79,\"length\":5,\"key\":10},{\"offset\":124,\"length\":14,\"key\":11}],\"data\":{}}],\"entityMap\":{\"0\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"https://eno.org/eno-breathe/sign-up-for-eno-breathe/\",\"url\":\"https://eno.org/eno-breathe/sign-up-for-eno-breathe/\"}},\"1\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"2\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"3\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"4\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"https://eno.org/eno-breathe/sign-up-for-eno-breathe/\",\"rel\":\"noopener\",\"target\":\"_blank\",\"url\":\"https://eno.org/eno-breathe/sign-up-for-eno-breathe/\"}},\"5\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"6\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"https://eno.org/eno-breathe/about-the-eno-breathe-programme/\",\"rel\":\"noopener\",\"target\":\"_blank\",\"url\":\"https://eno.org/eno-breathe/about-the-eno-breathe-programme/\"}},\"7\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"8\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:info.breathe@eno.org\",\"url\":\"mailto:info.breathe@eno.org\"}},\"9\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"https://eno.org/eno-breathe/about-the-eno-breathe-programme/\",\"rel\":\"noopener\",\"target\":\"_blank\",\"url\":\"https://eno.org/eno-breathe/about-the-eno-breathe-programme/\"}},\"10\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"https://tickets.eno.org/en-GB/donations/eno%20breathe?_ga=2.71581971.1482461030.1611487555-89920122.1599843466\",\"rel\":\"noopener\",\"target\":\"_blank\",\"url\":\"https://tickets.eno.org/en-GB/donations/eno%20breathe?_ga=2.71581971.1482461030.1611487555-89920122.1599843466\"}},\"11\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"mailto:ksayer@eno.org\",\"url\":\"mailto:ksayer@eno.org\"}}}}';\nexport default faqRteContent;\n","const howEnoBreatheHelpedMeRteContent =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"In October and November 2020, we ran our first pilot sessions of ENO Breathe with a small cohort of participants.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":113,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"aursq\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4n0ge\",\"text\":\"Participants ranged from those in their 30s to their 70s, and were 41% ethnically diverse. For 25% of the group, English was not their first language and 20% expressed concern at the start of the programme that singing was ‘not for them’.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6ckf4\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"10o8e\",\"text\":\"The outcome of the pilot is overwhelmingly positive, with 90% of participants stating that they perceive ENO Breathe to have had either ‘positive’ or ‘strong positive’ impact on their breathlessness, and 91% stating that the programme had ‘positive’ or ‘strong positive’ impact on their anxiety levels.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nexport default howEnoBreatheHelpedMeRteContent;\n","const howEnoBreatheHelpedMeTestimonialsRteContent =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Read what participants have said in their own words\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"43ogv\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"f99gk\",\"text\":\"I feel that I’m part of a support group which is invaluable at this stage. It has given me practical tools to deal with the breathlessness.\\\\n- Sheeba\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":142,\"length\":6,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"agnei\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4q9c2\",\"text\":\"Even though some of us are not singers, it doesn’t really matter. It just feels that you want to be in that gang, you want to join in. And I just want to say thank you.\\\\n- Deborah\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":171,\"length\":7,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"1su42\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"59ts6\",\"text\":\"Singing helped me exercise my lungs to control and manage my breath better.\\\\n- Robert\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":78,\"length\":6,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"bvbt2\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"abca3\",\"text\":\"The use of the lullabies and the relaxing songs kind of calms you already, ready to breathe in a more focused way. I thought it was sneaky!\\\\n- Jenny\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":142,\"length\":5,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2sqcj\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fdao2\",\"text\":\"I think this is a fantastic program. The delivery of it has been fantastic and I can only speak for somebody who came in completely blind.\\\\n- Colette-Elizabeth\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":141,\"length\":17,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"9gkbo\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ckocd\",\"text\":\"When they said that singing was going to be part of the programme, I thought I had joined the wrong programme because I really cannot sing. But when I joined, it was helpful. I enjoyed it. I liked it, and I liked the singing.\\\\n- Ruth\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":228,\"length\":4,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"4ehe8\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"56qj0\",\"text\":\"I never before had an experience like this. I didn’t think things like singing could help me with my breathing and improve my recovery from Covid and it has really helped me emotionally and physically.\\\\n- Ludmila\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":204,\"length\":7,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2mncd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9qh76\",\"text\":\"I’m neither a singer and I’m not a native English speaker. I feel that the content of the programme has been so well thought about for something that appeals to everyone. It’s all inclusive and I think that in itself is amazing and shows that a lot of thought has gone into the content.\\\\n- Sheeba\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":289,\"length\":6,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"dkuqd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c4gpi\",\"text\":\"I’m sure that over six weeks I would have made some recovery anyway, but I definitely know that during my day to day life, I’m calling upon things that I’ve done in the course. I’ve no doubt that ENO has been one of the causes of my progress over the last six weeks.\\\\n- Jenny\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":269,\"length\":5,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"76o85\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8v6p1\",\"text\":\"I’m more prepared / armed now to handle my breathing moving forward.\\\\n- Wayne\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":71,\"length\":5,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"qmc1\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d34m5\",\"text\":\"It’s prevented me from calling my GP about anxiety brought on by breathing issues. I genuinely believe it will take pressure off medical facilities.\\\\n- Sheeba\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":151,\"length\":6,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"ervnv\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dlv8j\",\"text\":\"ENO made me feel like someone still cared and something was actively being done to recognise and ‘treat’ long covid and not let us become lost in the ether.\\\\n- Jen\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":159,\"length\":3,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"r309\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"936hl\",\"text\":\"As a non-native English speaker, I wasn’t sure I was going to fit in with ENO, but it has been a fantastic tool that has given me my confidence back.\\\\n- Sheeba\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":152,\"length\":6,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"3borl\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a7rah\",\"text\":\"I feel the improvement week on week.\\\\n- Wayne\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":39,\"length\":5,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"6g7v8\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5ouuu\",\"text\":\"My experience with ENO Breathe has been fantastic, it has really aided me enormously with my breathlessness and also my anxiety a little around re-integrating myself back into society.\\\\n- Richard\",\"type\":\"blockquote\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":187,\"length\":7,\"style\":\"ITALIC\"}],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nexport default howEnoBreatheHelpedMeTestimonialsRteContent;\n","const meetTheTeamFirst =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Executive Team\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":14,\"style\":\"BOLD\"},{\"offset\":0,\"length\":14,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"a1a9d\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"302f3\",\"text\":\"Jenny Mollica- Director of Strategy and Engagement\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":50,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"elem5\",\"text\":\"Jenny leads the ENO’s work on the strategic design and development of this pioneering programme, ENO Breathe, in close collaboration with Imperial College Healthcare Trust.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"eps4t\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"autuo\",\"text\":\"Suzi Zumpe – Creative Director\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":30,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"72dkd\",\"text\":\"An experienced educator, facilitator and singing specialist, Suzi is interested in people, music, connections and learning by stealth. She has designed the session content and resources for this programme as Creative Director, and leads some of the groups as a Session Leader.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b5omh\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7g2m3\",\"text\":\"Sarah Elkin - Lead Doctor\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":25,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2id3k\",\"text\":\"Sarah is a respiratory consultant and director of integrated care at Imperial NHS trust and the lead doctor on this programme. Sarah has been key in designing the programme and bringing in her medical expertise.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ba4d3\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2r3g\",\"text\":\"Harriet Owles - Respiratory Doctor\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":34,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"vvps\",\"text\":\"Harriet is a respiratory doctor at Imperial College NHS Trust. Harriet has supported the design of the programme, ensuring that the programme is medically safe and suitable for participants, analysing participants’ survey results and feedback to ensure that we are continuously optimising the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7aufk\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"77i06\",\"text\":\"Beth Warnock – Head of Department, ENO Engage\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":45,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"fb749\",\"text\":\"Beth leads the ENO Engage team, working under Jenny Mollica on the strategic vision of the department. ENO Breathe is one of the key programmes within the department, and Beth works with the team developing future plans and developments of the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ckqea\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cmph2\",\"text\":\"Tanja Pagnuco – Programme Manager\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":33,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"37bo9\",\"text\":\"Tanja is a Programme Manager at ENO, responsible for the Adult Community and Arts & Health programme area within the ENO Engage department. As Programme Manager of ENO Breathe, she worked on developing the scope of the programme in line with the strategic objectives of the department and in partnership with Imperial College NHS Trust.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nconst meetTheTeamSecond =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Programme Management & Evaluation\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":33,\"style\":\"BOLD\"},{\"offset\":0,\"length\":33,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"64mi9\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2pm1p\",\"text\":\"Katie Bruce - ENO Breathe Project Manager\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":41,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"8pbik\",\"text\":\"Katie is the ENO Breathe Project Manager, she oversees the everyday delivery and ongoing development of the project which involves everything from maintaining the project schedule, managing and developing new NHS partnerships, and supporting the team of freelancers who lead the sessions.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ff8lh\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bljlm\",\"text\":\"Anya Chomacki- ENO Breathe Coordinator\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":38,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"63poi\",\"text\":\"Anya is the Breathe Coordinator at ENO, responsible for the day to day planning and logistics of the ENO Breathe programme, from liaising with participants to scheduling the freelance project team, as well as attending sessions and supporting the evaluation of the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"74h5\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"819ue\",\"text\":\"Emily Smith - Programme Coordinator\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":35,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"5i14v\",\"text\":\"Emily is a Programme Coordinator within the Learning and Participation team at ENO, working primarily within the Community, Health and Wellbeing strand. She has been involved in the development and delivery of ENO Breathe since it’s early stages and continues to support with the administration and delivery of the programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a1m1k\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"86uiq\",\"text\":\"Stephanie McVey- ENO Breathe Administrator\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":42,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"69ua1\",\"text\":\"Stephanie joined the team at ENO in October 2019. Steph is now working at the ENO Breathe Administrator, and is responsible for processing all applications and collating data for evaluation for the programme. Alongside her work at ENO, Stephanie is a violinist and has a private teaching practice, welcoming violinists of all ages.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6fd49\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ff0ua\",\"text\":\"Thomas Hardy - Independent evaluator\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":36,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2b667\",\"text\":\"He worked with the team during the pilot program to develop the methodology which is being used to monitor the impact the programme is having. Thomas continues to analyse the feedback and date and report regularly to the ENO Breathe team. He is particularly interested to capture the personal stories of the impact the program is having and to back that up with robust data which evidences the power of this initiative to both the arts and healthcare sectors.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cp20m\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2285l\",\"text\":\"ENO Breathe Advisory Roles\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":26,\"style\":\"BOLD\"},{\"offset\":0,\"length\":26,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"fajdq\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"87g7s\",\"text\":\"ENO Breathe Advisory group:\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":27,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"12u\",\"text\":\"Dr Amiad Abrahams, Dr Harry Brunjes, Dr Nick Hopkinson, Professor Ajit Lavani, Adam Lound, Dr Boon Lim, Michelle Maguire, Vijay Padmanaban, Hannah Pluthero, Dr Kier Philip, Dr Georgina Russell\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"80n0s\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"at28e\",\"text\":\"Participant Steering Group:\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":27,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2rs9d\",\"text\":\"Sharon Sullivan, Umut Esmer, Jen Shepherd\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nconst meetTheTeamThird =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Suzi Zumpe – Creative Director\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":30,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"1oavp\",\"text\":\"A singing specialist and facilitator, Suzi enjoys finding creative ways to communicate complex ideas. As Creative Director of ENO Breathe, she is responsible for researching, devising and developing the overall scope and contents of this award-winning programme. Her role has enabled her to collaborate with respiratory specialists at Imperial College Healthcare NHS Trust as well as draw on ENO’s expertise regarding the intersection of breath, emotional connection and music. These fresh insights inform ENO Breathe’s holistic approach, where learning by stealth meets experiential engagement and lullabies, an integral part of the programme, are a soothing balm.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a9lvk\",\"text\":\"Suzi attended The Purcell School of Music followed by City of London School for Girls (where she held a joint scholarship between CLSG and Guildhall School of Music and Drama), before going on to study at the University of Manchester. Her long association with ENO began in 2000 when she was a student on ‘The Knack’, Mary King’s prestigious performance course for young singers.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2d1oj\",\"text\":\"In addition to ENO, companies with whom Suzi regularly collaborates include Southbank Centre, Royal Opera House (joint artistic director of ROH Youth Company 2009 - 2017), Garsington Opera (currently Vocal Director of Garsington Opera Youth Company), Royal Academy of Music, Opera Holland Park, The Grange Festival and Monteverdi Choir and Orchestras.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3kfsr\",\"text\":\"Alongside her work in this field, Suzi is the director of Mondegreen Leadership Ltd, providing bespoke and immersive experiential workshops in a corporate training environment. Clients include London Business School, HSBC, Unilever and The Academy of High Performance Teams.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nconst meetTheTeamFour =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Lea Cornthwaite – Senior Session Leader\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":39,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"fcdp7\",\"text\":\"Lea is the Senior session leader working closely with Creative Director Suzi Zumpe to deliver and refine the ENO Breathe programme. He is a versatile singer and workshop leader with twenty years of experience of performing, directing choirs and leading vocal workshops across many genres of music. He aims to create a supportive & joyful musical environment; to connect with people; to help them discover their confidence and so unleash their musical potential\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2cc9a\",\"text\":\"From a singing & wellbeing perspective, Lea has worked extensively with stroke survivors, spinal injuries patients, people living with dementia and other groups. He ran the Mind & Soul Choir, based at the Maudsley Hospital for 12 years and has worked with singers in a range of clinical and community mental health settings including at Rampton Secure Hospital, one of England’s three high-security psychiatric hospitals\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"14eqr\",\"text\":\"As a performer, he has sung at the National Theatre & Shakespeare’s Globe, among others. As a workshop leader or as a music/vocal director, he has worked with many of the major arts organisations in the UK (ROH, Opera North, Southbank Centre, Glyndebourne, Garsington Opera, BBC etc), as well as many different projects for ENO over the years.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nconst meetTheTeamFive =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Session Leader Team \",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":20,\"style\":\"BOLD\"},{\"offset\":0,\"length\":20,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nconst meetTheTeamSix =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Group Coordinators\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":18,\"style\":\"BOLD\"},{\"offset\":0,\"length\":18,\"style\":\"UNDERLINE\"}],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nconst meetTheTeamSeven =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Lea Cornthwaite – Senior Session Leader\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":39,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"8dpth\",\"text\":\"Lea is the Senior session leader working closely with Creative Director Suzi Zumpe to deliver and refine the ENO Breathe programme. He is a versatile singer and workshop leader with twenty years of experience of performing, directing choirs and leading vocal workshops across many genres of music. He aims to create a supportive & joyful musical environment; to connect with people; to help them discover their confidence and so unleash their musical potential\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ce940\",\"text\":\"From a singing & wellbeing perspective, Lea has worked extensively with stroke survivors, spinal injuries patients, people living with dementia and other groups. He ran the Mind & Soul Choir, based at the Maudsley Hospital for 12 years and has worked with singers in a range of clinical and community mental health settings including at Rampton Secure Hospital, one of England’s three high-security psychiatric hospitals\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6468e\",\"text\":\"As a performer, he has sung at the National Theatre & Shakespeare’s Globe, among others. As a workshop leader or as a music/vocal director, he has worked with many of the major arts organisations in the UK (ROH, Opera North, Southbank Centre, Glyndebourne, Garsington Opera, BBC etc), as well as many different projects for ENO over the years.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam03 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Jonathan Ainscough\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":18,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"5j6mq\",\"text\":\"Jonathan Ainscough trained at Manchester University and the Royal Northern College of Music, and now works across all forms of music and theatre throughout the UK and beyond. He has created and delivered projects for the Royal Opera House, Welsh National Opera, Garsington Opera and Opera North, and works regularly with Streetwise Opera, using music and drama to help people experiencing homelessness bring about positive change in their lives. He is a Visiting Tutor at the Royal Northern College of Music and Manchester University, lecturing in participatory music and directing operas and other vocal projects. Outside of his work as a facilitator and educator, Jonathan performs extensively as a singer, actor and multi-instrumentalist, most notably as a company member of the Olivier-Award-winning Showstopper! The Improvised Musical, with whom he performs regularly in the West End and on tour. He has a keen interest in new work, and has sung in original pieces of opera and other music theatre at Aldeburgh, the Oxford Lieder Festival, the Huddersfield Contemporary Music Festival and the London Jazz Festival, among many others venues and institutions. Jonathan is delighted to be joining the ENO Breathe team and becoming involved in this wonderful and vital work.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam04 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Robert Gildon\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":13,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"4gl94\",\"text\":\"Rob is a classically trained singer and workshop leader. He studied at Exeter University, Manhattan School of Music in New York, the Tanglewood Music Center, Aspen Music Festival in the US and Britten Pears School at Snape Maltings.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6unh7\",\"text\":\"As a singer he has performed with many leading groups including the London Symphony Orchestra, Orchestra of the Age of Enlightenment, Garsington Opera and The Opera Group in a range of repertoire from the Baroque to the Contemporary.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8scb1\",\"text\":\"Rob regularly leads workshops for Streetwise Opera, Grange Festival, The Mozartists and Britten Pears Arts and has performed in many community pieces for English National Opera, Garsington Opera and the Royal Opera House. Recent work includes collaborations with Trinity Laban, the World Wildlife Fund/Grange Festival and a Stockhausen Project at the South Bank Centre.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2ufv3\",\"text\":\"Rob lives in Suffolk with 4 dogs, 17 goats, peacocks, chickens, bees and a tortoise that keep him on his toes.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam05 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Abigail Kelly\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":13,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"tltr\",\"text\":\"Born and raised in Birmingham, Abigail studied at the Royal Birmingham Conservatoire graduating with a first class honours degree and continued her studies at the Royal Scottish Conservatoire of Scotland. Abigail facilitates workshops in conjunction with WNO (Birmingham Youth Opera), Birmingham Opera Company, ENO, English Touring Opera, Streetwise Opera and ROH (Opera Nation).\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b20nq\",\"text\":\"Whilst Abigail’s more traditional operatic roles include Pamina - The Magic Flute (OperaUpClose) and Susanna - The Marriage of Figaro (ETO), Abigail particularly enjoys performing operas written for children and SEND audiences including the award-winning Laika the Spacedog and Under the Little Red Moon an opera for babies both by Russell Hepplewhite and Tim Yealland.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"au7ua\",\"text\":\"Abigail enjoys highlighting the works of composers of African and Caribbean backgrounds and has performed in many operas by composer Shirley Thompson OBE including Sacred Mountain at the Tête-à-Tête festival and in Kingston, Jamaica. Abigail has relished the opportunities that have arisen in making the shift to online activities. Performances have included an operatic recital aimed for younger audiences for the Royal Albert Hall as part of their Royal Albert Home series; Shh! we have a plan, an operatic version of the children’s book by Chris Haughton with music by composer Noah Moseley (ETO) and a performance project titled UNSEEN commissioned by Streetwise Opera with music by John Barber in collaboration with Streetwise Opera performers from across the UK.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4075o\",\"text\":\"Abigail is a trustee on the Board of English Touring Opera and strives to promote inclusivity and diversity in opera.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam06 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Nicola Wydenbach\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":16,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"b42gv\",\"text\":\"Nicola Wydenbach is a graduate of the RCM where she was supported by a scholarship from Diva Opera. She has sung for Scottish Opera, the Monteverdi Choir, Philharmonia Voices and London Voices. She has a special relationship with ENO, having been a member of their extra chorus since 2008 and performed in productions including their award-winning Peter Grimes.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"44ppa\",\"text\":\"Alongside her performing career, Nicola is an experienced vocal coach and facilitator having worked for ROH, ENO, the BBC, Britten Pears Arts, Streetwise Opera and Mahogany Opera.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a80qa\",\"text\":\"Nicola is a specialist in using singing in arts and health settings, working with people with Parkinson’s and mental health conditions. She is Director of training for Sing to Beat Parkinson’s (www.singtobeat.co.uk). She is interested in everyone as an artist and is currently co-creating an opera work for people with Parkinson’s as part of the collective Carve CoLab. (www.carvecolab.com). She is musical director of the Mind and Soul Community Choir (www. mindandsoulchoir.org) for all those affected by mental illness. For the choir she produced and directed Camberwell Gro(o)ve for World Mental Health Day.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[{\"offset\":194,\"length\":20,\"key\":0},{\"offset\":371,\"length\":18,\"key\":1},{\"offset\":453,\"length\":26,\"key\":2}],\"data\":{}}],\"entityMap\":{\"0\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"http://www.singtobeat.co.uk\",\"url\":\"http://www.singtobeat.co.uk/\"}},\"1\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"http://www.carvecolab.com\",\"url\":\"http://www.carvecolab.com/\"}},\"2\":{\"type\":\"LINK\",\"mutability\":\"MUTABLE\",\"data\":{\"href\":\"https://mindandsoulchoir.org\",\"url\":\"https://mindandsoulchoir.org/\"}}}}';\nconst meetTheTeam07 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Jo Carey\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":8,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"97pee\",\"text\":\"Jo is a freelance project manager and facilitator. She specialises in devising and delivering participatory arts programmes for children, young people and community groups. She was previously the Participation Manager at the Almeida Theatre in Islington and has held various project management positions within the National Theatre’s Learning Department.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"87jan\",\"text\":\"As a facilitator she regularly runs workshops with school groups for the Primary Shakespeare Company and has previously led workshops on performance for the National Theatre and the Old Vic Theatre.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam08 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Amy Kearsley\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":12,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"b8vlc\",\"text\":\"Amy graduated last summer from the University of Surrey with a first class honours degree in Music (BMus). She completed her university professional training year with the ENO Baylis Team, for which she was awarded Faculty Student Placement of the Year 2020. She was subsequently hired as a freelance assistant producer for the Opera Squad tour to Liverpool and as a community theatre assistant for ENO’s award winning production of Noye’s Fludde. Amy also completed an internship with the National Opera Studio, assisting the administration team with the delivery of the Diverse Voices programme.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cmcsc\",\"text\":\"Since graduating, Amy has completed her Mental Health First Aid training with MHFA England and has undertaken freelance administration work with Music Mark – the UK association for music education.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"389ne\",\"text\":\"Amy is also a keen singer and choral conductor and began her postgraduate vocal studies at Trinity Laban in September 2021.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam09 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Laura O’Keefe\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":13,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"5c6rf\",\"text\":\"Laura Wyatt O’Keeffe is an Irish multi-award nominated facilitator, writer and theatre maker. Laura’s performance and participatory projects have toured to festivals and arts centres throughout the UK and Europe. Laura’s work explores gender politics, labels and rebels. She has facilitated workshops and arts programs at the Barbican, Chats Palace Arts Centre, University College of Cork and the National Theatre of Malta.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5m3s\",\"text\":\"Laura received a Masters in Performance from East 15 School of Acting, a Bachelor’s Degree in Drama and Theatre Studies with Sociology and English and a teaching diploma in Drama and Communication from University of West London. She also has a keen interest in wellbeing and has completed an Introduction to Counselling Course at City Lit.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam10 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Amy Hollinrake\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":14,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"8n3ib\",\"text\":\"Amy is a vocalist, singing tutor and researcher who is enthusiastic about the connection between music and wellbeing. As a group coordinator at ENO Breathe she is invested in cultivating safe, supportive and creative environments for groups and individuals.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cnaif\",\"text\":\"With a varied portfolio career, Amy has a background in community arts and events programming, including significant roles such as working as a project co-ordinator for The Irene Taylor Trust’s Music in Prisons programme, and as a programme co-ordinator for The Nest Collective.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bu6id\",\"text\":\"Amy trained in London to postgraduate level in Music, with a Masters (Distinction) from Goldsmiths University and a Bachelor`s in Music at City University London. During her undergraduate degree, her study was partnered with the Guildhall School of Music and Drama where she studied jazz vocals. She also specialises in folk music from the British Isles and Appalachia USA, with her creative practice and research closely linked. As a published researcher, Amy writes about female representation in folk song. She is currently the Cecil Sharp House Professional Folk Artist 2021.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam11 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Vanessa Havell\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":14,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"4p8j8\",\"text\":\"Vanessa is a performer and educator with over 15 years` experience. She currently teaches acting and acting through song at MPAA. In addition to this she has directed, taught and led workshops in many different colleges, and teaches privately. She sung for Music in Hospitals, led group coaching sessions for Life Clubs and founded and managed a vintage singing trio, The Marjorie Belles. She and colleague Kate Maravan have recently co-created and are running workshops exploring acting and singing, called Meisner in Song. She trained in acting at the Royal Conservatoire of Scotland, and in musical theatre at the Royal Academy of Music.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam12 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Jess Croll-Knight\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":17,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"eje26\",\"text\":\"For over ten years Jess has worked on participation projects in the museum sector, collaborating with community partners and audiences to increase their practical and strategic involvement in new activity and re-interpret collections in more relevant, playful and inclusive ways. She has done this for the development of the World Gallery at the Horniman Museum, for the Painted Hall Project at ORNC and on engagement projects at MOLA. She has also supported multi-disciplinary teams on innovative research projects, for example for Beyond the Binary at Pitt Rivers Museum and as Project Manager for Heart n Soul at the Hub (Wellcome Collection), supporting a team of artists, researchers and health professionals with and without learning disabilities and/or neurodivergent people to lead experimental research exploring human value and inclusive futures. In her current freelance work she coordinates the Ipswich Cultural Education Partnership, alongside bespoke work with museums to undertake creative audience consultation/research and development activity. She loves working with a wide variety of people and has been lucky to work with people in arts, health, mental health, disability, family and education contexts, and is very happy to be part of ENO Breathe.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam13 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Caroline Foulkes\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":16,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"b9tpl\",\"text\":\"Caroline works as a freelance classical singer and has taught singing in London schools and for National Children’s Choir. With a strong commitment to community engagement work and facilitating access to the arts, Caroline has produced and managed a range of youth music and inter-generational music projects. Caroline worked at Blackheath Halls for six years managing the Youth Opera Company and Youth Choir. She also gained a wide range of arts administration experience working with disability-led arts organisation Epic Arts (in UK and Cambodia) and Philharmonia Orchestra. Caroline studied Music at University of Glasgow and completed a post-graduate diploma in Vocal Studies at Trinity Laban Conservatoire of Music and Dance.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam14 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Eleanor Wood\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":12,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"i2e1\",\"text\":\"Across Eleanor’s work as an arts administrator, choral director and voice teacher, runs a longstanding commitment to making music accessible and available for everyone. Hailing from Sydney, Australia, Eleanor studied Classical Voice and Musicology at Sydney Conservatorium of Music and graduated with a Bachelor of Music Studies and a Graduate Diploma in Pedagogy.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5jfrq\",\"text\":\"Most recently, she was the Project Coordinator at Sing for Freedom, a choir made up of refugees, survivors of torture and local community members. During lockdown, she also established a free online community choir, The Quarantones, to combat the effects of loneliness and isolation felt during the pandemic (and because the name was too good not to use). It’s currently got over 150 members. She is a recipient of the Australia Council for the Arts ArtStart Grant, and has performed in opera, cabaret and theatre both in Australia and overseas, including at Cadogan Hall and Royal Albert Hall in London, Manhattan Summer Voice Festival (New York, USA) and the OperaEstate Festival (Bassano del Grappa, Italy). In London she has performed with Londinium Chamber Choir, Chandos Chamber Choir, Barefoot Opera Company, Veneto Opera Summer School and Opera Integra. Eleanor is much sought-after as a vocal teacher and choral director, and teaches at several of London’s leading music schools. Away from the stage, she completed a law degree at University of New South Wales and qualified as a solicitor in 2019.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam15 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Naomi Cull\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":10,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2ut6j\",\"text\":\"Naomi is a freelance creative producer and community engagement specialist based in the North West of England. She enjoys working on projects which use the arts to improve people’s lives, often challenging assumptions about what art is, who it is for and why it is important.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9m6lf\",\"text\":\"Naomi has an undergraduate degree in Contemporary Art History from Manchester School of Art and an MA in Cities, Culture and Creativity from Liverpool John Moores University. She has worked for projects including the British Textile Biennial and National Festival of Making, as well as with a range of socially engaged organisations across the North West.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst meetTheTeam16 =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Caroline Foulkes\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":16,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"b9tpl\",\"text\":\"Caroline works as a freelance classical singer and has taught singing in London schools and for National Children’s Choir. With a strong commitment to community engagement work and facilitating access to the arts, Caroline has produced and managed a range of youth music and inter-generational music projects. Caroline worked at Blackheath Halls for six years managing the Youth Opera Company and Youth Choir. She also gained a wide range of arts administration experience working with disability-led arts organisation Epic Arts (in UK and Cambodia) and Philharmonia Orchestra. Caroline studied Music at University of Glasgow and completed a post-graduate diploma in Vocal Studies at Trinity Laban Conservatoire of Music and Dance.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nexport {\n meetTheTeamFirst,\n meetTheTeamSecond,\n meetTheTeamThird,\n meetTheTeamFour,\n meetTheTeamFive,\n meetTheTeamSix,\n meetTheTeamSeven,\n meetTheTeam03,\n meetTheTeam04,\n meetTheTeam05,\n meetTheTeam06,\n meetTheTeam07,\n meetTheTeam08,\n meetTheTeam09,\n meetTheTeam10,\n meetTheTeam11,\n meetTheTeam12,\n meetTheTeam13,\n meetTheTeam14,\n meetTheTeam15,\n meetTheTeam16,\n};\n","const contactUsRteContent =\n '{\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Participating post-COVID clinics\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"10ij5\",\"text\":\"North West\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":10,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"2pqnu\",\"text\":\"Cheshire and Merseyside\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1qmli\",\"text\":\"Liverpool University Hospitals NHS Foundation Trust (Long Covid Assessment Hub)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fdgtt\",\"text\":\"Liverpool University Hospitals NHS Foundation Trust (Pulmonary Rehabilitation)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ebk8s\",\"text\":\"Lancashire and South Cumbria\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"59duc\",\"text\":\"Blackpool Teaching Hospital Long COVID Service (Lancashire & South Cumbria Respiratory Network)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"97vvu\",\"text\":\"Central Lancashire ICP (Lancashire & South Cumbria Respiratory Network)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bqrbe\",\"text\":\"Manchester\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"22k2m\",\"text\":\"Royal Oldham Hospital, Manchester\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1ogvd\",\"text\":\"North Manchester General Hospital London\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"g2fm\",\"text\":\"North East\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":10,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"6ui3k\",\"text\":\"Royal Victoria Infirmary, Newcastle\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7ph00\",\"text\":\"West Yorkshire\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":14,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"ci0rf\",\"text\":\"Leeds COVID Rehabilitation Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4001f\",\"text\":\"West Midlands\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":13,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"fhknq\",\"text\":\"South Warwickshire Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1h195\",\"text\":\"London\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":6,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"bbh5q\",\"text\":\"UCLH integrated post COVID service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ektru\",\"text\":\"Homerton University Hospital Foundation Trust (City & Hackney)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fdvan\",\"text\":\"Imperial College Healthcare NHS Trust (St Mary’s Hospital/Charing Cross Hospital/Hammersmith Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8su3f\",\"text\":\"Chelsea and Westminster Hospital NHS Foundation Trust (Chelsea and Westminster and West Middlesex Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4fldo\",\"text\":\"St George’s Hospital NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7jp2n\",\"text\":\"Guys and St Thomas NHS Foundation Trust – St Thomas’ Hospital\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1g2p4\",\"text\":\"King’s College Health NHS Foundation Trust (Princess Royal University Hospital/Kings College Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3ef10\",\"text\":\"Royal Free Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ft3nt\",\"text\":\"Barnet Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"31m2h\",\"text\":\"Barts Health NHS Trust (Royal London Hospital and St Bartholomew’s Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d7eeq\",\"text\":\"East of England\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":15,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"6tbhb\",\"text\":\"Cambridge Breathlessness Intervention Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dtn46\",\"text\":\"East Suffolk and North Essex NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7qu79\",\"text\":\"Norfolk Community Health and Care Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fbehi\",\"text\":\"Hertfordshire Community NHS Trust Long Covid Rehab Pathway\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"o5bk\",\"text\":\"South East\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":10,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"fe345\",\"text\":\"Oxfordshire Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dg7cq\",\"text\":\"North West Surrey\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"850vj\",\"text\":\"Sussex Community Foundation Trust.\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"frigb\",\"text\":\"Royal Berkshire NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"eg58h\",\"text\":\"South West\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[{\"offset\":0,\"length\":10,\"style\":\"BOLD\"}],\"entityRanges\":[],\"data\":{}},{\"key\":\"20bg6\",\"text\":\"Sirona Long Covid Service (Bristol, North Somerset and South Gloucestershire)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"29ab7\",\"text\":\"Dorset Post Covid Syndrome Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\nconst contactUsRteContent2 =\n ' {\"blocks\":[{\"key\":\"ch34j\",\"text\":\"Participating referral centres (post-COVID clinics and hospitals)\",\"type\":\"header-two\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"10ij5\",\"text\":\"Participating referral centres (post-COVID clinics and hospitals)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fk3eq\",\"text\":\"Barnet Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"dm3ro\",\"text\":\"Barts Health NHS Trust, (Royal London Hospital and St Bartholomew’s Hospital)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ekter\",\"text\":\"Berkshire Healthcare NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6i98q\",\"text\":\"Blackpool Teaching Hospital Long COVID Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bgtee\",\"text\":\"Bromley Post Covid Community Pathway\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ea4tq\",\"text\":\"BSW (Bath, Swindon, Wiltshire) Long Covid Assessment Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"402q0\",\"text\":\"Buckinghamshire NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"47hjf\",\"text\":\"Bury Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"ilju\",\"text\":\"Cambridge Breathlessness Intervention Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"33vi8\",\"text\":\"Chelsea and Westminster Hospital NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a4051\",\"text\":\"County Durham & Darlington NHS Foundation Trust Long-Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"f8m06\",\"text\":\"Dorset Post Covid Syndrome Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8oror\",\"text\":\"East Cheshire Trust Long Covid MDT\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"db713\",\"text\":\"East Sussex Healthcare NHS Trust - PCASS\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"a9h0d\",\"text\":\"Epsom and St Helier integrated post covid assessment service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"do6c5\",\"text\":\"First Community Health and Care COVID Rehab Team\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"28kdg\",\"text\":\"Guys and St Thomas NHS Foundation Trust – St Thomas` Hospital (London)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5tb4r\",\"text\":\"Herefordshire & Worcestershire ICS Long/Post Covid clinics\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5uh3k\",\"text\":\"Hertfordshire Community Service Health Care Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3t438\",\"text\":\"HMR (Heywood, Middleton and Rochdale) Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2t8pg\",\"text\":\"Homerton University Hospital Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cjesh\",\"text\":\"Imperial College Healthcare NHS Trust Post covid clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4qfup\",\"text\":\"Isle of Wight\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cmcam\",\"text\":\"Kent & Medway Post Covid Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"bc2qe\",\"text\":\"King George Hospital (Barking Havering and Redbridge University Hospital NHS Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1idk2\",\"text\":\"King`s College London Hospitals NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5h81t\",\"text\":\"Kingston Hospital Post Covid Assessment Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1nfga\",\"text\":\"Leeds COVID Rehabilitation Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"31nn0\",\"text\":\"Liverpool University Hospitals NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1louu\",\"text\":\"Livewell Southwest NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"10fv0\",\"text\":\"London North West University Healthcare NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6e8ti\",\"text\":\"Manchester NHS Foundation Trust, PACAS (post-acute COVID assessment service)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e2nkj\",\"text\":\"Mid Cheshire Long Covid Hub\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2dilv\",\"text\":\"Newcastle Upon Tyne NHS Foundation Trust (Newcastle)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fiosk\",\"text\":\"Newham and Tower Hamlets Long Covid Triage Hub\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"rao5\",\"text\":\"Norfolk Community Health and Care Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"fv05u\",\"text\":\"North Cumbria Long COVID Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"21b37\",\"text\":\"North West Surrey Post COVID service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1bb82\",\"text\":\"Northumbria Healthcare NHS Trust Post COVID Clinics\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"s7vq\",\"text\":\"Oxfordshire Long Covid Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"4e6fc\",\"text\":\"Richmond Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1ctr2\",\"text\":\"Royal Devon & Exeter NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"b5te\",\"text\":\"Royal Free London Hospital (Royal Free London NHS Foundation Trust)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d6ioh\",\"text\":\"Royal Oldham Hospital, Chest Clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8j2tm\",\"text\":\"Royal Surrey County Hospital and CResT long covid clinic\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"e3qol\",\"text\":\"Salford Post Acute Covid Assessment Service (Manchester)\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"2bpro\",\"text\":\"Sheffield Post Covid Rehabilitation Hub\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"d0k98\",\"text\":\"Shropshire Long Covid Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"8el4g\",\"text\":\"Sirona Long Covid Service (Bristol, North Somerset and South Gloucestershire).\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"9nqs7\",\"text\":\"Solent NHS Trust, Southern Health Foundation Trust and IOW NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6q5c6\",\"text\":\"South Warwickshire Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c2ni6\",\"text\":\"South West London Specialist Post COVID-19 Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"7p3cr\",\"text\":\"St George`s Hospital NHS Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3llaf\",\"text\":\"Stockport FT Long Covid MDT Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5trhs\",\"text\":\"Suffolk and North East Essex Long Covid Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5fssc\",\"text\":\"Sussex Community Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"6bf7g\",\"text\":\"Tameside and Glossop Integrated Care NHSFT\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"5qe4i\",\"text\":\"UCLH integrated post COVID service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"c5dab\",\"text\":\"Warrington & Halton NHS Teaching Hospital Pulmonary Rehab Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"avpma\",\"text\":\"West Cheshire and Wirral Partnership Long Covid MDT\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"1v2a2\",\"text\":\"West Herts Long covid service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"cs91s\",\"text\":\"Wrightington, Wigan and Leigh Teaching Hospitals NHS Foundation Trust\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}},{\"key\":\"3i4nn\",\"text\":\"York and Scarborough Teaching Hospitals NHSFT - Post COVID Syndrome Assessment Service\",\"type\":\"unordered-list-item\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}';\n\nexport { contactUsRteContent, contactUsRteContent2 };\n","import React from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { useKeycloak } from \"@react-keycloak/web\";\n\nconst Login = () => {\n const { keycloak } = useKeycloak();\n\n const userRoles = keycloak.tokenParsed?.realm_access.roles;\n if (keycloak.authenticated) {\n if (userRoles.includes(\"admin\")) return ;\n if (!userRoles.includes(\"admin\") && !userRoles.includes(\"disabled\"))\n return ;\n\n if (userRoles.includes(\"disabled\")) return ;\n }\n keycloak.login();\n return null;\n};\n\nexport default Login;\n","const roles = {\n admin: \"admin\",\n inProgramme: \"in_programme\",\n preProgramme: \"pre_programme\",\n postProgramme: \"post_programme\",\n disabled: \"disabled\",\n};\n\nexport default roles;\n","import React, { useContext } from \"react\";\nimport NotificationSnackbarContext from \"../context/NotificationSnackbarContext\";\nimport CustomSnackbar from \"./CustomSnackbar\";\n\nconst NotificationSnackbar = () => {\n const { notification } = useContext(NotificationSnackbarContext);\n const { message, color } = notification;\n return <>{message && };\n};\nexport default NotificationSnackbar;\n","import \"./App.css\";\nimport React, { lazy, Suspense, useEffect, useState } from \"react\";\nimport {\n BrowserRouter as Router,\n Route,\n Switch,\n useLocation,\n withRouter,\n} from \"react-router-dom\";\nimport {\n Container,\n CssBaseline,\n ThemeProvider,\n useMediaQuery,\n} from \"@material-ui/core\";\nimport { useKeycloak } from \"@react-keycloak/web\";\nimport { AppInsightsContext } from \"@microsoft/applicationinsights-react-js\";\nimport axios from \"axios\";\nimport logo from \"./assets/images/ENO_BREATHE_LOGOTYPE_POS_AW-FINAL.svg\";\nimport enoBreatheTheme from \"./theme/enoBreatheTheme\";\nimport UserContext from \"./context/UserContext\";\nimport reactPlugin from \"./utils/appInsights\";\n\nimport AppHeader from \"./components/AppHeader\";\nimport AppFooter from \"./components/AppFooter\";\n\nimport contentPagesConfig from \"./routes/contentPagesConfig\";\nimport Login from \"./components/Login\";\nimport roles from \"./utils/roles\";\nimport NotificationSnackbarContext from \"./context/NotificationSnackbarContext\";\nimport NotificationSnackbar from \"./components/NotificationSnackbar\";\nimport { SnackbarTypes } from \"./components/CustomSnackbar\";\nimport { SMALL_SCREEN_MEDIA_CONDITION } from \"./responsive/media-conditions\";\n\n// Lazy loaded components must be wrapped in a \nconst SignUp = lazy(() => import(\"./routes/SignUp\"));\nconst Styles = lazy(() => import(\"./routes/Styles\"));\nconst Survey = lazy(() => import(\"./routes/Survey\"));\nconst Programme = lazy(() => import(\"./routes/Programme\"));\nconst Profile = lazy(() => import(\"./routes/Profile\"));\nconst ParticipantHub = lazy(() => import(\"./routes/ParticipantHub\"));\nconst NotFoundPage = lazy(() => import(\"./routes/NotFoundPage\"));\nconst OutOfProgramPage = lazy(() => import(\"./routes/OutOfProgramPage\"));\nconst PrivateRoute = lazy(() => import(\"./routes/PrivateRoute\"));\nconst WeekOne = lazy(() => import(\"./routes/WeekOne\"));\nconst WeekTwo = lazy(() => import(\"./routes/WeekTwo\"));\nconst WeekThree = lazy(() => import(\"./routes/WeekThree\"));\nconst WeekFour = lazy(() => import(\"./routes/WeekFour\"));\nconst WeekFive = lazy(() => import(\"./routes/WeekFive\"));\nconst WeekSix = lazy(() => import(\"./routes/WeekSix\"));\nconst CalmingPlaylist = lazy(() => import(\"./routes/CalmingPlaylist\"));\nconst AdminPage = lazy(() => import(\"./routes/AdminPage\"));\nconst WhatToExpectFromASession = lazy(() =>\n import(\"./routes/WhatToExpectFromASession\")\n);\nconst fullWidthPaths = [\n \"/admin/users\",\n \"/admin/groups\",\n \"/admin/surveys\",\n \"/admin/clinicsAndReferral\",\n \"/admin/dashboard\",\n];\nconst Loader = () => {\n return (\n
\n \"logo\"\n
\n );\n};\n\nconst checkFullScreen = (location) => {\n let isFullScreen = false;\n fullWidthPaths.forEach((pathfull) => {\n if (!isFullScreen && location.indexOf(pathfull) >= 0) {\n isFullScreen = true;\n }\n });\n return isFullScreen;\n};\n\nfunction ScrollToTopFunc(props) {\n const { pathname } = useLocation();\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n return props.children;\n}\nconst ScrollToTop = withRouter(ScrollToTopFunc);\n\nconst App = () => {\n const { keycloak, initialized } = useKeycloak();\n const [userInfo, setUserInfo] = useState({});\n const [isFullWidth, setIsFullWidth] = useState(\n checkFullScreen(window.location.pathname)\n );\n const [notification, setNotification] = useState({ key: new Date() });\n\n const isSmallScreen = useMediaQuery(SMALL_SCREEN_MEDIA_CONDITION);\n\n axios.interceptors.response.use(\n (success) => {\n return success;\n },\n (error) => {\n if (error.config.method !== \"get\") {\n setNotification({\n ...notification,\n message:\n \"There was an error. Please try again later or contact the administrator\",\n color: SnackbarTypes.ERROR,\n key: new Date(),\n });\n }\n return Promise.reject(error);\n }\n );\n\n useEffect(() => {\n if (initialized && keycloak.authenticated) {\n // Add as needed\n setUserInfo({\n roles: keycloak.tokenParsed.realm_access.roles,\n isAdmin: keycloak.tokenParsed.realm_access.roles.includes(\"admin\"),\n name: keycloak.tokenParsed.name,\n });\n localStorage.setItem(\"token\", keycloak.token);\n }\n }, [keycloak, initialized]);\n const checkIsFullScreen = (pathname) => {\n setIsFullWidth(checkFullScreen(pathname) >= 0);\n };\n\n return (\n <>\n {initialized ? (\n \n \n \n
\n \n \n \n \n \n \n \n {/* Lazy loaded components must be wrapped in a */}\n }>\n \n {contentPagesConfig.map((pageConfig) => (\n \n React.createElement(\n pageConfig.component,\n pageConfig.meta\n )\n }\n />\n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n ) : (\n \n )}\n \n );\n};\n\nexport default App;\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import Keycloak from \"keycloak-js\";\nimport environment from \"./utils/environment\";\n\nconst keycloak = new Keycloak({\n url: `${environment.keycloakBasePath}/auth`,\n realm: \"Eno\",\n clientId: \"React-app\",\n});\n\nexport default keycloak;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ReactKeycloakProvider } from \"@react-keycloak/web\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport keycloak from \"./keycloak\";\nimport api from \"./utils/api\";\nimport endpoints from \"./utils/endpoints\";\nimport roles from \"./utils/roles\";\n\nif (window.location.href.includes(\"prod-appser-fe-001.azurewebsites.net\")) {\n window.location.replace(\"https://breathe.eno.org\");\n}\n\n// const eventLogger = (event, error) => {\n// console.log(\"onKeycloakEvent\", event, error);\n// };\n\nconst tokenLogger = (tokens) => {\n sessionStorage.setItem(\"auth.accessToken\", tokens.token);\n if (!roles.admin) {\n api.getAPI(`${endpoints.getUsers}/status`).then((data) => {\n sessionStorage.setItem(\"user.status\", data.data);\n });\n }\n};\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","/* eslint-disable react/jsx-props-no-spreading */\n\nimport PropTypes from \"prop-types\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { Redirect, Route } from \"react-router-dom\";\nimport UserContext from \"../context/UserContext\";\n\nconst PrivateRoute = ({ component: Component, allowedRoles, ...rest }) => {\n const { roles: userRoles } = useContext(UserContext);\n const [isAuthorized, setIsAuthorized] = useState();\n\n useEffect(() => {\n userRoles\n ? setIsAuthorized(\n allowedRoles.some((allowedRole) => userRoles.includes(allowedRole))\n )\n : setIsAuthorized(false);\n }, [allowedRoles, userRoles]);\n\n return (\n {\n // isAuthorized can have 3 possible states: undefined, true, and false.\n // On mount, until the roles are checked, it is undefined.\n // Nothing should happen until the role check has a result.\n // We cannot use isAuthorized && ... here, because it will create a false\n // negative when isAuthorized is undefined, and will redirect every time.\n if (isAuthorized === true) {\n return ;\n }\n\n if (isAuthorized === false) {\n return ;\n }\n\n return null;\n }}\n />\n );\n};\n\nPrivateRoute.propTypes = {\n component: PropTypes.elementType.isRequired,\n allowedRoles: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nexport default PrivateRoute;\n","import { Link, styled } from \"@material-ui/core\";\n\nconst SecondaryLink = styled(Link)({\n fontWeight: 400,\n color: \"inherit\",\n textDecoration: \"none\",\n});\n\nexport default SecondaryLink;\n"],"sourceRoot":""}