13147-dae02f05cae35170.js.map 34 KB

1
  1. {"version":3,"file":"static/chunks/13147-dae02f05cae35170.js","mappings":"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","sources":["webpack://_N_E/./src/components/QuranReader/hooks/useIsFontLoaded.ts","webpack://_N_E/./src/components/Verse/PlainVerseText/PlainVerseTextWord/index.tsx","webpack://_N_E/./src/components/Verse/PlainVerseText/index.tsx","webpack://_N_E/./src/components/dls/InlineWordByWord/index.tsx","webpack://_N_E/./src/components/dls/QuranWord/GlyphWord.tsx","webpack://_N_E/./src/utils/device-detector.ts","webpack://_N_E/./src/components/dls/QuranWord/TajweedWordImage.tsx","webpack://_N_E/./src/components/dls/QuranWord/TextWord.tsx","webpack://_N_E/./src/utils/cdn.ts","webpack://_N_E/./src/utils/fontFaceHelper.ts","webpack://_N_E/./types/Word.ts","webpack://_N_E/./src/components/Verse/PlainVerseText/PlainVerseTextWord/PlainVerseTextWord.module.scss","webpack://_N_E/./src/components/Verse/VerseText.module.scss","webpack://_N_E/./src/components/dls/InlineWordByWord/InlineWordByWord.module.scss","webpack://_N_E/./src/components/dls/QuranWord/GlyphWord.module.scss","webpack://_N_E/./src/components/dls/QuranWord/TajweedWordImage.module.scss","webpack://_N_E/./src/components/dls/QuranWord/TextWord.module.scss"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useSelector } from 'react-redux';\n\nimport { selectLoadedFontFaces } from '@/redux/slices/QuranReader/font-faces';\nimport { isQCFFont } from '@/utils/fontFaceHelper';\nimport { QuranFont } from 'types/QuranReader';\n\n/**\n * A hook that detects whether a font of a specific page\n * has been loaded or not.\n *\n * @param {number} pageNumber\n * @param {QuranFont} quranFont\n * @returns {boolean}\n */\nconst useIsFontLoaded = (pageNumber: number, quranFont: QuranFont): boolean => {\n const loadedFonts = useSelector(selectLoadedFontFaces);\n const isFontLoaded = useMemo(() => {\n if (!isQCFFont(quranFont)) {\n return true;\n }\n return loadedFonts.includes(`p${pageNumber}-${quranFont.replace('code_', '')}`);\n }, [loadedFonts, pageNumber, quranFont]);\n return isFontLoaded;\n};\n\nexport default useIsFontLoaded;\n","import React, { ReactNode } from 'react';\n\nimport styles from './PlainVerseTextWord.module.scss';\n\nimport InlineWordByWord from '@/dls/InlineWordByWord';\nimport Word from 'types/Word';\n\ninterface Props {\n word: Word;\n children: ReactNode;\n shouldShowWordByWordTranslation: boolean;\n shouldShowWordByWordTransliteration: boolean;\n}\n\nconst PlainVerseTextWord: React.FC<Props> = ({\n word,\n children,\n shouldShowWordByWordTransliteration,\n shouldShowWordByWordTranslation,\n}) => {\n return (\n <div className={styles.plainVerseWordContainer} key={word.location}>\n {children}\n {shouldShowWordByWordTranslation && (\n <InlineWordByWord className={styles.plainVerseWbwText} text={word?.translation?.text} />\n )}\n {shouldShowWordByWordTransliteration && (\n <InlineWordByWord className={styles.plainVerseWbwText} text={word?.transliteration?.text} />\n )}\n </div>\n );\n};\n\nexport default PlainVerseTextWord;\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport styles from '../VerseText.module.scss';\n\nimport PlainVerseTextWord from './PlainVerseTextWord';\n\nimport useIsFontLoaded from '@/components/QuranReader/hooks/useIsFontLoaded';\nimport GlyphWord from '@/dls/QuranWord/GlyphWord';\nimport TajweedWord from '@/dls/QuranWord/TajweedWordImage';\nimport TextWord from '@/dls/QuranWord/TextWord';\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { getFontClassName, isQCFFont } from '@/utils/fontFaceHelper';\nimport { QuranFont } from 'types/QuranReader';\nimport Word from 'types/Word';\n\ntype Props = {\n words: Word[];\n shouldShowWordByWordTranslation?: boolean;\n shouldShowWordByWordTransliteration?: boolean;\n fontScale?: number;\n};\n\n/**\n * A component to only show the verse text without extra functionalities such as ayah\n * highlighting when audio is playing or showing a tooltip when\n * hovering over a verse or showing the word by word translation/transliteration.\n *\n * @param {Props} param0\n * @returns {JSX.Element}\n */\nconst PlainVerseText: React.FC<Props> = ({\n words,\n shouldShowWordByWordTranslation = false,\n shouldShowWordByWordTransliteration = false,\n fontScale,\n}: Props): JSX.Element => {\n const { quranFont, quranTextFontScale, mushafLines } = useSelector(\n selectQuranReaderStyles,\n shallowEqual,\n );\n const isQcfFont = isQCFFont(quranFont);\n const isFontLoaded = useIsFontLoaded(words[0].pageNumber, quranFont);\n return (\n <div\n className={classNames(styles.verseTextContainer, styles.tafsirOrTranslationMode, {\n [styles[getFontClassName(quranFont, fontScale || quranTextFontScale, mushafLines)]]:\n quranFont !== QuranFont.Tajweed,\n })}\n >\n <div className={classNames(styles.verseText, styles.verseTextWrap)} translate=\"no\">\n {words?.map((word) => {\n if (isQcfFont) {\n return (\n <PlainVerseTextWord\n key={word.location}\n word={word}\n shouldShowWordByWordTranslation={shouldShowWordByWordTranslation}\n shouldShowWordByWordTransliteration={shouldShowWordByWordTransliteration}\n >\n <GlyphWord\n font={quranFont}\n qpcUthmaniHafs={word.qpcUthmaniHafs}\n pageNumber={word.pageNumber}\n textCodeV1={word.codeV1}\n textCodeV2={word.codeV2}\n isFontLoaded={isFontLoaded}\n />\n </PlainVerseTextWord>\n );\n }\n if (quranFont === QuranFont.Tajweed) {\n return (\n <PlainVerseTextWord\n key={word.location}\n word={word}\n shouldShowWordByWordTranslation={shouldShowWordByWordTranslation}\n shouldShowWordByWordTransliteration={shouldShowWordByWordTransliteration}\n >\n <TajweedWord key={word.location} path={word.text} alt={word.textUthmani} />\n </PlainVerseTextWord>\n );\n }\n return (\n <PlainVerseTextWord\n key={word.location}\n word={word}\n shouldShowWordByWordTranslation={shouldShowWordByWordTranslation}\n shouldShowWordByWordTransliteration={shouldShowWordByWordTransliteration}\n >\n <TextWord font={quranFont} text={word.text} charType={word.charTypeName} />\n </PlainVerseTextWord>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default PlainVerseText;\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport styles from './InlineWordByWord.module.scss';\n\nimport { selectWordByWordFontScale } from '@/redux/slices/QuranReader/styles';\n\nconst FONT_SIZE_CLASS_MAP = {\n 1: styles.xs,\n 2: styles.sm,\n 3: styles.md,\n 4: styles.lg,\n 5: styles.xl,\n 6: styles.xxl,\n};\n\ntype Props = {\n text?: string;\n className?: string;\n};\n\nconst InlineWordByWord: React.FC<Props> = ({ text, className }) => {\n const wordByWordFontScale = useSelector(selectWordByWordFontScale, shallowEqual);\n return (\n <p className={classNames(styles.word, className, FONT_SIZE_CLASS_MAP[wordByWordFontScale])}>\n {text}\n </p>\n );\n};\n\nexport default InlineWordByWord;\n","/* eslint-disable react/no-danger */\n\nimport classNames from 'classnames';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport styles from './GlyphWord.module.scss';\n\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { isFirefox } from '@/utils/device-detector';\nimport { getFontClassName } from '@/utils/fontFaceHelper';\nimport { FALLBACK_FONT, QuranFont } from 'types/QuranReader';\n\ntype UthmaniWordTextProps = {\n qpcUthmaniHafs: string;\n textCodeV1?: string;\n textCodeV2?: string;\n pageNumber: number;\n font: QuranFont;\n isFontLoaded: boolean;\n};\n\n/**\n * Get the text of the verse's word. This is used to show textUthmani as a fallback\n * until V1/V2 font faces of the current word's page (e.g. p1-v1 or p50-v2) has finished downloading.\n *\n * @param {string} qpcUthmaniHafs\n * @param {string} textCodeV1\n * @param {string} textCodeV2\n * @param {QuranFont} font\n * @param {boolean} isFontLoaded\n * @returns {string}\n */\nconst getWordText = (\n qpcUthmaniHafs: string,\n textCodeV1: string,\n textCodeV2: string,\n font: QuranFont,\n isFontLoaded: boolean,\n): string => {\n if (!isFontLoaded) {\n return qpcUthmaniHafs;\n }\n return font === QuranFont.MadaniV1 ? textCodeV1 : textCodeV2;\n};\n\nconst GlyphWord = ({\n qpcUthmaniHafs,\n textCodeV1,\n textCodeV2,\n pageNumber,\n font,\n isFontLoaded,\n}: UthmaniWordTextProps) => {\n const { quranTextFontScale, mushafLines } = useSelector(selectQuranReaderStyles, shallowEqual);\n\n // The extra space before the glyph should only be added where the issue occurs,\n // which is in firefox with the Madani V1 Mushaf and the font scale is less than 6\n const addExtraSpace = isFirefox() && font === QuranFont.MadaniV1 && quranTextFontScale < 6;\n\n return (\n <span\n dangerouslySetInnerHTML={{\n __html: `${addExtraSpace ? ` ` : ``}${getWordText(\n qpcUthmaniHafs,\n textCodeV1,\n textCodeV2,\n font,\n isFontLoaded,\n )}`,\n }}\n data-font-scale={quranTextFontScale}\n data-font={font}\n className={classNames(styles.styledWord, {\n [styles.wordSpacing]: addExtraSpace,\n [styles.fallbackText]: !isFontLoaded,\n [styles[getFontClassName(FALLBACK_FONT, quranTextFontScale, mushafLines, true)]]:\n !isFontLoaded,\n })}\n {...(isFontLoaded && {\n style: { fontFamily: `p${pageNumber}-${font.replace('code_', '')}` },\n })}\n />\n );\n};\nexport default GlyphWord;\n","import isClient from './isClient';\n\nexport const isMacOs = () => {\n if (!isClient) {\n return false;\n }\n return window.navigator.userAgent.search('Mac') !== -1;\n};\n\nexport const isAppleDevice = () => {\n if (!isClient) {\n return false;\n }\n const isOSX = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n return isOSX || isMacOs();\n};\n\nexport const isAppleWebKit = () => {\n const { userAgent } = navigator;\n return /AppleWebKit/.test(userAgent) && /Mobile/.test(userAgent);\n};\n\nexport const isFirefox = () => {\n if (!isClient) {\n return false;\n }\n\n const { userAgent } = navigator;\n return userAgent.toLowerCase().includes('firefox');\n};\n","/* eslint-disable @next/next/no-img-element */\nimport React from 'react';\n\nimport classNames from 'classnames';\nimport { useSelector } from 'react-redux';\n\nimport styles from './TajweedWordImage.module.scss';\n\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { makeCDNUrl } from '@/utils/cdn';\n\ninterface Props {\n path: string;\n alt: string;\n}\n\nconst FONT_SIZE_CLASS_MAP = {\n 1: styles.xs,\n 2: styles.sm,\n 3: styles.md,\n 4: styles.lg,\n 5: styles.xl,\n 6: styles.xl2,\n 7: styles.xl3,\n 8: styles.xl4,\n 9: styles.xl5,\n 10: styles.xl6,\n};\n\nconst TajweedWord: React.FC<Props> = ({ path, alt }) => {\n const { quranTextFontScale } = useSelector(selectQuranReaderStyles);\n return (\n <span className={classNames(styles.imageContainer, FONT_SIZE_CLASS_MAP[quranTextFontScale])}>\n <img src={`${makeCDNUrl(`images/${path}`)}`} alt={alt} />\n </span>\n );\n};\n\nexport default TajweedWord;\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport { decamelizeKeys } from 'humps';\n\nimport styles from './TextWord.module.scss';\n\nimport { CharType } from 'types/Word';\n\ntype MadaniWordTextProps = {\n text: string;\n font: string;\n charType: CharType;\n};\n\nconst DEFAULT_FONT_FAMILY = 'UthmanicHafs';\nconst INDO_PAK = 'IndoPak';\n\nconst UTHMANI_HAFS_FONTS = decamelizeKeys({\n qpcUthmaniHafs: DEFAULT_FONT_FAMILY,\n textIndopak: INDO_PAK,\n});\n\nconst TextWord: React.FC<MadaniWordTextProps> = ({ text, font, charType }) => (\n <span\n className={classNames(styles.word, {\n [styles[DEFAULT_FONT_FAMILY]]:\n charType === CharType.End ||\n !UTHMANI_HAFS_FONTS[font] ||\n UTHMANI_HAFS_FONTS[font] === DEFAULT_FONT_FAMILY,\n [styles[INDO_PAK]]: UTHMANI_HAFS_FONTS[font] === INDO_PAK,\n })}\n >\n {text}\n </span>\n);\n\nexport default TextWord;\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","import range from 'lodash/range';\n\nimport { MushafLines, QuranFont } from 'types/QuranReader';\nimport Verse from 'types/Verse';\n\nconst QCFFontCodes = [QuranFont.MadaniV1, QuranFont.MadaniV2];\nexport const isQCFFont = (font: QuranFont) => QCFFontCodes.includes(font);\n\n/**\n * Get the page numbers of a group of verses by getting\n * the page number of the first verse, the page number of the last verse\n * and generating the range between both of them.\n *\n * @param {Verse[]} verses\n * @returns {number[]}\n */\nexport const getPagesByVerses = (verses: Verse[]): number[] => {\n const firstPage = verses[0].pageNumber;\n const lastPage = verses[verses.length - 1].pageNumber;\n\n return range(firstPage, lastPage + 1);\n};\n\n/**\n * A function that will return the value of the src of QCF's font V1 and V2.\n * This will be used when we create a new instance of FontFace inside useQcfFont\n * hook.\n *\n * @param {boolean} isV1\n * @param {number} pageNumber\n * @returns {string}\n */\nexport const getV1OrV2FontFaceSource = (isV1: boolean, pageNumber: number): string => {\n const pageName = String(pageNumber).padStart(3, '0');\n\n if (isV1) {\n const woff2 = `/fonts/quran/hafs/v1/woff2/p${pageNumber}.woff2`;\n const woff = `/fonts/quran/hafs/v1/woff/p${pageNumber}.woff`;\n const ttf = `/fonts/quran/hafs/v1/ttf/p${pageNumber}.ttf`;\n return `local(QCF_P${pageName}), url('${woff2}') format('woff2'), url('${woff}') format('woff'), url('${ttf}') format('truetype')`;\n }\n\n const woff2 = `/fonts/quran/hafs/v2/woff2/p${pageNumber}.woff2`;\n const woff = `/fonts/quran/hafs/v2/woff/p${pageNumber}.woff`;\n const ttf = `/fonts/quran/hafs/v2/ttf/p${pageNumber}.ttf`;\n\n return `local(QCF2${pageName}), url('${woff2}') format('woff2'), url('${woff}') format('woff'), url('${ttf}') format('truetype')`;\n};\n\n/**\n * A function that will return the value of the font-face of QCF's font V1 and V2.\n * This will be used when we create a new instance of FontFace inside useQcfFont\n * hook.\n *\n * @param {boolean} isV1\n * @param {number} pageNumber\n * @returns {string}\n */\nexport const getFontFaceNameForPage = (isV1: boolean, pageNumber: number): string =>\n isV1 ? `p${pageNumber}-v1` : `p${pageNumber}-v2`;\n\n/**\n * Dynamically generate the className of the combination between the font\n * name + size + mushafLines(when its Indopak) that will match the output of\n * generate-font-scales function inside {@see _utility.scss}.\n *\n * @param {QuranFont} quranFont\n * @param {number} fontScale\n * @param {MushafLines} mushafLines\n * @param {boolean} isFallbackFont\n * @returns {string}\n */\nexport const getFontClassName = (\n quranFont: QuranFont,\n fontScale: number,\n mushafLines: MushafLines,\n isFallbackFont = false,\n): string => {\n if (quranFont === QuranFont.IndoPak) {\n return `${quranFont}_${mushafLines}-font-size-${fontScale}`;\n }\n return isFallbackFont\n ? `fallback_${quranFont}-font-size-${fontScale}`\n : `${quranFont}-font-size-${fontScale}`;\n};\n\n/**\n * Dynamically generate the className of the combination between the font\n * name + size that will match the output of\n * generate-font-scales function inside {@see _utility.scss}.\n *\n * @param {QuranFont} quranFont\n * @param {number} fontScale\n * @param {MushafLines} mushafLines\n * @param {boolean} isFallbackFont\n * @returns {string}\n */\nexport const getLineWidthClassName = (\n quranFont: QuranFont,\n fontScale: number,\n mushafLines: MushafLines,\n isFallbackFont = false,\n): string => {\n if (quranFont === QuranFont.IndoPak) {\n return `${quranFont}_${mushafLines}-line-width-${fontScale}`;\n }\n\n return isFallbackFont\n ? `fallback_${quranFont}-line-width-${fontScale}`\n : `${quranFont}-line-width-${fontScale}`;\n};\n","import Translation from './Translation';\nimport Transliteration from './Transliteration';\n\nexport enum CharType {\n Word = 'word',\n End = 'end',\n Pause = 'pause',\n Sajdah = 'sajdah',\n RubElHizb = 'rub-el-hizb',\n}\n\ninterface Word {\n verseKey?: string;\n charTypeName: CharType;\n codeV1?: string;\n codeV2?: string;\n pageNumber?: number;\n hizbNumber?: number;\n lineNumber?: number;\n position: number;\n location?: string;\n translation?: Translation;\n transliteration?: Transliteration;\n id?: number;\n textUthmani?: string;\n textIndopak?: string;\n highlight?: string | boolean;\n text?: string;\n audioUrl: $TsFixMe;\n [key: string]: $TsFixMe;\n}\n\nexport default Word;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"plainVerseWordContainer\":\"PlainVerseTextWord_plainVerseWordContainer__2pyxx\",\"plainVerseWbwText\":\"PlainVerseTextWord_plainVerseWbwText__DTrKx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verseText\":\"VerseText_verseText__Fk0Fi\",\"verseTextContainer\":\"VerseText_verseTextContainer__hOUD0\",\"chapterHeaderContainer\":\"VerseText_chapterHeaderContainer__SaizB\",\"largeQuranTextLayoutContainer\":\"VerseText_largeQuranTextLayoutContainer__Fv3ec\",\"largeQuranTextLayout\":\"VerseText_largeQuranTextLayout__JsyGS\",\"verseTextCenterAlign\":\"VerseText_verseTextCenterAlign__Tz7Y4\",\"verseTextSpaceBetween\":\"VerseText_verseTextSpaceBetween__syJcK\",\"verseTextWrap\":\"VerseText_verseTextWrap__gOX9U\",\"code_v1-font-size-1\":\"VerseText_code_v1-font-size-1__9Rt0g\",\"code_v1-font-size-2\":\"VerseText_code_v1-font-size-2__VQjoR\",\"code_v1-font-size-3\":\"VerseText_code_v1-font-size-3__3x2lH\",\"code_v1-font-size-4\":\"VerseText_code_v1-font-size-4__LhpwQ\",\"code_v1-font-size-5\":\"VerseText_code_v1-font-size-5___K_MX\",\"code_v1-font-size-6\":\"VerseText_code_v1-font-size-6__SJ4l4\",\"code_v1-font-size-7\":\"VerseText_code_v1-font-size-7__c7wGl\",\"code_v1-font-size-8\":\"VerseText_code_v1-font-size-8__Rg__I\",\"code_v1-font-size-9\":\"VerseText_code_v1-font-size-9__QD8Sb\",\"code_v1-font-size-10\":\"VerseText_code_v1-font-size-10__r28R3\",\"code_v2-font-size-1\":\"VerseText_code_v2-font-size-1__F3Otn\",\"code_v2-font-size-2\":\"VerseText_code_v2-font-size-2__5pseo\",\"code_v2-font-size-3\":\"VerseText_code_v2-font-size-3__Lhu_B\",\"code_v2-font-size-4\":\"VerseText_code_v2-font-size-4__i8Qln\",\"code_v2-font-size-5\":\"VerseText_code_v2-font-size-5__paFu0\",\"code_v2-font-size-6\":\"VerseText_code_v2-font-size-6__0ofuY\",\"code_v2-font-size-7\":\"VerseText_code_v2-font-size-7__qY63H\",\"code_v2-font-size-8\":\"VerseText_code_v2-font-size-8__Jas77\",\"code_v2-font-size-9\":\"VerseText_code_v2-font-size-9__zKbDl\",\"code_v2-font-size-10\":\"VerseText_code_v2-font-size-10__RdYo_\",\"text_indopak_15_lines-font-size-1\":\"VerseText_text_indopak_15_lines-font-size-1__MpqYL\",\"text_indopak_15_lines-font-size-2\":\"VerseText_text_indopak_15_lines-font-size-2___O1LY\",\"text_indopak_15_lines-font-size-3\":\"VerseText_text_indopak_15_lines-font-size-3__va0v9\",\"text_indopak_15_lines-font-size-4\":\"VerseText_text_indopak_15_lines-font-size-4__lnUQq\",\"text_indopak_15_lines-font-size-5\":\"VerseText_text_indopak_15_lines-font-size-5__XOzo1\",\"text_indopak_15_lines-font-size-6\":\"VerseText_text_indopak_15_lines-font-size-6__gB6zb\",\"text_indopak_15_lines-font-size-7\":\"VerseText_text_indopak_15_lines-font-size-7__FekJW\",\"text_indopak_15_lines-font-size-8\":\"VerseText_text_indopak_15_lines-font-size-8__loZsT\",\"text_indopak_15_lines-font-size-9\":\"VerseText_text_indopak_15_lines-font-size-9__VmlCu\",\"text_indopak_15_lines-font-size-10\":\"VerseText_text_indopak_15_lines-font-size-10__O1PJG\",\"text_indopak_16_lines-font-size-1\":\"VerseText_text_indopak_16_lines-font-size-1__4ucyv\",\"text_indopak_16_lines-font-size-2\":\"VerseText_text_indopak_16_lines-font-size-2__3yXno\",\"text_indopak_16_lines-font-size-3\":\"VerseText_text_indopak_16_lines-font-size-3__G_OaF\",\"text_indopak_16_lines-font-size-4\":\"VerseText_text_indopak_16_lines-font-size-4__f3_iJ\",\"text_indopak_16_lines-font-size-5\":\"VerseText_text_indopak_16_lines-font-size-5__oUIOq\",\"text_indopak_16_lines-font-size-6\":\"VerseText_text_indopak_16_lines-font-size-6__FA5AG\",\"text_indopak_16_lines-font-size-7\":\"VerseText_text_indopak_16_lines-font-size-7__JFk0u\",\"text_indopak_16_lines-font-size-8\":\"VerseText_text_indopak_16_lines-font-size-8__Fni_s\",\"text_indopak_16_lines-font-size-9\":\"VerseText_text_indopak_16_lines-font-size-9__zXsnb\",\"text_indopak_16_lines-font-size-10\":\"VerseText_text_indopak_16_lines-font-size-10__I7RIN\",\"qpc_uthmani_hafs-font-size-1\":\"VerseText_qpc_uthmani_hafs-font-size-1__dcYI8\",\"qpc_uthmani_hafs-font-size-2\":\"VerseText_qpc_uthmani_hafs-font-size-2__BIcpt\",\"qpc_uthmani_hafs-font-size-3\":\"VerseText_qpc_uthmani_hafs-font-size-3___0I2d\",\"qpc_uthmani_hafs-font-size-4\":\"VerseText_qpc_uthmani_hafs-font-size-4__uAhrM\",\"qpc_uthmani_hafs-font-size-5\":\"VerseText_qpc_uthmani_hafs-font-size-5__qDztZ\",\"qpc_uthmani_hafs-font-size-6\":\"VerseText_qpc_uthmani_hafs-font-size-6__njx2U\",\"qpc_uthmani_hafs-font-size-7\":\"VerseText_qpc_uthmani_hafs-font-size-7__wJ6wZ\",\"qpc_uthmani_hafs-font-size-8\":\"VerseText_qpc_uthmani_hafs-font-size-8__E18cl\",\"qpc_uthmani_hafs-font-size-9\":\"VerseText_qpc_uthmani_hafs-font-size-9__9xc_5\",\"qpc_uthmani_hafs-font-size-10\":\"VerseText_qpc_uthmani_hafs-font-size-10__9KVZ2\",\"fallback_qpc_uthmani_hafs-font-size-1\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-1__tEYKA\",\"fallback_qpc_uthmani_hafs-font-size-2\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-2__WOpbV\",\"fallback_qpc_uthmani_hafs-font-size-3\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-3__qTu4q\",\"fallback_qpc_uthmani_hafs-font-size-4\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-4__vxCgd\",\"fallback_qpc_uthmani_hafs-font-size-5\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-5__pBmKt\",\"fallback_qpc_uthmani_hafs-font-size-6\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-6__Om3YR\",\"fallback_qpc_uthmani_hafs-font-size-7\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-7__LqHcg\",\"fallback_qpc_uthmani_hafs-font-size-8\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-8__H_0LM\",\"fallback_qpc_uthmani_hafs-font-size-9\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-9__Uz0iX\",\"fallback_qpc_uthmani_hafs-font-size-10\":\"VerseText_fallback_qpc_uthmani_hafs-font-size-10__Eq184\",\"tajweed-font-size-1\":\"VerseText_tajweed-font-size-1__wW3aY\",\"tajweed-font-size-2\":\"VerseText_tajweed-font-size-2__HbkYL\",\"tajweed-font-size-3\":\"VerseText_tajweed-font-size-3__y6f3z\",\"tajweed-font-size-4\":\"VerseText_tajweed-font-size-4__Qocn9\",\"tajweed-font-size-5\":\"VerseText_tajweed-font-size-5__NbAoD\",\"tajweed-font-size-6\":\"VerseText_tajweed-font-size-6__EWfpu\",\"tajweed-font-size-7\":\"VerseText_tajweed-font-size-7__zvBX_\",\"tajweed-font-size-8\":\"VerseText_tajweed-font-size-8__FAAIf\",\"tajweed-font-size-9\":\"VerseText_tajweed-font-size-9__7nw_V\",\"tajweed-font-size-10\":\"VerseText_tajweed-font-size-10__cZt_J\",\"highlighted\":\"VerseText_highlighted__MSh4M\",\"tafsirOrTranslationMode\":\"VerseText_tafsirOrTranslationMode____xIz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"word\":\"InlineWordByWord_word__RguXH\",\"xs\":\"InlineWordByWord_xs__m6Asd\",\"sm\":\"InlineWordByWord_sm__j5xJp\",\"md\":\"InlineWordByWord_md__VTFxL\",\"lg\":\"InlineWordByWord_lg__0T__M\",\"xl\":\"InlineWordByWord_xl__NAWHF\",\"xxl\":\"InlineWordByWord_xxl__MZerA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fallback_qpc_uthmani_hafs-font-size-1\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-1__2KKwl\",\"fallback_qpc_uthmani_hafs-font-size-2\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-2__MD0bo\",\"fallback_qpc_uthmani_hafs-font-size-3\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-3__7jYJ0\",\"fallback_qpc_uthmani_hafs-font-size-4\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-4__sH673\",\"fallback_qpc_uthmani_hafs-font-size-5\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-5__hbPXS\",\"fallback_qpc_uthmani_hafs-font-size-6\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-6__GkHoA\",\"fallback_qpc_uthmani_hafs-font-size-7\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-7__jXA0B\",\"fallback_qpc_uthmani_hafs-font-size-8\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-8__EuX_N\",\"fallback_qpc_uthmani_hafs-font-size-9\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-9__lTWFh\",\"fallback_qpc_uthmani_hafs-font-size-10\":\"GlyphWord_fallback_qpc_uthmani_hafs-font-size-10__q6iVZ\",\"styledWord\":\"GlyphWord_styledWord__OfEEG\",\"wordSpacing\":\"GlyphWord_wordSpacing__VDcM6\",\"fallbackText\":\"GlyphWord_fallbackText__R32Ms\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageContainer\":\"TajweedWordImage_imageContainer__BW9U2\",\"xs\":\"TajweedWordImage_xs__z56PS\",\"sm\":\"TajweedWordImage_sm__m8zZy\",\"md\":\"TajweedWordImage_md__Fo9Wj\",\"lg\":\"TajweedWordImage_lg__Ke7uV\",\"xl\":\"TajweedWordImage_xl__toP3N\",\"xl2\":\"TajweedWordImage_xl2__U2skV\",\"xl3\":\"TajweedWordImage_xl3__Pivm8\",\"xl4\":\"TajweedWordImage_xl4__dclGF\",\"xl5\":\"TajweedWordImage_xl5__xH4Is\",\"xl6\":\"TajweedWordImage_xl6__VCEAA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"word\":\"TextWord_word__mvLd7\",\"UthmanicHafs\":\"TextWord_UthmanicHafs__9DRAC\",\"IndoPak\":\"TextWord_IndoPak__Vois6\"};"],"names":["pageNumber","quranFont","loadedFonts","useSelector","selectLoadedFontFaces","useMemo","isQCFFont","includes","replace","word","children","shouldShowWordByWordTransliteration","shouldShowWordByWordTranslation","div","className","styles","InlineWordByWord","text","translation","transliteration","location","words","fontScale","selectQuranReaderStyles","shallowEqual","quranTextFontScale","mushafLines","isQcfFont","isFontLoaded","useIsFontLoaded","classNames","getFontClassName","QuranFont","translate","map","PlainVerseTextWord","GlyphWord","font","qpcUthmaniHafs","textCodeV1","codeV1","textCodeV2","codeV2","TajweedWord","path","alt","textUthmani","TextWord","charType","charTypeName","FONT_SIZE_CLASS_MAP","wordByWordFontScale","selectWordByWordFontScale","p","getWordText","addExtraSpace","isClient","navigator","userAgent","toLowerCase","span","dangerouslySetInnerHTML","__html","data-font-scale","data-font","FALLBACK_FONT","style","fontFamily","img","src","makeCDNUrl","DEFAULT_FONT_FAMILY","INDO_PAK","UTHMANI_HAFS_FONTS","decamelizeKeys","textIndopak","CharType","CDN_ASSETS_VERSION","QCFFontCodes","getPagesByVerses","verses","firstPage","lastPage","length","range","getV1OrV2FontFaceSource","isV1","pageName","String","padStart","woff2","woff","ttf","getFontFaceNameForPage","isFallbackFont","getLineWidthClassName","module","exports"],"sourceRoot":""}