ramadan-activities-aab67100166a6a5d.js.map 88 KB

1
  1. {"version":3,"file":"static/chunks/pages/ramadan-activities-aab67100166a6a5d.js","mappings":"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","sources":["webpack://_N_E/./public/icons/chevron-down.svg","webpack://_N_E/?7652","webpack://_N_E/./src/components/DataFetcher/index.tsx","webpack://_N_E/./public/icons/retry.svg","webpack://_N_E/./src/components/Error/index.tsx","webpack://_N_E/./src/components/NextSeoWrapper.tsx","webpack://_N_E/./src/components/PageContainer/index.tsx","webpack://_N_E/./src/components/QuranReader/TranslationView/EmbeddableVerseCell/index.tsx","webpack://_N_E/./src/components/QuranReader/TranslationView/TranslationText/FootnoteText.tsx","webpack://_N_E/./src/components/QuranReader/TranslationView/TranslationText/index.tsx","webpack://_N_E/./src/components/QuranReader/VerseTextPreview/index.tsx","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.tsx","webpack://_N_E/./src/hooks/useQcfFont.ts","webpack://_N_E/./src/components/RamadanActivity/ReadMoreCollapsible/index.tsx","webpack://_N_E/./src/components/RamadanActivity/InlineLink.tsx","webpack://_N_E/./src/components/RamadanActivity/RamadanActivityHero/index.tsx","webpack://_N_E/./src/pages/ramadan-activities/index.tsx","webpack://_N_E/./src/utils/string.ts","webpack://_N_E/./src/components/Error/Error.module.scss","webpack://_N_E/./src/components/PageContainer/PageContainer.module.scss","webpack://_N_E/./src/components/QuranReader/TranslationView/EmbeddableVerseCell/EmbeddableVerseCell.module.scss","webpack://_N_E/./src/components/QuranReader/TranslationView/TranslationText/FootnoteText.module.scss","webpack://_N_E/./src/components/QuranReader/TranslationView/TranslationText/TranslationText.module.scss","webpack://_N_E/./src/components/RamadanActivity/RamadanActivityHero/Hero.module.scss","webpack://_N_E/./src/components/RamadanActivity/ReadMoreCollapsible/ReadMoreCollapsible.module.scss","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.module.scss","webpack://_N_E/./src/pages/contentPage.module.scss","webpack://_N_E/./src/pages/ramadan-activities/RamadanActivities.module.scss","webpack://_N_E/./node_modules/@radix-ui/react-collapsible/dist/index.mjs"],"sourcesContent":["var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgChevronDown = function SvgChevronDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.135 6.158a.5.5 0 0 1 .707-.023L7.5 9.565l3.658-3.43a.5.5 0 0 1 .684.73l-4 3.75a.5.5 0 0 1-.684 0l-4-3.75a.5.5 0 0 1-.023-.707Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgChevronDown;","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/ramadan-activities\",\n function () {\n return require(\"private-next-pages/ramadan-activities/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/ramadan-activities\"])\n });\n }\n ","import React, { memo } from 'react';\n\nimport useSWRImmutable from 'swr/immutable';\n\nimport Error from '@/components/Error';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport { fetcher } from 'src/api';\nimport { BaseResponse } from 'types/ApiResponses';\n\ninterface Props {\n queryKey: string;\n render: (data: BaseResponse) => JSX.Element;\n renderError?: (error: any) => JSX.Element | undefined;\n initialData?: BaseResponse;\n loading?: () => JSX.Element;\n fetcher?: (queryKey: string) => Promise<BaseResponse>;\n showSpinnerOnRevalidate?: boolean;\n onFetchSuccess?: (data: BaseResponse) => void;\n}\n\n/**\n * Data fetcher is a dynamic component that serves as a container for a component\n * that depends on data from a remote API to render. This component handles:\n * 1. Calling the API.\n * 2. Caching the response (due to using useSwr).\n * 3. Handling errors if any by showing an error message.\n * 4. Handling when the user is offline while trying to fetch the API response.\n * 5. Dynamically passing the response data through render-props to the parent.\n *\n * @param {Props} props\n * @returns {JSX.Element}\n */\nconst DataFetcher: React.FC<Props> = ({\n queryKey,\n render,\n renderError,\n initialData,\n loading = () => <Spinner />,\n fetcher: dataFetcher = fetcher,\n showSpinnerOnRevalidate = true,\n onFetchSuccess,\n}: Props): JSX.Element => {\n const { data, error, isValidating, mutate } = useSWRImmutable(\n queryKey,\n () =>\n dataFetcher(queryKey)\n .then((res) => {\n onFetchSuccess?.(res);\n return Promise.resolve(res);\n })\n .catch((err) => Promise.reject(err)),\n {\n fallbackData: initialData,\n },\n );\n\n // if showSpinnerOnRevalidate is true, we should show the spinner if we are revalidating the data.\n // otherwise, we should only show the spinner on initial loads.\n if (showSpinnerOnRevalidate ? isValidating : isValidating && !data) {\n return loading();\n }\n\n const onRetryClicked = () => {\n mutate();\n };\n\n /**\n * if we haven't fetched the data yet and the device is not online (because we don't want to show an offline message if the data already exists).\n * or if we had an error when calling the API.\n */\n if (error) {\n // if there is a custom error renderer, use it.\n if (renderError) {\n const errorComponent = renderError(error);\n // if the custom error renderer returns false, it means that it doesn't want to render anything special.\n if (typeof errorComponent !== 'undefined') {\n return errorComponent;\n }\n }\n return <Error onRetryClicked={onRetryClicked} error={error} />;\n }\n\n return render(data);\n};\n\nexport default memo(DataFetcher);\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgRetry = function SvgRetry(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.85 7.5c0-2.835 2.21-5.65 5.65-5.65 2.778 0 4.152 2.056 4.737 3.15H10.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-1 0v1.813C12.296 3.071 10.666.85 7.5.85 3.437.85.85 4.185.85 7.5c0 3.315 2.587 6.65 6.65 6.65 1.944 0 3.562-.77 4.714-1.942a6.77 6.77 0 0 0 1.428-2.167.5.5 0 1 0-.925-.38 5.77 5.77 0 0 1-1.216 1.846c-.971.99-2.336 1.643-4.001 1.643-3.44 0-5.65-2.815-5.65-5.65Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgRetry;","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './Error.module.scss';\n\nimport Button, { ButtonSize, ButtonType } from '@/dls/Button/Button';\nimport RetryIcon from '@/icons/retry.svg';\nimport { OFFLINE_ERROR } from 'src/api';\n\ninterface Props {\n onRetryClicked: () => void;\n error: Error;\n}\n\nconst Error: React.FC<Props> = ({ onRetryClicked, error }) => {\n const { t } = useTranslation('common');\n return (\n <div className={styles.container}>\n <p className={styles.text}>\n {error.message !== OFFLINE_ERROR ? t('error.general') : t('error.offline')}\n </p>\n <Button\n prefix={<RetryIcon />}\n size={ButtonSize.Small}\n type={ButtonType.Secondary}\n onClick={onRetryClicked}\n >\n {t('retry')}\n </Button>\n </div>\n );\n};\n\nexport default Error;\n","import React from 'react';\n\nimport { NextSeo } from 'next-seo';\n\nimport { SEOProps } from '@/utils/seo';\nimport { truncateString } from '@/utils/string';\n\ninterface Props extends SEOProps {\n url?: string;\n image?: string;\n imageAlt?: string;\n imageWidth?: number;\n imageHeight?: number;\n}\n\nconst NextSeoWrapper: React.FC<Props> = (props) => {\n const { url, image, imageAlt, imageHeight, imageWidth, openGraph, description, ...rest } = props;\n const openGraphParams = {\n ...(openGraph && { openGraph }),\n ...(url && { url }),\n ...(image && {\n images: [{ url: image, width: imageWidth, height: imageHeight, alt: imageAlt }],\n }),\n };\n const params = {\n ...rest,\n ...(description && { description: truncateString(description, 150) }),\n };\n return <NextSeo {...params} openGraph={openGraphParams} />;\n};\n\nexport default NextSeoWrapper;\n","import { ReactNode, FC } from 'react';\n\nimport styles from './PageContainer.module.scss';\n\ntype Props = {\n children: ReactNode | ReactNode[];\n};\n\nconst PageContainer: FC<Props> = ({ children }) => {\n return <div className={styles.container}>{children}</div>;\n};\n\nexport default PageContainer;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport styles from './EmbeddableVerseCell.module.scss';\n\nimport { fetcher } from '@/api';\nimport DataFetcher from '@/components/DataFetcher';\nimport TranslationText from '@/components/QuranReader/TranslationView/TranslationText';\nimport VerseTextPreview from '@/components/QuranReader/VerseTextPreview';\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { selectSelectedTranslations } from '@/redux/slices/QuranReader/translations';\nimport { VersesResponse } from '@/types/ApiResponses';\nimport { getMushafId, getDefaultWordFields } from '@/utils/api';\nimport { makeVersesUrl } from '@/utils/apiPaths';\nimport { areArraysEqual } from '@/utils/array';\n\ntype Props = {\n chapterId: number;\n verseNumber: number;\n fontScale?: number;\n};\n\nconst EmbeddableVerseCell: React.FC<Props> = ({ chapterId, verseNumber, fontScale }) => {\n const quranReaderStyles = useSelector(selectQuranReaderStyles, shallowEqual);\n const { quranFont, mushafLines } = quranReaderStyles;\n const { mushaf } = getMushafId(quranFont, mushafLines);\n const selectedTranslations = useSelector(selectSelectedTranslations, areArraysEqual);\n const { lang } = useTranslation();\n\n const apiParams = {\n words: true,\n perPage: 1,\n translations: selectedTranslations.join(','),\n page: verseNumber,\n ...getDefaultWordFields(quranReaderStyles.quranFont),\n mushaf,\n };\n return (\n <DataFetcher\n // TODO: if we want to make this more optimized, we can use a shared cache with the QuranReader\n queryKey={`embeddable-verse-${chapterId}:${verseNumber}`}\n fetcher={() => fetcher(makeVersesUrl(chapterId.toString(), lang, apiParams))}\n render={(data: VersesResponse) => {\n if (!data) return null;\n const firstVerse = data.verses?.[0];\n return (\n <div className={styles.verseContainer}>\n <VerseTextPreview verses={data.verses} fontScale={fontScale} />\n\n <div>\n {firstVerse.translations?.map((translation) => {\n return (\n <TranslationText\n key={translation.id}\n translationFontScale={quranReaderStyles.translationFontScale}\n text={translation.text}\n languageId={translation.languageId}\n resourceName={translation.resourceName}\n />\n );\n })}\n </div>\n </div>\n );\n }}\n />\n );\n};\n\nexport default EmbeddableVerseCell;\n","/* eslint-disable react/no-danger */\n\nimport React, { MouseEvent } from 'react';\n\nimport classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './FootnoteText.module.scss';\nimport transStyles from './TranslationText.module.scss';\n\nimport Button, { ButtonSize, ButtonShape, ButtonVariant } from '@/dls/Button/Button';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport CloseIcon from '@/icons/close.svg';\nimport { getLanguageDataById, findLanguageIdByLocale } from '@/utils/locale';\nimport Footnote from 'types/Footnote';\n\ninterface FootnoteTextProps {\n footnoteName?: string; // can be a number or a string (e.g. \"sg\" or \"pl\")\n footnote: Footnote;\n onCloseClicked: () => void;\n onTextClicked?: (event: MouseEvent, isSubFootnote?: boolean) => void;\n isLoading?: boolean;\n}\n\nconst FootnoteText: React.FC<FootnoteTextProps> = ({\n footnoteName,\n footnote,\n onCloseClicked,\n onTextClicked,\n isLoading,\n}) => {\n const { t, lang } = useTranslation('quran-reader');\n\n const languageId = footnote?.languageId || findLanguageIdByLocale(lang);\n const landData = getLanguageDataById(languageId);\n\n return (\n <div className={styles.footnoteContainer}>\n <div className={styles.header}>\n <p>\n {t('footnote')} {footnoteName ? `- ${footnoteName}` : null}\n </p>\n <Button\n size={ButtonSize.Small}\n variant={ButtonVariant.Ghost}\n shape={ButtonShape.Circle}\n onClick={onCloseClicked}\n >\n <CloseIcon />\n </Button>\n </div>\n {isLoading ? (\n <Spinner />\n ) : (\n <div\n className={classNames(\n styles.text,\n transStyles[landData.direction],\n transStyles[landData.font],\n )}\n dangerouslySetInnerHTML={{ __html: footnote.text }}\n {...(onTextClicked && { onClick: onTextClicked })}\n />\n )}\n </div>\n );\n};\n\nexport default FootnoteText;\n","/* eslint-disable react-func/max-lines-per-function */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable react/no-danger */\n\nimport React, { MouseEvent, useState } from 'react';\n\nimport classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport FootnoteText from './FootnoteText';\nimport styles from './TranslationText.module.scss';\n\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getLanguageDataById } from '@/utils/locale';\nimport { getFootnote } from 'src/api';\nimport Footnote from 'types/Footnote';\n\ninterface Props {\n translationFontScale: number;\n text: string;\n resourceName?: string;\n languageId: number;\n}\n\nconst TranslationText: React.FC<Props> = ({\n translationFontScale,\n text,\n languageId,\n resourceName,\n}) => {\n const { t } = useTranslation('quran-reader');\n const [isLoading, setIsLoading] = useState(false);\n const [showFootnote, setShowFootnote] = useState(true);\n const [footnote, setFootnote] = useState<Footnote>(null);\n const [activeFootnoteName, setActiveFootnoteName] = useState<string | null>(null);\n const [activeSubFootnoteName, setActiveSubFootnoteName] = useState<string | null>(null);\n const [subFootnote, setSubFootnote] = useState<Footnote>(null);\n\n const PRE_DEFINED_FOOTNOTES = {\n sg: t('footnote-sg'),\n pl: t('footnote-pl'),\n dl: t('footnote-dl'),\n };\n\n const resetFootnote = () => {\n setFootnote(null);\n setSubFootnote(null);\n setIsLoading(false);\n setActiveFootnoteName(null);\n setActiveSubFootnoteName(null);\n };\n\n const resetSubFootnote = () => {\n setSubFootnote(null);\n setActiveSubFootnoteName(null);\n };\n\n /**\n * Handle when the translation text is clicked. This is needed to handle when a footnote\n * is clicked since we receive the translation text as HTML from BE. Any footnote will\n * be inside an <sup>...</sup> element. so when the translation container is clicked\n * we check whether the clicked element is of tag name SUP and if so, we handle showing the\n * footnote as following:\n *\n * 1. If it's not a sub-footnote (a footnote inside a footnote) which is all translations\n * except Bridge's Foundation translation:\n * 1. check if the sup element has foot_note attribute (the ID) and if it has:\n * 1. Check if we already have a footnote in the local state with the same ID:\n * 1. if yes, it means this is the second time the user clicks on the\n * footnote so we should close the footnote.\n * 2. if no, it means we need to call BE to fetch the footnote text by its ID.\n * 2. if not, it means it's a pre-defined footnote and in this case, we access the text\n * inside the element and check if it's in the list of pre-defined footnotes and if it\n * is, we get the value from the pre-defined footnotes and assign it as the footnote\n * text without having to call BE (only happens with Bridge's Foundation translation)\n * 2. If it's a sub-footnote it will only have pre-defined footnotes so we handle it the same\n * way as above (only happens with Bridge's Foundation translation, ex: Surah 30, Verse 11).\n *\n * @param {MouseEvent} event\n * @param {boolean} isSubFootnote whether we are handling a footnote or a sub-footnote (only happens\n * with Bridge's Foundation translation).\n */\n const onTextClicked = (event: MouseEvent, isSubFootnote = false) => {\n const target = event.target as HTMLElement;\n\n // if we just clicked on anything other than a footnote element, return early.\n if (target.tagName !== 'SUP') {\n return;\n }\n // we get the text inside the sup element and trim the extra spaces.\n const footnoteText = target.innerText.trim();\n\n // if it's the main footnote and not the sub footnote.\n if (!isSubFootnote) {\n const footNoteId = target.getAttribute('foot_note');\n\n // Set the activeFootnoteNumber to the current number of the footnote from the <sup> innerHTML\n setActiveFootnoteName(footnoteText);\n\n // if it's the normal case that needs us to call BE and not a fixed footnote like the ones found for Bridge's translation.\n if (footNoteId) {\n // if this is the second time to click the footnote, close it\n if (showFootnote && footnote && footnote.id === Number(footNoteId)) {\n logButtonClick('translation_footnote_double_click_to_close');\n resetFootnote();\n } else {\n logButtonClick('translation_show_footnote');\n resetSubFootnote();\n setShowFootnote(true);\n setIsLoading(true);\n getFootnote(footNoteId)\n .then((res) => {\n if (res.status !== 500) {\n setFootnote(res.footNote);\n }\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n } else if (footnote && footnote.id === footnoteText) {\n // if this is the second time we are clicking on the footnote, we close it.\n logButtonClick('translation_pre_defined_footnote_double_click_to_close');\n resetFootnote();\n } else if (PRE_DEFINED_FOOTNOTES[footnoteText]) {\n logButtonClick('translation_pre_defined_footnote');\n resetSubFootnote();\n setFootnote({\n id: footnoteText,\n text: PRE_DEFINED_FOOTNOTES[footnoteText],\n });\n }\n } else {\n // Set the activeSubFootnoteNumber to the current number of the footnote from the <sup> innerHTML\n setActiveSubFootnoteName(footnoteText);\n\n const subFootnoteId = `${footnote.id} - ${footnoteText}`;\n // if this is the second time we are clicking on the sub footnote, we close it.\n if (subFootnote && subFootnote.id === subFootnoteId) {\n logButtonClick('translation_sub_footnote_double_click_to_close');\n resetSubFootnote();\n } else if (PRE_DEFINED_FOOTNOTES[footnoteText]) {\n logButtonClick('translation_show_sub_footnote');\n setSubFootnote({\n id: subFootnoteId,\n text: PRE_DEFINED_FOOTNOTES[footnoteText],\n });\n }\n }\n };\n const hideFootnote = () => setShowFootnote(false);\n const langData = getLanguageDataById(languageId);\n\n const shouldShowFootnote = showFootnote && (footnote || isLoading);\n return (\n <div className={styles[`translation-font-size-${translationFontScale}`]}>\n <div\n onClick={(event) => onTextClicked(event)}\n className={classNames(styles.text, styles[langData.direction], styles[langData.font])}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n {shouldShowFootnote && (\n <FootnoteText\n footnoteName={activeFootnoteName || undefined}\n footnote={footnote}\n isLoading={isLoading}\n onCloseClicked={() => {\n logButtonClick('translation_footnote_close');\n if (isLoading) {\n hideFootnote();\n } else {\n resetFootnote();\n }\n }}\n onTextClicked={(event) => onTextClicked(event, true)}\n />\n )}\n {subFootnote && (\n <FootnoteText\n footnoteName={activeSubFootnoteName || undefined}\n footnote={subFootnote}\n onCloseClicked={resetSubFootnote}\n />\n )}\n {resourceName && (\n <p\n className={classNames(\n styles.translationName,\n styles[langData.direction],\n styles[langData.font],\n )}\n // eslint-disable-next-line i18next/no-literal-string\n >\n — {resourceName}\n </p>\n )}\n </div>\n );\n};\n\nexport default TranslationText;\n","import React, { useMemo } from 'react';\n\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport PlainVerseText from '@/components/Verse/PlainVerseText';\nimport useQcfFont from '@/hooks/useQcfFont';\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { getVerseWords } from '@/utils/verse';\nimport Verse from 'types/Verse';\n\ninterface Props {\n verses: Verse[];\n fontScale?: number;\n}\n\nconst VerseTextPreview: React.FC<Props> = ({ verses, fontScale }) => {\n const { quranFont } = useSelector(selectQuranReaderStyles, shallowEqual);\n const tafsirVerses = useMemo(\n () =>\n Object.values(verses).map((verse) => ({\n ...verse,\n pageNumber: verse.words[0].pageNumber,\n })),\n [verses],\n );\n useQcfFont(quranFont, tafsirVerses);\n const words = useMemo(() => verses.map((verse) => getVerseWords(verse)).flat(), [verses]);\n return <PlainVerseText fontScale={fontScale} words={words} />;\n};\n\nexport default VerseTextPreview;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useEffect, useState } from 'react';\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport classNames from 'classnames';\n\nimport styles from './Collapsible.module.scss';\n\ntype ChildrenRenderProps = {\n isOpen: boolean;\n};\n\ntype Props = {\n title?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n children: ({ isOpen }: ChildrenRenderProps) => React.ReactNode;\n isDefaultOpen?: boolean;\n shouldOpen?: boolean;\n shouldRotatePrefixOnToggle?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n direction?: CollapsibleDirection;\n};\n\nexport enum CollapsibleDirection {\n Left = 'left',\n Right = 'right',\n}\n\nconst Collapsible = ({\n isDefaultOpen = false,\n prefix,\n title,\n suffix,\n children,\n shouldRotatePrefixOnToggle,\n shouldOpen,\n onOpenChange,\n direction = CollapsibleDirection.Left,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n\n useEffect(() => {\n setIsOpen(shouldOpen);\n }, [shouldOpen]);\n\n const onSuffixClicked = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const onHeaderClicked = () => setIsOpen((preValue) => !preValue);\n\n return (\n <CollapsiblePrimitive.Root onOpenChange={onOpenChange} open={isOpen}>\n <CollapsiblePrimitive.Trigger asChild>\n <div className={styles.header} onClick={onHeaderClicked}>\n {direction === CollapsibleDirection.Left ? (\n <>\n <div className={styles.headerLeft}>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n {title}\n </div>\n <div className={styles.suffixContainer} onClick={onSuffixClicked}>\n {suffix}\n </div>\n </>\n ) : (\n <>\n <div className={styles.headerLeft}>{title}</div>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n </>\n )}\n </div>\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.CollapsibleContent>\n {isOpen && children({ isOpen })}\n </CollapsiblePrimitive.CollapsibleContent>\n </CollapsiblePrimitive.Root>\n );\n};\n\nexport default Collapsible;\n","import { useEffect, useCallback, useRef } from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { selectLoadedFontFaces, addLoadedFontFace } from '@/redux/slices/QuranReader/font-faces';\nimport { removeItemFromArray } from '@/utils/array';\nimport {\n getFontFaceNameForPage,\n getV1OrV2FontFaceSource,\n getPagesByVerses,\n isQCFFont,\n} from '@/utils/fontFaceHelper';\nimport { QuranFont } from 'types/QuranReader';\nimport Verse from 'types/Verse';\n\n/**\n * This hook manually request the browser to download the font for each page\n * of QCF's V1 and V2 Mushafs. After each resource has been downloaded, we\n * store it in redux so that VerseText can use it to determine whether the fallback\n * text and font should be font or not.\n *\n * Notes, loaded font is reset every time the user switch the font\n * see src/components/Navbar/SettingsDrawer/QuranFontSection.tsx\n *\n * @param {QuranFont} quranFont\n * @param {Verse[]} verses\n */\nconst useQcfFont = (quranFont: QuranFont, verses: Verse[]) => {\n const currentlyFetchingFonts = useRef([]);\n const dispatch = useDispatch();\n const isFontQCF = isQCFFont(quranFont);\n const loadedFonts = useSelector(selectLoadedFontFaces);\n const onFontLoaded = useCallback(\n (fontFace: string) => {\n dispatch(addLoadedFontFace(fontFace));\n },\n [dispatch],\n );\n\n // listen to changes in verses (this is due to infinite scrolling fetching more verses).\n useEffect(() => {\n if (isFontQCF && verses.length > 0) {\n // loop through unique page numbers of the current verses\n getPagesByVerses(verses).forEach((pageNumber) => {\n const isV1 = quranFont === QuranFont.MadaniV1;\n const fontFaceName = getFontFaceNameForPage(isV1, pageNumber);\n const fontFace = new FontFace(fontFaceName, getV1OrV2FontFaceSource(isV1, pageNumber));\n // we only want to load fonts that were not loaded and also are not currently being loaded\n if (\n !currentlyFetchingFonts.current.includes(fontFaceName) &&\n !loadedFonts.includes(fontFaceName)\n ) {\n currentlyFetchingFonts.current = [...currentlyFetchingFonts.current, fontFaceName];\n fontFace.display = 'block';\n document.fonts.add(fontFace);\n // load the font-face programmatically\n fontFace\n .load()\n .then(() => {\n // store the font face in Redux slice\n onFontLoaded(fontFaceName);\n })\n .finally(() => {\n // whether we failed or succeeded to fetch the fontFace, we remove it from currently fetching array\n currentlyFetchingFonts.current = removeItemFromArray(\n fontFaceName,\n currentlyFetchingFonts.current,\n );\n });\n }\n });\n }\n }, [quranFont, verses, loadedFonts, isFontQCF, currentlyFetchingFonts, onFontLoaded]);\n};\n\nexport default useQcfFont;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ReadMoreCollapsible.module.scss';\n\nimport Collapsible, { CollapsibleDirection } from '@/components/dls/Collapsible/Collapsible';\nimport ChevronDownIcon from '@/icons/chevron-down.svg';\nimport { logEvent } from '@/utils/eventLogger';\n\nexport enum Section {\n MINDFUL_FASTING = 'mindful_fasting',\n AYAH_LOOKUP_CHALLENGE = 'ayah_challenge',\n MAS_QUIZ = 'mas_quiz',\n LEARNING_PLANS = 'learning_plans',\n MONTH_STREAK = 'month_streak',\n INVITE_PEOPLE = 'invite_people',\n CRISIS = 'crises',\n INSPIRING_READING = 'inspiring_reading',\n}\n\nexport enum TitleType {\n SHOW_MORE = 'show_more',\n LEARN_MORE = 'learn_more',\n}\n\ntype Props = {\n children: React.ReactNode;\n section: Section;\n titleType?: TitleType;\n};\n\nconst ReadMoreCollapsible: React.FC<Props> = ({\n children,\n section,\n titleType = TitleType.LEARN_MORE,\n}) => {\n const { t } = useTranslation('common');\n\n const onCollapseOpenChange = (isCollapseOpen: boolean) => {\n if (isCollapseOpen) {\n logEvent('ramadan_activities_collapse_opened', { section });\n } else {\n logEvent('ramadan_activities_collapse_closed', { section });\n }\n };\n return (\n <div className={styles.container}>\n <Collapsible\n direction={CollapsibleDirection.Right}\n onOpenChange={(isCollapseOpen) => onCollapseOpenChange(isCollapseOpen)}\n title={\n <span className={styles.title}>\n {t(titleType === TitleType.LEARN_MORE ? 'learn-more' : 'show-more')}\n </span>\n }\n prefix={<ChevronDownIcon />}\n shouldRotatePrefixOnToggle\n >\n {({ isOpen: isOpenRenderProp }) => {\n if (!isOpenRenderProp) return null;\n\n return <div className={styles.body}>{children}</div>;\n }}\n </Collapsible>\n </div>\n );\n};\n\nexport default ReadMoreCollapsible;\n","import React from 'react';\n\nimport Link from '@/dls/Link/Link';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ntype Props = {\n href: string;\n text: string;\n};\n\nconst InlineLink: React.FC<Props> = ({ href, text }) => {\n const onLinkClicked = () => {\n logButtonClick('ramadan_activities_link', { href });\n };\n return (\n <>\n {' '}\n <Link onClick={onLinkClicked} isNewTab href={href}>\n {text}\n </Link>{' '}\n </>\n );\n};\n\nexport default InlineLink;\n","/* eslint-disable i18next/no-literal-string */\nimport React from 'react';\n\nimport styles from './Hero.module.scss';\n\nconst RamadanActivityHero = () => {\n return (\n <div className={styles.container} dir=\"ltr\">\n <div className={styles.rowContainer}>\n <div className={styles.row}>\n <p className={styles.header}>Ramadan Activities</p>\n <div className={styles.desc}>\n As we welcome the month of Ramadan, were excited to present programs and features to\n <b> help you on your journey with the Quran</b>. These resources are aimed at enriching\n and deepening your connection with the words of Allah in Ramadan and beyond.\n <br />\n <br />\n Browse the list and select the programs and features that align best with your goals and\n needs:\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RamadanActivityHero;\n","/* eslint-disable react/no-unescaped-entities */\n/* eslint-disable max-lines */\n/* eslint-disable i18next/no-literal-string */\n/* eslint-disable jsx-a11y/anchor-has-content */\n/* eslint-disable jsx-a11y/control-has-associated-label */\nimport classNames from 'classnames';\nimport { NextPage } from 'next';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport pageStyles from './RamadanActivities.module.scss';\n\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport PageContainer from '@/components/PageContainer';\nimport EmbeddableVerseCell from '@/components/QuranReader/TranslationView/EmbeddableVerseCell';\nimport InlineLink from '@/components/RamadanActivity/InlineLink';\nimport RamadanActivityHero from '@/components/RamadanActivity/RamadanActivityHero';\nimport ReadMoreCollapsible, {\n Section,\n TitleType,\n} from '@/components/RamadanActivity/ReadMoreCollapsible';\nimport Button, { ButtonVariant } from '@/dls/Button/Button';\nimport styles from '@/pages/contentPage.module.scss';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getLanguageAlternates } from '@/utils/locale';\nimport {\n getCanonicalUrl,\n getLoginNavigationUrl,\n getRamadanActivitiesNavigationUrl,\n getReadingGoalNavigationUrl,\n} from '@/utils/navigation';\n\nconst PATH = getRamadanActivitiesNavigationUrl();\nconst RamadanActivitiesPage: NextPage = (): JSX.Element => {\n const { t, lang } = useTranslation('ramadan-activities');\n\n const onButtonClicked = (section: Section) => {\n logButtonClick(`${section}_ramadan_activities_cta`);\n };\n\n return (\n <>\n <NextSeoWrapper\n title={t('ramadan-activities')}\n url={getCanonicalUrl(lang, PATH)}\n languageAlternates={getLanguageAlternates(PATH)}\n description={t('ramadan-activities-desc')}\n />\n <RamadanActivityHero />\n <PageContainer>\n <div className={pageStyles.verseContainer}>\n <EmbeddableVerseCell chapterId={2} verseNumber={183} fontScale={3} />\n </div>\n <div className={classNames(pageStyles.container, styles.contentPage)} dir=\"ltr\">\n <div className={styles.subSection} id=\"mindful\">\n <h1>Mindful Fasting📿</h1>\n <div className={styles.subHeading}>\n A QuranReflect interactive Program with Shaykh Hammad Fahim.\n </div>\n <div>\n “Mindful Fasting” will explore how fasting purifies the soul, disciplines the mind,\n and awakens the heart, offering a transformative experience that deepens our\n relationship with Allah. This program is a gateway to a profound journey of faith and\n reflection.\n </div>\n <ReadMoreCollapsible section={Section.MINDFUL_FASTING}>\n <div>\n When you\n <InlineLink text=\"Sign up\" href=\"https://quranreflect.com/users/sign_in\" />\n for QuranReflect.com you will automatically follow Shaykh Fahim and receive updates.\n Search #MindfulFasting throughout the month on\n <InlineLink text=\"QuranReflect.com\" href=\"https://quranreflect.com\" />\n to read reflections from the community. (If you already have a Quran.com account -\n signing in to QuranReflect with the same email will link the two accounts.)\n </div>\n </ReadMoreCollapsible>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.MINDFUL_FASTING);\n }}\n variant={ButtonVariant.Shadow}\n href=\"https://quranreflect.com\"\n isNewTab\n className={styles.button}\n >\n Join QuranReflect Community\n </Button>\n </div>\n </div>\n <div className={styles.subSection} id=\"ayah-lookup\">\n <h1>Ayah Lookup Challenge 🔎</h1>\n <div className={styles.subHeading}>with Dr Mohannad Hakeem</div>\n <div>\n Are you seeking to enhance your connection with the Quran while being challenged to\n delve deeper and search for answers? If so, consider exploring a fresh approach that\n can help you deepen your relationship with the Quran.\n </div>\n <ReadMoreCollapsible section={Section.AYAH_LOOKUP_CHALLENGE}>\n <>\n <div>\n Join Dr. Mohannad Hakeem's Ayah Lookup Challenge where he will share a question\n that can be answered with an ayah in the Quran. Sharpen your reading and\n researching skills as you search for the answer within the suggested range of\n verses.\n </div>\n <br />\n <div>\n Check back at the end of the day when Dr. Mohannad posts the answer to see if you\n got it right. To join this exciting challenge, follow\n <InlineLink text=\"Dr. Mohannad Hakeem\" href=\"https://quranreflect.com/mohannad\" />\n on QuranReflect.com and take part in this enriching experience! You may also\n search\n <InlineLink\n text=\"#AyahLookUp\"\n href=\"https://quranreflect.com/?authors=%40mohannad&tags=%23AyahLookup&tab=newest\"\n />{' '}\n on QuranReflect.\n </div>\n </>\n </ReadMoreCollapsible>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.AYAH_LOOKUP_CHALLENGE);\n }}\n variant={ButtonVariant.Shadow}\n href=\"https://quranreflect.com/?authors=%40mohannad&tags=%23AyahLookup&tab=newest\"\n isNewTab\n className={styles.button}\n >\n Follow AyahLookupChallenge\n </Button>\n </div>\n </div>\n <div className={styles.subSection} id=\"mas-quiz\">\n <h1>MAS Ramadan Quiz Trivia (live) 🎙️</h1>\n <div>\n A daily 10-minute live trivia quiz featuring 10 quick questions from the Quran.\n Participants will also be assigned one Quran verse a week to reflect upon. See below\n for details on prizes!\n </div>\n <ReadMoreCollapsible section={Section.MAS_QUIZ}>\n <div>\n To help achieve a closer connection with the Quran, MAS will host a nationwide\n 10-minute live, interactive quiz daily where contestants get to test and show their\n knowledge of the Quran.\n <br />\n MAS will offer winners residing in the U.S. monetary prizes with the option to\n donate them to a charity (Insha’Allah, prizes can be extended to a global audience\n in coming years.)\n </div>\n </ReadMoreCollapsible>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.MAS_QUIZ);\n }}\n variant={ButtonVariant.Shadow}\n href=\"https://quranreflect.com/masrqt\"\n isNewTab\n className={styles.button}\n >\n Follow MAS RQT\n </Button>\n </div>\n </div>\n <div className={styles.subSection}>\n <h1>Learning Plans on Quran.com 📖</h1>\n <div>\n <b>Boost your knowledge with easy-to-follow lessons</b> that keep you growing in your\n journey with the Quran. Your progress is tracked until you reach the finish line.\n Start a Learning Plan today!\n </div>\n <ReadMoreCollapsible section={Section.LEARNING_PLANS}>\n <ul>\n <li>\n <InlineLink\n text=\"How to Explore the Quran: One Ayah at a Time\"\n href=\"/learning-plans/how-to-explore-the-quran\"\n />\n by Dr. Sohaib Saeed\n </li>\n <li>\n <InlineLink\n text=\"Five Lenses for Reflecting on the Quran\"\n href=\"/learning-plans/five-lenses-to-reflect-on-the-quran\"\n />\n by Dr. Sohaib Saeed\n </li>\n <li>\n <InlineLink\n text=\"Preparing Our Hearts for Ramadan\"\n href=\"/learning-plans/preparing-our-hearts-for-ramadan\"\n />\n by Shaykh Hammad Fahim\n </li>\n <li>\n More programs coming soon, insha’Allah. Keep an eye out on our\n <InlineLink text=\"Learning Plans\" href=\"/learning-plans\" />\n page.\n </li>\n </ul>\n </ReadMoreCollapsible>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.LEARNING_PLANS);\n }}\n variant={ButtonVariant.Shadow}\n href=\"/learning-plans\"\n isNewTab\n className={styles.button}\n >\n View Learning Plans\n </Button>\n </div>\n </div>\n <div className={styles.subSection}>\n <h1>\n Keep a 30 day Quran reading streak and create a custom goal with Quran Growth Journey!\n 🏅\n </h1>\n <div>\n Can you keep a 30 day Quran reading streak This Ramadan? Simply\n <InlineLink text=\"Log-in\" href={getLoginNavigationUrl()} />\n to Quran.com and begin reading to start your Streak! You can also create a custom goal\n that will help you stay on track:\n </div>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.MONTH_STREAK);\n }}\n variant={ButtonVariant.Shadow}\n href={getReadingGoalNavigationUrl()}\n isNewTab\n className={styles.button}\n >\n Create Goal\n </Button>\n </div>\n </div>\n <div className={styles.subSection}>\n <h1>Invite people to learn about the Quran this Ramadan 💌</h1>\n <div>\n Help someone who has never read the Quran learn more and begin their Quran journey!\n Share our <InlineLink text=\"About The Quran\" href=\"/about-the-quran\" /> page designed\n to help newcomers ease into their Quran reading experience. View sample invitation:\n </div>\n <ReadMoreCollapsible section={Section.INVITE_PEOPLE}>\n <>\n <div>\n “Ramadan is not just a month of fasting for Muslims; it's also about the Quran's\n revelation, a time of deep reflection & connection. 📖 Curious about its messages?\n Visit <InlineLink text=\"Quran.com/about-the-Quran\" href=\"/about-the-quran\" /> to\n find answers to key questions and tips on how to explore it.”\n </div>\n <br />\n <div>\n You can also share an invitation to view responses to a reflection activity based\n on the the viral hashtag\n <InlineLink\n text=\"#QuranBookClub\"\n href=\"https://quranreflect.com/?tags=%23QuranBookClub\"\n />\n .\n </div>\n <br />\n <div>\n QuranReflect asks: \"If you could introduce someone to the Quran with just one\n ayah, which would it be, and why?\"\n </div>\n <br />\n <div>\n View responses, write your own, and invite people to read the Quran for the first\n time.\n </div>\n </>\n </ReadMoreCollapsible>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.INVITE_PEOPLE);\n }}\n variant={ButtonVariant.Shadow}\n href=\"/about-the-quran\"\n isNewTab\n className={styles.button}\n >\n About The Quran\n </Button>\n </div>\n </div>\n <div className={styles.subSection}>\n <h1>Reflecting In Crisis ❤️‍🩹</h1>\n <div>\n Join the QuranReflect community for an on-going reflection theme dedicated to\n reflecting upon the Quran during these difficult times of crisis. Read and interact\n with over 60 Personal reflections shared by our community members and share your own.\n <InlineLink\n text=\"#ReflectingInCrisis\"\n href=\"https://quranreflect.com/?tags=%23ReflectingInCrisis&tab=most_popular\"\n />\n </div>\n <div className={styles.ctaContainer}>\n <Button\n onClick={() => {\n onButtonClicked(Section.CRISIS);\n }}\n variant={ButtonVariant.Shadow}\n href=\"https://quranreflect.com/?tags=%23ReflectingInCrisis&tab=most_popular\"\n isNewTab\n className={styles.button}\n >\n Go to #ReflectingInCrisis\n </Button>\n </div>\n </div>\n <div className={styles.subSection} id=\"ramadan-reading\">\n <h1>Inspiring Ramadan Reading 🌞</h1>\n <div>\n Explore a collection of inspirational Ramadan reflections from the QuranReflect\n Community curated to help you connect more deeply with the Quran.\n </div>\n <ul>\n <li>\n <InlineLink\n text=\"Purifying Our Speech This Ramadan: A Time to Train our Tongues\"\n href=\"https://quranreflect.com/posts/17754\"\n />\n </li>\n <li>\n <InlineLink\n text=\"When everything looks broken\"\n href=\"https://quranreflect.com/posts/13479\"\n />\n </li>\n </ul>\n <ReadMoreCollapsible\n section={Section.INSPIRING_READING}\n titleType={TitleType.SHOW_MORE}\n >\n <ul>\n <li>\n <InlineLink\n text=\"Taqwa Through Trials: The Gratitude Gained from Ramadan Fasting\"\n href=\"https://quranreflect.com/posts/7666\"\n />\n </li>\n <li>\n <InlineLink\n text=\"A Lesson on Mortality from a Missed Cup of Coffee\"\n href=\"https://quranreflect.com/posts/6797\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Reflections on Faith and Fellowship in a Microbus Journey\"\n href=\"https://quranreflect.com/posts/3249\"\n />\n </li>\n <li>\n <InlineLink\n text=\"A Limited Number of Days\"\n href=\"https://quranreflect.com/posts/17824\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Countless Mercies: Reflecting on the Infinite Blessings of Allah\"\n href=\"https://quranreflect.com/posts/17852\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Nurturing a God-Conscious Character Amid Imperfection\"\n href=\"https://quranreflect.com/posts/13453\"\n />\n </li>\n <li>\n <InlineLink\n text=\"My Lord Prescribed This Fast For Me\"\n href=\"https://quranreflect.com/posts/17399\"\n />\n </li>\n <li>\n <InlineLink\n text=\"You See More In the Dark\"\n href=\"https://quranreflect.com/posts/281\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Overcoming Self-Hatred: A Journey Towards Healing and Faith in Ramadan\"\n href=\"https://quranreflect.com/posts/13513\"\n />\n </li>\n <li>\n <InlineLink\n text=\"On Taqwa: Understanding the Meaning Beyond Simple Translations\"\n href=\"https://quranreflect.com/posts/10511\"\n />\n </li>\n <li>\n <InlineLink\n text=\"“Draw Near!” Coming Closer to The Creator\"\n href=\"https://quranreflect.com/posts/8876\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Are We Waiting to Return to Sin, or Do We Want To Permanently Break Free?\"\n href=\"https://quranreflect.com/posts/17987\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Mind Over Matter: Developing Self-Restraint in Ramadan\"\n href=\"https://quranreflect.com/posts/6785\"\n />\n </li>\n <li>\n <InlineLink\n text=\"A Profound Lesson Learned While Delivering Food\"\n href=\"https://quranreflect.com/posts/8694\"\n />\n </li>\n <li>\n <InlineLink\n text=\"Allahu Akbar: Embracing the Takbir and Thankfulness as Ramadan Ends\"\n href=\"https://quranreflect.com/posts/3443\"\n />\n </li>\n </ul>\n </ReadMoreCollapsible>\n </div>\n <div className={styles.subSection}>\n We hope these activities enrich your Ramadan, deepening your connection with the Quran.\n Share this list of activities with anyone who may benefit.\n </div>\n </div>\n </PageContainer>\n </>\n );\n};\n\nexport default RamadanActivitiesPage;\n","/**\n * Shorten a text by setting the maximum number of characters\n * by the value of the parameter and adding \"...\" at the end.\n *\n * @param {string} rawString\n * @param {number} length\n * @param {string} suffix\n * @returns {string}\n */\nexport const truncateString = (rawString: string, length: number, suffix = '...'): string => {\n const characters = rawString.split('', length);\n let shortenedText = '';\n for (let index = 0; index < characters.length; index += 1) {\n const character = characters[index];\n if (shortenedText.length === length - 1) {\n shortenedText = `${shortenedText}${character}${suffix}`;\n break;\n }\n shortenedText = `${shortenedText}${character}`;\n }\n return shortenedText;\n};\n\n/**\n * Strip HTML tags from a string.\n *\n * @param {string} rawString\n * @returns {string}\n */\nexport const stripHTMLTags = (rawString: string): string => rawString.replace(/(<([^>]+)>)/gi, '');\n\n/**\n * Convert a slugified collection id to collection id only after\n * removing the slug.\n *\n * @param {string} slugifiedCollectionId\n * @returns {string}\n */\nexport const slugifiedCollectionIdToCollectionId = (slugifiedCollectionId: string): string => {\n if (!slugifiedCollectionId) {\n return '';\n }\n const splits = slugifiedCollectionId.split('-');\n // if there is no slug in the url (collections with a name that cannot be slugified e.g. emoticons)\n if (splits.length === 1) {\n return splits[0];\n }\n return splits[splits.length - 1];\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Error_container__1m9XV\",\"text\":\"Error_text__yg4kD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PageContainer_container__1TUET\",\"fullWidth\":\"PageContainer_fullWidth__RU5GM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verseContainer\":\"EmbeddableVerseCell_verseContainer__GCj_d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footnoteContainer\":\"FootnoteText_footnoteContainer__2GrJa\",\"text\":\"FootnoteText_text__o_c03\",\"header\":\"FootnoteText_header__M_Q2C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text\":\"TranslationText_text__4atf8\",\"translation-font-size-1\":\"TranslationText_translation-font-size-1__TqSPj\",\"translation-font-size-2\":\"TranslationText_translation-font-size-2__AW2i1\",\"translation-font-size-3\":\"TranslationText_translation-font-size-3__ww3t4\",\"translation-font-size-4\":\"TranslationText_translation-font-size-4__TKdKv\",\"translation-font-size-5\":\"TranslationText_translation-font-size-5__5bjGX\",\"translation-font-size-6\":\"TranslationText_translation-font-size-6__6SMJi\",\"translation-font-size-7\":\"TranslationText_translation-font-size-7__03ez5\",\"translation-font-size-8\":\"TranslationText_translation-font-size-8__IA0Tr\",\"translation-font-size-9\":\"TranslationText_translation-font-size-9__tq3IG\",\"translation-font-size-10\":\"TranslationText_translation-font-size-10__A9YEa\",\"ltr\":\"TranslationText_ltr__146rZ\",\"rtl\":\"TranslationText_rtl__ytrpw\",\"urdu\":\"TranslationText_urdu__9N37Y\",\"kurdish\":\"TranslationText_kurdish__je0yf\",\"divehi\":\"TranslationText_divehi__e3rqQ\",\"translationName\":\"TranslationText_translationName__Vm9Sj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Hero_container__MwEz4\",\"rowContainer\":\"Hero_rowContainer__txyaV\",\"row\":\"Hero_row__3_Icm\",\"header\":\"Hero_header__DT50D\",\"desc\":\"Hero_desc__gLk4u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ReadMoreCollapsible_container__Gd0c_\",\"body\":\"ReadMoreCollapsible_body__nK2hB\",\"title\":\"ReadMoreCollapsible_title__afl70\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Collapsible_header__CmhJq\",\"headerLeft\":\"Collapsible_headerLeft__Xh00n\",\"prefixContainer\":\"Collapsible_prefixContainer__AVHUT\",\"prefixRotated\":\"Collapsible_prefixRotated__bjKLn\",\"suffixContainer\":\"Collapsible_suffixContainer__uZ1IW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentPage\":\"contentPage_contentPage__GtoGM\",\"heading\":\"contentPage_heading__COCGv\",\"italicLarge\":\"contentPage_italicLarge__JVHhO\",\"image\":\"contentPage_image__Vgw2Y\",\"list\":\"contentPage_list__yuDCq\",\"underline\":\"contentPage_underline__1hrK7\",\"subListItem\":\"contentPage_subListItem__jozHS\",\"ctaContainer\":\"contentPage_ctaContainer__WdRQb\",\"section\":\"contentPage_section__mOqj2\",\"subSection\":\"contentPage_subSection__Crmto\",\"innerSection\":\"contentPage_innerSection__K7hW3\",\"bold\":\"contentPage_bold___v0J7\",\"subHeading\":\"contentPage_subHeading__kNRWM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RamadanActivities_container__vMBhV\",\"verseContainer\":\"RamadanActivities_verseContainer__N3B96\"};","import $73KQ4$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $73KQ4$forwardRef, createElement as $73KQ4$createElement, useCallback as $73KQ4$useCallback, useState as $73KQ4$useState, useRef as $73KQ4$useRef, useEffect as $73KQ4$useEffect} from \"react\";\nimport {composeEventHandlers as $73KQ4$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {createContextScope as $73KQ4$createContextScope} from \"@radix-ui/react-context\";\nimport {useControllableState as $73KQ4$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {useLayoutEffect as $73KQ4$useLayoutEffect} from \"@radix-ui/react-use-layout-effect\";\nimport {useComposedRefs as $73KQ4$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {Primitive as $73KQ4$Primitive} from \"@radix-ui/react-primitive\";\nimport {Presence as $73KQ4$Presence} from \"@radix-ui/react-presence\";\nimport {useId as $73KQ4$useId} from \"@radix-ui/react-id\";\n\n\n\n\n\n\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$COLLAPSIBLE_NAME = 'Collapsible';\nconst [$409067139f391064$var$createCollapsibleContext, $409067139f391064$export$952b32dcbe73087a] = $73KQ4$createContextScope($409067139f391064$var$COLLAPSIBLE_NAME);\nconst [$409067139f391064$var$CollapsibleProvider, $409067139f391064$var$useCollapsibleContext] = $409067139f391064$var$createCollapsibleContext($409067139f391064$var$COLLAPSIBLE_NAME);\nconst $409067139f391064$export$6eb0f7ddcda6131f = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { __scopeCollapsible: __scopeCollapsible , open: openProp , defaultOpen: defaultOpen , disabled: disabled , onOpenChange: onOpenChange , ...collapsibleProps } = props;\n const [open = false, setOpen] = $73KQ4$useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /*#__PURE__*/ $73KQ4$createElement($409067139f391064$var$CollapsibleProvider, {\n scope: __scopeCollapsible,\n disabled: disabled,\n contentId: $73KQ4$useId(),\n open: open,\n onOpenToggle: $73KQ4$useCallback(()=>setOpen((prevOpen)=>!prevOpen\n )\n , [\n setOpen\n ])\n }, /*#__PURE__*/ $73KQ4$createElement($73KQ4$Primitive.div, $73KQ4$babelruntimehelpersesmextends({\n \"data-state\": $409067139f391064$var$getState(open),\n \"data-disabled\": disabled ? '' : undefined\n }, collapsibleProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($409067139f391064$export$6eb0f7ddcda6131f, {\n displayName: $409067139f391064$var$COLLAPSIBLE_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$TRIGGER_NAME = 'CollapsibleTrigger';\nconst $409067139f391064$export$c135dce7b15bbbdc = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { __scopeCollapsible: __scopeCollapsible , ...triggerProps } = props;\n const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$TRIGGER_NAME, __scopeCollapsible);\n return /*#__PURE__*/ $73KQ4$createElement($73KQ4$Primitive.button, $73KQ4$babelruntimehelpersesmextends({\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": $409067139f391064$var$getState(context.open),\n \"data-disabled\": context.disabled ? '' : undefined,\n disabled: context.disabled\n }, triggerProps, {\n ref: forwardedRef,\n onClick: $73KQ4$composeEventHandlers(props.onClick, context.onOpenToggle)\n }));\n});\n/*#__PURE__*/ Object.assign($409067139f391064$export$c135dce7b15bbbdc, {\n displayName: $409067139f391064$var$TRIGGER_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$CONTENT_NAME = 'CollapsibleContent';\nconst $409067139f391064$export$aadde00976f34151 = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { forceMount: forceMount , ...contentProps } = props;\n const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$CONTENT_NAME, props.__scopeCollapsible);\n return /*#__PURE__*/ $73KQ4$createElement($73KQ4$Presence, {\n present: forceMount || context.open\n }, ({ present: present })=>/*#__PURE__*/ $73KQ4$createElement($409067139f391064$var$CollapsibleContentImpl, $73KQ4$babelruntimehelpersesmextends({}, contentProps, {\n ref: forwardedRef,\n present: present\n }))\n );\n});\n/*#__PURE__*/ Object.assign($409067139f391064$export$aadde00976f34151, {\n displayName: $409067139f391064$var$CONTENT_NAME\n});\n/* -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$CollapsibleContentImpl = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { __scopeCollapsible: __scopeCollapsible , present: present , children: children , ...contentProps } = props;\n const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = $73KQ4$useState(present);\n const ref = $73KQ4$useRef(null);\n const composedRefs = $73KQ4$useComposedRefs(forwardedRef, ref);\n const heightRef = $73KQ4$useRef(0);\n const height = heightRef.current;\n const widthRef = $73KQ4$useRef(0);\n const width = widthRef.current; // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = $73KQ4$useRef(isOpen);\n const originalStylesRef = $73KQ4$useRef();\n $73KQ4$useEffect(()=>{\n const rAF = requestAnimationFrame(()=>isMountAnimationPreventedRef.current = false\n );\n return ()=>cancelAnimationFrame(rAF)\n ;\n }, []);\n $73KQ4$useLayoutEffect(()=>{\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n }; // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none'; // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width; // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */ }, [\n context.open,\n present\n ]);\n return /*#__PURE__*/ $73KQ4$createElement($73KQ4$Primitive.div, $73KQ4$babelruntimehelpersesmextends({\n \"data-state\": $409067139f391064$var$getState(context.open),\n \"data-disabled\": context.disabled ? '' : undefined,\n id: context.contentId,\n hidden: !isOpen\n }, contentProps, {\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : undefined,\n ...props.style\n }\n }), isOpen && children);\n});\n/* -----------------------------------------------------------------------------------------------*/ function $409067139f391064$var$getState(open) {\n return open ? 'open' : 'closed';\n}\nconst $409067139f391064$export$be92b6f5f03c0fe9 = $409067139f391064$export$6eb0f7ddcda6131f;\nconst $409067139f391064$export$41fb9f06171c75f4 = $409067139f391064$export$c135dce7b15bbbdc;\nconst $409067139f391064$export$7c6e2c02157bb7d2 = $409067139f391064$export$aadde00976f34151;\n\n\n\n\nexport {$409067139f391064$export$952b32dcbe73087a as createCollapsibleScope, $409067139f391064$export$6eb0f7ddcda6131f as Collapsible, $409067139f391064$export$c135dce7b15bbbdc as CollapsibleTrigger, $409067139f391064$export$aadde00976f34151 as CollapsibleContent, $409067139f391064$export$be92b6f5f03c0fe9 as Root, $409067139f391064$export$41fb9f06171c75f4 as Trigger, $409067139f391064$export$7c6e2c02157bb7d2 as Content};\n//# sourceMappingURL=index.mjs.map\n"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","window","__NEXT_P","push","DataFetcher","queryKey","render","renderError","initialData","loading","Spinner","dataFetcher","fetcher","showSpinnerOnRevalidate","onFetchSuccess","useSWRImmutable","then","res","Promise","resolve","catch","err","reject","fallbackData","data","error","isValidating","mutate","errorComponent","Error","onRetryClicked","memo","useTranslation","div","className","styles","p","message","OFFLINE_ERROR","Button","prefix","RetryIcon","size","ButtonSize","type","ButtonType","onClick","url","image","imageAlt","imageHeight","imageWidth","openGraph","description","rest","openGraphParams","images","alt","params","truncateString","NextSeo","children","chapterId","verseNumber","fontScale","quranReaderStyles","useSelector","selectQuranReaderStyles","shallowEqual","quranFont","mushafLines","getMushafId","mushaf","selectedTranslations","selectSelectedTranslations","areArraysEqual","lang","apiParams","words","perPage","translations","join","page","getDefaultWordFields","makeVersesUrl","toString","firstVerse","verses","VerseTextPreview","map","translation","TranslationText","translationFontScale","text","languageId","resourceName","id","footnoteName","footnote","onCloseClicked","onTextClicked","isLoading","findLanguageIdByLocale","landData","getLanguageDataById","variant","ButtonVariant","shape","ButtonShape","CloseIcon","classNames","transStyles","direction","font","dangerouslySetInnerHTML","__html","useState","setIsLoading","showFootnote","setShowFootnote","setFootnote","activeFootnoteName","setActiveFootnoteName","activeSubFootnoteName","setActiveSubFootnoteName","subFootnote","setSubFootnote","PRE_DEFINED_FOOTNOTES","sg","pl","dl","resetFootnote","resetSubFootnote","event","isSubFootnote","target","tagName","footnoteText","innerText","trim","subFootnoteId","logButtonClick","footNoteId","getAttribute","Number","getFootnote","status","footNote","finally","langData","shouldShowFootnote","FootnoteText","undefined","tafsirVerses","useMemo","values","verse","pageNumber","useQcfFont","getVerseWords","flat","PlainVerseText","CollapsibleDirection","isDefaultOpen","title","suffix","shouldRotatePrefixOnToggle","shouldOpen","onOpenChange","Left","isOpen","setIsOpen","useEffect","CollapsiblePrimitive","open","asChild","preValue","preventDefault","stopPropagation","currentlyFetchingFonts","useRef","dispatch","useDispatch","isFontQCF","isQCFFont","loadedFonts","selectLoadedFontFaces","onFontLoaded","useCallback","fontFace","addLoadedFontFace","getPagesByVerses","forEach","isV1","QuranFont","fontFaceName","getFontFaceNameForPage","FontFace","getV1OrV2FontFaceSource","current","includes","display","document","fonts","add","load","removeItemFromArray","href","Link","isNewTab","dir","b","br","Section","TitleType","section","titleType","LEARN_MORE","Collapsible","isCollapseOpen","logEvent","onCollapseOpenChange","span","ChevronDownIcon","PATH","getRamadanActivitiesNavigationUrl","onButtonClicked","NextSeoWrapper","getCanonicalUrl","languageAlternates","getLanguageAlternates","RamadanActivityHero","PageContainer","pageStyles","EmbeddableVerseCell","h1","ReadMoreCollapsible","MINDFUL_FASTING","InlineLink","AYAH_LOOKUP_CHALLENGE","MAS_QUIZ","LEARNING_PLANS","ul","li","getLoginNavigationUrl","MONTH_STREAK","getReadingGoalNavigationUrl","INVITE_PEOPLE","CRISIS","INSPIRING_READING","SHOW_MORE","rawString","characters","split","shortenedText","index","character","stripHTMLTags","replace","slugifiedCollectionIdToCollectionId","slugifiedCollectionId","splits","module","exports","$409067139f391064$var$COLLAPSIBLE_NAME","$409067139f391064$var$createCollapsibleContext","$409067139f391064$export$952b32dcbe73087a","$409067139f391064$var$CollapsibleProvider","$409067139f391064$var$useCollapsibleContext","$409067139f391064$export$6eb0f7ddcda6131f","forwardedRef","__scopeCollapsible","openProp","defaultOpen","disabled","collapsibleProps","setOpen","prop","defaultProp","onChange","scope","contentId","onOpenToggle","prevOpen","$409067139f391064$var$getState","ref","$409067139f391064$var$TRIGGER_NAME","$409067139f391064$export$c135dce7b15bbbdc","triggerProps","context","$409067139f391064$var$CONTENT_NAME","$409067139f391064$export$aadde00976f34151","forceMount","contentProps","present","$409067139f391064$var$CollapsibleContentImpl","isPresent","setIsPresent","composedRefs","heightRef","widthRef","isMountAnimationPreventedRef","originalStylesRef","rAF","requestAnimationFrame","cancelAnimationFrame","node","transitionDuration","style","animationName","rect","getBoundingClientRect","hidden","$409067139f391064$export$be92b6f5f03c0fe9","$409067139f391064$export$41fb9f06171c75f4"],"sourceRoot":""}