1 |
- {"version":3,"file":"../pages/reciters.js","mappings":"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","sources":["webpack://quran.com/src/pages/reciters/index.tsx","webpack://quran.com/sentry-wrapper-module","webpack://quran.com/./src/components/Reciter/QuranReciterListHero.module.scss","webpack://quran.com/./src/components/Reciter/RecitersList.module.scss","webpack://quran.com/./src/components/dls/Spinner/SpinnerContainer/SpinnerContainer.module.scss","webpack://quran.com/./src/components/Navbar/SettingsDrawer/ReciterSelectionBody.tsx","webpack://quran.com/./src/components/Reciter/QuranReciterListHero.tsx","webpack://quran.com/./src/components/Reciter/RecitersList.tsx","webpack://quran.com/./src/components/dls/Spinner/SpinnerContainer/index.tsx","webpack://quran.com/./src/hooks/auth/usePersistPreferenceGroup.ts","webpack://quran.com/./src/utils/cdn.ts","webpack://quran.com/external commonjs \"@reduxjs/toolkit\"","webpack://quran.com/external commonjs \"@sentry/nextjs\"","webpack://quran.com/external commonjs \"@xstate/react\"","webpack://quran.com/external commonjs \"classnames\"","webpack://quran.com/external commonjs \"fuse.js\"","webpack://quran.com/external commonjs \"humps\"","webpack://quran.com/external commonjs \"lodash/findKey\"","webpack://quran.com/external commonjs \"lodash/groupBy\"","webpack://quran.com/external commonjs \"lodash/random\"","webpack://quran.com/external commonjs \"lodash/range\"","webpack://quran.com/external commonjs \"lodash/sample\"","webpack://quran.com/external commonjs \"next-seo\"","webpack://quran.com/external commonjs \"next-translate/useTranslation\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/app-router-context.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/head-manager-context.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/head.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/i18n/detect-domain-locale.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/i18n/normalize-locale-path.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/image-config-context.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/image-config.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/is-plain-object.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/mitt.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/page-path/denormalize-page-path.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router-context.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/add-locale.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/add-path-prefix.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/compare-states.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/format-next-pathname-info.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/format-url.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/get-next-pathname-info.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/is-bot.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/is-dynamic.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/parse-path.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/parse-relative-url.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/path-has-prefix.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/querystring.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/remove-trailing-slash.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/resolve-rewrites.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/route-matcher.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/router/utils/route-regex.js\"","webpack://quran.com/external commonjs \"next/dist/shared/lib/utils.js\"","webpack://quran.com/external commonjs \"next/router\"","webpack://quran.com/external commonjs \"react\"","webpack://quran.com/external commonjs \"react-redux\"","webpack://quran.com/external commonjs \"react/jsx-runtime\"","webpack://quran.com/external commonjs \"refresh-fetch\"","webpack://quran.com/external commonjs \"xstate\"","webpack://quran.com/external commonjs \"xstate/lib/actions\"","webpack://quran.com/external module \"@radix-ui/react-radio-group\"","webpack://quran.com/external module \"@radix-ui/react-tooltip\"","webpack://quran.com/external module \"firebase/compat/analytics\"","webpack://quran.com/external module \"firebase/compat/app\"","webpack://quran.com/external module \"js-cookie\"","webpack://quran.com/external module \"react-toastify\"","webpack://quran.com/external module \"swr/immutable\"","webpack://quran.com/external node-commonjs \"querystring\""],"sourcesContent":["import { useMemo, useState } from 'react';\n\nimport classNames from 'classnames';\nimport { GetStaticProps } from 'next';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Error from '../_error';\nimport layoutStyle from '../index.module.scss';\n\nimport pageStyle from './reciterPage.module.scss';\n\nimport { getAvailableReciters } from '@/api';\nimport { filterReciters } from '@/components/Navbar/SettingsDrawer/ReciterSelectionBody';\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport QuranReciterListHero from '@/components/Reciter/QuranReciterListHero';\nimport RecitersList from '@/components/Reciter/RecitersList';\nimport { getAllChaptersData } from '@/utils/chapter';\nimport { getLanguageAlternates } from '@/utils/locale';\nimport { getCanonicalUrl } from '@/utils/navigation';\n\nconst NAVIGATION_URL = '/reciters';\n\nconst RecitersListPage = ({ reciters, hasError }) => {\n const { t, lang } = useTranslation('reciter');\n const [searchQuery, setSearchQuery] = useState('');\n\n const filteredReciters = useMemo(\n () => (searchQuery ? filterReciters(reciters, searchQuery) : reciters),\n [searchQuery, reciters],\n );\n\n if (hasError) return <Error statusCode={500} />;\n\n return (\n <>\n <NextSeoWrapper\n title={t('quran-reciters')}\n description={t('reciters-desc')}\n canonical={getCanonicalUrl(lang, NAVIGATION_URL)}\n languageAlternates={getLanguageAlternates(NAVIGATION_URL)}\n />\n <div className={layoutStyle.flow}>\n <QuranReciterListHero searchQuery={searchQuery} onSearchQueryChange={setSearchQuery} />\n <div className={classNames(layoutStyle.flowItem, pageStyle.recitersListContainer)}>\n <RecitersList reciters={filteredReciters} />\n </div>\n </div>\n </>\n );\n};\n\nexport const getStaticProps: GetStaticProps = async ({ locale }) => {\n try {\n const { reciters } = await getAvailableReciters(locale, [\n 'profile_picture',\n 'cover_image',\n 'bio',\n ]);\n const chaptersData = await getAllChaptersData(locale);\n\n return {\n props: {\n chaptersData,\n reciters: reciters || [],\n },\n };\n } catch (e) {\n return {\n props: {\n hasError: true,\n },\n };\n }\n};\n\nexport default RecitersListPage;\n","import * as Sentry from '@sentry/nextjs';\nimport * as serverComponentModule from '__SENTRY_WRAPPING_TARGET_FILE__.cjs';\nexport * from '__SENTRY_WRAPPING_TARGET_FILE__.cjs';\n\n/*\n * This file is a template for the code which will be substituted when our webpack loader handles non-API files in the\n * `pages/` directory.\n *\n * We use `__SENTRY_WRAPPING_TARGET_FILE__.cjs` as a placeholder for the path to the file being wrapped. Because it's not a real package,\n * this causes both TS and ESLint to complain, hence the pragma comments below.\n */\n\nconst userPageModule = serverComponentModule ;\n\nconst pageComponent = userPageModule ? userPageModule.default : undefined;\n\nconst origGetInitialProps = pageComponent ? pageComponent.getInitialProps : undefined;\nconst origGetStaticProps = userPageModule ? userPageModule.getStaticProps : undefined;\nconst origGetServerSideProps = userPageModule ? userPageModule.getServerSideProps : undefined;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getInitialPropsWrappers = {\n '/_app': Sentry.wrapAppGetInitialPropsWithSentry,\n '/_document': Sentry.wrapDocumentGetInitialPropsWithSentry,\n '/_error': Sentry.wrapErrorGetInitialPropsWithSentry,\n};\n\nconst getInitialPropsWrapper = getInitialPropsWrappers['/reciters'] || Sentry.wrapGetInitialPropsWithSentry;\n\nif (pageComponent && typeof origGetInitialProps === 'function') {\n pageComponent.getInitialProps = getInitialPropsWrapper(origGetInitialProps) ;\n}\n\nconst getStaticProps =\n typeof origGetStaticProps === 'function'\n ? Sentry.wrapGetStaticPropsWithSentry(origGetStaticProps, '/reciters')\n : undefined;\nconst getServerSideProps =\n typeof origGetServerSideProps === 'function'\n ? Sentry.wrapGetServerSidePropsWithSentry(origGetServerSideProps, '/reciters')\n : undefined;\n\nconst pageWrapperTemplate = pageComponent ? Sentry.wrapPageComponentWithSentry(pageComponent ) : pageComponent;\n\nexport { pageWrapperTemplate as default, getServerSideProps, getStaticProps };\n","// Exports\nmodule.exports = {\n\t\"container\": \"QuranReciterListHero_container__CgmC_\",\n\t\"title\": \"QuranReciterListHero_title__JS4V4\",\n\t\"backgroundImage\": \"QuranReciterListHero_backgroundImage__48PjJ\",\n\t\"searchInputContainer\": \"QuranReciterListHero_searchInputContainer__lbp3I\",\n\t\"searchInput\": \"QuranReciterListHero_searchInput__piLNr\"\n};\n","// Exports\nmodule.exports = {\n\t\"container\": \"RecitersList_container__4Z7cE\"\n};\n","// Exports\nmodule.exports = {\n\t\"internalContainer\": \"SpinnerContainer_internalContainer__kt2ni\",\n\t\"spinner\": \"SpinnerContainer_spinner__kzDgO\"\n};\n","import { useContext, useState } from 'react';\n\nimport { useSelector } from '@xstate/react';\nimport Fuse from 'fuse.js';\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ReciterSelectionBody.module.scss';\n\nimport DataFetcher from '@/components/DataFetcher';\nimport Input from '@/dls/Forms/Input';\nimport RadioGroup, { RadioGroupOrientation } from '@/dls/Forms/RadioGroup/RadioGroup';\nimport SpinnerContainer from '@/dls/Spinner/SpinnerContainer';\nimport usePersistPreferenceGroup from '@/hooks/auth/usePersistPreferenceGroup';\nimport IconSearch from '@/icons/search.svg';\nimport SearchQuerySource from '@/types/SearchQuerySource';\nimport { makeAvailableRecitersUrl } from '@/utils/apiPaths';\nimport { logEmptySearchResults, logItemSelectionChange } from '@/utils/eventLogger';\nimport { AudioPlayerMachineContext } from 'src/xstate/AudioPlayerMachineContext';\nimport { RecitersResponse } from 'types/ApiResponses';\nimport PreferenceGroup from 'types/auth/PreferenceGroup';\nimport QueryParam from 'types/QueryParam';\nimport Reciter from 'types/Reciter';\n\nexport const filterReciters = (reciters, searchQuery: string): Reciter[] => {\n const fuse = new Fuse(reciters, {\n keys: ['name', 'languageName', 'translatedName.name', 'qirat.name', 'style.name'],\n threshold: 0.3,\n });\n\n const filteredReciter = fuse.search(searchQuery).map(({ item }) => item);\n if (!filteredReciter.length) {\n logEmptySearchResults({\n query: searchQuery,\n source: SearchQuerySource.TranslationSettingsDrawer,\n });\n }\n return filteredReciter as Reciter[];\n};\n\nconst DEFAULT_RECITATION_STYLE = 'Murattal';\n\nconst SettingsReciter = () => {\n const { lang, t } = useTranslation('common');\n const {\n isLoading,\n actions: { onXstateSettingsChange },\n } = usePersistPreferenceGroup();\n const router = useRouter();\n const [searchQuery, setSearchQuery] = useState('');\n\n const audioService = useContext(AudioPlayerMachineContext);\n const selectedReciterId = useSelector(audioService, (state) => state.context.reciterId);\n\n // given the reciterId, get the full reciter object.\n const onSelectedReciterChange = (reciterId: string, reciters: Reciter[]) => {\n if (!reciterId) return;\n const reciter = reciters.find((r) => r.id === Number(reciterId));\n logItemSelectionChange('selected_reciter', reciter.id);\n router.query[QueryParam.Reciter] = String(reciter.id);\n router.push(router, undefined, { shallow: true });\n\n const previousReciterId = selectedReciterId;\n onXstateSettingsChange(\n 'reciter',\n reciter.id,\n () => audioService.send({ type: 'CHANGE_RECITER', reciterId: Number(reciterId) }),\n () => audioService.send({ type: 'CHANGE_RECITER', reciterId: previousReciterId }),\n PreferenceGroup.AUDIO,\n );\n };\n\n return (\n <div>\n <div className={styles.searchInputContainer}>\n <SpinnerContainer isLoading={isLoading}>\n <Input\n prefix={<IconSearch />}\n id=\"translations-search\"\n value={searchQuery}\n onChange={setSearchQuery}\n placeholder={t('settings.search-reciter')}\n fixedWidth={false}\n containerClassName={styles.input}\n />\n </SpinnerContainer>\n </div>\n <DataFetcher\n queryKey={makeAvailableRecitersUrl(lang)}\n render={(data: RecitersResponse) => {\n const filteredReciters = searchQuery\n ? filterReciters(data.reciters, searchQuery)\n : data.reciters;\n\n return (\n <RadioGroup.Root\n label=\"reciter\"\n orientation={RadioGroupOrientation.Vertical}\n value={selectedReciterId.toString()}\n onChange={(newId) => onSelectedReciterChange(newId, data.reciters)}\n >\n {filteredReciters\n .sort((a, b) => (a.name + a.id > b.name + b.id ? 1 : -1))\n .map((reciter) => {\n const reciterId = reciter.id.toString();\n return (\n <div className={styles.reciter} key={reciterId}>\n <RadioGroup.Item value={reciterId} id={reciterId} />\n\n <label htmlFor={reciterId} className={styles.reciterLabel}>\n {reciter.translatedName.name}\n {reciter.style.name !== DEFAULT_RECITATION_STYLE && (\n <span className={styles.recitationStyle}>{reciter.style.name}</span>\n )}\n </label>\n </div>\n );\n })}\n </RadioGroup.Root>\n );\n }}\n />\n </div>\n );\n};\n\nexport default SettingsReciter;\n","import classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Input from '../dls/Forms/Input';\n\nimport styles from './QuranReciterListHero.module.scss';\n\nimport SearchIcon from '@/icons/search.svg';\n\ntype QuranReciterListHeroProps = {\n searchQuery: string;\n onSearchQueryChange: (newSearchQuery: string) => void;\n};\nconst QuranReciterListHero = ({ onSearchQueryChange, searchQuery }: QuranReciterListHeroProps) => {\n const { t } = useTranslation();\n return (\n <div className={classNames(styles.container)}>\n <div className={styles.backgroundImage} />\n <div className={styles.title}>{t('reciter:quran-reciters')}</div>\n\n <div className={styles.searchInputContainer}>\n <Input\n containerClassName={styles.searchInput}\n prefix={<SearchIcon />}\n id=\"translations-search\"\n value={searchQuery}\n onChange={onSearchQueryChange}\n placeholder={t('common:settings.search-reciter')}\n fixedWidth={false}\n />\n </div>\n </div>\n );\n};\n\nexport default QuranReciterListHero;\n","import Card, { CardSize } from '../dls/Card/Card';\n\nimport styles from './RecitersList.module.scss';\n\nimport Link from '@/dls/Link/Link';\nimport { makeCDNUrl } from '@/utils/cdn';\nimport { getReciterNavigationUrl } from '@/utils/navigation';\nimport Reciter from 'types/Reciter';\n\ntype RecitersListProps = {\n reciters: Reciter[];\n};\n\nconst RecitersList = ({ reciters }: RecitersListProps) => {\n return (\n <div className={styles.container}>\n {reciters.map((reciter) => {\n return (\n <Link key={reciter.id} href={getReciterNavigationUrl(reciter.id.toString())}>\n <Card\n imgSrc={makeCDNUrl(reciter.profilePicture)}\n key={reciter.id}\n title={reciter.translatedName.name}\n imgAlt={reciter.translatedName.name}\n description={reciter.style.name}\n size={CardSize.Medium}\n />\n </Link>\n );\n })}\n </div>\n );\n};\n\nexport default RecitersList;\n","import React from 'react';\n\nimport styles from './SpinnerContainer.module.scss';\n\nimport Spinner from '@/dls/Spinner/Spinner';\n\ntype Props = {\n children: React.ReactNode;\n isLoading: boolean;\n};\n\nconst SpinnerContainer: React.FC<Props> = ({ children, isLoading }) => {\n return (\n <div className={styles.internalContainer}>\n {children}\n {isLoading && <Spinner className={styles.spinner} />}\n </div>\n );\n};\n\nexport default SpinnerContainer;\n","/* eslint-disable max-lines */\n/* eslint-disable react-func/max-lines-per-function */\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { Action, AsyncThunkAction } from '@reduxjs/toolkit';\nimport useTranslation from 'next-translate/useTranslation';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport { selectQuranFont, selectQuranMushafLines } from '@/redux/slices/QuranReader/styles';\nimport { getMushafId } from '@/utils/api';\nimport { addOrUpdateUserPreference } from '@/utils/auth/api';\nimport { isLoggedIn } from '@/utils/auth/login';\nimport PreferenceGroup from 'types/auth/PreferenceGroup';\n\ntype ActionOrThunkAction = Action | AsyncThunkAction<any, any, any>;\ntype Value = string | number | boolean | Record<string, any>;\n\ntype Actions = {\n onSettingsChangeWithoutDispatch: (\n key: string,\n value: Value,\n preferenceGroup: PreferenceGroup,\n callback: () => void,\n ) => void;\n onSettingsChange: (\n key: string,\n value: Value,\n action: ActionOrThunkAction,\n undoAction: ActionOrThunkAction,\n preferenceGroup: PreferenceGroup,\n successCallback?: () => void,\n ) => void;\n onXstateSettingsChange: (\n key: string,\n value: string | number | boolean | Record<string, any>,\n action: () => void,\n undoAction: () => void,\n preferenceGroup: PreferenceGroup,\n successCallback?: () => void,\n ) => void;\n};\n\ntype PersistPreferences = { actions: Actions; isLoading: boolean };\n\n/**\n * A hook that will be used to:\n * 1. If the user is logged in, we persist settings\n * to the DB then dispatch the redux action that\n * would apply the changes locally (and might also persist\n * it locally in the localStorage depending on the slice)\n * 2. If not, just dispatch the action.\n *\n * @returns {PersistPreferences}\n */\nconst usePersistPreferenceGroup = (): PersistPreferences => {\n const dispatch = useDispatch();\n const toast = useToast();\n const { t } = useTranslation('common');\n const [isLoading, setIsLoading] = useState(false);\n\n const quranFont = useSelector(selectQuranFont, shallowEqual);\n const mushafLines = useSelector(selectQuranMushafLines, shallowEqual);\n\n // this function is used to get the updated mushafId and pass it to addOrUpdateUserPreference\n // if the preferenceGroup is not QURAN_READER_STYLES, it will return undefined\n const getUpdatedMushafId = useCallback(\n (\n preferenceGroup: PreferenceGroup,\n key: string,\n value: string | number | boolean | Record<string, any>,\n ) => {\n if (preferenceGroup !== PreferenceGroup.QURAN_READER_STYLES) return undefined;\n\n const font = key === 'quranFont' ? value : quranFont;\n const lines = key === 'mushafLines' ? value : mushafLines;\n\n return getMushafId(font, lines).mushaf;\n },\n [quranFont, mushafLines],\n );\n\n const actions = useMemo(\n () => ({\n onSettingsChangeWithoutDispatch: (\n key: string,\n value: string | number | boolean | Record<string, any>,\n preferenceGroup: PreferenceGroup,\n callback: () => void,\n ) => {\n if (isLoggedIn()) {\n setIsLoading(true);\n addOrUpdateUserPreference(\n key,\n value,\n preferenceGroup,\n getUpdatedMushafId(preferenceGroup, key, value),\n )\n .then(() => {\n callback();\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n callback();\n }\n },\n onXstateSettingsChange: (\n key: string,\n value: string | number | boolean | Record<string, any>,\n action: () => void,\n undoAction: () => void,\n preferenceGroup: PreferenceGroup,\n successCallback?: () => void,\n ) => {\n if (isLoggedIn()) {\n action();\n setIsLoading(true);\n addOrUpdateUserPreference(\n key,\n value,\n preferenceGroup,\n getUpdatedMushafId(preferenceGroup, key, value),\n )\n .then(() => {\n if (successCallback) {\n successCallback();\n }\n })\n .catch(() => {\n toast(t('error.pref-persist-fail'), {\n status: ToastStatus.Warning,\n actions: [\n {\n text: t('undo'),\n primary: true,\n onClick: () => {\n undoAction();\n },\n },\n {\n text: t('continue'),\n primary: false,\n onClick: () => {\n if (successCallback) {\n successCallback();\n }\n },\n },\n ],\n });\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n action();\n }\n },\n onSettingsChange: (\n key: string,\n value: string | number | boolean | Record<string, any>,\n action: ActionOrThunkAction,\n undoAction: ActionOrThunkAction,\n preferenceGroup: PreferenceGroup,\n successCallback?: () => void,\n ) => {\n if (isLoggedIn()) {\n // 1. dispatch the action first\n dispatch(action);\n setIsLoading(true);\n addOrUpdateUserPreference(\n key,\n value,\n preferenceGroup,\n getUpdatedMushafId(preferenceGroup, key, value),\n )\n .then(() => {\n if (successCallback) {\n successCallback();\n }\n })\n .catch(() => {\n toast(t('error.pref-persist-fail'), {\n status: ToastStatus.Warning,\n actions: [\n {\n text: t('undo'),\n primary: true,\n onClick: () => {\n dispatch(undoAction);\n },\n },\n {\n text: t('continue'),\n primary: false,\n onClick: () => {\n if (successCallback) {\n successCallback();\n }\n },\n },\n ],\n });\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n dispatch(action);\n }\n },\n }),\n [dispatch, t, toast, getUpdatedMushafId],\n );\n\n return { actions, isLoading };\n};\n\nexport default usePersistPreferenceGroup;\n","export const CDN_HOST = 'https://static.qurancdn.com';\nexport const CDN_ASSETS_VERSION = '1';\n\n/**\n * Generate versioned URL of static asset\n *\n * @param {string} path the path of static asset\n * @returns {string}\n */\n\nexport const makeCDNUrl = (path: string) => {\n return `${CDN_HOST}/${path}?v=${CDN_ASSETS_VERSION}`;\n};\n","module.exports = require(\"@reduxjs/toolkit\");","module.exports = require(\"@sentry/nextjs\");","module.exports = require(\"@xstate/react\");","module.exports = require(\"classnames\");","module.exports = require(\"fuse.js\");","module.exports = require(\"humps\");","module.exports = require(\"lodash/findKey\");","module.exports = require(\"lodash/groupBy\");","module.exports = require(\"lodash/random\");","module.exports = require(\"lodash/range\");","module.exports = require(\"lodash/sample\");","module.exports = require(\"next-seo\");","module.exports = require(\"next-translate/useTranslation\");","module.exports = require(\"next/dist/shared/lib/app-router-context.js\");","module.exports = require(\"next/dist/shared/lib/head-manager-context.js\");","module.exports = require(\"next/dist/shared/lib/head.js\");","module.exports = require(\"next/dist/shared/lib/i18n/detect-domain-locale.js\");","module.exports = require(\"next/dist/shared/lib/i18n/normalize-locale-path.js\");","module.exports = require(\"next/dist/shared/lib/image-config-context.js\");","module.exports = require(\"next/dist/shared/lib/image-config.js\");","module.exports = require(\"next/dist/shared/lib/is-plain-object.js\");","module.exports = require(\"next/dist/shared/lib/mitt.js\");","module.exports = require(\"next/dist/shared/lib/page-path/denormalize-page-path.js\");","module.exports = require(\"next/dist/shared/lib/router-context.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/add-locale.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/add-path-prefix.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/compare-states.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/format-next-pathname-info.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/format-url.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/get-asset-path-from-route.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/get-next-pathname-info.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/is-bot.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/is-dynamic.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/parse-path.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/parse-relative-url.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/path-has-prefix.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/querystring.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/remove-trailing-slash.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/resolve-rewrites.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/route-matcher.js\");","module.exports = require(\"next/dist/shared/lib/router/utils/route-regex.js\");","module.exports = require(\"next/dist/shared/lib/utils.js\");","module.exports = require(\"next/router\");","module.exports = require(\"react\");","module.exports = require(\"react-redux\");","module.exports = require(\"react/jsx-runtime\");","module.exports = require(\"refresh-fetch\");","module.exports = require(\"xstate\");","module.exports = require(\"xstate/lib/actions\");","module.exports = import(\"@radix-ui/react-radio-group\");;","module.exports = import(\"@radix-ui/react-tooltip\");;","module.exports = import(\"firebase/compat/analytics\");;","module.exports = import(\"firebase/compat/app\");;","module.exports = import(\"js-cookie\");;","module.exports = import(\"react-toastify\");;","module.exports = import(\"swr/immutable\");;","module.exports = require(\"querystring\");"],"names":["NAVIGATION_URL","RecitersListPage","reciters","hasError","t","lang","useTranslation","searchQuery","setSearchQuery","useState","filteredReciters","useMemo","filterReciters","_jsx","Error","statusCode","_jsxs","_Fragment","NextSeoWrapper","title","description","canonical","getCanonicalUrl","languageAlternates","getLanguageAlternates","div","className","layoutStyle","flow","QuranReciterListHero","onSearchQueryChange","classNames","flowItem","pageStyle","recitersListContainer","RecitersList","getStaticProps","locale","getAvailableReciters","chaptersData","getAllChaptersData","props","e","useContext","useSelector","Fuse","useRouter","styles","DataFetcher","Input","RadioGroup","RadioGroupOrientation","SpinnerContainer","usePersistPreferenceGroup","IconSearch","SearchQuerySource","makeAvailableRecitersUrl","logEmptySearchResults","logItemSelectionChange","AudioPlayerMachineContext","PreferenceGroup","QueryParam","fuse","keys","threshold","filteredReciter","search","map","item","length","query","source","TranslationSettingsDrawer","DEFAULT_RECITATION_STYLE","SettingsReciter","isLoading","actions","onXstateSettingsChange","router","audioService","selectedReciterId","state","context","reciterId","onSelectedReciterChange","reciter","find","r","id","Number","Reciter","String","push","undefined","shallow","previousReciterId","send","type","AUDIO","searchInputContainer","prefix","value","onChange","placeholder","fixedWidth","containerClassName","input","queryKey","render","data","Root","label","orientation","Vertical","toString","newId","sort","a","b","name","Item","htmlFor","reciterLabel","translatedName","style","span","recitationStyle","SearchIcon","container","backgroundImage","searchInput","Card","CardSize","Link","makeCDNUrl","getReciterNavigationUrl","href","imgSrc","profilePicture","imgAlt","size","Medium","React","Spinner","children","internalContainer","spinner","useCallback","shallowEqual","useDispatch","ToastStatus","useToast","selectQuranFont","selectQuranMushafLines","getMushafId","addOrUpdateUserPreference","isLoggedIn","dispatch","toast","setIsLoading","quranFont","mushafLines","getUpdatedMushafId","preferenceGroup","key","QURAN_READER_STYLES","font","lines","mushaf","onSettingsChangeWithoutDispatch","callback","then","finally","action","undoAction","successCallback","catch","status","Warning","text","primary","onClick","onSettingsChange","CDN_HOST","CDN_ASSETS_VERSION","path"],"sourceRoot":""}
|