exports.id = 6094; exports.ids = [6094]; exports.modules = { /***/ 49880: /***/ ((__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__); var _path; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } var SvgChevronLeft = function SvgChevronLeft(props) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({ width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { d: "M8.842 3.135a.5.5 0 0 1 .023.707L5.435 7.5l3.43 3.658a.5.5 0 0 1-.73.684l-3.75-4a.5.5 0 0 1 0-.684l3.75-4a.5.5 0 0 1 .707-.023Z", fill: "currentColor", fillRule: "evenodd", clipRule: "evenodd" }))); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgChevronLeft); /***/ }), /***/ 3932: /***/ ((__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__); var _path; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } var SvgChevronRight = function SvgChevronRight(props) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({ width: 15, height: 15, viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { d: "M6.158 3.135a.5.5 0 0 1 .707.023l3.75 4a.5.5 0 0 1 0 .684l-3.75 4a.5.5 0 1 1-.73-.684L9.566 7.5l-3.43-3.658a.5.5 0 0 1 .023-.707Z", fill: "currentColor", fillRule: "evenodd", clipRule: "evenodd" }))); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgChevronRight); /***/ }), /***/ 43530: /***/ ((module) => { // Exports module.exports = { "tooltipContainer": "OnboardingStep_tooltipContainer__cLWvX", "title": "OnboardingStep_title__QbSkZ", "description": "OnboardingStep_description__bkeeG", "icon": "OnboardingStep_icon__FEDh3", "actionContainer": "OnboardingStep_actionContainer__ovpeY" }; /***/ }), /***/ 26628: /***/ ((module) => { // Exports module.exports = { "base": "Separator_base__2kP0d", "semiBold": "Separator_semiBold__9Eu4c", "bold": "Separator_bold__412WT" }; /***/ }), /***/ 96318: /***/ ((module) => { // Exports module.exports = { "baseSize": "Skeleton_baseSize__RsOkc", "skeleton": "Skeleton_skeleton__u2Uso", "active": "Skeleton_active__5df2K", "loading": "Skeleton_loading__iZh50", "rounded": "Skeleton_rounded__ftYYr", "content": "Skeleton_content__knKtV" }; /***/ }), /***/ 35902: /***/ ((module) => { // Exports module.exports = { "internalContainer": "SpinnerContainer_internalContainer__kt2ni", "spinner": "SpinnerContainer_spinner__kzDgO" }; /***/ }), /***/ 74008: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * List of events that can be dispatched to control the onboarding checklist * manually and give control to the component that is being on-boarded. * Events are triggered from @see useHandleOnboardingEvents.ts */ var OnboardingEvent; (function(OnboardingEvent) { OnboardingEvent["STEP_AFTER_CHOOSING_RECITER_FROM_LIST"] = "stepAfterChoosingReciterFromList"; OnboardingEvent["STEP_AFTER_PLAY_AUDIO_CLICK"] = "stepAfterPlayAudioClick"; OnboardingEvent["STEP_AFTER_AUDIO_PLAYER_TRIGGER"] = "stepAfterAudioPlayerTrigger"; OnboardingEvent["STEP_AFTER_RECITER_LIST_ITEM_CLICK"] = "stepAfterReciterListItemClick"; OnboardingEvent["STEP_BEFORE_RECITER_LIST_ITEM_CLICK"] = "stepBeforeReciterListItemClick"; OnboardingEvent["STEP_BEFORE_CHOOSING_RECITER_FROM_LIST"] = "stepBeforeChoosingReciterFromList"; })(OnboardingEvent || (OnboardingEvent = {})); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OnboardingEvent); /***/ }), /***/ 70627: /***/ ((__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_redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6022); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74008); /* harmony import */ var _redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44177); /* harmony import */ var _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20661); /* eslint-disable react-func/max-lines-per-function */ /** * This hook is an abstraction of the custom logic required for different parts of the onboarding. Example: Opening the settings drawer when the user clicks on "Next" in the settings onboarding. * * @param {UseHandleOnboardingEventsParams} params * @returns {UseHandleOnboardingEventsReturn} */ const useHandleOnboardingEvents = ({ group , index , isLastStep })=>{ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_0__.useDispatch)(); const beforePrev = ()=>{ if (group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_3__/* ["default"].SETTINGS */ .Z.SETTINGS) { if (index === 1) { // when the user clicks "back" in // the second step of the settings onboarding, close the drawer dispatch((0,_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .setIsSettingsDrawerOpen */ .ZY)(false)); // add a delay to the animation so that the drawer has time to close // tip: this comes from Drawer.module.scss (--transition-regular) return { delay: 400 }; } if (isLastStep) { // when the user clicks "back" in // the last step of the settings onboarding, close the translations view dispatch((0,_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .setSettingsView */ .Mi)(_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .SettingsView.Body */ .US.Body)); setTimeout(()=>{ const el = document.getElementById("settings-drawer-container"); // scroll to the bottom of the settings view if (el) el.scrollTop = el.scrollHeight; }, 0); return { delay: 1 }; } } if (group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_3__/* ["default"].READING_EXPERIENCE */ .Z.READING_EXPERIENCE) { if (index === 4) { window.dispatchEvent(new Event(_OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__/* ["default"].STEP_BEFORE_CHOOSING_RECITER_FROM_LIST */ .Z.STEP_BEFORE_CHOOSING_RECITER_FROM_LIST)); return { automaticallyProceed: false }; } if (index === 3) { window.dispatchEvent(new Event(_OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__/* ["default"].STEP_BEFORE_RECITER_LIST_ITEM_CLICK */ .Z.STEP_BEFORE_RECITER_LIST_ITEM_CLICK)); return { automaticallyProceed: false }; } } return {}; }; const beforeNext = ()=>{ if (group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_3__/* ["default"].SETTINGS */ .Z.SETTINGS) { if (isLastStep) { // when the user clicks "finish" in // the last step of the settings onboarding, close the drawer dispatch((0,_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .setIsSettingsDrawerOpen */ .ZY)(false)); // reset the drawer to the body view in-case the user re-opens the settings tour again after having finished it. dispatch((0,_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .setSettingsView */ .Mi)(_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .SettingsView.Body */ .US.Body)); return {}; } if (index === 0) { // if the user clicks "next" in the first step of the settings onboarding, // open the drawer dispatch((0,_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .setIsSettingsDrawerOpen */ .ZY)(true)); // we'll let the drawer handle the proceeding when it's done opening return { automaticallyProceed: false }; } if (index === 8) { // if the user clicks "next" in translations step, // switch to translations view setTimeout(()=>{ dispatch((0,_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .setSettingsView */ .Mi)(_redux_slices_navbar__WEBPACK_IMPORTED_MODULE_2__/* .SettingsView.Translation */ .US.Translation)); }, 10); // we'll let the translations view handle the proceeding when it's done opening return { automaticallyProceed: true }; } } if (group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_3__/* ["default"].READING_EXPERIENCE */ .Z.READING_EXPERIENCE) { // if the user clicks next when the step is play audio of an Ayah if (index === 1) { window.dispatchEvent(new Event(_OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__/* ["default"].STEP_AFTER_PLAY_AUDIO_CLICK */ .Z.STEP_AFTER_PLAY_AUDIO_CLICK)); return { automaticallyProceed: false }; } // if the user clicks next when the step is clicking on the dot icon to open the audio player settings menu if (index === 2) { window.dispatchEvent(new Event(_OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__/* ["default"].STEP_AFTER_AUDIO_PLAYER_TRIGGER */ .Z.STEP_AFTER_AUDIO_PLAYER_TRIGGER)); return { automaticallyProceed: false }; } // if the user clicks next when the step is clicking the reciters menu item in the audio player settings menu if (index === 3) { window.dispatchEvent(new Event(_OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__/* ["default"].STEP_AFTER_RECITER_LIST_ITEM_CLICK */ .Z.STEP_AFTER_RECITER_LIST_ITEM_CLICK)); return { automaticallyProceed: false }; } // if the user clicks next when the step is choosing a reciter from the reciters list if (index === 4) { window.dispatchEvent(new Event(_OnboardingEvent__WEBPACK_IMPORTED_MODULE_1__/* ["default"].STEP_AFTER_CHOOSING_RECITER_FROM_LIST */ .Z.STEP_AFTER_CHOOSING_RECITER_FROM_LIST)); return { automaticallyProceed: false }; } } return {}; }; const beforeSkip = ()=>{ return {}; }; return { beforePrev, beforeNext, beforeSkip }; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useHandleOnboardingEvents); /***/ }), /***/ 51879: /***/ ((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 */ "P": () => (/* binding */ useOnboarding), /* harmony export */ "k": () => (/* binding */ OnboardingProvider) /* 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_dynamic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(96954); /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dynamic__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60866); /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var react_joyride__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35517); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6022); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _OnboardingStep__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(60575); /* harmony import */ var _steps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(39604); /* harmony import */ var _hooks_useScrollToTop__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(73742); /* harmony import */ var _redux_slices_onboarding__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(22732); /* harmony import */ var _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(20661); /* harmony import */ var _utils_auth_login__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(22197); var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([react_joyride__WEBPACK_IMPORTED_MODULE_4__, _OnboardingStep__WEBPACK_IMPORTED_MODULE_6__, _steps__WEBPACK_IMPORTED_MODULE_7__, _utils_auth_login__WEBPACK_IMPORTED_MODULE_10__]); ([react_joyride__WEBPACK_IMPORTED_MODULE_4__, _OnboardingStep__WEBPACK_IMPORTED_MODULE_6__, _steps__WEBPACK_IMPORTED_MODULE_7__, _utils_auth_login__WEBPACK_IMPORTED_MODULE_10__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); /* eslint-disable max-lines */ // eslint-disable-next-line import/no-cycle const Joyride = next_dynamic__WEBPACK_IMPORTED_MODULE_2___default()(null, { loadableGenerated: { modules: [ "../components/Onboarding/OnboardingProvider.tsx -> " + "react-joyride" ] }, ssr: false }); const OnboardingContext = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null); const useOnboarding = ()=>react__WEBPACK_IMPORTED_MODULE_1___default().useContext(OnboardingContext); const OnboardingProvider = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1___default().memo(({ children })=>{ const [isOnboarding, setIsOnboarding] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(false); const activeStep = (0,react_redux__WEBPACK_IMPORTED_MODULE_5__.useSelector)(_redux_slices_onboarding__WEBPACK_IMPORTED_MODULE_8__/* .selectOnboardingActiveStep */ .xg); const { 0: joyride , 1: setJoyride } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(); const { t } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_3___default()("common"); const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_5__.useDispatch)(); const scrollToTop = (0,_hooks_useScrollToTop__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z)(); const allSteps = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{ return (0,_steps__WEBPACK_IMPORTED_MODULE_7__/* .checklistIndexToOnboardingSteps */ .G)(t, _OnboardingStep__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z); }, [ t ]); const startTour = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((group = _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_9__/* ["default"].HOMEPAGE */ .Z.HOMEPAGE, startIndex = 0)=>{ const statePayload = (0,_redux_slices_onboarding__WEBPACK_IMPORTED_MODULE_8__/* .setActiveStepIndex */ .tE)({ group, index: startIndex, // Mark all previous steps as completed ...startIndex !== 0 && { // eslint-disable-next-line @typescript-eslint/naming-convention indicesToMarkAsCompleted: new Array(startIndex).fill(null).map((_, i)=>i) } }); if (group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_9__/* ["default"].SETTINGS */ .Z.SETTINGS || group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_9__/* ["default"].READING_EXPERIENCE */ .Z.READING_EXPERIENCE) { scrollToTop(); setTimeout(()=>{ setIsOnboarding(true); dispatch(statePayload); }, 400); } else { setIsOnboarding(true); dispatch(statePayload); } }, [ dispatch, scrollToTop ]); const stopTour = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{ setIsOnboarding(false); }, []); const setStep = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((group, step)=>{ let totalSteps = allSteps[group].length; if ((0,_utils_auth_login__WEBPACK_IMPORTED_MODULE_10__/* .isLoggedIn */ .jl)() && group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_9__/* ["default"].PERSONALIZED_FEATURES */ .Z.PERSONALIZED_FEATURES) { // don't count the first step (login button) totalSteps -= 1; } dispatch((0,_redux_slices_onboarding__WEBPACK_IMPORTED_MODULE_8__/* .setActiveStepIndex */ .tE)({ group, index: step, totalSteps })); }, [ dispatch, allSteps ]); const nextStep = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{ setStep(activeStep.group, activeStep.index + 1); }, [ activeStep, setStep ]); const prevStep = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{ if (activeStep.index === 0) return; setStep(activeStep.group, activeStep.index - 1); }, [ activeStep, setStep ]); const steps = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{ const result = allSteps[activeStep.group].map((s)=>s.step); if (activeStep.group === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_9__/* ["default"].PERSONALIZED_FEATURES */ .Z.PERSONALIZED_FEATURES) { if ((0,_utils_auth_login__WEBPACK_IMPORTED_MODULE_10__/* .isLoggedIn */ .jl)()) { // show all but the first step (login button) return result.slice(1); } // only show the first step (login button) return [ result[0] ]; } return result; }, [ allSteps, activeStep.group ]); const hasSteps = steps.length > 0; const shouldRun = isOnboarding && hasSteps; const joyrideCallback = (data)=>{ const { action , status , type } = data; if (type === react_joyride__WEBPACK_IMPORTED_MODULE_4__.EVENTS.STEP_AFTER || type === react_joyride__WEBPACK_IMPORTED_MODULE_4__.EVENTS.TARGET_NOT_FOUND) { if (action === react_joyride__WEBPACK_IMPORTED_MODULE_4__.ACTIONS.PREV) { prevStep(); } else if (action === react_joyride__WEBPACK_IMPORTED_MODULE_4__.ACTIONS.NEXT) { if (activeStep.index < steps.length - 1) { nextStep(); } else { stopTour(); setStep(activeStep.group, 0); } } } else if (status === react_joyride__WEBPACK_IMPORTED_MODULE_4__.STATUS.FINISHED || status === react_joyride__WEBPACK_IMPORTED_MODULE_4__.STATUS.SKIPPED) { stopTour(); joyride.reset(true); } }; const value = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>({ startTour, stopTour: ()=>joyride.close(), nextStep: ()=>joyride.next(), prevStep: ()=>joyride.prev(), activeStepGroup: activeStep.group, activeStepIndex: activeStep.index, isActive: isOnboarding, allSteps, allGroups: Object.keys(allSteps) }), [ startTour, activeStep, isOnboarding, joyride, allSteps ]); return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(OnboardingContext.Provider, { value: value, children: [ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(Joyride, { callback: joyrideCallback, run: shouldRun, stepIndex: activeStep.index, steps: steps, continuous: true, scrollOffset: 130, getHelpers: setJoyride, disableOverlayClose: true, disableCloseOnEsc: true, scrollToFirstStep: true, disableOverlay: false, floaterProps: { offset: 0, styles: { floaterWithAnimation: { transition: "opacity .5s ease-out" }, floater: { zIndex: "var(--z-index-onboarding-step)" } } }, styles: { spotlight: { borderRadius: 0, zIndex: "var(--z-index-onboarding-spotlight)" }, overlay: { zIndex: "var(--z-index-onboarding-overlay)" } } }, activeStep.group), children ] }); }); __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }); /***/ }), /***/ 60575: /***/ ((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 _OnboardingChecklist_hooks_useHandleOnboardingEvents__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70627); /* harmony import */ var _OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(43530); /* harmony import */ var _OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var _components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(51879); /* harmony import */ var _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50497); /* harmony import */ var _icons_chevron_left_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(49880); /* harmony import */ var _icons_chevron_right_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(3932); /* harmony import */ var _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(20661); /* harmony import */ var _utils_auth_login__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(22197); /* harmony import */ var _utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(55943); var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_4__, _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__, _utils_auth_login__WEBPACK_IMPORTED_MODULE_9__, _utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__]); ([_components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_4__, _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__, _utils_auth_login__WEBPACK_IMPORTED_MODULE_9__, _utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); /* eslint-disable max-lines */ // eslint-disable-next-line import/no-cycle const OnboardingStep = ({ tooltipProps , primaryProps , skipProps , backProps , isLastStep , index , step: { showSkipButton =true , showNextButton =true , showPrevButton =true } })=>{ const { t } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_2___default()("onboarding"); const isFirstStep = index === 0; const { activeStepGroup , allSteps } = (0,_components_Onboarding_OnboardingProvider__WEBPACK_IMPORTED_MODULE_4__/* .useOnboarding */ .P)(); const { beforePrev , beforeNext , beforeSkip } = (0,_OnboardingChecklist_hooks_useHandleOnboardingEvents__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)({ group: activeStepGroup, index, isLastStep }); const stepData = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{ // show all but the first step (login button) if (activeStepGroup === _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_8__/* ["default"].PERSONALIZED_FEATURES */ .Z.PERSONALIZED_FEATURES && (0,_utils_auth_login__WEBPACK_IMPORTED_MODULE_9__/* .isLoggedIn */ .jl)()) { return allSteps[activeStepGroup].slice(1)[index]; } return allSteps[activeStepGroup][index]; }, [ activeStepGroup, allSteps, index ]); const handleSkipClick = (e)=>{ (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__/* .logButtonClick */ .MY)("onboarding_step_skip", { group: activeStepGroup, step: index }); const result = beforeSkip(); if (result.automaticallyProceed !== false) { if (result.delay) { setTimeout(()=>{ skipProps.onClick(e); }, result.delay); } else { skipProps.onClick(e); } } }; const handlePrevClick = (e)=>{ (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__/* .logButtonClick */ .MY)("onboarding_step_previous", { group: activeStepGroup, step: index }); const result = beforePrev(); if (result.automaticallyProceed !== false) { if (result?.delay) { setTimeout(()=>{ backProps.onClick(e); }, result.delay); } else { backProps.onClick(e); } } }; const handleNextClick = (e)=>{ if (isLastStep) { (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__/* .logButtonClick */ .MY)("onboarding_step_finish", { group: activeStepGroup }); } else { (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_10__/* .logButtonClick */ .MY)("onboarding_step_next", { group: activeStepGroup, step: index }); } const result = beforeNext(); if (result.automaticallyProceed !== false) { if (result?.delay) { setTimeout(()=>{ primaryProps.onClick(e); }, result.delay); } else { primaryProps.onClick(e); } } }; return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { ref: tooltipProps.ref, className: (_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default().tooltipContainer), children: [ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("h4", { className: (_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default().title), children: stepData.title }), /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("p", { className: (_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default().description), children: stepData.description }), (showSkipButton || showNextButton || showPrevButton) && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { className: (_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default().actionContainer), children: [ isFirstStep && showSkipButton && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .ZP, { ...skipProps, onClick: handleSkipClick, variant: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonVariant.Ghost */ .Wu.Ghost, type: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonType.Inverse */ .L$.Inverse, size: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonSize.Small */ .qE.Small, children: t("skip") }), !isFirstStep && showPrevButton && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .ZP, { variant: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonVariant.Outlined */ .Wu.Outlined, type: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonType.Inverse */ .L$.Inverse, size: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonSize.Small */ .qE.Small, onClick: handlePrevClick, prefix: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_icons_chevron_left_svg__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, { className: (_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default().icon) }), children: t("previous") }), showNextButton && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .ZP, { ...primaryProps, variant: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonVariant.Outlined */ .Wu.Outlined, type: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonType.Inverse */ .L$.Inverse, size: _dls_Button_Button__WEBPACK_IMPORTED_MODULE_5__/* .ButtonSize.Small */ .qE.Small, onClick: handleNextClick, suffix: isLastStep ? null : /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_icons_chevron_right_svg__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, { className: (_OnboardingStep_module_scss__WEBPACK_IMPORTED_MODULE_11___default().icon) }), children: isLastStep ? t("finish") : t("common:next") }) ] }) ] }); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OnboardingStep); __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }); /***/ }), /***/ 39604: /***/ ((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 */ "G": () => (/* binding */ checklistIndexToOnboardingSteps) /* harmony export */ }); /* unused harmony export onboardingChecklist */ /* harmony import */ var _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20661); /* harmony import */ var _utils_navigation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57933); /* harmony import */ var _utils_responsive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6902); var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_navigation__WEBPACK_IMPORTED_MODULE_1__]); _utils_navigation__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; /* eslint-disable max-lines */ // import OnboardingStep from './OnboardingStep'; /** * Get the placement for the tooltip based on the device * * @param {Placement} desktopPlacement * @param {boolean} isDeviceMobile * @returns {Placement} */ const getResponsivePlacement = (desktopPlacement, isDeviceMobile)=>{ return isDeviceMobile ? "top-start" : desktopPlacement; }; // eslint-disable-next-line react-func/max-lines-per-function const checklistIndexToOnboardingSteps = (t, component)=>{ const commonStepOptions = { placement: "auto", disableBeacon: true, hideBackButton: true, disableOverlayClose: true, tooltipComponent: component, floaterProps: { hideArrow: false }, spotlightPadding: 5 }; const getDetails = (key)=>({ title: t(`onboarding:steps.${key}.title`), description: t(`onboarding:steps.${key}.description`) }); const isDeviceMobile = (0,_utils_responsive__WEBPACK_IMPORTED_MODULE_2__/* .isMobile */ .t)(); const shouldDisableOverlay = isDeviceMobile; return { [_types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_0__/* ["default"].HOMEPAGE */ .Z.HOMEPAGE]: [ { ...getDetails("quran-radio"), step: { ...commonStepOptions, target: "#radio-button", showSkipButton: true, placement: "bottom" } }, { ...getDetails("search-bar"), step: { ...commonStepOptions, target: "#command-bar" } }, { ...getDetails("voice-search"), step: { ...commonStepOptions, target: "#voice-search-trigger", placement: "bottom" } }, { ...getDetails("juz"), step: { ...commonStepOptions, target: "#juz-tab" } }, ], [_types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_0__/* ["default"].SETTINGS */ .Z.SETTINGS]: [ { ...getDetails("settings"), step: { ...commonStepOptions, target: "#settings-button", showSkipButton: true, spotlightClicks: true, placement: "bottom" } }, { ...getDetails("theme"), step: { ...commonStepOptions, target: "#theme-section", spotlightClicks: true, placement: "left-start" } }, { ...getDetails("font-style"), step: { ...commonStepOptions, target: "#quran-font-section", spotlightClicks: true, placement: getResponsivePlacement("left-start", isDeviceMobile), disableScrolling: false, disableOverlay: shouldDisableOverlay } }, { ...getDetails("font-size"), step: { ...commonStepOptions, target: "#font-size-section", spotlightClicks: true, placement: "left-start" } }, { ...getDetails("wbw-translation"), step: { ...commonStepOptions, target: "#wbw-translation-section", spotlightClicks: true, placement: "left-start" } }, { ...getDetails("wbw-transliteration"), step: { ...commonStepOptions, target: "#wbw-transliteration-section", spotlightClicks: true, placement: "left-start" } }, { ...getDetails("wbw-audio"), step: { ...commonStepOptions, target: "#wbw-recitation-section", spotlightClicks: true, placement: "left-start" } }, { ...getDetails("inline-wbw"), step: { ...commonStepOptions, target: "#wbw-display-section", spotlightClicks: true, placement: "left-start" } }, { ...getDetails("translations"), step: { ...commonStepOptions, target: "#translation-section", placement: "left-start", spotlightClicks: true, disableScrolling: false } }, { ...getDetails("translations"), step: { ...commonStepOptions, target: "#settings-drawer-body", placement: getResponsivePlacement("left-start", isDeviceMobile), spotlightClicks: true, disableOverlay: shouldDisableOverlay } }, ], [_types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_0__/* ["default"].READING_EXPERIENCE */ .Z.READING_EXPERIENCE]: [ { ...getDetails("surah-info"), step: { ...commonStepOptions, target: "#surah-info-button", placement: "bottom", showSkipButton: true } }, { ...getDetails("listen"), step: { ...commonStepOptions, target: "#play-verse-button", spotlightClicks: true, showNextButton: true } }, { ...getDetails("select-reciter"), step: { ...commonStepOptions, target: "#audio-player-overflow-menu-trigger", spotlightClicks: true, disableScrolling: true } }, { ...getDetails("select-reciter"), step: { ...commonStepOptions, target: "#audio-player-overflow-menu-reciter", placement: "left", spotlightClicks: true, disableScrolling: true } }, { ...getDetails("select-reciter"), step: { ...commonStepOptions, target: "#audio-player-reciter-list", spotlightClicks: true, placement: getResponsivePlacement("right", isDeviceMobile), disableScrolling: false, disableOverlay: shouldDisableOverlay } }, { ...getDetails("ayah-tafsir"), step: { ...commonStepOptions, target: ".tafsir-verse-button" } }, { ...getDetails("ayah-reflection"), step: { ...commonStepOptions, target: ".reflection-verse-button" } }, { ...getDetails("3-dot-menu"), step: { ...commonStepOptions, target: ".overflow-verse-actions-menu-trigger" } }, { ...getDetails("reading-view"), step: { ...commonStepOptions, target: "#reading-preference-switcher", spotlightClicks: true } }, ], [_types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_0__/* ["default"].PERSONALIZED_FEATURES */ .Z.PERSONALIZED_FEATURES]: [ { ...getDetails("login"), step: { ...commonStepOptions, target: "#login-button", placement: "bottom" } }, { ...getDetails("streak"), step: { ...commonStepOptions, target: "#qgj-widget" } }, { ...getDetails("reading-sessions"), step: { ...commonStepOptions, target: "#reading-sessions" } }, ] }; }; const onboardingChecklist = (t)=>[ { group: OnboardingGroup.HOMEPAGE, title: t("onboarding:checklist.1"), href: "/" }, { group: OnboardingGroup.SETTINGS, title: t("onboarding:checklist.2"), href: "/" }, { group: OnboardingGroup.READING_EXPERIENCE, title: t("onboarding:checklist.3"), href: getSurahNavigationUrl(1) }, { group: OnboardingGroup.PERSONALIZED_FEATURES, title: t("onboarding:checklist.4"), href: "/" }, ]; __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }); /***/ }), /***/ 94400: /***/ ((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 */ "B": () => (/* binding */ SeparatorWeight), /* 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 _radix_ui_react_separator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72994); /* 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 _Separator_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26628); /* harmony import */ var _Separator_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Separator_module_scss__WEBPACK_IMPORTED_MODULE_3__); var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_radix_ui_react_separator__WEBPACK_IMPORTED_MODULE_1__]); _radix_ui_react_separator__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; var SeparatorWeight; (function(SeparatorWeight) { SeparatorWeight["Bold"] = "bold"; SeparatorWeight["SemiBold"] = "semiBold"; })(SeparatorWeight || (SeparatorWeight = {})); const Separator = ({ isVertical =false , className , weight =SeparatorWeight.SemiBold })=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_radix_ui_react_separator__WEBPACK_IMPORTED_MODULE_1__.Separator, { orientation: isVertical ? "vertical" : "horizontal", className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_Separator_module_scss__WEBPACK_IMPORTED_MODULE_3___default().base), (_Separator_module_scss__WEBPACK_IMPORTED_MODULE_3___default())[weight], { [className]: className }) }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Separator); __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }); /***/ }), /***/ 77048: /***/ ((__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 _Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(96318); /* harmony import */ var _Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2__); const Skeleton = ({ children , isRounded , isSquared , isActive =true , className })=>{ return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", { className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default().skeleton), { [(_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default().baseSize)]: !children && !className, [(_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default().active)]: isActive, [(_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default().rounded)]: isRounded, [(_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default().squared)]: isSquared, [className]: className }), children: children && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", { className: (_Skeleton_module_scss__WEBPACK_IMPORTED_MODULE_2___default().content), children: children }) }); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Skeleton); /***/ }), /***/ 18470: /***/ ((__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 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 _SpinnerContainer_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(35902); /* harmony import */ var _SpinnerContainer_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_SpinnerContainer_module_scss__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _dls_Spinner_Spinner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7190); const SpinnerContainer = ({ children , isLoading })=>{ return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { className: (_SpinnerContainer_module_scss__WEBPACK_IMPORTED_MODULE_3___default().internalContainer), children: [ children, isLoading && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Spinner_Spinner__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, { className: (_SpinnerContainer_module_scss__WEBPACK_IMPORTED_MODULE_3___default().spinner) }) ] }); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SpinnerContainer); /***/ }), /***/ 19583: /***/ ((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__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_translate_useTranslation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60866); /* harmony import */ var next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6022); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _dls_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(79717); /* harmony import */ var _redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(62093); /* harmony import */ var _utils_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4917); /* harmony import */ var _utils_auth_api__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37883); /* harmony import */ var _utils_auth_login__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22197); /* harmony import */ var types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(13591); var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_dls_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__, _utils_auth_login__WEBPACK_IMPORTED_MODULE_7__]); ([_dls_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__, _utils_auth_login__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); /* eslint-disable max-lines */ /* eslint-disable react-func/max-lines-per-function */ /** * A hook that will be used to: * 1. If the user is logged in, we persist settings * to the DB then dispatch the redux action that * would apply the changes locally (and might also persist * it locally in the localStorage depending on the slice) * 2. If not, just dispatch the action. * * @returns {PersistPreferences} */ const usePersistPreferenceGroup = ()=>{ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)(); const toast = (0,_dls_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__/* .useToast */ .pm)(); const { t } = next_translate_useTranslation__WEBPACK_IMPORTED_MODULE_1___default()("common"); const { 0: isLoading , 1: setIsLoading } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false); const quranFont = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(_redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_4__/* .selectQuranFont */ .Ho, react_redux__WEBPACK_IMPORTED_MODULE_2__.shallowEqual); const mushafLines = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(_redux_slices_QuranReader_styles__WEBPACK_IMPORTED_MODULE_4__/* .selectQuranMushafLines */ .z$, react_redux__WEBPACK_IMPORTED_MODULE_2__.shallowEqual); // this function is used to get the updated mushafId and pass it to addOrUpdateUserPreference // if the preferenceGroup is not QURAN_READER_STYLES, it will return undefined const getUpdatedMushafId = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((preferenceGroup, key, value)=>{ if (preferenceGroup !== types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_8__/* ["default"].QURAN_READER_STYLES */ .Z.QURAN_READER_STYLES) return undefined; const font = key === "quranFont" ? value : quranFont; const lines = key === "mushafLines" ? value : mushafLines; return (0,_utils_api__WEBPACK_IMPORTED_MODULE_5__/* .getMushafId */ .$P)(font, lines).mushaf; }, [ quranFont, mushafLines ]); const actions = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({ onSettingsChangeWithoutDispatch: (key, value, preferenceGroup, callback)=>{ if ((0,_utils_auth_login__WEBPACK_IMPORTED_MODULE_7__/* .isLoggedIn */ .jl)()) { setIsLoading(true); (0,_utils_auth_api__WEBPACK_IMPORTED_MODULE_6__/* .addOrUpdateUserPreference */ .b9)(key, value, preferenceGroup, getUpdatedMushafId(preferenceGroup, key, value)).then(()=>{ callback(); }).finally(()=>{ setIsLoading(false); }); } else { callback(); } }, onXstateSettingsChange: (key, value, action, undoAction, preferenceGroup, successCallback)=>{ if ((0,_utils_auth_login__WEBPACK_IMPORTED_MODULE_7__/* .isLoggedIn */ .jl)()) { action(); setIsLoading(true); (0,_utils_auth_api__WEBPACK_IMPORTED_MODULE_6__/* .addOrUpdateUserPreference */ .b9)(key, value, preferenceGroup, getUpdatedMushafId(preferenceGroup, key, value)).then(()=>{ if (successCallback) { successCallback(); } }).catch(()=>{ toast(t("error.pref-persist-fail"), { status: _dls_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__/* .ToastStatus.Warning */ .YZ.Warning, actions: [ { text: t("undo"), primary: true, onClick: ()=>{ undoAction(); } }, { text: t("continue"), primary: false, onClick: ()=>{ if (successCallback) { successCallback(); } } }, ] }); }).finally(()=>{ setIsLoading(false); }); } else { action(); } }, onSettingsChange: (key, value, action, undoAction, preferenceGroup, successCallback)=>{ if ((0,_utils_auth_login__WEBPACK_IMPORTED_MODULE_7__/* .isLoggedIn */ .jl)()) { // 1. dispatch the action first dispatch(action); setIsLoading(true); (0,_utils_auth_api__WEBPACK_IMPORTED_MODULE_6__/* .addOrUpdateUserPreference */ .b9)(key, value, preferenceGroup, getUpdatedMushafId(preferenceGroup, key, value)).then(()=>{ if (successCallback) { successCallback(); } }).catch(()=>{ toast(t("error.pref-persist-fail"), { status: _dls_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__/* .ToastStatus.Warning */ .YZ.Warning, actions: [ { text: t("undo"), primary: true, onClick: ()=>{ dispatch(undoAction); } }, { text: t("continue"), primary: false, onClick: ()=>{ if (successCallback) { successCallback(); } } }, ] }); }).finally(()=>{ setIsLoading(false); }); } else { dispatch(action); } } }), [ dispatch, t, toast, getUpdatedMushafId ]); return { actions, isLoading }; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (usePersistPreferenceGroup); __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }); /***/ }), /***/ 44063: /***/ ((__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__); /** * This is needed to avoid having the following warning: * Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. * The solution is inspired by this thread * {@link https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85} */ // eslint-disable-next-line @typescript-eslint/no-empty-function /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ( false ? 0 : ()=>{}); /***/ }), /***/ 73742: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); const useScrollToTop = ()=>{ // a function that will be invoked by the component using this hook to scroll to the top of the window. const scrollToTop = ()=>{ if (false) {} }; return scrollToTop; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useScrollToTop); /***/ }), /***/ 53800: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Mj": () => (/* binding */ selectEnableAutoScrolling), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "ow": () => (/* binding */ selectShowTooltipWhenPlayingAudio) /* harmony export */ }); /* unused harmony exports selectAudioPlayerState, selectIsDownloadingAudio, audioPlayerStateSlice, setEnableAutoScrolling, setIsDownloadingAudio, setShowTooltipWhenPlayingAudio */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14161); /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(redux_persist__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(78733); /* harmony import */ var _redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91767); /* harmony import */ var _redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17241); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(61243); /* harmony import */ var types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13591); const selectAudioPlayerState = (state)=>state.audioPlayerState; const selectEnableAutoScrolling = (state)=>state.audioPlayerState.enableAutoScrolling; const selectIsDownloadingAudio = (state)=>state.audioPlayerState.isDownloadingAudio; const selectShowTooltipWhenPlayingAudio = (state)=>state.audioPlayerState.showTooltipWhenPlayingAudio; const audioPlayerStateSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_5__/* ["default"].AUDIO_PLAYER_STATE */ .Z.AUDIO_PLAYER_STATE, initialState: (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_4__/* .getAudioPlayerStateInitialState */ .aq)(), reducers: { setEnableAutoScrolling: (state, action)=>({ ...state, enableAutoScrolling: action.payload }), setIsDownloadingAudio: (state, action)=>({ ...state, isDownloadingAudio: action.payload }), setShowTooltipWhenPlayingAudio: (state, action)=>({ ...state, showTooltipWhenPlayingAudio: action.payload }) }, // reset reciter to the default based on the locale // WHEN `reset` action is dispatched extraReducers: (builder)=>{ builder.addCase(_redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, (state, action)=>({ ...state, ...(0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_4__/* .getAudioPlayerStateInitialState */ .aq)(action.payload.locale) })); builder.addCase(_redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, (state, action)=>{ const { payload: { userPreferences } , } = action; const remotePreferences = userPreferences[types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_6__/* ["default"].AUDIO */ .Z.AUDIO]; if (remotePreferences) { return { ...state, ...remotePreferences }; } return state; }); // listen to redux-persist's REHYDRATE event builder.addCase(redux_persist__WEBPACK_IMPORTED_MODULE_1__.REHYDRATE, (state, action)=>{ // @ts-ignore const { key , payload } = action; /** * There is an issue with redux-persists (https://github.com/rt2zz/redux-persist/issues/290) * that converts Infinite to null which affects when the user chooses to * repeat a verse(s) infinitely and leads to repeatRange being persisted * as null which is an invalid value so we need to convert it back to Infinity. */ if (key === _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_5__/* ["default"].AUDIO_PLAYER_STATE */ .Z.AUDIO_PLAYER_STATE && payload?.repeatSettings?.repeatRange === null) { return { ...state, ...payload }; } return { ...state, ...payload }; }); } }); const { setEnableAutoScrolling , setIsDownloadingAudio , setShowTooltipWhenPlayingAudio } = audioPlayerStateSlice.actions; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (audioPlayerStateSlice.reducer); /***/ }), /***/ 90264: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "EA": () => (/* binding */ selectReadingPreference), /* harmony export */ "GW": () => (/* binding */ setReadingPreference), /* harmony export */ "N9": () => (/* binding */ selectWordClickFunctionality), /* harmony export */ "SL": () => (/* binding */ selectIsUsingDefaultWordByWordLocale), /* harmony export */ "SV": () => (/* binding */ selectTooltipContentType), /* harmony export */ "Ud": () => (/* binding */ setSelectedWordByWordLocale), /* harmony export */ "Xg": () => (/* binding */ selectReadingPreferences), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "eB": () => (/* binding */ selectInlineDisplayWordByWordPreferences), /* harmony export */ "lt": () => (/* binding */ selectWordByWordLocale) /* harmony export */ }); /* unused harmony exports readingPreferencesSlice, setWordClickFunctionality, setWordByWordContentType, setWordByWordDisplay, selectIsTooltipContentEnabled */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78733); /* harmony import */ var _redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91767); /* harmony import */ var _redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17241); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61243); /* harmony import */ var types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13591); /* harmony import */ var types_QuranReader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50467); const readingPreferencesSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_4__/* ["default"].READING_PREFERENCES */ .Z.READING_PREFERENCES, initialState: (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getReadingPreferencesInitialState */ .wH)(), reducers: { setReadingPreference: (state, action)=>({ ...state, readingPreference: action.payload }), setSelectedWordByWordLocale: (state, action)=>({ ...state, selectedWordByWordLocale: action.payload.value, isUsingDefaultWordByWordLocale: action.payload.value === (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getReadingPreferencesInitialState */ .wH)(action.payload.locale).selectedWordByWordLocale }), setWordClickFunctionality: (state, action)=>({ ...state, wordClickFunctionality: action.payload }), setWordByWordContentType: (state, action)=>({ ...state, wordByWordContentType: action.payload }), setWordByWordDisplay: (state, action)=>({ ...state, wordByWordDisplay: action.payload }) }, // reset the state to initial state // when `reset` action is dispatched extraReducers: (builder)=>{ builder.addCase(_redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (state, action)=>{ return (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getReadingPreferencesInitialState */ .wH)(action.payload.locale); }); builder.addCase(_redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, (state, action)=>{ const { payload: { userPreferences , locale } , } = action; const remotePreferences = userPreferences[types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_5__/* ["default"].READING */ .Z.READING]; if (remotePreferences) { const { selectedWordByWordLocale: defaultWordByWordLocale } = (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getReadingPreferencesInitialState */ .wH)(locale); return { ...state, ...remotePreferences, isUsingDefaultWordByWordLocale: remotePreferences.selectedWordByWordLocale === defaultWordByWordLocale }; } return state; }); } }); const { setReadingPreference , setSelectedWordByWordLocale , setWordClickFunctionality , setWordByWordContentType , setWordByWordDisplay , } = readingPreferencesSlice.actions; /** * Check whether we should display inline wbw translation/transliteration. * * @param {RootState} state * @returns {{showWordByWordTranslation: boolean, showWordByWordTransliteration: boolean}} */ const selectInlineDisplayWordByWordPreferences = (state)=>{ const { readingPreferences } = state; const { wordByWordDisplay , wordByWordContentType } = readingPreferences; const shouldDisplayInline = wordByWordDisplay.includes(types_QuranReader__WEBPACK_IMPORTED_MODULE_6__/* .WordByWordDisplay.INLINE */ .PT.INLINE); return { showWordByWordTranslation: shouldDisplayInline && wordByWordContentType.includes(types_QuranReader__WEBPACK_IMPORTED_MODULE_6__/* .WordByWordType.Translation */ .Oj.Translation), showWordByWordTransliteration: shouldDisplayInline && wordByWordContentType.includes(types_QuranReader__WEBPACK_IMPORTED_MODULE_6__/* .WordByWordType.Transliteration */ .Oj.Transliteration) }; }; /** * Check whether the tooltip content is enabled or not. * To be considered enabled, the following conditions need to be met: * * 1. display options need to include tooltip. * 2. word by word content need to contain either translation or transliteration. * * @param {RootState} state * @returns {boolean} */ const selectIsTooltipContentEnabled = (state)=>{ const { readingPreferences } = state; const { wordByWordContentType , wordByWordDisplay } = readingPreferences; const shouldDisplayTooltip = wordByWordDisplay.includes(WordByWordDisplay.TOOLTIP); if (!shouldDisplayTooltip) { return false; } return wordByWordContentType.includes(WordByWordType.Translation) || wordByWordContentType.includes(WordByWordType.Transliteration); }; const selectReadingPreferences = (state)=>state.readingPreferences; /** * Select which tooltip content to show. We should not show any tooltips when: * * 1. Display options does not include tooltip. * 2. Display options does include tooltip but no translation/transliterations were selected. * * @param {RootState} state * @returns {WordByWordType[]} */ const selectTooltipContentType = (state)=>{ const { readingPreferences } = state; const { wordByWordDisplay , wordByWordContentType } = readingPreferences; if (!wordByWordDisplay || !wordByWordDisplay.includes(types_QuranReader__WEBPACK_IMPORTED_MODULE_6__/* .WordByWordDisplay.TOOLTIP */ .PT.TOOLTIP) || !wordByWordContentType || !wordByWordContentType.length) { return []; } return wordByWordContentType; }; const selectReadingPreference = (state)=>state.readingPreferences.readingPreference; const selectWordClickFunctionality = (state)=>state.readingPreferences.wordClickFunctionality; const selectWordByWordLocale = (state)=>state.readingPreferences.selectedWordByWordLocale; const selectIsUsingDefaultWordByWordLocale = (state)=>state.readingPreferences.isUsingDefaultWordByWordLocale; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (readingPreferencesSlice.reducer); /***/ }), /***/ 31922: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "AV": () => (/* binding */ selectReadingViewSelectedVerseKey), /* harmony export */ "E9": () => (/* binding */ setReadingViewSelectedVerseKey), /* harmony export */ "Ob": () => (/* binding */ setReadingViewHoveredVerseKey), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "_H": () => (/* binding */ selectReadingViewHoveredVerseKey) /* harmony export */ }); /* unused harmony export initialState */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61243); const initialState = { hoveredVerseKey: null, selectedVerseKey: null }; /** * This slice keep track of the current hovered and selected verses in the reading mode. * */ const readingViewVerse = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__/* ["default"].READING_VIEW_HOVERED_VERSE */ .Z.READING_VIEW_HOVERED_VERSE, initialState, reducers: { setReadingViewHoveredVerseKey: (state, { payload })=>{ return { ...state, hoveredVerseKey: payload }; }, setReadingViewSelectedVerseKey: (state, { payload })=>{ return { ...state, selectedVerseKey: payload }; } } }); const selectReadingViewHoveredVerseKey = (state)=>state.readingViewVerse.hoveredVerseKey; const selectReadingViewSelectedVerseKey = (state)=>state.readingViewVerse.selectedVerseKey; const { setReadingViewHoveredVerseKey , setReadingViewSelectedVerseKey } = readingViewVerse.actions; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (readingViewVerse.reducer); /***/ }), /***/ 11983: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "OW": () => (/* binding */ selectTafsirs), /* harmony export */ "XG": () => (/* binding */ selectSelectedTafsirs), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "ZY": () => (/* binding */ setSelectedTafsirs) /* harmony export */ }); /* unused harmony exports tafsirsSlice, selectIsUsingDefaultTafsirs */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78733); /* harmony import */ var _redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91767); /* harmony import */ var _redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17241); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61243); /* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5639); /* harmony import */ var types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13591); const tafsirsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_4__/* ["default"].TAFSIRS */ .Z.TAFSIRS, initialState: (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTafsirsInitialState */ .Fy)(), reducers: { setSelectedTafsirs: (state, action)=>({ ...state, // we need to before we compare because there is a corner case when the user changes the default tafsirs then re-selects them which results in the same array as the default one but reversed e.g. instead of [20, 131] it becomes [131, 20]. isUsingDefaultTafsirs: (0,_utils_array__WEBPACK_IMPORTED_MODULE_6__/* .areArraysEqual */ .Hj)((0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTafsirsInitialState */ .Fy)(action.payload.locale).selectedTafsirs, action.payload.tafsirs), selectedTafsirs: action.payload.tafsirs }) }, // reset the tafsirs to initial state // when reset action is dispatched extraReducers: (builder)=>{ builder.addCase(_redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (state, action)=>{ return (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTafsirsInitialState */ .Fy)(action.payload.locale); }); builder.addCase(_redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, (state, action)=>{ const { payload: { userPreferences , locale } , } = action; const remotePreferences = userPreferences[types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_5__/* ["default"].TAFSIRS */ .Z.TAFSIRS]; if (remotePreferences) { const { selectedTafsirs: defaultTafsirs } = (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTafsirsInitialState */ .Fy)(locale); const { selectedTafsirs: remoteTafsirs } = remotePreferences; return { ...state, ...remotePreferences, isUsingDefaultTafsirs: (0,_utils_array__WEBPACK_IMPORTED_MODULE_6__/* .areArraysEqual */ .Hj)(defaultTafsirs, remoteTafsirs) }; } return state; }); } }); const { setSelectedTafsirs } = tafsirsSlice.actions; const selectTafsirs = (state)=>state.tafsirs; const selectSelectedTafsirs = (state)=>state.tafsirs.selectedTafsirs; const selectIsUsingDefaultTafsirs = (state)=>state.tafsirs.isUsingDefaultTafsirs; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (tafsirsSlice.reducer); /***/ }), /***/ 88548: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "qw": () => (/* binding */ selectSelectedTranslations), /* harmony export */ "uz": () => (/* binding */ setSelectedTranslations), /* harmony export */ "z2": () => (/* binding */ selectIsUsingDefaultTranslations) /* harmony export */ }); /* unused harmony exports translationsSlice, selectTranslations */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78733); /* harmony import */ var _redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91767); /* harmony import */ var _redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17241); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61243); /* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5639); /* harmony import */ var types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13591); const translationsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_4__/* ["default"].TRANSLATIONS */ .Z.TRANSLATIONS, initialState: (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTranslationsInitialState */ .h0)(), reducers: { setSelectedTranslations: (state, action)=>({ ...state, // we need to before we compare because there is a corner case when the user changes the default translations then re-selects them which results in the same array as the default one but reversed e.g. instead of [20, 131] it becomes [131, 20]. isUsingDefaultTranslations: (0,_utils_array__WEBPACK_IMPORTED_MODULE_6__/* .areArraysEqual */ .Hj)((0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTranslationsInitialState */ .h0)(action.payload.locale).selectedTranslations, action.payload.translations), selectedTranslations: action.payload.translations }) }, // reset the translation state to initial state // when `reset` action is dispatched extraReducers: (builder)=>{ builder.addCase(_redux_actions_reset_settings__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (state, action)=>{ return (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTranslationsInitialState */ .h0)(action.payload.locale); }); builder.addCase(_redux_actions_sync_user_preferences__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, (state, action)=>{ const { payload: { userPreferences , locale } , } = action; const remotePreferences = userPreferences[types_auth_PreferenceGroup__WEBPACK_IMPORTED_MODULE_5__/* ["default"].TRANSLATIONS */ .Z.TRANSLATIONS]; if (remotePreferences) { const { selectedTranslations: defaultTranslations } = (0,_redux_defaultSettings_util__WEBPACK_IMPORTED_MODULE_3__/* .getTranslationsInitialState */ .h0)(locale); const { selectedTranslations: remoteTranslations } = remotePreferences; return { ...state, ...remotePreferences, isUsingDefaultTranslations: (0,_utils_array__WEBPACK_IMPORTED_MODULE_6__/* .areArraysEqual */ .Hj)(defaultTranslations, remoteTranslations) }; } return state; }); } }); const { setSelectedTranslations } = translationsSlice.actions; const selectTranslations = (state)=>state.translations; const selectSelectedTranslations = (state)=>state.translations.selectedTranslations; const selectIsUsingDefaultTranslations = (state)=>state.translations.isUsingDefaultTranslations; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (translationsSlice.reducer); /***/ }), /***/ 44177: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Mi": () => (/* binding */ setSettingsView), /* harmony export */ "R$": () => (/* binding */ setIsSearchDrawerOpen), /* harmony export */ "Rd": () => (/* binding */ setIsNavigationDrawerOpen), /* harmony export */ "US": () => (/* binding */ SettingsView), /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "ZY": () => (/* binding */ setIsSettingsDrawerOpen), /* harmony export */ "u": () => (/* binding */ setIsVisible), /* harmony export */ "wK": () => (/* binding */ selectNavbar) /* harmony export */ }); /* unused harmony export navbarSlice */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61243); var SettingsView; (function(SettingsView) { SettingsView["Body"] = "body"; SettingsView["Translation"] = "translation"; SettingsView["Reciter"] = "reciter"; SettingsView["Tafsir"] = "tafsir"; SettingsView["RepeatSettings"] = "repeatSettings"; })(SettingsView || (SettingsView = {})); const initialState = { isVisible: true, isNavigationDrawerOpen: false, isSearchDrawerOpen: false, isSettingsDrawerOpen: false, settingsView: SettingsView.Body }; const navbarSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__/* ["default"].NAVBAR */ .Z.NAVBAR, initialState, reducers: { setIsVisible: (state, action)=>({ ...state, isVisible: action.payload }), setIsNavigationDrawerOpen: (state, action)=>({ ...state, isNavigationDrawerOpen: action.payload }), setIsSearchDrawerOpen: (state, action)=>({ ...state, isSearchDrawerOpen: action.payload }), setIsSettingsDrawerOpen: (state, action)=>({ ...state, isSettingsDrawerOpen: action.payload }), setSettingsView: (state, action)=>({ ...state, settingsView: action.payload }) } }); const { setIsVisible , setIsNavigationDrawerOpen , setIsSearchDrawerOpen , setIsSettingsDrawerOpen , setSettingsView , } = navbarSlice.actions; const selectNavbar = (state)=>state.navbar; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (navbarSlice.reducer); /***/ }), /***/ 22732: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ "tE": () => (/* binding */ setActiveStepIndex), /* harmony export */ "xg": () => (/* binding */ selectOnboardingActiveStep) /* harmony export */ }); /* unused harmony exports onboardingSlice, dismissChecklist, setIsChecklistVisible, selectOnboarding */ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61243); /* harmony import */ var _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20661); const initialState = { isChecklistVisible: true, checklistDismissals: 0, lastChecklistDismissal: null, activeStep: { group: _types_OnboardingGroup__WEBPACK_IMPORTED_MODULE_2__/* ["default"].HOMEPAGE */ .Z.HOMEPAGE, index: 0 }, completedGroups: {} }; const onboardingSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({ name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__/* ["default"].ONBOARDING */ .Z.ONBOARDING, initialState, reducers: { // checklist state dismissChecklist: (state)=>({ ...state, isChecklistVisible: false, checklistDismissals: state.checklistDismissals + 1, lastChecklistDismissal: new Date().getTime() }), setIsChecklistVisible: (state, action)=>({ ...state, isChecklistVisible: action.payload }), setActiveStepIndex: (state, action)=>{ const { group: groupKey , index , indicesToMarkAsCompleted , totalSteps } = action.payload; const group = state.completedGroups[groupKey]; const newCompletedSteps = group?.completedSteps ? [ ...group.completedSteps ] : []; if (!newCompletedSteps.includes(index)) { newCompletedSteps.push(index); } if (indicesToMarkAsCompleted) { indicesToMarkAsCompleted.forEach((stepIdx)=>{ if (!newCompletedSteps.includes(stepIdx)) { newCompletedSteps.push(stepIdx); } }); } const newGroupData = { completedSteps: newCompletedSteps, isCompleted: totalSteps ? newCompletedSteps.length === totalSteps : group?.isCompleted }; return { ...state, activeStep: action.payload, completedGroups: { ...state.completedGroups, [groupKey]: newGroupData } }; } } }); const { dismissChecklist , setIsChecklistVisible , setActiveStepIndex } = onboardingSlice.actions; const selectOnboarding = (state)=>state.onboarding; const selectOnboardingActiveStep = (state)=>state.onboarding.activeStep; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (onboardingSlice.reducer); /***/ }), /***/ 6902: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "t": () => (/* binding */ isMobile) /* harmony export */ }); const TABLET_WIDTH = 768; // eslint-disable-next-line import/prefer-default-export const isMobile = ()=>{ if (typeof document === "undefined") return false; return document.documentElement.clientWidth < TABLET_WIDTH; }; /***/ }), /***/ 20661: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var OnboardingGroup; (function(OnboardingGroup) { OnboardingGroup["HOMEPAGE"] = "HOMEPAGE"; OnboardingGroup["SETTINGS"] = "SETTINGS"; OnboardingGroup["READING_EXPERIENCE"] = "READING_EXPERIENCE"; OnboardingGroup["PERSONALIZED_FEATURES"] = "PERSONALIZED_FEATURES"; })(OnboardingGroup || (OnboardingGroup = {})); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OnboardingGroup); /***/ }) }; ; //# sourceMappingURL=6094.js.map