12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109 |
- exports.id = 29078;
- exports.ids = [29078];
- exports.modules = {
- /***/ 33126:
- /***/ ((module) => {
- // Exports
- module.exports = {
- "line": "Line_line__3jPyY",
- "container": "Line_container__CApVP",
- "mobileInline": "Line_mobileInline__jEjq9",
- "fixedWidth": "Line_fixedWidth__AHk9W"
- };
- /***/ }),
- /***/ 84619:
- /***/ ((module) => {
- // Exports
- module.exports = {
- "fallback_qpc_uthmani_hafs-line-width-1": "Page_fallback_qpc_uthmani_hafs-line-width-1__X9dUi",
- "fallback_qpc_uthmani_hafs-line-width-2": "Page_fallback_qpc_uthmani_hafs-line-width-2__prdZQ",
- "fallback_qpc_uthmani_hafs-line-width-3": "Page_fallback_qpc_uthmani_hafs-line-width-3__CpdkI",
- "fallback_qpc_uthmani_hafs-line-width-4": "Page_fallback_qpc_uthmani_hafs-line-width-4__bpdKT",
- "fallback_qpc_uthmani_hafs-line-width-5": "Page_fallback_qpc_uthmani_hafs-line-width-5__r0dhC",
- "fallback_qpc_uthmani_hafs-line-width-6": "Page_fallback_qpc_uthmani_hafs-line-width-6__hNehk",
- "fallback_qpc_uthmani_hafs-line-width-7": "Page_fallback_qpc_uthmani_hafs-line-width-7__W627r",
- "fallback_qpc_uthmani_hafs-line-width-8": "Page_fallback_qpc_uthmani_hafs-line-width-8__obMGX",
- "fallback_qpc_uthmani_hafs-line-width-9": "Page_fallback_qpc_uthmani_hafs-line-width-9__uE3Np",
- "fallback_qpc_uthmani_hafs-line-width-10": "Page_fallback_qpc_uthmani_hafs-line-width-10__g_Coa",
- "container": "Page_container__hkXnW",
- "mobileCenterText": "Page_mobileCenterText__WB1en"
- };
- /***/ }),
- /***/ 7994:
- /***/ ((module) => {
- // Exports
- module.exports = {
- "pageText": "PageFooter_pageText__YdcIS",
- "pageLink": "PageFooter_pageLink__YT3wq"
- };
- /***/ }),
- /***/ 15426:
- /***/ ((module) => {
- // Exports
- module.exports = {
- "buttonsContainer": "PageNavigationButtons_buttonsContainer__fomTO",
- "prevButton": "PageNavigationButtons_prevButton__OOwCQ",
- "audioPlayerOpen": "PageNavigationButtons_audioPlayerOpen__sIOdL"
- };
- /***/ }),
- /***/ 27374:
- /***/ ((module) => {
- // Exports
- module.exports = {
- "code_v1-line-width-1": "ReadingView_code_v1-line-width-1__u_hC8",
- "code_v1-line-width-2": "ReadingView_code_v1-line-width-2__Hf8MJ",
- "code_v1-line-width-3": "ReadingView_code_v1-line-width-3__C3GX9",
- "code_v1-line-width-4": "ReadingView_code_v1-line-width-4__JF_zd",
- "code_v1-line-width-5": "ReadingView_code_v1-line-width-5__6kO9e",
- "code_v1-line-width-6": "ReadingView_code_v1-line-width-6__Xmg9T",
- "code_v1-line-width-7": "ReadingView_code_v1-line-width-7__5DID0",
- "code_v1-line-width-8": "ReadingView_code_v1-line-width-8__QSPjI",
- "code_v1-line-width-9": "ReadingView_code_v1-line-width-9__g4KUg",
- "code_v1-line-width-10": "ReadingView_code_v1-line-width-10__EbYvu",
- "code_v2-line-width-1": "ReadingView_code_v2-line-width-1__LKGTJ",
- "code_v2-line-width-2": "ReadingView_code_v2-line-width-2__XxvSm",
- "code_v2-line-width-3": "ReadingView_code_v2-line-width-3__boomP",
- "code_v2-line-width-4": "ReadingView_code_v2-line-width-4__jii3F",
- "code_v2-line-width-5": "ReadingView_code_v2-line-width-5__yh418",
- "code_v2-line-width-6": "ReadingView_code_v2-line-width-6__PmlQ_",
- "code_v2-line-width-7": "ReadingView_code_v2-line-width-7__L3zwX",
- "code_v2-line-width-8": "ReadingView_code_v2-line-width-8__fodHn",
- "code_v2-line-width-9": "ReadingView_code_v2-line-width-9__R51Sk",
- "code_v2-line-width-10": "ReadingView_code_v2-line-width-10__aRnmF",
- "text_indopak_15_lines-line-width-1": "ReadingView_text_indopak_15_lines-line-width-1__HIvVb",
- "text_indopak_15_lines-line-width-2": "ReadingView_text_indopak_15_lines-line-width-2__COw_J",
- "text_indopak_15_lines-line-width-3": "ReadingView_text_indopak_15_lines-line-width-3__x0I0x",
- "text_indopak_15_lines-line-width-4": "ReadingView_text_indopak_15_lines-line-width-4__oxtcz",
- "text_indopak_15_lines-line-width-5": "ReadingView_text_indopak_15_lines-line-width-5__CIg5C",
- "text_indopak_15_lines-line-width-6": "ReadingView_text_indopak_15_lines-line-width-6__e8_Zq",
- "text_indopak_15_lines-line-width-7": "ReadingView_text_indopak_15_lines-line-width-7__R1c56",
- "text_indopak_15_lines-line-width-8": "ReadingView_text_indopak_15_lines-line-width-8__f1hhH",
- "text_indopak_15_lines-line-width-9": "ReadingView_text_indopak_15_lines-line-width-9__e_Fhh",
- "text_indopak_15_lines-line-width-10": "ReadingView_text_indopak_15_lines-line-width-10__av8qG",
- "text_indopak_16_lines-line-width-1": "ReadingView_text_indopak_16_lines-line-width-1__wEGW4",
- "text_indopak_16_lines-line-width-2": "ReadingView_text_indopak_16_lines-line-width-2__AeVXj",
- "text_indopak_16_lines-line-width-3": "ReadingView_text_indopak_16_lines-line-width-3__UEeqd",
- "text_indopak_16_lines-line-width-4": "ReadingView_text_indopak_16_lines-line-width-4__2Nw2u",
- "text_indopak_16_lines-line-width-5": "ReadingView_text_indopak_16_lines-line-width-5__r2tKN",
- "text_indopak_16_lines-line-width-6": "ReadingView_text_indopak_16_lines-line-width-6__ybw6l",
- "text_indopak_16_lines-line-width-7": "ReadingView_text_indopak_16_lines-line-width-7____CTX",
- "text_indopak_16_lines-line-width-8": "ReadingView_text_indopak_16_lines-line-width-8__ymIE0",
- "text_indopak_16_lines-line-width-9": "ReadingView_text_indopak_16_lines-line-width-9__MKM2y",
- "text_indopak_16_lines-line-width-10": "ReadingView_text_indopak_16_lines-line-width-10__XhBAV",
- "qpc_uthmani_hafs-line-width-1": "ReadingView_qpc_uthmani_hafs-line-width-1__1ArHr",
- "qpc_uthmani_hafs-line-width-2": "ReadingView_qpc_uthmani_hafs-line-width-2__I6rKn",
- "qpc_uthmani_hafs-line-width-3": "ReadingView_qpc_uthmani_hafs-line-width-3__jIQg8",
- "qpc_uthmani_hafs-line-width-4": "ReadingView_qpc_uthmani_hafs-line-width-4__RXw5a",
- "qpc_uthmani_hafs-line-width-5": "ReadingView_qpc_uthmani_hafs-line-width-5__eO8Fo",
- "qpc_uthmani_hafs-line-width-6": "ReadingView_qpc_uthmani_hafs-line-width-6__TbgkW",
- "qpc_uthmani_hafs-line-width-7": "ReadingView_qpc_uthmani_hafs-line-width-7__RoJmi",
- "qpc_uthmani_hafs-line-width-8": "ReadingView_qpc_uthmani_hafs-line-width-8__m_AJa",
- "qpc_uthmani_hafs-line-width-9": "ReadingView_qpc_uthmani_hafs-line-width-9___DGtD",
- "qpc_uthmani_hafs-line-width-10": "ReadingView_qpc_uthmani_hafs-line-width-10__uNVi7",
- "tajweed-line-width-1": "ReadingView_tajweed-line-width-1__XzcHo",
- "tajweed-line-width-2": "ReadingView_tajweed-line-width-2__qI_3N",
- "tajweed-line-width-3": "ReadingView_tajweed-line-width-3__iPATb",
- "tajweed-line-width-4": "ReadingView_tajweed-line-width-4___gTZv",
- "tajweed-line-width-5": "ReadingView_tajweed-line-width-5__8creJ",
- "tajweed-line-width-6": "ReadingView_tajweed-line-width-6__mqO8v",
- "tajweed-line-width-7": "ReadingView_tajweed-line-width-7__p1Oi4",
- "tajweed-line-width-8": "ReadingView_tajweed-line-width-8__js74h",
- "tajweed-line-width-9": "ReadingView_tajweed-line-width-9__gjjDU",
- "tajweed-line-width-10": "ReadingView_tajweed-line-width-10__xBOUh",
- "container": "ReadingView_container__99RFM",
- "virtuosoScroller": "ReadingView_virtuosoScroller__Y3HA6"
- };
- /***/ }),
- /***/ 82877:
- /***/ ((module) => {
- // Exports
- module.exports = {
- "skeletonContainer": "ReadingViewSkeleton_skeletonContainer__h5Sb2",
- "skeleton": "ReadingViewSkeleton_skeleton__hw8ZE",
- "fixedWidth": "ReadingViewSkeleton_fixedWidth__fIRzb"
- };
- /***/ }),
- /***/ 5950:
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var _xstate_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59456);
- /* harmony import */ var _xstate_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_xstate_react__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59003);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6022);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
- /* harmony import */ var _utils_memoization__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(52544);
- /* harmony import */ var _Line_module_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(33126);
- /* harmony import */ var _Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_Line_module_scss__WEBPACK_IMPORTED_MODULE_13__);
- /* harmony import */ var _components_chapters_ChapterHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(59459);
- /* harmony import */ var _components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(51879);
- /* harmony import */ var _components_Verse_VerseText__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(36716);
- /* harmony import */ var _hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(56748);
- /* harmony import */ var _redux_slices_AudioPlayer_state__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(53800);
- /* harmony import */ var _redux_slices_QuranReader_readingPreferences__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(90264);
- /* harmony import */ var _utils_verse__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(44519);
- /* harmony import */ var src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(64564);
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_chapters_ChapterHeader__WEBPACK_IMPORTED_MODULE_5__, _components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_6__, _components_Verse_VerseText__WEBPACK_IMPORTED_MODULE_7__, src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_12__]);
- ([_components_chapters_ChapterHeader__WEBPACK_IMPORTED_MODULE_5__, _components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_6__, _components_Verse_VerseText__WEBPACK_IMPORTED_MODULE_7__, src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_12__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
- const Line = ({ lineKey , words , isBigTextLayout , pageIndex , lineIndex })=>{
- const audioService = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_12__/* .AudioPlayerMachineContext */ .c);
- const isHighlighted = (0,_xstate_react__WEBPACK_IMPORTED_MODULE_2__.useSelector)(audioService, (state)=>{
- const { surah , ayahNumber } = state.context;
- const verseKeys = words.map((word)=>word.verseKey);
- return verseKeys.includes(`${surah}:${ayahNumber}`);
- });
- const [scrollToSelectedItem, selectedItemRef] = (0,_hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .ZP)(_hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_8__/* .SMOOTH_SCROLL_TO_CENTER */ .nv);
- const { isActive } = (0,_components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_6__/* .useOnboarding */ .P)();
- // disable auto scrolling when the user is onboarding
- const enableAutoScrolling = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useSelector)(_redux_slices_AudioPlayer_state__WEBPACK_IMPORTED_MODULE_9__/* .selectEnableAutoScrolling */ .Mj, react_redux__WEBPACK_IMPORTED_MODULE_4__.shallowEqual) && !isActive;
- const { showWordByWordTranslation , showWordByWordTransliteration } = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useSelector)(_redux_slices_QuranReader_readingPreferences__WEBPACK_IMPORTED_MODULE_10__/* .selectInlineDisplayWordByWordPreferences */ .eB, react_redux__WEBPACK_IMPORTED_MODULE_4__.shallowEqual);
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
- if (isHighlighted && enableAutoScrolling) {
- scrollToSelectedItem();
- }
- }, [
- isHighlighted,
- scrollToSelectedItem,
- enableAutoScrolling
- ]);
- const firstWordData = (0,_utils_verse__WEBPACK_IMPORTED_MODULE_11__/* .getWordDataByLocation */ .TO)(words[0].location);
- const shouldShowChapterHeader = firstWordData[1] === "1" && firstWordData[2] === "1";
- const isWordByWordLayout = showWordByWordTranslation || showWordByWordTransliteration;
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
- ref: selectedItemRef,
- id: lineKey,
- className: classnames__WEBPACK_IMPORTED_MODULE_3___default()((_Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default().container), {
- [(_Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default().highlighted)]: isHighlighted,
- [(_Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default().mobileInline)]: isBigTextLayout
- }),
- children: [
- shouldShowChapterHeader && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components_chapters_ChapterHeader__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
- chapterId: firstWordData[0],
- pageNumber: words[0].pageNumber,
- hizbNumber: words[0].hizbNumber
- }),
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
- className: classnames__WEBPACK_IMPORTED_MODULE_3___default()((_Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default().line), {
- [(_Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default().mobileInline)]: isBigTextLayout,
- [(_Line_module_scss__WEBPACK_IMPORTED_MODULE_13___default().fixedWidth)]: !isWordByWordLayout
- }),
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components_Verse_VerseText__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
- words: words,
- isReadingMode: true,
- isHighlighted: isHighlighted,
- shouldShowH1ForSEO: pageIndex === 0 && lineIndex === 0
- })
- })
- ]
- });
- };
- /**
- * Since we are passing words and it's an array
- * even if the same words are passed, their reference will change
- * on fetching a new page and since Memo only does shallow comparison,
- * we need to use custom comparing logic:
- *
- * 1. Check if the line keys are the same.
- * 2. Check if the number of words are the same.
- * 3. Check if isBigTextLayout values are the same.
- * 4. Check if the font changed.
- *
- * If the above conditions are met, it's safe to assume that the result
- * of both renders are the same.
- *
- * @param {LineProps} prevProps
- * @param {LineProps} nextProps
- * @returns {boolean}
- */ const areLinesEqual = (prevProps, nextProps)=>prevProps.lineKey === nextProps.lineKey && prevProps.isBigTextLayout === nextProps.isBigTextLayout && !(0,_utils_memoization__WEBPACK_IMPORTED_MODULE_14__/* .verseFontChanged */ .RG)(prevProps.quranReaderStyles, nextProps.quranReaderStyles, prevProps.words, nextProps.words);
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(Line, areLinesEqual));
- __webpack_async_result__();
- } catch(e) { __webpack_async_result__(e); } });
- /***/ }),
- /***/ 82783:
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
- /* harmony import */ var _groupLinesByVerses__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(45211);
- /* harmony import */ var _Line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5950);
- /* harmony import */ var _Page_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(84619);
- /* harmony import */ var _Page_module_scss__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Page_module_scss__WEBPACK_IMPORTED_MODULE_11__);
- /* harmony import */ var _PageFooter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4535);
- /* harmony import */ var _components_QuranReader_hooks_useIsFontLoaded__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(97226);
- /* harmony import */ var _redux_slices_QuranReader_readingPreferences__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(90264);
- /* harmony import */ var _utils_fontFaceHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(64198);
- /* harmony import */ var types_QuranReader__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(50467);
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Line__WEBPACK_IMPORTED_MODULE_5__, _PageFooter__WEBPACK_IMPORTED_MODULE_6__]);
- ([_Line__WEBPACK_IMPORTED_MODULE_5__, _PageFooter__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
- const Page = ({ verses , pageNumber , quranReaderStyles , pageIndex })=>{
- const lines = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>verses && verses.length ? (0,_groupLinesByVerses__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(verses) : {}, [
- verses
- ]);
- const { quranTextFontScale , quranFont , mushafLines } = quranReaderStyles;
- const { showWordByWordTranslation , showWordByWordTransliteration } = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(_redux_slices_QuranReader_readingPreferences__WEBPACK_IMPORTED_MODULE_8__/* .selectInlineDisplayWordByWordPreferences */ .eB, react_redux__WEBPACK_IMPORTED_MODULE_3__.shallowEqual);
- const isWordByWordLayout = showWordByWordTranslation || showWordByWordTransliteration;
- const isBigTextLayout = isWordByWordLayout || quranTextFontScale > 3 || quranFont === types_QuranReader__WEBPACK_IMPORTED_MODULE_10__/* .QuranFont.Tajweed */ .fr.Tajweed;
- const isFontLoaded = (0,_components_QuranReader_hooks_useIsFontLoaded__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z)(pageNumber, quranFont);
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
- id: `page-${pageNumber}`,
- className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_Page_module_scss__WEBPACK_IMPORTED_MODULE_11___default().container), {
- [(_Page_module_scss__WEBPACK_IMPORTED_MODULE_11___default().mobileCenterText)]: isBigTextLayout,
- [(_Page_module_scss__WEBPACK_IMPORTED_MODULE_11___default())[(0,_utils_fontFaceHelper__WEBPACK_IMPORTED_MODULE_9__/* .getLineWidthClassName */ .oj)(types_QuranReader__WEBPACK_IMPORTED_MODULE_10__/* .FALLBACK_FONT */ .v3, quranTextFontScale, mushafLines, true)]]: !isFontLoaded
- }),
- children: [
- Object.keys(lines).map((key, lineIndex)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Line__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
- pageIndex: pageIndex,
- lineIndex: lineIndex,
- lineKey: key,
- words: lines[key],
- isBigTextLayout: isBigTextLayout,
- quranReaderStyles: quranReaderStyles
- }, key)),
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_PageFooter__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
- page: pageNumber
- })
- ]
- });
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Page);
- __webpack_async_result__();
- } catch(e) { __webpack_async_result__(e); } });
- /***/ }),
- /***/ 92296:
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var swr_immutable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79847);
- /* harmony import */ var _utils_page__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(95871);
- /* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(82783);
- /* harmony import */ var _ReadingViewSkeleton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(87065);
- /* harmony import */ var _components_QuranReader_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(96435);
- /* harmony import */ var _hooks_useIsUsingDefaultSettings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35507);
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([swr_immutable__WEBPACK_IMPORTED_MODULE_2__, _Page__WEBPACK_IMPORTED_MODULE_3__, _hooks_useIsUsingDefaultSettings__WEBPACK_IMPORTED_MODULE_6__]);
- ([swr_immutable__WEBPACK_IMPORTED_MODULE_2__, _Page__WEBPACK_IMPORTED_MODULE_3__, _hooks_useIsUsingDefaultSettings__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
- const getPageVersesRange = (currentMushafPage, apiPagesVersesRange)=>{
- const lookupRecord = {
- ...apiPagesVersesRange[currentMushafPage]
- };
- // TODO: remove this from BE
- // we remove firstVerseKey and lastVerseKey before we send the params to BE as BE doesn't need them
- delete lookupRecord.firstVerseKey;
- delete lookupRecord.lastVerseKey;
- return lookupRecord;
- };
- /**
- * Get the verses returned from the initialData of the first page.
- * This function will filter out all the words that don't
- * belong to the first page in-case we have some verses
- * that contain words that don't belong to the first page
- * (applies to 16-line Indopak Mushaf e.g. /ur/haji/25 or /ur/2/211-216)
- *
- * @param {number} pageNumber
- * @param {Verse[]} initialVerses
- * @returns {Verse[]}
- */ const getInitialVerses = (pageNumber, initialVerses)=>initialVerses.map((verse)=>({
- ...verse,
- words: verse.words.filter((word)=>word.pageNumber === pageNumber)
- }));
- /**
- * A component that will fetch the verses of the current mushaf page
- * and will render a skeleton while it's loading.
- *
- * @param {Props} param0
- * @returns {JSX.Element}
- */ const PageContainer = ({ pagesVersesRange , quranReaderStyles , reciterId , lang , wordByWordLocale , pageIndex , setMushafPageToVersesMap , initialData })=>{
- const pageNumber = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>(0,_utils_page__WEBPACK_IMPORTED_MODULE_7__/* .getPageNumberByPageIndex */ .L8)(pageIndex, pagesVersesRange), [
- pageIndex,
- pagesVersesRange
- ]);
- const initialVerses = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>pageIndex === 0 ? getInitialVerses(pageNumber, initialData.verses) : initialData.verses, [
- initialData.verses,
- pageIndex,
- pageNumber
- ]);
- const isUsingDefaultSettings = (0,_hooks_useIsUsingDefaultSettings__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)();
- const shouldUseInitialData = pageIndex === 0 && isUsingDefaultSettings;
- const { data: verses , isValidating } = (0,swr_immutable__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_components_QuranReader_api__WEBPACK_IMPORTED_MODULE_5__/* .getReaderViewRequestKey */ .oA)({
- pageNumber,
- pageVersesRange: getPageVersesRange(pageNumber, pagesVersesRange),
- quranReaderStyles,
- reciter: reciterId,
- locale: lang,
- wordByWordLocale
- }), _components_QuranReader_api__WEBPACK_IMPORTED_MODULE_5__/* .verseFetcher */ .f3, {
- fallbackData: shouldUseInitialData ? initialVerses : null,
- revalidateOnMount: !shouldUseInitialData
- });
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
- if (verses) {
- // @ts-ignore
- setMushafPageToVersesMap((prevMushafPageToVersesMap)=>({
- ...prevMushafPageToVersesMap,
- [pageNumber]: verses
- }));
- }
- }, [
- pageNumber,
- setMushafPageToVersesMap,
- verses
- ]);
- if (!verses || isValidating) {
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_ReadingViewSkeleton__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {});
- }
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Page__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
- verses: verses,
- pageNumber: Number(pageNumber),
- quranReaderStyles: quranReaderStyles,
- pageIndex: pageIndex
- }, `page-${pageNumber}`);
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PageContainer);
- __webpack_async_result__();
- } catch(e) { __webpack_async_result__(e); } });
- /***/ }),
- /***/ 4535:
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60866);
- /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var _PageFooter_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7994);
- /* harmony import */ var _PageFooter_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_PageFooter_module_scss__WEBPACK_IMPORTED_MODULE_6__);
- /* harmony import */ var _dls_Link_Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61239);
- /* harmony import */ var _utils_locale__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24709);
- /* harmony import */ var _utils_navigation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(57933);
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_navigation__WEBPACK_IMPORTED_MODULE_5__]);
- _utils_navigation__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
- const PageFooter = ({ page })=>{
- const { lang } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_2___default()("quran-reader");
- const pageUrl = (0,_utils_navigation__WEBPACK_IMPORTED_MODULE_5__/* .getPageNavigationUrl */ .GK)(page);
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
- className: (_PageFooter_module_scss__WEBPACK_IMPORTED_MODULE_6___default().pageText),
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Link_Link__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
- href: pageUrl,
- shouldPassHref: true,
- shouldPrefetch: false,
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("p", {
- className: (_PageFooter_module_scss__WEBPACK_IMPORTED_MODULE_6___default().pageLink),
- children: (0,_utils_locale__WEBPACK_IMPORTED_MODULE_4__/* .toLocalizedNumber */ .rQ)(page, lang)
- })
- })
- });
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PageFooter);
- __webpack_async_result__();
- } catch(e) { __webpack_async_result__(e); } });
- /***/ }),
- /***/ 60178:
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var _xstate_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59456);
- /* harmony import */ var _xstate_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_xstate_react__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59003);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__);
- /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60866);
- /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4__);
- /* harmony import */ var _PageNavigationButtons_module_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(15426);
- /* harmony import */ var _PageNavigationButtons_module_scss__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_PageNavigationButtons_module_scss__WEBPACK_IMPORTED_MODULE_10__);
- /* harmony import */ var _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50497);
- /* harmony import */ var _dls_KeyboardInput__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(55557);
- /* harmony import */ var _dls_Tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8884);
- /* harmony import */ var _icons_chevron_down_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24868);
- /* harmony import */ var src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(64564);
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__, _dls_Tooltip__WEBPACK_IMPORTED_MODULE_7__, src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_9__]);
- ([_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__, _dls_Tooltip__WEBPACK_IMPORTED_MODULE_7__, src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_9__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
- const PageNavigationButtons = ({ scrollToNextPage , scrollToPreviousPage })=>{
- const { t } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4___default()("quran-reader");
- const audioService = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(src_xstate_AudioPlayerMachineContext__WEBPACK_IMPORTED_MODULE_9__/* .AudioPlayerMachineContext */ .c);
- const isAudioPlayerHidden = (0,_xstate_react__WEBPACK_IMPORTED_MODULE_2__.useSelector)(audioService, (state)=>state.matches("HIDDEN"));
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
- className: classnames__WEBPACK_IMPORTED_MODULE_3___default()((_PageNavigationButtons_module_scss__WEBPACK_IMPORTED_MODULE_10___default().buttonsContainer), {
- [(_PageNavigationButtons_module_scss__WEBPACK_IMPORTED_MODULE_10___default().audioPlayerOpen)]: !isAudioPlayerHidden
- }),
- children: [
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .ZP, {
- size: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonSize.Small */ .qE.Small,
- className: (_PageNavigationButtons_module_scss__WEBPACK_IMPORTED_MODULE_10___default().prevButton),
- onClick: scrollToPreviousPage,
- shouldFlipOnRTL: false,
- tooltip: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
- children: [
- t("prev-page"),
- " ",
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_KeyboardInput__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
- invertColors: true,
- keyboardKey: "⬆"
- })
- ]
- }),
- tooltipContentSide: _dls_Tooltip__WEBPACK_IMPORTED_MODULE_7__/* .ContentSide.LEFT */ .iw.LEFT,
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_icons_chevron_down_svg__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {})
- }),
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .ZP, {
- size: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonSize.Small */ .qE.Small,
- onClick: scrollToNextPage,
- tooltip: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
- children: [
- t("next-page"),
- " ",
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_KeyboardInput__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
- invertColors: true,
- keyboardKey: "⬇"
- })
- ]
- }),
- tooltipContentSide: _dls_Tooltip__WEBPACK_IMPORTED_MODULE_7__/* .ContentSide.LEFT */ .iw.LEFT,
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_icons_chevron_down_svg__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {})
- })
- ]
- });
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PageNavigationButtons);
- __webpack_async_result__();
- } catch(e) { __webpack_async_result__(e); } });
- /***/ }),
- /***/ 87065:
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(64042);
- /* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_range__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
- /* harmony import */ var _ReadingViewSkeleton_module_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(82877);
- /* harmony import */ var _ReadingViewSkeleton_module_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_ReadingViewSkeleton_module_scss__WEBPACK_IMPORTED_MODULE_9__);
- /* harmony import */ var _components_Verse_VerseText_module_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(29702);
- /* harmony import */ var _components_Verse_VerseText_module_scss__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_components_Verse_VerseText_module_scss__WEBPACK_IMPORTED_MODULE_10__);
- /* harmony import */ var _dls_Skeleton_Skeleton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77048);
- /* harmony import */ var _redux_slices_QuranReader_readingPreferences__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(90264);
- /* harmony import */ var _redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(62093);
- /* harmony import */ var _utils_fontFaceHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(64198);
- /* harmony import */ var _utils_page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(94007);
- const ReadingViewSkeleton = ()=>{
- const { quranFont , quranTextFontScale , mushafLines } = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(_redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_6__/* .selectQuranReaderStyles */ .Pt, react_redux__WEBPACK_IMPORTED_MODULE_3__.shallowEqual);
- const { showWordByWordTranslation , showWordByWordTransliteration } = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(_redux_slices_QuranReader_readingPreferences__WEBPACK_IMPORTED_MODULE_5__/* .selectInlineDisplayWordByWordPreferences */ .eB, react_redux__WEBPACK_IMPORTED_MODULE_3__.shallowEqual);
- const numberOfLines = (0,_utils_page__WEBPACK_IMPORTED_MODULE_8__/* .getMushafLinesNumber */ .Nl)(quranFont, mushafLines);
- const isWordByWordLayout = showWordByWordTranslation || showWordByWordTransliteration;
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
- className: (_ReadingViewSkeleton_module_scss__WEBPACK_IMPORTED_MODULE_9___default().skeletonContainer),
- children: lodash_range__WEBPACK_IMPORTED_MODULE_2___default()(numberOfLines).map((i)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Skeleton_Skeleton__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
- className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_ReadingViewSkeleton_module_scss__WEBPACK_IMPORTED_MODULE_9___default().skeleton), (_components_Verse_VerseText_module_scss__WEBPACK_IMPORTED_MODULE_10___default())[(0,_utils_fontFaceHelper__WEBPACK_IMPORTED_MODULE_7__/* .getFontClassName */ .bZ)(quranFont, quranTextFontScale, mushafLines)], {
- [(_ReadingViewSkeleton_module_scss__WEBPACK_IMPORTED_MODULE_9___default().fixedWidth)]: !isWordByWordLayout
- })
- }, i))
- });
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReadingViewSkeleton);
- /***/ }),
- /***/ 45211:
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98492);
- /* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_groupBy__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var _utils_verse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44519);
- /**
- * Groups verses into lines to match the Quran Page (Madani Mushaf) layout
- * The returning value is an object containing the page and line number as a key,
- * and array of word for the value. E.g.
- * {
- * Page1-Line2: [words],
- * Page1-Line3: [words]
- * ...
- * }
- *
- * @returns {Record<string, Word[]}
- */ const groupLinesByVerses = (verses)=>{
- let words = [];
- // Flattens the verses into an array of words
- verses.forEach((verse)=>{
- words = [
- ...words,
- ...(0,_utils_verse__WEBPACK_IMPORTED_MODULE_1__/* .getVerseWords */ .LQ)(verse, true)
- ];
- });
- // Groups the words based on their (page and) line number
- const lines = lodash_groupBy__WEBPACK_IMPORTED_MODULE_0___default()(words, (word)=>`Page${word.pageNumber}-Line${word.lineNumber}`);
- return lines;
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (groupLinesByVerses);
- /***/ }),
- /***/ 82651:
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71853);
- /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var _utils_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4917);
- /* harmony import */ var _utils_apiPaths__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(46127);
- /* harmony import */ var _utils_verse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44519);
- /* harmony import */ var src_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(92684);
- /* harmony import */ var types_QuranReader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50467);
- /* harmony import */ var types_ScrollAlign__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(57070);
- /**
- * Get where a verse lies in a mushaf page. This is achieved by:
- *
- * 1. Checking where the index of the current verse is within the page.
- * 2. Calculating how far the index is from the beginning of the array of verses of that page.
- * 3. If it lies in the first third portion, then its position is 'start', the second
- * third of the page, its position is 'center', the last third of the page its position
- * is 'end'.
- *
- * @param {string} startingVerseKey
- * @param {number} mushafPageNumber
- * @param {Record<number, LookupRecord>} pagesVersesRange
- * @returns {ScrollAlign}
- */ const getVersePositionWithinAMushafPage = (startingVerseKey, mushafPageNumber, pagesVersesRange)=>{
- const pageStartVerseNumber = (0,_utils_verse__WEBPACK_IMPORTED_MODULE_4__/* .getVerseNumberFromKey */ .tR)(pagesVersesRange[mushafPageNumber].from);
- const pageEndVerseNumber = (0,_utils_verse__WEBPACK_IMPORTED_MODULE_4__/* .getVerseNumberFromKey */ .tR)(pagesVersesRange[mushafPageNumber].to);
- const verseOrderWithinPage = (0,_utils_verse__WEBPACK_IMPORTED_MODULE_4__/* .getVerseNumberFromKey */ .tR)(startingVerseKey) - pageStartVerseNumber + 1;
- const totalPageNumberOfVerses = pageEndVerseNumber - pageStartVerseNumber + 1;
- const verseKeyPosition = verseOrderWithinPage * 100 / totalPageNumberOfVerses;
- if (verseKeyPosition <= 33.3) {
- return types_ScrollAlign__WEBPACK_IMPORTED_MODULE_7__/* ["default"].Start */ .Z.Start;
- }
- if (verseKeyPosition <= 66.6) {
- return types_ScrollAlign__WEBPACK_IMPORTED_MODULE_7__/* ["default"].Center */ .Z.Center;
- }
- return types_ScrollAlign__WEBPACK_IMPORTED_MODULE_7__/* ["default"].End */ .Z.End;
- };
- /**
- * This hook listens to startingVerse query param and navigate to the
- * location where the page of that verse is in the virtualized list if we
- * already have the data of that verse; otherwise, we will call BE to fetch
- * the page number of the verse we want to navigate to.
- *
- * [NOTE]: This is meant to be used by ReadingView only.
- *
- * @param {QuranReaderDataType} quranReaderDataType
- * @param {React.MutableRefObject<VirtuosoHandle>} virtuosoRef
- * @param {VersesResponse} initialData
- * @param {QuranReaderStyles} quranReaderStyles
- * @param {Verse[]} verses
- * @param {Record<number, LookupRecord>} pagesVersesRange
- * @param {boolean} isUsingDefaultFont
- * @param {QuranFont} quranFont
- * @param {MushafLines} mushafLines
- * @param {boolean} isPagesLookupLoading
- */ const useScrollToVirtualizedReadingView = (quranReaderDataType, virtuosoRef, initialData, quranReaderStyles, verses, pagesVersesRange, isUsingDefaultFont, quranFont, mushafLines, isPagesLookupLoading)=>{
- const router = (0,next_router__WEBPACK_IMPORTED_MODULE_1__.useRouter)();
- const { startingVerse , chapterId } = router.query;
- const shouldScroll = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);
- /**
- * We need to scroll again when we have just changed the font since the same
- * verse might lie on another page/position. Same for when we change the
- * verse.
- */ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
- shouldScroll.current = true;
- }, [
- quranFont,
- mushafLines,
- startingVerse
- ]);
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(// eslint-disable-next-line react-func/max-lines-per-function
- ()=>{
- // if we have the data of the page lookup
- if (!isPagesLookupLoading && virtuosoRef.current && Object.keys(pagesVersesRange).length) {
- // if startingVerse is present in the url
- if (quranReaderDataType === types_QuranReader__WEBPACK_IMPORTED_MODULE_6__/* .QuranReaderDataType.Chapter */ .Qi.Chapter && startingVerse) {
- const startingVerseNumber = Number(startingVerse);
- // if the startingVerse is a valid integer and is above 1
- if (Number.isInteger(startingVerseNumber) && startingVerseNumber > 0) {
- const firstPageOfCurrentChapter = isUsingDefaultFont ? initialData.verses[0].pageNumber : Number(Object.keys(pagesVersesRange)[0]);
- // search for the verse number in the already fetched verses first
- const startFromVerseData = verses.find((verse)=>verse.verseNumber === startingVerseNumber);
- if (startFromVerseData && shouldScroll.current === true && pagesVersesRange[startFromVerseData.pageNumber]) {
- const scrollToPageIndex = startFromVerseData.pageNumber - firstPageOfCurrentChapter;
- virtuosoRef.current.scrollToIndex({
- index: scrollToPageIndex,
- align: getVersePositionWithinAMushafPage(`${chapterId}:${startingVerseNumber}`, startFromVerseData.pageNumber, pagesVersesRange)
- });
- shouldScroll.current = false;
- } else {
- // get the page number by the verse key and the mushafId (because the page will be different for Indopak Mushafs)
- (0,src_api__WEBPACK_IMPORTED_MODULE_5__/* .fetcher */ ._i)((0,_utils_apiPaths__WEBPACK_IMPORTED_MODULE_3__/* .makeVersesFilterUrl */ .Wq)({
- filters: `${chapterId}:${startingVerseNumber}`,
- fields: `page_number`,
- ...(0,_utils_api__WEBPACK_IMPORTED_MODULE_2__/* .getMushafId */ .$P)(quranReaderStyles.quranFont, quranReaderStyles.mushafLines)
- })).then((response)=>{
- if (response.verses.length && shouldScroll.current === true) {
- const scrollToPageIndex = response.verses[0].pageNumber - firstPageOfCurrentChapter;
- if (pagesVersesRange[response.verses[0].pageNumber]) {
- virtuosoRef.current.scrollToIndex({
- index: scrollToPageIndex,
- align: getVersePositionWithinAMushafPage(`${chapterId}:${startingVerseNumber}`, response.verses[0].pageNumber, pagesVersesRange)
- });
- shouldScroll.current = false;
- }
- }
- });
- }
- }
- }
- }
- }, [
- chapterId,
- initialData.verses,
- isPagesLookupLoading,
- isUsingDefaultFont,
- pagesVersesRange,
- quranReaderDataType,
- quranReaderStyles.mushafLines,
- quranReaderStyles.quranFont,
- startingVerse,
- verses,
- virtuosoRef,
- ]);
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useScrollToVirtualizedReadingView);
- /***/ }),
- /***/ 29078:
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(96954);
- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dynamic__WEBPACK_IMPORTED_MODULE_3__);
- /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60866);
- /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4__);
- /* harmony import */ var react_hotkeys_hook__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2784);
- /* harmony import */ var react_hotkeys_hook__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_hotkeys_hook__WEBPACK_IMPORTED_MODULE_5__);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6022);
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_6__);
- /* harmony import */ var react_virtuoso__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(78404);
- /* harmony import */ var react_virtuoso__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_virtuoso__WEBPACK_IMPORTED_MODULE_7__);
- /* harmony import */ var _utils_page__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(95871);
- /* harmony import */ var _hooks_useScrollToVirtualizedVerse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(82651);
- /* harmony import */ var _PageContainer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(92296);
- /* harmony import */ var _PageNavigationButtons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(60178);
- /* harmony import */ var _ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(27374);
- /* harmony import */ var _ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26__);
- /* harmony import */ var _ReadingViewSkeleton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(87065);
- /* harmony import */ var _components_QuranReader_hooks_useFetchPagesLookup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(24881);
- /* harmony import */ var _components_QuranReader_onCopyQuranWords__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(12383);
- /* harmony import */ var _components_QuranReader_QueryParamMessage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(61269);
- /* harmony import */ var _dls_Spinner_Spinner__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7190);
- /* harmony import */ var _hooks_useGetQueryParamOrReduxValue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(80211);
- /* harmony import */ var _hooks_useGetQueryParamOrXstateValue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(93134);
- /* harmony import */ var _hooks_useQcfFont__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(38102);
- /* harmony import */ var _redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(16143);
- /* harmony import */ var _redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(62093);
- /* harmony import */ var _utils_eventLogger__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(55943);
- /* harmony import */ var _utils_fontFaceHelper__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(64198);
- /* harmony import */ var src_pages_error__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(36049);
- /* harmony import */ var types_QueryParam__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(11721);
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_PageContainer__WEBPACK_IMPORTED_MODULE_9__, _PageNavigationButtons__WEBPACK_IMPORTED_MODULE_10__, _components_QuranReader_hooks_useFetchPagesLookup__WEBPACK_IMPORTED_MODULE_12__, _components_QuranReader_onCopyQuranWords__WEBPACK_IMPORTED_MODULE_13__, _components_QuranReader_QueryParamMessage__WEBPACK_IMPORTED_MODULE_14__, _hooks_useGetQueryParamOrXstateValue__WEBPACK_IMPORTED_MODULE_17__, _utils_eventLogger__WEBPACK_IMPORTED_MODULE_21__, src_pages_error__WEBPACK_IMPORTED_MODULE_23__]);
- ([_PageContainer__WEBPACK_IMPORTED_MODULE_9__, _PageNavigationButtons__WEBPACK_IMPORTED_MODULE_10__, _components_QuranReader_hooks_useFetchPagesLookup__WEBPACK_IMPORTED_MODULE_12__, _components_QuranReader_onCopyQuranWords__WEBPACK_IMPORTED_MODULE_13__, _components_QuranReader_QueryParamMessage__WEBPACK_IMPORTED_MODULE_14__, _hooks_useGetQueryParamOrXstateValue__WEBPACK_IMPORTED_MODULE_17__, _utils_eventLogger__WEBPACK_IMPORTED_MODULE_21__, src_pages_error__WEBPACK_IMPORTED_MODULE_23__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
- /* eslint-disable max-lines */ /* eslint-disable react-func/max-lines-per-function */ /* eslint-disable react/no-multi-comp */
- const EndOfScrollingControls = next_dynamic__WEBPACK_IMPORTED_MODULE_3___default()(null, {
- loadableGenerated: {
- modules: [
- "../components/QuranReader/ReadingView/index.tsx -> " + "@/components/QuranReader/EndOfScrollingControls"
- ]
- },
- ssr: false,
- loading: ()=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Spinner_Spinner__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z, {})
- });
- const INCREASE_VIEWPORT_BY_PIXELS = 1200;
- const ReadingView = ({ quranReaderStyles , quranReaderDataType , initialData , resourceId })=>{
- const { 0: mushafPageToVersesMap , 1: setMushafPageToVersesMap } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({
- [initialData.verses[0].pageNumber]: initialData.verses
- });
- const { lang } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_4___default()("quran-reader");
- const isUsingDefaultFont = (0,react_redux__WEBPACK_IMPORTED_MODULE_6__.useSelector)(_redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_20__/* .selectIsUsingDefaultFont */ .i9);
- const lastReadPageNumber = (0,react_redux__WEBPACK_IMPORTED_MODULE_6__.useSelector)(_redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_19__/* .selectedLastReadPage */ .E9, react_redux__WEBPACK_IMPORTED_MODULE_6__.shallowEqual);
- const verses = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>Object.values(mushafPageToVersesMap).flat(), [
- mushafPageToVersesMap
- ]);
- const { value: reciterId , isQueryParamDifferent: reciterQueryParamDifferent , } = (0,_hooks_useGetQueryParamOrXstateValue__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z)(types_QueryParam__WEBPACK_IMPORTED_MODULE_24__/* ["default"].Reciter */ .Z.Reciter);
- const { value: wordByWordLocale , isQueryParamDifferent: wordByWordLocaleQueryParamDifferent , } = (0,_hooks_useGetQueryParamOrReduxValue__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .Z)(types_QueryParam__WEBPACK_IMPORTED_MODULE_24__/* ["default"].WBW_LOCALE */ .Z.WBW_LOCALE);
- const { quranFont , mushafLines , quranTextFontScale } = quranReaderStyles;
- (0,_hooks_useQcfFont__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z)(quranFont, verses);
- const { pagesCount , hasError , pagesVersesRange , isLoading } = (0,_components_QuranReader_hooks_useFetchPagesLookup__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z)(resourceId, quranReaderDataType, initialData, quranReaderStyles, isUsingDefaultFont);
- const currentPageIndex = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>(0,_utils_page__WEBPACK_IMPORTED_MODULE_25__/* .getPageIndexByPageNumber */ .u7)(Number(lastReadPageNumber), pagesVersesRange), [
- lastReadPageNumber,
- pagesVersesRange
- ]);
- const virtuosoRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
- (0,_hooks_useScrollToVirtualizedVerse__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)(quranReaderDataType, virtuosoRef, initialData, quranReaderStyles, verses, pagesVersesRange, isUsingDefaultFont, quranFont, mushafLines, isLoading);
- const scrollToPreviousPage = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{
- virtuosoRef.current.scrollToIndex({
- index: currentPageIndex - 1,
- align: "start",
- offset: -35
- });
- }, [
- currentPageIndex
- ]);
- const scrollToNextPage = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{
- virtuosoRef.current.scrollToIndex({
- index: currentPageIndex + 1,
- align: "start",
- offset: 25
- });
- }, [
- currentPageIndex
- ]);
- const onPrevPageClicked = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{
- (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_21__/* .logButtonClick */ .MY)("reading_view_prev_page_button");
- scrollToPreviousPage();
- }, [
- scrollToPreviousPage
- ]);
- const onNextPageClicked = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{
- (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_21__/* .logButtonClick */ .MY)("reading_view_next_page_button");
- scrollToNextPage();
- }, [
- scrollToNextPage
- ]);
- const allowKeyboardNavigation = quranTextFontScale <= 5;
- const onUpClicked = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((event)=>{
- event.preventDefault();
- scrollToPreviousPage();
- }, [
- scrollToPreviousPage
- ]);
- const onDownClicked = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((event)=>{
- event.preventDefault();
- scrollToNextPage();
- }, [
- scrollToNextPage
- ]);
- (0,react_hotkeys_hook__WEBPACK_IMPORTED_MODULE_5__.useHotkeys)("Up", onUpClicked, {
- enabled: allowKeyboardNavigation
- }, [
- scrollToPreviousPage
- ]);
- (0,react_hotkeys_hook__WEBPACK_IMPORTED_MODULE_5__.useHotkeys)("Down", onDownClicked, {
- enabled: allowKeyboardNavigation
- }, [
- scrollToNextPage
- ]);
- const itemContentRenderer = (pageIndex)=>{
- if (pageIndex === pagesCount) {
- const pageVerses = mushafPageToVersesMap[lastReadPageNumber];
- const lastVerse = pageVerses?.[pageVerses.length - 1];
- if (!lastVerse) return null;
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(EndOfScrollingControls, {
- quranReaderDataType: quranReaderDataType,
- lastVerse: lastVerse,
- initialData: initialData
- });
- }
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_PageContainer__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, {
- pagesVersesRange: pagesVersesRange,
- quranReaderStyles: quranReaderStyles,
- reciterId: reciterId,
- lang: lang,
- wordByWordLocale: wordByWordLocale,
- pageIndex: pageIndex,
- setMushafPageToVersesMap: setMushafPageToVersesMap,
- initialData: initialData
- });
- };
- if (hasError) {
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_pages_error__WEBPACK_IMPORTED_MODULE_23__["default"], {});
- }
- const shouldShowQueryParamMessage = reciterQueryParamDifferent || wordByWordLocaleQueryParamDifferent;
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
- children: [
- shouldShowQueryParamMessage && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components_QuranReader_QueryParamMessage__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z, {
- translationsQueryParamDifferent: false,
- reciterQueryParamDifferent: reciterQueryParamDifferent,
- wordByWordLocaleQueryParamDifferent: wordByWordLocaleQueryParamDifferent
- }),
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
- onCopy: (event)=>(0,_components_QuranReader_onCopyQuranWords__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z)(event, verses, quranFont),
- className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26___default().container), (_ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26___default())[(0,_utils_fontFaceHelper__WEBPACK_IMPORTED_MODULE_22__/* .getLineWidthClassName */ .oj)(quranFont, quranTextFontScale, mushafLines)]),
- children: isLoading ? /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
- className: (_ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26___default().virtuosoScroller),
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_ReadingViewSkeleton__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, {})
- }) : /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_virtuoso__WEBPACK_IMPORTED_MODULE_7__.Virtuoso, {
- ref: virtuosoRef,
- useWindowScroll: true,
- increaseViewportBy: INCREASE_VIEWPORT_BY_PIXELS,
- className: (_ReadingView_module_scss__WEBPACK_IMPORTED_MODULE_26___default().virtuosoScroller),
- initialItemCount: 1,
- totalCount: pagesCount + 1,
- itemContent: itemContentRenderer
- })
- }),
- allowKeyboardNavigation && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_PageNavigationButtons__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z, {
- scrollToNextPage: onNextPageClicked,
- scrollToPreviousPage: onPrevPageClicked
- })
- ]
- });
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReadingView);
- __webpack_async_result__();
- } catch(e) { __webpack_async_result__(e); } });
- /***/ }),
- /***/ 95871:
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- "use strict";
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "L8": () => (/* binding */ getPageNumberByPageIndex),
- /* harmony export */ "u7": () => (/* binding */ getPageIndexByPageNumber)
- /* harmony export */ });
- /* unused harmony exports getNumberOfPages, verseIndexToApiPageNumber */
- /**
- * Get the page number by adding the first page number of the current
- * resource e.g. chapter to the item (page) index from the virtualized list.
- *
- * @param {number} pageIndex
- * @param {Record<number, LookupRecord>} pagesVersesRange
- * @returns {number}
- */ const getPageNumberByPageIndex = (pageIndex, pagesVersesRange)=>Number(Object.keys(pagesVersesRange)[0]) + pageIndex;
- /**
- * Get the page index by the page number.
- *
- * @param {number} pageNumber
- * @param {Record<number, LookupRecord>} pagesVersesRange
- * @returns {number}
- */ const getPageIndexByPageNumber = (pageNumber, pagesVersesRange)=>Number(pageNumber) - Number(Object.keys(pagesVersesRange)[0]);
- /**
- * Get the number of pages of the current resource e.g. chapter.
- *
- * @param {number} numberOfVerses
- * @param {number} versesPerPage
- * @returns {number}
- */ const getNumberOfPages = (numberOfVerses, versesPerPage)=>Math.ceil(numberOfVerses / versesPerPage);
- /**
- * Convert a verse index to a page number by dividing the index
- * by how many items there are in a page.
- *
- * @param {number} verseNumber
- * @param {number} versesPerPage
- * @returns {number}
- */ const verseIndexToApiPageNumber = (verseNumber, versesPerPage)=>Math.floor(verseNumber / versesPerPage) + 1;
- /***/ })
- };
- ;
- //# sourceMappingURL=29078.js.map
|