{"version":3,"file":"static/js/1345.76dc0d87.chunk.js","mappings":"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","sources":["utils/distinct.js","components/generic/document-upload/document-upload.js","components/global-layout/get-started/get-started.js","components/generic/content-card/content-card.js","components/generic/ripple-effect-holder/ripple-effect-holder.js","components/generic/content-page-footer/content-page-footer.js","components/generic/content-loader/content-loader-provider.js","components/generic/content-loader/manage-widgets/use-manage-widgets.js","components/generic/content-loader/manage-widgets/manage-widgets.js","components/events/calendar-events-widget/calendar-events-widget-service.js","components/events/calendar-events-widget/use-calendar-events-widget.js","components/generic/content-loader/generic-edit-item.js","components/events/calendar-events-widget/calendar-events-widget.js","components/institute/featured-classes/featured-classes-service.js","components/institute/featured-classes/use-edit-featured-classes.js","components/institute/featured-classes/edit-featured-classes.js","components/institute/featured-classes/use-view-featured-classes.js","components/generic/follow-link/use-follow-link.js","components/generic/follow-link/follow-link.js","components/class/class-card/class-card.js","components/institute/featured-classes/view-featured-classes.js","components/institute/featured-classes/featured-classes.js","components/institute/institute-hero/image-choice.js","components/institute/institute-hero/institute-follow-service.js","components/institute/institute-hero/landing-choices-service.js","components/institute/institute-hero/use-edit-institute-hero.js","components/institute/institute-hero/institute-hero.js","components/program-class-schedule/program-class-schedule-widget/program-hub-schedule-transform.js","components/program-class-schedule/program-class-schedule-widget/program-hub-schedule-service.js","components/program-class-schedule/program-class-schedule-widget/use-program-class-schedule-widget.js","components/program-class-schedule/program-class-calendar-block/program-class-calendar-block.js","components/program-class-schedule/program-class-schedule-view/program-class-schedule-view.js","components/program-class-schedule/program-class-schedule-widget/program-class-schedule-widget.js","components/generic/bulleted-list/bulleted-list.js","components/generic/content-cards/use-content-cards.js","components/generic/content-cards/content-cards.js","components/generic/heading/heading.js","components/generic/image-card/image-card.js","components/generic/poster-block/poster-block.js","components/generic/quarter-boxes/use-quarter-boxes.js","components/generic/quarter-boxes/quarter-boxes.js","components/generic/social-media/use-social-media.js","components/generic/social-media/social-media.js","components/generic/split-hero/split-hero.js","components/generic/video-slideshow/video-service.js","components/generic/video-slideshow/use-video-service.js","components/generic/video-slideshow/video-slideshow.js","components/generic/content-loader/content-loader.js","components/class/user-stake-service.js","components/pages/hubs/hub-events/events-page-service.js","components/generic/gradiant-top-bar/gradiant-top-bar.js","components/students/signup/use-signup.js","components/students/signup/quick-signup/quick-signup.js","components/news-room/news-room-service.js","components/news-room/news-room-layout/use-news-room.js","utils/trim-string-to-length.js","components/generic/article-image/article-image.js","components/news-room/news-room-article/news-room-article.js","components/news-room/news-room-selection/news-room-selection.js","components/news-room/news-room-layout/news-room-layout.js","components/generic/week-schedule-with-filters/schedule-timezones-context.js","components/class/class-service.js","components/generic/week-schedule-with-filters/use-week-schedule-with-filters.js","components/dev-express/week-schedule/week-schedule.js","components/generic/week-schedule-with-filters/week-schedule-with-filters.js","components/generic/warn-if-dirty/warn-if-dirty-provider.js","components/generic/content-loading-status/content-loading-status.js","components/generic/invitation-banner/invitation-service.js","components/generic/invitation-banner/use-invitation-banner.js","components/generic/invitation-banner/invitation-banner.js","components/generic/filter-text-input/filter-text-input.js","components/students/student-service.js","components/pages/signup/signup-page-context.js","components/generic/icon-card/icon-card.js","components/generic/document-upload/document-service.js"],"sourcesContent":["//used as a filter to do \"distinct\"\r\nconst distinct = (value, index, array) => {\r\n return array?.indexOf(value) === index;\r\n}\r\n\r\nexport default distinct","import React, { useCallback, useEffect, useState } from \"react\";\r\n\r\nimport { A11y } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { FileInput } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { blue30 as linkBlue } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport documentService from \"./document-service\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\n\r\nconst defaultService = documentService();\r\n\r\nconst LinkButton = styled(A11y)`\r\n color: ${linkBlue};\r\n`;\r\nconst stringGroups = [\r\n {\r\n name: \"admin\",\r\n keys: [\r\n \"chooseFile\",\r\n \"copyURL\"\r\n ]\r\n }\r\n];\r\n\r\nexport const getFileUrl = (file) => `https://${window.location.hostname}/api/documents/${file.id}/contents`;\r\n\r\nconst DocumentUpload = ({\r\n service = defaultService, onClick, linkText, onFileChange: propOnFileChange, initialFile }) => {\r\n const { managedStrings } = useTranslation(stringGroups);\r\n const [file, setFile] = useState(null);\r\n\r\n const onFileChange = (e) => {\r\n if (e?.target?.value) {\r\n const reader = new FileReader();\r\n const { name, type } = e.target.value;\r\n reader.readAsDataURL(e.target.value);\r\n\r\n reader.onload = () => {\r\n const file = {\r\n userUploaded: true, name, type,\r\n base64String: reader.result\r\n };\r\n setFile(file);\r\n }\r\n\r\n reader.onerror = () => {\r\n setFile(null);\r\n }\r\n\r\n }\r\n }\r\n\r\n const onFileCopy = () => {\r\n navigator.clipboard.writeText(getFileUrl(file));\r\n }\r\n\r\n useEffect(() => {\r\n setFile(initialFile);\r\n }, [initialFile]);\r\n\r\n useEffect(() => {\r\n const upload = async () => {\r\n if (file?.userUploaded) {\r\n const results = await service.uploadDocument(file);\r\n if (results) {\r\n setFile(results);\r\n propOnFileChange(results);\r\n }\r\n }\r\n }\r\n upload();\r\n }, [file, service, propOnFileChange]);\r\n\r\n return (<>\r\n {file?.id ? \r\n {linkText || managedStrings.copyURL}\r\n :\r\n \r\n {managedStrings.chooseFile}\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport const SingleDocumentUpload = ({ service, removeText, onFileChange: propOnFileChange }) => {\r\n const [resetFile, setResetFile] = useState(null);\r\n const [documentId, setDocumentId] = useState(null);\r\n\r\n const onFileChange = useCallback((file) => {\r\n setDocumentId(file.id);\r\n propOnFileChange(getFileUrl(file));\r\n }, [propOnFileChange]);\r\n\r\n const onFileReset = useCallback(() => {\r\n propOnFileChange(\"\");\r\n setResetFile({\r\n timestamp: new Date().getTime()\r\n });\r\n service.deleteDocument(documentId);\r\n setDocumentId(null);\r\n }, [documentId, propOnFileChange, service]);\r\n\r\n return \r\n}\r\n\r\nexport default DocumentUpload;\r\n","import React, {useContext} from \"react\";\r\n\r\nimport {\r\n Primary,\r\n Secondary\r\n} from \"@churchofjesuschrist/eden-buttons\";\r\nimport { H2 } from \"@churchofjesuschrist/eden-headings\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport {\r\n blue40,\r\n fontSize16,\r\n fontSize32,\r\n fontWeightBold,\r\n spacing64,\r\n spacing16,\r\n white\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { Divider } from \"@churchofjesuschrist/eden-tile-parts\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useTranslations from \"../../../utils/use-translations\";\r\nimport useButtonLinkAsNavigate\r\n from \"../../generic/hooks/use-button-link-as-navigate/use-button-link-as-navigate\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"home\",\r\n keys:[\r\n \"readyToGetStarted\",\r\n \"thousandsOfChoices\",\r\n \"findClasses\",\r\n \"findInstituteNow\"\r\n ]\r\n }\r\n];\r\n\r\nconst GettingStarted = styled(Row)`\r\n background-color: ${blue40};\r\n text-align: center;\r\n padding:${spacing16};\r\n`;\r\nconst Divide = styled(Divider)`\r\n border-inline-start: 1px solid ${white};\r\n height: 2.5rem;\r\n`;\r\n\r\nconst Heading = styled(H2)`\r\n font-size: ${fontSize32};\r\n font-weight: ${fontWeightBold};\r\n color: ${white};\r\n margin-top: ${spacing64};\r\n width: 100%;\r\n`;\r\n\r\nconst Paragraph = styled.p`\r\n color: ${white};\r\n font-size: ${fontSize16},\r\n font-weight: ${fontWeightBold};\r\n margin: 0;\r\n width: 100%;\r\n`;\r\n\r\nconst ButtonsHolder = styled.div`\r\ndisplay:flex;\r\nflex-direction:${({isMobile}) => isMobile ? \"column\" : \"row\"};\r\nalign-items:center;\r\njustify-content:center;\r\nwidth:100%;\r\n`\r\nconst StyledPrimary = styled(Primary)`\r\nmargin:${spacing16};\r\n`;\r\nconst StyledSecondary = styled(Secondary)`\r\nmargin:${spacing16};\r\n`;\r\n\r\nconst GetStarted = () => {\r\n const findInstProps = useButtonLinkAsNavigate({href:\"/findInstitute\"});\r\n const findClassProps = useButtonLinkAsNavigate({href:\"/findClasses\"});\r\n const {isMobile} = useContext(menuContext);\r\n const {managedStrings} = useTranslations(stringGroups);\r\n return (\r\n \r\n {managedStrings.readyToGetStarted}\r\n \r\n {managedStrings.thousandsOfChoices}\r\n \r\n \r\n \r\n {managedStrings.findInstituteNow}\r\n \r\n {!isMobile && ()}\r\n \r\n {managedStrings.findClasses}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default GetStarted;\r\n","import React, {useCallback, useMemo, useState} from \"react\";\r\n\r\nimport { Ghost, Secondary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport {\r\n FormField,\r\n Input,\r\n Label,\r\n Select\r\n} from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Edit } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport { spacing16,\r\n spacing64,\r\n red40,\r\n green40,\r\n grey40,\r\n grey35,\r\n blue40 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {\r\n BodyRail,\r\n ImageRail,\r\n VerticalModularTile,\r\n} from \"@churchofjesuschrist/eden-vertical-modular-tile\";\r\nimport {useNavigate} from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentPageFooter from \"../content-page-footer/content-page-footer\";\r\nimport documentService from \"../document-upload/document-service\";\r\nimport { SingleDocumentUpload } from \"../document-upload/document-upload\";\r\nimport GradiantTopBar from \"../gradiant-top-bar/gradiant-top-bar\";\r\nimport useTitanApi from \"../hooks/use-titan-api/use-titan-api\";\r\n\r\nconst styledColors = {\r\n red40, green40, grey40, grey35, blue40\r\n};\r\n\r\nconst StyledCard = styled(VerticalModularTile)`\r\n text-align: center;\r\n padding-bottom:${({preview}) => preview ? 0 : spacing64};\r\n height: 100%;\r\n position:relative;\r\n`;\r\n\r\nconst CardBody = styled(BodyRail)`\r\n width: 100%;\r\n`;\r\n\r\nconst CallToAction = styled.div`\r\n text-align: center;\r\n width: 100%;\r\n position:absolute;\r\n bottom:${spacing16};\r\n`;\r\n\r\nconst RailHolder = styled.div`\r\nbackground: ${({color}) => styledColors[color]};\r\nimg{\r\n visibility:visible !important;\r\n}\r\n`;\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"admin\",\r\n keys: [\r\n \"title\",\r\n \"details\",\r\n \"url\",\r\n \"buttonText\",\r\n \"color\",\r\n \"red40\",\r\n \"green40\",\r\n \"grey40\",\r\n \"blue40\",\r\n \"image\",\r\n \"imageHelp\"\r\n ]\r\n },\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"ok\",\r\n \"remove\"\r\n ]\r\n }\r\n]\r\n\r\nconst defaultService = documentService();\r\n\r\nconst defaultObj = {};\r\nconst ContentCard = ({\r\n service = defaultService,\r\n image = defaultObj,//image is an object we can pass to useTitanApi to get our url\r\n imageUrl, //sometimes we have a url to an image where we aren't using titan (like the pathway logo)\r\n title,\r\n color,\r\n body,\r\n children,\r\n callToActionHref,\r\n callToActionRoute,\r\n callToActionText,\r\n target,\r\n preview = false,\r\n dataId,\r\n index,\r\n onChangeCard,\r\n}) => {\r\n const navigate = useNavigate();\r\n const { managedStrings } = useTranslation(stringGroups);\r\n\r\n const [editing, setEditing] = useState(false);\r\n const onEdit = useCallback(() => setEditing(true), []);\r\n const onCancel = useCallback(() => setEditing(false), []);\r\n const onChange = useCallback((e) => onChangeCard(index, e), [index, onChangeCard]);\r\n const onFileChange = useCallback((value) => {\r\n onChangeCard(index, { target: { name: \"imageUrl\", value } });\r\n }, [index, onChangeCard]);\r\n\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n const buttonProps = useMemo(() => {\r\n return {\r\n href: !stringHasValue(callToActionRoute) ? callToActionHref : undefined,\r\n onClick: stringHasValue(callToActionRoute) ? () => {\r\n navigate(callToActionRoute)\r\n } : undefined,\r\n target\r\n }\r\n }, [callToActionHref, callToActionRoute, navigate, target]);\r\n return (\r\n <>\r\n \r\n \r\n {!preview &&
\r\n \r\n \r\n {url && }\r\n \r\n
}\r\n \r\n {body}\r\n {children}\r\n \r\n\r\n {!preview && (callToActionHref || callToActionRoute) &&\r\n callToActionText && (\r\n {callToActionText}\r\n )\r\n }\r\n\r\n
\r\n
\r\n {onChangeCard && \r\n \r\n }\r\n {editing && \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {managedStrings.imageHelp}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default ContentCard;\r\n","import React from \"react\";\r\n\r\nimport { accentColorLink } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nconst Ripple = styled.div`\r\n box-sizing: border-box;\r\n position: relative;\r\n &:before {\r\n animation: ${(props) => props.name} 1s ease-out\r\n ${(props) => (props.count <= 0 ? \"infinite\" : props.count)};\r\n\r\n bottom: 0;\r\n box-sizing: border-box;\r\n content: \"\";\r\n left: 0;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n }\r\n &:after {\r\n animation: ${(props) => props.name} 1s 0.5s ease-out\r\n ${(props) => (props.count <= 0 ? \"infinite\" : props.count)};\r\n\r\n bottom: 0;\r\n box-sizing: border-box;\r\n content: \"\";\r\n left: 0;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n }\r\n @keyframes ${(props) => props.name} {\r\n 0% {\r\n border: solid 1px ${(props) => props.color};\r\n opacity: 0.5;\r\n }\r\n 99% {\r\n opacity: 0;\r\n transform: scale(2);\r\n }\r\n 100% {\r\n border: solid 1px ${(props) => props.color};\r\n }\r\n }\r\n`;\r\n\r\nconst RippleEffectHolder = ({\r\n color = accentColorLink,\r\n children,\r\n count = 1,\r\n active = true,\r\n name = \"rippleFrames\",\r\n}) => {\r\n return active ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n children\r\n );\r\n};\r\nexport default RippleEffectHolder;\r\n","import React from \"react\";\r\n\r\nimport { Primary, Secondary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { AlertWarningFilled, LoadingSpinner } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport { accentColorWarning } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport RippleEffectHolder from \"../ripple-effect-holder/ripple-effect-holder\";\r\n\r\nconst RippledPrimary = styled(Primary)`\r\n position: absolute;\r\n z-index: 1000;\r\n`;\r\n\r\nconst WarnCustom = styled.div`\r\n display: inline-flex;\r\n align-items: center;\r\n`;\r\n\r\nconst ACTIVE = \"active\",\r\n ACTIVE_ATTENTION = \"active-attention\",\r\n DISABLED = \"disabled\",\r\n HIDDEN = \"hidden\",\r\n SAVING = \"saving\";\r\nconst modes = [ACTIVE, ACTIVE_ATTENTION, DISABLED, HIDDEN, SAVING];\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\"save\", \"cancel\", \"add\", \"apply\"],\r\n },\r\n];\r\n\r\nconst ContentPageFooter = ({\r\n mode: paramMode,\r\n showCancel = true,\r\n onSave,\r\n onCancel,\r\n small = false,\r\n adding = false,\r\n saveText: propSaveText,\r\n cancelText: propCancelText,\r\n canEdit = false,\r\n warning,\r\n ...otherProps\r\n}) => {\r\n let mode = paramMode;\r\n const { managedStrings: useStrings } = useTranslation(stringGroups);\r\n if (modes.indexOf(mode) < 0) {\r\n mode = ACTIVE;\r\n }\r\n\r\n const saveText = propSaveText || (adding ? useStrings.add : useStrings.save);\r\n const cancelText = propCancelText || useStrings.cancel;\r\n return (\r\n \r\n {mode === DISABLED && canEdit ? (\r\n \r\n {saveText}\r\n \r\n ) : null}\r\n {mode === SAVING && canEdit ? (\r\n \r\n {saveText}\r\n \r\n ) : null}\r\n {mode === ACTIVE && canEdit ? (\r\n \r\n {saveText}\r\n \r\n ) : null}\r\n {mode === ACTIVE_ATTENTION && canEdit ? (\r\n \r\n \r\n {saveText}\r\n \r\n {/*Rippled is absolute positioned so it doesn't occupy\r\n space. We put a hidden duplicate under rippled so it will take up\r\n the appropriate dom space */}\r\n {saveText}\r\n \r\n ) : null}\r\n {showCancel && mode !== SAVING && canEdit ? (\r\n \r\n {cancelText}\r\n \r\n ) : null}\r\n {canEdit && warning ?\r\n \r\n {warning.message}\r\n : null\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ContentPageFooter;\r\n","import {useMemo, useContext, createContext, useState, useEffect, useCallback} from \"react\";\r\n\r\nimport cloneDeep from \"lodash.clonedeep\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport useStatus from \"../hooks/use-status/use-status\";\r\nimport { useWarnIfDirtyProvider } from \"../warn-if-dirty/warn-if-dirty-provider\";\r\n\r\n\r\n/*Important!!: We need to override the flag property on the json that is loaded and saved\r\nfor a program or hub because that would mean that a program would save json with that flag\r\nproperty potentially indefinitely. Then when we delete a feature flag from harness,\r\nany program with a flag property in their saved json loses the widget in a pretty permanent way.\r\n\r\nWe use this instead, so that we can delete a feature flag and remove it with a release just like all\r\nother feature flags we have to deal with.\r\n\r\n*/\r\nconst widgetIdentifierToFlagMapping = {\r\n iLoveInstituteVideos:\"ILoveInstituteVideos\",\r\n featuredClasses:\"FeaturedClasses\",\r\n}\r\n//this mapper is called in the use effect where we resolve between loaded json\r\n//and the fallback json file to ensure we use the above object to put flags on widgets\r\n//in all scenarios\r\nconst indexAndFlagMapFunc = (w,index) => {\r\n let mapped = {...w};\r\n const flagMapping = widgetIdentifierToFlagMapping[mapped.identifier]\r\n mapped.flag = stringHasValue(flagMapping) ? flagMapping : undefined;\r\n mapped.index = index;\r\n return mapped;\r\n}\r\n\r\n\r\nconst defaultArray = [];\r\nconst defaultFunc = () => {};\r\nconst useContentLoader = ({\r\n content = defaultArray,\r\n flagService,\r\n service,\r\n serviceParams,\r\n mode = \"view\"}) => {\r\n\r\n const {\r\n status,\r\n setSavingStatus:loading,\r\n setResetStatus:clear,\r\n } = useStatus({saving: service !== null && service !== undefined});\r\n //if service is null, we are in a static loader, so we don't want to default to the loading spinner\r\n //if we have a service, we start in the loading state.\r\n\r\n\r\n const {setDirty = defaultFunc} = useWarnIfDirtyProvider() ?? defaultFunc;\r\n\r\n const stringGroups = useMemo(() => {\r\n //get just our data objects with translatedProps and stringGroupName on them\r\n const dataObjectsWithTranslations = content.map(c => c?.data)\r\n .filter(d => d?.translatedProps && d?.stringGroupName);\r\n //some of our content may have an items array that has the translated blocks in it.\r\n //we need to get those string deals as well\r\n const itemsObjects = content.filter(c => Array.isArray(c.data?.items))\r\n .reduce((accumulator, current) => {\r\n //current.items is an array of objects.\r\n const itemsWithTranslations =\r\n current.data.items.filter(i => i.translatedProps && i.stringGroupName);\r\n return [...accumulator, ...itemsWithTranslations]\r\n },[]);\r\n\r\n\r\n\r\n const allObjectsWithTranslations = [...dataObjectsWithTranslations,...itemsObjects];\r\n\r\n /*takes an array of objects like\r\n [\r\n {\r\n stringGroupName:\"name\",\r\n translatedProps:{\r\n prop1:\"key1\",\r\n prop2:\"key2\"\r\n }\r\n },\r\n {\r\n stringGroupName:\"name\",\r\n translatedProps:{\r\n prop1:\"key2\",\r\n prop2:\"key3\"\r\n }\r\n },\r\n {\r\n stringGroupName:\"name2\",\r\n translatedProps:{\r\n prop1:\"key3\",\r\n prop2:\"key4\"\r\n }\r\n }\r\n ]\r\n and reduces it to\r\n {\r\n name:[\"key1\",\"key2\",\"key3\"],\r\n name2:[\"key3\",\"key4\"]\r\n }\r\n */\r\n const distilledObject = allObjectsWithTranslations.reduce((accumulator, current) => {\r\n const {stringGroupName,translatedProps} = current;\r\n const keys = [];\r\n for (let prop in translatedProps) {\r\n keys.push(translatedProps[prop]);\r\n }\r\n if (keys.length > 0) {\r\n const updated = {...accumulator};\r\n if (updated[stringGroupName]) {\r\n\r\n updated[stringGroupName] = [...updated[stringGroupName],...keys];\r\n } else {\r\n updated[stringGroupName] = keys\r\n }\r\n return updated;\r\n }\r\n //if we have a bad object we skip it basically\r\n return accumulator;\r\n\r\n },{});\r\n const stringGroups = [];\r\n for (let groupName in distilledObject) {\r\n stringGroups.push({\r\n name:groupName,\r\n keys:distilledObject[groupName]\r\n });\r\n }\r\n return stringGroups;\r\n\r\n },[content]);\r\n\r\n const [loadedContent, setLoadedContent] = useState();\r\n\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n useEffect(() => {\r\n const load = async() => {\r\n try {\r\n loading();\r\n const data = await service.load(serviceParams);\r\n clear();\r\n if (Array.isArray(data)) {\r\n const defaultWidgetsNotInData = content.filter(w => {\r\n //ignore institute hero\r\n if (w.component === \"institute-hero\") { return false;}\r\n const found = data.find(dw => dw.identifier === w.identifier);\r\n\r\n return found === null || found === undefined\r\n }).map(w => ({...w, visible:false}));\r\n //we need the index on everything based on the new result.\r\n const result = [...data,...defaultWidgetsNotInData].map(indexAndFlagMapFunc);\r\n setLoadedContent(result);\r\n } else if (!data) {//they have never saved anything\r\n setLoadedContent([...content].map(indexAndFlagMapFunc));\r\n }\r\n //if data isn't an array we are kind of busted and we do nothing and fall back to the default\r\n } catch (e) {\r\n clear();\r\n setLoadedContent(cur => {\r\n if (!cur && content) {\r\n return content;\r\n }\r\n return cur;\r\n });//if we fail to get something\r\n //we fall back to our default content (just like a non-dynamic instance of this page)\r\n }\r\n };\r\n load();\r\n\r\n },[service, clear, loading,serviceParams,content])\r\n\r\n //NOTE: this now also handles visible filtering\r\n const contentWithTranslations = useMemo(() => {\r\n const mapFunc = (c, index) => {\r\n\r\n if (c.data?.translatedProps) {\r\n //destructure out both props and name so we can return a data object without that\r\n let {translatedProps, stringGroupName,...data} = c.data;\r\n for (let prop in translatedProps) {\r\n const key = translatedProps[prop];\r\n data[prop] = managedStrings[key];\r\n }\r\n return {...c, data};\r\n }\r\n if (c.data?.items?.length > 0) {\r\n const newItems = c.data.items.map(item => {\r\n let {translatedProps, stringGroupName,...data} = item;\r\n for (let prop in translatedProps) {\r\n const key = translatedProps[prop];\r\n data[`${prop}_original`] = data[prop];\r\n data[prop] = managedStrings[key]\r\n }\r\n return data;\r\n })\r\n const newData = {...c,\r\n index,\r\n data:{...c.data,items:newItems}};\r\n return newData;\r\n\r\n }\r\n return {...c, index};\r\n }\r\n const filterFunc = (c) => !c.canDelete || c.visible;\r\n if (!service) {\r\n //standard json file based, read only content\r\n return content.map(mapFunc).filter(filterFunc);\r\n } else if (loadedContent) {\r\n //we have a service, and it has loaded its content\r\n const res = loadedContent.map(mapFunc).filter(filterFunc);\r\n return res;\r\n }\r\n //only get here if we are a dynamic one and we haven't loaded.\r\n return content?.map(mapFunc).filter(filterFunc) ?? [];\r\n },[service, loadedContent, content, managedStrings]);\r\n\r\n\r\n\r\n //we use the index not the component name so we can support multiple instances of a component should we so decide\r\n const onDeleteComponent = useCallback((index) => {\r\n if (isNaN(index)) {\r\n return;\r\n }\r\n setLoadedContent(cur => {\r\n if (!cur[index].canDelete) {\r\n return cur;\r\n }\r\n const result = [...cur];\r\n result[index] = {...result[index], visible:false}\r\n setDirty(true);\r\n return result;\r\n })\r\n },[setDirty]);\r\n\r\n\r\n const [draggingItem, setDraggingItem] = useState(undefined);\r\n const onDragStart = useCallback((startData) => {\r\n const {draggableId} = startData;\r\n setDraggingItem(draggableId);\r\n },[]);\r\n const onDragEnd = useCallback((endData) => {\r\n const {draggableId: draggedItem, source, destination} = endData;\r\n if (!destination) {\r\n return;\r\n }\r\n const {index:startIndex} = source;\r\n let {index:endIndex} = destination;\r\n setLoadedContent(cur => {\r\n setDirty(true);\r\n if (isNaN(endIndex)) {\r\n endIndex = cur.length - 1;\r\n }\r\n const endItem = cur[endIndex] ?? {};\r\n //we check our identifier to do a noop if we didn't change order\r\n const {\r\n component,\r\n identifier = \"na\",\r\n index\r\n } = endItem;\r\n const endIdentifier = `${component}_${index}_${identifier}`;\r\n if (endIdentifier === draggedItem) {\r\n return cur;\r\n }\r\n const newItems = [...cur];\r\n const [removed] = newItems.splice(startIndex, 1);\r\n newItems.splice(endIndex,0,removed);\r\n return newItems.map((w,index) => {\r\n return {...w, index}\r\n });\r\n });\r\n setDraggingItem(undefined);\r\n },[setDirty]);\r\n\r\n\r\n const [addModalVisible, setAddModalVisible] = useState(false);\r\n const onOpenAddModal = useCallback(() => setAddModalVisible(true)\r\n ,[]);\r\n const onCancelAddModal = useCallback(() => setAddModalVisible(false),[]);\r\n const onConfirmAddWidget = useCallback((visibleIdentifiers) => {\r\n setLoadedContent(cur => {\r\n const updated = [...cur].map(c => {\r\n if (!c.canDelete) {\r\n return c;\r\n }\r\n setDirty(true);\r\n const visible = visibleIdentifiers.indexOf(c.identifier) >= 0;\r\n return {...c, visible}\r\n })\r\n return updated;\r\n })\r\n },[setDirty]);\r\n const navigate = useNavigate();\r\n const onCancel = useCallback(() => {\r\n navigate(\"/pgmadmin/search\");\r\n },[navigate]);\r\n\r\n const [previewing, setPreviewing] = useState(false);\r\n const onPreview = useCallback(() => setPreviewing(true),[]);\r\n const onEndPreview = useCallback(() => setPreviewing(false),[]);\r\n const {\r\n status:saveStatus,\r\n setSavingStatus:saving,\r\n setSuccessStatus:saved,\r\n setErrorStatus:saveFailed,\r\n setResetStatus:clearSaving,\r\n } = useStatus();\r\n const onSave = useCallback(async() => {\r\n try {\r\n saving();\r\n //hide featured classes if it has an empty set of data.\r\n let featuredVisibleChanged = false;\r\n const featured = loadedContent\r\n ? loadedContent.find(c => c.component === \"featured-classes\")\r\n : null;\r\n const featuredIndex = loadedContent?.indexOf(featured);\r\n if ((featured?.data?.featuredIds?.length ?? 0) === 0 &&\r\n featured.visible === true) {\r\n featured.visible = false;\r\n featuredVisibleChanged = true;\r\n }\r\n await service.save(serviceParams, loadedContent);\r\n if (featuredVisibleChanged) {\r\n onDeleteComponent(featuredIndex);//update the visibility in this UI\r\n }\r\n saved();\r\n setPreviewing(false);//leave preview mode if it saved\r\n setDirty(false);\r\n } catch (e) {\r\n saveFailed(e);\r\n }\r\n },[loadedContent, saveFailed, saved, saving, service, serviceParams, setDirty,\r\n onDeleteComponent\r\n ]);\r\n\r\n const onItemEdited = useCallback((paramIndex, data, componentName) => {\r\n setLoadedContent(cur => {\r\n try {//at least featured classes didn't bother to plumb an index through\r\n //and it passes with an index -1 and gives us an identifier\r\n let index = paramIndex;\r\n if (paramIndex < 0 && stringHasValue(componentName)) {\r\n const match = cur.find(c => c.component === componentName);\r\n if (!match) {return cur;}\r\n index = cur.indexOf(match);\r\n }\r\n const result = [...cur];\r\n const item = cloneDeep(result[index]);\r\n //the data emitted from each component may be unique.\r\n if (item.component === \"quarter-boxes\" ||\r\n item.component === \"content-cards\") {\r\n item.data.items = data;\r\n } else if (item.component === \"featured-classes\") {\r\n if (data.length > 0) {\r\n item.data = {featuredIds:data};\r\n } else {\r\n //we need to remove this one if there are no featured classes.\r\n onDeleteComponent(index);\r\n }\r\n\r\n } else if (item.component === \"institute-hero\") {\r\n if (typeof data === \"string\")\r\n {\r\n item.data.image.id = data;\r\n } else {\r\n item.data.shift = data;\r\n }\r\n } else {\r\n item.data = {\r\n ...item.data,\r\n ...data,\r\n };\r\n }\r\n setDirty(true);\r\n result[index] = item;\r\n return result;\r\n } catch (e) {\r\n return cur;\r\n }\r\n })\r\n },[onDeleteComponent, setDirty]);\r\n\r\n\r\n\r\n\r\n return {\r\n loadedContent,\r\n contentWithTranslations,\r\n status,\r\n onDeleteComponent,\r\n onConfirmAddWidget,\r\n onDragStart,\r\n onDragEnd,\r\n draggingItem,\r\n canEdit: mode === \"edit\",\r\n onOpenAddModal,\r\n onCancelAddModal,\r\n addModalVisible,\r\n onCancel,\r\n onPreview,\r\n onEndPreview,\r\n previewing,\r\n onSave,\r\n saveStatus,\r\n clearSaving,\r\n onItemEdited,\r\n flagService\r\n }\r\n}\r\n\r\nconst Context = createContext();\r\n\r\nconst ContentLoaderProvider = ({\r\n content = defaultArray,\r\n service,\r\n flagService,\r\n serviceParams,\r\n mode = \"view\",\r\n children}) => {\r\n const hook = useContentLoader(\r\n {\r\n content,\r\n service,\r\n flagService,\r\n serviceParams,\r\n mode\r\n });\r\n return \r\n {children}\r\n \r\n};\r\n\r\nconst useContentLoaderProvider = () => {\r\n const hook = useContext(Context);\r\n return hook;\r\n}\r\n\r\nexport {useContentLoaderProvider};\r\nexport default ContentLoaderProvider;\r\n","import {useEffect, useState, useCallback, useMemo} from \"react\";\r\n\r\nimport { useContentLoaderProvider } from \"../content-loader-provider\";\r\n\r\n\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst defaultFunc = () => {};\r\nconst useManageWidgets = () => {\r\n const hook = useContentLoaderProvider();\r\n const {\r\n loadedContent:originalContent = defaultArray,\r\n onCancelAddModal,\r\n onConfirmAddWidget = defaultFunc,\r\n flagService\r\n } = hook ?? defaultObj;\r\n\r\n const optionalWidgets = useMemo(() => originalContent.filter(c => c.canDelete),\r\n [originalContent] )\r\n\r\n const [checkedWidgets, setCheckedWidgets] = useState([]);\r\n useEffect(() => {\r\n setCheckedWidgets(optionalWidgets.filter(w => w.visible).map(w => w.identifier))\r\n\r\n },[optionalWidgets]);\r\n const onChange = useCallback((e) => {\r\n const {name, checked} = e.target;\r\n setCheckedWidgets(cur => {\r\n const index = cur.indexOf(name);\r\n if (checked && index >= 0) {\r\n return cur;\r\n }\r\n if (!checked && index < 0) {\r\n return cur;\r\n }\r\n if (checked) {\r\n return [...cur, name];\r\n }\r\n const result = [...cur];\r\n result.splice(index,1);\r\n return result;\r\n })\r\n },[]);\r\n const onConfirm = useCallback(() => {\r\n onConfirmAddWidget(checkedWidgets);\r\n onCancelAddModal();\r\n },[checkedWidgets, onConfirmAddWidget,onCancelAddModal]);\r\n const onCancel = useCallback(() => {\r\n setCheckedWidgets(optionalWidgets.filter(w => w.visible).map(w => w.identifier));\r\n onCancelAddModal();\r\n },[optionalWidgets,onCancelAddModal])\r\n\r\n\r\n\r\n return {\r\n onChange,\r\n optionalWidgets,\r\n checkedWidgets,\r\n onConfirm,\r\n onCancel,\r\n flagService\r\n }\r\n\r\n}\r\n\r\nexport default useManageWidgets;","import React from \"react\";\r\n\r\n\r\nimport {FormField, Checkbox, Label } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useManagedWidgets from \"./use-manage-widgets\";\r\nimport stringHasValue from \"../../../../utils/string-has-value\";\r\nimport useTranslation from \"../../../../utils/use-translations\";\r\nimport ContentPageFooter from \"../../content-page-footer/content-page-footer\";\r\nimport FeatureFlags from \"../../feature-flags/feature-flags\";\r\n\r\nconst ContainerStack = styled(Stack)`\r\n\r\n`;\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"ok\",\r\n \"manageWidgets\",\r\n \"manageWidgetsSub\",\r\n \"infoBoxesWidget\",\r\n \"newsAndEventsWidget\",\r\n \"scheduleWidget\",\r\n \"iLoveInstituteVideos\",\r\n \"featuredClasses\",\r\n \"socialMediaWidget\",\r\n \"customBoxesWidget\"\r\n ]\r\n }\r\n]\r\n\r\n\r\nconst ManagedInner = ({managedStrings,\r\n widget,\r\n onChange,\r\n checkedWidgets }) => {\r\n const {identifier:key} = widget;\r\n return \r\n \r\n }\r\n\r\nconst ManageWidgets = () => {\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n const {\r\n optionalWidgets,\r\n checkedWidgets,\r\n onChange,\r\n onConfirm,\r\n onCancel,\r\n flagService\r\n } = useManagedWidgets();\r\n return \r\n
\r\n\r\n
{managedStrings.manageWidgetsSub}
\r\n
\r\n {optionalWidgets.map(w => {\r\n const {identifier:key, flag} = w;\r\n //we control if a program can check a widget to add it to the page by a feature flag check\r\n //if the widget has a flag property on it.\r\n //currently we don't have any flags that are specific to an id (like a program id) needed on these spots\r\n //if we end up needing that, you add the id property to the FeatureFlags once you sort out how to get that id into this spot\r\n return stringHasValue(flag) ? (\r\n \r\n ) :\r\n ()\r\n } )}\r\n \r\n\r\n
\r\n\r\n\r\n}\r\nexport default ManageWidgets;\r\n//note: I'm not storybooking this as it is adequately excercised and tested\r\n//in the storybook for content loader\r\n\r\n","\r\nimport hubEventsService from \"../../pages/hubs/hub-events/events-page-service\";\r\nimport instituteEventsService from \"../../pages/institutes/program-events/events-page-service\";\r\n\r\n\r\nconst hubService = hubEventsService();\r\nconst instService = instituteEventsService();\r\n\r\nconst calendarEventsWidgetService = () => {\r\n const load = async ({programId, hubId}) => {\r\n const loadingHubs = !isNaN(parseInt(hubId));\r\n\r\n if (loadingHubs) {\r\n const hubData = await hubService.pageLoad({hubId});\r\n return hubData;\r\n }\r\n const data = await instService.pageLoad({programId});\r\n\r\n return data;\r\n\r\n }\r\n return {\r\n load\r\n }\r\n}\r\n\r\nexport default calendarEventsWidgetService;","import {useEffect, useState, useCallback} from \"react\";\r\n\r\nimport {useParams} from \"react-router-dom\";\r\n\r\nimport calendarEventsWidgetService from \"./calendar-events-widget-service\";\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\n\r\nconst defaultService = calendarEventsWidgetService();\r\n\r\nconst useCalendarEventsWidget = (service = defaultService, mode = \"view\") => {\r\n\r\n const {\r\n status,\r\n setSavingStatus: loading,\r\n setErrorStatus: error,\r\n setResetStatus: clearStatus,\r\n } = useStatus({ saving: true });\r\n\r\n const {programId, hubId} = useParams();\r\n const [programData, setProgramData] = useState();\r\n const [hubData, setHubData] = useState();\r\n const load = useCallback(async () => {\r\n try {\r\n if (mode !== \"view\") {\r\n return;\r\n }\r\n loading();\r\n const data = await service.load({programId,hubId});\r\n if (!isNaN(parseInt(hubId))) {\r\n setHubData(data);\r\n } else {\r\n setProgramData(data);\r\n }\r\n clearStatus();\r\n } catch (e)\r\n {\r\n error(e)\r\n }\r\n },[clearStatus, error, hubId, loading, mode, programId, service])\r\n\r\n\r\n useEffect(() => {\r\n load();\r\n },[load])\r\n\r\n return {\r\n status,\r\n programData,\r\n hubData\r\n }\r\n};\r\n\r\nexport default useCalendarEventsWidget;","import React from \"react\";\r\n\r\nimport { Ghost } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Edit } from \"@churchofjesuschrist/eden-icons\";\r\nimport { spacing24, backgroundColorAlt,\r\n fontSize28\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\n\r\nconst GenericContainerHeader = styled.div`\r\nheight:40px;\r\n\r\n`;\r\nconst GenericContainerInner = styled.div`\r\npadding:${spacing24};\r\nbackground-color:${backgroundColorAlt};\r\ntext-align:center;\r\nfont-size:${fontSize28};\r\n`\r\n\r\nconst GenericEditItem = ({name, onEdit, editLabel, ...others}) => {\r\n const showEditButton = stringHasValue(editLabel) && typeof onEdit === \"function\";\r\n return
\r\n
\r\n \r\n {showEditButton && \r\n {editLabel}\r\n }\r\n \r\n \r\n {name}\r\n \r\n
\r\n
\r\n}\r\n\r\nexport default GenericEditItem;","import React from \"react\";\r\n\r\nimport { Card } from \"@churchofjesuschrist/eden-card\";\r\n\r\nimport useCalendarEventsWidget from \"./use-calendar-events-widget\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport GenericEditItem from \"../../generic/content-loader/generic-edit-item\";\r\nimport LoadingSpinner from \"../../generic/loading-spinner/loading-spinner\";\r\nimport CalendarEvents from \"../calendar-events/calendar-events\";\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"newsAndEventsWidget\"\r\n ]\r\n }\r\n]\r\n\r\nconst CalendarEventsWidget = ({service, mode = \"view\"}) => {\r\n const {\r\n programData,\r\n hubData,\r\n status\r\n } = useCalendarEventsWidget(service, mode);\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n return mode !== \"edit\" ? (\r\n {status?.saving === true && }\r\n \r\n ) : \r\n}\r\n\r\nexport default CalendarEventsWidget;","import fetchWrapper from \"../../../utils/fetchWrapper\";\r\nimport classService, {transformClass} from \"../../class/class-service\";\r\n\r\n\r\nconst featuredClassesService = () => {\r\n const clsService = classService();\r\n const loadViewFeaturedClasses =\r\n async (ids, hubId, programId) => {\r\n const query = ids?.join(\"&classIds=\");\r\n let url = `api/classes/featured?classIds=${query}`;\r\n if (hubId) {\r\n url = `${url}&hubId=${hubId}`;\r\n } else if (programId) {\r\n url = `${url}&programId=${programId}`;\r\n }\r\n const data = await fetchWrapper({url});\r\n\r\n //we have a titan image id property then class data\r\n //we need to transform the class data (dates) so that\r\n //it renders with our component nicely\r\n return data.map(d => {\r\n return {...d,\r\n classData:transformClass(d.classData)\r\n }\r\n });\r\n }\r\n\r\n //uses the class service to get the classes currently displayed\r\n //in myinstitute for the hub or program.\r\n //use the class service because it transforms dates and other values\r\n //for us appropriately.\r\n const loadEditFeaturedClasses = async(id, isHub) => {\r\n return isHub ? await clsService.loadHubClasses(id) :\r\n await clsService.loadProgramClasses(id);\r\n }\r\n\r\n return {\r\n loadViewFeaturedClasses,\r\n loadEditFeaturedClasses,\r\n }\r\n}\r\n\r\nexport default featuredClassesService;","import {useState, useEffect, useCallback, useMemo} from \"react\";\r\n\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport featuredClassesService from \"./featured-classes-service\";\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport { useContentLoaderProvider } from \"../../generic/content-loader/content-loader-provider\";\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\nimport useSwitch from \"../../generic/hooks/use-switch/use-switch\";\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst defaultFunc = () => {};\r\n\r\nconst defaultService = featuredClassesService();\r\nconst useEditFeaturedClasses = ({service = defaultService,\r\n featuredIds:propsFeaturedIds = defaultArray,\r\n onDataChange = defaultFunc}) => {\r\n\r\n const [candidateClasses, setCandidateClasses] = useState(defaultArray);\r\n\r\n const [featuredIds, setFeaturedIds] = useState(propsFeaturedIds);\r\n\r\n const {\r\n status,\r\n setSavingStatus:loading,\r\n setErrorStatus: error,\r\n setResetStatus: clearStatus} = useStatus();\r\n\r\n const {onItemEdited = defaultFunc} = useContentLoaderProvider() ?? defaultObj;\r\n const {programId, hubId} = useParams();\r\n const [isEditModalOpen, openEditModal, closeEditModal] = useSwitch(false);\r\n const onConfirm = useCallback(() => {\r\n //onDataChange(featuredIds);\r\n //I haven't bothered giving this component an index\r\n onItemEdited(-1,featuredIds, \"featured-classes\");\r\n closeEditModal();\r\n },[closeEditModal, featuredIds, onItemEdited]);\r\n const onCancel = useCallback(() => {\r\n setFeaturedIds(propsFeaturedIds);\r\n closeEditModal();\r\n },[closeEditModal, propsFeaturedIds])\r\n\r\n /*NOTE: for now we are not updating the state's featured ids from the parent if propFeaturedIds\r\n changes after that initial render. In theory, anything the parent gets for a change while in edit mode\r\n came from this component and wouldn't come from any other place.\r\n So we can reduce our render repeats if we don't respond to it in this way.*/\r\n\r\n const loadCandidateClasses = useCallback(async () => {\r\n try {\r\n loading();\r\n const pgmId = parseInt(programId);\r\n const hId = parseInt(hubId);\r\n const useId = isNaN(pgmId) ? hId : pgmId;\r\n const isHub = isNaN(pgmId);\r\n const data = await service.loadEditFeaturedClasses(useId, isHub);\r\n const validIds = data.map(c => c.classId);\r\n setFeaturedIds(cur => {\r\n const actuallyFeatured = cur.filter(curId => validIds.indexOf(curId) >= 0);\r\n if (actuallyFeatured.length <= 0) {\r\n openEditModal();\r\n }\r\n return actuallyFeatured;\r\n })\r\n\r\n setCandidateClasses(data);\r\n clearStatus();\r\n\r\n } catch (e)\r\n {\r\n error(e);\r\n }\r\n },[hubId, programId, service,\r\n clearStatus, error, loading, openEditModal]);\r\n //leaving this way in case we decide to go with a deferred load of the candidate classes until they open the edit modal\r\n useEffect(() => {loadCandidateClasses();}, [loadCandidateClasses])\r\n\r\n\r\n const onClassChecked = useCallback((e) => {\r\n const checked = e.target.checked;\r\n const id = parseInt(e.target.value);\r\n if (isNaN(id)) { return;}\r\n\r\n setFeaturedIds(cur => {\r\n const index = cur.indexOf(id);\r\n if (checked) {\r\n return index >= 0 ? cur : [...cur, id];\r\n }\r\n //uncheck but the id isn't in our list\r\n if (index < 0) {\r\n return cur;\r\n }\r\n const uncheckedResult = [...cur];\r\n uncheckedResult.splice(index,1);\r\n return uncheckedResult;\r\n })\r\n },[]);\r\n\r\n const selectedClasses = useMemo(() => {\r\n if (!Array.isArray(candidateClasses) || candidateClasses.length <= 0\r\n || !Array.isArray(featuredIds) || featuredIds.length <= 0) {\r\n return defaultArray;\r\n }\r\n return candidateClasses.filter(cl => featuredIds.indexOf(cl.classId) >= 0);\r\n },[candidateClasses, featuredIds]);\r\n\r\n const [filter, setFilter] = useState(\"\");\r\n const [justSelected, setJustSelected] = useState(false);\r\n const onJustSelectedChange = useCallback((e) => setJustSelected(e.target.checked),[]);\r\n const filteredCandidates = useMemo(() => {\r\n if (justSelected) {\r\n return selectedClasses;\r\n }\r\n return candidateClasses.filter(cl => {\r\n if (!stringHasValue(filter)) {\r\n return true;\r\n }\r\n const lowerFilter = filter.toLowerCase();\r\n const titleMatches = (cl?.title?.toLowerCase() ?? \"\")\r\n .indexOf(lowerFilter) >= 0;\r\n if (titleMatches) { return true;}\r\n const teacherMatches = (cl?.teacherName?.toLowerCase() ?? \"\")\r\n .indexOf(lowerFilter) >= 0;\r\n return teacherMatches;\r\n })\r\n },[candidateClasses, filter, justSelected, selectedClasses]);\r\n\r\n\r\n const tooFiew = useMemo(() => (featuredIds?.length ?? 0) < 3, [featuredIds]);\r\n const tooMany = useMemo(() => (featuredIds.length ?? 0) > 8, [featuredIds]);\r\n\r\n const isChecked = useCallback((c) => featuredIds.indexOf(c.classId) >= 0,[featuredIds]);\r\n\r\n\r\n return {\r\n isEditModalOpen,\r\n //if we defer loading candidate classes until open, we make a callback that does this and load candidate classes\r\n onEditClicked:openEditModal,\r\n onConfirm,\r\n onCancel,\r\n candidateClasses: filteredCandidates,\r\n status,\r\n clearStatus,\r\n featuredIds,\r\n selectedClasses,\r\n onClassChecked,\r\n filter,\r\n onFilterChange:setFilter,\r\n justSelected,\r\n onJustSelectedChange,\r\n tooFiew,\r\n tooMany,\r\n isChecked\r\n }\r\n}\r\n\r\nexport default useEditFeaturedClasses;","import React from \"react\";\r\n\r\nimport { Error, Warn } from \"@churchofjesuschrist/eden-alert\";\r\nimport {Ghost, Primary, Secondary} from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Card } from \"@churchofjesuschrist/eden-card\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport { Checkbox } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { H4 } from \"@churchofjesuschrist/eden-headings\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport { spacing16, spacing8, spacing4,\r\n borderColorTertiary\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { TileSwipeBlock } from \"@churchofjesuschrist/eden-tile-swipe-block\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useEditFeaturedClasses from \"./use-edit-featured-classes\";\r\nimport { twentyFourToTwelve } from \"../../../utils/date-utils\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport DaysWeek from \"../../generic/days-week/days-week\";\r\nimport FilterTextInput from \"../../generic/filter-text-input/filter-text-input\";\r\nimport LoadingSpinner from \"../../generic/loading-spinner/loading-spinner\";\r\n\r\nconst Header = styled.div`\r\nheight:40px;\r\ndisplay:flex;\r\n`;\r\nconst EditHolder = styled.div`\r\nwidth:200px;\r\nposition:absolute;\r\n`;\r\nconst TitleHolder = styled.div`\r\nmargin-top:15px;\r\nflex:1;\r\ntext-align:center;\r\n`;\r\nconst CardInner = styled.div`\r\npadding:${spacing16};\r\n`;\r\nconst EditCardInner = styled.div`\r\npadding:${spacing8};\r\n`;\r\nconst EditCardRow = styled.div`\r\ndisplay:flex;\r\n`\r\nconst ModalInner = styled.div`\r\n`;\r\n\r\nconst MarginCheckbox = styled(Checkbox)`\r\nmargin-right:${spacing8};\r\n`;\r\nconst FilterStack = styled(Stack)`\r\nmargin-bottom:${spacing8};\r\npadding-bottom:${spacing4};\r\nborder-bottom:solid 1px ${borderColorTertiary};\r\n`\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"featuredClasses\",\r\n \"editFeaturedClasses\",\r\n \"featuredClassesError\",\r\n \"chooseHowToParticipate\",\r\n \"noFeaturedClassess\",\r\n \"edit\",\r\n \"showOnlyFeatured\",\r\n \"chooseAtLeastThree\",\r\n \"chooseNoMoreThanEight\",\r\n \"ok\",\r\n \"cancel\",\r\n \"noFeaturedClassesWarning\"\r\n ]\r\n }\r\n]\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst defaultFunc = () => {};\r\nconst EditFeaturedClasses = ({service,\r\n featuredIds = defaultArray,\r\n onDataChange = defaultFunc}) => {\r\n\r\n const {\r\n status = defaultObj,\r\n clearStatus = defaultFunc,\r\n isEditModalOpen,\r\n onEditClicked = defaultFunc,\r\n onConfirm = defaultFunc,\r\n onCancel = defaultFunc,\r\n candidateClasses = defaultArray,\r\n selectedClasses = defaultArray,\r\n onClassChecked = defaultFunc,\r\n filter,\r\n onFilterChange = defaultFunc,\r\n onJustSelectedChange = defaultFunc,\r\n justSelected,\r\n tooFiew,\r\n tooMany,\r\n isChecked = defaultFunc\r\n } = useEditFeaturedClasses({service, featuredIds, onDataChange});\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n return
\r\n
\r\n \r\n \r\n {managedStrings.edit}\r\n \r\n \r\n \r\n

{managedStrings.featuredClasses}

\r\n
\r\n
\r\n {status.saving && }\r\n {status.error && {managedStrings.featuredClassesError}}\r\n {!status.saving && Array.isArray(selectedClasses)\r\n && selectedClasses.length <= 0 ?
\r\n {managedStrings.noFeaturedClassesWarning}\r\n
: Array.isArray(selectedClasses) && selectedClasses.length > 0 && (\r\n \r\n {selectedClasses.map(c => \r\n \r\n

{c.title}

\r\n
{c.teacherName}
\r\n
\r\n | {twentyFourToTwelve(c.startTime)}\r\n
\r\n
\r\n
)}\r\n
)}\r\n \r\n \r\n {managedStrings.ok}\r\n {managedStrings.cancel}\r\n \r\n {(tooFiew || tooMany) && \r\n {tooFiew ? managedStrings.chooseAtLeastThree :\r\n managedStrings.chooseNoMoreThanEight}\r\n }\r\n }\r\n >\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {managedStrings.showOnlyFeatured}\r\n
\r\n
\r\n \r\n {candidateClasses.map(c => \r\n \r\n \r\n \r\n
{c.classId} : {c.title} - {c.teacherName}
\r\n
\r\n
\r\n | {twentyFourToTwelve(c.startTime)}\r\n
\r\n
\r\n
)}\r\n
\r\n
\r\n
\r\n
\r\n}\r\n\r\nexport default EditFeaturedClasses;","import {useState, useEffect, useMemo} from \"react\";\r\n\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport featuredClassesService from \"./featured-classes-service\";\r\nimport classTypeToColors from \"../../class/class-horizontal-card/class-type-to-colors\";\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\n\r\nconst defaultService = featuredClassesService();\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\n\r\nconst useViewFeaturedClasses = ({service = defaultService,\r\n featuredIds = defaultArray\r\n}) => {\r\n const {programId, hubId} = useParams();\r\n const scope = useMemo(() => {\r\n return isNaN(parseInt(programId)) ? \"hub\" : \"program\";\r\n }, [programId]);\r\n\r\n const {\r\n status,\r\n setSavingStatus:loading,\r\n setErrorStatus: error,\r\n setResetStatus: clearStatus} = useStatus();\r\n const [data, setData] = useState(defaultArray);\r\n\r\n useEffect(() => {\r\n const load = async() => {\r\n try {\r\n loading();\r\n const data = await service.loadViewFeaturedClasses(featuredIds,\r\n hubId, programId\r\n );\r\n setData(data);\r\n clearStatus();\r\n } catch (e) {\r\n error(e)\r\n }\r\n };\r\n load();\r\n },[featuredIds, service, loading, clearStatus,error,hubId, programId]);\r\n\r\n const mappedData = useMemo(() => data?.map(cl => {\r\n const {classData, titanImageId} = cl ?? defaultObj;\r\n return {\r\n id:classData.classId,\r\n color:classTypeToColors(classData).backgroundName,\r\n title: classData.title,\r\n description:\"wee\",\r\n image:{\r\n id:titanImageId,\r\n target:200,\r\n mobileTarget:100,\r\n dimension:\"height\"\r\n },\r\n classData\r\n }\r\n\r\n }) ?? defaultArray, [data]);\r\n\r\n const hasNone = useMemo(() => {\r\n if (status.saving) { return false;}\r\n return mappedData.length === 0;\r\n },[status.saving, mappedData]);\r\n\r\n return {\r\n status, clearStatus, data:mappedData, scope,\r\n hasNone\r\n }\r\n}\r\n\r\nexport default useViewFeaturedClasses;","import {useMemo, useCallback, useState, useEffect} from \"react\";\r\n\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\n\r\nconst defaultObj = {};\r\n//note: this is meant to be reusable for the day when we possibly follow or unfollow classes\r\n//not just programs. As such we don't default the service this deep.\r\nconst useFollowLink = ({service, targetId, subscription:propsSubscription = defaultObj}) => {\r\n const [subscription, setSubscription] = useState(propsSubscription);\r\n useEffect(() => {\r\n setSubscription(propsSubscription ?? defaultObj)\r\n },[propsSubscription]);\r\n\r\n const {\r\n subscribed = false,\r\n canSubscribe = false,\r\n canUnsubscribe = false\r\n } = subscription || {};\r\n\r\n const {\r\n status,\r\n setSavingStatus:following,\r\n setErrorStatus:followError,\r\n setResetStatus:followDone,\r\n } = useStatus({});\r\n\r\n const unSub = useCallback(async() => {\r\n try {\r\n following();\r\n await service.unfollow(targetId);\r\n setSubscription(cur => {\r\n return {...cur, subscribed:false, canSubscribe:true}\r\n });\r\n followDone();\r\n }\r\n catch (e)\r\n {\r\n followError(e);\r\n }\r\n },[followDone, followError, following, service, targetId]);\r\n const sub = useCallback(async() => {\r\n try {\r\n following();\r\n await service.follow(targetId);\r\n setSubscription(cur => {\r\n return {...cur, subscribed:true, canUnsubscribe:true}\r\n });\r\n followDone();\r\n }\r\n catch (e)\r\n {\r\n followError(e);\r\n }\r\n },[followDone, followError, following, service, targetId]);\r\n\r\n const onClick = useMemo(() => {\r\n if (canUnsubscribe && subscribed) {\r\n return unSub;\r\n } else if (canSubscribe && !subscribed) {\r\n return sub;\r\n }\r\n return undefined;\r\n\r\n },[sub, unSub,canSubscribe, subscribed, canUnsubscribe]);\r\n\r\n\r\n return {\r\n onClick,\r\n subscribed,\r\n canSubscribe,\r\n canUnsubscribe,\r\n status\r\n }\r\n\r\n\r\n}\r\n\r\nexport default useFollowLink;","import React, {useContext} from \"react\";\r\n\r\nimport {A11y} from \"@churchofjesuschrist/eden-buttons\";\r\nimport {\r\n Heart,\r\n HeartFilled,\r\n LoadingSpinner\r\n} from \"@churchofjesuschrist/eden-icons\";\r\nimport {spacing24, spacing8, spacing4} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useFollowLink from \"./use-follow-link\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\n\r\n\r\nconst TxtHolder = styled.div`\r\nmargin-left:${spacing8};\r\nmargin-top:${spacing4};\r\n`;\r\nconst MyBtn = styled(A11y)`\r\ndisplay:flex;\r\nposition:relative;\r\n`\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\"follow\", \"following\"]\r\n }\r\n];\r\n\r\n\r\nconst Container = ({ onClick, children }) =>\r\n {children};\r\n\r\n\r\nconst FollowLink = ({\r\n subscription,\r\n service,\r\n targetId\r\n}) => {\r\n const {isMobile} = useContext(menuContext);\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n\r\n const {\r\n onClick,\r\n subscribed = false,\r\n canSubscribe = false,\r\n status\r\n } = useFollowLink({subscription, service, targetId});\r\n\r\n if (subscribed) {\r\n return (\r\n \r\n {status.saving ? : }\r\n {!isMobile && {managedStrings.following}}\r\n \r\n );\r\n } else if (canSubscribe) {\r\n return (\r\n \r\n {status.saving ? : }\r\n {managedStrings.follow}\r\n \r\n\r\n );\r\n } else {\r\n return
 
\r\n }\r\n};\r\n\r\nexport default FollowLink;","import React, { useCallback, useState } from \"react\";\r\n\r\nimport { A11y } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Card } from \"@churchofjesuschrist/eden-card\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport {\r\n fontSize16,\r\n fontWeightBold,\r\n spacing16,\r\n spacing8,\r\n accentColorLink\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { Image } from \"@churchofjesuschrist/eden-tile-parts\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport FollowLink from \"../../generic/follow-link/follow-link\";\r\nimport GradiantTopBar from \"../../generic/gradiant-top-bar/gradiant-top-bar\";\r\nimport useSwitch from \"../../generic/hooks/use-switch/use-switch\";\r\nimport useTitanApi from \"../../generic/hooks/use-titan-api/use-titan-api\";\r\nimport TeacherAverageRating from \"../../teacher/teacher-average-rating/teacher-average-rating\";\r\nimport ClassSummaryModal from \"../class-summary-modal/class-summary-modal\";\r\n\r\n\r\nconst LinkA11y = styled(A11y)`\r\ncolor:${accentColorLink};\r\n`\r\n\r\nconst ClassFollowLink = styled(FollowLink)`\r\n float: right;\r\n width: 100%;\r\n`;\r\n\r\nconst ClassImage = styled(Image)`\r\n height:250px;\r\n`;\r\n\r\nconst BadgeRow = styled(Row)`\r\n width: 100%;\r\n`;\r\n\r\nconst FollowRow = styled(Row)`\r\n width: 100%;\r\n`;\r\n\r\nconst TitleRow = styled(Row)`\r\n button{\r\n font-size: ${fontSize16};\r\n font-weight: ${fontWeightBold};\r\n width: 100%;\r\n }\r\n \r\n`;\r\n\r\nconst FeatureRow = styled.div`\r\n padding: ${spacing8} ${spacing16};\r\n display:flex;\r\n flex-direction:column;\r\n div {\r\n margin-bottom:${spacing16};\r\n }\r\n button{\r\n margin-top:auto;\r\n }\r\n`;\r\nconst SizedCard = styled(Card)`\r\nheight:465px;\r\n`;\r\n\r\nconst defaultObj = {};\r\nconst ClassCard = ({\r\n classData = defaultObj,\r\n id:classId,\r\n image = defaultObj,\r\n imageUrl = \"\",\r\n title = \"\",\r\n color,\r\n scope,\r\n //tags are deprecated. Instead we pass a children prop to the card\r\n //and render that where we were acting on tags\r\n //because we build tags in a shared component\r\n //most likely it is the ClassBadges component\r\n children\r\n}) => {\r\n\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n const trimmedTitle = title.length > 100 ? title.substring(0, 100) + \"...\" : title;\r\n\r\n const [isModalOpen, setModalOpen, setModalClosed] = useSwitch();\r\n const [active, setActive] = useState(false);\r\n const toggleFollow = useCallback(() => setActive(active => !active), []);\r\n return (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {trimmedTitle}\r\n \r\n
\r\n {classData?.teacherName}\r\n \r\n
\r\n \r\n {children}\r\n \r\n {/*\r\n {managedStrings.quickView ?? \"\"}\r\n */}\r\n
\r\n
\r\n {isModalOpen && }\r\n \r\n );\r\n}\r\n\r\nexport default ClassCard;","import React from \"react\";\r\n\r\nimport {Error} from \"@churchofjesuschrist/eden-alert\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport {\r\n fontSize16,\r\n fontSize32,\r\n fontWeightLight,\r\n spacing32\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { TileSwipeBlock } from \"@churchofjesuschrist/eden-tile-swipe-block\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useViewFeaturedClasses from \"./use-view-featured-classes\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ClassBadges from \"../../class/class-badges/class-badges\";\r\nimport ClassCard from \"../../class/class-card/class-card\";\r\nimport LoadingSpinner from \"../../generic/loading-spinner/loading-spinner\";\r\n\r\n\r\nconst FeaturedTitle = styled(Row)`\r\n text-align: center;\r\n margin: 0 auto;\r\n width: 100%;\r\n display: block;\r\n font-size: ${fontSize32};\r\n font-weight: ${fontWeightLight};\r\n`;\r\n\r\nconst FeaturedSubheading = styled(Row)`\r\n text-align: center;\r\n margin: 0 auto;\r\n width: 100%;\r\n display: block;\r\n font-size: ${fontSize16};\r\n`;\r\n\r\nconst NoClassesNotice = styled.div`\r\ntext-align:center;\r\n`\r\nconst Container = styled.div`\r\n padding: ${spacing32};\r\n`;\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"featuredClasses\",\r\n \"featuredClassesError\",\r\n \"chooseHowToParticipate\",\r\n \"noFeaturedClasses\"\r\n ]\r\n }\r\n]\r\n\r\nconst ViewFeaturedClasses = ({service, featuredIds}) => {\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {\r\n status, clearStatus, data, scope, hasNone\r\n } = useViewFeaturedClasses({service, featuredIds});\r\n return
\r\n \r\n {managedStrings.featuredClasses}\r\n \r\n \r\n {managedStrings.chooseHowToParticipate}\r\n \r\n \r\n {status.saving && }\r\n {status.error && {managedStrings.featuredClassesError}}\r\n {hasNone && (\r\n {managedStrings.noFeaturedClasses}\r\n )}\r\n {Array.isArray(data) && data.length > 0 && (\r\n \r\n {data.map(c => \r\n \r\n )}\r\n )}\r\n \r\n
\r\n};\r\n\r\nexport default ViewFeaturedClasses;","import React from \"react\";\r\n\r\nimport EditFeaturedClasses from \"./edit-featured-classes\";\r\nimport ViewFeaturedClasses from \"./view-featured-classes\";\r\nimport FeatureFlags from \"../../generic/feature-flags/feature-flags\";\r\n\r\nconst FeaturedClasses = ({mode = \"view\",\r\n featuredIds,\r\n service,\r\n flagService}) => {\r\n return \r\n <>\r\n {mode === \"view\" ? :\r\n }\r\n \r\n \r\n}\r\n\r\nexport default FeaturedClasses;","import React from \"react\";\r\n\r\nimport {A11y} from \"@churchofjesuschrist/eden-buttons\"\r\nimport { CircleSelectedFilled } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Image } from \"@churchofjesuschrist/eden-image\";\r\nimport {accentColorPrimary,\r\n spacing4,\r\n boxShadowRaised,\r\n white,\r\n spacing8\r\n} from \"@churchofjesuschrist/eden-style-constants\"\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useTitanApi from \"../../generic/hooks/use-titan-api/use-titan-api\";\r\n\r\n/*Note: normally I don't like the component imposing opinion\r\non its container's margins, but in this case\r\nwe conditionally render the container based on rules this component knows\r\nbut the parent doesn't. So we get some funny staggery stuff\r\nif we have a parent with margins and nothing inside. So we do the margin here in this case */\r\nconst ChoiceHolder = styled.div`\r\nposition:relative;\r\noverflow:hidden;\r\nwidth:230px;\r\nheight:114px;\r\nmargin:${spacing8};\r\n${({chosen}) => chosen ? `box-shadow:${boxShadowRaised}; border:solid 3px ${accentColorPrimary};` : ''}\r\n`;\r\nconst Overlay = styled.div`\r\n z-index:10;\r\n position:absolute;\r\n `;\r\nconst OverlayInternal = styled.div`\r\n width:250px;\r\n height:250px;\r\n position:absolute;\r\n background-color:${accentColorPrimary};\r\n opacity:.5;\r\n`;\r\nconst IconHolder = styled.div`\r\nposition:absolute;\r\nz-index:2;\r\ntop:${spacing4};\r\nleft:${spacing4};\r\n\r\n`\r\n\r\nconst ImageChoice = ({id, chosenId, onChange}) => {\r\n const url = useTitanApi({\r\n id,\r\n target:245,\r\n mobileTarge:245,\r\n dimension:\"width\"\r\n });\r\n\r\n return stringHasValue(url) && (\r\n {id === chosenId && \r\n \r\n \r\n \r\n \r\n }\r\n onChange(id)}\r\n chosen={id === chosenId}>\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ImageChoice;","import {postWrapper, deleteWrapper} from \"../../../utils/fetchWrapper\";\r\n\r\nconst instituteFollowService = () => {\r\n const follow = async (instituteId) => {\r\n const url = `api/student/followedPrograms/${instituteId}`;\r\n await postWrapper({url,data:{}});\r\n }\r\n const unfollow = async (instituteId) => {\r\n const url = `api/student/followedPrograms/${instituteId}`;\r\n await deleteWrapper({url});\r\n }\r\n\r\n return {\r\n follow,\r\n unfollow\r\n }\r\n\r\n}\r\n\r\nexport default instituteFollowService;","import fetchWrapper from \"../../../utils/fetchWrapper\";\r\n\r\nconst landingChoicesService = () => {\r\n\r\n const loadImageChoices = async () => {\r\n const url = \"api/titan/query/programImages\";\r\n const data = await (fetchWrapper({url}));\r\n return data;\r\n }\r\n\r\n return {\r\n loadImageChoices\r\n }\r\n}\r\n\r\nexport default landingChoicesService;","import {useState, useCallback, useEffect, useMemo} from \"react\";\r\n\r\nimport { useContentLoaderProvider } from \"../../generic/content-loader/content-loader-provider\";\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\n\r\n\r\n\r\nconst shiftScaleFactor = 1;\r\nconst defaultObj = {};\r\nconst defaultFunc = () => {};\r\nconst useEditInstituteHero = (service, image = defaultObj,\r\n shift = 0\r\n) => {\r\n const {\r\n status,\r\n setSavingStatus:loading,\r\n setErrorStatus:error,\r\n setResetStatus:clearStatus\r\n } = useStatus();\r\n\r\n const [options, setOptions] = useState();\r\n const [open, setOpen] = useState(false);\r\n\r\n const onOpenModal = useCallback(() => {\r\n const load = async() => {\r\n try {\r\n loading();\r\n const choices = await service.loadImageChoices();\r\n clearStatus();\r\n setOptions(choices);\r\n }\r\n catch (e) {\r\n error(e)\r\n }\r\n }\r\n\r\n setOpen(true);\r\n setOptions(cur => {\r\n if (!Array.isArray(cur)) {\r\n load();\r\n }\r\n return cur;\r\n })\r\n\r\n },[clearStatus, error, loading, service]);\r\n\r\n const [choice, setChoice] = useState();\r\n useEffect(() => {\r\n const c = image?.id ?? undefined;\r\n setChoice(c)\r\n\r\n },[image?.id]);\r\n\r\n const onCancel = useCallback(() => setOpen(false),[]);\r\n\r\n\r\n const {onItemEdited = defaultFunc} = useContentLoaderProvider();\r\n\r\n const onConfirm = useCallback(() => {\r\n onItemEdited(0,choice);\r\n setOpen(false);\r\n },[choice, onItemEdited])\r\n\r\n const rangeValue = useMemo(() => {\r\n\r\n let num = parseInt(shift);\r\n if (isNaN(num)) {\r\n return \"0\";\r\n }\r\n num = num / shiftScaleFactor;\r\n if (num < 0) { num = 0;}\r\n if (num > 100) { num = 100;}\r\n //range input wants a string value\r\n return num.toString();\r\n\r\n\r\n },[shift])\r\n const onRangeChange = useCallback((e) => {\r\n const val = parseInt(e.target.value);\r\n let resultShift = val * shiftScaleFactor;\r\n if (resultShift < 0) { resultShift = 0;}\r\n if (resultShift > 200) {resultShift = 200;}\r\n onItemEdited(0,resultShift);\r\n\r\n },[onItemEdited]);\r\n\r\n\r\n return {\r\n status,\r\n choice,\r\n options,\r\n onChoiceChanged:setChoice,\r\n onOpenModal,\r\n onCancel,\r\n onConfirm,\r\n open,\r\n rangeValue,\r\n onRangeChange,\r\n }\r\n\r\n}\r\n\r\nexport default useEditInstituteHero;","import React from \"react\";\r\n\r\nimport { AttachedHero } from \"@churchofjesuschrist/eden-attached-hero\";\r\nimport { Primary, Secondary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport { RangeInput } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Image as ImageIcon} from \"@churchofjesuschrist/eden-icons\"\r\nimport {\r\n spacing4, spacing8, spacing32, breakWidth1600\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { mediaBreak480w, mediaBreak1600w } from \"@churchofjesuschrist/eden-styled-helpers\";\r\nimport { Image } from \"@churchofjesuschrist/eden-tile-parts\";\r\nimport styled from \"styled-components\";\r\n\r\nimport ImageChoice from \"./image-choice\";\r\nimport instituteFollowService from \"./institute-follow-service\";\r\nimport landingChoicesService from \"./landing-choices-service\";\r\nimport useEditInstituteHero from \"./use-edit-institute-hero\";\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport FollowLink from \"../../generic/follow-link/follow-link\";\r\nimport useButtonLinkAsNavigate\r\n from \"../../generic/hooks/use-button-link-as-navigate/use-button-link-as-navigate\";\r\nimport useTitanApi from \"../../generic/hooks/use-titan-api/use-titan-api\";\r\nimport LoadingSpinner from \"../../generic/loading-spinner/loading-spinner\";\r\nimport ShareLink from \"../../generic/share-link/share-link\";\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"share\",\r\n \"editBanner\",\r\n \"useSelected\",\r\n \"moveDown\",\r\n \"moveUp\",\r\n \"shareLinkBody\"\r\n ]\r\n }\r\n];\r\n\r\nconst EditAttachedHero = styled(AttachedHero)`\r\nwidth: 100%;\r\n &> div:nth-child(1) {\r\n height: 350px;\r\n }\r\n`;\r\nconst ModalContents = styled.div``;\r\nconst Images = styled.div`\r\nwidth:520px;\r\ndisplay:flex;\r\nflex-wrap:wrap;\r\nmax-height:395px;\r\noverflow-y:auto;\r\nmargin-bottom:${spacing8};\r\n`;\r\n\r\n\r\nconst InstituteAttachedHero = styled(AttachedHero)`\r\n position:relative;\r\n z-index:1;\r\n width: 100%;\r\n &> div:first-child {\r\n height: 150px;\r\n ${mediaBreak480w`height: 350px;`}\r\n ${mediaBreak1600w`height: 500px;`}\r\n }\r\n &> div:nth-child(2) {\r\n padding: 0;\r\n padding-top: ${spacing32};\r\n }\r\n`;\r\n\r\n//The image has a property on it that works\r\n//in conjunction with this height hack to let us kind of shift the image down\r\n//for microadjusting.\r\nconst ShiftedImage = styled(Image)`\r\n height:${({shift}) => `${100 + shift}%`} !important;\r\n`;\r\n\r\n\r\nconst InstituteCallToAction = styled.div`\r\n width: 80vw;\r\n max-width: ${breakWidth1600};\r\n display:flex;\r\n justify-content:space-between;\r\n div{\r\n flex:1;\r\n }\r\n`;\r\nconst LastCall = styled.div`\r\ndisplay:flex;\r\njustify-content:flex-end;\r\n`\r\n\r\nconst ActionPadding = styled.div`\r\npadding: ${spacing4};\r\n`;\r\n\r\nconst defaultService = instituteFollowService();\r\nconst defaultImageService = landingChoicesService();\r\nconst defaultObj = {};\r\nconst InstituteHero = ({\r\n shift = 0,\r\n body,\r\n mode = \"view\",\r\n image = defaultObj,\r\n imageUrl = \"\",\r\n title = \"\",\r\n callToActionRoute,\r\n callToActionText = \"\",\r\n subscription,\r\n service = defaultService,\r\n imageService = defaultImageService,\r\n flagService,\r\n id\r\n}) => {\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const callToActionProps = useButtonLinkAsNavigate({href:callToActionRoute});\r\n\r\n const {\r\n open,\r\n status,\r\n choice,\r\n options,\r\n onChoiceChanged,\r\n onOpenModal,\r\n onCancel,\r\n onConfirm,\r\n rangeValue,\r\n onRangeChange\r\n } = useEditInstituteHero(imageService, image, shift)\r\n return mode !== \"edit\" ? (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {callToActionText}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n }\r\n image={}\r\n title={title}\r\n />\r\n ) : (<>\r\n }\r\n callToAction={\r\n
\r\n \r\n \r\n {managedStrings.editBanner}\r\n \r\n \r\n \r\n \r\n
}/>\r\n\r\n {open && \r\n \r\n \r\n {status.saving ? () : options?.map(o => (\r\n\r\n \r\n ))}\r\n \r\n {managedStrings.useSelected}\r\n \r\n\r\n }\r\n\r\n \r\n );\r\n};\r\n\r\nexport default InstituteHero;\r\n","import {blue40, red30} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {addMinutes, addHours, addSeconds} from \"date-fns\";\r\n\r\nimport {serverStringToBrowserDate } from \"../../../utils/date-utils\";\r\nimport distinct from \"../../../utils/distinct\";\r\n\r\n\r\n\r\nconst applyTimeToMidnightDate = (date, timeString) => {\r\n const [hourStr, minutesStr,secondsStr] = timeString.split(\":\");\r\n\r\n const hour = parseInt(hourStr);\r\n const minute = parseInt(minutesStr);\r\n const seconds = parseInt(secondsStr);\r\n\r\n return addSeconds(addMinutes(addHours(date,hour),minute),seconds)\r\n\r\n}\r\n\r\nconst transformProgramSchedule = (programData, hubId) => {\r\n const {classes = [],\r\n sessions = [],\r\n weeks = [],\r\n buildings = [],\r\n id:programId,\r\n programName,\r\n startDate,\r\n endDate} = programData ?? {};\r\n\r\n const data = sessions.map(s => {\r\n const {sessionId, classId, sessionDate:dateString} = s;\r\n const cls = classes.find(c => c.id === classId);\r\n const building = buildings.find(b => b.buildingId === cls?.buildingId);\r\n\r\n const {\r\n timeZoneId,\r\n teacher,\r\n employeeId,\r\n className,\r\n startTime:startTimeString,\r\n endTime:endTimeString,\r\n room,\r\n id\r\n\r\n } = cls;\r\n const color = cls.isCornerstone ?\r\n blue40 : red30;\r\n const sessionDate = serverStringToBrowserDate(dateString);\r\n const startDate = applyTimeToMidnightDate(sessionDate,startTimeString);\r\n const endDate = applyTimeToMidnightDate(sessionDate,endTimeString);\r\n\r\n return {\r\n id:sessionId,\r\n programId,\r\n hubId,\r\n classId:id,\r\n program:programName,\r\n text:className,\r\n color,\r\n startDate,\r\n endDate,\r\n startHour: startDate.getHours(),\r\n teacher,\r\n employeeId,\r\n timeZoneId,\r\n building:building?.buildingName,\r\n latitude: building?.latitude,\r\n longitude: building?.longitude,\r\n room\r\n }\r\n });\r\n const timeZoneIds = data.map(d => d.timeZoneId).filter(distinct);\r\n const sorted = data.sort((a, b) => {\r\n if (a.startHour > b.startHour) { return 1 }\r\n if (a.startHour < b.startHour) { return -1 }\r\n return 0;\r\n });\r\n\r\n const mappedWeeks = weeks.map(w => ({\r\n hasSessions: w.hasSessions,\r\n startDate: serverStringToBrowserDate(w.startDate),\r\n endDate: serverStringToBrowserDate(w.endDate)\r\n }));\r\n\r\n return {\r\n programName,\r\n programId,\r\n timeZoneIds,\r\n startDate: serverStringToBrowserDate(startDate),\r\n endDate: serverStringToBrowserDate(endDate),\r\n data:sorted,\r\n weeks:mappedWeeks\r\n };\r\n}\r\n\r\n\r\nconst transformHubSchedule = (hubData) => {\r\n const programs = hubData.programs.map((p) => transformProgramSchedule(p,hubData.id));\r\n const alltimeZoneIds = programs.reduce((collection,program) => {\r\n return [...collection,...program.timeZoneIds]\r\n },[]);\r\n const {startDate, endDate, weeks} = hubData;\r\n const mappedWeeks = weeks.map(w => ({\r\n hasSessions: w.hasSessions,\r\n startDate: serverStringToBrowserDate(w.startDate),\r\n endDate: serverStringToBrowserDate(w.endDate)\r\n }));\r\n return {\r\n timeZoneIds: alltimeZoneIds.filter(distinct),\r\n programs,\r\n startDate:serverStringToBrowserDate(startDate),\r\n endDate:serverStringToBrowserDate(endDate),\r\n weeks:mappedWeeks\r\n }\r\n};\r\n\r\nexport {transformHubSchedule, transformProgramSchedule};","import {format, isDate} from \"date-fns\";\r\n\r\nimport {transformHubSchedule, transformProgramSchedule} from \"./program-hub-schedule-transform\";\r\nimport { sessionBackedLoad } from \"../../../utils/cached-data-load\";\r\n\r\n\r\n\r\nconst programHubScheduleService = () => {\r\n const loadHubSchedule = async (hubId, date) => {\r\n let url = `api/hubs/${hubId}/schedule`;\r\n if (isDate(date)) {\r\n url = `${url}?weekDate=${format(date, \"MM/dd/yyyy\")}`;\r\n }\r\n const data = await sessionBackedLoad({url, key:url});\r\n return transformHubSchedule(data);\r\n }\r\n const loadProgramSchedule = async (programId, date) => {\r\n let url = `api/programs/${programId}/schedule`;\r\n if (isDate(date)) {\r\n url = `${url}?weekDate=${format(date, \"MM/dd/yyyy\")}`;\r\n }\r\n const data = await sessionBackedLoad({url,key:url});\r\n return transformProgramSchedule(data);\r\n }\r\n\r\n const loadSubsetOfTimeZones = async(timezoneIds = [],language = \"en\") => {\r\n const idsQuery = timezoneIds.join(\"&ids=\");\r\n const url = `api/timezones?ids=${idsQuery}&language=${language}`;\r\n return await sessionBackedLoad({url, key:url});\r\n };\r\n\r\n\r\n return {\r\n loadHubSchedule,\r\n loadProgramSchedule,\r\n loadSubsetOfTimeZones\r\n }\r\n}\r\n\r\nexport default programHubScheduleService;","import {useCallback, useContext, useState, useMemo, useRef, useEffect} from \"react\";\r\n\r\n\r\nimport programHubScheduleService from \"./program-hub-schedule-service\";\r\nimport useSwitch from \"../../generic/hooks/use-switch/use-switch\";\r\nimport hubPageContext from \"../../pages/hubs/hub-page-context\";\r\nimport programPageContext from \"../../pages/institutes/program-page-context\";\r\n\r\nconst defaultService = programHubScheduleService();\r\n\r\nconst defaultObj = {};\r\nconst useProgramClassWidget = (service = defaultService, mode = \"view\") => {\r\n const hubInfo = useContext(hubPageContext);\r\n const programInfo = useContext(programPageContext);\r\n const {id:hubId = undefined} = hubInfo ?? defaultObj;\r\n const {id:programId = undefined} = programInfo ?? defaultObj;\r\n\r\n const [weeks, setWeeks] = useState();\r\n const [weekIndex, setWeekIndex] = useState({});\r\n\r\n const curWeek = useMemo(() => {\r\n if (!Array.isArray(weeks)) {\r\n return defaultObj;\r\n }\r\n return weeks?.[weekIndex] ?? defaultObj;\r\n },[weeks,weekIndex])\r\n\r\n const dataCallback = useCallback(async () => {\r\n if (programId && mode !== \"edit\") {\r\n const data = await service.loadProgramSchedule(programId, curWeek.startDate)\r\n const {weeks = []} = data;\r\n //we don't change our weeks data on subsequent loads\r\n setWeeks(cur => {\r\n if (!Array.isArray(cur)) {\r\n setWeekIndex(0)\r\n return weeks;\r\n }\r\n return cur;\r\n });\r\n return data;\r\n }\r\n if (hubId && mode !== \"edit\") {\r\n const hubData = await service.loadHubSchedule(hubId, curWeek.startDate);\r\n //we aggregate weeks into a weeks object for the hub and include it as a sibling to the programs\r\n const {weeks = []} = hubData;\r\n setWeeks(cur => {\r\n if (!Array.isArray(cur)) {\r\n setWeekIndex(0);\r\n return weeks;\r\n }\r\n return cur;\r\n });\r\n return hubData;\r\n }\r\n },[service, programId, hubId, curWeek, mode]);\r\n\r\n const timezoneCallback = useCallback(async (timezoneIds, language) => {\r\n if (mode === \"edit\") { return; }\r\n return await service.loadSubsetOfTimeZones(timezoneIds, language);\r\n },[service,mode]);\r\n\r\n\r\n const [weeksOpen, onShowWeeks, onHideWeeks] = useSwitch(false);\r\n\r\n\r\n const calloutRef = useRef();\r\n\r\n /*The widget itself loses some of its internal references needed for the color coding\r\n which uses their properietary child component.\r\n That breaks down and doesn't evaluate on a new load of the data.\r\n Simplest way to force the color coding to stay accurate is to force a destroy and redraw\r\n which isn't ideal, but it's the answer we have right now.*/\r\n const [forceRedraw, setForceRedraw] = useState(false);\r\n const onWeekChosen = useCallback((weekIndex) => {\r\n setWeekIndex(weekIndex);\r\n setForceRedraw(true);\r\n },[]);\r\n useEffect(() => {\r\n if (forceRedraw) {\r\n setForceRedraw(false);\r\n }\r\n },[forceRedraw])\r\n\r\n\r\n\r\n return {\r\n dataCallback,\r\n timezoneCallback,\r\n weeks,\r\n weekIndex,\r\n curWeek,\r\n calloutRef,\r\n weeksOpen,\r\n onShowWeeks,\r\n onHideWeeks,\r\n onWeekChosen,\r\n forceRedraw\r\n }\r\n}\r\n\r\nexport default useProgramClassWidget;\r\n\r\n","import React, {useContext, useMemo} from \"react\";\r\n\r\nimport {dateAsTimeTwentyFourToTwelve } from \"../../../utils/date-utils\";\r\nimport ScheduleTimezonesContext\r\n from \"../../generic/week-schedule-with-filters/schedule-timezones-context\";\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst ProgramClassCalendarBlock = ({data = defaultObj}) => {\r\n\r\n const {appointmentData = defaultObj} = data;\r\n const {startDate = \"\", endDate = \"\", program, text = \"\", timeZoneId, id} = appointmentData;\r\n const timeZones = useContext(ScheduleTimezonesContext) ?? defaultArray;\r\n const tz = useMemo(() => {\r\n if (timeZoneId === null || timeZoneId === undefined) {\r\n return null;\r\n }\r\n return timeZones?.find(tz => tz.id === timeZoneId)\r\n }\r\n ,[timeZoneId, timeZones]);\r\n //timezones will always have an \"all timezones\"\r\n //we only have more than one if we have more than 2 records in the collection\r\n return
\r\n
{text}
\r\n
{`${dateAsTimeTwentyFourToTwelve(startDate)} - ${dateAsTimeTwentyFourToTwelve(endDate)}`}
\r\n {tz && timeZones.length > 2 &&
{tz.name}
}\r\n
{program}
\r\n
\r\n\r\n};\r\n\r\n\r\nexport default ProgramClassCalendarBlock;","import React, {useContext, useMemo, useCallback} from \"react\";\r\n\r\nimport { A11y } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { spacing8, grey30 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport { DateToDisplayString, dateAsTimeTwentyFourToTwelve } from \"../../../utils/date-utils\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport Link from \"../../generic/link/link\";\r\nimport ScheduleTimezonesContext\r\n from \"../../generic/week-schedule-with-filters/schedule-timezones-context\";\r\n\r\n\r\n\r\nconst Container = styled.div`\r\npadding:${spacing8};\r\ntext-align:left;\r\n`;\r\nconst H3 = styled.h3`\r\nwhite-space:break-spaces;\r\ntext-align:left;\r\nmargin:0;\r\n`;\r\nconst Field = styled.div`\r\ndisplay:flex;\r\n`;\r\nconst Label = styled.div`\r\nflex:1;\r\ntext-align:right;\r\ncolor:${grey30};\r\n`;\r\nconst Value = styled.div`\r\nflex:3;\r\nmargin-left:${spacing8};\r\n`;\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"date\",\r\n \"time\",\r\n \"timezone\",\r\n \"institute\",\r\n \"location\",\r\n \"teacher\"\r\n ]\r\n }\r\n];\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst ProgramClassScheduleView = ({data = defaultObj}) => {\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {appointmentData = defaultObj} = data;\r\n const {\r\n text, startDate = defaultObj, endDate = defaultObj,\r\n teacher, building, room, program, timeZoneId, id,\r\n programId, hubId, classId\r\n } = appointmentData;\r\n const timeZones = useContext(ScheduleTimezonesContext) ?? defaultArray;\r\n const tz = useMemo(() => {\r\n if (timeZoneId === null || timeZoneId === undefined) {\r\n return null;\r\n }\r\n return timeZones.find(tz => tz.id === timeZoneId)\r\n }\r\n ,[timeZoneId, timeZones]);\r\n\r\n const classUrl = useMemo(() => {\r\n return !hubId ? `/institute/${programId}/classes/${classId}` : `/hub/${hubId}/classes/${classId}`;\r\n },[programId,hubId, classId])\r\n\r\n const ClickKiller = useCallback((e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n },[]);\r\n //timezones will always have an \"all timezones\"\r\n //we only have more than one if we have more than 2 records in the collection\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\r\n return (\r\n \r\n

{text}

\r\n \r\n \r\n \r\n {DateToDisplayString(startDate)}\r\n \r\n \r\n \r\n \r\n \r\n {`${dateAsTimeTwentyFourToTwelve(startDate)} - ${dateAsTimeTwentyFourToTwelve(endDate)}`}\r\n \r\n \r\n\r\n {tz && timeZones.length > 2 && (\r\n \r\n \r\n \r\n {tz.name}\r\n \r\n )}\r\n \r\n \r\n \r\n {program}\r\n \r\n \r\n \r\n \r\n \r\n {building} {room}\r\n \r\n \r\n \r\n \r\n \r\n {teacher}\r\n \r\n \r\n\r\n
\r\n
)\r\n}\r\n\r\nexport default ProgramClassScheduleView;","import React from \"react\";\r\n\r\nimport {Ghost, A11y} from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Callout } from \"@churchofjesuschrist/eden-callout\";\r\nimport { ChevronDown } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport {\r\n yellow30,\r\n textColorTertiary,\r\n accentColorLink,\r\n fontSize32,\r\n fontSize20,\r\n spacing8,\r\n spacing16\r\n\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useProgramClassScheduleWidget from \"./use-program-class-schedule-widget\";\r\nimport {DateToDisplayString} from \"../../../utils/date-utils\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport GenericEditItem from \"../../generic/content-loader/generic-edit-item\";\r\nimport WeekScheduleWithFilters\r\n from \"../../generic/week-schedule-with-filters/week-schedule-with-filters\";\r\nimport ProgramClassCalendarBlock\r\n from \"../program-class-calendar-block/program-class-calendar-block\";\r\nimport ProgramClassScheduleView from \"../program-class-schedule-view/program-class-schedule-view\";\r\n\r\n\r\nconst Title = styled.div`\r\ntext-align:center;\r\n`;\r\nconst Heading = styled.h2`\r\n font-size:${fontSize32};\r\n margin:0;\r\n padding:0;\r\n font-weight:normal;\r\n`\r\nconst Sub = styled.div`\r\ncolor:${yellow30};\r\nfont-weight:bold;\r\n`;\r\nconst SubGhost = styled(Ghost)`\r\ncolor:${yellow30};\r\nfont-weight:bold;\r\n`;\r\nconst Sub2 = styled.div`\r\ncolor:${textColorTertiary};\r\n`;\r\nconst WeeksHolder = styled.div`\r\npadding:${spacing16};\r\n`;\r\nconst WeekSub = styled.div`\r\nfont-size:.75rem;\r\n`;\r\nconst WeekMain = styled.div`\r\ncolor:${({ active, empty }) => {\r\n if (empty) {\r\n return textColorTertiary;\r\n }\r\n if (active) {\r\n return yellow30;\r\n }\r\n return accentColorLink;\r\n}};\r\nfont-weight:bold;\r\n`;\r\nconst WeekButton = styled(A11y)`\r\npadding:${spacing8};\r\nmargin-bottom:${spacing8};\r\ntext-align:center;\r\nwidth:100%;\r\n`;\r\n\r\nconst PlaceHolder = styled.div`\r\nheight:500px;`\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"weekClassSchedule\",\r\n \"noClassesThisWeek\",\r\n \"scheduleWidget\"\r\n ]\r\n }\r\n];\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst ProgramClassScheduleWidget = ({service, mode = \"view\"}) => {\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {\r\n dataCallback,\r\n timezoneCallback,\r\n weeks = defaultArray,\r\n curWeek = defaultObj,\r\n weekIndex = 0,\r\n weeksOpen,\r\n onShowWeeks,\r\n onHideWeeks,\r\n onWeekChosen,\r\n calloutRef,\r\n forceRedraw\r\n } = useProgramClassScheduleWidget(service, mode);\r\n const {startDate, endDate, hasSessions} = curWeek;\r\n return mode === \"edit\" ? () : (\r\n \r\n <Heading>{managedStrings.weekClassSchedule}</Heading>\r\n {weeks?.length > 1 ? (<SubGhost data-id=\"curr-week-button\" ref={calloutRef}\r\n onClick={() => {\r\n weeksOpen ? onHideWeeks() : onShowWeeks()\r\n }}>\r\n {DateToDisplayString(startDate)} - {DateToDisplayString(endDate)}\r\n <ChevronDown size={fontSize20}/>\r\n </SubGhost>) : (\r\n <Sub data-id=\"date-range\">\r\n {DateToDisplayString(startDate)} - {DateToDisplayString(endDate)}\r\n </Sub>\r\n )}\r\n {!hasSessions && <Sub2>{managedStrings.noClassesThisWeek}</Sub2>}\r\n \r\n \r\n \r\n {weeks.map((w,index) => onWeekChosen(index)}\r\n disabled={!w.hasSessions}\r\n active={index === weekIndex} key={w.startDate}>\r\n \r\n {DateToDisplayString(w.startDate)} - {DateToDisplayString(w.endDate)}\r\n \r\n {!w.hasSessions && {managedStrings.noClassesThisWeek}}\r\n )}\r\n \r\n \r\n {!forceRedraw ? : }\r\n )\r\n}\r\n\r\nexport default ProgramClassScheduleWidget;\r\n","import React from 'react';\r\n\r\nimport { Unordered, Item } from \"@churchofjesuschrist/eden-list\";\r\n\r\nconst BulletedList = ({\r\n heading,\r\n children,\r\n ...otherProps\r\n}) => {\r\n return (\r\n <>\r\n {heading && (

{heading}

)}\r\n \r\n {Object.keys(otherProps).map((key) => (\r\n {otherProps[key]}))}\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default BulletedList;\r\n","import { useMemo, useState, useCallback } from \"react\";\r\n\r\nimport { useContentLoaderProvider } from \"../content-loader/content-loader-provider\";\r\n\r\n\r\nconst isTruthy = (item) => item !== undefined && item !== null && item;\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst defaultFunc = () => { };\r\n/*NOTE: the items each have\r\nvisible:bool\r\ncanEdit:bool\r\nif all are canEdit false, then we don't show an edit button.\r\nIf we have any that are canEdit, then those can be added/removed\r\nWe have a requirement that we always have at least two boxes in our\r\nquarter boxes and no more than 4.\r\n\r\nWe toggle visible/invisible so that we essentially have our starting\r\ndata from the initial file, and all saved instances always know what set of\r\nboxes you are working with.\r\n\r\nIf we ever end up adding more options to possibly put into this set of boxes\r\nthen this one gets trickier, but it could be done\r\nby having a seperate json file for added boxes that is in the directory with this\r\ncomponent.\r\n*/\r\nconst useContentCards = ({\r\n propItems = defaultArray,\r\n mode = \"view\",\r\n index\r\n}) => {\r\n const loaderHook = useContentLoaderProvider() ?? defaultObj;\r\n const { onItemEdited = defaultFunc } = loaderHook;\r\n\r\n\r\n const visibleItems = useMemo(() => {\r\n return propItems.filter(i => i.visible) ?? defaultArray;\r\n }, [propItems]);\r\n const isEditable = useMemo(() => isTruthy(propItems.find(i => i.canEdit)), [propItems]);\r\n\r\n const editableItems = useMemo(() => propItems.filter(i => i.canEdit), [propItems]);\r\n\r\n const [checkedIdentifiers, setCheckedIdentifiers] = useState(\r\n propItems.filter(i => i.canEdit && i.visible)\r\n .map(i => i.identifier));\r\n\r\n\r\n\r\n\r\n const [editing, setEditing] = useState(false);\r\n const onEdit = useCallback(() => setEditing(true), []);\r\n const onCancel = useCallback(() => {\r\n setEditing(false);\r\n setCheckedIdentifiers(propItems.filter(i => i.canEdit && i.visible)\r\n .map(i => i.identifier));\r\n }, [propItems]);\r\n const onConfirm = useCallback(() => {\r\n const newItems = propItems.map(i => {\r\n const newItem = { ...i };\r\n const checked = checkedIdentifiers.indexOf(i.identifier) >= 0;\r\n if (newItem.canEdit) {\r\n newItem.visible = checked\r\n }\r\n return newItem;\r\n });\r\n onItemEdited(index, newItems);\r\n setEditing(false);\r\n }, [checkedIdentifiers, index, onItemEdited, propItems]);\r\n\r\n const onChangeCard = useCallback((changedIndex, e) => {\r\n const { target: { name, value } } = e;\r\n const newItems = propItems.map((i, itemIndex) => {\r\n if (itemIndex === changedIndex) {\r\n const newItem = { ...i };\r\n newItem[name] = value;\r\n return newItem;\r\n }\r\n return i;\r\n });\r\n onItemEdited(index, newItems);\r\n }, [index, onItemEdited, propItems]);\r\n const onChange = useCallback((e) => {\r\n const { name: identifier, checked } = e.target;\r\n setCheckedIdentifiers(cur => {\r\n const index = cur.indexOf(identifier);\r\n if (checked && index >= 0) {\r\n return cur;\r\n }\r\n if (!checked && index < 0) {\r\n return cur;\r\n }\r\n const result = [...cur];\r\n if (checked) {\r\n result.push(identifier);\r\n } else {\r\n result.splice(index, 1);\r\n }\r\n return result;\r\n })\r\n\r\n }, []);\r\n\r\n const footerMode = useMemo(() => (checkedIdentifiers?.length ?? 0) > 0 ? \"active\" : \"disabled\"\r\n , [checkedIdentifiers])\r\n\r\n return {\r\n isEditable,\r\n visibleItems,\r\n editing,\r\n onEdit,\r\n onCancel,\r\n onConfirm,\r\n onChangeCard,\r\n onChange,\r\n footerMode,\r\n requiredTotal: 1,\r\n editableItems,\r\n checkedIdentifiers\r\n }\r\n\r\n}\r\n\r\nexport default useContentCards;","import React from \"react\";\r\n\r\nimport { Ghost } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport { FormField, Label, Checkbox } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Grid, Item } from \"@churchofjesuschrist/eden-grid\";\r\nimport { Edit } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport { spacing32 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useContentCards from \"./use-content-cards\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentCard from \"../content-card/content-card\";\r\nimport ContentPageFooter from \"../content-page-footer/content-page-footer\";\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"editCustomBoxesWidget\",\r\n \"editCustomBoxesSub\",\r\n \"ok\"\r\n ]\r\n }\r\n]\r\nconst Container = styled(Grid)`\r\n padding: ${spacing32};\r\n`;\r\n\r\nconst EditHeader = styled.div`\r\nheight:40px;\r\n`;\r\n\r\nconst defaultArray = [];\r\nconst ContentCards = ({\r\n items: propItems = defaultArray,\r\n mode = \"view\",\r\n index//will be needed for reliable on change event most likely\r\n}) => {\r\n //we will need an change handler for this so we update our\r\n //parent world if the user confirms changes\r\n const { managedStrings } = useTranslation(stringGroups);\r\n\r\n const {\r\n isEditable,\r\n visibleItems = defaultArray,\r\n editableItems = defaultArray,\r\n onEdit,\r\n onCancel,\r\n onConfirm,\r\n footerMode,\r\n onChangeCard,\r\n onChange,\r\n editing,\r\n checkedIdentifiers\r\n\r\n } = useContentCards({\r\n propItems, mode, index\r\n });\r\n let numColumns = 3;\r\n switch (visibleItems.length) {\r\n case 3:\r\n numColumns = 4;\r\n break;\r\n case 2:\r\n numColumns = 6;\r\n break;\r\n case 1:\r\n numColumns = 12;\r\n break;\r\n default:\r\n numColumns = 3;\r\n }\r\n return (<>\r\n {mode === \"edit\" && isEditable && \r\n \r\n {managedStrings.editCustomBoxesWidget}\r\n \r\n }\r\n {editing && \r\n \r\n
{managedStrings.editCustomBoxesSub}
\r\n {editableItems.map(i => {\r\n const { identifier: key, title } = i;\r\n return (\r\n \r\n )\r\n\r\n })}\r\n \r\n
\r\n
}\r\n \r\n {visibleItems.map((item, index) => {\r\n const { identifier } = item;\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default ContentCards;","import React from \"react\";\r\n\r\nimport { H1 } from \"@churchofjesuschrist/eden-headings\";\r\nimport { grey30, spacing8, spacing32, spacing48 }\r\n from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nconst Container = styled.div`\r\n border-bottom: 1px solid ${grey30};\r\n margin: 0 ${spacing32};\r\n padding: ${spacing48} 0 ${spacing8} 0;\r\n`;\r\n\r\nconst Heading = ({ children }) => {\r\n return (\r\n \r\n

{children}

\r\n
\r\n )\r\n};\r\n\r\nexport default Heading;\r\n","import React, {useContext} from \"react\";\r\n\r\nimport { Primary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Card } from \"@churchofjesuschrist/eden-card\";\r\nimport { H2 } from \"@churchofjesuschrist/eden-headings\";\r\nimport {\r\n fontSize16,\r\n spacing16,\r\n spacing32,\r\n spacing64,\r\n spacing128,\r\n white\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport useButtonLinkAsNavigate\r\n from \"../hooks/use-button-link-as-navigate/use-button-link-as-navigate\";\r\nimport useTitanApi from \"../hooks/use-titan-api/use-titan-api\";\r\n\r\nconst ImageBackground = styled.div`\r\n ${({ image }) => image && `\r\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)), url(${image});`}\r\n background-size: cover;\r\n padding: ${({isMobile}) => isMobile ? spacing32 : spacing128};\r\n text-align: center;\r\n width: 100%;\r\n`\r\n\r\nconst ImageCard = styled(Card)`\r\n background: ${white};\r\n margin: 0 auto;\r\n width: 100%;\r\n`;\r\n\r\nconst ImageHeading = styled(H2)`\r\n margin-top: ${spacing64};\r\n`;\r\n\r\nconst ImageBody = styled.p`\r\n font-size: ${fontSize16};\r\n margin: 0 ${({ isMobile }) => isMobile ? spacing16 : spacing64};\r\n padding: ${spacing16} 0;\r\n`;\r\n\r\nconst CallToActionButton = styled(Primary)`\r\n margin-bottom: ${spacing64};\r\n`;\r\n\r\nconst defaultObj = {};\r\n\r\nconst ImageCardComponent = ({\r\n body = \"\",\r\n callToActionHref,\r\n callToActionText = \"\",\r\n heading = \"\",\r\n image = defaultObj,\r\n imageUrl = \"\",\r\n dataId\r\n}) => {\r\n\r\n const {isMobile} = useContext(menuContext);\r\n\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n\r\n const buttonProps = useButtonLinkAsNavigate({href:callToActionHref});\r\n\r\n return (\r\n \r\n \r\n \r\n {heading}\r\n \r\n \r\n {body}\r\n \r\n \r\n {callToActionText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ImageCardComponent;","import React, {useContext} from \"react\";\r\n\r\nimport { Primary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport HTMLFragment from \"@churchofjesuschrist/eden-html-fragment\";\r\nimport { PosterBlock } from \"@churchofjesuschrist/eden-poster-block\";\r\nimport {\r\n grey3,\r\n spacing8,\r\n spacing16,\r\n spacing32,\r\n white\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Text3} from \"@churchofjesuschrist/eden-text\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport useTitanApi from \"../hooks/use-titan-api/use-titan-api\";\r\n\r\nconst StyledText3 = styled(Text3)`\r\ndisplay:inline-block;\r\nmargin-bottom:${spacing8};\r\n`\r\n\r\n//${({isMobile, imagePlacement}) => isMobile ? \"padding:0\" : `padding: 0 ${spacing32}`}\r\nconst componentPadding = (props) => {\r\n const {isMobile = false, imagePlacement = \"left\"} = props;\r\n if (isMobile) { return \"0\";}\r\n if (imagePlacement === \"right\") {\r\n return `0 ${spacing32} ${spacing32} ${spacing32}`;\r\n }\r\n return `0 ${spacing32}`;\r\n}\r\nconst Hero = styled(PosterBlock)`\r\n background-color: ${({background}) => background};\r\n padding: ${(props) => componentPadding(props)};\r\n margin-top:${({isMobile}) => isMobile ? 0 : spacing16};\r\n margin-bottom:${({isMobile}) => isMobile ? 0 : spacing16};\r\n \r\n button{\r\n display:none;\r\n }\r\n & > div > div:nth-child(2) > img {\r\n padding: ${spacing32};\r\n }\r\n padding-bottom:${spacing32};\r\n ${({isMobile}) => isMobile ? \"\" : `padding-bottom: ${spacing32}`}\r\n`;\r\n\r\nconst defaultObj = {}\r\nconst GenericPosterBlock = ({\r\n title,\r\n body,\r\n callToActionText,\r\n callToActionHref,\r\n image = defaultObj,\r\n imageUrl = \"\",\r\n imagePlacement = \"left\",\r\n background,\r\n dataId\r\n}) => {\r\n\r\n const {isMobile} = useContext(menuContext);\r\n\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n const bgColor = background === \"grey\" ? grey3 : white;\r\n return (\r\n \r\n {callToActionText}\r\n ) : null}\r\n image={url ? {title}/ : null}\r\n imagePlacement={imagePlacement}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nexport default GenericPosterBlock;\r\n","import {useMemo, useState, useCallback} from \"react\";\r\n\r\nimport { useContentLoaderProvider } from \"../content-loader/content-loader-provider\";\r\n\r\n\r\nconst isTruthy = (item) => item !== undefined && item !== null && item;\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst defaultFunc = () => {};\r\n/*NOTE: the items each have\r\nvisible:bool\r\ncanEdit:bool\r\nif all are canEdit false, then we don't show an edit button.\r\nIf we have any that are canEdit, then those can be added/removed\r\nWe have a requirement that we always have at least two boxes in our\r\nquarter boxes and no more than 4.\r\n\r\nWe toggle visible/invisible so that we essentially have our starting\r\ndata from the initial file, and all saved instances always know what set of\r\nboxes you are working with.\r\n\r\nIf we ever end up adding more options to possibly put into this set of boxes\r\nthen this one gets trickier, but it could be done\r\nby having a seperate json file for added boxes that is in the directory with this\r\ncomponent.\r\n*/\r\nconst useQuarterBoxes = ({\r\n propItems = defaultArray,\r\n mode = \"view\",\r\n index\r\n}) => {\r\n const loaderHook = useContentLoaderProvider() ?? defaultObj;\r\n const {onItemEdited = defaultFunc} = loaderHook;\r\n\r\n\r\n const visibleItems = useMemo(() => {\r\n return propItems.filter(i => i.visible) ?? defaultArray;\r\n },[propItems]);\r\n const isEditable = useMemo(() => isTruthy(propItems.find(i => i.canEdit)),[propItems]);\r\n\r\n const editableItems = useMemo(() => propItems.filter(i => i.canEdit), [propItems]);\r\n\r\n const [checkedIdentifiers,setCheckedIdentifiers] = useState(\r\n propItems.filter(i => i.canEdit && i.visible)\r\n .map(i => i.identifier));\r\n\r\n\r\n\r\n\r\n const [editing, setEditing] = useState(false);\r\n const onEdit = useCallback(() => setEditing(true),[]);\r\n const onCancel = useCallback(() => {\r\n setEditing(false);\r\n setCheckedIdentifiers(propItems.filter(i => i.canEdit && i.visible)\r\n .map(i => i.identifier));\r\n },[propItems]);\r\n const onConfirm = useCallback(() => {\r\n const newItems = propItems.map(i => {\r\n const newItem = {...i};\r\n const checked = checkedIdentifiers.indexOf(i.identifier) >= 0;\r\n if (newItem.canEdit) {\r\n newItem.visible = checked\r\n }\r\n return newItem;\r\n });\r\n onItemEdited(index,newItems);\r\n setEditing(false);\r\n },[checkedIdentifiers, index, onItemEdited, propItems]);\r\n const onChange = useCallback((e) => {\r\n const {name:identifier, checked} = e.target;\r\n setCheckedIdentifiers(cur => {\r\n const index = cur.indexOf(identifier);\r\n if (checked && index >= 0) {\r\n return cur;\r\n }\r\n if (!checked && index < 0) {\r\n return cur;\r\n }\r\n const result = [...cur];\r\n if (checked) {\r\n result.push(identifier);\r\n } else {\r\n result.splice(index,1);\r\n }\r\n return result;\r\n })\r\n\r\n },[]);\r\n\r\n const footerMode = useMemo(() => (checkedIdentifiers?.length ?? 0) > 1 ? \"active\" : \"disabled\"\r\n ,[checkedIdentifiers])\r\n\r\n return {\r\n isEditable,\r\n visibleItems,\r\n editing,\r\n onEdit,\r\n onCancel,\r\n onConfirm,\r\n onChange,\r\n footerMode,\r\n requiredTotal:2,\r\n editableItems,\r\n checkedIdentifiers\r\n }\r\n\r\n}\r\n\r\nexport default useQuarterBoxes;","import React from \"react\";\r\n\r\nimport { Ghost } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport {FormField, Label, Checkbox} from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Grid, Item } from \"@churchofjesuschrist/eden-grid\";\r\nimport { Edit } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport { spacing32 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useQuarterBoxes from \"./use-quarter-boxes\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentCard from \"../content-card/content-card\";\r\nimport ContentPageFooter from \"../content-page-footer/content-page-footer\";\r\n\r\n\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"editInfoBoxesWidget\",\r\n \"editInfoBoxes\",\r\n \"editInfoBoxesSub\",\r\n \"ok\"\r\n ]\r\n }\r\n]\r\nconst Container = styled(Grid)`\r\n padding: ${spacing32};\r\n`;\r\n\r\nconst EditHeader = styled.div`\r\nheight:40px;\r\n`;\r\n\r\nconst defaultArray = [];\r\nconst QuarterBoxes = ({\r\n items:propItems = defaultArray,\r\n mode = \"view\",\r\n index//will be needed for reliable on change event most likely\r\n}) => {\r\n //we will need an change handler for this so we update our\r\n //parent world if the user confirms changes\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n const {\r\n isEditable,\r\n visibleItems = defaultArray,\r\n editableItems = defaultArray,\r\n onEdit,\r\n onCancel,\r\n onConfirm,\r\n footerMode,\r\n onChange,\r\n editing,\r\n checkedIdentifiers\r\n\r\n } = useQuarterBoxes({\r\n propItems, mode, index\r\n });\r\n let numColumns = 3;\r\n switch (visibleItems.length) {\r\n case 3:\r\n numColumns = 4;\r\n break;\r\n case 2:\r\n numColumns = 6;\r\n break;\r\n case 1:\r\n numColumns = 12;\r\n break;\r\n default:\r\n numColumns = 3;\r\n }\r\n return (<>\r\n {mode === \"edit\" && isEditable && \r\n \r\n {managedStrings.editInfoBoxesWidget}\r\n \r\n }\r\n {editing && \r\n \r\n
{managedStrings.editInfoBoxesSub}
\r\n {editableItems.map(i => {\r\n const { identifier: key, title } = i;\r\n return (\r\n \r\n )\r\n\r\n })}\r\n \r\n
\r\n
}\r\n \r\n {visibleItems.map((item, index) => {\r\n const {identifier} = item;\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default QuarterBoxes;","import { useCallback, useMemo, useState } from \"react\";\r\n\r\nimport { useContentLoaderProvider } from \"../content-loader/content-loader-provider\";\r\nimport useToggle from \"../hooks/use-toggle/use-toggle\";\r\n\r\nconst fields = [\r\n \"facebook\",\r\n \"instagram\",\r\n \"twitter\",\r\n \"youtube\",\r\n \"pinterest\",\r\n]\r\n\r\nconst useSocialMedia = ({\r\n index,\r\n props,\r\n}) => {\r\n const [showModal, toggleModal] = useToggle();\r\n const { onItemEdited } = useContentLoaderProvider() || {};\r\n const [values, setValues] = useState(() => {\r\n const initialValue = {};\r\n fields.forEach(f => {\r\n initialValue[f] = props[f];\r\n });\r\n return initialValue;\r\n })\r\n\r\n const onConfirm = useCallback(() => {\r\n onItemEdited?.(index, values);\r\n toggleModal();\r\n }, [onItemEdited, index, values, toggleModal]);\r\n\r\n const onChange = useCallback((e) => {\r\n setValues(oldValues => {\r\n return {\r\n ...oldValues,\r\n [e.target.name]: e.target.value\r\n };\r\n });\r\n }, []);\r\n\r\n const mode = useMemo(() => {\r\n const hasInvalidUrl = fields.find((f) => values[f]?.indexOf(\"https://\") > -1 ||\r\n values[f]?.indexOf(\"http://\") > -1);\r\n if (hasInvalidUrl) {\r\n return \"disabled\";\r\n }\r\n return \"edit\";\r\n }, [values]);\r\n\r\n return {\r\n values,\r\n showModal,\r\n toggleModal,\r\n onConfirm,\r\n onChange,\r\n mode,\r\n }\r\n};\r\n\r\nexport default useSocialMedia;\r\n","import React from \"react\";\r\n\r\nimport { A11y, Ghost } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport { FormField, Label, Input } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { H2 } from \"@churchofjesuschrist/eden-headings\";\r\nimport {\r\n Facebook,\r\n Instagram,\r\n X,\r\n Youtube,\r\n Pinterest,\r\n Edit\r\n} from \"@churchofjesuschrist/eden-icons\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport Split from \"@churchofjesuschrist/eden-split\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport {\r\n fontSize32,\r\n fontWeightBold,\r\n spacing64,\r\n colorFacebook,\r\n colorYoutube,\r\n colorPinterest,\r\n breakWidth1600,\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useSocialMedia from \"./use-social-media\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentPageFooter from \"../content-page-footer/content-page-footer\";\r\n\r\nconst Container = styled(Stack)`\r\n margin: 0 auto;\r\n max-width: ${breakWidth1600};\r\n`;\r\n\r\nconst Heading = styled(H2)`\r\n font-size: ${fontSize32};\r\n font-weight: ${fontWeightBold};\r\n margin-top: ${spacing64};\r\n width: 100%;\r\n text-align: center;\r\n`;\r\n\r\nconst Paragraph = styled.p`\r\n font-weight: ${fontWeightBold};\r\n margin: 0;\r\n width: 100%;\r\n text-align: center;\r\n`;\r\n\r\nconst URLLabel = styled.div`\r\n text-align: right;\r\n padding-top: 5px;\r\n`\r\n\r\nconst EditHeader = styled.div`\r\nheight:40px;\r\n`;\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"socialMediaWidget\",\r\n \"editSocials\",\r\n \"editSocialsSub\",\r\n \"socialMediaTitle\",\r\n \"socialMediaBody\",\r\n \"facebook\",\r\n \"instagram\",\r\n \"twitter\",\r\n \"youtube\",\r\n \"pinterest\",\r\n \"ok\"\r\n ]\r\n }\r\n]\r\n\r\nconst fields = [\r\n {\r\n key: \"facebook\",\r\n url: \"https://facebook.com/\",\r\n },\r\n {\r\n key: \"instagram\",\r\n url: \"https://instagram.com/\",\r\n },\r\n {\r\n key: \"twitter\",\r\n url: \"https://x.com/\",\r\n },\r\n {\r\n key: \"youtube\",\r\n url: \"https://youtube.com/\",\r\n },\r\n {\r\n key: \"pinterest\",\r\n url: \"https://pinterest.com/\",\r\n }\r\n]\r\n//note: the content loader looks for flags\r\n//as defined in its javascript where we map identifiers to flags\r\n//so this widget isn't rendered at all if the flag is mapped and the flag is false\r\nconst SocialMedia = (props) => {\r\n const {\r\n facebook,\r\n instagram,\r\n twitter,\r\n youtube,\r\n pinterest,\r\n title,\r\n body,\r\n mode,\r\n index,\r\n } = props;\r\n const { managedStrings } = useTranslation(stringGroups);\r\n const {\r\n values,\r\n showModal,\r\n toggleModal,\r\n onConfirm,\r\n onChange,\r\n mode: footerMode\r\n } = useSocialMedia({ index, props });\r\n\r\n const hasSocialMedia = facebook || instagram || twitter || youtube || pinterest;\r\n\r\n if (!hasSocialMedia && mode !== \"edit\") return null;\r\n\r\n return (\r\n \r\n {mode === \"edit\" && (\r\n <>\r\n \r\n \r\n {managedStrings.socialMediaWidget}\r\n \r\n \r\n }\r\n >\r\n \r\n
{managedStrings.editSocialsSub}
\r\n {fields.map(f => {\r\n return (\r\n \r\n \r\n \r\n {f.url}\r\n \r\n \r\n \r\n )\r\n })}\r\n
\r\n \r\n \r\n )}\r\n {title}\r\n {body}\r\n \r\n {facebook && (\r\n \r\n )}\r\n {instagram && (\r\n \r\n )}\r\n {twitter && (\r\n \r\n )}\r\n {youtube && (\r\n \r\n )}\r\n {pinterest && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SocialMedia;\r\n","import React from \"react\";\r\n\r\n\r\nimport {AppearanceSection} from \"@churchofjesuschrist/eden-appearance\";\r\nimport { Primary, Secondary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport HTMLFragment from \"@churchofjesuschrist/eden-html-fragment\";\r\nimport { Image } from \"@churchofjesuschrist/eden-image\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport { SplitHero} from \"@churchofjesuschrist/eden-split-hero\";\r\nimport { spacing32, spacing8} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Text3} from \"@churchofjesuschrist/eden-text\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useButtonLinkAsNavigate\r\n from \"../hooks/use-button-link-as-navigate/use-button-link-as-navigate\";\r\nimport useTitanApi from \"../hooks/use-titan-api/use-titan-api\";\r\n\r\nconst StyledText3 = styled(Text3)`\r\ncolor:white;\r\ndisplay:inline-block;\r\nmargin-bottom:${spacing8};\r\n`\r\nconst Hero = styled(SplitHero)`\r\n padding: ${spacing32};\r\n`;\r\n\r\nconst StyledRow = styled(Row)`\r\n padding-top: ${spacing32};\r\n`;\r\n//this is needed or else that appearance will but a black background\r\nconst StyledAppearance = styled(AppearanceSection)`\r\nbackground-color:rgba(0,0,0,0);\r\n`;\r\n\r\nconst CustomCallToAction = ({\r\n isPrimary,\r\n color,\r\n callToActionText,\r\n callToActionHref,\r\n ...other\r\n}) => {\r\n const Button = isPrimary ? Primary : Secondary;\r\n const inverted = Boolean(color !== 'white');\r\n const btnProps = useButtonLinkAsNavigate({href:callToActionHref});\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n );\r\n}\r\n\r\nconst defaultObj = {};\r\nconst SplitHeroComponent = ({\r\n primaryCallToActionHref,\r\n primaryCallToActionText,\r\n secondaryCallToActionHref,\r\n secondaryCallToActionText,\r\n tertiaryCallToActionHref,\r\n tertiaryCallToActionText,\r\n image = defaultObj,\r\n imageUrl = \"\",\r\n color,\r\n title = \"\",\r\n dataId,\r\n body,\r\n ...otherProps\r\n}) => {\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n //hero component says it requires title and we fail tests\r\n return (\r\n }\r\n data-id={dataId}\r\n color={color}\r\n image={}\r\n title={title}\r\n callToAction={\r\n <>\r\n \r\n {secondaryCallToActionHref &&\r\n secondaryCallToActionText &&\r\n }\r\n {tertiaryCallToActionHref &&\r\n tertiaryCallToActionText &&\r\n }\r\n \r\n {primaryCallToActionHref &&\r\n primaryCallToActionText &&\r\n }\r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default SplitHeroComponent;\r\n","import fetchWrapper from \"../../../utils/fetchWrapper\"\r\n\r\nconst videoService = () => {\r\n const loadVideos = async () => {\r\n return await fetchWrapper({\r\n url: 'api/titan/videos'\r\n });\r\n }\r\n\r\n return {\r\n loadVideos\r\n }\r\n}\r\n\r\nexport default videoService;","import {useCallback, useState, useEffect } from 'react';\r\n\r\nimport videoService from './video-service';\r\nimport useStatus from '../hooks/use-status/use-status';\r\n\r\nconst defaultService = videoService();\r\n\r\nconst useVideoService = ({service = defaultService}) => {\r\n const [videos, setVideos] = useState([]);\r\n\r\n const {\r\n status,\r\n setSavingStatus: loading,\r\n setErrorStatus: error,\r\n setSuccessStatus: successStatus,\r\n } = useStatus({ saving: true });\r\n\r\n const load = useCallback(async () => {\r\n try {\r\n loading();\r\n const data = await service.loadVideos();\r\n setVideos(data);\r\n successStatus();\r\n } catch (e) {\r\n error(e);\r\n }\r\n }, [successStatus, error, loading, service]);\r\n\r\n useEffect(() => {\r\n load();\r\n }, [load]);\r\n\r\n return {\r\n status,\r\n videos,\r\n }\r\n};\r\n\r\nexport default useVideoService;\r\n","import React, { useContext } from \"react\";\r\n\r\nimport { A11y, Ghost } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Download, Play } from \"@churchofjesuschrist/eden-icons\";\r\nimport { MediaModal, ModalVideo } from \"@churchofjesuschrist/eden-media-modal\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport {\r\n fontSize16,\r\n fontSize32,\r\n fontWeightLight,\r\n spacing32,\r\n white\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { Image } from \"@churchofjesuschrist/eden-tile-parts\";\r\nimport { TileSwipeBlock } from \"@churchofjesuschrist/eden-tile-swipe-block\";\r\nimport { Media } from \"@churchofjesuschrist/eden-vertical-tiles\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useVideoService from \"./use-video-service\";\r\nimport videoService from \"./video-service\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport MenuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport GenericEditItem from \"../content-loader/generic-edit-item\";\r\nimport ShareLink from \"../share-link/share-link\";\r\n\r\nconst VideoTitle = styled(Row)`\r\n text-align: center;\r\n margin: 0 auto;\r\n width: 100%;\r\n display: block;\r\n font-size: ${fontSize32};\r\n font-weight: ${fontWeightLight};\r\n padding-top: ${spacing32};\r\n`;\r\n\r\nconst ToolsRow = styled(Row)`\r\n background-color: ${white};\r\n justify-content: center;\r\n`;\r\n\r\nconst VideoSubheading = styled(Row)`\r\n text-align: center;\r\n margin: 0 auto;\r\n margin-bottom: ${spacing32};\r\n width: 100%;\r\n display: block;\r\n font-size: ${fontSize16};\r\n`;\r\n\r\nconst TileContainer = styled(TileSwipeBlock)`\r\n width: calc(100vw - 2 * ${spacing32});\r\n`;\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"iLoveInstituteVideos\"\r\n ]\r\n }\r\n]\r\n\r\nconst defaultService = videoService();\r\n//note: the content loader looks for flags\r\n//as defined in its javascript where we map identifiers to flags\r\n//so this widget isn't rendered at all if the flag is mapped and the flag is false\r\nconst VideoSlidehow = ({ flagService, service = defaultService, title, subheading,\r\n mode = \"view\"}) => {\r\n const { isMobile } = useContext(MenuContext);\r\n const { videos } = useVideoService({ service });\r\n const [selectedVideoIndex, setSelectedVideoIndex] = React.useState(-1);\r\n const { managedStrings } = useTranslation(stringGroups);\r\n\r\n if (mode === \"edit\") {\r\n return ;\r\n }\r\n\r\n if (videos.length) {\r\n return (\r\n
\r\n {title}\r\n {subheading && {subheading}}\r\n \r\n \r\n {videos.map((video, index) => (\r\n setSelectedVideoIndex(index)}>\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n = 0} onClose={() => setSelectedVideoIndex(-1)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n
\r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default VideoSlidehow;","import React from \"react\";\r\n\r\nimport {Info, Success, Error, Modal as SaveModal} from \"@churchofjesuschrist/eden-alert\";\r\nimport { Warn } from \"@churchofjesuschrist/eden-banner\";\r\nimport { Icon, Secondary, Primary, Ghost } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { DialogModal } from \"@churchofjesuschrist/eden-dialog-modal\";\r\nimport { Drag, Delete, AddToListRectangle } from \"@churchofjesuschrist/eden-icons\";\r\nimport { spacing16,\r\n accentColorLink,\r\n accentColorDanger,\r\n backgroundColorLevel1,\r\n spacing32,\r\n spacing8,\r\n breakWidth1600,\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { SubNavigation } from \"@churchofjesuschrist/eden-sub-navigation\";\r\nimport {DragDropContext, Draggable, Droppable} from \"react-beautiful-dnd\";\r\nimport styled from \"styled-components\";\r\n\r\n\r\nimport ContentLoaderProvider, {useContentLoaderProvider}\r\n from \"./content-loader-provider\";\r\nimport ManageWidgets from \"./manage-widgets/manage-widgets\";\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport CalendarEventsWidget from \"../../events/calendar-events-widget/calendar-events-widget\";\r\nimport GetStarted from \"../../global-layout/get-started/get-started\";\r\nimport FeaturedClasses from \"../../institute/featured-classes/featured-classes\";\r\nimport InstituteHero from \"../../institute/institute-hero/institute-hero\";\r\nimport NewsRoom from \"../../news-room/news-room-layout/news-room-layout\";\r\nimport ProgramClassSchedule from\r\n \"../../program-class-schedule/program-class-schedule-widget/program-class-schedule-widget\";\r\nimport StudentQuickSignup from \"../../students/signup/quick-signup/quick-signup\";\r\nimport BulletedList from \"../bulleted-list/bulleted-list\";\r\nimport ContentCard from \"../content-card/content-card\";\r\nimport ContentCards from \"../content-cards/content-cards\";\r\nimport FeatureFlags from \"../feature-flags/feature-flags\";\r\nimport Heading from \"../heading/heading\";\r\nimport IconCard from \"../icon-card/icon-card\";\r\nimport ImageCard from \"../image-card/image-card\";\r\nimport InvitationBanner from \"../invitation-banner/invitation-banner\";\r\nimport LoadingSpinner from \"../loading-spinner/loading-spinner\";\r\nimport PageHeroBanner from \"../page-hero-banner/page-hero-banner\";\r\nimport PosterBlock from \"../poster-block/poster-block\";\r\nimport QuarterBoxes from \"../quarter-boxes/quarter-boxes\";\r\nimport SocialMedia from \"../social-media/social-media\";\r\nimport SplitHero from \"../split-hero/split-hero\";\r\nimport VideoSlidehow from \"../video-slideshow/video-slideshow\";\r\n\r\n\r\nconst MaxWidth = styled.div`\r\n max-width: ${breakWidth1600};\r\n margin: 0 auto;\r\n`;\r\n\r\nconst LoadHolder = styled.div`\r\npadding:${spacing16}`;\r\n\r\nconst ItemWrappedDiv = styled.div`\r\nposition:relative;\r\nborder-top:dashed 1px ${accentColorLink};\r\nborder-bottom:dashed 1px ${accentColorLink};\r\npadding-top:${spacing16};\r\npadding-bottom:${spacing16};\r\nmargin-bottom:${spacing16};\r\n`;\r\nconst ItemHeaderControls = styled.div`\r\n`\r\nconst MoveHandler = styled.div`\r\nposition:absolute;\r\nleft:50%;\r\n`;\r\nconst DeleteHandler = styled.div`\r\nposition:absolute;\r\nright:${spacing16};\r\n`;\r\nconst DragContainer = styled.div`\r\nbackground-color:${backgroundColorLevel1}\r\n`;\r\n\r\nconst EditableFooter = styled.div`\r\ndisplay:flex;\r\njustify-content:space-around;\r\n`;\r\n\r\nconst ContentLoaderHeader = styled.div`\r\nposition:relative;\r\n`;\r\nconst SubNavTitle = styled.div`\r\npadding-bottom:${spacing16};\r\n`;\r\nconst ContentLoaderControls = styled.div`\r\nposition:absolute;\r\nright:${spacing16};\r\ntop:${spacing8};\r\ndisplay:flex;\r\n\r\nbutton{\r\n margin-right:${spacing16};\r\n &.cancel{\r\n margin-right:${spacing32};\r\n }\r\n}\r\n`\r\n\r\nconst components = {\r\n 'invitation':InvitationBanner,\r\n 'bulleted-list': BulletedList,\r\n 'program-class-schedule': ProgramClassSchedule,\r\n 'content-card': ContentCard,\r\n 'content-cards': ContentCards,\r\n 'featured-classes': FeaturedClasses,\r\n 'get-started': GetStarted,\r\n 'h1': Heading,\r\n 'icon-card': IconCard,\r\n 'image-card': ImageCard,\r\n 'institute-hero': InstituteHero,\r\n 'newsroom': NewsRoom,\r\n 'page-hero-banner': PageHeroBanner,\r\n 'poster-block': PosterBlock,\r\n 'quarter-boxes': QuarterBoxes,\r\n 'quick-signup': StudentQuickSignup,\r\n 'split-hero': SplitHero,\r\n 'news-events': CalendarEventsWidget,\r\n 'video-slideshow': VideoSlidehow,\r\n 'social-media': SocialMedia,\r\n}\r\n\r\n/*\r\n * Schema for content:\r\n * [\r\n * {\r\n * component: 'Key from components list',\r\n * children: [{\r\n * component: 'Another key from components list'\r\n * }],\r\n * data: {\r\n * property1: 'Value for component',\r\n * property2: 'Another value for component',\r\n * stringGroupName:'Name of string folder',\r\n * translatedProps:{\r\n * prop:'translatedKey',//we will essentially add prop to data and put the translated string in\r\n * //so we in this case we would have data.prop:translatedStrings.translatedKey as the end result\r\n * }\r\n * }\r\n * }\r\n * ]\r\n *\r\n * The data array can be whatever key/value pairs are needed for the component.\r\n */\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\"manageWidgets\",\r\n \"preview\",\r\n \"editLanding\",\r\n \"save\",\r\n \"cancel\",\r\n \"previewing\",\r\n \"endPreview\",\r\n \"saving\",\r\n \"saveError\",\r\n \"saveSuccess\"]\r\n }\r\n]\r\n\r\nconst defaultArray = [];\r\n\r\nconst AllWrapped = ({children}) => {\r\n const hook = useContentLoaderProvider();\r\n const {\r\n loadedContent,\r\n canEdit,\r\n onDragStart,\r\n onDragEnd,\r\n addModalVisible,\r\n onOpenAddModal,\r\n onCancelAddModal,\r\n onCancel,\r\n onPreview,\r\n onEndPreview,\r\n previewing,\r\n onSave,\r\n saveStatus,\r\n clearSaving,\r\n flagService\r\n } = hook;\r\n const {managedStrings} = useTranslation(stringGroups);\r\n return canEdit ? (
\r\n {(saveStatus.saving || saveStatus.error || saveStatus.success) && (\r\n \r\n {saveStatus.saving && {managedStrings.saving}}\r\n {saveStatus.success && {managedStrings.saveSuccess}}\r\n {saveStatus.error && {managedStrings.saveError}}\r\n \r\n ) }\r\n {previewing ? (\r\n {managedStrings.save}\r\n {managedStrings.endPreview}\r\n }/>) : (\r\n \r\n {managedStrings.editLanding}}}/>\r\n \r\n {managedStrings.cancel}\r\n {managedStrings.preview}\r\n {managedStrings.save}\r\n \r\n \r\n )}\r\n {previewing ? : (<>\r\n \r\n \r\n {(provided, snapshot) => (\r\n
\r\n {children}\r\n {provided.placeholder}\r\n
)}\r\n\r\n
\r\n
\r\n \r\n \r\n {managedStrings.manageWidgets}\r\n \r\n {\r\n \r\n }\r\n \r\n \r\n )}\r\n\r\n
) : children;\r\n};\r\nconst Item = ({item}) => {\r\n const hook = useContentLoaderProvider();\r\n const {canEdit,\r\n onDeleteComponent,\r\n flagService} = hook;\r\n const Component = components[item.component];\r\n if (!Component) {\r\n return null;\r\n }\r\n const {canMove,\r\n canDelete,\r\n index,\r\n component,\r\n identifier = \"na\",\r\n children,\r\n data} = item ?? {};\r\n //can edit is for the full content loader\r\n //telling this item to render in an edit mode\r\n return canEdit ? (\r\n \r\n {(provided, snapshot) => (\r\n \r\n \r\n {canMove && \r\n \r\n }\r\n {canDelete && \r\n onDeleteComponent(index)}>\r\n \r\n }\r\n \r\n
\r\n \r\n {children ?\r\n () : data?.children}\r\n \r\n
\r\n
)}\r\n\r\n
\r\n
) : (\r\n \r\n {children ?\r\n () : data?.children}\r\n \r\n )\r\n\r\n}\r\n\r\nconst ContentLoaderInner = () => {\r\n const hook = useContentLoaderProvider();\r\n const {\r\n contentWithTranslations:content,\r\n status\r\n } = hook;\r\n\r\n return status.saving ? (\r\n \r\n ) : \r\n {content.map((item) => {\r\n const {component, identifier = \"na\"} = item ?? {};\r\n //NOTE: if we need to do a flag specific to a program or some other property\r\n //we could do so here if we add an id={someNumber} property to the FeatureFlag component\r\n //the challenge becomes getting a dynamic id into this spot in the code.\r\n return stringHasValue(item.flag) ? (\r\n \r\n \r\n \r\n ) : ()\r\n })\r\n }\r\n \r\n}\r\n\r\nconst ContentLoader = ({\r\n content:propsContent = defaultArray,\r\n service,\r\n serviceParams,\r\n mode = \"view\",\r\n flagService\r\n\r\n}) => \r\n \r\n \r\n \r\n\r\n\r\n\r\nexport default ContentLoader;\r\n\r\n","import MapsService, { LocationType } from \"@churchofjesuschrist/maps-service\";\r\n\r\nimport { sessionBackedLoad } from \"../../utils/cached-data-load\";\r\nimport stringHasValue from \"../../utils/string-has-value\";\r\n\r\nconst stakeKey = \"myStake\";\r\nconst programKey = \"my_online_program\";\r\nconst userStakeService = () => {\r\n const storage = window.sessionStorage;\r\n const key = \"myStake\";\r\n const loadLocationStakeUnitNumber = async(localCoordinates, config) => {\r\n let unitNumber = storage.getItem(key);\r\n if (!stringHasValue(unitNumber)) {\r\n const options = {\r\n layers:[\r\n LocationType.STAKE\r\n ],\r\n limit:1\r\n };\r\n MapsService.configure(config);\r\n const data = await MapsService.identifyLocations({\r\n coordinates:{\r\n lat:localCoordinates.latitude,\r\n lng:localCoordinates.longitude\r\n },\r\n nearest:1\r\n },\r\n options\r\n );\r\n if (!Array.isArray(data)) {\r\n return null;\r\n }\r\n unitNumber = data[0].id;\r\n storage.setItem(key, unitNumber);\r\n }\r\n return unitNumber;\r\n }\r\n\r\n const resetStorage = () => {\r\n storage.removeItem(stakeKey);\r\n storage.removeItem(programKey);\r\n }\r\n\r\n const loadOnlineProgram = async (unitNumber) => {\r\n const url = `api/programs/online?unitNumber=${unitNumber}`;\r\n const program = await sessionBackedLoad({url, programKey});\r\n return program;\r\n }\r\n\r\n\r\n return {\r\n loadLocationStakeUnitNumber,\r\n resetStorage,\r\n loadOnlineProgram\r\n }\r\n}\r\n\r\nexport default userStakeService;","import fetchWrapper from \"../../../../utils/fetchWrapper\";\r\nimport {processProgramEventDates} from \"../../institutes/program-events/events-page-service\";\r\n\r\nconst eventsPageService = () => {\r\n const pageLoad = async ({hubId}) => {\r\n const url = `api/hubs/${hubId}/eventsAndAnnouncements`;\r\n const data = await fetchWrapper({url});\r\n const programs = Array.isArray(data?.programs) ?\r\n data.programs.map(processProgramEventDates) : [];\r\n return {...data, programs };\r\n }\r\n return {\r\n pageLoad\r\n }\r\n}\r\n\r\n\r\nexport default eventsPageService;","import React from \"react\";\r\n\r\nimport * as styleConstants from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nconst BarColor = styled.div`\r\n ${props => {\r\n if (props.color !== \"\") {\r\n const backgroundColor = styleConstants[props.color];\r\n return `\r\n background: ${backgroundColor} linear-gradient(90deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 100%);\r\n height: ${styleConstants.spacing16};\r\n `;\r\n } else {\r\n return `display: none`;\r\n }\r\n}}\r\n`;\r\n\r\nconst GradiantTopBar = ({\r\n color,\r\n}) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default GradiantTopBar;","import { useCallback, useState, useContext, useEffect } from \"react\";\r\n\r\nimport { differenceInYears, parse } from 'date-fns';\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nimport determineLanguage from \"../../../utils/cookie-language-helper\";\r\nimport { twentyFourToTwelve } from \"../../../utils/date-utils\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\n// eslint-disable-next-line max-len\r\nimport signedOnUserContext from \"../../global-layout/master-layout/signed-on-user-context\";\r\nimport signupPageContext from \"../../pages/signup/signup-page-context\";\r\nimport studentService from \"../student-service\";\r\n\r\nconst defaultService = studentService();\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"over31AgeNotice\",\r\n \"under18AgeNotice\",\r\n ]\r\n },\r\n];\r\n\r\nconst useSignup = ({ service = defaultService }) => {\r\n const { managedStrings } = useTranslation(stringGroups);\r\n const navigate = useNavigate();\r\n const {user} = useContext(signedOnUserContext);\r\n const language = determineLanguage(user,true);\r\n const [signup, setSignup] = useState({});\r\n const [message, setMessage] = useState('');\r\n const {\r\n status,\r\n setSavingStatus: loading,\r\n setErrorStatus: error,\r\n setResetStatus: clearStatus,\r\n } = useStatus();\r\n const {classId, isOnline = false, startTime} = useContext(signupPageContext) || {};\r\n\r\n useEffect(() => {\r\n if (isOnline) {\r\n navigate(\"/\");//online shouldn't ever be allowed here\r\n }\r\n },[isOnline,navigate])\r\n\r\n useEffect(() => {\r\n setSignup(oldValue => ({...oldValue,classTimeDisplay: twentyFourToTwelve(startTime)\r\n }))\r\n },[startTime])\r\n\r\n\r\n const onChange = useCallback((event) => {\r\n setSignup(oldValue => {\r\n const newValue = {\r\n ...oldValue,\r\n };\r\n newValue[event.target.name] = event.target.value;\r\n return newValue;\r\n });\r\n }, []);\r\n\r\n const onCheckboxChange = useCallback((event) => {\r\n setSignup(oldValue => {\r\n const newValue = {\r\n ...oldValue,\r\n };\r\n newValue[event.target.name] = event.target.checked;\r\n return newValue;\r\n });\r\n }, []);\r\n\r\n const onSubmit = useCallback(async () => {\r\n const dobDate = parse(signup.dateOfBirth, 'yyyy-MM-dd', new Date());\r\n const ageInYears = differenceInYears(new Date(), dobDate);\r\n if (ageInYears < 18) {\r\n setMessage(managedStrings.under18AgeNotice);\r\n return;\r\n } else if (ageInYears > 35) {\r\n setMessage(managedStrings.over31AgeNotice);\r\n return;\r\n }\r\n try {\r\n loading();\r\n await service.signup(classId,signup, language);\r\n clearStatus();\r\n window.scrollTo(0, 0);\r\n navigate(`/signup/${classId}/success`);\r\n\r\n } catch (e) {\r\n error(e);\r\n }\r\n }, [\r\n signup,\r\n managedStrings.under18AgeNotice,\r\n managedStrings.over31AgeNotice,\r\n loading,\r\n service,\r\n classId,\r\n language,\r\n clearStatus,\r\n navigate,\r\n error]);\r\n\r\n const onCancel = useCallback(() => {\r\n navigate(`/signup/${classId}`);\r\n },[classId,navigate])\r\n\r\n return {\r\n message,\r\n signup,\r\n onChange,\r\n onCheckboxChange,\r\n onSubmit,\r\n onCancel,\r\n status\r\n }\r\n};\r\n\r\nexport default useSignup;","import React, {useMemo, useContext} from \"react\";\r\n\r\nimport { Warn } from \"@churchofjesuschrist/eden-alert\";\r\nimport {\r\n Ghost,\r\n Primary\r\n} from \"@churchofjesuschrist/eden-buttons\";\r\nimport {\r\n Checkbox,\r\n DateInput,\r\n FormField,\r\n Input,\r\n Label,\r\n Form\r\n} from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Grid, Item } from \"@churchofjesuschrist/eden-grid\";\r\nimport { H2 } from \"@churchofjesuschrist/eden-headings\";\r\nimport { LoadingSpinner } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport {\r\n fontSize32,\r\n fontWeightLight,\r\n spacing16,\r\n spacing64,\r\n spacing8,\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { Link } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useTranslation from \"../../../../utils/use-translations\";\r\nimport LinkButton from \"../../../generic/link/link\";\r\nimport masterTranslationsContext\r\n from \"../../../global-layout/master-layout/master-translations-context\";\r\nimport signupPageContext from \"../../../pages/signup/signup-page-context\";\r\nimport usePageStandardFunctionality from \"../../../pages/use-page-standard-functionality\";\r\nimport useSignup from \"../use-signup\";\r\n\r\n\r\nconst QuickForm = styled(Row)`\r\n margin: ${spacing64};\r\n`;\r\nconst QuickFormField = styled(FormField)`\r\n margin: 0 auto ${spacing16};\r\n width: 100%;\r\n`\r\nconst QuickTitle = styled(H2)`\r\n font-size: ${fontSize32};\r\n font-weight: ${fontWeightLight};\r\n text-align: center;\r\n display: block;\r\n width: 100%;\r\n`;\r\nconst QuickCheckbox = styled(Checkbox)`\r\n margin-right: ${spacing8};\r\n`;\r\nconst QuickButtonRow = styled(Grid)`\r\n width: 100%;\r\n`;\r\nconst QuickGhostButton = styled(Ghost)`\r\n margin: 0 auto;\r\n`;\r\nconst QuickPrimaryButton = styled(Primary)`\r\n margin: 0 auto;\r\n`;\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"shared\",\r\n keys: [\r\n \"email\",\r\n \"contactUs\"\r\n ]\r\n },\r\n {\r\n name: \"students\",\r\n keys: [\r\n \"quickSignup\",\r\n \"firstName\",\r\n \"lastName\",\r\n \"dateOfBirth\",\r\n \"iAgree\",\r\n \"termsAndConditions\",\r\n \"returnToLogin\",\r\n \"completeSignup\"\r\n ]\r\n }\r\n]\r\n\r\nconst StudentQuickSignup = ({ service }) => {\r\n //language is the code 3\r\n const {language} = useContext(masterTranslationsContext);\r\n const agreementUrl = useMemo(() => {\r\n return `/api/agreement?language=${language}`;\r\n }, [language]);\r\n const { programId } = useContext(signupPageContext);\r\n const { managedStrings } = useTranslation(stringGroups);\r\n usePageStandardFunctionality({\r\n pageName:\"quick-register\"\r\n });\r\n const {\r\n message,\r\n status,\r\n signup,\r\n onChange,\r\n onCheckboxChange,\r\n onSubmit,\r\n onCancel\r\n } = useSignup({ service });\r\n return (\r\n {}}\r\n onSubmit={(event) => {\r\n event.preventDefault();\r\n\r\n onSubmit();\r\n\r\n }}\r\n >\r\n \r\n {managedStrings.quickSignup}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {managedStrings.iAgree} \r\n \r\n {managedStrings.termsAndConditions}\r\n \r\n \r\n \r\n \r\n {message && (\r\n \r\n {message}\r\n
\r\n {managedStrings.contactUs}\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n {managedStrings.returnToLogin}\r\n \r\n \r\n \r\n \r\n {managedStrings.completeSignup} \r\n {status?.saving && }\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default StudentQuickSignup;","import { sessionBackedLoad } from \"../../utils/cached-data-load\";\r\n\r\nconst newsRoomService = () => {\r\n const loadNewsRoom = async () => {\r\n return await sessionBackedLoad({\r\n url:\"/api/newsroom\",\r\n key:\"news_room\"\r\n })\r\n }\r\n\r\n return {\r\n loadNewsRoom\r\n }\r\n}\r\n\r\nexport default newsRoomService;","import {useState, useEffect, useCallback, useContext, useMemo} from \"react\";\r\n\r\nimport useStatus from \"../../generic/hooks/use-status/use-status\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport newsRoomService from \"../news-room-service\";\r\n\r\nconst defaultService = newsRoomService({});\r\n\r\n\r\nconst useNewsRoom = ({service = defaultService, widget = false}) => {\r\n const {\r\n status,\r\n setSavingStatus:loading,\r\n setErrorStatus:error,\r\n setResetStatus:clearStatus,\r\n } = useStatus({saving:true});\r\n const [data, setData] = useState();\r\n const [showingMore, setShowingMore] = useState(false);\r\n\r\n const loadMore = useCallback(() => setShowingMore(true),[]);\r\n\r\n const load = useCallback(async () => {\r\n try {\r\n loading();\r\n const data = await service.loadNewsRoom();\r\n setData(data);\r\n clearStatus();\r\n } catch (e) {\r\n error(e)\r\n }\r\n\r\n },[clearStatus, error, loading, service]);\r\n useEffect(() => {\r\n load()\r\n },[load]);\r\n\r\n const {isMobile} = useContext(menuContext);\r\n const [selectedArticle, setSelectedArticle] = useState();\r\n\r\n const setSelectedArticleCallback = useCallback((article) => {\r\n setSelectedArticle(article);\r\n if (!widget) {\r\n window.scrollTo(0,0)\r\n }\r\n },[widget])\r\n\r\n const startTakeCount = widget ? 2 : 5;\r\n //max take count is never bothered with when it is in widget mode\r\n const maxTakeCount = 10;\r\n\r\n const combined = useMemo(() => {\r\n let arr = [];\r\n if (Array.isArray(data?.articles)) {\r\n arr = [...(data?.articles || [])];\r\n }\r\n if (Array.isArray(data?.events)) {\r\n arr = [...arr, ...(data?.events || [])];\r\n }\r\n return arr;\r\n },[data?.articles, data?.events])\r\n const articles = useMemo(() => {\r\n const takeCount = showingMore ? maxTakeCount : startTakeCount;\r\n if (combined.length <= takeCount) {\r\n return combined;\r\n }\r\n return combined.slice(0,takeCount);\r\n\r\n },[combined, showingMore, startTakeCount]);\r\n\r\n const hasMore = useMemo(() => {\r\n if (!Array.isArray(combined)) {\r\n return false;\r\n }\r\n return showingMore ? combined.length > maxTakeCount : combined.length > startTakeCount;\r\n },[combined, showingMore, startTakeCount])\r\n\r\n useEffect(() => {\r\n if (articles?.length && !isMobile && !showingMore) {\r\n setSelectedArticleCallback(articles[0])\r\n }\r\n }, [articles, isMobile, setSelectedArticleCallback, showingMore]);\r\n\r\n return {\r\n status,\r\n articles,\r\n selectedArticle,\r\n setSelectedArticle: setSelectedArticleCallback,\r\n loadMore,\r\n showingMore,//UI needs this to know if we show the link to newsroom, or if we show the show more when not in widget mode\r\n hasMore,\r\n }\r\n}\r\nexport default useNewsRoom;","import stringHasValue from \"./string-has-value\"\r\n\r\nconst trimStringToLength = (string, length, elipses = \"...\") => {\r\n if (!stringHasValue(string) || string.length <= length) {\r\n return string;\r\n }\r\n return `${string.substring(0,length)}${elipses}`;\r\n}\r\n\r\nexport default trimStringToLength;","import { Image } from \"@churchofjesuschrist/eden-image\";\r\nimport {\r\n spacing16\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\n//yes, I mean to in this case as we intend to have the text wrap around this image to make it\r\n//prty if we can.\r\nconst desktopStyles = `margin-right:${spacing16}; width:285px; float:left;`\r\nconst mobileStyles = `margin-bottom:${spacing16}; display:block; width:380px;`;\r\nconst ArticleImage = styled(Image)`\r\n${({ isMobile }) => isMobile ? mobileStyles : desktopStyles}\r\n`;\r\n\r\nexport default ArticleImage;\r\n","import React, {useMemo, useContext} from \"react\";\r\n\r\nimport {H1, H3} from \"@churchofjesuschrist/eden-headings\";\r\nimport { Stack } from \"@churchofjesuschrist/eden-stack\";\r\nimport { grey60,\r\n yellow30,\r\n serif,\r\n spacing4 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Divider} from \"@churchofjesuschrist/eden-tile-parts\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport trimStringToLength from \"../../../utils/trim-string-to-length\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ArticleImage from \"../../generic/article-image/article-image\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\n\r\nconst Container = styled.div`\r\ndisplay:flex;\r\n`\r\n\r\nconst Title = styled(H1)`\r\nmargin-bottom:${spacing4};\r\nfont-family:${serif};\r\n`;\r\n\r\nconst EventDivider = styled(Divider)`\r\n border-inline-start: 1px solid ${grey60};\r\n`;\r\n\r\n\r\nconst LeftBlock = styled.div`\r\n${({isMobile}) => isMobile ? \"\" : \"max-width:750px;\"};\r\n`;\r\n\r\nconst ArticleContents = styled.div`\r\nmax-height:480px;\r\noverflow-y:hidden;\r\n`;\r\n\r\nconst TypeHeader = styled(H3)`\r\ncolor:${yellow30}\r\n`\r\n\r\nconst stringGroups = [\r\n {name:\"shared\", keys:[\"news\",\"viewFullNews\"]}\r\n];\r\n\r\n\r\nconst defaultObj = {};\r\nconst defaultArray = [];\r\nconst EventArticle = ({\r\n article = defaultObj\r\n}) => {\r\n const {\r\n description = \"\",\r\n title = \"\",\r\n pretitle = \"\",\r\n meta,\r\n link = defaultObj,\r\n image = defaultObj\r\n } = article;\r\n const {renditions = defaultArray} = image;\r\n const {isMobile} = useContext(menuContext);\r\n\r\n const selectedRendition = useMemo(() => {\r\n if (!Array.isArray(renditions) || renditions.length === 0) {\r\n return null;\r\n }\r\n const target = 285;//our demo data seems to have this size (285x285) and that is our preferred if we have it.\r\n if (!isMobile) {\r\n const squareOrTall = renditions.filter(r => r.height >= r.width);\r\n const preferred = squareOrTall.find(r => r.width === target);\r\n if (preferred) {\r\n return preferred;\r\n };\r\n const sorted = squareOrTall.toSorted((a,b) => a.height - b.height);\r\n return sorted[0];\r\n }\r\n const wide = renditions.filter(r => r.width >= r.height);\r\n const preferred = wide.find(r => r.height === target);\r\n if (preferred) {\r\n return preferred;\r\n };\r\n //pick our widest by doing b-a on the sort\r\n const sorted = wide.toSorted((a,b) => b.width - a.width );\r\n return sorted[0];\r\n\r\n\r\n },[renditions, isMobile]);\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {linkUrl} = link;//note, url tends to be \"//newsroom.church...\" with no http before it.\r\n\r\n return (\r\n \r\n {selectedRendition && !isMobile && (\r\n )}\r\n \r\n \r\n {managedStrings.news}\r\n {title}\r\n {selectedRendition && isMobile && (\r\n )}\r\n
\r\n {meta}\r\n {stringHasValue(meta) && stringHasValue(pretitle) && }\r\n {pretitle}\r\n
\r\n
\r\n\r\n \r\n\r\n {trimStringToLength(description,1100)}\r\n {stringHasValue(linkUrl) && }\r\n \r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default EventArticle;","import React from \"react\";\r\n\r\nimport {A11y} from \"@churchofjesuschrist/eden-buttons\";\r\nimport { H4,H6 } from \"@churchofjesuschrist/eden-headings\";\r\nimport { ChevronRightLarge } from \"@churchofjesuschrist/eden-icons\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport {\r\n fontSize14,\r\n spacing16,\r\n spacing48,\r\n white,\r\n yellow15\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {\r\n Divider\r\n} from \"@churchofjesuschrist/eden-tile-parts\";\r\nimport styled from \"styled-components\";\r\n\r\nimport stringHasValue from \"../../../utils/string-has-value\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\n\r\nconst stringGroups = [\r\n {name:\"shared\", keys:[\"news\"]}\r\n];\r\n\r\nconst ActiveChevron = styled(ChevronRightLarge)`\r\n height: ${spacing48}!important;\r\n width: ${spacing48}!important;\r\n margin-right:${spacing16};\r\n`;\r\n\r\n\r\nconst NewsTitle = styled(H4)`\r\n color: ${white};\r\n margin-bottom:${spacing16};\r\n`;\r\n\r\nconst NewsTile = styled.div`\r\n flex:1;\r\n`;\r\n\r\nconst NewsInformation = styled(Row)`\r\n color: ${white};\r\n font-size: ${fontSize14};\r\n`;\r\n\r\nconst NewsDivider = styled(Divider)`\r\n border-inline-start: 1px solid ${white};\r\n`;\r\n\r\nconst NewsTypeLabel = styled(H6)`\r\ncolor:${yellow15}`;\r\n\r\nconst NewsA11y = styled(A11y)`\r\nwidth:100%;\r\n`\r\nconst NewsRow = styled.div`\r\n color: ${white};\r\n padding: ${spacing16} ${spacing16} ${spacing16} 0;\r\n display:flex;\r\n width: 100%;\r\n ${(props) => props.isActive && `background: linear-gradient(270deg, rgba(125, 227, 244, 0.25) 0%, rgba(125, 227, 244, 0) 100%);`}\r\n`;\r\nconst defaultObj = {};\r\nconst EventSelection = ({\r\n article = defaultObj,\r\n selectedArticle,\r\n setSelectedArticle\r\n}) => {\r\n const {\r\n meta = \"\",\r\n title = \"\",\r\n pretitle,\r\n } = article;\r\n const isActive = (selectedArticle === article);\r\n const {managedStrings} = useTranslation(stringGroups);\r\n return (\r\n setSelectedArticle(article)} data-id={`news-room-selection-${article.id}`}>\r\n \r\n \r\n {managedStrings.news}\r\n \r\n {title}\r\n \r\n \r\n {meta}\r\n {stringHasValue(meta) && stringHasValue(pretitle) && }\r\n {pretitle}\r\n \r\n \r\n {(isActive) &&\r\n \r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default EventSelection;","import React, {useContext, useCallback, useEffect} from \"react\";\r\n\r\nimport {A11y} from \"@churchofjesuschrist/eden-buttons\";\r\nimport { H2 } from \"@churchofjesuschrist/eden-headings\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport Split from \"@churchofjesuschrist/eden-split\";\r\nimport {\r\n blue35,\r\n blue40,\r\n fontWeightLight,\r\n spacing16,\r\n spacing32,\r\n white\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport { ToolModal } from \"@churchofjesuschrist/eden-tool-modal\";\r\nimport {NavLink} from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\n\r\n\r\nimport useNewsRoom from \"./use-news-room\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentLoadingStatus from \"../../generic/content-loading-status/content-loading-status\";\r\nimport menuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport NewsRoomArticle from \"../news-room-article/news-room-article\";\r\nimport NewsRoomSelection from \"../news-room-selection/news-room-selection\";\r\n\r\n\r\nconst ArticlesRow = styled(Row)`\r\n display: block;\r\n width: 100%;\r\n`;\r\n\r\nconst ArticlesHeader = styled(H2)`\r\n font-size: 1.5rem;\r\n font-weight: ${fontWeightLight};\r\n border-bottom: 1px solid ${blue35};\r\n padding-bottom: ${spacing16};\r\n`;\r\n\r\nconst Selection = styled.div`\r\n background: ${blue40};\r\n color: ${white};\r\n padding: ${spacing32} 0 ${spacing16} ${spacing16};\r\n`;\r\n\r\nconst Article = styled.div`\r\n padding:${spacing16};\r\n`;\r\n\r\nconst ModalContents = styled.div`\r\npadding:${spacing16};\r\n`;\r\n\r\nconst StyledNavLink = styled(NavLink)`\r\ndisplay:block;\r\ntext-decoration:none;\r\nmargin-top:${spacing16};\r\ncolor:${white};\r\n&:hover{\r\n text-decoration:none;\r\n color:${white};\r\n}\r\n`;\r\nconst StyledA11y = styled(A11y)`\r\ncolor:${white};\r\n&:hover{\r\n color:${white};\r\n}\r\n`;\r\nconst More = styled.div`\r\ndisplay:flex;\r\nflex-direction:row-reverse;\r\nmargin-right:${spacing16};\r\n`\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"churchNewsroom\",\r\n \"viewAll\",\r\n \"viewMore\",\r\n \"goToNewsRoom\"\r\n ]\r\n }\r\n]\r\n\r\nconst skeletonItem = {\r\n title:\"...\",\r\n pretitle:\"...\",\r\n meta:\"...\",\r\n image:{\r\n renditions:[\r\n {\r\n distributionUrl:\"\",\r\n width:285,\r\n height:285\r\n }\r\n ]\r\n }\r\n}\r\n//map keys on title so we need different titles to avoid a react warning thingy\r\nconst skeletonItems = [skeletonItem,\r\n {...skeletonItem, title:\"....\"},\r\n {...skeletonItem, title:\".....\"}]\r\n\r\nconst NewsRoomLayout = ({\r\n service,\r\n widget = true,//when false we have some updated behaviors to load more if we have more etc\r\n}) => {\r\n const {\r\n articles:dataArticles,\r\n status,\r\n selectedArticle: selectedData,//we don't want our skeleton to be selected\r\n //because it gets really odd with mobile.\r\n setSelectedArticle,\r\n loadMore,\r\n hasMore,\r\n showingMore\r\n } = useNewsRoom({service, widget});\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n const articles = (status.saving || status.error) ? skeletonItems : dataArticles;\r\n\r\n const selectedArticle = articles === skeletonItems ? undefined : selectedData;\r\n\r\n let moreLink = null;\r\n if (widget) {\r\n moreLink = (\r\n {managedStrings.viewAll}\r\n );\r\n } else if (hasMore) {\r\n if (showingMore) {\r\n moreLink = {managedStrings.goToNewsRoom};\r\n } else {\r\n moreLink = {managedStrings.viewMore};\r\n }\r\n }\r\n\r\n const layoutLeft = useCallback(() => (\r\n {managedStrings.churchNewsroom}\r\n {articles?.map((article) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n {moreLink}\r\n \r\n ),\r\n [articles, managedStrings.churchNewsroom, moreLink, selectedArticle, setSelectedArticle])\r\n\r\n const { isMobile } = useContext(menuContext);\r\n\r\n useEffect(() => {\r\n if (isMobile) {\r\n setSelectedArticle(undefined);\r\n }\r\n }, [isMobile, setSelectedArticle]);\r\n\r\n return (\r\n \r\n {isMobile ? (<>\r\n {layoutLeft()}\r\n setSelectedArticle()}>\r\n \r\n wee\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {layoutLeft()}\r\n
\r\n \r\n
\r\n
)}\r\n\r\n
\r\n
);\r\n}\r\n\r\nexport default NewsRoomLayout;","import React from \"react\";\r\n\r\nconst ScheduleTimezonesContext = React.createContext([]);\r\n\r\nexport default ScheduleTimezonesContext;","import userStakeService from \"./user-stake-service\";\r\nimport { convertDatesOnObject, getISODateStringWithTimezone } from \"../../utils/date-utils\";\r\nimport fetchWrapper, { postWrapper } from \"../../utils/fetchWrapper\";\r\n\r\nexport const transformClass = (classData) => {\r\n if (!classData) {\r\n return null;\r\n }\r\n return convertDatesOnObject(classData);\r\n}\r\n\r\nconst classService = () => {\r\n const areaService = userStakeService();\r\n const loadClass = async ({ classId }) => {\r\n const result = await fetchWrapper({\r\n url: `api/classes/${classId}`\r\n });\r\n return transformClass(result);\r\n }\r\n\r\n const searchClasses = async (data, geoCoords, config, loadUnitNumber) => {\r\n let unitNumber = \"\";\r\n if (loadUnitNumber) {\r\n try {\r\n unitNumber = await areaService.loadLocationStakeUnitNumber(geoCoords, config);\r\n } catch (e) {\r\n //do nothing but this way the page won't completely puke\r\n }\r\n }\r\n const results = await postWrapper({\r\n url: \"api/classes/search\",\r\n data:{\r\n ...data,\r\n unitNumber\r\n },\r\n });\r\n\r\n return results.map(transformClass);\r\n }\r\n\r\n const getBuildingClasses = async ({ buildingIds, todayDate }) => {\r\n const results = await fetchWrapper({\r\n url: `api/classes/buildings?buildingIds=${buildingIds}&todayDate=${todayDate}`\r\n });\r\n return results?.map(transformClass);\r\n }\r\n const searchClassById = async ({ classId }) => {\r\n const result = await fetchWrapper({\r\n url: `api/classes/search/${classId}`\r\n });\r\n return transformClass(result);\r\n }\r\n\r\n const loadProgramClasses = async (programId, todayDate = getISODateStringWithTimezone()) => {\r\n const url = `api/programs/${programId}/classes?todayDate=${todayDate}`;\r\n const results = await fetchWrapper({url});\r\n return results?.map(transformClass);\r\n\r\n };\r\n const loadHubClasses = async (hubId, todayDate = getISODateStringWithTimezone()) => {\r\n const url = `api/hubs/${hubId}/classes?todayDate=${todayDate}`;\r\n const results = await fetchWrapper({url});\r\n return results?.map(transformClass);\r\n }\r\n\r\n return {\r\n loadClass,\r\n searchClasses,\r\n searchClassById,\r\n loadProgramClasses,\r\n loadHubClasses,\r\n getBuildingClasses\r\n }\r\n}\r\n\r\nexport default classService;","import {useState, useEffect, useCallback, useMemo, useContext} from \"react\";\r\n\r\nimport useTranslation from \"../../../utils/use-translations\";\r\n// eslint-disable-next-line max-len\r\nimport masterTranslationsContext from \"../../global-layout/master-layout/master-translations-context\";\r\nimport MenuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport useStatus from \"../hooks/use-status/use-status\";\r\n\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[ \"allInstitutes\", \"allTimezones\"]\r\n }\r\n]\r\n\r\nconst nameSortFunc = (a,b) => {\r\n return a.name > b.name ? -1 : a.name < b.name ? 1 : 0;\r\n}\r\n\r\nconst defaultAsync = async () => {};\r\nconst useWeekScheduleWithFilters = (dataCallback = defaultAsync,\r\n timezoneCallback = defaultAsync) => {\r\n const {language2} = useContext(masterTranslationsContext);\r\n const {isMobile = false} = useContext(MenuContext);\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n const [timeZoneId, setTimeZoneId] = useState(-1);//-1 means all timeZones\r\n const [programId, setProgramId] = useState(-1);//-1 means all programs when we are a hub\r\n\r\n const {\r\n status,\r\n setSavingStatus: loading,\r\n setErrorStatus: error,\r\n setResetStatus: done\r\n\r\n } = useStatus({saving:true})\r\n const [widgetData, setWidgetData] = useState();\r\n const [widgetTimezones, setWidgetTimezones] = useState([]);\r\n\r\n useEffect(() => {\r\n const load = async () => {\r\n try {\r\n loading();\r\n const programData = await dataCallback();\r\n\r\n const tzData = await await timezoneCallback(programData?.timeZoneIds, language2);\r\n setWidgetTimezones(tzData);\r\n\r\n\r\n setWidgetData(programData);\r\n done();\r\n } catch (e) {\r\n error(e);\r\n }\r\n\r\n };\r\n load();\r\n },[done, error, language2, loading, dataCallback, timezoneCallback]);\r\n\r\n const calendarEntries = useMemo(() => {\r\n if (!widgetData) { return [];}\r\n const {timeZoneIds = []} = widgetData;\r\n const data = widgetData.programs ? widgetData.programs.reduce((collection,pgm) => {\r\n return [...collection, ...pgm.data]\r\n },[]) : widgetData.data;\r\n\r\n return data.filter((entry) => {\r\n //if(entry.text.indexOf(\"099R\")>=0 && entry.text.indexOf(\"61\")>0 && entry.text.indexOf(\"YSA FHE\")>0){ debugger;}\r\n const timeZonePasses = timeZoneId === -1 || timeZoneIds.length <= 0\r\n || entry.timeZoneId === timeZoneId;\r\n const programCount = widgetData?.programs?.length ?? 0\r\n //if we only have 1 or fewer programs in our widget data, we basically always pass program\r\n const programPasses = programId === -1 || programCount < 2\r\n || entry.programId === programId;\r\n\r\n return timeZonePasses && programPasses;\r\n });\r\n },[programId, timeZoneId, widgetData]);\r\n\r\n const programs = useMemo(() => {\r\n const mapped = widgetData?.programs?.map(p => {\r\n return {\r\n name:p.programName,\r\n id: p.programId\r\n }\r\n }).sort(nameSortFunc) ?? [];\r\n return [\r\n {\r\n id:-1,\r\n name:managedStrings.allInstitutes\r\n },\r\n ...mapped\r\n ]\r\n },[managedStrings.allInstitutes, widgetData?.programs]);\r\n\r\n const timeZones = useMemo(() => {\r\n if ((widgetTimezones?.length ?? 0) <= 0 ||\r\n (widgetData?.timeZoneIds?.length ?? 0) <= 0 ) {\r\n return [];\r\n }\r\n const mapped = widgetData?.timeZoneIds.map(tz => widgetTimezones.find(wtz => wtz.id === tz))\r\n .sort(nameSortFunc).filter(tz => tz !== undefined && tz !== null);\r\n return [{\r\n id:-1,\r\n name: managedStrings.allTimezones\r\n },...mapped];\r\n },[widgetData, managedStrings.allTimezones, widgetTimezones])\r\n\r\n\r\n const onProgramChange = useCallback((e) => {\r\n const newProgramId = parseInt(parseInt(e.target.value));\r\n /*if (newProgramId > 0) {\r\n setTimeZoneId(cur => {\r\n const targetProgram = widgetData.programs.find(p => p.programId === newProgramId);\r\n //if the target program has the timezone we have currently selected, we don't change timezone\r\n if (targetProgram.timeZoneIds.indexOf(cur) >= 0) {\r\n return cur;\r\n }\r\n //otherwise we reset to all timezones\r\n return -1;\r\n })\r\n }*/\r\n setProgramId(newProgramId);\r\n },[]);\r\n\r\n const onTimeZoneChange = useCallback((e) => {\r\n setTimeZoneId(parseInt(e.target.value));\r\n },[]);\r\n const minMaxHours = useMemo(() => {\r\n\r\n const noEarlierThan = 7;\r\n const noLaterThan = 22;\r\n\r\n if (!calendarEntries || calendarEntries.length <= 0) {\r\n return {\r\n startHour:noEarlierThan,\r\n endHour: noLaterThan\r\n }\r\n }\r\n let earlyIndex = 0;\r\n let earliest = calendarEntries[0];\r\n while (earliest && earliest.startHour < noEarlierThan && earlyIndex < calendarEntries.length) {\r\n earlyIndex++;\r\n const nextCandidate = calendarEntries[earlyIndex];\r\n if (nextCandidate) {\r\n earliest = nextCandidate;\r\n }\r\n }\r\n let startHour = earliest.startDate.getHours();\r\n\r\n if (startHour >= noLaterThan) {\r\n startHour = noLaterThan - 1;\r\n }\r\n let endHour = noLaterThan;\r\n //their calendar component can evaluate on useEffect listeners in an order\r\n //such that us dynamically changing both start and end at the same time makes it\r\n //so that they will see one execution path where start is after end, and throw.\r\n //I submitted a ticket. Hopefully the fix that so we can use a smart/dynamic end as well as the start\r\n /*let endHour = startHour + 1;\r\n\r\n //transform sorts them by their start hour\r\n const latest = calendarEntries[calendarEntries.length - 1];\r\n const minutes = latest.endDate.getMinutes();\r\n const adder = minutes > 0 ? 1 : 0;\r\n endHour = Math.min(noLaterThan, latest.endDate.getHours() + adder);\r\n //this shouldn't ever happen, but I saw it in our storybook and it crashed us.\r\n //so this is a safety check\r\n if (endHour <= startHour) {\r\n endHour = startHour + 1;\r\n }*/\r\n return {\r\n startHour,\r\n endHour\r\n };\r\n\r\n },[calendarEntries])\r\n\r\n const {startHour, endHour} = minMaxHours;\r\n\r\n return {\r\n timeZoneId,\r\n programId,\r\n status,\r\n clearStatus:done,\r\n calendarEntries,\r\n programs,\r\n timeZones,\r\n onProgramChange,\r\n onTimeZoneChange,\r\n startHour,\r\n endHour,\r\n isMobile\r\n }\r\n\r\n}\r\n\r\nexport default useWeekScheduleWithFilters;","import React, {useMemo, useCallback, useState, useContext, useEffect, useRef} from \"react\";\r\n\r\nimport 'devextreme/dist/css/dx.light.css';\r\nimport { compareAsc,isAfter, isBefore } from \"date-fns\";\r\nimport { loadMessages} from \"devextreme/localization\";\r\nimport Scheduler,\r\n{\r\n Editing,\r\n Resource\r\n} from \"devextreme-react/scheduler\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport masterTranslationsContext\r\n from \"../../global-layout/master-layout/master-translations-context\";\r\n\r\nconst defaultArray = [];\r\n\r\nconst Container = styled.div`\r\n .dx-scheduler-navigator {\r\n ${({showNavigation}) => !showNavigation ? \"display:none;\" : \"\"}\r\n }\r\n`;\r\n\r\nconst dblClickCanceler = (e) => {\r\n // eslint-disable-next-line no-param-reassign\r\n e.cancel = true;\r\n}\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"day\",\r\n \"week\",\r\n \"month\",\r\n \"today\",\r\n \"selectOne\"\r\n ]\r\n }\r\n]\r\n\r\n\r\nconst WeekSchedule = ({data = defaultArray,\r\n viewComponent,\r\n timeBlockComponent,\r\n colorFromData = false,\r\n startHour = 5,\r\n dayView = false,\r\n monthView = false,\r\n endHour = 24,\r\n height = \"auto\",\r\n showNavigation = true}) => {\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {language2} = useContext(masterTranslationsContext);\r\n\r\n const [stringsReady,setStringsReady] = useState(false);\r\n\r\n const ref = useRef();\r\n\r\n //their english strings dictionary can be seen here:\r\n //https://github.com/DevExpress/DevExtreme/blob/22_2/js/localization/messages/en.json\r\n //should we need to update or add new translations to the component\r\n useEffect(() => {\r\n const newDictionary = {\r\n [language2]:{\r\n \"dxScheduler-switcherDay\": managedStrings.day,\r\n \"dxScheduler-switcherWeek\": managedStrings.week,\r\n \"dxScheduler-switcherMonth\": managedStrings.month,\r\n \"dxCalendar-todayButtonText\": managedStrings.today,\r\n }\r\n };\r\n loadMessages(newDictionary);\r\n setStringsReady(managedStrings.day !== \"...\");\r\n },[managedStrings,language2])\r\n //if nothing is provided as the view component, we use the default from dev express by not setting the\r\n //appointmentToolTipComponent property\r\n const appointmentViewProp = viewComponent ? { appointmentTooltipComponent: viewComponent} : {};\r\n const timeBlockProp = timeBlockComponent ? {appointmentComponent: timeBlockComponent} : {}\r\n\r\n const views = useMemo(() => {\r\n if (!dayView && !monthView) { return [];}\r\n const v = dayView ? [\"day\",\"week\"] : [\"week\"];\r\n if (monthView) {\r\n v.push(\"month\");\r\n }\r\n return v;\r\n },[dayView, monthView]);\r\n\r\n const [currentView, setCurrentView] = useState(\"week\");\r\n const onViewChange = useCallback((v) => {\r\n setCurrentView(v);\r\n },[]);\r\n\r\n const useShowNavigation = useMemo(() => {\r\n return currentView === \"day\" ? data?.length > 0 : showNavigation;\r\n }, [currentView, showNavigation, data]);\r\n\r\n const sortedData = useMemo(() => {\r\n return data.sort((a,b) => compareAsc(a.startDate, b.startDate));\r\n },[data]);\r\n\r\n const min = useMemo(() => {\r\n return Array.isArray(sortedData) && sortedData.length > 0 ?\r\n sortedData[0].startDate : new Date();\r\n },[sortedData]);\r\n\r\n const max = useMemo(() => {\r\n return Array.isArray(sortedData) && sortedData.length > 0 ?\r\n sortedData[sortedData.length - 1].startDate : new Date();\r\n },[sortedData]);\r\n\r\n const currentDate = useMemo(() => {\r\n\r\n const today = new Date();\r\n if (isAfter(today,max)) {\r\n return max;\r\n }\r\n if (isBefore(today,min)) {\r\n return min;\r\n }\r\n return today;\r\n },[max, min]);\r\n //maxAppointmentsPerCell = {3}\r\n\r\n /*defaultCurrentDate={currentDate}\r\nnote: default current date results in it always centering on today's date\r\nand then not updating when we get actual data that would have us pick a different\r\ndefault.\r\n\r\ncurrentDate appears to work, but I suspect it is only by virtue of the fact that\r\nit isn't changing after we pass it in. So we give it a current date, it puts into it's state\r\nand then it's controls update it's internal state.\r\n*/\r\n /*note that our mobile adaptivity isn't customizable like we need and has a lame behavior for our application\r\nwe could do this:\r\nadaptivityEnabled={isMobile}\r\nif we get around to sorting it out as it could be a big improvement if we figure out how to fix what we don't like*/\r\n return stringsReady ? (
\r\n \r\n \r\n\r\n\r\n {colorFromData && }\r\n \r\n \r\n \r\n \r\n
) : (
)\r\n}\r\n\r\nexport default WeekSchedule;","import React, {useMemo} from \"react\";\r\n\r\n\r\nimport {Error} from \"@churchofjesuschrist/eden-alert\";\r\nimport { Card } from \"@churchofjesuschrist/eden-card\";\r\nimport {Select} from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { spacing16, spacing8 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Text3} from \"@churchofjesuschrist/eden-text\";\r\nimport styled from \"styled-components\";\r\n\r\nimport ScheduleTimezonesContext from \"./schedule-timezones-context\";\r\nimport useWeekScheduleWithFilters from \"./use-week-schedule-with-filters\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport WeekSchedule from \"../../dev-express/week-schedule/week-schedule\";\r\nimport LoadingSpinner from \"../loading-spinner/loading-spinner\";\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"allTimezonesInZone\",\r\n \"unableToLoadSchedule\"\r\n ]\r\n }\r\n];\r\nconst Loading = styled.div`\r\npadding:${spacing16};\r\n`;\r\nconst ScheduleHolder = styled.div`\r\nposition:relative;\r\n`;\r\n\r\nconst Container = styled.div`\r\nmax-width: 100vw;\r\n`\r\n\r\n\r\nconst Overlay = styled.div`\r\nbackdrop-filter: blur(2px);\r\nposition: absolute;\r\nz-index: 1;\r\nbackground-color:rgb(255,255,255,.5);\r\ntop: 0;\r\nleft: 0;\r\nright: 0;\r\nbottom: 0;\r\n${({dismissable}) => dismissable ? \"cursor:pointer;\" : \"\"}\r\n`;\r\nconst Dialogue = styled.div`\r\nposition:absolute;\r\nposition: absolute;\r\n z-index: 2;\r\n margin: 0;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate3d(-50%, -50%, 0);\r\n\r\n`\r\n\r\nconst FiltersHolder = styled.div`\r\npadding:${({isMobile}) => isMobile ? 0 : `0 0 ${spacing16} ${spacing8}`};\r\ndisplay:${({isMobile}) => isMobile ? \"block\" : \"flex\"};\r\n`;\r\nconst FilterSelect = styled(Select)`\r\n${({isMobile}) => !isMobile ? `max-width:300px; margin-right:${spacing16};` : \"display:block;\"}\r\n`;\r\n\r\nconst defaultComponent = () => <>;\r\nconst WeekScheduleWithFilters = ({\r\n viewComponent = defaultComponent,\r\n blockComponent = defaultComponent,\r\n timezoneCallback,\r\n dataCallback,\r\n dayView = false,\r\n monthView = false,\r\n height = \"auto\",\r\n showNavigation = true\r\n}) => {\r\n const {\r\n timeZoneId,\r\n programId,\r\n status = {},\r\n clearStatus,\r\n calendarEntries,\r\n programs,\r\n timeZones,\r\n onProgramChange,\r\n onTimeZoneChange,\r\n startHour,\r\n endHour,\r\n isMobile\r\n } = useWeekScheduleWithFilters(dataCallback, timezoneCallback );\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n\r\n\r\n const timeZoneNotice = useMemo(() => {\r\n const timeZoneName = timeZones.length === 2 ? timeZones[1].name : \"\";\r\n return managedStrings.allTimezonesInZone.replace(\"{0}\", timeZoneName);\r\n },[managedStrings.allTimezonesInZone, timeZones]);\r\n\r\n return (\r\n \r\n \r\n {/*remember that we populate this with an all timezones or all programs at all times\r\n hence we do a length > 2 */}\r\n {programs.length > 2 && (\r\n \r\n {programs.map((p) => )}\r\n )}\r\n\r\n {timeZones.length > 2 && (\r\n \r\n {timeZones.map((tz) => )}\r\n )}\r\n {timeZones.length === 2 && (*{timeZoneNotice}) }\r\n \r\n \r\n {status.saving && (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {status.error && (\r\n <>\r\n \r\n \r\n \r\n {managedStrings.unableToLoadSchedule}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default WeekScheduleWithFilters;\r\n","import React, {useState, useCallback, useEffect, useMemo, useContext, createContext} from \"react\";\r\n\r\nimport { useBlocker } from \"react-router-dom\";\r\n\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ConfirmModal from \"../modals/confirm-modal/confirm-modal\";\r\n\r\n\r\n\r\nconst useWarnIfDirty = () => {\r\n\r\n const [dirty, setDirty] = useState(false);\r\n\r\n const [promptOpen, setPromptOpen] = useState(false);\r\n\r\n const blocker = useBlocker(({ currentLocation, nextLocation }) => {\r\n return dirty &&\r\n currentLocation.pathname !== nextLocation.pathname\r\n })\r\n\r\n\r\n const isBlockerBlocked = useMemo(() => blocker?.state === \"blocked\",[blocker?.state])\r\n useEffect(() => {\r\n setPromptOpen(isBlockerBlocked);\r\n },[isBlockerBlocked])\r\n\r\n const [confirmAction, setConfirmAction] = useState({\r\n execute:undefined\r\n });\r\n\r\n const actOrPrompt = useCallback((action) => {\r\n if (typeof action === \"function\") {\r\n if (dirty) {\r\n setConfirmAction({execute:action});\r\n setPromptOpen(true);\r\n } else {\r\n action()\r\n }\r\n }\r\n },[dirty]);\r\n\r\n const onConfirm = useCallback(() => {\r\n if (isBlockerBlocked && typeof blocker?.proceed === \"function\") {\r\n blocker.proceed();\r\n }\r\n if (typeof confirmAction.execute === \"function\") {\r\n confirmAction.execute();\r\n }\r\n setPromptOpen(false);\r\n },[confirmAction, isBlockerBlocked, blocker]);\r\n\r\n const onCancel = useCallback(() => {\r\n if (isBlockerBlocked && typeof blocker?.reset === \"function\") {\r\n blocker.reset();\r\n }\r\n if (typeof confirmAction.execute === \"function\") {\r\n setConfirmAction({execute:undefined});//clear it out\r\n }\r\n setPromptOpen(false);\r\n },[blocker, confirmAction, isBlockerBlocked])\r\n\r\n\r\n //in this case, we put a smaller set of functionality into the context descendants will use\r\n const contextData = useMemo(() => ({\r\n actOrPrompt,\r\n setDirty,\r\n }),[actOrPrompt, setDirty]);\r\n\r\n return {\r\n promptOpen,\r\n onConfirm,\r\n onCancel,\r\n contextData\r\n }\r\n\r\n}\r\n\r\nconst stringGroups = [{\r\n name:\"shared\",\r\n keys:[\"unsavedChanges\",\"yes\",\"no\"]\r\n}]\r\n\r\nconst WarnIfDirtyContext = createContext();\r\nconst WarnIfDirty = ({children}) => {\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {\r\n promptOpen,\r\n onConfirm,\r\n onCancel,\r\n contextData\r\n } = useWarnIfDirty();\r\n\r\n return \r\n \r\n {children}\r\n \r\n}\r\n\r\nconst useWarnIfDirtyProvider = () => {\r\n const data = useContext(WarnIfDirtyContext);\r\n\r\n return data;\r\n}\r\n\r\n\r\nexport default WarnIfDirty;\r\nexport {useWarnIfDirtyProvider};","import React from \"react\";\r\n\r\nimport {white,\r\n spacing16,\r\n spacing8,\r\n boxShadowOverlaid} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport LoadingSpinner from \"../loading-spinner/loading-spinner\";\r\n\r\nconst Container = styled.div`\r\nposition:relative;\r\n`;\r\nconst ChildContainer = styled.div`\r\nopacity:${({faded}) => faded ? .5 : 1};\r\n`;\r\nconst StatusHolder = styled.div`\r\nposition:absolute;\r\ndisplay:flex;\r\njustify-content:space-around;\r\n`;\r\nconst StatusContents = styled.div`\r\npadding:${spacing16};\r\nmargin:${spacing8};\r\nbackground:${white};\r\nbox-shadow:${boxShadowOverlaid};\r\nz-index:10;\r\n`\r\n\r\nconst ContentLoadingStatus = ({status, errorContents, children}) => {\r\n\r\n const waiting = status?.saving === true || status?.error === true;\r\n\r\n return \r\n {waiting && \r\n \r\n {status.saving && }\r\n {status.error &&

{errorContents}

}\r\n
\r\n
}\r\n \r\n {children}\r\n \r\n
\r\n\r\n}\r\n\r\nexport default ContentLoadingStatus;","import fetchWrapper from \"../../../utils/fetchWrapper\";\r\n\r\nconst invitationService = () => {\r\n\r\n const loadInvitation = async (language) => {\r\n const url = `api/globalAlert?language=${language}`;\r\n return await fetchWrapper({url:url});\r\n }\r\n return {\r\n loadInvitation\r\n }\r\n}\r\n\r\nexport default invitationService;","import {useState,useContext, useEffect, useCallback, useMemo} from \"react\";\r\n\r\nimport invitationService from \"./invitation-service\";\r\nimport determineLanguage from \"../../../utils/cookie-language-helper\";\r\nimport signedOnUserContext from \"../../global-layout/master-layout/signed-on-user-context\";\r\nimport useStatus from \"../hooks/use-status/use-status\";\r\n\r\n\r\nconst defaultService = invitationService();\r\nconst useInvitationBanner = ({service = defaultService,\r\n flagService }) => {\r\n const { user } = useContext(signedOnUserContext);\r\n const language = determineLanguage(user, true);\r\n const [invitation, setInvitation] = useState();\r\n const {\r\n status,\r\n setSavingStatus:loading,\r\n setErrorStatus:error,\r\n setResetStatus:clearStatus,\r\n } = useStatus({saving:true});\r\n\r\n const load = useCallback(async () => {\r\n try {\r\n loading();\r\n let message = await service.loadInvitation(language);\r\n setInvitation(message);\r\n clearStatus();\r\n\r\n } catch (e) {\r\n error(e)\r\n }\r\n },[loading, service, language, clearStatus, error])\r\n useEffect(() => {\r\n load();\r\n\r\n },[load]);\r\n\r\n\r\n const showInvitation = useMemo(() => !status.error &&\r\n !status.loading && invitation,\r\n [invitation, status.error, status.loading]);\r\n return {\r\n showInvitation,\r\n invitation\r\n }\r\n}\r\n\r\nexport default useInvitationBanner;","import React from \"react\";\r\n\r\nimport { Info } from \"@churchofjesuschrist/eden-banner\";\r\nimport { Secondary } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { useMediaQuery } from \"@churchofjesuschrist/eden-media-query\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useInvitationBanner from \"./use-invitation-banner\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\n\r\nconst stringGroups = [\r\n {\r\n name:\"shared\",\r\n keys:[\r\n \"clickHere\"\r\n ]\r\n }\r\n]\r\nconst EscapeWidthHolder = styled.div`\r\nheight:75px;\r\n`\r\nconst EscapeWidth = styled.div`\r\nposition:absolute;\r\nleft:0;\r\nright:0;\r\n`\r\nconst defaultFunc = () => {};\r\nconst BannerFullWidth = ({children}) => {\r\n const [match] = useMediaQuery(defaultFunc, \"(min-width: 1599px)\");\r\n return !match ? (children) : (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\n\r\nconst InvitationBanner = ({service,\r\n flagService}) => {\r\n\r\n const {managedStrings} = useTranslation(stringGroups);\r\n const {showInvitation,\r\n invitation } = useInvitationBanner({ service, flagService });\r\n\r\n if (showInvitation) {\r\n return (\r\n \r\n \r\n {managedStrings.clickHere}\r\n ) : null}\r\n />\r\n \r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport {BannerFullWidth}\r\nexport default InvitationBanner;","import React, { useCallback, useState } from \"react\";\r\n\r\nimport { A11y } from \"@churchofjesuschrist/eden-buttons\";\r\nimport { Input, InputGroup } from \"@churchofjesuschrist/eden-form-parts\";\r\nimport { Search } from \"@churchofjesuschrist/eden-icons\";\r\nimport {\r\n textColorSecondary,\r\n} from \"@churchofjesuschrist/eden-style-constants\";\r\nimport styled from \"styled-components\";\r\n\r\nimport useTranslation from \"../../../utils/use-translations\";\r\n\r\nconst Holder = styled.div`\r\n display: flex;\r\n`;\r\nconst stringGroups = [{ name: \"shared\", keys: [\"search\"] }];\r\n\r\nconst FilterTextInput = ({\r\n onChange,\r\n placeholder,\r\n ...others\r\n}) => {\r\n const [text, setText] = useState(others.value || \"\");\r\n const changeHandler = useCallback(\r\n (e) => {\r\n setText(e.target.value);\r\n onChange(e.target.value);\r\n },\r\n [onChange]\r\n );\r\n const { managedStrings: useStrings } = useTranslation(stringGroups);\r\n const usePlaceholder = placeholder || useStrings.search;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FilterTextInput;\r\n","import { convertDatesOnObject } from \"../../utils/date-utils\";\r\nimport fetchWrapper, { postWrapper, putWrapper,\r\n deleteWrapper, fetchAsBlob } from \"../../utils/fetchWrapper\";\r\n\r\nconst URL_PROFILE_STUDENT = 'api/profile/student';\r\n\r\nconst studentService = () => {\r\n const signup = async (classId, data, language) => {\r\n //language2 should be the two character language code the site is using currently\r\n const url = `api/classes/${classId}/quickregister?language=${language}`;\r\n const result = await postWrapper({url,data});\r\n return result;\r\n }\r\n\r\n const enrollInClass = async (classId, data, language) => {\r\n const url = `api/student/classes/${classId}?language=${language}`;\r\n const result = await postWrapper({url,data});\r\n return result;\r\n }\r\n\r\n const getProfile = async () => {\r\n const data = await fetchWrapper({\r\n url: URL_PROFILE_STUDENT,\r\n });\r\n return convertDatesOnObject(data);\r\n }\r\n\r\n const saveProfile = async (data) => {\r\n return await putWrapper({\r\n url: URL_PROFILE_STUDENT,\r\n data,\r\n })\r\n }\r\n\r\n const acceptTerms = async () => {\r\n return await putWrapper({\r\n url: URL_PROFILE_STUDENT,\r\n data: {\r\n skipUpdateContact: true,\r\n acceptsTermsAndConditions: true,\r\n },\r\n })\r\n }\r\n\r\n const setPreferredEmail = async (value) => {\r\n return await putWrapper({\r\n url: URL_PROFILE_STUDENT,\r\n data: {\r\n skipUpdateContact: true,\r\n contactsToAdd: [\r\n { type: 'EMAIL', value }\r\n ],\r\n },\r\n })\r\n }\r\n\r\n const getDashboard = async () => {\r\n const url = 'api/student/dashboard';\r\n //we would like to cache this as it is used on a few pages\r\n //but it also changes with actions like following a program, enrolling or dropping\r\n //a class etc. Managing that was a bit unwieldy.\r\n const data = await fetchWrapper({url});\r\n\r\n return convertDatesOnObject(data);\r\n }\r\n\r\n const markReadings = async (data) => {\r\n const url = 'api/markreadings';\r\n const result = await putWrapper({ url, data });\r\n return convertDatesOnObject(result);\r\n }\r\n\r\n const getCourseHistory = async () => {\r\n const url = '/api/student/graduation';\r\n return await fetchWrapper({ url });\r\n }\r\n const loadSubsetOfTimeZones = async(timezoneIds = [],language = \"en\") => {\r\n const idsQuery = timezoneIds.join(\"&ids=\");\r\n const url = `api/timezones?ids=${idsQuery}&language=${language}`;\r\n return await fetchWrapper({url});\r\n };\r\n\r\n const checkClassEligibility = async(classId) => {\r\n const url = `api/student/classes/${classId}/eligibilityCheck`;\r\n return await fetchWrapper({url});\r\n }\r\n const dropClass = async(classId) => {\r\n const url = `api/student/classes/${classId}`;\r\n return await deleteWrapper({url});\r\n }\r\n\r\n const unfollowAndReload = async (instituteId) => {\r\n const url = `api/student/followedPrograms/${instituteId}`;\r\n await deleteWrapper({url});\r\n const result = await getDashboard();\r\n return result;\r\n }\r\n\r\n const deleteStudentPhoto = async function () {\r\n const path = 'api/profile/photo';\r\n await fetchWrapper({\r\n url: path,\r\n fetchOptions: {\r\n method: \"DELETE\"\r\n }\r\n });\r\n }\r\n\r\n //this leverages impersonation header\r\n const getStudentPhotoSrcValue = async function() {\r\n const path = \"api/profile/photo\";\r\n const blob = await fetchAsBlob({url:path});\r\n const url = URL.createObjectURL(blob)\r\n return url;//this should in theory be something we can now set as an image src\r\n }\r\n\r\n const saveStudentPhoto = async function (fileUpload) {\r\n const {\r\n rotate,\r\n base64String\r\n } = fileUpload;\r\n const uploadData = { base64String }\r\n const path = `api/profile/photo?rotate=${rotate}`;\r\n\r\n await postWrapper({\r\n url: path,\r\n data: uploadData\r\n });\r\n };\r\n\r\n const getAttendance = async () => {\r\n const url = '/api/enrollment/attendance';\r\n return await fetchWrapper({ url });\r\n }\r\n\r\n return {\r\n signup,\r\n enrollInClass,\r\n getProfile,\r\n saveProfile,\r\n acceptTerms,\r\n setPreferredEmail,\r\n getAttendance,\r\n getDashboard,\r\n markReadings,\r\n getCourseHistory,\r\n loadSubsetOfTimeZones,\r\n dropClass,\r\n checkClassEligibility,\r\n deleteStudentPhoto,\r\n saveStudentPhoto,\r\n unfollowAndReload,\r\n getStudentPhotoSrcValue,\r\n }\r\n}\r\n\r\nexport default studentService;","import {createContext} from \"react\";\r\n\r\nconst defaultObj = {}\r\nexport default createContext({\r\n classData:defaultObj\r\n});","import React, {useContext} from \"react\";\r\n\r\nimport { Card } from \"@churchofjesuschrist/eden-card\";\r\nimport { Drawer, Summary } from \"@churchofjesuschrist/eden-drawer\";\r\nimport { H3 } from \"@churchofjesuschrist/eden-headings\";\r\nimport HTMLFragment from \"@churchofjesuschrist/eden-html-fragment\";\r\nimport { Row } from \"@churchofjesuschrist/eden-row\";\r\nimport { spacing8, spacing16, spacing32, spacing64, white, grey15 }\r\n from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Text3} from \"@churchofjesuschrist/eden-text\";\r\nimport styled from \"styled-components\";\r\n\r\nimport MenuContext from \"../../global-layout/top-bar/menu-context\";\r\n\r\nconst Container = styled.div`\r\n ${({ addPadding }) => addPadding ? `padding: 12px ${spacing32};` : ''}\r\n`;\r\n\r\nconst StyledCard = styled(Card)`\r\n margin-bottom: ${spacing32};\r\n`;\r\n\r\nconst StyledSummary = styled(Summary)`\r\n padding-left: 0;\r\n \r\n > div > div {\r\n padding: 0;\r\n }\r\n`;\r\nconst StyledText3 = styled(Text3)`\r\nmargin-bottom:${spacing8};\r\n`\r\n\r\nconst IconBackground = styled.div`\r\n background-color: ${({ color }) => color};\r\n width: ${spacing64};\r\n height: ${spacing64};\r\n margin-right: ${spacing16};\r\n`;\r\n\r\nconst HeaderIcon = styled.div`\r\n position: relative;\r\n top: 19px;\r\n left: 19px;\r\n width: fit-content;\r\n height: fit-content;\r\n display: flex;\r\n`;\r\n\r\nconst Heading = styled(H3)`\r\n margin-top:${spacing8};\r\n flex:1;\r\n`;\r\n\r\n\r\nconst LinedRow = styled(Row)`\r\n border-bottom: 1px solid ${grey15};\r\n`;\r\n\r\nconst Children = styled.div`\r\n padding: ${({isMobile}) => isMobile ? spacing8 : spacing32};\r\n\r\n`;\r\nconst SummaryContainer = styled.div`\r\ndisplay:flex;\r\nalign-items:center;\r\n`\r\n\r\nconst defaultIcon = () =>
;\r\n\r\nconst IconCard = ({\r\n icon: Icon = defaultIcon,\r\n iconBackground,\r\n heading,\r\n children,\r\n html = false,\r\n canCollapse = false,\r\n addPadding = false,\r\n ...otherProps\r\n}) => {\r\n const { isMobile } = useContext(MenuContext);\r\n const summary = (\r\n \r\n \r\n \r\n {/*Note: fill is used by svg icons that are passed in and aren't eden */}\r\n \r\n \r\n \r\n {heading}\r\n \r\n );\r\n\r\n if (canCollapse) {\r\n return (\r\n \r\n \r\n \r\n {summary}\r\n \r\n {html ? () : children}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {summary}\r\n \r\n \r\n {html ? () : children}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IconCard;","import { postWrapper, deleteWrapper } from \"../../../utils/fetchWrapper\";\r\n\r\nconst documentService = () => {\r\n const uploadDocument = async (data) => {\r\n const url = 'api/documents';\r\n const json = await postWrapper({ url, data });\r\n return json;\r\n }\r\n\r\n const deleteDocument = async (id) => {\r\n await deleteWrapper({ url: `api/documents/${id}` });\r\n }\r\n\r\n return {\r\n uploadDocument,\r\n deleteDocument\r\n }\r\n}\r\n\r\nconst mockDocumentService = () => {\r\n const uploadDocument = async (body) => {\r\n return { id: 1, ...body };\r\n }\r\n const deleteDocument = () => { }\r\n\r\n return {\r\n uploadDocument,\r\n deleteDocument\r\n }\r\n}\r\n\r\nexport default documentService;\r\nexport { mockDocumentService };\r\n"],"names":["distinct","value","index","array","indexOf","defaultService","documentService","LinkButton","styled","A11y","linkBlue","stringGroups","name","keys","getFileUrl","file","window","location","hostname","id","DocumentUpload","_ref","service","onClick","linkText","onFileChange","propOnFileChange","initialFile","managedStrings","useTranslation","setFile","useState","useEffect","async","userUploaded","results","uploadDocument","upload","_jsx","_Fragment","children","onFileCopy","navigator","clipboard","writeText","copyURL","FileInput","fileType","multiple","onChange","e","_e$target","target","reader","FileReader","type","readAsDataURL","onload","base64String","result","onerror","chooseFile","SingleDocumentUpload","_ref2","removeText","resetFile","setResetFile","documentId","setDocumentId","useCallback","onFileReset","timestamp","Date","getTime","deleteDocument","GettingStarted","Row","blue40","spacing16","Divide","Divider","white","Heading","H2","fontSize32","fontWeightBold","spacing64","Paragraph","p","fontSize16","ButtonsHolder","div","isMobile","StyledPrimary","Primary","StyledSecondary","Secondary","GetStarted","findInstProps","useButtonLinkAsNavigate","href","findClassProps","useContext","menuContext","useTranslations","_jsxs","readyToGetStarted","thousandsOfChoices","findInstituteNow","findClasses","styledColors","red40","green40","grey40","grey35","StyledCard","VerticalModularTile","preview","CardBody","BodyRail","CallToAction","RailHolder","color","defaultObj","_ref3","image","imageUrl","title","body","callToActionHref","callToActionRoute","callToActionText","dataId","onChangeCard","navigate","useNavigate","editing","setEditing","onEdit","onCancel","titanUrl","useTitanApi","url","stringHasValue","buttonProps","useMemo","undefined","Stack","GradiantTopBar","ImageRail","src","alt","aspectRatio","Ghost","small","Edit","DialogModal","open","onClose","FormField","Label","Select","remove","imageHelp","Input","maxLength","details","buttonText","ContentPageFooter","canEdit","mode","showCancel","saveText","ok","onSave","Ripple","props","count","accentColorLink","active","RippledPrimary","WarnCustom","ACTIVE","ACTIVE_ATTENTION","DISABLED","SAVING","modes","paramMode","adding","propSaveText","cancelText","propCancelText","warning","otherProps","useStrings","add","save","cancel","disabled","LoadingSpinner","RippleEffectHolder","AlertWarningFilled","size","accentColorWarning","message","widgetIdentifierToFlagMapping","iLoveInstituteVideos","featuredClasses","indexAndFlagMapFunc","w","mapped","flagMapping","identifier","flag","defaultArray","defaultFunc","Context","createContext","useContentLoaderProvider","content","flagService","serviceParams","hook","_useWarnIfDirtyProvid","status","setSavingStatus","loading","setResetStatus","clear","useStatus","saving","setDirty","useWarnIfDirtyProvider","distilledObject","map","c","data","filter","d","translatedProps","stringGroupName","_c$data","Array","isArray","items","reduce","accumulator","current","i","prop","push","length","updated","groupName","loadedContent","setLoadedContent","load","defaultWidgetsNotInData","component","found","find","dw","visible","cur","contentWithTranslations","_content$map$filter","mapFunc","_c$data2","_c$data3","_c$data3$items","key","newItems","item","filterFunc","canDelete","onDeleteComponent","isNaN","draggingItem","setDraggingItem","onDragStart","startData","draggableId","onDragEnd","endData","draggedItem","source","destination","startIndex","endIndex","_cur$endIndex","endItem","removed","splice","addModalVisible","setAddModalVisible","onOpenAddModal","onCancelAddModal","onConfirmAddWidget","visibleIdentifiers","previewing","setPreviewing","onPreview","onEndPreview","saveStatus","setSuccessStatus","saved","setErrorStatus","saveFailed","clearSaving","_featured$data$featur","_featured$data","_featured$data$featur2","featuredVisibleChanged","featured","featuredIndex","featuredIds","onItemEdited","paramIndex","componentName","match","cloneDeep","shift","useContentLoader","Provider","useManageWidgets","originalContent","optionalWidgets","checkedWidgets","setCheckedWidgets","checked","onConfirm","ContainerStack","ManagedInner","widget","Checkbox","ManageWidgets","useManagedWidgets","manageWidgetsSub","FeatureFlags","hubService","hubEventsService","instService","instituteEventsService","calendarEventsWidgetService","programId","hubId","parseInt","pageLoad","arguments","error","clearStatus","useParams","programData","setProgramData","hubData","setHubData","GenericContainerHeader","GenericContainerInner","spacing24","backgroundColorAlt","fontSize28","editLabel","others","showEditButton","useCalendarEventsWidget","Card","CalendarEvents","GenericEditItem","newsAndEventsWidget","featuredClassesService","clsService","classService","loadViewFeaturedClasses","ids","join","fetchWrapper","classData","transformClass","loadEditFeaturedClasses","isHub","loadHubClasses","loadProgramClasses","_useContentLoaderProv","propsFeaturedIds","onDataChange","candidateClasses","setCandidateClasses","setFeaturedIds","isEditModalOpen","openEditModal","closeEditModal","useSwitch","loadCandidateClasses","pgmId","hId","useId","validIds","classId","actuallyFeatured","curId","onClassChecked","uncheckedResult","selectedClasses","cl","setFilter","justSelected","setJustSelected","onJustSelectedChange","filteredCandidates","_cl$title$toLowerCase","_cl$title","_cl$teacherName$toLow","_cl$teacherName","lowerFilter","toLowerCase","teacherName","tooFiew","_featuredIds$length","tooMany","_featuredIds$length2","isChecked","onEditClicked","onFilterChange","Header","EditHolder","TitleHolder","CardInner","EditCardInner","spacing8","EditCardRow","ModalInner","MarginCheckbox","FilterStack","spacing4","borderColorTertiary","useEditFeaturedClasses","edit","H4","Error","featuredClassesError","Warn","noFeaturedClassesWarning","TileSwipeBlock","tileWidth","DaysWeek","twentyFourToTwelve","startTime","header","editFeaturedClasses","footer","gapSize","chooseAtLeastThree","chooseNoMoreThanEight","FilterTextInput","showOnlyFeatured","scope","setData","mappedData","_data$map","titanImageId","classTypeToColors","backgroundName","description","mobileTarget","dimension","hasNone","targetId","subscription","propsSubscription","setSubscription","subscribed","canSubscribe","canUnsubscribe","following","followError","followDone","unSub","unfollow","sub","follow","TxtHolder","MyBtn","Container","useFollowLink","HeartFilled","Heart","LinkA11y","ClassFollowLink","FollowLink","ClassImage","Image","BadgeRow","FollowRow","TitleRow","FeatureRow","SizedCard","trimmedTitle","substring","isModalOpen","setModalOpen","setModalClosed","setActive","toggleFollow","focalPoint","x","y","TeacherAverageRating","rating","teacherRating","ClassSummaryModal","isOpen","onHideModal","classRecord","FeaturedTitle","fontWeightLight","FeaturedSubheading","NoClassesNotice","spacing32","useViewFeaturedClasses","chooseHowToParticipate","noFeaturedClasses","ClassCard","ClassBadges","ViewFeaturedClasses","EditFeaturedClasses","ChoiceHolder","chosen","boxShadowRaised","accentColorPrimary","Overlay","OverlayInternal","IconHolder","chosenId","mobileTarge","CircleSelectedFilled","instituteFollowService","instituteId","postWrapper","deleteWrapper","landingChoicesService","loadImageChoices","options","setOptions","setOpen","onOpenModal","choices","choice","setChoice","_image$id","rangeValue","num","toString","onRangeChange","resultShift","onChoiceChanged","EditAttachedHero","AttachedHero","ModalContents","Images","InstituteAttachedHero","mediaBreak480w","mediaBreak1600w","ShiftedImage","InstituteCallToAction","breakWidth1600","LastCall","ActionPadding","defaultImageService","imageService","callToActionProps","useEditInstituteHero","callToAction","ShareLink","shareText","share","shareLinkBody","ImageIcon","editBanner","RangeInput","moveUp","moveDown","o","ImageChoice","useSelected","applyTimeToMidnightDate","date","timeString","hourStr","minutesStr","secondsStr","split","hour","minute","seconds","addSeconds","addMinutes","addHours","transformProgramSchedule","classes","sessions","weeks","buildings","programName","startDate","endDate","s","sessionId","sessionDate","dateString","cls","building","b","buildingId","timeZoneId","teacher","employeeId","className","startTimeString","endTime","endTimeString","room","isCornerstone","red30","serverStringToBrowserDate","program","text","startHour","getHours","buildingName","latitude","longitude","timeZoneIds","sorted","sort","a","mappedWeeks","hasSessions","programHubScheduleService","loadHubSchedule","isDate","format","programs","alltimeZoneIds","collection","transformHubSchedule","sessionBackedLoad","loadProgramSchedule","loadSubsetOfTimeZones","language","hubInfo","hubPageContext","programInfo","programPageContext","setWeeks","weekIndex","setWeekIndex","curWeek","_weeks$weekIndex","dataCallback","timezoneCallback","timezoneIds","weeksOpen","onShowWeeks","onHideWeeks","calloutRef","useRef","forceRedraw","setForceRedraw","onWeekChosen","_useContext","appointmentData","timeZones","ScheduleTimezonesContext","tz","dateAsTimeTwentyFourToTwelve","H3","h3","Field","grey30","Value","classUrl","ClickKiller","preventDefault","stopPropagation","startGap","Link","to","DateToDisplayString","time","timezone","institute","Title","h2","Sub","yellow30","SubGhost","Sub2","textColorTertiary","WeeksHolder","WeekSub","WeekMain","empty","WeekButton","PlaceHolder","useProgramClassScheduleWidget","scheduleWidget","weekClassSchedule","ref","ChevronDown","fontSize20","noClassesThisWeek","Callout","forRef","onClickOutside","WeekScheduleWithFilters","viewComponent","ProgramClassScheduleView","blockComponent","ProgramClassCalendarBlock","dayView","height","showNavigation","heading","Unordered","Object","Item","propItems","loaderHook","visibleItems","_propItems$filter","isEditable","isTruthy","editableItems","checkedIdentifiers","setCheckedIdentifiers","newItem","changedIndex","itemIndex","footerMode","_checkedIdentifiers$l","requiredTotal","Grid","EditHeader","useContentCards","numColumns","editCustomBoxesWidget","editCustomBoxesSub","xlarge","large","medium","ContentCard","spacing48","H1","ImageBackground","spacing128","ImageCard","ImageHeading","ImageBody","CallToActionButton","_ref4","StyledText3","Text3","Hero","PosterBlock","background","imagePlacement","componentPadding","_ref5","bgColor","grey3","HTMLFragment","mappings","useQuarterBoxes","editInfoBoxesWidget","editInfoBoxes","editInfoBoxesSub","fields","showModal","toggleModal","useToggle","values","setValues","initialValue","forEach","f","oldValues","_values$f","_values$f2","URLLabel","facebook","instagram","twitter","youtube","pinterest","useSocialMedia","socialMediaWidget","editSocials","editSocialsSub","Split","align","Facebook","colorFacebook","Instagram","X","Youtube","colorYoutube","Pinterest","colorPinterest","SplitHero","StyledRow","StyledAppearance","AppearanceSection","CustomCallToAction","isPrimary","other","Button","inverted","Boolean","btnProps","primaryCallToActionHref","primaryCallToActionText","secondaryCallToActionHref","secondaryCallToActionText","tertiaryCallToActionHref","tertiaryCallToActionText","rowGapSize","videoService","loadVideos","videos","setVideos","successStatus","VideoTitle","ToolsRow","VideoSubheading","TileContainer","subheading","MenuContext","useVideoService","selectedVideoIndex","setSelectedVideoIndex","React","verticalAlign","video","Media","Icon","Play","thumbnailUrl","MediaModal","ModalVideo","html","_videos$selectedVideo","videoUrl","tools","shareUrl","_videos$selectedVideo2","_videos$selectedVideo3","Download","MaxWidth","LoadHolder","ItemWrappedDiv","ItemHeaderControls","MoveHandler","DeleteHandler","DragContainer","backgroundColorLevel1","EditableFooter","ContentLoaderHeader","SubNavTitle","ContentLoaderControls","components","InvitationBanner","BulletedList","ProgramClassSchedule","ContentCards","FeaturedClasses","IconCard","InstituteHero","NewsRoom","PageHeroBanner","QuarterBoxes","StudentQuickSignup","CalendarEventsWidget","VideoSlidehow","SocialMedia","AllWrapped","success","SaveModal","Info","Success","saveSuccess","saveError","action","endPreview","SubNavigation","editLanding","ContentLoader","DragDropContext","Droppable","droppableId","isDropDisabled","provided","snapshot","innerRef","placeholder","AddToListRectangle","manageWidgets","Component","canMove","Draggable","isDragDisabled","draggableProps","dragHandleProps","Drag","Delete","accentColorDanger","ContentLoaderInner","propsContent","ContentLoaderProvider","programKey","userStakeService","storage","sessionStorage","loadLocationStakeUnitNumber","localCoordinates","config","unitNumber","getItem","layers","LocationType","STAKE","limit","MapsService","configure","identifyLocations","coordinates","lat","lng","nearest","setItem","resetStorage","removeItem","loadOnlineProgram","eventsPageService","processProgramEventDates","BarColor","styleConstants","studentService","user","signedOnUserContext","determineLanguage","signup","setSignup","setMessage","isOnline","signupPageContext","oldValue","classTimeDisplay","event","newValue","onCheckboxChange","onSubmit","dobDate","parse","dateOfBirth","ageInYears","differenceInYears","under18AgeNotice","over31AgeNotice","scrollTo","QuickForm","QuickFormField","QuickTitle","QuickCheckbox","QuickButtonRow","QuickGhostButton","QuickPrimaryButton","masterTranslationsContext","agreementUrl","usePageStandardFunctionality","pageName","useSignup","Form","onValidate","quickSignup","firstName","required","lastName","email","pattern","DateInput","iAgree","termsAndConditions","contactUs","returnToLogin","completeSignup","newsRoomService","loadNewsRoom","showingMore","setShowingMore","loadMore","selectedArticle","setSelectedArticle","setSelectedArticleCallback","article","startTakeCount","combined","arr","articles","events","takeCount","slice","hasMore","string","elipses","desktopStyles","mobileStyles","serif","EventDivider","grey60","LeftBlock","ArticleContents","TypeHeader","pretitle","meta","link","renditions","selectedRendition","squareOrTall","r","width","preferred","toSorted","wide","linkUrl","ArticleImage","distributionUrl","news","trimStringToLength","viewFullNews","ActiveChevron","ChevronRightLarge","NewsTitle","NewsTile","NewsInformation","fontSize14","NewsDivider","NewsTypeLabel","H6","yellow15","NewsA11y","NewsRow","isActive","ArticlesRow","ArticlesHeader","blue35","Selection","Article","StyledNavLink","NavLink","StyledA11y","More","skeletonItem","skeletonItems","dataArticles","selectedData","useNewsRoom","moreLink","viewAll","goToNewsRoom","viewMore","layoutLeft","churchNewsroom","NewsRoomSelection","ContentLoadingStatus","ToolModal","NewsRoomArticle","ratio","convertDatesOnObject","areaService","loadClass","searchClasses","geoCoords","loadUnitNumber","searchClassById","getISODateStringWithTimezone","getBuildingClasses","buildingIds","todayDate","nameSortFunc","defaultAsync","language2","setTimeZoneId","setProgramId","done","widgetData","setWidgetData","widgetTimezones","setWidgetTimezones","tzData","calendarEntries","pgm","entry","_widgetData$programs$","_widgetData$programs","timeZonePasses","programCount","programPasses","_widgetData$programs$2","_widgetData$programs2","allInstitutes","_widgetTimezones$leng","_widgetData$timeZoneI","_widgetData$timeZoneI2","wtz","allTimezones","onProgramChange","newProgramId","onTimeZoneChange","minMaxHours","endHour","earlyIndex","earliest","nextCandidate","noLaterThan","dblClickCanceler","timeBlockComponent","colorFromData","monthView","stringsReady","setStringsReady","newDictionary","day","week","month","today","loadMessages","appointmentViewProp","appointmentTooltipComponent","timeBlockProp","appointmentComponent","views","v","currentView","setCurrentView","onViewChange","useShowNavigation","sortedData","compareAsc","min","max","currentDate","isAfter","isBefore","Scheduler","dataSource","keyExpr","defaultCurrentView","startDayHour","endDayHour","showAllDayPanel","crossScrollingEnabled","onAppointmentDblClick","onAppointmentFormOpening","onCurrentViewChange","Resource","fieldExpr","useColorAsDefault","Editing","allowAdding","allowUpdating","allowDeleting","allowDragging","allowResizing","allowTimeZoneEditing","Loading","ScheduleHolder","dismissable","Dialogue","FiltersHolder","FilterSelect","defaultComponent","useWeekScheduleWithFilters","timeZoneNotice","timeZoneName","allTimezonesInZone","replace","unableToLoadSchedule","WeekSchedule","WarnIfDirtyContext","promptOpen","contextData","useWarnIfDirty","dirty","setPromptOpen","blocker","useBlocker","currentLocation","nextLocation","pathname","isBlockerBlocked","state","confirmAction","setConfirmAction","execute","actOrPrompt","proceed","reset","ConfirmModal","okText","yes","no","unsavedChanges","ChildContainer","faded","StatusHolder","StatusContents","boxShadowOverlaid","errorContents","waiting","invitationService","loadInvitation","invitation","setInvitation","showInvitation","EscapeWidthHolder","EscapeWidth","BannerFullWidth","useMediaQuery","useInvitationBanner","clickHere","Holder","setText","changeHandler","usePlaceholder","search","InputGroup","Search","textColorSecondary","URL_PROFILE_STUDENT","getDashboard","enrollInClass","getProfile","saveProfile","putWrapper","acceptTerms","skipUpdateContact","acceptsTermsAndConditions","setPreferredEmail","contactsToAdd","getAttendance","markReadings","getCourseHistory","dropClass","checkClassEligibility","deleteStudentPhoto","fetchOptions","method","saveStudentPhoto","fileUpload","rotate","uploadData","path","unfollowAndReload","getStudentPhotoSrcValue","blob","fetchAsBlob","URL","createObjectURL","addPadding","StyledSummary","Summary","IconBackground","HeaderIcon","LinedRow","grey15","Children","SummaryContainer","defaultIcon","icon","iconBackground","canCollapse","summary","fill","Drawer"],"sourceRoot":""}