reciters-47db4b1031306a69.js.map 20 KB

1
  1. {"version":3,"file":"static/chunks/pages/reciters-47db4b1031306a69.js","mappings":"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","sources":["webpack://_N_E/?cc90","webpack://_N_E/./src/components/NextSeoWrapper.tsx","webpack://_N_E/./src/components/dls/Card/Card.tsx","webpack://_N_E/./src/pages/_error.tsx","webpack://_N_E/./src/components/Reciter/QuranReciterListHero.tsx","webpack://_N_E/./src/components/Reciter/RecitersList.tsx","webpack://_N_E/./src/pages/reciters/index.tsx","webpack://_N_E/./src/utils/cdn.ts","webpack://_N_E/./src/utils/string.ts","webpack://_N_E/./src/components/Reciter/QuranReciterListHero.module.scss","webpack://_N_E/./src/components/Reciter/RecitersList.module.scss","webpack://_N_E/./src/components/dls/Card/Card.module.scss","webpack://_N_E/./src/pages/_error.module.scss","webpack://_N_E/./src/pages/index.module.scss","webpack://_N_E/./src/pages/reciters/reciterPage.module.scss"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/reciters\",\n function () {\n return require(\"private-next-pages/reciters/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/reciters\"])\n });\n }\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 } from 'react';\n\nimport classNames from 'classnames';\nimport Image from 'next/image';\n\nimport styles from './Card.module.scss';\n\nimport Button, { ButtonVariant } from '@/dls/Button/Button';\n\nexport enum CardSize {\n Medium = 'medium',\n Large = 'large',\n}\n\ntype CardProps = {\n size: CardSize;\n title: React.ReactNode;\n description?: React.ReactNode;\n onImgClick?: () => void;\n imgSrc?: string;\n className?: string;\n imgAlt?: string;\n actionIcon?: ReactNode;\n shouldFlipIconOnRTL?: boolean;\n onActionIconClick?: () => void;\n shouldShowFullTitle?: boolean;\n ariaLabel?: string;\n tooltip?: string;\n};\n\nconst Card = ({\n size,\n title,\n description,\n onImgClick,\n imgSrc,\n actionIcon,\n imgAlt,\n shouldFlipIconOnRTL = true,\n onActionIconClick,\n className,\n shouldShowFullTitle = false,\n ariaLabel,\n tooltip,\n}: CardProps) => {\n return (\n <div\n className={classNames(className, styles.container, {\n [styles.large]: size === CardSize.Large,\n [styles.medium]: size === CardSize.Medium,\n })}\n >\n <div\n className={classNames(styles.imageContainer)}\n role=\"button\"\n tabIndex={0}\n onKeyPress={onImgClick}\n onClick={onImgClick}\n >\n {imgSrc && <Image alt={imgAlt} className={styles.img} src={imgSrc} layout=\"fill\" />}\n\n {actionIcon && (\n <div className={styles.cardHoverEffectContainer} data-theme=\"dark\">\n {actionIcon}\n </div>\n )}\n </div>\n <div className={styles.bodyContainer}>\n <div className={styles.textsContainer}>\n <div\n className={classNames({\n [styles.title]: !shouldShowFullTitle,\n })}\n >\n {title}\n </div>\n <div className={styles.description}>{description}</div>\n </div>\n {size === CardSize.Large && actionIcon && (\n <Button\n onClick={() => {\n if (onActionIconClick) onActionIconClick();\n }}\n className={styles.playIconContainer}\n variant={ButtonVariant.Ghost}\n shouldFlipOnRTL={shouldFlipIconOnRTL}\n tooltip={tooltip}\n ariaLabel={ariaLabel}\n >\n {actionIcon}\n </Button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Card;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport classNames from 'classnames';\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './_error.module.scss';\n\nimport Button from '@/dls/Button/Button';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\n\n// reference: https://nextjs.org/docs/advanced-features/custom-error-page#more-advanced-error-page-customizing\ntype ErrorProps = {\n statusCode?: number;\n hasFullWidth?: boolean;\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst Error = ({ statusCode, hasFullWidth = true }: ErrorProps) => {\n const { t } = useTranslation('error');\n const router = useRouter();\n\n // if previous page url exist, go back, otherwise go to home\n const onBackButtonClicked = () => {\n if (document && document.referrer) {\n router.back();\n return;\n }\n router.push('/'); // go to home\n };\n return (\n <div\n className={classNames(styles.container, {\n [styles.withFullWidth]: hasFullWidth,\n })}\n >\n <h1 className={styles.title}>{t('title')}</h1>\n <div className={styles.goBack}>\n <Button onClick={onBackButtonClicked}>{t('go-back')}</Button>\n </div>\n <p className={styles.reportBug}>\n {t('if-persist')}{' '}\n <Link href=\"https://feedback.quran.com/\" variant={LinkVariant.Highlight}>\n {t('report-cta')}\n </Link>\n </p>\n </div>\n );\n};\n\nexport default Error;\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 { 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","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","/**\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\":\"QuranReciterListHero_container__CgmC_\",\"title\":\"QuranReciterListHero_title__JS4V4\",\"backgroundImage\":\"QuranReciterListHero_backgroundImage__48PjJ\",\"searchInputContainer\":\"QuranReciterListHero_searchInputContainer__lbp3I\",\"searchInput\":\"QuranReciterListHero_searchInput__piLNr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RecitersList_container__4Z7cE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Card_container__7W1p2\",\"large\":\"Card_large__7cD4G\",\"medium\":\"Card_medium__WKx2o\",\"imageContainer\":\"Card_imageContainer__QDTmv\",\"bodyContainer\":\"Card_bodyContainer__RLoL2\",\"textsContainer\":\"Card_textsContainer__Qfmez\",\"title\":\"Card_title__1EtMk\",\"description\":\"Card_description__fNtqy\",\"img\":\"Card_img__ahjCx\",\"cardHoverEffectContainer\":\"Card_cardHoverEffectContainer__N5U8L\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_error_container__vJFnH\",\"withFullWidth\":\"_error_withFullWidth__VEzYc\",\"title\":\"_error_title__oLWAK\",\"goBack\":\"_error_goBack__U4WNd\",\"reportBug\":\"_error_reportBug__tsKmR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pageContainer\":\"index_pageContainer__Pxtn3\",\"loadingContainer\":\"index_loadingContainer__WEZFc\",\"flow\":\"index_flow__rCTR5\",\"flowItem\":\"index_flowItem__GnXWz\",\"additionalVerticalGap\":\"index_additionalVerticalGap__nzYz6\",\"fullWidth\":\"index_fullWidth__1n4ux\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerContainer\":\"reciterPage_headerContainer__y7Muj\",\"sectionTitle\":\"reciterPage_sectionTitle__CCsp1\",\"searchContainer\":\"reciterPage_searchContainer__DF9Ey\",\"chaptersListContainer\":\"reciterPage_chaptersListContainer__QTWw_\",\"recitersListContainer\":\"reciterPage_recitersListContainer__dLjwl\",\"reciterInfoContainer\":\"reciterPage_reciterInfoContainer__mYOjC\"};"],"names":["window","__NEXT_P","push","props","url","image","imageAlt","imageHeight","imageWidth","openGraph","description","rest","openGraphParams","images","width","height","alt","params","truncateString","NextSeo","CardSize","size","title","onImgClick","imgSrc","actionIcon","imgAlt","shouldFlipIconOnRTL","onActionIconClick","className","shouldShowFullTitle","ariaLabel","tooltip","div","classNames","styles","Large","Medium","role","tabIndex","onKeyPress","onClick","Image","src","layout","data-theme","Button","variant","ButtonVariant","shouldFlipOnRTL","statusCode","hasFullWidth","useTranslation","t","router","useRouter","h1","document","referrer","back","p","Link","href","LinkVariant","onSearchQueryChange","searchQuery","Input","containerClassName","prefix","SearchIcon","id","value","onChange","placeholder","fixedWidth","reciters","map","reciter","getReciterNavigationUrl","toString","Card","makeCDNUrl","profilePicture","translatedName","name","style","NAVIGATION_URL","hasError","lang","useState","setSearchQuery","filteredReciters","useMemo","filterReciters","Error","NextSeoWrapper","canonical","getCanonicalUrl","languageAlternates","getLanguageAlternates","layoutStyle","QuranReciterListHero","pageStyle","RecitersList","path","CDN_ASSETS_VERSION","rawString","length","suffix","characters","split","shortenedText","index","character","stripHTMLTags","replace","slugifiedCollectionIdToCollectionId","slugifiedCollectionId","splits","module","exports"],"sourceRoot":""}