99741.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768
  1. "use strict";
  2. exports.id = 99741;
  3. exports.ids = [99741];
  4. exports.modules = {
  5. /***/ 84024:
  6. /***/ ((module, __webpack_exports__, __webpack_require__) => {
  7. __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
  8. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  9. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  10. /* harmony export */ });
  11. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
  12. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
  13. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
  14. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
  15. /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
  16. /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
  17. /* harmony import */ var fuse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62733);
  18. /* harmony import */ var fuse_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(fuse_js__WEBPACK_IMPORTED_MODULE_3__);
  19. /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71853);
  20. /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_4__);
  21. /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60866);
  22. /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_5__);
  23. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6022);
  24. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_6__);
  25. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(45515);
  26. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18__);
  27. /* harmony import */ var _dls_Link_Link__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(61239);
  28. /* harmony import */ var _hooks_useChapterId__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14266);
  29. /* harmony import */ var _hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(56748);
  30. /* harmony import */ var _redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(16143);
  31. /* harmony import */ var _redux_slices_revelationOrder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(88795);
  32. /* harmony import */ var _types_SearchQuerySource__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(3050);
  33. /* harmony import */ var _utils_eventLogger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(55943);
  34. /* harmony import */ var _utils_locale__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(24709);
  35. /* harmony import */ var _utils_navigation__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(57933);
  36. /* harmony import */ var _utils_revelationOrder__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(4959);
  37. /* harmony import */ var src_contexts_DataContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(70813);
  38. var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_eventLogger__WEBPACK_IMPORTED_MODULE_13__, _utils_navigation__WEBPACK_IMPORTED_MODULE_15__]);
  39. ([_utils_eventLogger__WEBPACK_IMPORTED_MODULE_13__, _utils_navigation__WEBPACK_IMPORTED_MODULE_15__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
  40. const filterSurah = (surahs, searchQuery)=>{
  41. const fuse = new (fuse_js__WEBPACK_IMPORTED_MODULE_3___default())(surahs, {
  42. threshold: 0.3,
  43. keys: [
  44. "id",
  45. "localizedId",
  46. "transliteratedName"
  47. ]
  48. });
  49. const filteredSurah = fuse.search(searchQuery).map(({ item })=>item);
  50. if (!filteredSurah.length) {
  51. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_13__/* .logEmptySearchResults */ .Dy)({
  52. query: searchQuery,
  53. source: _types_SearchQuerySource__WEBPACK_IMPORTED_MODULE_12__/* ["default"].SidebarNavigationChaptersList */ .Z.SidebarNavigationChaptersList
  54. });
  55. } else {
  56. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_13__/* .logTextSearchQuery */ .tL)(searchQuery, _types_SearchQuerySource__WEBPACK_IMPORTED_MODULE_12__/* ["default"].SidebarNavigationChaptersList */ .Z.SidebarNavigationChaptersList);
  57. }
  58. return filteredSurah;
  59. };
  60. const SurahList = ()=>{
  61. const { t , lang } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_5___default()("common");
  62. const lastReadVerseKey = (0,react_redux__WEBPACK_IMPORTED_MODULE_6__.useSelector)(_redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_10__/* .selectLastReadVerseKey */ .eQ);
  63. const isReadingByRevelationOrder = (0,react_redux__WEBPACK_IMPORTED_MODULE_6__.useSelector)(_redux_slices_revelationOrder__WEBPACK_IMPORTED_MODULE_11__/* .selectIsReadingByRevelationOrder */ .kW);
  64. const router = (0,next_router__WEBPACK_IMPORTED_MODULE_4__.useRouter)();
  65. const chaptersData = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(src_contexts_DataContext__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .Z);
  66. const chapterIds = (0,_hooks_useChapterId__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)(lang);
  67. const urlChapterId = chapterIds && chapterIds.length > 0 ? chapterIds[0] : null;
  68. const { 0: currentChapterId , 1: setCurrentChapterId } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(urlChapterId);
  69. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  70. setCurrentChapterId(lastReadVerseKey.chapterId);
  71. }, [
  72. lastReadVerseKey
  73. ]);
  74. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  75. // when the user navigates to a new chapter, the current chapter id
  76. setCurrentChapterId(urlChapterId);
  77. }, [
  78. urlChapterId
  79. ]);
  80. const { 0: searchQuery , 1: setSearchQuery } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("");
  81. const chapterDataArray = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{
  82. if (!isReadingByRevelationOrder) {
  83. return Object.entries(chaptersData).map(([id, chapter])=>{
  84. return {
  85. ...chapter,
  86. id,
  87. localizedId: (0,_utils_locale__WEBPACK_IMPORTED_MODULE_14__/* .toLocalizedNumber */ .rQ)(Number(id), lang)
  88. };
  89. });
  90. }
  91. // Sort the chapters by revelation order
  92. return Object.entries(chaptersData).map(([id, chapter])=>{
  93. return {
  94. ...chapter,
  95. id,
  96. localizedId: (0,_utils_locale__WEBPACK_IMPORTED_MODULE_14__/* .toLocalizedNumber */ .rQ)(Number(_utils_revelationOrder__WEBPACK_IMPORTED_MODULE_17__/* ["default"].indexOf */ .Z.indexOf(Number(id)) + 1), lang)
  97. };
  98. }).sort((a, b)=>_utils_revelationOrder__WEBPACK_IMPORTED_MODULE_17__/* ["default"].indexOf */ .Z.indexOf(Number(a.id)) - _utils_revelationOrder__WEBPACK_IMPORTED_MODULE_17__/* ["default"].indexOf */ .Z.indexOf(Number(b.id)));
  99. }, [
  100. isReadingByRevelationOrder,
  101. chaptersData,
  102. lang
  103. ]);
  104. const filteredChapters = searchQuery ? filterSurah(chapterDataArray, searchQuery) : chapterDataArray;
  105. const [scrollTo, selectedChapterRef] = (0,_hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_9__/* .useScrollToElement */ .Oz)(_hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_9__/* .SCROLL_TO_NEAREST_ELEMENT */ .lT);
  106. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  107. scrollTo();
  108. }, [
  109. currentChapterId,
  110. scrollTo
  111. ]);
  112. // Handle when user press `Enter` in input box
  113. const handleSurahInputSubmit = (e)=>{
  114. e.preventDefault();
  115. const firstFilteredChapter = filteredChapters[0];
  116. if (firstFilteredChapter) {
  117. router.push((0,_utils_navigation__WEBPACK_IMPORTED_MODULE_15__/* .getSurahNavigationUrl */ .qm)(firstFilteredChapter.id));
  118. }
  119. };
  120. return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
  121. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().surahListContainer),
  122. children: [
  123. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("form", {
  124. onSubmit: handleSurahInputSubmit,
  125. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("input", {
  126. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().searchInput),
  127. value: searchQuery,
  128. onChange: (e)=>setSearchQuery(e.target.value),
  129. placeholder: t("sidebar.search-surah")
  130. })
  131. }),
  132. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
  133. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().listContainer),
  134. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
  135. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().list),
  136. children: filteredChapters.map((chapter)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Link_Link__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
  137. href: (0,_utils_navigation__WEBPACK_IMPORTED_MODULE_15__/* .getSurahNavigationUrl */ .qm)(chapter.id),
  138. shouldPrefetch: false,
  139. children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
  140. ref: chapter.id.toString() === currentChapterId ? selectedChapterRef : null,
  141. className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().listItem), {
  142. [(_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().selectedItem)]: chapter.id.toString() === currentChapterId
  143. }),
  144. children: [
  145. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
  146. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_18___default().chapterNumber),
  147. children: chapter.localizedId
  148. }),
  149. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
  150. children: chapter.transliteratedName
  151. })
  152. ]
  153. })
  154. }, chapter.id))
  155. })
  156. })
  157. ]
  158. });
  159. };
  160. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SurahList);
  161. __webpack_async_result__();
  162. } catch(e) { __webpack_async_result__(e); } });
  163. /***/ }),
  164. /***/ 99741:
  165. /***/ ((module, __webpack_exports__, __webpack_require__) => {
  166. __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
  167. __webpack_require__.r(__webpack_exports__);
  168. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  169. /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
  170. /* harmony export */ });
  171. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
  172. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
  173. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45515);
  174. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_3__);
  175. /* harmony import */ var _SurahList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84024);
  176. /* harmony import */ var _VerseList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24077);
  177. var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_SurahList__WEBPACK_IMPORTED_MODULE_1__, _VerseList__WEBPACK_IMPORTED_MODULE_2__]);
  178. ([_SurahList__WEBPACK_IMPORTED_MODULE_1__, _VerseList__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
  179. const SurahSelection = ()=>{
  180. return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
  181. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_3___default().surahBodyContainer),
  182. children: [
  183. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SurahList__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {}),
  184. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_VerseList__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {})
  185. ]
  186. });
  187. };
  188. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SurahSelection);
  189. __webpack_async_result__();
  190. } catch(e) { __webpack_async_result__(e); } });
  191. /***/ }),
  192. /***/ 24077:
  193. /***/ ((module, __webpack_exports__, __webpack_require__) => {
  194. __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
  195. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  196. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  197. /* harmony export */ });
  198. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
  199. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
  200. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
  201. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
  202. /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(71853);
  203. /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_2__);
  204. /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60866);
  205. /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3__);
  206. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6022);
  207. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
  208. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(45515);
  209. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14__);
  210. /* harmony import */ var _VerseListItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(11965);
  211. /* harmony import */ var _hooks_useChapterId__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(14266);
  212. /* harmony import */ var _redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16143);
  213. /* harmony import */ var _types_SearchQuerySource__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(3050);
  214. /* harmony import */ var _utils_eventLogger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(55943);
  215. /* harmony import */ var _utils_locale__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(24709);
  216. /* harmony import */ var _utils_navigation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(57933);
  217. /* harmony import */ var _utils_verse__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(44519);
  218. /* harmony import */ var src_contexts_DataContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(70813);
  219. var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_VerseListItem__WEBPACK_IMPORTED_MODULE_5__, _utils_eventLogger__WEBPACK_IMPORTED_MODULE_9__, _utils_navigation__WEBPACK_IMPORTED_MODULE_11__]);
  220. ([_VerseListItem__WEBPACK_IMPORTED_MODULE_5__, _utils_eventLogger__WEBPACK_IMPORTED_MODULE_9__, _utils_navigation__WEBPACK_IMPORTED_MODULE_11__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
  221. const VerseList = ()=>{
  222. const { 0: searchQuery , 1: setSearchQuery } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("");
  223. const { t , lang } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3___default()("common");
  224. const lastReadVerseKey = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useSelector)(_redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_7__/* .selectLastReadVerseKey */ .eQ);
  225. const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();
  226. const chaptersData = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(src_contexts_DataContext__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z);
  227. const chapterIds = (0,_hooks_useChapterId__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(lang);
  228. const urlChapterId = chapterIds && chapterIds.length > 0 ? chapterIds[0] : null;
  229. const { 0: currentChapterId , 1: setCurrentChapterId } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(urlChapterId);
  230. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  231. setCurrentChapterId(lastReadVerseKey.chapterId);
  232. }, [
  233. lastReadVerseKey
  234. ]);
  235. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  236. // when the user navigates to a new chapter, reset the search query, and update the current chapter id
  237. setSearchQuery("");
  238. setCurrentChapterId(urlChapterId);
  239. }, [
  240. urlChapterId
  241. ]);
  242. const verseKeys = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>currentChapterId ? (0,_utils_verse__WEBPACK_IMPORTED_MODULE_12__/* .generateChapterVersesKeys */ .qB)(chaptersData, currentChapterId) : [], [
  243. chaptersData,
  244. currentChapterId
  245. ]);
  246. const filteredVerseKeys = verseKeys.filter((verseKey)=>{
  247. const verseNumber = (0,_utils_verse__WEBPACK_IMPORTED_MODULE_12__/* .getVerseNumberFromKey */ .tR)(verseKey);
  248. const localizedVerseNumber = (0,_utils_locale__WEBPACK_IMPORTED_MODULE_10__/* .toLocalizedNumber */ .rQ)(verseNumber, lang);
  249. return localizedVerseNumber.toString().startsWith(searchQuery) || verseNumber.toString().startsWith(searchQuery);
  250. });
  251. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  252. if (!filteredVerseKeys.length) {
  253. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_9__/* .logEmptySearchResults */ .Dy)({
  254. query: searchQuery,
  255. source: _types_SearchQuerySource__WEBPACK_IMPORTED_MODULE_8__/* ["default"].SidebarNavigationVersesList */ .Z.SidebarNavigationVersesList
  256. });
  257. } else {
  258. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_9__/* .logTextSearchQuery */ .tL)(searchQuery, _types_SearchQuerySource__WEBPACK_IMPORTED_MODULE_8__/* ["default"].SidebarNavigationVersesList */ .Z.SidebarNavigationVersesList);
  259. }
  260. }, [
  261. searchQuery,
  262. filteredVerseKeys
  263. ]);
  264. // Handle when user press `Enter` in input box
  265. const handleVerseInputSubmit = (e)=>{
  266. e.preventDefault();
  267. const firstFilteredVerseKey = filteredVerseKeys[0];
  268. if (firstFilteredVerseKey) {
  269. router.push((0,_utils_navigation__WEBPACK_IMPORTED_MODULE_11__/* .getChapterWithStartingVerseUrl */ .P6)(firstFilteredVerseKey), undefined, {
  270. shallow: true
  271. });
  272. }
  273. };
  274. return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
  275. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14___default().verseListContainer),
  276. children: [
  277. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("form", {
  278. onSubmit: handleVerseInputSubmit,
  279. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("input", {
  280. value: searchQuery,
  281. onChange: (e)=>setSearchQuery(e.target.value),
  282. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14___default().searchInput),
  283. placeholder: t("verse")
  284. })
  285. }),
  286. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
  287. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14___default().listContainer),
  288. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
  289. className: (_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_14___default().list),
  290. children: filteredVerseKeys.map((verseKey)=>{
  291. return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_VerseListItem__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
  292. verseKey: verseKey
  293. }, verseKey);
  294. })
  295. })
  296. })
  297. ]
  298. });
  299. };
  300. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VerseList);
  301. __webpack_async_result__();
  302. } catch(e) { __webpack_async_result__(e); } });
  303. /***/ }),
  304. /***/ 11965:
  305. /***/ ((module, __webpack_exports__, __webpack_require__) => {
  306. __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
  307. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  308. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  309. /* harmony export */ });
  310. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
  311. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
  312. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
  313. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
  314. /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
  315. /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
  316. /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60866);
  317. /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3__);
  318. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6022);
  319. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
  320. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(45515);
  321. /* harmony import */ var _SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_11__);
  322. /* harmony import */ var _dls_Link_Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(61239);
  323. /* harmony import */ var _hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(56748);
  324. /* harmony import */ var _redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16143);
  325. /* harmony import */ var _utils_locale__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24709);
  326. /* harmony import */ var _utils_navigation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(57933);
  327. /* harmony import */ var _utils_verse__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(44519);
  328. var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_navigation__WEBPACK_IMPORTED_MODULE_9__]);
  329. _utils_navigation__WEBPACK_IMPORTED_MODULE_9__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
  330. const VerseListItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1___default().memo(({ verseKey })=>{
  331. const { lang } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3___default()();
  332. const isVerseKeySelected = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useSelector)((0,_redux_slices_QuranReader_readingTracker__WEBPACK_IMPORTED_MODULE_7__/* .selectIsVerseKeySelected */ .jM)(verseKey));
  333. const verseNumber = (0,_utils_verse__WEBPACK_IMPORTED_MODULE_10__/* .getVerseNumberFromKey */ .tR)(verseKey);
  334. const localizedVerseNumber = (0,_utils_locale__WEBPACK_IMPORTED_MODULE_8__/* .toLocalizedNumber */ .rQ)(verseNumber, lang);
  335. const [scrollTo, verseRef] = (0,_hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_6__/* .useScrollToElement */ .Oz)(_hooks_useScrollToElement__WEBPACK_IMPORTED_MODULE_6__/* .SCROLL_TO_NEAREST_ELEMENT */ .lT);
  336. (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
  337. if (isVerseKeySelected) scrollTo();
  338. }, [
  339. scrollTo,
  340. isVerseKeySelected
  341. ]);
  342. return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Link_Link__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
  343. href: (0,_utils_navigation__WEBPACK_IMPORTED_MODULE_9__/* .getChapterWithStartingVerseUrl */ .P6)(verseKey),
  344. isShallow: true,
  345. shouldPrefetch: false,
  346. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
  347. ref: verseRef,
  348. className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_11___default().listItem), {
  349. [(_SidebarNavigation_module_scss__WEBPACK_IMPORTED_MODULE_11___default().selectedItem)]: isVerseKeySelected
  350. }),
  351. children: localizedVerseNumber
  352. })
  353. }, verseKey);
  354. });
  355. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VerseListItem);
  356. __webpack_async_result__();
  357. } catch(e) { __webpack_async_result__(e); } });
  358. /***/ }),
  359. /***/ 14266:
  360. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  361. // EXPORTS
  362. __webpack_require__.d(__webpack_exports__, {
  363. "Z": () => (/* binding */ useChapterId)
  364. });
  365. // EXTERNAL MODULE: external "react"
  366. var external_react_ = __webpack_require__(16689);
  367. // EXTERNAL MODULE: external "next/router"
  368. var router_ = __webpack_require__(71853);
  369. // EXTERNAL MODULE: ./src/utils/chapter.ts
  370. var chapter = __webpack_require__(95892);
  371. // EXTERNAL MODULE: ./src/utils/locale.ts
  372. var locale = __webpack_require__(24709);
  373. ;// CONCATENATED MODULE: ./src/utils/hizb.ts
  374. /**
  375. * Whether the current hizb is the first surah.
  376. *
  377. * @param {number} hizbNumber
  378. * @returns {boolean}
  379. */ const isFirstHizb = (hizbNumber)=>hizbNumber === 1;
  380. /**
  381. * Whether the current hizb is the last surah.
  382. *
  383. * @param {number} hizbNumber
  384. * @returns {boolean}
  385. */ const isLastHizb = (hizbNumber)=>hizbNumber === 60;
  386. const TOTAL_QURAN_HIZB = 60;
  387. const getHizbIds = (lang)=>{
  388. return [
  389. ...Array(TOTAL_QURAN_HIZB)
  390. ].map((n, index)=>{
  391. const hizb = index + 1;
  392. return {
  393. value: hizb,
  394. label: toLocalizedNumber(hizb, lang)
  395. };
  396. });
  397. };
  398. /**
  399. * Given a hizbId, get chapters ids from a json file
  400. *
  401. * @param {string} hizbId
  402. * @returns {string[]} chapterIds
  403. */ const getChapterIdsForHizb = async (hizbId)=>{
  404. return new Promise((res)=>{
  405. __webpack_require__.e(/* import() */ 72488).then(__webpack_require__.t.bind(__webpack_require__, 72488, 19)).then((data)=>{
  406. res(data.default[hizbId]);
  407. });
  408. });
  409. };
  410. // EXTERNAL MODULE: ./src/utils/number.ts
  411. var number = __webpack_require__(19303);
  412. ;// CONCATENATED MODULE: ./src/utils/rub.ts
  413. const TOTAL_QURAN_RUB_EL_HIZB = 240;
  414. /**
  415. * Whether the current Rub is the first Rub El Hizb.
  416. *
  417. * @param {number} rubNumber
  418. * @returns {boolean}
  419. */ const isFirstRub = (rubNumber)=>rubNumber === 1;
  420. /**
  421. * Whether the current Rub is the last Rub El Hizb.
  422. *
  423. * @param {number} rubNumber
  424. * @returns {boolean}
  425. */ const isLastRub = (rubNumber)=>rubNumber === TOTAL_QURAN_RUB_EL_HIZB;
  426. const getRubIds = (lang)=>{
  427. return [
  428. ...Array(TOTAL_QURAN_RUB_EL_HIZB)
  429. ].map((n, index)=>{
  430. const rub = index + 1;
  431. return {
  432. value: rub,
  433. label: toLocalizedNumber(rub, lang)
  434. };
  435. });
  436. };
  437. const getChapterIdsForRub = async (rubId)=>{
  438. return new Promise((res)=>{
  439. __webpack_require__.e(/* import() */ 8858).then(__webpack_require__.t.bind(__webpack_require__, 8858, 19)).then((data)=>{
  440. res(data.default[rubId]);
  441. });
  442. });
  443. };
  444. // EXTERNAL MODULE: ./src/utils/validator.ts
  445. var validator = __webpack_require__(41051);
  446. // EXTERNAL MODULE: ./src/utils/verse.ts
  447. var verse = __webpack_require__(44519);
  448. // EXTERNAL MODULE: ./src/api.ts
  449. var api = __webpack_require__(92684);
  450. // EXTERNAL MODULE: ./src/contexts/DataContext.ts
  451. var DataContext = __webpack_require__(70813);
  452. ;// CONCATENATED MODULE: ./src/hooks/useChapterId.ts
  453. /**
  454. * Given a url path such as `/chapter/1`, return the chapters id
  455. * This will also handle case where chapterId is not specified in the url path
  456. * For example: `/juz/1`, `/pages/323`. We will get the data for those url path from json files
  457. *
  458. * @returns {string[]} chapterIds
  459. *
  460. * example:
  461. * - /juz/1 => ["1", "2"]
  462. * - /page/2 => ["2"]
  463. * - /chapter/1 => ["1"]
  464. */ const AYAH_KURSI_SLUGS = [
  465. "ayatul-kursi",
  466. "آیت الکرسی"
  467. ]; // TODO: this needs to be refactored when we localize Ayatul Kursi
  468. const useChapterIdsByUrlPath = (lang)=>{
  469. const router = (0,router_.useRouter)();
  470. const { chapterId , juzId , pageId , hizbId , rubId } = router.query;
  471. const { 0: chapterIds , 1: setChapterIds } = (0,external_react_.useState)([]);
  472. const chaptersData = (0,external_react_.useContext)(DataContext/* default */.Z);
  473. (0,external_react_.useEffect)(()=>{
  474. (async ()=>{
  475. if (chapterId) {
  476. const chapterIdOrVerseKeyOrSlug = chapterId;
  477. // if it's a chapter id
  478. if ((0,validator/* isValidChapterId */.hP)(chapterIdOrVerseKeyOrSlug)) {
  479. setChapterIds([
  480. (0,number/* formatStringNumber */.XK)(chapterIdOrVerseKeyOrSlug)
  481. ]);
  482. } else if ((0,validator/* isValidVerseKey */.CG)(chaptersData, chapterIdOrVerseKeyOrSlug)) {
  483. // if it's a verse key e.g 5:1
  484. setChapterIds([
  485. (0,verse/* getChapterNumberFromKey */.Tc)(chapterIdOrVerseKeyOrSlug).toString()
  486. ]);
  487. } else if (AYAH_KURSI_SLUGS.includes(chapterIdOrVerseKeyOrSlug.toLowerCase())) {
  488. // if it's Ayatul Kursi
  489. setChapterIds([
  490. "2"
  491. ]);
  492. } else {
  493. // we need to convert the slug into a chapterId by calling BE
  494. const sluggedChapterId = await (0,api/* getChapterIdBySlug */.U0)(chapterIdOrVerseKeyOrSlug, lang);
  495. // if it's a valid slug and the call doesn't have any errors
  496. if (sluggedChapterId) {
  497. setChapterIds([
  498. sluggedChapterId.toString()
  499. ]);
  500. }
  501. }
  502. } else if (pageId) {
  503. const chapterIdsForPage = await (0,chapter/* getChapterIdsForPage */.op)((0,number/* formatStringNumber */.XK)(pageId));
  504. setChapterIds(chapterIdsForPage);
  505. } else if (juzId) {
  506. setChapterIds(await (0,chapter/* getChapterIdsForJuz */.it)((0,number/* formatStringNumber */.XK)(juzId)));
  507. } else if (hizbId) {
  508. setChapterIds(await getChapterIdsForHizb((0,number/* formatStringNumber */.XK)(hizbId)));
  509. } else if (rubId) {
  510. setChapterIds(await getChapterIdsForRub((0,number/* formatStringNumber */.XK)(rubId)));
  511. }
  512. })();
  513. }, [
  514. pageId,
  515. juzId,
  516. hizbId,
  517. rubId,
  518. lang,
  519. chapterId,
  520. chaptersData
  521. ]);
  522. return chapterIds;
  523. };
  524. /* harmony default export */ const useChapterId = (useChapterIdsByUrlPath);
  525. /***/ }),
  526. /***/ 4959:
  527. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  528. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  529. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  530. /* harmony export */ });
  531. // The revelation order of Surahs in the Quran. Currently using https://tanzil.net/docs/revelation_order
  532. const REVELATION_ORDER = [
  533. 96,
  534. 68,
  535. 73,
  536. 74,
  537. 1,
  538. 111,
  539. 81,
  540. 87,
  541. 92,
  542. 89,
  543. 93,
  544. 94,
  545. 103,
  546. 100,
  547. 108,
  548. 102,
  549. 107,
  550. 109,
  551. 105,
  552. 113,
  553. 114,
  554. 112,
  555. 53,
  556. 80,
  557. 97,
  558. 91,
  559. 85,
  560. 95,
  561. 106,
  562. 101,
  563. 75,
  564. 104,
  565. 77,
  566. 50,
  567. 90,
  568. 86,
  569. 54,
  570. 38,
  571. 7,
  572. 72,
  573. 36,
  574. 25,
  575. 35,
  576. 19,
  577. 20,
  578. 56,
  579. 26,
  580. 27,
  581. 28,
  582. 17,
  583. 10,
  584. 11,
  585. 12,
  586. 15,
  587. 6,
  588. 37,
  589. 31,
  590. 34,
  591. 39,
  592. 40,
  593. 41,
  594. 42,
  595. 43,
  596. 44,
  597. 45,
  598. 46,
  599. 51,
  600. 88,
  601. 18,
  602. 16,
  603. 71,
  604. 14,
  605. 21,
  606. 23,
  607. 32,
  608. 52,
  609. 67,
  610. 69,
  611. 70,
  612. 78,
  613. 79,
  614. 82,
  615. 84,
  616. 30,
  617. 29,
  618. 83,
  619. 2,
  620. 8,
  621. 3,
  622. 33,
  623. 60,
  624. 4,
  625. 99,
  626. 57,
  627. 47,
  628. 13,
  629. 55,
  630. 76,
  631. 65,
  632. 98,
  633. 59,
  634. 24,
  635. 22,
  636. 63,
  637. 58,
  638. 49,
  639. 66,
  640. 64,
  641. 61,
  642. 62,
  643. 48,
  644. 5,
  645. 9,
  646. 110,
  647. ];
  648. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (REVELATION_ORDER);
  649. /***/ }),
  650. /***/ 3050:
  651. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  652. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  653. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  654. /* harmony export */ });
  655. var SearchQuerySource;
  656. (function(SearchQuerySource) {
  657. SearchQuerySource["CommandBar"] = "command_bar";
  658. SearchQuerySource["SearchDrawer"] = "search_drawer";
  659. SearchQuerySource["SearchPage"] = "search_page";
  660. SearchQuerySource["TranslationSettingsDrawer"] = "settings_drawer_translation";
  661. SearchQuerySource["TafsirSettingsDrawer"] = "settings_drawer_tafsir";
  662. SearchQuerySource["ReciterPageChapterList"] = "reciter_page_chapter_list";
  663. SearchQuerySource["Tarteel"] = "tarteel";
  664. SearchQuerySource["SidebarNavigationChaptersList"] = "sidebar_navigation_chapter_list";
  665. SearchQuerySource["SidebarNavigationVersesList"] = "sidebar_navigation_verse_list";
  666. SearchQuerySource["SidebarNavigationJuzsList"] = "sidebar_navigation_juz_list";
  667. SearchQuerySource["SidebarNavigationPagesList"] = "sidebar_navigation_page_list";
  668. })(SearchQuerySource || (SearchQuerySource = {}));
  669. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SearchQuerySource);
  670. /***/ })
  671. };
  672. ;
  673. //# sourceMappingURL=99741.js.map