{"version":3,"file":"static/js/8872.5f849a95.chunk.js","mappings":"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","sources":["components/pages/use-translated-title.js","components/pages/use-page-standard-functionality.js","components/pages/public-content/faq-content.js","components/pages/public-content/faq-page.js","../node_modules/@churchofjesuschrist/eden-image/lib/es/index.js","components/pages/institutes/program-page-context.js","components/generic/hooks/use-titan-api/titan-api-service.js","components/generic/hooks/use-titan-api/use-titan-api.js","components/generic/hooks/use-button-link-as-navigate/use-button-link-as-navigate.js","components/generic/page-hero-banner/page-hero-banner.js","components/pages/hubs/hub-page-context.js"],"sourcesContent":["import { useEffect } from \"react\";\r\n\r\nimport useTranslation from \"../../utils/use-translations\";\r\n\r\nconst stringGroups = [\r\n {\r\n key: \"shared\",\r\n values: [\"myInstitute\"],\r\n }\r\n];\r\n\r\nconst useTranslatedTitle = ({ menuTitle }) => {\r\n\r\n const { managedStrings } = useTranslation(stringGroups);\r\n\r\n useEffect(() => {\r\n let title = managedStrings.myInstitute || 'myInstitute';\r\n if (menuTitle) {\r\n title = `${title} - ${menuTitle}`;\r\n };\r\n document.title = title;\r\n }, [managedStrings, menuTitle]);\r\n}\r\n\r\nexport default useTranslatedTitle;","import {useEffect, useContext, useState} from \"react\";\r\n\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport useTranslatedTitle from \"./use-translated-title\";\r\nimport stringHasValue from \"../../utils/string-has-value\";\r\nimport useStatus from \"../generic/hooks/use-status/use-status\";\r\nimport AnalyticsAppContext from \"../global-layout/master-layout/analytics-app-context\";\r\nimport masterTranslationsContext from \"../global-layout/master-layout/master-translations-context\";\r\nimport menuContext from \"../global-layout/top-bar/menu-context\";\r\n\r\n\r\nconst defaultArray = [];\r\nconst defaultFunction = () => {}\r\nconst usePageStandardFunctionality = ({\r\n stringGroups = defaultArray,\r\n menuTitle = \"\",\r\n menuHref = \"/\",\r\n service,\r\n dataParams,\r\n pageName\r\n}) => {\r\n const {\r\n stringsStatus,\r\n requestLanguageGroups,\r\n } = useContext(masterTranslationsContext);\r\n\r\n const {\r\n analyticsPageEvent\r\n } = useContext(AnalyticsAppContext) ?? {};\r\n\r\n useEffect(() => {\r\n if (typeof analyticsPageEvent === \"function\" && stringHasValue(pageName)) {\r\n analyticsPageEvent(pageName, dataParams);\r\n }\r\n },[analyticsPageEvent, pageName, dataParams])\r\n\r\n const [data, setData] = useState();\r\n const {\r\n status:dataStatus,\r\n setSavingStatus:loading,\r\n setErrorStatus:error,\r\n setResetStatus:clearStatus,\r\n } = useStatus({saving:true});\r\n\r\n useEffect(() => {\r\n const load = async() => {\r\n try {\r\n loading();\r\n const pageData = await service.pageLoad(dataParams);\r\n setData(pageData);\r\n clearStatus()\r\n } catch (e) {\r\n error(e);\r\n }\r\n\r\n }\r\n if (typeof service?.pageLoad === \"function\") {\r\n load();\r\n }\r\n // eslint-disable-next-line -- Prevent multiple API calls on load\r\n },[dataParams])\r\n\r\n /*If we want to have the main menu deal be a navigate action\r\n which plays nicer with our SPA without the flicker\r\n then we need to do some additional work. I think we could put an onclick on the menuTitleObject\r\n , prevent default and then call navigate. */\r\n const {\r\n setMenuTitleObj = defaultFunction,\r\n setHubOrProgram = defaultFunction\r\n } = useContext(menuContext);\r\n const {programId, hubId} = useParams();\r\n useEffect(() => {\r\n const pId = parseInt(programId);\r\n const hId = parseInt(hubId);\r\n if (isNaN(pId) && isNaN(hId)) {\r\n setHubOrProgram();\r\n }\r\n },[hubId, programId, setHubOrProgram]);\r\n\r\n useEffect(() => {\r\n requestLanguageGroups([...stringGroups, \"shared\"]);\r\n },[stringGroups,requestLanguageGroups]);\r\n useEffect(() => {\r\n setMenuTitleObj({\r\n text: menuTitle,\r\n href: menuHref\r\n });\r\n }, [menuTitle, menuHref, setMenuTitleObj]);\r\n\r\n useTranslatedTitle({ menuTitle });\r\n\r\n return {\r\n stringsStatus,\r\n dataStatus,\r\n data,\r\n setMenuTitleObj\r\n }\r\n}\r\n\r\nexport default usePageStandardFunctionality;","import {Help} from \"@churchofjesuschrist/eden-icons\";\r\nimport {blue30, yellow30,red25,green30} from \"@churchofjesuschrist/eden-style-constants\";\r\n\r\n\r\nconst content = [\r\n /*{if we have a titan image, we could use it with this and get rid of the h1.\r\n component: \"page-hero-banner\",\r\n data: {\r\n stringGroupName: \"faq\",\r\n translatedProps: {\r\n pageTitle: \"faqPageTitle\",\r\n }\r\n },\r\n },*/\r\n {\r\n component:\"h1\",\r\n data:{\r\n stringGroupName: \"faq\",\r\n translatedProps: {\r\n children: \"faqPageTitle\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-moreThan1\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:blue30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_moreThan1\",\r\n children: \"a_moreThan1\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-signInRequired\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:yellow30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_signInRequired\",\r\n children: \"a_signInRequired\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-registerRequired\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:red25,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_registerRequired\",\r\n children: \"a_registerRequired\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-over31\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:green30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_over31\",\r\n children: \"a_over31\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-credit\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:blue30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_credit\",\r\n children: \"a_credit\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-otherCredit\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:yellow30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_otherCredit\",\r\n children: \"a_otherCredit\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-cost\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:red25,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_cost\",\r\n children: \"a_cost\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-who-can\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:green30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_who_can\",\r\n children: \"a_who_can\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-age-range\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:blue30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_age_range\",\r\n children: \"a_age_range\"\r\n }\r\n }\r\n },\r\n {\r\n component: \"icon-card\",\r\n data: {\r\n canCollapse: true,\r\n addPadding: true,\r\n dataId: \"faq-who-to-contact\",\r\n stringGroupName: \"faq\",\r\n icon:Help,\r\n iconBackground:yellow30,\r\n html:true,\r\n translatedProps: {\r\n heading: \"q_who_to_contact\",\r\n children: \"a_who_to_contact\"\r\n }\r\n }\r\n }\r\n];\r\n\r\nexport default content;\r\n","import React from \"react\";\r\n\r\nimport content from \"./faq-content\";\r\nimport useTranslation from \"../../../utils/use-translations\";\r\nimport ContentLoader from \"../../generic/content-loader/content-loader\";\r\nimport usePageStandardFunctionality from \"../use-page-standard-functionality\";\r\n\r\nconst stringGroups = [\r\n {\r\n name: \"faq\",\r\n keys: [\"faqPageTitle\"]\r\n }\r\n]\r\nconst pageGroups = [\"faq\"];\r\n\r\nconst FAQPage = () => {\r\n\r\n const { managedStrings } = useTranslation(stringGroups);\r\n usePageStandardFunctionality({\r\n stringGroups: pageGroups,\r\n menuTitle: managedStrings.faqPageTitle,\r\n menuHref: \"#\",\r\n pageName:\"faq\"\r\n });\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FAQPage;\r\n","\"use client\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nconst Img = styled.img`\n max-width: 100%;\n ${({ $focalPoint }) => $focalPoint ? `height: 100%;\n width: 100%;\n object-fit: cover;\n object-position: ${$focalPoint.x} ${$focalPoint.y};\n ` : \"\"};\n`;\nconst ImageComponent = ({ src, srcSet, sizes, alt, disableLazy, focalPoint, onLoad, ...props }, ref) => /* @__PURE__ */ jsx(\n Img,\n {\n src,\n srcSet,\n sizes,\n alt,\n role: alt ? null : \"presentation\",\n $focalPoint: focalPoint,\n onLoad,\n loading: disableLazy ? \"eager\" : \"lazy\",\n ...props,\n ref\n }\n);\nconst Image = forwardRef(ImageComponent);\nImage.displayName = \"Image\";\nexport {\n Image\n};\n","import { createContext } from \"react\";\r\n\r\n\r\nexport default createContext({\r\n id:null,//a widget component uses both this and program context, looking for numeric\r\n //id to know if it is in a hub or institute at a given place. Thus we don't want to give this a default number\r\n programName:\"\"});","import { localStorageBackedLoad } from \"../../../../utils/cached-data-load\";\r\n\r\nconst titanApiService = () => {\r\n const getImageSizes = async (imageId) => {\r\n try {\r\n const url = `api/titan/${imageId}`;//`https://titanapi.churchofjesuschrist.org/assetsearch/api/v2/asset/details/versionID/${imageId}`\r\n const key = `titan-${imageId}`;\r\n const expiration = {days:14};\r\n\r\n const data = await localStorageBackedLoad({url,key,expiration, crossDomain:true});\r\n\r\n return data?.result?.renditions ?? [];\r\n\r\n } catch {\r\n return [];\r\n }\r\n }\r\n return {\r\n getImageSizes\r\n };\r\n}\r\n\r\nexport default titanApiService;","import {useState, useContext, useEffect, useCallback, useMemo} from \"react\";\r\n\r\nimport titanApiService from \"./titan-api-service\";\r\nimport stringHasValue from \"../../../../utils/string-has-value\";\r\nimport menuContext from \"../../../global-layout/top-bar/menu-context\";\r\n\r\n/*\r\n{\r\n id:\"abcd1234ce\",//some titan api image id\r\n mobileTarget:200,\r\n target:400,\r\n dimension:\"width\" //\"height\"\r\n}\r\n*/\r\nconst service = titanApiService();\r\nconst useTitanApi = ({\r\n id,\r\n mobileTarget,\r\n target,\r\n dimension\r\n}) => {\r\n const {isMobile} = useContext(menuContext);\r\n\r\n const [sizes, setSizes] = useState([]);\r\n\r\n const load = useCallback(async () => {\r\n if (stringHasValue(id)) {\r\n try {\r\n const data = await service.getImageSizes(id);\r\n setSizes(data);\r\n } catch (e) {\r\n setSizes([]);\r\n }\r\n }\r\n },[id]);\r\n //because load is async, we can't just do useEffect(load,[load]);\r\n useEffect(() => {load()},[load]);\r\n\r\n const url = useMemo(() => {\r\n if (sizes.length === 0) {\r\n return \"\"\r\n }\r\n const simplified = sizes.map(rendition => {\r\n const size = parseInt(rendition[dimension]);\r\n const useLink = rendition.links.find(l => l.rel === \"distribution\") ??\r\n rendition.links.find(l => l.rel === \"resource\");\r\n const href = useLink?.href;\r\n return {\r\n size,\r\n href\r\n }\r\n }).sort((a,b) => a.size - b.size);\r\n\r\n const sizeThreshold = isMobile ? mobileTarget : target;\r\n const sizeCandidates = simplified.filter(r => r.size >= sizeThreshold);\r\n if (sizeCandidates.length === 0) {\r\n //none that are larger than our target so we either return an empty href or the href on the largets rendition we have\r\n return simplified.length === 0 ? \"\" :\r\n simplified[simplified.length - 1].href;\r\n } else {\r\n //candidates are sorted ascending, and we filtered to eliminate any lower than our target\r\n return sizeCandidates[0].href;\r\n }\r\n\r\n },[sizes, isMobile, mobileTarget, target, dimension])\r\n\r\n return url;\r\n\r\n}\r\n\r\nexport default useTitanApi;\r\n","import {useCallback} from \"react\";\r\n\r\nimport {useNavigate} from \"react-router-dom\";\r\n\r\n//we have instances of styled primary, secondary and a11y buttons\r\n//with lots of other props and things on them already. It is simpler\r\n//to just generify the on click creation work with this hook than to write a\r\n//wrapped Primary, Secondary, A11y etc and make sure references and styles pass etc.\r\nconst useButtonLinkAsNavigate = ({href}) => {\r\n const navigate = useNavigate();\r\n const onClick = useCallback((e) => {\r\n e.preventDefault();\r\n navigate(href);\r\n },[navigate, href]);\r\n\r\n return {\r\n onClick\r\n }\r\n};\r\n\r\nexport default useButtonLinkAsNavigate;","import React, {useContext} from \"react\";\r\n\r\nimport {A11y, Secondary} from \"@churchofjesuschrist/eden-buttons\";\r\nimport {H2,H4} from \"@churchofjesuschrist/eden-headings\";\r\nimport HTMLFragment from \"@churchofjesuschrist/eden-html-fragment\";\r\nimport { Image } from \"@churchofjesuschrist/eden-image\";\r\nimport { Regular } from \"@churchofjesuschrist/eden-light-rays\";\r\nimport { blue30, white,\r\n spacing16,\r\n spacing8 } from \"@churchofjesuschrist/eden-style-constants\";\r\nimport {Text3} from \"@churchofjesuschrist/eden-text\";\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 menuContext from \"../../global-layout/top-bar/menu-context\";\r\nimport useButtonLinkAsNavigate from\r\n \"../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\n\r\nconst Container = styled.div`\r\ndisplay:flex;\r\nheight:${({height}) => height};\r\nwidth:100%;\r\nbackground-color:${blue30};\r\noverflow-y:hidden;\r\n`;\r\nconst Contents = styled.div`\r\nposition:relative;\r\ndisplay:flex;\r\ncolor:${white};\r\nbackground-color:${blue30};\r\nflex:1;\r\n${({isMobile}) => isMobile ? \"justify-content:space-around;\" : \"\" }\r\n`\r\nconst Rays = styled.div`\r\nposition:absolute;\r\nleft:${({left}) => left};\r\nwidth:30px;\r\nheight:100%;\r\n\r\n`;\r\n\r\nconst StyledText3 = styled(Text3)`\r\ncolor:${white};\r\ndisplay:inline-block;\r\nmargin-bottom:${spacing8};\r\n`\r\n\r\nconst Text = styled.div`\r\npadding:${spacing16};\r\n`;\r\nconst MarkupHolder = styled.div`\r\npadding-bottom:${spacing16};\r\n`\r\nconst Btn = styled(A11y)`\r\npadding:${spacing16};\r\n`;\r\nconst Btn2 = styled(Secondary)`\r\nmargin-top:${spacing16};\r\n`\r\nconst PageHeroBanner = ({\r\n pageTitle = \"\",//this is expected to be the same title that is in the menu and is used on desktop only\r\n dataTitle = \"\",//this is the program name, or other dynamic value used both in desktop and mobile\r\n markup = \"\",\r\n route = \"\",\r\n buttonText = \"\",\r\n titanImageId = \"\",\r\n imageUrl = \"\"\r\n}) => {\r\n const image = {\r\n id:titanImageId,\r\n target:180,\r\n mobileTarget:100,\r\n dimension:\"height\"\r\n }\r\n const titanUrl = useTitanApi(image);\r\n const url = stringHasValue(imageUrl) ? imageUrl : titanUrl;\r\n\r\n const navigate = useNavigate();\r\n const {isMobile} = useContext(menuContext);\r\n\r\n\r\n const pickHeight = isMobile ? \"100px\" : \"180px\";\r\n const raysLeft = isMobile ? \"-60px\" : \"-112px\";\r\n\r\n const hasRoute = stringHasValue(route);\r\n const TextHolder = hasRoute && !stringHasValue(buttonText) ? Btn : Text;\r\n\r\n const clickProps = hasRoute && !stringHasValue(buttonText) ? {\r\n onClick:() => navigate(route)\r\n } : {};\r\n\r\n const btnProps = useButtonLinkAsNavigate({href:route});\r\n\r\n return (\r\n {url && }\r\n \r\n \r\n \r\n \r\n \r\n {isMobile ? (

{dataTitle}

) : (\r\n <>\r\n

{pageTitle}

\r\n {stringHasValue(dataTitle) &&

{dataTitle}

}\r\n {stringHasValue(markup) && \r\n \r\n }\r\n {stringHasValue(buttonText) && {buttonText}}\r\n )}\r\n
\r\n
\r\n
)\r\n};\r\n\r\nexport default PageHeroBanner;","import { createContext } from \"react\";\r\n\r\n\r\nexport default createContext({\r\n hubName:\"\",\r\n id:null,//a widget component uses both this and program context, looking for numeric\r\n //id to know if it is in a hub or institute at a given place. Thus we don't want to give this a default number\r\n programs:[]});"],"names":["stringGroups","key","values","_ref","menuTitle","managedStrings","useTranslation","useEffect","title","myInstitute","document","defaultArray","defaultFunction","_useContext","menuHref","service","dataParams","pageName","stringsStatus","requestLanguageGroups","useContext","masterTranslationsContext","analyticsPageEvent","AnalyticsAppContext","stringHasValue","data","setData","useState","status","dataStatus","setSavingStatus","loading","setErrorStatus","error","setResetStatus","clearStatus","useStatus","saving","pageLoad","async","pageData","e","load","setMenuTitleObj","setHubOrProgram","menuContext","programId","hubId","useParams","pId","parseInt","hId","isNaN","text","href","useTranslatedTitle","component","stringGroupName","translatedProps","children","canCollapse","addPadding","dataId","icon","Help","iconBackground","blue30","html","heading","yellow30","red25","green30","name","keys","pageGroups","FAQPage","usePageStandardFunctionality","faqPageTitle","_jsx","ContentLoader","content","Img","styled","img","$focalPoint","x","y","Image","forwardRef","ImageComponent","_ref2","ref","src","srcSet","sizes","alt","disableLazy","focalPoint","onLoad","props","jsx","role","displayName","createContext","id","programName","titanApiService","getImageSizes","_data$result$renditio","_data$result","url","imageId","expiration","days","localStorageBackedLoad","crossDomain","result","renditions","mobileTarget","target","dimension","isMobile","setSizes","useCallback","useMemo","length","simplified","map","rendition","_rendition$links$find","size","useLink","links","find","l","rel","sort","a","b","sizeThreshold","sizeCandidates","filter","r","navigate","useNavigate","onClick","preventDefault","Container","div","height","Contents","white","Rays","_ref3","left","StyledText3","Text3","spacing8","Text","spacing16","MarkupHolder","Btn","A11y","Btn2","Secondary","_ref4","pageTitle","dataTitle","markup","route","buttonText","titanImageId","imageUrl","image","titanUrl","useTitanApi","pickHeight","raysLeft","hasRoute","TextHolder","clickProps","btnProps","useButtonLinkAsNavigate","_jsxs","Regular","origin","color","noShoulder","H2","_Fragment","H4","HTMLFragment","mappings","p","small","hubName","programs"],"sourceRoot":""}