{"version":3,"file":"static/chunks/pages/reading-goal/progress-b53b418b1591a228.js","mappings":"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","sources":["webpack://_N_E/./public/icons/east.svg","webpack://_N_E/./public/icons/help-circle.svg","webpack://_N_E/?cd18","webpack://_N_E/./src/components/FormBuilder/buildTranslatedErrorMessageByErrorId.ts","webpack://_N_E/./src/components/PageContainer/index.tsx","webpack://_N_E/./src/components/dls/ContentModal/ContentModal.tsx","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Item.tsx","webpack://_N_E/./src/components/dls/Forms/RadioGroup/RadioGroup.tsx","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Root.tsx","webpack://_N_E/./src/components/dls/HelperTooltip/HelperTooltip.tsx","webpack://_N_E/./src/components/dls/SelectionCard/SelectionCard.tsx","webpack://_N_E/./src/components/ReadingGoal/DeleteReadingGoalModal/index.tsx","webpack://_N_E/./src/components/ReadingGoal/UpdateReadingGoalModal/index.tsx","webpack://_N_E/./src/components/dls/CircularProgress/Path.tsx","webpack://_N_E/./src/utils/circularProgress.ts","webpack://_N_E/./src/components/dls/CircularProgress/index.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ProgressPageGoalWidget.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ProgressPageStreakWidget.tsx","webpack://_N_E/./src/components/dls/DurationInput/index.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/AddReading/AddReadingForm.tsx","webpack://_N_E/./src/components/dls/Calendar/index.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/AddReading/index.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/ReadingStats.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/DaysCalendar.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/MonthModal.tsx","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/index.tsx","webpack://_N_E/./src/components/ReadingProgressPage/index.tsx","webpack://_N_E/./src/pages/reading-goal/progress.tsx","webpack://_N_E/./src/utils/activity-day.ts","webpack://_N_E/./types/ErrorMessageId.ts","webpack://_N_E/./src/components/PageContainer/PageContainer.module.scss","webpack://_N_E/./src/components/ReadingGoal/DeleteReadingGoalModal/DeleteReadingGoalModal.module.scss","webpack://_N_E/./src/components/ReadingGoal/UpdateReadingGoalModal/UpdateReadingGoalModal.module.scss","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/AddReading/AddReading.module.scss","webpack://_N_E/./src/components/ReadingProgressPage/ReadingHistory/ReadingHistory.module.scss","webpack://_N_E/./src/components/ReadingProgressPage/ReadingProgressPage.module.scss","webpack://_N_E/./src/components/dls/Calendar/Calendar.module.scss","webpack://_N_E/./src/components/dls/CircularProgress/CircularProgress.module.scss","webpack://_N_E/./src/components/dls/ContentModal/ContentModal.module.scss","webpack://_N_E/./src/components/dls/DurationInput/DurationInput.module.scss","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Item.module.scss","webpack://_N_E/./src/components/dls/Forms/RadioGroup/RadioGroup.module.scss","webpack://_N_E/./src/components/dls/Forms/RadioGroup/Root.module.scss","webpack://_N_E/./src/components/dls/HelperTooltip/HelperTooltip.module.scss","webpack://_N_E/./src/components/dls/SelectionCard/SelectionCard.module.scss"],"sourcesContent":["var _path;\nfunction _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); }\nimport * as React from \"react\";\nvar SvgEast = function SvgEast(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15 5-1.41 1.41L18.17 11H2v2h16.17l-4.59 4.59L15 19l7-7-7-7Z\",\n fill: \"currentColor\"\n })));\n};\nexport default SvgEast;","var _circle, _path;\nfunction _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); }\nimport * as React from \"react\";\nvar SvgHelpCircle = function SvgHelpCircle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"feather feather-help-circle\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 10\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01\"\n })));\n};\nexport default SvgHelpCircle;","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/reading-goal/progress\",\n function () {\n return require(\"private-next-pages/reading-goal/progress.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/reading-goal/progress\"])\n });\n }\n ","import capitalize from 'lodash/capitalize';\nimport { Translate } from 'next-translate';\n\nimport ErrorMessageId from 'types/ErrorMessageId';\n\nconst DEFAULT_ERROR_ID = ErrorMessageId.InvalidField;\n\nconst buildTranslatedErrorMessageByErrorId = (\n errorId: ErrorMessageId,\n fieldName: string,\n t: Translate,\n extraParams?: Record,\n) => {\n if (Object.values(ErrorMessageId).includes(errorId)) {\n return t(`common:validation.${errorId}`, { field: capitalize(fieldName), ...extraParams });\n }\n return t(`common:validation.${DEFAULT_ERROR_ID}`, { field: capitalize(fieldName) });\n};\n\nexport default buildTranslatedErrorMessageByErrorId;\n","import { ReactNode, FC } from 'react';\n\nimport styles from './PageContainer.module.scss';\n\ntype Props = {\n children: ReactNode | ReactNode[];\n};\n\nconst PageContainer: FC = ({ children }) => {\n return
{children}
;\n};\n\nexport default PageContainer;\n","import { useRef, useImperativeHandle, ForwardedRef } from 'react';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport classNames from 'classnames';\nimport { useRouter } from 'next/router';\n\nimport Button, { ButtonShape, ButtonVariant } from '../Button/Button';\n\nimport styles from './ContentModal.module.scss';\n\nimport ContentModalHandles from '@/dls/ContentModal/types/ContentModalHandles';\nimport CloseIcon from '@/icons/close.svg';\nimport { isRTLLocale } from '@/utils/locale';\n\nexport enum ContentModalSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n}\n\ntype ContentModalProps = {\n isOpen?: boolean;\n onClose?: () => void;\n onEscapeKeyDown?: () => void;\n children: React.ReactNode;\n hasCloseButton?: boolean;\n hasHeader?: boolean;\n header?: React.ReactNode;\n innerRef?: ForwardedRef;\n // using innerRef instead of using function forwardRef so we can dynamically load this component https://github.com/vercel/next.js/issues/4957#issuecomment-413841689\n contentClassName?: string;\n size?: ContentModalSize;\n isFixedHeight?: boolean;\n};\n\nconst SCROLLBAR_WIDTH = 15;\n\nconst ContentModal = ({\n isOpen,\n onClose,\n onEscapeKeyDown,\n hasCloseButton,\n children,\n header,\n innerRef,\n contentClassName,\n size = ContentModalSize.MEDIUM,\n isFixedHeight,\n hasHeader = true,\n}: ContentModalProps) => {\n const overlayRef = useRef();\n const { locale } = useRouter();\n\n useImperativeHandle(innerRef, () => ({\n scrollToTop: () => {\n if (overlayRef.current) overlayRef.current.scrollTop = 0;\n },\n }));\n\n /**\n * We need to manually check what the user is targeting. If it lies at the\n * area where the scroll bar is (assuming the scrollbar width is equivalent\n * to SCROLLBAR_WIDTH), then we don't close the Modal, otherwise we do.\n * We also need to check if the current locale is RTL or LTR because the side\n * where the scrollbar is will be different and therefor the value of\n * {e.detail.originalEvent.offsetX} will be different.\n *\n * inspired by {@see https://github.com/radix-ui/primitives/issues/1280#issuecomment-1198248523}\n *\n * @param {any} e\n */\n const onPointerDownOutside = (e: any) => {\n const currentTarget = e.currentTarget as HTMLElement;\n\n const shouldPreventOnClose = isRTLLocale(locale)\n ? e.detail.originalEvent.offsetX < SCROLLBAR_WIDTH // left side of the screen clicked\n : e.detail.originalEvent.offsetX > currentTarget.clientWidth - SCROLLBAR_WIDTH; // right side of the screen clicked\n\n if (shouldPreventOnClose) {\n e.preventDefault();\n return;\n }\n if (onClose) {\n onClose();\n }\n };\n\n return (\n \n \n \n \n {hasHeader && (\n
\n {hasCloseButton && (\n \n \n \n \n \n )}\n {header}\n
\n )}\n\n
{children}
\n \n
\n
\n
\n );\n};\nexport default ContentModal;\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport classNames from 'classnames';\n\nimport styles from './Item.module.scss';\n\ninterface Props extends RadioGroupPrimitive.RadioGroupItemProps {\n indicatorClassName?: string;\n}\n\nconst Item = ({ className, indicatorClassName, ...props }: Props) => (\n \n \n \n);\n\nexport default Item;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport Item from './Item';\nimport styles from './RadioGroup.module.scss';\nimport Root, { Props as RootProps } from './Root';\n\nexport interface RadioItem {\n value: string;\n id: string;\n label: string;\n disabled?: boolean;\n required?: boolean;\n}\n\ninterface Props extends RootProps {\n items: RadioItem[];\n disabled?: boolean;\n}\n\nconst RadioGroup = ({ items, disabled = false, ...props }: Props) => {\n return (\n \n {items.map((item) => {\n const isDisabled = disabled === true || item.disabled === true;\n return (\n
\n \n\n \n {item.label}\n \n
\n );\n })}\n
\n );\n};\n\nRadioGroup.Root = Root;\nRadioGroup.Item = Item;\n\n// export `RadioGroupOrientation` type from here so that files that are using it don't break\nexport { RadioRootOrientation as RadioGroupOrientation } from './Root';\n\nexport default RadioGroup;\n","import React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport classNames from 'classnames';\n\nimport styles from './Root.module.scss';\n\nimport useDirection from '@/hooks/useDirection';\nimport { Direction } from '@/utils/locale';\n\nexport enum RadioRootOrientation {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\n\nexport interface Props {\n orientation?: RadioRootOrientation;\n label: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n value?: string;\n name?: string;\n required?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Root: React.FC = ({\n className,\n label,\n orientation = RadioRootOrientation.Vertical,\n onChange,\n defaultValue,\n value,\n name,\n required,\n children,\n}) => {\n const direction = useDirection();\n\n return (\n \n {children}\n \n );\n};\n\nexport default Root;\n","import HoverablePopover from '../Popover/HoverablePopover';\n\nimport styles from './HelperTooltip.module.scss';\n\nimport QuestionMarkIcon from '@/icons/help-circle.svg';\n\ninterface HelperTooltipProps {\n children: React.ReactNode;\n}\n\nconst HelperTooltip = ({ children }: HelperTooltipProps) => {\n return (\n {children}}\n >\n \n \n \n \n );\n};\n\nexport default HelperTooltip;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport styles from './SelectionCard.module.scss';\n\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\n\ntype SelectionCard = {\n label?: string;\n value?: string;\n onClick?: () => void;\n};\n\nconst SelectionCard = ({ label, value, onClick }: SelectionCard) => {\n return (\n
\n
\n
{label}
\n
{value}
\n
\n
\n \n
\n
\n );\n};\n\nexport default SelectionCard;\n","import { useCallback, useState } from 'react';\n\nimport Trans from 'next-translate/Trans';\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport styles from './DeleteReadingGoalModal.module.scss';\n\nimport Button, { ButtonType, ButtonVariant } from '@/dls/Button/Button';\nimport Input from '@/dls/Forms/Input';\nimport Modal from '@/dls/Modal/Modal';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport { GoalCategory } from '@/types/auth/Goal';\nimport { deleteReadingGoal } from '@/utils/auth/api';\nimport { makeStreakUrl } from '@/utils/auth/apiPaths';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ntype DeleteReadingGoalButtonProps = {\n isDisabled?: boolean;\n};\n\nconst DeleteReadingGoalModal = ({ isDisabled }: DeleteReadingGoalButtonProps) => {\n const { t } = useTranslation('reading-progress');\n const [isModalVisible, setIsModalVisible] = useState(false);\n const [confirmationText, setConfirmationText] = useState('');\n const { mutate } = useSWRConfig();\n const toast = useToast();\n\n const deleteReadingGoalAndClearCache = useCallback(async () => {\n await deleteReadingGoal({ category: GoalCategory.QURAN });\n mutate(makeStreakUrl());\n }, [mutate]);\n\n const closeModal = () => {\n setConfirmationText('');\n setIsModalVisible(false);\n };\n\n const onDeleteConfirmed = async () => {\n logButtonClick('reading_goal_confirm_delete');\n await deleteReadingGoalAndClearCache();\n toast(t('delete-goal.success'), {\n status: ToastStatus.Success,\n });\n closeModal();\n };\n\n const onDeleteReadingGoalClicked = () => {\n logButtonClick('reading_goal_delete');\n setIsModalVisible(true);\n };\n\n const CONFIRMATION_TEXT = t('delete-goal.confirmation.confirmation-text');\n const canDeleteGoal = confirmationText.toLowerCase() === CONFIRMATION_TEXT.toLowerCase();\n\n return (\n <>\n \n {t('delete-goal.action')}\n \n \n \n \n {t('delete-goal.confirmation.title')}\n {t('delete-goal.confirmation.subtitle')}\n\n

\n ,\n }}\n />\n

\n \n
\n \n \n {t('delete-goal.confirmation.action-text')}\n \n \n
\n
\n \n );\n};\n\nexport default DeleteReadingGoalModal;\n","/* eslint-disable max-lines */\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport ReadingGoalInput from '../ReadingGoalInput';\n\nimport styles from './UpdateReadingGoalModal.module.scss';\n\nimport { validateReadingGoalData } from '@/components/ReadingGoalPage/utils/validator';\nimport DataContext from '@/contexts/DataContext';\nimport Button, { ButtonType, ButtonVariant } from '@/dls/Button/Button';\nimport RadioGroup from '@/dls/Forms/RadioGroup/RadioGroup';\nimport { RadioRootOrientation } from '@/dls/Forms/RadioGroup/Root';\nimport Select, { SelectSize } from '@/dls/Forms/Select';\nimport Modal from '@/dls/Modal/Modal';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport useGetMushaf from '@/hooks/useGetMushaf';\nimport {\n Goal,\n GoalCategory,\n GoalType,\n QuranGoalPeriod,\n UpdateGoalRequest,\n} from '@/types/auth/Goal';\nimport { updateReadingGoal } from '@/utils/auth/api';\nimport { makeStreakUrl } from '@/utils/auth/apiPaths';\nimport { logButtonClick, logFormSubmission, logValueChange } from '@/utils/eventLogger';\nimport { generateDurationDaysOptions } from '@/utils/generators';\nimport { parseVerseRange } from '@/utils/verseKeys';\n\ntype UpdateReadingGoalButtonProps = {\n isDisabled?: boolean;\n goal: Goal;\n};\n\nconst getPages = (readingGoal: Goal) => {\n if (readingGoal.type === GoalType.PAGES) return Number(readingGoal.targetAmount);\n return 1;\n};\n\nconst getSeconds = (readingGoal: Goal) => {\n if (readingGoal.type === GoalType.TIME) return Number(readingGoal.targetAmount);\n return 60;\n};\n\nconst getRange = (readingGoal: Goal) => {\n if (readingGoal.type !== GoalType.RANGE) return { startVerse: null, endVerse: null };\n const [{ verseKey: startVerse }, { verseKey: endVerse }] = parseVerseRange(\n readingGoal.targetAmount,\n );\n\n return {\n startVerse,\n endVerse,\n };\n};\n\nconst types = [\n { value: GoalType.TIME, key: 'time' },\n { value: GoalType.PAGES, key: 'pages' },\n { value: GoalType.RANGE, key: 'range' },\n] as const;\n\nconst UpdateReadingGoalModal = ({ isDisabled, goal }: UpdateReadingGoalButtonProps) => {\n const { t, lang } = useTranslation('reading-progress');\n const chaptersData = useContext(DataContext);\n const [isModalVisible, setIsModalVisible] = useState(false);\n\n const mushaf = useGetMushaf();\n const dayOptions = useMemo(() => generateDurationDaysOptions(t, lang), [t, lang]);\n\n const [isContinuous, setIsContinuous] = useState(!!goal.duration);\n const [duration, setDuration] = useState(goal.duration || 30);\n const [type, setType] = useState(goal.type);\n\n const [pages, setPages] = useState(getPages(goal));\n const [seconds, setSeconds] = useState(getSeconds(goal));\n const [range, setRange] = useState(getRange(goal));\n\n const toast = useToast();\n\n const { mutate } = useSWRConfig();\n\n const updateReadingGoalAndClearCache = useCallback(\n async (data: UpdateGoalRequest) => {\n await updateReadingGoal({ ...data, mushafId: mushaf, category: GoalCategory.QURAN });\n mutate(makeStreakUrl());\n },\n [mutate, mushaf],\n );\n\n const resetState = useCallback(() => {\n // reset everything to the reading goal\n setType(goal.type);\n setIsContinuous(!!goal.duration);\n setDuration(goal.duration || 30);\n\n setPages(getPages(goal));\n setSeconds(getSeconds(goal));\n setRange(getRange(goal));\n }, [goal]);\n\n const closeModal = () => {\n setIsModalVisible(false);\n\n resetState();\n };\n\n useEffect(() => {\n resetState();\n }, [resetState, goal]);\n\n const onUpdateGoalClicked = () => {\n logButtonClick('edit_reading_goal');\n setIsModalVisible(true);\n };\n\n const onUpdateClicked = async () => {\n let amount: string | number;\n\n if (type === GoalType.PAGES) amount = pages;\n else if (type === GoalType.TIME) amount = seconds;\n else amount = `${range.startVerse}-${range.endVerse}`;\n\n const data: UpdateGoalRequest = {\n type,\n amount,\n };\n if (isContinuous) {\n data.duration = duration;\n }\n\n logFormSubmission('edit_goal', data);\n\n try {\n await updateReadingGoalAndClearCache(data);\n toast(t('edit-goal.success'), { status: ToastStatus.Success });\n closeModal();\n } catch {\n toast(t('common:error.general'), { status: ToastStatus.Error });\n }\n };\n\n const onContinuityChange = (value: QuranGoalPeriod) => {\n setIsContinuous(value === QuranGoalPeriod.Continuous);\n logValueChange(\n 'edit_goal_continuity',\n isContinuous ? QuranGoalPeriod.Continuous : QuranGoalPeriod.Daily,\n value,\n );\n };\n\n const logAmountChange = (\n input: string,\n values: { currentValue: unknown; newValue: unknown },\n metadata?: Record,\n ) => {\n logValueChange(`edit_goal_${input}`, values.currentValue, values.newValue, metadata);\n };\n\n const onGoalTypeChange = (newType: GoalType) => {\n setType(newType);\n logValueChange('edit_goal_type', type, newType);\n };\n\n const onDurationChange = (value: string) => {\n setDuration(Number(value));\n logValueChange('edit_goal_duration', duration, value);\n };\n\n const getIsUpdateDisabled = () => {\n return !validateReadingGoalData(\n chaptersData,\n {\n type,\n pages,\n seconds,\n range,\n },\n mushaf,\n );\n };\n\n return (\n <>\n \n\n \n \n \n {t('edit-goal.title')}\n {t('edit-goal.subtitle')}\n\n \n\n
\n
\n \n ({\n value: typeObject.value,\n label: t(`reading-goal:goal-types.${typeObject.key}.title`),\n }))}\n />\n
\n\n setRange(newRange)}\n onPagesChange={setPages}\n onSecondsChange={setSeconds}\n widthFull={false}\n logChange={logAmountChange}\n />\n\n {isContinuous && (\n
\n \n \n
\n )}\n
\n
\n \n \n {t('edit-goal.action')}\n \n \n
\n
\n \n );\n};\n\nexport default UpdateReadingGoalModal;\n","import { VIEWBOX_CENTER_X, VIEWBOX_CENTER_Y } from '@/utils/circularProgress';\n\ninterface PathProps {\n className?: string;\n counterClockwise: boolean;\n dashRatio: number;\n pathRadius: number;\n strokeWidth: number;\n style?: object;\n}\n\nconst Path: React.FC = ({\n className,\n counterClockwise,\n dashRatio,\n pathRadius,\n strokeWidth,\n style,\n}) => {\n return (\n \n );\n};\n\n// SVG path description specifies how the path should be drawn\nfunction getPathDescription({\n pathRadius,\n counterClockwise,\n}: {\n pathRadius: number;\n counterClockwise: boolean;\n}) {\n const radius = pathRadius;\n const rotation = counterClockwise ? 1 : 0;\n\n // Move to center of canvas\n // Relative move to top canvas\n // Relative arc to bottom of canvas\n // Relative arc to top of canvas\n return `\n M ${VIEWBOX_CENTER_X},${VIEWBOX_CENTER_Y}\n m 0,-${radius}\n a ${radius},${radius} ${rotation} 1 1 0,${2 * radius}\n a ${radius},${radius} ${rotation} 1 1 0,-${2 * radius}\n `;\n}\n\nfunction getDashStyle({\n counterClockwise,\n dashRatio,\n pathRadius,\n}: {\n counterClockwise: boolean;\n dashRatio: number;\n pathRadius: number;\n}) {\n const diameter = Math.PI * 2 * pathRadius;\n const gapLength = (1 - dashRatio) * diameter;\n\n return {\n // Have dash be full diameter, and gap be full diameter\n strokeDasharray: `${diameter}px ${diameter}px`,\n // Shift dash backward by gapLength, so gap starts appearing at correct distance\n strokeDashoffset: `${counterClockwise ? -gapLength : gapLength}px`,\n };\n}\n\nexport default Path;\n","export const VIEWBOX_WIDTH = 100;\nexport const VIEWBOX_HEIGHT = 100;\nexport const VIEWBOX_HEIGHT_HALF = 50;\nexport const VIEWBOX_CENTER_X = 50;\nexport const VIEWBOX_CENTER_Y = 50;\n","import classNames from 'classnames';\nimport defaults from 'lodash/defaults';\nimport defaultsDeep from 'lodash/defaultsDeep';\n\nimport styles from './CircularProgress.module.scss';\nimport Path from './Path';\n\nimport {\n VIEWBOX_WIDTH,\n VIEWBOX_HEIGHT,\n VIEWBOX_HEIGHT_HALF,\n VIEWBOX_CENTER_X,\n VIEWBOX_CENTER_Y,\n} from '@/utils/circularProgress';\n\nexport type CircularProgressbarStyles = {\n root?: React.CSSProperties;\n trail?: React.CSSProperties;\n path?: React.CSSProperties;\n text?: React.CSSProperties;\n background?: React.CSSProperties;\n};\n\nexport type CircularProgressbarDefaultProps = {\n background: boolean;\n backgroundPadding: number;\n circleRatio: number;\n classes: {\n root: string;\n trail: string;\n path: string;\n text: string;\n background: string;\n };\n className: string;\n counterClockwise: boolean;\n maxValue: number;\n minValue: number;\n strokeWidth: number;\n text: string;\n};\n\nexport type CircularProgressbarProps = CircularProgressbarDefaultProps & {\n value: number;\n};\n\nconst defaultProps: Partial = {\n background: false,\n backgroundPadding: 0,\n circleRatio: 1,\n classes: {\n root: styles.progressbar,\n trail: styles.trail,\n path: styles.path,\n text: styles.text,\n background: styles.background,\n },\n counterClockwise: false,\n maxValue: 100,\n minValue: 0,\n strokeWidth: 8,\n};\n\nconst CircularProgressbar: React.FC> = ({ ...initialProps }) => {\n const {\n background,\n backgroundPadding,\n circleRatio,\n className,\n classes,\n counterClockwise,\n strokeWidth,\n text,\n ...props\n } = defaultsDeep(initialProps, defaults(initialProps, defaultProps));\n\n const getBackgroundPadding = () => {\n if (!background) {\n // Don't add padding if not displaying background\n return 0;\n }\n\n return backgroundPadding;\n };\n\n const getPathRadius = () => {\n // The radius of the path is defined to be in the middle, so in order for the path to\n // fit perfectly inside the 100x100 viewBox, need to subtract half the strokeWidth\n return VIEWBOX_HEIGHT_HALF - strokeWidth / 2 - getBackgroundPadding();\n };\n\n // Ratio of path length to trail length, as a value between 0 and 1\n const getPathRatio = () => {\n const { value, minValue, maxValue } = props;\n const boundedValue = Math.min(Math.max(value, minValue), maxValue);\n return (boundedValue - minValue) / (maxValue - minValue);\n };\n\n const pathRadius = getPathRadius();\n const pathRatio = getPathRatio();\n\n return (\n \n {background ? (\n \n ) : null}\n\n \n\n \n\n {text ? (\n \n {text}\n \n ) : null}\n \n );\n};\n\nexport default CircularProgressbar;\n","import classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ReadingProgressPage.module.scss';\n\nimport ReadingGoalAmount, {\n ReadingGoalAmountContext,\n} from '@/components/ReadingGoal/ReadingGoalAmount';\nimport Button from '@/dls/Button/Button';\nimport CircularProgressbar from '@/dls/CircularProgress';\nimport Skeleton from '@/dls/Skeleton/Skeleton';\nimport { StreakWithMetadata } from '@/hooks/auth/useGetStreakWithMetadata';\nimport { CurrentQuranActivityDay } from '@/types/auth/ActivityDay';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { toLocalizedNumber } from '@/utils/locale';\nimport { getReadingGoalNavigationUrl } from '@/utils/navigation';\n\ninterface ProgressPageGoalWidgetProps {\n currentActivityDay: CurrentQuranActivityDay;\n goal?: StreakWithMetadata['goal'];\n isLoading: boolean;\n}\n\nconst ProgressPageGoalWidget = ({\n currentActivityDay,\n goal,\n isLoading,\n}: ProgressPageGoalWidgetProps) => {\n const { t, lang } = useTranslation('reading-progress');\n const percent = goal?.isCompleted ? 100 : Math.min(goal?.progress?.percent || 0, 100);\n const isGoalDone = percent >= 100;\n const localizedPercent = toLocalizedNumber(percent, lang);\n\n if (isLoading) {\n return (\n \n \n \n );\n }\n\n if (!goal) {\n const onCreateReadingGoalClick = () => {\n logButtonClick('progress_page_create_goal');\n };\n\n return (\n
\n \n
\n );\n }\n\n const getContent = () => {\n if (goal.isCompleted) {\n return

{t('reading-goal:progress.goal-complete')}

;\n }\n\n if (isGoalDone) {\n return

{t('reading-goal:progress.complete')}

;\n }\n\n return (\n \n );\n };\n\n return (\n
\n
{getContent()}
\n\n
\n \n
\n
\n );\n};\n\nexport default ProgressPageGoalWidget;\n","import classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport CurrentWeekProgress from '../HomePage/QuranGrowthJourneySection/CollapsibleSection/QuranReadingGoals/CurrentWeekProgress';\n\nimport styles from './ReadingProgressPage.module.scss';\n\nimport Skeleton from '@/dls/Skeleton/Skeleton';\nimport { StreakWithMetadata } from '@/hooks/auth/useGetStreakWithMetadata';\nimport { toLocalizedNumber } from '@/utils/locale';\n\ninterface ProgressPageStreakWidgetProps {\n weekData: StreakWithMetadata['weekData'];\n goal?: StreakWithMetadata['goal'];\n streak: number;\n isLoading: boolean;\n}\n\nconst ProgressPageStreakWidget = ({\n weekData,\n goal,\n streak,\n isLoading,\n}: ProgressPageStreakWidgetProps) => {\n const { t, lang } = useTranslation('reading-progress');\n const localizedStreak = toLocalizedNumber(streak, lang);\n\n const widget = (\n <>\n
\n

{t('reading-goal:streak')}

\n

{t('reading-goal:x-days', { days: localizedStreak, count: streak })}

\n
\n\n \n \n );\n\n const Wrapper = isLoading ? Skeleton : 'div';\n return {widget};\n};\n\nexport default ProgressPageStreakWidget;\n","import { ChangeEvent, useEffect, useState } from 'react';\n\nimport classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './DurationInput.module.scss';\n\nimport Spinner from '@/dls/Spinner/Spinner';\nimport { convertNumberToDecimal } from '@/utils/number';\n\ninterface DurationInputProps {\n totalSeconds: number;\n onTotalSecondsChange: (totalSeconds: number) => void;\n disabled?: boolean;\n isLoading?: boolean;\n label?: React.ReactNode;\n error?: string;\n}\n\nconst commonInputProps: React.InputHTMLAttributes = {\n type: 'number',\n min: 0,\n};\n\nconst DurationInput = ({\n totalSeconds,\n onTotalSecondsChange,\n disabled = false,\n isLoading = false,\n label,\n error,\n}: DurationInputProps) => {\n const [hours, setHours] = useState(0);\n const [minutes, setMinutes] = useState(0);\n const [seconds, setSeconds] = useState(0);\n const { t } = useTranslation('common');\n\n const isDisabled = disabled || isLoading;\n\n const handleChange = (setter: (value: number) => void) => (e: ChangeEvent) => {\n const value = Number(e.target.value);\n if (value < 0) return;\n\n setter(value);\n };\n\n useEffect(() => {\n onTotalSecondsChange(hours * 3600 + minutes * 60 + seconds);\n }, [onTotalSecondsChange, hours, minutes, seconds]);\n\n useEffect(() => {\n const newHours = Math.floor(totalSeconds / 3600);\n const newMinutes = Math.floor((totalSeconds % 3600) / 60);\n const newSeconds = totalSeconds % 60;\n\n setHours(convertNumberToDecimal(newHours, 1));\n setMinutes(convertNumberToDecimal(newMinutes, 1));\n setSeconds(convertNumberToDecimal(newSeconds, 1));\n }, [totalSeconds]);\n\n const commonInputClassName = classNames({\n [styles.disabledInput]: isDisabled,\n });\n\n return (\n
\n {isLoading && }\n {label && (\n \n )}\n\n \n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n {error &&

{error}

}\n \n );\n};\n\nexport default DurationInput;\n","import { useContext, useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './AddReading.module.scss';\n\nimport VerseRangesList from '@/components/ReadingGoal/ReadingGoalAmount/VerseRangesList';\nimport VerseRangeInput from '@/components/ReadingGoal/ReadingGoalInput/VerseRangeInput';\nimport { isValidVerseRange } from '@/components/ReadingGoalPage/utils/validator';\nimport DataContext from '@/contexts/DataContext';\nimport Button from '@/dls/Button/Button';\nimport DurationInput from '@/dls/DurationInput';\nimport HelperTooltip from '@/dls/HelperTooltip/HelperTooltip';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ninterface AddReadingFormProps {\n ranges: string[];\n setRanges: (ranges: string[]) => void;\n\n totalSeconds: number;\n setTotalSeconds: (totalSeconds: number) => void;\n\n isFetchingSeconds: boolean;\n totalSecondsError?: string;\n}\n\nconst AddReadingForm = ({\n ranges,\n setRanges,\n totalSeconds,\n setTotalSeconds,\n isFetchingSeconds,\n totalSecondsError,\n}: AddReadingFormProps) => {\n const chaptersData = useContext(DataContext);\n const { t } = useTranslation('reading-progress');\n\n const [rangeStart, setRangeStart] = useState(null);\n const [rangeEnd, setRangeEnd] = useState(null);\n\n const onAddClick = () => {\n if (!rangeStart || !rangeEnd) return;\n const newRanges = [...ranges, `${rangeStart}-${rangeEnd}`];\n logButtonClick('add_reading', {\n range: `${rangeStart}-${rangeEnd}`,\n });\n setRanges(newRanges);\n setRangeStart(undefined);\n setRangeEnd(undefined);\n };\n\n const onRangeChange = ({ startVerse, endVerse }) => {\n setRangeStart(startVerse);\n setRangeEnd(endVerse);\n };\n\n const getIsAddButtonDisabled = () => {\n return !isValidVerseRange(chaptersData, {\n startVerse: rangeStart,\n endVerse: rangeEnd,\n });\n };\n\n return (\n <>\n \n \n\n
\n \n {t('reading-time')}\n {t('seconds-read-tooltip')}\n
\n }\n error={totalSecondsError}\n />\n \n\n
\n \n
\n \n );\n};\n\nexport default AddReadingForm;\n","import { useCallback } from 'react';\n\nimport classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Spinner from '../Spinner/Spinner';\n\nimport styles from './Calendar.module.scss';\n\nimport { getMonthDateObject, numberToPaddedString } from '@/utils/datetime';\nimport { toLocalizedNumber } from '@/utils/locale';\n\ninterface CalendarProps {\n month: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n year: number;\n getIsDayDisabled?: (day: number, dateString: string) => boolean;\n onDayClick?: (day: number, dateString: string) => void;\n isLoading?: boolean;\n}\n\nconst Calendar = ({ month, year, getIsDayDisabled, onDayClick, isLoading }: CalendarProps) => {\n const { lang } = useTranslation();\n\n // YYYY-MM\n const monthDateString = `${year}-${numberToPaddedString(month)}`;\n\n const monthDateObj = getMonthDateObject(year, month);\n const daysInMonth = monthDateObj.getDate();\n\n const getIsDisabled = useCallback(\n (day: number, dateString: string) => {\n // if the calendar is loading, disable all days\n if (isLoading) return true;\n\n if (getIsDayDisabled) return getIsDayDisabled(day, dateString);\n\n // if there is no custom logic to disable days, don't disable any day\n return false;\n },\n [getIsDayDisabled, isLoading],\n );\n\n return (\n
\n {isLoading && }\n
\n {/* eslint-disable-next-line @typescript-eslint/naming-convention */}\n {Array.from({ length: daysInMonth }).map((_, index) => {\n const day = index + 1;\n const dateString = `${monthDateString}-${numberToPaddedString(day)}`;\n\n const isDisabled = getIsDisabled(day, dateString);\n\n const handleDayClick = () => onDayClick?.(day, dateString);\n\n return (\n
6 && styles.bordered)}>\n \n \n \n
\n );\n })}\n
\n
\n );\n};\n\nexport default Calendar;\n","/* eslint-disable max-lines */\nimport { useMemo, useState, useEffect, useCallback } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\nimport useSWRImmutable from 'swr/immutable';\n\nimport styles from './AddReading.module.scss';\nimport AddReadingForm from './AddReadingForm';\n\nimport buildTranslatedErrorMessageByErrorId from '@/components/FormBuilder/buildTranslatedErrorMessageByErrorId';\nimport Button, { ButtonShape, ButtonSize, ButtonVariant } from '@/dls/Button/Button';\nimport Calendar from '@/dls/Calendar';\nimport { ModalSize } from '@/dls/Modal/Content';\nimport Modal from '@/dls/Modal/Modal';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport useGetMushaf from '@/hooks/useGetMushaf';\nimport ChevronLeft from '@/icons/chevron-left.svg';\nimport ChevronRight from '@/icons/chevron-right.svg';\nimport ArrowLeft from '@/icons/west.svg';\nimport { ActivityDayType } from '@/types/auth/ActivityDay';\nimport ErrorMessageId from '@/types/ErrorMessageId';\nimport { getFilterActivityDaysParamsOfCurrentMonth } from '@/utils/activity-day';\nimport { estimateRangesReadingTime, updateActivityDay } from '@/utils/auth/api';\nimport {\n makeEstimateRangesReadingTimeUrl,\n makeFilterActivityDaysUrl,\n makeStreakUrl,\n} from '@/utils/auth/apiPaths';\nimport {\n dateToReadableFormat,\n getCurrentDay,\n getCurrentMonth,\n getMonthsInYear,\n} from '@/utils/datetime';\nimport { logValueChange, logButtonClick, logFormSubmission } from '@/utils/eventLogger';\n\nconst AddReading = () => {\n const { t, lang } = useTranslation('reading-progress');\n const [isOpen, setIsOpen] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const [selectedMonth, setSelectedMonth] = useState(() => getCurrentMonth());\n const [selectedDate, setSelectedDate] = useState(null);\n const selectedYear = useMemo(() => new Date().getFullYear(), []);\n\n const [ranges, setRanges] = useState([]);\n const [totalSeconds, setTotalSeconds] = useState(0);\n const [totalSecondsError, setTotalSecondsError] = useState(null);\n\n const months = useMemo(() => getMonthsInYear(selectedYear, lang), [selectedYear, lang]);\n const mushaf = useGetMushaf();\n const toast = useToast();\n const { cache, mutate } = useSWRConfig();\n\n const { isValidating, data } = useSWRImmutable(\n ranges.length > 0 ? makeEstimateRangesReadingTimeUrl({ ranges }) : null,\n () => estimateRangesReadingTime({ ranges }),\n );\n\n useEffect(() => {\n setTotalSeconds(data?.data?.seconds || 0);\n }, [data]);\n\n const onClose = () => {\n setIsOpen(false);\n // reset ranges\n setRanges([]);\n // reset selected date\n setSelectedDate(null);\n // reset seconds error\n setTotalSecondsError(null);\n };\n\n const onOpenClick = () => {\n logButtonClick('open_add_reading_modal');\n setIsOpen(true);\n };\n\n const selectedMonthObj = useMemo(() => {\n if (!selectedMonth) return null;\n return months.find((month) => month.id === selectedMonth);\n }, [selectedMonth, months]);\n\n const onMonthBackClick = () => {\n const newMonth = selectedMonth - 1;\n logValueChange('add_reading_month', selectedMonth, newMonth, {\n year: selectedYear,\n });\n setSelectedMonth(newMonth);\n };\n\n const onMonthForwardClick = () => {\n const newMonth = selectedMonth + 1;\n logValueChange('add_reading_month', selectedMonth, newMonth, {\n year: selectedYear,\n });\n setSelectedMonth(newMonth);\n };\n\n const onGoBackClick = () => {\n logButtonClick('add_reading_back_to_calendar');\n setSelectedDate(null);\n };\n\n const onDayClick = (day: number, dateString: string) => {\n logValueChange('add_reading_day', selectedDate, dateString, {\n day,\n });\n setSelectedDate(dateString);\n };\n\n const onTotalSecondsChange = useCallback(\n (newTotalSeconds: number) => {\n setTotalSeconds(newTotalSeconds);\n if (totalSecondsError && newTotalSeconds > 0) {\n setTotalSecondsError(null);\n }\n },\n [totalSecondsError],\n );\n\n /**\n * Check if a day is disabled. A day is disabled if it's later than today.\n *\n * @param {number} day\n * @returns {boolean}\n */\n const getIsDayDisabled = (day: number): boolean => {\n const currentMonth = getCurrentMonth();\n // if the selected month is before the current month, don't disable any day\n if (selectedMonth < currentMonth) {\n return false;\n }\n // if the selected month is after the current month, disable all of the days\n if (selectedMonth > currentMonth) {\n return true;\n }\n\n const currentDay = getCurrentDay();\n\n // for the current month, we need to check which days are later than today and disable them\n if (day > currentDay) {\n return true;\n }\n\n return false;\n };\n\n // eslint-disable-next-line react-func/max-lines-per-function\n const onSubmitClick = async () => {\n if (totalSeconds < 1) {\n setTotalSecondsError(\n buildTranslatedErrorMessageByErrorId(ErrorMessageId.RequiredField, t('reading-time'), t),\n );\n return;\n }\n\n const payload = {\n ranges,\n seconds: totalSeconds,\n date: selectedDate,\n type: ActivityDayType.QURAN,\n mushafId: mushaf,\n };\n logFormSubmission('add_reading', payload);\n setIsSubmitting(true);\n\n try {\n await updateActivityDay(payload);\n // invalidate the current month's history cache to refetch the data if we navigated to it\n const currentMonthHistoryUrl = makeFilterActivityDaysUrl(\n getFilterActivityDaysParamsOfCurrentMonth(),\n );\n cache.delete(currentMonthHistoryUrl);\n mutate(makeStreakUrl());\n // close the modal\n onClose();\n toast(t('add-data-success'), {\n status: ToastStatus.Success,\n });\n } catch (e) {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <>\n \n \n \n \n \n {selectedDate ? (\n
\n \n \n \n

\n {t('history-for', {\n date: dateToReadableFormat(selectedDate, lang, {\n year: 'numeric',\n }),\n })}\n

\n
\n ) : (\n

{t('manually-add')}

\n )}\n
\n
\n {!selectedDate ? (\n <>\n
\n \n \n \n

{selectedMonthObj.name}

\n \n \n \n
\n \n \n ) : (\n \n )}\n
\n \n \n {t('common:cancel')}\n \n \n {isSubmitting ? : t('common:submit')}\n \n \n \n \n );\n};\n\nexport default AddReading;\n","import { useContext } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ReadingHistory.module.scss';\n\nimport DataContext from '@/contexts/DataContext';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\nimport BookIcon from '@/icons/book.svg';\nimport ClockIcon from '@/icons/clock.svg';\nimport RightArrow from '@/icons/east.svg';\nimport { ActivityDay, QuranActivityDay } from '@/types/auth/ActivityDay';\nimport { RangeItemDirection } from '@/types/Range';\nimport { getChapterData } from '@/utils/chapter';\nimport { secondsToReadableFormat } from '@/utils/datetime';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { toLocalizedNumber } from '@/utils/locale';\nimport { getChapterWithStartingVerseUrl } from '@/utils/navigation';\nimport { parseVerseRange } from '@/utils/verseKeys';\n\ninterface ReadingStatsProps {\n activityDay: ActivityDay;\n}\n\nconst ReadingStats: React.FC = ({ activityDay }) => {\n const { t, lang } = useTranslation('reading-progress');\n const chaptersData = useContext(DataContext);\n\n const pages = Number(activityDay.pagesRead.toFixed(1));\n const localizedPages = toLocalizedNumber(pages, lang);\n const verses = activityDay.versesRead;\n const localizedVerses = toLocalizedNumber(verses, lang);\n\n const handleVerseClick = (position: RangeItemDirection, verseKey: string) => {\n return () => {\n logButtonClick(`reading_history_range_${position}`, {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n verse_key: verseKey,\n });\n };\n };\n\n const secondsRead = activityDay.secondsRead + (activityDay.manuallyAddedSeconds || 0);\n\n return (\n
\n
\n

\n \n {t('reading-goal:x-pages', { count: pages, pages: localizedPages })}\n

\n

\n \n {`${localizedVerses} ${t('common:ayahs').toLocaleLowerCase(lang)}`}\n

\n

\n \n {secondsToReadableFormat(secondsRead, t, lang)}\n

\n
\n\n

{t('you-read')}

\n {activityDay.ranges.length > 0 && (\n
    \n {activityDay.ranges.map((range, rangeIdx) => {\n const [\n { chapter: fromChapter, verse: fromVerse, verseKey: rangeFrom },\n { chapter: toChapter, verse: toVerse, verseKey: rangeTo },\n ] = parseVerseRange(range);\n\n const from = `${\n getChapterData(chaptersData, fromChapter).transliteratedName\n } ${toLocalizedNumber(Number(fromVerse), lang)}`;\n\n const to = `${\n getChapterData(chaptersData, toChapter).transliteratedName\n } ${toLocalizedNumber(Number(toVerse), lang)}`;\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n
  • \n \n {from}\n \n \n \n {to}\n \n
  • \n );\n })}\n
\n )}\n
\n );\n};\n\nexport default ReadingStats;\n","import { useMemo } from 'react';\n\nimport ReadingStats from './ReadingStats';\n\nimport Calendar from '@/dls/Calendar';\nimport { QuranActivityDay, ActivityDay } from '@/types/auth/ActivityDay';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ninterface DaysCalendarProps {\n month: { id: number; name: string; daysCount: number };\n year: number;\n days: ActivityDay[];\n selectedDate: string | null;\n setSelectedDate: (date: string | null) => void;\n isLoading?: boolean;\n}\n\nconst DaysCalendar: React.FC = ({\n month,\n year,\n days,\n selectedDate,\n setSelectedDate,\n isLoading,\n}) => {\n const dateToDayMap = useMemo(() => {\n const map: Record> = {};\n\n days.forEach((day) => {\n if (!day.pagesRead && !day.secondsRead && !day.ranges.length) {\n return;\n }\n\n map[day.date as unknown as string] = day;\n });\n\n return map;\n }, [days]);\n\n if (selectedDate) {\n const readingDay = dateToDayMap[selectedDate];\n return ;\n }\n\n const onDayClick = (dayNumber: number, dateString: string) => {\n logButtonClick('reading_history_day', {\n month: month.id,\n year,\n day: dayNumber,\n });\n setSelectedDate(dateString);\n };\n\n return (\n {\n const dayData = dateToDayMap[dateString];\n return !dayData;\n }}\n />\n );\n};\n\nexport default DaysCalendar;\n","import { useRef, useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport DaysCalendar from './DaysCalendar';\nimport styles from './ReadingHistory.module.scss';\n\nimport DataFetcher from '@/components/DataFetcher';\nimport Button, { ButtonSize, ButtonVariant } from '@/dls/Button/Button';\nimport ContentModal from '@/dls/ContentModal/ContentModal';\nimport ContentModalHandles from '@/dls/ContentModal/types/ContentModalHandles';\nimport ArrowLeft from '@/icons/west.svg';\nimport { ActivityDay, QuranActivityDay } from '@/types/auth/ActivityDay';\nimport Pagination from '@/types/auth/Pagination';\nimport { getFilterActivityDaysParams } from '@/utils/activity-day';\nimport { privateFetcher } from '@/utils/auth/api';\nimport { makeFilterActivityDaysUrl } from '@/utils/auth/apiPaths';\nimport { dateToReadableFormat } from '@/utils/datetime';\nimport { toLocalizedNumber } from '@/utils/locale';\n\ninterface MonthModalProps {\n month: { id: number; name: string; daysCount: number };\n year: number;\n onClose: () => void;\n}\n\nconst MonthModal = ({ month, year, onClose }: MonthModalProps) => {\n const contentModalRef = useRef();\n const { t, lang } = useTranslation('reading-progress');\n\n // YYYY-MM-DD\n const [selectedDate, setSelectedDate] = useState();\n\n const params = getFilterActivityDaysParams(month.id, year);\n\n const localizedYear = toLocalizedNumber(year, lang, undefined, {\n useGrouping: false,\n });\n\n const readableDate = selectedDate\n ? dateToReadableFormat(selectedDate, lang, {\n year: 'numeric',\n })\n : `${month.name} ${localizedYear}`;\n\n return (\n \n {selectedDate && (\n setSelectedDate(null)}\n className={styles.backButton}\n >\n \n \n )}\n

{t('history-for', { date: readableDate })}

\n \n }\n >\n
\n (\n \n )}\n fetcher={privateFetcher}\n render={(response) => {\n const data = response as {\n data: ActivityDay[];\n pagination: Pagination;\n };\n const isEmpty = data.data.length === 0;\n\n return (\n <>\n {isEmpty && (\n

\n {t('no-reading-history-for', { date: readableDate })}\n

\n )}\n\n \n \n );\n }}\n />\n
\n \n );\n};\n\nexport default MonthModal;\n","import { useMemo, useState } from 'react';\n\nimport classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport pageStyles from '../ReadingProgressPage.module.scss';\n\nimport AddReading from './AddReading';\nimport MonthModal from './MonthModal';\nimport styles from './ReadingHistory.module.scss';\n\nimport Select from '@/dls/Forms/Select';\nimport SelectionCard from '@/dls/SelectionCard/SelectionCard';\nimport { getMonthsInYear } from '@/utils/datetime';\nimport { logButtonClick, logValueChange } from '@/utils/eventLogger';\nimport { toLocalizedNumber } from '@/utils/locale';\n\nconst ReadingHistory = () => {\n const { t, lang } = useTranslation('reading-progress');\n const [selectedYear, setSelectedYear] = useState(new Date().getFullYear());\n const [selectedMonth, setSelectedMonth] = useState(null);\n\n const availableYears = useMemo(() => {\n const startYear = 2023;\n const currentYear = new Date().getFullYear();\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n return Array.from({ length: currentYear - (startYear - 1) }, (_, i) => i + startYear).map(\n (year) => ({\n label: toLocalizedNumber(year, lang, undefined, { useGrouping: false }),\n value: year.toString(),\n }),\n );\n }, [lang]);\n\n const months = useMemo(() => getMonthsInYear(selectedYear, lang), [selectedYear, lang]);\n\n const selectedMonthObj = useMemo(() => {\n if (!selectedMonth) return null;\n return months.find((month) => month.id === selectedMonth);\n }, [selectedMonth, months]);\n\n const localizedSelectedYear = toLocalizedNumber(selectedYear, lang, undefined, {\n useGrouping: false,\n });\n\n const onMonthClick = (month: number) => {\n logButtonClick('reading_history_month', {\n month,\n year: selectedYear,\n });\n setSelectedMonth(month);\n };\n\n const onYearChange = (newValue: string) => {\n const newYear = Number(newValue);\n logValueChange('reading_history_year', selectedYear, newYear);\n\n setSelectedYear(newYear);\n };\n\n return (\n
\n {!!selectedMonth && (\n setSelectedMonth(null)}\n />\n )}\n\n
\n
\n

{t('history')}

\n \n
\n \n
\n\n
\n {months.map((month) => (\n onMonthClick(month.id)}\n />\n ))}\n
\n
\n );\n};\n\nexport default ReadingHistory;\n","import useTranslation from 'next-translate/useTranslation';\n\nimport DeleteReadingGoalModal from '../ReadingGoal/DeleteReadingGoalModal';\nimport UpdateReadingGoalModal from '../ReadingGoal/UpdateReadingGoalModal';\n\nimport ProgressPageGoalWidget from './ProgressPageGoalWidget';\nimport ProgressPageStreakWidget from './ProgressPageStreakWidget';\nimport ReadingHistory from './ReadingHistory';\nimport styles from './ReadingProgressPage.module.scss';\n\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport PageContainer from '@/components/PageContainer';\nimport useGetStreakWithMetadata from '@/hooks/auth/useGetStreakWithMetadata';\nimport { getLanguageAlternates } from '@/utils/locale';\nimport { getCanonicalUrl, getReadingGoalProgressNavigationUrl } from '@/utils/navigation';\n\nconst ReadingProgressPage = () => {\n const { t, lang } = useTranslation('reading-progress');\n const { error, goal, weekData, streak, currentActivityDay, isLoading } = useGetStreakWithMetadata(\n {\n showDayName: true,\n },\n );\n\n if (error) return null;\n\n return (\n <>\n \n\n \n
\n

{t('reading-progress-header')}

\n\n
\n \n\n \n
\n\n \n\n {goal && (\n
\n

{t('manage-goal')}

\n\n
\n \n \n
\n
\n )}\n
\n
\n \n );\n};\n\nexport default ReadingProgressPage;\n","import { NextPage } from 'next';\n\nimport withAuth from '@/components/Auth/withAuth';\nimport ReadingProgressPage from '@/components/ReadingProgressPage';\nimport { chaptersDataGetStaticProps } from '@/utils/ssg';\n\nconst ReadingGoalProgressPage: NextPage = () => {\n // we don't want to show the reading goal page if the user is not logged in\n return ;\n};\n\nexport const getStaticProps = chaptersDataGetStaticProps;\n\nexport default withAuth(ReadingGoalProgressPage);\n","import { getCurrentMonth, makeDateRangeFromMonth } from './datetime';\n\nimport { ActivityDayType, FilterActivityDaysParams } from '@/types/auth/ActivityDay';\n\nexport const getFilterActivityDaysParamsOfCurrentMonth = (): FilterActivityDaysParams => {\n const currentMonth = getCurrentMonth();\n const currentYear = new Date().getFullYear();\n\n return getFilterActivityDaysParams(currentMonth, currentYear);\n};\n\nexport const getFilterActivityDaysParams = (\n month: number,\n year: number,\n): FilterActivityDaysParams => {\n const { from, to } = makeDateRangeFromMonth(month, year);\n\n const params: FilterActivityDaysParams = {\n from,\n to,\n limit: 31,\n type: ActivityDayType.QURAN,\n };\n\n return params;\n};\n","enum ErrorMessageId {\n InvalidEmail = 'invalid-email',\n RequiredField = 'required-field',\n InvalidField = 'invalid-field',\n MaximumLength = 'maximum-length',\n MinimumLength = 'minimum-length',\n}\n\nexport default ErrorMessageId;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PageContainer_container__1TUET\",\"fullWidth\":\"PageContainer_fullWidth__RU5GM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputContainer\":\"DeleteReadingGoalModal_inputContainer__q_tTh\",\"deleteButton\":\"DeleteReadingGoalModal_deleteButton__qOtwU\",\"confirmationText\":\"DeleteReadingGoalModal_confirmationText__J6qzW\",\"instructionText\":\"DeleteReadingGoalModal_instructionText__DX4Li\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputs\":\"UpdateReadingGoalModal_inputs__4aNJB\",\"inputContainer\":\"UpdateReadingGoalModal_inputContainer__bfVlw\",\"label\":\"UpdateReadingGoalModal_label__mRjWt\",\"deleteButton\":\"UpdateReadingGoalModal_deleteButton__vOPcR\",\"confirmationText\":\"UpdateReadingGoalModal_confirmationText__1W7Gy\",\"instructionText\":\"UpdateReadingGoalModal_instructionText__FOMIM\",\"radioGroup\":\"UpdateReadingGoalModal_radioGroup__d42aG\",\"radioItem\":\"UpdateReadingGoalModal_radioItem__yzmp2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"calendarMonthSelector\":\"AddReading_calendarMonthSelector__qAv4_\",\"verseRangesListContainer\":\"AddReading_verseRangesListContainer__ZqKrQ\",\"selectedDateHeaderContainer\":\"AddReading_selectedDateHeaderContainer__9qG8z\",\"modalHeader\":\"AddReading_modalHeader__xganX\",\"backButton\":\"AddReading_backButton__eUtTg\",\"monthName\":\"AddReading_monthName__3aWdu\",\"durationInputWrapper\":\"AddReading_durationInputWrapper__HWd2e\",\"inputLabelContainer\":\"AddReading_inputLabelContainer__fsVEa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"monthsContainer\":\"ReadingHistory_monthsContainer__rUjN0\",\"titleContainer\":\"ReadingHistory_titleContainer__CqBVc\",\"title\":\"ReadingHistory_title__9owZ5\",\"modalHeader\":\"ReadingHistory_modalHeader__qXNfD\",\"backButton\":\"ReadingHistory_backButton__PJp18\",\"modalContentContainer\":\"ReadingHistory_modalContentContainer__A0BqR\",\"readingDay\":\"ReadingHistory_readingDay__MeeAz\",\"emptyMessage\":\"ReadingHistory_emptyMessage__Mass9\",\"readingInfo\":\"ReadingHistory_readingInfo__RmgAt\",\"readingStats\":\"ReadingHistory_readingStats__4DB5b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"ReadingProgressPage_contentContainer__nnTe3\",\"historySection\":\"ReadingProgressPage_historySection__Bb8aJ\",\"historyContainer\":\"ReadingProgressPage_historyContainer__vn9Z6\",\"manageGoalSection\":\"ReadingProgressPage_manageGoalSection__1ptER\",\"manageGoalContainer\":\"ReadingProgressPage_manageGoalContainer__0VQ7O\",\"widgetsContainer\":\"ReadingProgressPage_widgetsContainer__V2lxf\",\"widget\":\"ReadingProgressPage_widget__TaYZq\",\"streakWidget\":\"ReadingProgressPage_streakWidget__ErwAa\",\"streakContainer\":\"ReadingProgressPage_streakContainer__kZbDX\",\"emptyWidget\":\"ReadingProgressPage_emptyWidget__0LReR\",\"circularProgressbar\":\"ReadingProgressPage_circularProgressbar__vzdpD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"outerContainer\":\"Calendar_outerContainer__2UW63\",\"calendarContainer\":\"Calendar_calendarContainer___vIEz\",\"bordered\":\"Calendar_bordered__Czhnz\",\"disabled\":\"Calendar_disabled__KwaJI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progressbar\":\"CircularProgress_progressbar__pghvG\",\"path\":\"CircularProgress_path__xf93I\",\"trail\":\"CircularProgress_trail__mP8ve\",\"text\":\"CircularProgress_text___0sy_\",\"background\":\"CircularProgress_background__FOs_Q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalContainer\":\"ContentModal_modalContainer__i7bo0\",\"contentContainer\":\"ContentModal_contentContainer___ciX5\",\"overlay\":\"ContentModal_overlay__qZfQY\",\"contentWrapper\":\"ContentModal_contentWrapper__VaiRB\",\"autoHeight\":\"ContentModal_autoHeight__A3IW7\",\"medium\":\"ContentModal_medium__EKB5h\",\"small\":\"ContentModal_small__YBKtM\",\"fadeIn\":\"ContentModal_fadeIn__JGh_A\",\"fadeOut\":\"ContentModal_fadeOut__36m_B\",\"contentIn\":\"ContentModal_contentIn__EAwQw\",\"contentOut\":\"ContentModal_contentOut__2x8WN\",\"closeIcon\":\"ContentModal_closeIcon__xppin\",\"header\":\"ContentModal_header__384F2\",\"content\":\"ContentModal_content__9M2Iy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"DurationInput_label__ID7WK\",\"durationInputContainer\":\"DurationInput_durationInputContainer__HoE1R\",\"disabled\":\"DurationInput_disabled__pkLQB\",\"disabledInput\":\"DurationInput_disabledInput__SoedN\",\"loadingSpinner\":\"DurationInput_loadingSpinner__wiehj\",\"error\":\"DurationInput_error__XxWCj\",\"errorMessage\":\"DurationInput_errorMessage__Jh5Yv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"indicator\":\"Item_indicator__x6BoJ\",\"radioItem\":\"Item_radioItem__DEP6h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioItemContainer\":\"RadioGroup_radioItemContainer__Zpb6v\",\"label\":\"RadioGroup_label__h0v1C\",\"disabled\":\"RadioGroup_disabled__aU243\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Root_container__FbYRt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"questionMarkIconContainer\":\"HelperTooltip_questionMarkIconContainer__i20QV\",\"trigger\":\"HelperTooltip_trigger__1zmSb\",\"content\":\"HelperTooltip_content__NhcCK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SelectionCard_container__3fUza\",\"label\":\"SelectionCard_label__GXY5O\",\"value\":\"SelectionCard_value__VrbTY\",\"iconContainer\":\"SelectionCard_iconContainer__FjKYo\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","_circle","stroke","strokeWidth","strokeLinecap","strokeLinejoin","className","cx","cy","window","__NEXT_P","push","DEFAULT_ERROR_ID","ErrorMessageId","errorId","fieldName","extraParams","values","includes","field","capitalize","children","div","styles","ContentModalSize","isOpen","onClose","onEscapeKeyDown","hasCloseButton","header","innerRef","contentClassName","size","MEDIUM","isFixedHeight","hasHeader","overlayRef","useRef","useRouter","locale","useImperativeHandle","scrollToTop","current","scrollTop","Dialog","open","ref","classNames","SMALL","onPointerDownOutside","currentTarget","isRTLLocale","detail","originalEvent","offsetX","clientWidth","preventDefault","Button","variant","ButtonVariant","shape","ButtonShape","onClick","CloseIcon","indicatorClassName","RadioGroupPrimitive","RadioGroup","items","disabled","Root","map","item","isDisabled","Item","value","id","required","label","htmlFor","RadioRootOrientation","orientation","Vertical","onChange","defaultValue","name","direction","useDirection","dir","aria-label","onValueChange","HoverablePopover","triggerStyles","content","span","QuestionMarkIcon","ChevronRightIcon","useTranslation","useState","isModalVisible","setIsModalVisible","confirmationText","setConfirmationText","useSWRConfig","mutate","toast","useToast","deleteReadingGoalAndClearCache","useCallback","deleteReadingGoal","category","GoalCategory","makeStreakUrl","closeModal","onDeleteConfirmed","logButtonClick","status","ToastStatus","CONFIRMATION_TEXT","canDeleteGoal","toLowerCase","type","ButtonType","Modal","onClickOutside","p","Trans","i18nKey","text","components","strong","Input","fixedWidth","containerClassName","getPages","readingGoal","GoalType","Number","targetAmount","getSeconds","getRange","startVerse","endVerse","parseVerseRange","verseKey","types","key","goal","lang","chaptersData","useContext","DataContext","mushaf","useGetMushaf","dayOptions","useMemo","generateDurationDaysOptions","duration","isContinuous","setIsContinuous","setDuration","setType","pages","setPages","seconds","setSeconds","range","setRange","updateReadingGoalAndClearCache","data","updateReadingGoal","mushafId","resetState","useEffect","onUpdateClicked","amount","logFormSubmission","QuranGoalPeriod","logValueChange","Select","newType","SelectSize","options","typeObject","ReadingGoalInput","rangeStartVerse","rangeEndVerse","onRangeChange","newRange","onPagesChange","onSecondsChange","widthFull","logChange","input","metadata","currentValue","newValue","toString","validateReadingGoalData","getPathDescription","radius","pathRadius","rotation","counterClockwise","VIEWBOX_CENTER_Y","getDashStyle","dashRatio","diameter","Math","PI","gapLength","strokeDasharray","strokeDashoffset","style","path","fillOpacity","defaultProps","background","backgroundPadding","circleRatio","classes","root","trail","maxValue","minValue","initialProps","defaultsDeep","defaults","pathRatio","min","max","getPathRatio","svg","VIEWBOX_HEIGHT","data-test-id","circle","Path","x","y","currentActivityDay","isLoading","percent","isCompleted","progress","isGoalDone","localizedPercent","toLocalizedNumber","Skeleton","href","getReadingGoalNavigationUrl","ReadingGoalAmount","context","ReadingGoalAmountContext","CircularProgressbar","weekData","streak","localizedStreak","widget","h2","days","count","CurrentWeekProgress","Wrapper","commonInputProps","totalSeconds","onTotalSecondsChange","error","hours","setHours","minutes","setMinutes","handleChange","setter","target","newHours","floor","newMinutes","newSeconds","convertNumberToDecimal","commonInputClassName","Spinner","ranges","setRanges","setTotalSeconds","isFetchingSeconds","totalSecondsError","rangeStart","setRangeStart","rangeEnd","setRangeEnd","VerseRangeInput","isValidVerseRange","newRanges","undefined","DurationInput","HelperTooltip","VerseRangesList","allowClearingRanges","month","year","getIsDayDisabled","onDayClick","monthDateString","numberToPaddedString","daysInMonth","getMonthDateObject","getDate","getIsDisabled","day","dateString","Array","from","_","index","button","time","dateTime","setIsOpen","isSubmitting","setIsSubmitting","getCurrentMonth","selectedMonth","setSelectedMonth","selectedDate","setSelectedDate","selectedYear","Date","getFullYear","setTotalSecondsError","months","getMonthsInYear","cache","useSWRImmutable","makeEstimateRangesReadingTimeUrl","estimateRangesReadingTime","isValidating","selectedMonthObj","find","newTotalSeconds","onSubmitClick","payload","currentMonthHistoryUrl","buildTranslatedErrorMessageByErrorId","date","ActivityDayType","updateActivityDay","makeFilterActivityDaysUrl","getFilterActivityDaysParamsOfCurrentMonth","delete","ModalSize","ButtonSize","ArrowLeft","dateToReadableFormat","AddReadingForm","newMonth","ChevronLeft","ChevronRight","Calendar","currentMonth","getCurrentDay","isPrimary","activityDay","pagesRead","toFixed","localizedPages","verses","versesRead","localizedVerses","handleVerseClick","position","verse_key","secondsRead","manuallyAddedSeconds","BookIcon","toLocaleLowerCase","ClockIcon","secondsToReadableFormat","h3","ul","rangeIdx","chapter","verse","getChapterData","fromChapter","transliteratedName","fromVerse","to","toChapter","toVerse","li","Link","getChapterWithStartingVerseUrl","rangeFrom","LinkVariant","RangeItemDirection","RightArrow","rangeTo","dateToDayMap","forEach","readingDay","ReadingStats","dayNumber","contentModalRef","params","getFilterActivityDaysParams","localizedYear","useGrouping","readableDate","ContentModal","DataFetcher","queryKey","loading","DaysCalendar","fetcher","privateFetcher","render","response","isEmpty","setSelectedYear","availableYears","currentYear","startYear","i","localizedSelectedYear","pageStyles","MonthModal","h1","newYear","AddReading","SelectionCard","onMonthClick","useGetStreakWithMetadata","showDayName","NextSeoWrapper","title","url","getCanonicalUrl","getReadingGoalProgressNavigationUrl","languageAlternates","getLanguageAlternates","nofollow","noindex","PageContainer","ProgressPageStreakWidget","ProgressPageGoalWidget","ReadingHistory","DeleteReadingGoalModal","UpdateReadingGoalModal","withAuth","ReadingProgressPage","makeDateRangeFromMonth","limit","module","exports"],"sourceRoot":""}