1 |
- {"version":3,"file":"static/chunks/pages/calendar-3b5c04144946e36a.js","mappings":"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Q,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,GAClB,IAAQ,KAAM,GAAI,EAClB,KAAQ,KAAM,GAAI,GAClB,IAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,EAClB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,EAClB,KAAQ,KAAM,EAAG,GACjB,IAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,IAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,EAClB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,GAClB,IAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,GAClB,KAAQ,KAAM,GAAI,EAClB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,IAAQ,KAAM,EAAG,EACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,GACjB,KAAQ,KAAM,EAAG,EACjB,KAAQ,K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","sources":["webpack://_N_E/./public/icons/chevron-down.svg","webpack://_N_E/./node_modules/next-translate/lib/esm/formatElements.js","webpack://_N_E/./node_modules/next-translate/lib/esm/Trans.js","webpack://_N_E/?5d8a","webpack://_N_E/./src/components/NextSeoWrapper.tsx","webpack://_N_E/./src/components/PageContainer/index.tsx","webpack://_N_E/./src/utils/quranReflect/bodyParser.ts","webpack://_N_E/./src/components/QuranReflect/hooks/useReflectionBodyParser.ts","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.tsx","webpack://_N_E/./node_modules/@umalqura/core/dist/index.esm.js","webpack://_N_E/./public/icons/notification-bell.svg","webpack://_N_E/./src/components/QuranicCalendar/JoinQuranicCalendarButton/index.tsx","webpack://_N_E/./src/components/QuranicCalendar/QuranicCalendarHero/index.tsx","webpack://_N_E/./src/components/QuranReflect/ReflectionText/index.tsx","webpack://_N_E/./src/components/QuranicCalendar/QuranicCalendarWeek/index.tsx","webpack://_N_E/./src/components/QuranicCalendar/QuranicCalendarMonth/index.tsx","webpack://_N_E/./src/pages/calendar/index.tsx","webpack://_N_E/./src/utils/hijri-date.ts","webpack://_N_E/./src/utils/auth/qf/api.ts","webpack://_N_E/./src/utils/auth/qf/apiPaths.ts","webpack://_N_E/./src/utils/quranReflect/navigation.ts","webpack://_N_E/./src/utils/string.ts","webpack://_N_E/./src/components/PageContainer/PageContainer.module.scss","webpack://_N_E/./src/components/QuranReflect/ReflectionText/ReflectionText.module.scss","webpack://_N_E/./src/components/QuranicCalendar/JoinQuranicCalendarButton/JoinQuranicCalendarButton.module.scss","webpack://_N_E/./src/components/QuranicCalendar/QuranicCalendarMonth/QuranicCalendarMonth.module.scss","webpack://_N_E/./src/components/QuranicCalendar/QuranicCalendarWeek/QuranicCalendarWeek.module.scss","webpack://_N_E/./src/components/RamadanActivity/RamadanActivityHero/Hero.module.scss","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.module.scss","webpack://_N_E/./src/pages/calendar/calendar.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 SvgChevronDown = function SvgChevronDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.135 6.158a.5.5 0 0 1 .707-.023L7.5 9.565l3.658-3.43a.5.5 0 0 1 .684.73l-4 3.75a.5.5 0 0 1-.684 0l-4-3.75a.5.5 0 0 1-.023-.707Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgChevronDown;","import React, { cloneElement, Fragment } from 'react';\nvar tagRe = /<(\\w+)>(.*?)<\\/\\1>|<(\\w+)\\/>/;\nvar nlRe = /(?:\\r\\n|\\r|\\n)/g;\nfunction getElements(parts) {\n if (!parts.length)\n return [];\n var _a = parts.slice(0, 4), paired = _a[0], children = _a[1], unpaired = _a[2], after = _a[3];\n return [\n [(paired || unpaired), children || '', after],\n ].concat(getElements(parts.slice(4, parts.length)));\n}\nexport default function formatElements(value, elements) {\n if (elements === void 0) { elements = []; }\n var parts = value.replace(nlRe, '').split(tagRe);\n if (parts.length === 1)\n return value;\n var tree = [];\n var before = parts.shift();\n if (before)\n tree.push(before);\n getElements(parts).forEach(function (_a, realIndex) {\n var key = _a[0], children = _a[1], after = _a[2];\n var element = elements[key] || React.createElement(Fragment, null);\n tree.push(cloneElement(element, { key: realIndex }, children ? formatElements(children, elements) : element.props.children));\n if (after)\n tree.push(after);\n });\n return tree;\n}\n","import { useMemo } from 'react';\nimport useTranslation from './useTranslation';\nimport formatElements from './formatElements';\nexport default function Trans(_a) {\n var i18nKey = _a.i18nKey, values = _a.values, components = _a.components, fallback = _a.fallback, defaultTrans = _a.defaultTrans, ns = _a.ns;\n var _b = useTranslation(ns), t = _b.t, lang = _b.lang;\n var result = useMemo(function () {\n var text = t(i18nKey, values, { fallback: fallback, default: defaultTrans });\n if (!components || components.length === 0)\n return text;\n return formatElements(text, components);\n }, [i18nKey, values, components, lang]);\n return result;\n}\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/calendar\",\n function () {\n return require(\"private-next-pages/calendar/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/calendar\"])\n });\n }\n ","import React from 'react';\n\nimport { NextSeo } from 'next-seo';\n\nimport { SEOProps } from '@/utils/seo';\nimport { truncateString } from '@/utils/string';\n\ninterface Props extends SEOProps {\n url?: string;\n image?: string;\n imageAlt?: string;\n imageWidth?: number;\n imageHeight?: number;\n}\n\nconst NextSeoWrapper: React.FC<Props> = (props) => {\n const { url, image, imageAlt, imageHeight, imageWidth, openGraph, description, ...rest } = props;\n const openGraphParams = {\n ...(openGraph && { openGraph }),\n ...(url && { url }),\n ...(image && {\n images: [{ url: image, width: imageWidth, height: imageHeight, alt: imageAlt }],\n }),\n };\n const params = {\n ...rest,\n ...(description && { description: truncateString(description, 150) }),\n };\n return <NextSeo {...params} openGraph={openGraphParams} />;\n};\n\nexport default NextSeoWrapper;\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<Props> = ({ children }) => {\n return <div className={styles.container}>{children}</div>;\n};\n\nexport default PageContainer;\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable import/prefer-default-export */\nimport { getQuranReflectTagUrl } from './navigation';\n\n/**\n * Wraps hashtags in links: It finds all hashtags starting with # followed\n * by one or more word characters (\\w+). The captured hashtag is then\n * used to create a link.\n *\n * @param {string} tag\n * @param {string} hashtagStyle\n * @returns {string}\n */\nconst tagToLink = (tag: string, hashtagStyle: string): string => {\n const tagWithHashTag = `#${tag}`;\n return `<a target=\"_blank\" href=\"${getQuranReflectTagUrl(\n tagWithHashTag,\n )}\" class=\"${hashtagStyle}\">${tagWithHashTag}</a>`;\n};\n\n/**\n * Replaces URLs in a given text with HTML anchor tags.\n *\n * @param {string} text - The input text containing URLs.\n * @returns {string} The text with URLs replaced by anchor tags.\n */\nconst replaceUrlsWithLinks = (text: string): string => {\n const regex = /(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gi;\n return text.replace(regex, (url) => {\n // Check if URL is already linked\n const surroundingLength = 100; // Number of characters around the URL to check for <a> tag\n const index = text.indexOf(url);\n\n const beforeText = text.slice(Math.max(0, index - surroundingLength), index);\n const afterText = text.slice(index + url.length, index + url.length + surroundingLength);\n\n if (beforeText.includes('<a href=') && afterText.includes('</a>')) {\n // URL is already inside an anchor tag, return as is\n return url;\n }\n\n // Convert URL to a link\n return `<a href='${url}' target='_blank'>${url}</a>`;\n });\n};\n\nexport const parseReflectionBody = (reflectionBody: string, hashtagStyle: string): string => {\n return (\n // 1. Wraps URLs in links: Find all URLs starting with http or https. The captured URL is then used to create a link.\n replaceUrlsWithLinks(reflectionBody)\n // 2. Replaces new lines: match all occurrences of new lines (\\n) and carriage returns (\\r) and replaces them with the <br> tag.\n .replace(/\\r?\\n/g, '<br>')\n // 3. Wraps hashtags in links: Find all hashtags starting with # followed by one or more word characters (\\w+). The captured hashtag is then used to create a link.\n .replace(/#(\\w+)/g, (_, tag) => tagToLink(tag, hashtagStyle))\n );\n};\n","import { useMemo } from 'react';\n\nimport { parseReflectionBody } from '@/utils/quranReflect/bodyParser';\n\n/**\n * A hook to parse the reflection body and replace the hashtags with links.\n *\n * TODO: make all usages of this hook DRY.\n *\n * @param {string} reflectionText\n * @param {string} hashtagStyle\n * @returns {string}\n */\nconst useReflectionBodyParser = (reflectionText: string, hashtagStyle: string): string => {\n const parsedBody = useMemo(\n () => parseReflectionBody(reflectionText, hashtagStyle),\n [hashtagStyle, reflectionText],\n );\n\n return parsedBody;\n};\n\nexport default useReflectionBodyParser;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useEffect, useState } from 'react';\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport classNames from 'classnames';\n\nimport styles from './Collapsible.module.scss';\n\ntype ChildrenRenderProps = {\n isOpen: boolean;\n};\n\ntype Props = {\n title?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n children: ({ isOpen }: ChildrenRenderProps) => React.ReactNode;\n isDefaultOpen?: boolean;\n shouldOpen?: boolean;\n shouldRotatePrefixOnToggle?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n direction?: CollapsibleDirection;\n};\n\nexport enum CollapsibleDirection {\n Left = 'left',\n Right = 'right',\n}\n\nconst Collapsible = ({\n isDefaultOpen = false,\n prefix,\n title,\n suffix,\n children,\n shouldRotatePrefixOnToggle,\n shouldOpen,\n onOpenChange,\n direction = CollapsibleDirection.Left,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n\n useEffect(() => {\n setIsOpen(shouldOpen);\n }, [shouldOpen]);\n\n const onSuffixClicked = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const onHeaderClicked = () => setIsOpen((preValue) => !preValue);\n\n return (\n <CollapsiblePrimitive.Root onOpenChange={onOpenChange} open={isOpen}>\n <CollapsiblePrimitive.Trigger asChild>\n <div className={styles.header} onClick={onHeaderClicked}>\n {direction === CollapsibleDirection.Left ? (\n <>\n <div className={styles.headerLeft}>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n {title}\n </div>\n <div className={styles.suffixContainer} onClick={onSuffixClicked}>\n {suffix}\n </div>\n </>\n ) : (\n <>\n <div className={styles.headerLeft}>{title}</div>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n </>\n )}\n </div>\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.CollapsibleContent>\n {isOpen && children({ isOpen })}\n </CollapsiblePrimitive.CollapsibleContent>\n </CollapsiblePrimitive.Root>\n );\n};\n\nexport default Collapsible;\n","var DateMapping = /** @class */ (function () {\r\n function DateMapping(monthsLengthFlags, gy, gm, gd) {\r\n this.hijriMonthsLengthFlags = monthsLengthFlags;\r\n this.gregorianDate = new Date(gy, gm, gd);\r\n }\r\n return DateMapping;\r\n}());\n\nvar DatePart;\r\n(function (DatePart) {\r\n DatePart[DatePart[\"Year\"] = 0] = \"Year\";\r\n DatePart[DatePart[\"DayOfYear\"] = 1] = \"DayOfYear\";\r\n DatePart[DatePart[\"Month\"] = 2] = \"Month\";\r\n DatePart[DatePart[\"Day\"] = 3] = \"Day\";\r\n})(DatePart || (DatePart = {}));\r\nvar DatePart$1 = DatePart;\n\n// Parts of this file are (c) 2007-2009 Steven Levithan <stevenlevithan.com>\r\n// https://github.com/felixge/node-dateformat/blob/master/lib/dateformat.js\r\nvar token = /d{1,4}|M{1,4}|yy(?:yy)?|([HhmsTt])\\1?|[LlSWN]|\"[^\"]*\"|'[^']*'/g;\r\nfunction pad(val, locale, len) {\r\n val = String(val);\r\n len = len || 2;\r\n while (val.length < len) {\r\n val = '0' + val;\r\n }\r\n return locale.localizeNum(val);\r\n}\r\nfunction format(date, mask, locale, hy, hm, hd, woy, dow) {\r\n mask = String(locale.masks[mask] || mask || locale.masks.default);\r\n var _ = 'get';\r\n var d = hd;\r\n var D = date[_ + 'Day']();\r\n var m = hm;\r\n var y = hy;\r\n var H = date[_ + 'Hours']();\r\n var M = date[_ + 'Minutes']();\r\n var s = date[_ + 'Seconds']();\r\n var L = date[_ + 'Milliseconds']();\r\n var W = woy;\r\n var N = dow;\r\n var flags = {\r\n d: locale.localizeNum(d),\r\n dd: pad(d, locale),\r\n ddd: locale.dayNamesShort[D],\r\n dddd: locale.dayNames[D],\r\n M: locale.localizeNum(m),\r\n MM: pad(m, locale),\r\n MMM: locale.monthNamesShort[m - 1],\r\n MMMM: locale.monthNames[m - 1],\r\n yy: locale.localizeNum(String(y).slice(2)),\r\n yyyy: locale.localizeNum(y),\r\n h: locale.localizeNum(H % 12 || 12),\r\n hh: pad(H % 12 || 12, locale),\r\n H: locale.localizeNum(H),\r\n HH: pad(H, locale),\r\n m: locale.localizeNum(M),\r\n mm: pad(M, locale),\r\n s: locale.localizeNum(s),\r\n ss: pad(s, locale),\r\n l: pad(L, locale, 3),\r\n L: pad(Math.round(L / 10), locale),\r\n t: H < 12 ? locale.timeNames[0] : locale.timeNames[1],\r\n tt: H < 12 ? locale.timeNames[2] : locale.timeNames[3],\r\n T: H < 12 ? locale.timeNames[4] : locale.timeNames[5],\r\n TT: H < 12 ? locale.timeNames[6] : locale.timeNames[7],\r\n S: locale.localizeDayNum(d),\r\n W: locale.localizeNum(W),\r\n N: locale.localizeNum(N),\r\n };\r\n return locale.localizeCommas(mask.replace(token, function (match) { return flags[match]; }));\r\n}\n\nvar symbolMap = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];\r\nvar dayNumMap = ['الأول', 'الثاني', 'الثالث', 'الرابع', 'الخامس', 'السادس', 'السابع', 'الثامن', 'التاسع', 'العاشر', 'الحادي عشر'];\r\nvar ar = {\r\n name: 'ar',\r\n rtl: true,\r\n dayNamesShort: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],\r\n dayNames: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\r\n monthNamesShort: ['محرم', 'صفر', 'ربيع ١', 'ربيع ٢', 'جمادى ١', 'جمادى ٢', 'رجب', 'شعبان', 'رمضان', 'شوال', 'ذو القعدة', 'ذو الحجة'],\r\n monthNames: ['محرم', 'صفر', 'ربيع الأول', 'ربيع الثاني', 'جمادى الأولى', 'جمادى الآخرة', 'رجب', 'شعبان', 'رمضان', 'شوال', 'ذو القعدة', 'ذو الحجة'],\r\n timeNames: ['ص', 'م', 'ص', 'م', 'ص', 'م', 'ص', 'م'],\r\n masks: {\r\n default: 'ddd dd MMM yyyy HH:mm:ss',\r\n shortDate: 'yy/M/d',\r\n mediumDate: 'd MMM, yyyy',\r\n longDate: 'd MMMM, yyyy',\r\n fullDate: 'dddd, d MMMM, yyyy',\r\n shortTime: 'h:mm TT',\r\n mediumTime: 'h:mm:ss TT',\r\n longTime: 'h:mm:ss.l TT',\r\n },\r\n localizeNum: function (num) {\r\n var s = String(num);\r\n var output = '';\r\n for (var i = 0; i < s.length; i++) {\r\n output += symbolMap[s.charAt(i)];\r\n }\r\n return output;\r\n },\r\n localizeDayNum: function (d) {\r\n var output = '';\r\n if (d === 11) {\r\n output = 'الحادي عشر';\r\n }\r\n else if (d === 20) {\r\n output = 'العشرون';\r\n }\r\n else if (d === 30) {\r\n output = 'الثلاثون';\r\n }\r\n else {\r\n output = dayNumMap[d - 1];\r\n }\r\n var section = d / 10;\r\n if (section > 1.1 && section < 2) {\r\n output = dayNumMap[(d - 1) % 10] + ' عشر';\r\n }\r\n else if (section > 2 && section < 3) {\r\n output = dayNumMap[(d - 1) % 10] + ' والعشرون';\r\n }\r\n return output + ' من';\r\n },\r\n localizeCommas: function (v) { return v.replace(/,/g, '،'); },\r\n};\n\nvar en = {\r\n name: 'en',\r\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n monthNamesShort: ['Muh', 'Ṣaf', 'Rab-I', 'Rab-II', 'Jum-I', 'Jum-II', 'Raj', 'Sha', 'Ram', 'Shw', 'Dhū-Q', 'Dhū-Ḥ'],\r\n monthNames: ['Muharram', 'Ṣafar', 'Rabīʿ al-Awwal', 'Rabīʿ ath-Thānī', 'Jumādá al-Ūlá', 'Jumādá al-Ākhirah', 'Rajab', 'Sha‘bān', 'Ramaḍān', 'Shawwāl', 'Dhū al-Qa‘dah', 'Dhū al-Ḥijjah'],\r\n timeNames: ['a', 'p', 'am', 'pm', 'A', 'P', 'AM', 'PM'],\r\n masks: {\r\n default: 'ddd MMM dd yyyy HH:mm:ss',\r\n shortDate: 'M/d/yy',\r\n mediumDate: 'MMM d, yyyy',\r\n longDate: 'MMMM d, yyyy',\r\n fullDate: 'dddd, MMMM d, yyyy',\r\n shortTime: 'h:mm TT',\r\n mediumTime: 'h:mm:ss TT',\r\n longTime: 'h:mm:ss.l TT',\r\n },\r\n localizeNum: function (num) { return String(num); },\r\n // @ts-ignore\r\n localizeDayNum: function (d) { return ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 !== 10) * d % 10]; },\r\n localizeCommas: function (v) { return v; },\r\n};\n\n/// Calendar support range:\r\n/// Calendar Minimum Maximum\r\n/// ========== ========== ==========\r\n/// Gregorian 1900/04/30 2077/11/16\r\n/// UmAlQura 1318/01/01 1500/12/30\r\nvar UmAlQuraStatic = /** @class */ (function () {\r\n function UmAlQuraStatic() {\r\n }\r\n /**\r\n * Coverts the given Hijri date to Gregorian.\r\n * @param hy The Hijri year\r\n * @param hm The Hijri month\r\n * @param hd The Hijri day\r\n */\r\n UmAlQuraStatic.hijriToGregorian = function (hy, hm, hd) {\r\n this._checkYearRange(hy);\r\n this._checkMonthRange(hm);\r\n this._checkDayRange(hd);\r\n var nDays = hd - 1;\r\n var index = hy - this.minCalendarYear;\r\n var dt = this.hijriYearData[index].gregorianDate;\r\n var b = this.hijriYearData[index].hijriMonthsLengthFlags;\r\n for (var m = 1; m < hm; m++) {\r\n nDays = nDays + 29 + (b & 1);\r\n b >>= 1;\r\n }\r\n dt = this.addDays(dt, nDays);\r\n return {\r\n gy: dt.getFullYear(),\r\n gm: dt.getMonth(),\r\n gd: dt.getDate(),\r\n };\r\n };\r\n /**\r\n * Coverts the given Gregorian date to Hijri year, month and day.\r\n * @param date The date to be converted\r\n */\r\n UmAlQuraStatic.gregorianToHijri = function (date) {\r\n this._checkMillsRange(date.getTime());\r\n // Find the index where we should start our search by quessing the Hijri year that we will be in HijriYearInfo.\r\n // A Hijri year is 354 or 355 days. Use 355 days so that we will search from a lower index.\r\n var index = Math.trunc((date.getTime() - this.minDate.getTime()) / this.millisPerDay / 355);\r\n do {\r\n } while (date.getTime() > this.hijriYearData[++index].gregorianDate.getTime());\r\n if (date.getTime() !== this.hijriYearData[index].gregorianDate.getTime()) {\r\n index--;\r\n }\r\n var nDays = this._dayDiff(date, this.hijriYearData[index].gregorianDate);\r\n var yh1 = index + this.minCalendarYear;\r\n var mh1 = 1;\r\n var dh1 = 1;\r\n var b = this.hijriYearData[index].hijriMonthsLengthFlags;\r\n var daysPerThisMonth = 29 + (b & 1);\r\n while (nDays >= daysPerThisMonth) {\r\n nDays -= daysPerThisMonth;\r\n b >>= 1;\r\n daysPerThisMonth = 29 + (b & 1);\r\n mh1++;\r\n }\r\n dh1 += Math.trunc(nDays);\r\n return {\r\n hy: yh1,\r\n hm: mh1,\r\n hd: dh1,\r\n };\r\n };\r\n /**\r\n * Adds the specified amount of Hijri years to the given Gregorian date.\r\n * @param date The date\r\n * @param hys The Hijri years to be added\r\n */\r\n UmAlQuraStatic.addYears = function (date, hys) {\r\n return this.addMonths(date, hys * 12);\r\n };\r\n /**\r\n * Adds the specified amount of Hijri months to the given Gregorian date.\r\n * @param date The date\r\n * @param hms The Hijri months to be added\r\n */\r\n UmAlQuraStatic.addMonths = function (date, hms) {\r\n // Get the date in UmAlQura calendar.\r\n var y = this._getDatePart(date, DatePart$1.Year);\r\n var m = this._getDatePart(date, DatePart$1.Month);\r\n var d = this._getDatePart(date, DatePart$1.Day);\r\n var i = m - 1 + hms;\r\n if (i >= 0) {\r\n m = i % 12 + 1;\r\n y += Math.trunc(i / 12);\r\n }\r\n else {\r\n m = 12 + (i + 1) % 12;\r\n y += Math.trunc((i - 11) / 12);\r\n }\r\n if (d > 29) {\r\n var days = this.getDaysInMonth(y, m);\r\n if (d > days) {\r\n d = days;\r\n }\r\n }\r\n var _a = this.hijriToGregorian(y, m, d), gy = _a.gy, gm = _a.gm, gd = _a.gd;\r\n return this._setTime(new Date(gy, gm, gd), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n };\r\n /**\r\n * Adds the specified amount of weeks to the given Gregorian date.\r\n * @param date The date\r\n * @param wks The weeks to be added\r\n */\r\n UmAlQuraStatic.addWeeks = function (date, wks) {\r\n return this.addDays(date, wks * 7);\r\n };\r\n /**\r\n * Adds the specified amount of days to the given Gregorian date.\r\n * @param date The date\r\n * @param days The days to be added\r\n */\r\n UmAlQuraStatic.addDays = function (date, days) {\r\n var d = new Date(date.valueOf());\r\n d.setDate(d.getDate() + days);\r\n return d;\r\n };\r\n /**\r\n * Adds the specified amount of units to the given Gregorian date.\r\n * @param date The date\r\n * @param value The amount of `unit`s to add\r\n * @param unit The unit of time\r\n */\r\n UmAlQuraStatic.addTime = function (date, value, unit) {\r\n var d = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'hour':\r\n d.setHours(d.getHours() + value);\r\n break;\r\n case 'minute':\r\n d.setMinutes(d.getMinutes() + value);\r\n break;\r\n case 'second':\r\n d.setSeconds(d.getSeconds() + value);\r\n break;\r\n case 'millisecond':\r\n d.setMilliseconds(d.getMilliseconds() + value);\r\n break;\r\n default:\r\n throw new Error('Invalid value for `unit` param');\r\n }\r\n return d;\r\n };\r\n /**\r\n * Returns the Hijri day of year for the specified Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getDayOfYear = function (date) {\r\n return this._getDatePart(date, DatePart$1.DayOfYear);\r\n };\r\n /**\r\n * Returns the Hijri day of month for the specified Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getDayOfMonth = function (date) {\r\n return this._getDatePart(date, DatePart$1.Day);\r\n };\r\n /**\r\n * Returns the day of week for the specified Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getDayOfWeek = function (date) {\r\n return date.getDay();\r\n };\r\n /**\r\n * Returns the Hijri week of year for the specified Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getWeekOfYear = function (date) {\r\n var firstDayOfYear = this.startOf(date, 'year').getDay();\r\n var daysToDayOfWeek = firstDayOfYear - date.getDay();\r\n var d = this.addDays(date, daysToDayOfWeek);\r\n return Math.ceil(this.getDayOfYear(d) / 7);\r\n };\r\n /**\r\n * Returns the number of days in the specified Hijri year.\r\n * @param hy The Hijri year\r\n */\r\n UmAlQuraStatic.getDaysInYear = function (hy) {\r\n this._checkYearRange(hy);\r\n var days = 0;\r\n var b = this.hijriYearData[hy - this.minCalendarYear].hijriMonthsLengthFlags;\r\n for (var m = 1; m <= 12; m++) {\r\n days = days + 29 + (b & 1);\r\n b >>= 1;\r\n }\r\n if (days !== 354 && days !== 355) {\r\n throw new Error('Days in year assert error. This is possibly a bug.');\r\n }\r\n return days;\r\n };\r\n /**\r\n * Returns the number of days in the specified Hijri year and month.\r\n * @param hy The Hijri year\r\n * @param hm The Hijri month\r\n */\r\n UmAlQuraStatic.getDaysInMonth = function (hy, hm) {\r\n this._checkYearRange(hy);\r\n this._checkMonthRange(hm);\r\n if ((this.hijriYearData[hy - this.minCalendarYear].hijriMonthsLengthFlags & (1 << hm - 1)) === 0) {\r\n return 29;\r\n }\r\n else {\r\n return 30;\r\n }\r\n };\r\n /**\r\n * Returns the Hijri year corresponding to the given Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getYear = function (date) {\r\n return this._getDatePart(date, DatePart$1.Year);\r\n };\r\n /**\r\n * Returns the Hijri month corresponding to the given Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getMonth = function (date) {\r\n return this._getDatePart(date, DatePart$1.Month);\r\n };\r\n /**\r\n * Returns the Hijri month array for the given Gregorian date.\r\n * @param date The date\r\n */\r\n UmAlQuraStatic.getMonthArray = function (date) {\r\n var weeks = [];\r\n var month = this.getMonth(date);\r\n var start = this.startOf(this.startOf(date, 'month'), 'week');\r\n var end = this.endOf(this.endOf(date, 'month'), 'week');\r\n var i = 0;\r\n while (start < end) {\r\n var w = Math.floor(i / 7);\r\n var day = new Date(start.valueOf());\r\n weeks[w] = weeks[w] || [];\r\n weeks[w].push(this.getMonth(day) === month ? day : null);\r\n start.setDate(start.getDate() + 1);\r\n i++;\r\n }\r\n return weeks;\r\n };\r\n /**\r\n * Returns the Gregorian date corresponding to the Hijri date starting at the specified unit of time.\r\n * @param date: The date\r\n * @param unit: The unit of time\r\n */\r\n UmAlQuraStatic.startOf = function (date, unit) {\r\n var d = new Date(date);\r\n var _a = this.gregorianToHijri(d), hy = _a.hy, hm = _a.hm;\r\n switch (unit) {\r\n case 'year':\r\n return this.toDate(hy, 1, 1, 0, 0, 0, 0);\r\n case 'month':\r\n return this.toDate(hy, hm, 1, 0, 0, 0, 0);\r\n case 'week':\r\n var dow = this.getDayOfWeek(d);\r\n d = this.addDays(d, -dow);\r\n case 'day':\r\n d.setHours(0);\r\n case 'hour':\r\n d.setMinutes(0);\r\n case 'minute':\r\n d.setSeconds(0);\r\n case 'second':\r\n d.setMilliseconds(0);\r\n break;\r\n default:\r\n throw new Error('Invalid value for `unit` param');\r\n }\r\n return d;\r\n };\r\n /**\r\n * Returns the Gregorian date corresponding to the Hijri date ending at the specified unit of time.\r\n * @param date: The date\r\n * @param unit: The unit of time\r\n */\r\n UmAlQuraStatic.endOf = function (date, unit) {\r\n var d = new Date(date);\r\n var _a = this.gregorianToHijri(d), hy = _a.hy, hm = _a.hm;\r\n var daysInMonth;\r\n switch (unit) {\r\n case 'year':\r\n daysInMonth = this.getDaysInMonth(hy, 12);\r\n return this.toDate(hy, 12, daysInMonth, 23, 59, 59, 999);\r\n case 'month':\r\n daysInMonth = this.getDaysInMonth(hy, hm);\r\n return this.toDate(hy, hm, daysInMonth, 23, 59, 59, 999);\r\n case 'week':\r\n var dow = this.getDayOfWeek(d);\r\n d = this.addDays(d, 6 - dow);\r\n case 'day':\r\n d.setHours(23);\r\n case 'hour':\r\n d.setMinutes(59);\r\n case 'minute':\r\n d.setSeconds(59);\r\n case 'second':\r\n d.setMilliseconds(999);\r\n break;\r\n default:\r\n throw new Error('Invalid value for `unit` param');\r\n }\r\n return d;\r\n };\r\n /**\r\n * Returns whether or not the given Hijri year is a leap year.\r\n * A Hijri leap year is where the number of days in that year is 355.\r\n * @param hy The Hijri year\r\n */\r\n UmAlQuraStatic.isLeapYear = function (hy) {\r\n return this.getDaysInYear(hy) === 355;\r\n };\r\n /**\r\n * Converts the specified Hijri date time to a Gregorian Date instance.\r\n * @param hy The Hijri year\r\n * @param hm The Hijri month\r\n * @param hd The Hijri day\r\n * @param hour The Hour component\r\n * @param minute The Minute component\r\n * @param second The Second component\r\n * @param millisecond The Millisecond component\r\n */\r\n UmAlQuraStatic.toDate = function (hy, hm, hd, hour, minute, second, millisecond) {\r\n if (hour === void 0) { hour = 0; }\r\n if (minute === void 0) { minute = 0; }\r\n if (second === void 0) { second = 0; }\r\n if (millisecond === void 0) { millisecond = 0; }\r\n var daysInMonth = this.getDaysInMonth(hy, hm);\r\n if (hd < 1 || hd > daysInMonth) {\r\n throw new Error(\"Invalid value for day for the given year/month. Day must be between 1 and \" + daysInMonth + \".\");\r\n }\r\n if (hour < 0 || hour >= 24 || minute < 0 || minute >= 60 || second < 0 || second >= 60 || millisecond < 0 || millisecond >= this.millisPerSecond) {\r\n throw new Error('Invalid value for hour, minute, second or millisecond.');\r\n }\r\n var _a = this.hijriToGregorian(hy, hm, hd), gy = _a.gy, gm = _a.gm, gd = _a.gd;\r\n return this._setTime(new Date(gy, gm, gd), hour, minute, second, millisecond);\r\n };\r\n /**\r\n * Formats the specified Gregorian Date instance in Hijri date.\r\n * @param date The date\r\n * @param mask The format mask\r\n * @param locale The locale to use. If omitted, uses the globally set locale or the default locale.\r\n */\r\n UmAlQuraStatic.format = function (date, mask, locale) {\r\n var _a = this.gregorianToHijri(date), hy = _a.hy, hm = _a.hm, hd = _a.hd;\r\n return format(date, mask, locale ? this._loadLocale(locale) : this.locale, hy, hm, hd, this.getWeekOfYear(date), this.getDayOfWeek(date));\r\n };\r\n /**\r\n * Sets global locale to be used for formatting.\r\n * @param locale The locale\r\n */\r\n UmAlQuraStatic.setLocale = function (locale) {\r\n this.locale = this._loadLocale(locale);\r\n };\r\n /**\r\n * Registers the specified locale.\r\n * @param locale The locale\r\n */\r\n UmAlQuraStatic.registerLocale = function (locale) {\r\n if (!locale.name) {\r\n throw new Error(\"The locale's 'name' property must not be empty.\");\r\n }\r\n if (this.locales[locale.name]) {\r\n throw new Error(\"A locale with the same name '\" + locale.name + \"' is already registered.\");\r\n }\r\n this.locales[locale.name] = locale;\r\n };\r\n UmAlQuraStatic._loadLocale = function (locale) {\r\n if (this.locales[locale]) {\r\n return this.locales[locale];\r\n }\r\n console.warn(\"The requested locale '\" + locale + \"' could not be found. Using the default locale instead.\");\r\n return en;\r\n };\r\n UmAlQuraStatic._getDatePart = function (date, part) {\r\n var _a = this.gregorianToHijri(date), hy = _a.hy, hm = _a.hm, hd = _a.hd;\r\n switch (part) {\r\n case DatePart$1.Year:\r\n return hy;\r\n case DatePart$1.Month:\r\n return hm;\r\n case DatePart$1.Day:\r\n return hd;\r\n case DatePart$1.DayOfYear:\r\n return Math.trunc(this._getAbsoluteDateUmAlQura(hy, hm, hd) - this._getAbsoluteDateUmAlQura(hy, 1, 1) + 1);\r\n }\r\n };\r\n UmAlQuraStatic._setTime = function (date, hour, minute, second, millisecond) {\r\n date.setHours(hour);\r\n date.setMinutes(minute);\r\n date.setSeconds(second);\r\n date.setMilliseconds(millisecond);\r\n return date;\r\n };\r\n UmAlQuraStatic._getAbsoluteDateUmAlQura = function (hy, hm, hd) {\r\n var _a = this.hijriToGregorian(hy, hm, hd), gy = _a.gy, gm = _a.gm, gd = _a.gd;\r\n return new Date(gy, gm, gd).getTime() / this.millisPerDay;\r\n };\r\n UmAlQuraStatic._checkYearRange = function (hy) {\r\n if (hy < this.minCalendarYear || hy > this.maxCalendarYear) {\r\n throw new Error(\"Invalid value for year. Must be between \" + this.minCalendarYear + \" and \" + this.maxCalendarYear + \".\");\r\n }\r\n };\r\n UmAlQuraStatic._checkMonthRange = function (hm) {\r\n if (hm < 1 || hm > 12) {\r\n throw new Error(\"Invalid value for month. Must be between 1 and 12.\");\r\n }\r\n };\r\n UmAlQuraStatic._checkDayRange = function (day) {\r\n if (day < 1 || day > 30) {\r\n throw new Error(\"Invalid value for day. Must be between 1 and 30.\");\r\n }\r\n };\r\n UmAlQuraStatic._checkMillsRange = function (millis) {\r\n if (millis < this.minDate.getTime() || millis > this.maxDate.getTime()) {\r\n throw new Error(\"Invalid value for epoch. Must be between \" + this.minDate.getTime() + \" and \" + this.maxDate.getTime() + \".\");\r\n }\r\n };\r\n UmAlQuraStatic._dayDiff = function (date, other) {\r\n return (date.getTime() - other.getTime()) / (1000 * 60 * 60 * 24);\r\n };\r\n UmAlQuraStatic._initDateMapping = function () {\r\n var rawData = [\r\n // This data is auto generated from the .net BCL which seemed the most accurate\r\n // Other source which have been found having abnormalities include:\r\n // http://www.staff.science.uu.nl/~gent0113/islam/addfiles/islamcalendar_dat.js - Has 28 days in one of the month which is impossible\r\n // http://www.ummulqura.org.sa/ - Has several inaccurate dates\r\n // Generated by /personal-proj/umalqura/data-gen\r\n /* DaysPerM GY GM GD D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12\r\n 1318*/ 0x02EA, 1900, 4, 30,\r\n 0x06E9, 1901, 4, 19,\r\n 0x0ED2, 1902, 4, 9,\r\n 0x0EA4, 1903, 3, 30,\r\n 0x0D4A, 1904, 3, 18,\r\n 0x0A96, 1905, 3, 7,\r\n 0x0536, 1906, 2, 24,\r\n 0x0AB5, 1907, 2, 13,\r\n 0x0DAA, 1908, 2, 3,\r\n 0x0BA4, 1909, 1, 23,\r\n 0x0B49, 1910, 1, 12,\r\n 0x0A93, 1911, 1, 1,\r\n 0x052B, 1911, 12, 21,\r\n 0x0A57, 1912, 12, 9,\r\n 0x04B6, 1913, 11, 29,\r\n 0x0AB5, 1914, 11, 18,\r\n 0x05AA, 1915, 11, 8,\r\n 0x0D55, 1916, 10, 27,\r\n 0x0D2A, 1917, 10, 17,\r\n 0x0A56, 1918, 10, 6,\r\n 0x04AE, 1919, 9, 25,\r\n 0x095D, 1920, 9, 13,\r\n 0x02EC, 1921, 9, 3,\r\n 0x06D5, 1922, 8, 23,\r\n 0x06AA, 1923, 8, 13,\r\n 0x0555, 1924, 8, 1,\r\n 0x04AB, 1925, 7, 21,\r\n 0x095B, 1926, 7, 10,\r\n 0x02BA, 1927, 6, 30,\r\n 0x0575, 1928, 6, 18,\r\n 0x0BB2, 1929, 6, 8,\r\n 0x0764, 1930, 5, 29,\r\n 0x0749, 1931, 5, 18,\r\n 0x0655, 1932, 5, 6,\r\n 0x02AB, 1933, 4, 25,\r\n 0x055B, 1934, 4, 14,\r\n 0x0ADA, 1935, 4, 4,\r\n 0x06D4, 1936, 3, 24,\r\n 0x0EC9, 1937, 3, 13,\r\n 0x0D92, 1938, 3, 3,\r\n 0x0D25, 1939, 2, 20,\r\n 0x0A4D, 1940, 2, 9,\r\n 0x02AD, 1941, 1, 28,\r\n 0x056D, 1942, 1, 17,\r\n 0x0B6A, 1943, 1, 7,\r\n 0x0B52, 1943, 12, 28,\r\n 0x0AA5, 1944, 12, 16,\r\n 0x0A4B, 1945, 12, 5,\r\n 0x0497, 1946, 11, 24,\r\n 0x0937, 1947, 11, 13,\r\n 0x02B6, 1948, 11, 2,\r\n 0x0575, 1949, 10, 22,\r\n 0x0D6A, 1950, 10, 12,\r\n 0x0D52, 1951, 10, 2,\r\n 0x0A96, 1952, 9, 20,\r\n 0x092D, 1953, 9, 9,\r\n 0x025D, 1954, 8, 29,\r\n 0x04DD, 1955, 8, 18,\r\n 0x0ADA, 1956, 8, 7,\r\n 0x05D4, 1957, 7, 28,\r\n 0x0DA9, 1958, 7, 17,\r\n 0x0D52, 1959, 7, 7,\r\n 0x0AAA, 1960, 6, 25,\r\n 0x04D6, 1961, 6, 14,\r\n 0x09B6, 1962, 6, 3,\r\n 0x0374, 1963, 5, 24,\r\n 0x0769, 1964, 5, 12,\r\n 0x0752, 1965, 5, 2,\r\n 0x06A5, 1966, 4, 21,\r\n 0x054B, 1967, 4, 10,\r\n 0x0AAB, 1968, 3, 29,\r\n 0x055A, 1969, 3, 19,\r\n 0x0AD5, 1970, 3, 8,\r\n 0x0DD2, 1971, 2, 26,\r\n 0x0DA4, 1972, 2, 16,\r\n 0x0D49, 1973, 2, 4,\r\n 0x0A95, 1974, 1, 24,\r\n 0x052D, 1975, 1, 13,\r\n 0x0A5D, 1976, 1, 2,\r\n 0x055A, 1976, 12, 22,\r\n 0x0AD5, 1977, 12, 11,\r\n 0x06AA, 1978, 12, 1,\r\n 0x0695, 1979, 11, 20,\r\n 0x052B, 1980, 11, 8,\r\n 0x0A57, 1981, 10, 28,\r\n 0x04AE, 1982, 10, 18,\r\n 0x0976, 1983, 10, 7,\r\n 0x056C, 1984, 9, 26,\r\n 0x0B55, 1985, 9, 15,\r\n 0x0AAA, 1986, 9, 5,\r\n 0x0A55, 1987, 8, 25,\r\n 0x04AD, 1988, 8, 13,\r\n 0x095D, 1989, 8, 2,\r\n 0x02DA, 1990, 7, 23,\r\n 0x05D9, 1991, 7, 12,\r\n 0x0DB2, 1992, 7, 1,\r\n 0x0BA4, 1993, 6, 21,\r\n 0x0B4A, 1994, 6, 10,\r\n 0x0A55, 1995, 5, 30,\r\n 0x02B5, 1996, 5, 18,\r\n 0x0575, 1997, 5, 7,\r\n 0x0B6A, 1998, 4, 27,\r\n 0x0BD2, 1999, 4, 17,\r\n 0x0BC4, 2000, 4, 6,\r\n 0x0B89, 2001, 3, 26,\r\n 0x0A95, 2002, 3, 15,\r\n 0x052D, 2003, 3, 4,\r\n 0x05AD, 2004, 2, 21,\r\n 0x0B6A, 2005, 2, 10,\r\n 0x06D4, 2006, 1, 31,\r\n 0x0DC9, 2007, 1, 20,\r\n 0x0D92, 2008, 1, 10,\r\n 0x0AA6, 2008, 12, 29,\r\n 0x0956, 2009, 12, 18,\r\n 0x02AE, 2010, 12, 7,\r\n 0x056D, 2011, 11, 26,\r\n 0x036A, 2012, 11, 15,\r\n 0x0B55, 2013, 11, 4,\r\n 0x0AAA, 2014, 10, 25,\r\n 0x094D, 2015, 10, 14,\r\n 0x049D, 2016, 10, 2,\r\n 0x095D, 2017, 9, 21,\r\n 0x02BA, 2018, 9, 11,\r\n 0x05B5, 2019, 8, 31,\r\n 0x05AA, 2020, 8, 20,\r\n 0x0D55, 2021, 8, 9,\r\n 0x0A9A, 2022, 7, 30,\r\n 0x092E, 2023, 7, 19,\r\n 0x026E, 2024, 7, 7,\r\n 0x055D, 2025, 6, 26,\r\n 0x0ADA, 2026, 6, 16,\r\n 0x06D4, 2027, 6, 6,\r\n 0x06A5, 2028, 5, 25,\r\n 0x054B, 2029, 5, 14,\r\n 0x0A97, 2030, 5, 3,\r\n 0x054E, 2031, 4, 23,\r\n 0x0AAE, 2032, 4, 11,\r\n 0x05AC, 2033, 4, 1,\r\n 0x0BA9, 2034, 3, 21,\r\n 0x0D92, 2035, 3, 11,\r\n 0x0B25, 2036, 2, 28,\r\n 0x064B, 2037, 2, 16,\r\n 0x0CAB, 2038, 2, 5,\r\n 0x055A, 2039, 1, 26,\r\n 0x0B55, 2040, 1, 15,\r\n 0x06D2, 2041, 1, 4,\r\n 0x0EA5, 2041, 12, 24,\r\n 0x0E4A, 2042, 12, 14,\r\n 0x0A95, 2043, 12, 3,\r\n 0x052D, 2044, 11, 21,\r\n 0x0AAD, 2045, 11, 10,\r\n 0x036C, 2046, 10, 31,\r\n 0x0759, 2047, 10, 20,\r\n 0x06D2, 2048, 10, 9,\r\n 0x0695, 2049, 9, 28,\r\n 0x052D, 2050, 9, 17,\r\n 0x0A5B, 2051, 9, 6,\r\n 0x04BA, 2052, 8, 26,\r\n 0x09BA, 2053, 8, 15,\r\n 0x03B4, 2054, 8, 5,\r\n 0x0B69, 2055, 7, 25,\r\n 0x0B52, 2056, 7, 14,\r\n 0x0AA6, 2057, 7, 3,\r\n 0x04B6, 2058, 6, 22,\r\n 0x096D, 2059, 6, 11,\r\n 0x02EC, 2060, 5, 31,\r\n 0x06D9, 2061, 5, 20,\r\n 0x0EB2, 2062, 5, 10,\r\n 0x0D54, 2063, 4, 30,\r\n 0x0D2A, 2064, 4, 18,\r\n 0x0A56, 2065, 4, 7,\r\n 0x04AE, 2066, 3, 27,\r\n 0x096D, 2067, 3, 16,\r\n 0x0D6A, 2068, 3, 5,\r\n 0x0B54, 2069, 2, 23,\r\n 0x0B29, 2070, 2, 12,\r\n 0x0A93, 2071, 2, 1,\r\n 0x052B, 2072, 1, 21,\r\n 0x0A57, 2073, 1, 9,\r\n 0x0536, 2073, 12, 30,\r\n 0x0AB5, 2074, 12, 19,\r\n 0x06AA, 2075, 12, 9,\r\n 0x0E93, 2076, 11, 27,\r\n 0, 2077, 11, 17 /* 0 0 0 0 0 0 0 0 0 0 0 0 2077-11-17*/\r\n ];\r\n var mapping = [];\r\n for (var i = 0; i < rawData.length / 4; i++) {\r\n mapping.push(new DateMapping(rawData[i * 4], rawData[i * 4 + 1], rawData[i * 4 + 2] - 1, rawData[i * 4 + 3]));\r\n }\r\n return mapping;\r\n };\r\n // private static readonly maxSeconds = 9223372036854775807 / 10000000;\r\n // private static readonly minSeconds = -9223372036854775807 / 10000000;\r\n UmAlQuraStatic.millisPerSecond = 1000;\r\n UmAlQuraStatic.millisPerMinute = UmAlQuraStatic.millisPerSecond * 60;\r\n UmAlQuraStatic.millisPerHour = UmAlQuraStatic.millisPerMinute * 60;\r\n UmAlQuraStatic.millisPerDay = UmAlQuraStatic.millisPerHour * 24;\r\n UmAlQuraStatic.minDate = new Date(1900, 3, 30);\r\n UmAlQuraStatic.maxDate = new Date(2077, 10, 16, 23, 59, 59, 999);\r\n UmAlQuraStatic.hijriYearData = UmAlQuraStatic._initDateMapping();\r\n // Holds globally set locale\r\n UmAlQuraStatic.locale = en;\r\n // Holds registered locales\r\n UmAlQuraStatic.locales = {};\r\n UmAlQuraStatic.minCalendarYear = 1318;\r\n UmAlQuraStatic.maxCalendarYear = 1500;\r\n return UmAlQuraStatic;\r\n}());\r\n// Register both locales so they'll be bundled in the package.\r\n// This is fine since for this library, there will probably be\r\n// only be these two locales.\r\nUmAlQuraStatic.registerLocale(ar);\r\nUmAlQuraStatic.registerLocale(en);\n\nvar UmAlQura = /** @class */ (function () {\r\n function UmAlQura(dateOrHy, hm, hd, hour, minute, second, millisecond) {\r\n if (hour === void 0) { hour = 0; }\r\n if (minute === void 0) { minute = 0; }\r\n if (second === void 0) { second = 0; }\r\n if (millisecond === void 0) { millisecond = 0; }\r\n this._date = new Date(0, 0, 0);\r\n this._hy = 0;\r\n this._hm = 0;\r\n this._hd = 0;\r\n if (dateOrHy instanceof Date) {\r\n this._setDate(dateOrHy);\r\n }\r\n else if (dateOrHy !== undefined && hm !== undefined && hd !== undefined) {\r\n var _a = UmAlQuraStatic.hijriToGregorian(dateOrHy, hm, hd), gy = _a.gy, gm = _a.gm, gd = _a.gd;\r\n this._setDate(new Date(gy, gm, gd, hour, minute, second, millisecond));\r\n }\r\n else {\r\n this._setDate(new Date());\r\n }\r\n }\r\n Object.defineProperty(UmAlQura.prototype, \"date\", {\r\n /**\r\n * Returns the `Date` object of this instance.\r\n */\r\n get: function () { return new Date(this._date.valueOf()); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"hy\", {\r\n /**\r\n * Returns the Hijri year of this instance.\r\n */\r\n get: function () { return this._hy; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"hm\", {\r\n /**\r\n * Returns the Hijri month of this instance.\r\n */\r\n get: function () { return this._hm; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"hd\", {\r\n /**\r\n * Returns the Hijri day of month of this instance.\r\n */\r\n get: function () { return this._hd; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"dayOfYear\", {\r\n /**\r\n * Returns the Hijri day of year of this instance.\r\n */\r\n get: function () { return UmAlQuraStatic.getDayOfYear(this.date); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"dayOfWeek\", {\r\n /**\r\n * Returns the day of week of this instance.\r\n */\r\n get: function () { return UmAlQuraStatic.getDayOfWeek(this.date); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"weekOfYear\", {\r\n /**\r\n * Returns the Hijri week of year of this instance.\r\n */\r\n get: function () { return UmAlQuraStatic.getWeekOfYear(this.date); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"daysInYear\", {\r\n /**\r\n * Returns the number of days in year of this instance.\r\n */\r\n get: function () { return UmAlQuraStatic.getDaysInYear(this.hy); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"daysInMonth\", {\r\n /**\r\n * Returns the number of days in month of this instance.\r\n */\r\n get: function () { return UmAlQuraStatic.getDaysInMonth(this.hy, this.hm); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"isLeapYear\", {\r\n /**\r\n * Returns whether or not the Hijri year of this instance is a leap year.\r\n */\r\n get: function () { return UmAlQuraStatic.isLeapYear(this.hy); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(UmAlQura.prototype, \"monthArray\", {\r\n /**\r\n * Returns the Hijri month array of this instance.\r\n */\r\n get: function () {\r\n return UmAlQuraStatic.getMonthArray(this.date)\r\n .map(function (w) { return w.map(function (d) { return d ? new UmAlQura(d) : null; }); });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds the specified amount of `unit` to the current date and returns a new instance.\r\n * @param {number} value The amount of units to be added\r\n * @param {UnitOfTimeMs} unit The unit of time\r\n */\r\n UmAlQura.prototype.add = function (value, unit) {\r\n switch (unit) {\r\n case 'year':\r\n return new UmAlQura(UmAlQuraStatic.addYears(this.date, value));\r\n case 'month':\r\n return new UmAlQura(UmAlQuraStatic.addMonths(this.date, value));\r\n case 'week':\r\n return new UmAlQura(UmAlQuraStatic.addWeeks(this.date, value));\r\n case 'day':\r\n return new UmAlQura(UmAlQuraStatic.addDays(this.date, value));\r\n case 'hour':\r\n case 'minute':\r\n case 'second':\r\n case 'millisecond':\r\n return new UmAlQura(UmAlQuraStatic.addTime(this.date, value, unit));\r\n default:\r\n throw new Error('Invalid value for `unit`');\r\n }\r\n };\r\n /**\r\n * Subtracts the specified amount of `unit` from the current date and returns a new instance.\r\n * @param {number} value The amount of units to be subtracted\r\n * @param {UnitOfTimeMs} unit The unit of time\r\n */\r\n UmAlQura.prototype.subtract = function (value, unit) {\r\n return this.add(value * -1, unit);\r\n };\r\n /**\r\n * Returns a new instance having the Hijri date of this instance starting at the specified unit of time.\r\n * @param {UnitOfTime} unit The unit of time\r\n */\r\n UmAlQura.prototype.startOf = function (unit) {\r\n return new UmAlQura(UmAlQuraStatic.startOf(this.date, unit));\r\n };\r\n /**\r\n * Returns a new instance having the Hijri date of this instance ending at the specified unit of time.\r\n * @param {UnitOfTime} unit The unit of time\r\n */\r\n UmAlQura.prototype.endOf = function (unit) {\r\n return new UmAlQura(UmAlQuraStatic.endOf(this.date, unit));\r\n };\r\n /**\r\n * Checks if current date is before the specified date. The comparison is made based on milliseconds of both\r\n * times. This can be changed by specifying a value for the `unit` parameter.\r\n * @param {(UmAlQura | Date)} other The date to compare against\r\n * @param {UnitOfTimeMs} [unit='millisecond'] The unit of time\r\n */\r\n UmAlQura.prototype.isBefore = function (other, unit) {\r\n if (unit === void 0) { unit = 'millisecond'; }\r\n var thisDate = this.date;\r\n var thatDate = other instanceof Date ? other : other.date;\r\n if (unit === 'millisecond') {\r\n return thisDate.valueOf() < thatDate.valueOf();\r\n }\r\n else {\r\n return this.endOf(unit).date.valueOf() < thatDate.valueOf();\r\n }\r\n };\r\n /**\r\n * Checks if current date is after the specified date. The comparison is made based on milliseconds,\r\n * this can be changed by specifying a value for the `unit` parameter.\r\n * @param {(UmAlQura | Date)} other The date to compare against\r\n * @param {UnitOfTimeMs} [unit='millisecond'] The unit of time\r\n */\r\n UmAlQura.prototype.isAfter = function (other, unit) {\r\n if (unit === void 0) { unit = 'millisecond'; }\r\n var thisDate = this.date;\r\n var thatDate = other instanceof Date ? other : other.date;\r\n if (unit === 'millisecond') {\r\n return thisDate.valueOf() > thatDate.valueOf();\r\n }\r\n else {\r\n return this.startOf(unit).date.valueOf() > thatDate.valueOf();\r\n }\r\n };\r\n /**\r\n * Checks if current date is same as the specified date. The comparison is made based on milliseconds,\r\n * this can be changed by specifying a value for the `unit` parameter.\r\n * @param {(UmAlQura | Date)} other The date to compare against\r\n * @param {UnitOfTimeMs} [unit='millisecond'] The unit of time\r\n */\r\n UmAlQura.prototype.isSame = function (other, unit) {\r\n if (unit === void 0) { unit = 'millisecond'; }\r\n var thisDate = this.date;\r\n var thatDate = other instanceof Date ? other : other.date;\r\n if (unit === 'millisecond') {\r\n return thisDate.valueOf() === thatDate.valueOf();\r\n }\r\n else {\r\n return this.startOf(unit).date.valueOf() === new UmAlQura(thatDate).startOf(unit).date.valueOf();\r\n }\r\n };\r\n /**\r\n * Checks if current date is same as or before the specified date. The comparison is made based on milliseconds,\r\n * this can be changed by specifying a value for the `unit` parameter.\r\n * @param {(UmAlQura | Date)} other The date to compare against\r\n * @param {UnitOfTimeMs} [unit='millisecond'] The unit of time\r\n */\r\n UmAlQura.prototype.isSameOrBefore = function (other, unit) {\r\n if (unit === void 0) { unit = 'millisecond'; }\r\n return this.isSame(other, unit) || this.isBefore(other, unit);\r\n };\r\n /**\r\n * Checks if current date is same as or after the specified date. The comparison is made based on milliseconds,\r\n * this can be changed by specifying a value for the `unit` parameter.\r\n * @param {(UmAlQura | Date)} other The date to compare against\r\n * @param {UnitOfTimeMs} [unit='millisecond'] The unit of time\r\n */\r\n UmAlQura.prototype.isSameOrAfter = function (other, unit) {\r\n if (unit === void 0) { unit = 'millisecond'; }\r\n return this.isSame(other, unit) || this.isAfter(other, unit);\r\n };\r\n /**\r\n * Checks if current date is between the specified `from`/`to` dates. The comparison is made based on milliseconds,\r\n * this can be changed by specifying a value for the `unit` parameter. The comparison is exclusive of both ends by default,\r\n * this can be controller by `fromInclusive`/`toInclusive` parameters.\r\n * @param {(UmAlQura | Date)} from The lower bound date\r\n * @param {(UmAlQura | Date)} to The higher bound date\r\n * @param {boolean} [fromInclusive=false] Whether lower bound is inclusive, defaults to false.\r\n * @param {boolean} [toInclusive=false] Whether upper bound is inclusive, defaults to false.\r\n * @param {UnitOfTimeMs} [unit='millisecond'] The unit of time\r\n */\r\n UmAlQura.prototype.isBetween = function (from, to, fromInclusive, toInclusive, unit) {\r\n if (fromInclusive === void 0) { fromInclusive = false; }\r\n if (toInclusive === void 0) { toInclusive = false; }\r\n if (unit === void 0) { unit = 'millisecond'; }\r\n return (fromInclusive ? this.isSameOrAfter(from, unit) : this.isAfter(from, unit)) &&\r\n (toInclusive ? this.isSameOrBefore(to, unit) : this.isBefore(to, unit));\r\n };\r\n /**\r\n * Formats this instance in Hijri date.\r\n * @param {string} mask The mask\r\n * @param {string} locale The locale to use. If omitted, uses the locale set via `locale` or the default locale.\r\n */\r\n UmAlQura.prototype.format = function (mask, locale) {\r\n // tslint:disable-next-line:no-string-literal\r\n return UmAlQuraStatic.format(this.date, mask, locale || UmAlQuraStatic['locale'].name);\r\n };\r\n /**\r\n * Clones this instance and returns a new instance with the same values.\r\n */\r\n UmAlQura.prototype.clone = function () {\r\n return new UmAlQura(this.date);\r\n };\r\n UmAlQura.prototype._setDate = function (date) {\r\n var _a = UmAlQuraStatic.gregorianToHijri(date), hy = _a.hy, hm = _a.hm, hd = _a.hd;\r\n this._date = new Date(date.valueOf());\r\n this._hy = hy;\r\n this._hm = hm;\r\n this._hd = hd;\r\n };\r\n return UmAlQura;\r\n}());\n\nfunction umalqura(dateOrHy, hm, hd, hour, minute, second, millisecond) {\r\n if (hour === void 0) { hour = 0; }\r\n if (minute === void 0) { minute = 0; }\r\n if (second === void 0) { second = 0; }\r\n if (millisecond === void 0) { millisecond = 0; }\r\n if (dateOrHy instanceof Date) {\r\n return new UmAlQura(dateOrHy);\r\n }\r\n else if (dateOrHy !== undefined && hm !== undefined && hd !== undefined) {\r\n return new UmAlQura(dateOrHy, hm, hd, hour, minute, second, millisecond);\r\n }\r\n else {\r\n return new UmAlQura();\r\n }\r\n}\r\n/**\r\n * Returns the library version.\r\n */\r\numalqura.VERSION = \"0.0.7\";\r\n/**\r\n * Returns a class which exposes static Hijri related functions.\r\n */\r\numalqura.$ = UmAlQuraStatic;\r\n/**\r\n * Returns the minimum supported Hijri date.\r\n */\r\numalqura.min = umalqura(UmAlQuraStatic['minCalendarYear'], 1, 1);\r\n/**\r\n * Returns the maximum supported Hijri date.\r\n */\r\numalqura.max = umalqura(UmAlQuraStatic['maxCalendarYear'], 1, 1).endOf('year');\r\n/**\r\n * Gets or sets the global locale\r\n * @param locale The locale to set. If omitted, returns the current locale\r\n */\r\numalqura.locale = function (locale) { return locale ? UmAlQuraStatic.setLocale(locale) : UmAlQuraStatic['locale'].name; };\r\n/**\r\n * Returns whether the currently set locale is RTL or not.\r\n */\r\numalqura.rtl = function () { return !!UmAlQuraStatic['locale'].rtl; };\r\n/**\r\n * Returns the times names using the currently set locale.\r\n */\r\numalqura.times = function () { return UmAlQuraStatic['locale'].timeNames.slice(); };\r\n/**\r\n * Returns the days names using the currently set locale.\r\n */\r\numalqura.days = function () { return UmAlQuraStatic['locale'].dayNames.slice(); };\r\n/**\r\n * Returns the days short names using the currently set locale.\r\n */\r\numalqura.daysShort = function () { return UmAlQuraStatic['locale'].dayNamesShort.slice(); };\r\n/**\r\n * Returns the months names using the currently set locale.\r\n */\r\numalqura.months = function () { return UmAlQuraStatic['locale'].monthNames.slice(); };\r\n/**\r\n * Returns the months short names using the currently set locale.\r\n */\r\numalqura.monthsShort = function () { return UmAlQuraStatic['locale'].monthNamesShort.slice(); };\r\n/**\r\n * Returns the localized number for the given number using the currently set locale.\r\n */\r\numalqura.localizeNum = function (num) { return UmAlQuraStatic['locale'].localizeNum(num); };\r\n/**\r\n * Returns the localized day number for the given day number using the currently set locale.\r\n */\r\numalqura.localizeDayNum = function (d) { return UmAlQuraStatic['locale'].localizeDayNum(d); };\n\nexport default umalqura;\n","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 SvgNotificationBell = function SvgNotificationBell(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M5.25 9a6.75 6.75 0 0 1 13.5 0v.75c0 2.123.8 4.057 2.118 5.52a.75.75 0 0 1-.297 1.206c-1.544.57-3.16.99-4.831 1.243a3.75 3.75 0 1 1-7.48 0 24.585 24.585 0 0 1-4.831-1.244.75.75 0 0 1-.298-1.205A8.217 8.217 0 0 0 5.25 9.75V9zm4.502 8.9a2.25 2.25 0 1 0 4.496 0 25.057 25.057 0 0 1-4.496 0z\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgNotificationBell;","import React, { useEffect, useState } from 'react';\n\nimport umalqura from '@umalqura/core';\nimport classNames from 'classnames';\nimport { useRouter } from 'next/router';\nimport Trans from 'next-translate/Trans';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './JoinQuranicCalendarButton.module.scss';\n\nimport Button, { ButtonShape, ButtonSize, ButtonType } from '@/dls/Button/Button';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport NotificationBellIcon from '@/icons/notification-bell.svg';\nimport { isLoggedIn } from '@/utils/auth/login';\nimport { followUser, isUserFollowed } from '@/utils/auth/qf/api';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { toLocalizedDate, toLocalizedNumber } from '@/utils/locale';\nimport { getLoginNavigationUrl, getQuranicCalendarNavigationUrl } from '@/utils/navigation';\n\nconst QC_USERNAME = 'calendar';\n\ntype Props = {\n currentHijriDate: umalqura.UmAlQura;\n currentQuranicCalendarWeek: number;\n};\n\nconst JoinQuranicCalendarButton: React.FC<Props> = ({\n currentQuranicCalendarWeek,\n currentHijriDate,\n}) => {\n const { t, lang } = useTranslation('quranic-calendar');\n const toast = useToast();\n const [isLoading, setIsLoading] = useState(false);\n const [hasJoined, setHasJoined] = useState(false);\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n if (isLoggedIn()) {\n setIsLoading(true);\n isUserFollowed(QC_USERNAME)\n .then((response) => {\n setHasJoined(response.followed);\n })\n .catch(() => {\n setHasError(true);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, []);\n\n const router = useRouter();\n const onClick = () => {\n logButtonClick('join_quranic_calendar');\n if (isLoggedIn()) {\n setIsLoading(true);\n followUser(QC_USERNAME)\n .then(() => {\n toast(t('join-quranic-calendar-success'), {\n status: ToastStatus.Success,\n });\n setHasJoined(true);\n })\n .catch(() => {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n router.replace(getLoginNavigationUrl(getQuranicCalendarNavigationUrl()));\n }\n };\n\n return (\n <div className={styles.text}>\n <div className={styles.bordered}>\n <Trans\n i18nKey=\"quranic-calendar:today\"\n components={{\n br: <br key={0} />,\n highlight: <span key={1} className={styles.highlight} />,\n }}\n values={{\n day: toLocalizedNumber(currentHijriDate.hd, lang),\n month: t(`islamic-months.${currentHijriDate.hm}`),\n year: toLocalizedNumber(currentHijriDate.hy, lang, false, {\n useGrouping: false,\n }),\n gregorianDate: toLocalizedDate(currentHijriDate.date, lang, {\n dateStyle: 'long',\n }),\n }}\n />\n <br />\n <Trans\n i18nKey=\"quranic-calendar:join-qc.line-1\"\n components={{\n br: <br key={0} />,\n highlight: <span key={1} className={styles.highlight} />,\n }}\n values={{\n weekNumber: toLocalizedNumber(currentQuranicCalendarWeek, lang),\n }}\n />\n <br />\n </div>\n <div className={styles.subTextContainer}>\n <Trans\n i18nKey=\"quranic-calendar:join-qc.line-2\"\n components={{\n br: <br key={0} />,\n normal: <span key={1} className={styles.normal} />,\n highlight: <span key={1} className={styles.highlight} />,\n }}\n values={{\n weekNumber: toLocalizedNumber(currentQuranicCalendarWeek, lang),\n }}\n />\n\n <div className={classNames(styles.cta, styles.text)}>\n {hasJoined ? '' : t('join-quranic-calendar')}\n </div>\n <Button\n isLoading={isLoading}\n isDisabled={hasJoined || hasError}\n onClick={onClick}\n type={ButtonType.Success}\n shape={ButtonShape.Pill}\n size={ButtonSize.Small}\n prefix={<NotificationBellIcon />}\n >\n {hasJoined ? t('common:subscribed') : t('common:subscribe')}\n </Button>\n </div>\n </div>\n );\n};\n\nexport default JoinQuranicCalendarButton;\n","/* eslint-disable i18next/no-literal-string */\nimport React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from '@/components/RamadanActivity/RamadanActivityHero/Hero.module.scss';\n\nconst QuranicCalendarHero = () => {\n const { t } = useTranslation('quranic-calendar');\n return (\n <div className={styles.container} dir=\"ltr\">\n <div className={styles.rowContainer}>\n <div className={styles.row}>\n <p className={styles.header}>{t('quranic-calendar')}</p>\n <div className={styles.desc}>{t('hero.line-1')}</div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default QuranicCalendarHero;\n","import React from 'react';\n\nimport useReflectionBodyParser from '../hooks/useReflectionBodyParser';\n\nimport styles from './ReflectionText.module.scss';\n\ntype Props = {\n reflectionText: string;\n};\n\nconst ReflectionText: React.FC<Props> = ({ reflectionText }) => {\n const formattedText = useReflectionBodyParser(reflectionText, styles.hashtag);\n return (\n <span\n className={styles.body}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{\n __html: formattedText,\n }}\n />\n );\n};\n\nexport default ReflectionText;\n","/* eslint-disable max-lines */\nimport React from 'react';\n\nimport classNames from 'classnames';\nimport useTranslation from 'next-translate/useTranslation';\nimport useSWRImmutable from 'swr/immutable';\n\nimport styles from './QuranicCalendarWeek.module.scss';\n\nimport ReflectionText from '@/components/QuranReflect/ReflectionText';\nimport Collapsible, { CollapsibleDirection } from '@/dls/Collapsible/Collapsible';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\nimport ChevronDownIcon from '@/icons/chevron-down.svg';\nimport { getQuranicCalendarPostOfWeek } from '@/utils/auth/qf/api';\nimport { makeQuranicCalendarPostOfWeekUrl } from '@/utils/auth/qf/apiPaths';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { toLocalizedNumber, toLocalizedVerseKey } from '@/utils/locale';\nimport {\n QuranicCalendarRangesNavigationSettings,\n getQuranicCalendarRangesNavigationUrl,\n} from '@/utils/navigation';\nimport { getQuranReflectPostUrl } from '@/utils/quranReflect/navigation';\n\ntype Props = {\n weekNumber: number;\n isCurrentWeek: boolean;\n localizedMonth: string;\n ranges: string;\n};\n\nconst QuranicCalendarWeek: React.FC<Props> = ({\n weekNumber,\n localizedMonth,\n isCurrentWeek,\n ranges,\n}) => {\n const { t, lang } = useTranslation('quranic-calendar');\n\n const onRangesClicked = (settings: QuranicCalendarRangesNavigationSettings) => {\n logButtonClick('quranic_calendar_week', {\n ranges,\n weekNumber,\n settings,\n });\n };\n\n const onInteractClicked = () => {\n logButtonClick('quranic_calendar_interact', {\n ranges,\n weekNumber,\n });\n };\n\n const { data, isValidating, error } = useSWRImmutable(\n makeQuranicCalendarPostOfWeekUrl(weekNumber),\n async () => {\n const response = await getQuranicCalendarPostOfWeek(weekNumber);\n return response;\n },\n );\n const hasPost = !isValidating && !error && !!data?.post?.body;\n\n return (\n <div\n className={classNames(styles.weekContainer, {\n [styles.currentWeek]: isCurrentWeek,\n })}\n >\n <p>\n {t('week-title', {\n weekNumber: toLocalizedNumber(weekNumber, lang),\n month: localizedMonth,\n rangeStart: toLocalizedVerseKey(ranges.split('-')[0], lang),\n rangeEnd: toLocalizedVerseKey(ranges.split('-')[1], lang),\n })}\n </p>\n <div>\n <Link\n className={styles.link}\n isNewTab\n onClick={() => {\n onRangesClicked(QuranicCalendarRangesNavigationSettings.EnglishAndArabic);\n }}\n variant={LinkVariant.Blend}\n href={getQuranicCalendarRangesNavigationUrl(\n ranges,\n QuranicCalendarRangesNavigationSettings.EnglishAndArabic,\n )}\n >\n {t('reading-options.en-and-ar')}\n </Link>\n <Link\n isNewTab\n className={styles.link}\n onClick={() => {\n onRangesClicked(QuranicCalendarRangesNavigationSettings.EnglishOnly);\n }}\n variant={LinkVariant.Blend}\n href={getQuranicCalendarRangesNavigationUrl(\n ranges,\n QuranicCalendarRangesNavigationSettings.EnglishOnly,\n )}\n >\n {t('reading-options.en-only')}\n </Link>\n <Link\n isNewTab\n className={styles.link}\n onClick={() => {\n onRangesClicked(QuranicCalendarRangesNavigationSettings.DefaultSettings);\n }}\n variant={LinkVariant.Blend}\n href={getQuranicCalendarRangesNavigationUrl(\n ranges,\n QuranicCalendarRangesNavigationSettings.DefaultSettings,\n )}\n >\n {t('reading-options.default-settings')}\n </Link>\n </div>\n {!!hasPost && (\n <Collapsible\n direction={CollapsibleDirection.Right}\n title={<div className={styles.collapsibleTitle}>{t('supplemental-resources')}</div>}\n prefix={<ChevronDownIcon />}\n shouldRotatePrefixOnToggle\n shouldOpen={isCurrentWeek}\n >\n {({ isOpen: isCollapsibleOpen }) => {\n if (!isCollapsibleOpen) return null;\n return (\n <>\n <div className={styles.collapsibleBody}>\n <ReflectionText reflectionText={data?.post?.body} />\n </div>\n <Link\n isNewTab\n onClick={onInteractClicked}\n variant={LinkVariant.Blend}\n href={getQuranReflectPostUrl(data.post.id)}\n >\n {t('interact-with-post')}\n </Link>\n </>\n );\n }}\n </Collapsible>\n )}\n </div>\n );\n};\n\nexport default QuranicCalendarWeek;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './QuranicCalendarMonth.module.scss';\n\nimport QuranicCalendarMonthData from '@/components/QuranicCalendar/types/QuranicCalendarMonthData';\nimport QuranicCalendarWeek from 'src/components/QuranicCalendar/QuranicCalendarWeek';\n\ntype Props = {\n monthWeeks: QuranicCalendarMonthData;\n currentQuranicCalendarWeek: number;\n};\n\nconst QuranicCalendarMonth: React.FC<Props> = ({ monthWeeks, currentQuranicCalendarWeek }) => {\n const { t } = useTranslation('quranic-calendar');\n const localizedMonth = `${t(`islamic-months.${monthWeeks[0].hijriMonth}`)}`;\n\n return (\n <div className={styles.container}>\n <div className={styles.monthHeader}>{localizedMonth}</div>\n {monthWeeks.map((week) => {\n const { ranges, weekNumber } = week;\n return (\n <QuranicCalendarWeek\n key={ranges}\n isCurrentWeek={currentQuranicCalendarWeek === Number(weekNumber)}\n weekNumber={Number(weekNumber)}\n localizedMonth={localizedMonth}\n ranges={ranges}\n />\n );\n })}\n </div>\n );\n};\n\nexport default QuranicCalendarMonth;\n","import umalqura from '@umalqura/core';\nimport useTranslation from 'next-translate/useTranslation';\nimport { Virtuoso } from 'react-virtuoso';\n\nimport styles from './calendar.module.scss';\n\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport PageContainer from '@/components/PageContainer';\nimport JoinQuranicCalendarButton from '@/components/QuranicCalendar/JoinQuranicCalendarButton';\nimport QuranicCalendarHero from '@/components/QuranicCalendar/QuranicCalendarHero';\nimport QuranicCalendarMonth from '@/components/QuranicCalendar/QuranicCalendarMonth';\nimport { getCurrentQuranicCalendarWeek } from '@/utils/hijri-date';\nimport { getLanguageAlternates } from '@/utils/locale';\nimport { getCanonicalUrl, getQuranicCalendarNavigationUrl } from '@/utils/navigation';\nimport monthsMap from 'quranic-calendar.json';\n\nconst MONTHS_WEEKS = Object.values(monthsMap);\nconst PATH = getQuranicCalendarNavigationUrl();\n\nconst QuranicCalendarPage = () => {\n const { t, lang } = useTranslation('quranic-calendar');\n const currentHijriDate = umalqura();\n\n /**\n * Get the index of the current month in the MONTHS_WEEKS array\n * by comparing the current month and year with the month and year of each month in the array.\n *\n * @returns {number} The index of the current month in the MONTHS_WEEKS array\n */\n const getInitialTopMostItemIndex = () => {\n for (let index = 0; index < MONTHS_WEEKS.length; index += 1) {\n const monthWeeks = MONTHS_WEEKS[index];\n const calendarMonth = umalqura(\n Number(monthWeeks[0].hijriYear),\n Number(monthWeeks[0].hijriMonth),\n 1,\n );\n const isCurrentMonthAndYear =\n calendarMonth.hm === currentHijriDate.hm && currentHijriDate.hy === calendarMonth.hy;\n if (isCurrentMonthAndYear) {\n return index;\n }\n }\n return 0;\n };\n const currentQuranicCalendarWeek = getCurrentQuranicCalendarWeek(currentHijriDate);\n\n return (\n <>\n <NextSeoWrapper\n title={t('quranic-calendar')}\n url={getCanonicalUrl(lang, PATH)}\n languageAlternates={getLanguageAlternates(PATH)}\n />\n <QuranicCalendarHero />\n <PageContainer>\n <JoinQuranicCalendarButton\n currentQuranicCalendarWeek={currentQuranicCalendarWeek}\n currentHijriDate={currentHijriDate}\n />\n <div className={styles.container}>\n <Virtuoso\n data={MONTHS_WEEKS}\n initialItemCount={1}\n initialTopMostItemIndex={getInitialTopMostItemIndex()}\n totalCount={MONTHS_WEEKS.length}\n itemContent={(index, monthWeeks) => (\n <QuranicCalendarMonth\n currentQuranicCalendarWeek={currentQuranicCalendarWeek}\n key={index}\n monthWeeks={monthWeeks}\n />\n )}\n />\n </div>\n </PageContainer>\n </>\n );\n};\n\nexport default QuranicCalendarPage;\n","/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable react-func/max-lines-per-function */\nimport umalqura from '@umalqura/core';\nimport groupBy from 'lodash/groupBy';\n\nimport QuranicCalendarMonthData from '@/components/QuranicCalendar/types/QuranicCalendarMonthData';\nimport monthsMap from 'quranic-calendar.json';\n\ntype Month = {\n year: number;\n month: number;\n day: number;\n};\n\n/**\n * The idea is to sum the number of weeks from the start of the Quranic\n * calendar to the current week. This is done by summing the number of weeks\n * in each month before the current month and then adding the current week\n * in the current month.\n *\n * @param {umalqura.UmAlQura} currentHijriDate\n * @returns {number}\n */\nexport const getCurrentQuranicCalendarWeek = (currentHijriDate: umalqura.UmAlQura): number => {\n // Today's date\n const today = currentHijriDate.date;\n\n // Convert today's date to the start of the day\n today.setHours(0, 0, 0, 0);\n\n // Iterate through the weeks to find the current week\n for (const key in monthsMap) {\n const weeks = monthsMap[key];\n for (const week of weeks) {\n const startDate = new Date(week.year, week.month - 1, week.day);\n const endDate = new Date(startDate);\n endDate.setDate(startDate.getDate() + 7);\n\n if (today >= startDate && today < endDate) {\n return Number(week.weekNumber);\n }\n }\n }\n\n return 0;\n};\n\n// TODO: add unit tests\nexport const generateWeeksOfMonths = (\n months: Month[],\n): {\n monthsDataMap: { [key: string]: QuranicCalendarMonthData };\n currentMonthIndex: number;\n} => {\n const today = umalqura();\n const monthsDataMap = {} as {\n [key: string]: QuranicCalendarMonthData;\n };\n let currentMonthIndex;\n\n // 1. loop through each first day of each month\n for (let i = 0; i < months.length; i += 1) {\n const firstDayOfHijriMonth = umalqura(months[i].year, months[i].month, months[i].day);\n const monthYearKey = `${firstDayOfHijriMonth.hy}-${firstDayOfHijriMonth.hm}`;\n // 2. initialize current month details\n // @ts-ignore\n monthsDataMap[monthYearKey] = {};\n // @ts-ignore\n monthsDataMap[monthYearKey].weeks = {};\n // @ts-ignore\n monthsDataMap[monthYearKey].firstDateOfMonth = firstDayOfHijriMonth.date;\n // filter null days (days before or after start of month) and also filter days before the first day of the month if we are not starting from the first day of the month exactly\n const daysInMonth = firstDayOfHijriMonth.monthArray\n .flat()\n .filter((day) => day !== null && day.isSameOrAfter(firstDayOfHijriMonth));\n /**\n * 3. group days by week of the month. Since 0 dayOfWeek starts is\n * Monday, we are modifying weekOfYear to start on Friday\n */\n const weeksOfMonthDaysMap = groupBy(daysInMonth, (day) => {\n const shiftedDayOfWeek = (day.dayOfWeek + 2) % 7;\n const shiftedWeekOfYear = day.weekOfYear + (shiftedDayOfWeek < day.dayOfWeek ? 1 : 0);\n return `${day.hy}-${shiftedWeekOfYear}`;\n });\n // 4. if the month is the current month, set the current month flag\n const isCurrentMonth = today.hy === months[i].year && today.hm === months[i].month;\n // @ts-ignore\n monthsDataMap[monthYearKey].isCurrentMonth = isCurrentMonth;\n // 5. save the index of the current month so we can automatically scroll to later\n if (isCurrentMonth) {\n currentMonthIndex = i;\n }\n\n Object.keys(weeksOfMonthDaysMap).forEach((weekKey) => {\n const weekDays = weeksOfMonthDaysMap[weekKey];\n // @ts-ignore\n monthsDataMap[monthYearKey].weeks[weekKey] = {\n weekDays,\n isCurrentWeek: isCurrentMonth && weekDays[0].weekOfYear === today.weekOfYear,\n };\n });\n }\n\n return { monthsDataMap, currentMonthIndex };\n};\n","import {\n makeFollowUserUrl,\n makeGetUserReflectionsUrl,\n makePostReflectionViewsUrl,\n makeIsUserFollowedUrl,\n makeQuranicCalendarPostOfWeekUrl,\n} from './apiPaths';\n\nimport AyahReflection from '@/types/QuranReflect/AyahReflection';\nimport { postRequest, privateFetcher } from '@/utils/auth/api';\nimport GetAllUserReflectionsQueryParams from '@/utils/auth/types/GetAllUserReflectionsQueryParams';\n\nexport const postReflectionViews = async (postId: string): Promise<{ success: boolean }> =>\n postRequest(makePostReflectionViewsUrl(postId), {});\n\nexport const followUser = async (usernameOrId: string): Promise<{ success: boolean }> =>\n postRequest(makeFollowUserUrl(usernameOrId), {});\n\nexport const isUserFollowed = async (\n usernameOrId: string,\n): Promise<{ success: boolean; followed: boolean }> => {\n return privateFetcher(makeIsUserFollowedUrl(usernameOrId));\n};\n\nexport const getAllUserReflections = async (params: GetAllUserReflectionsQueryParams) => {\n return privateFetcher(makeGetUserReflectionsUrl(params));\n};\n\nexport const getQuranicCalendarPostOfWeek = async (\n weekNumber: number,\n): Promise<{ post: AyahReflection }> => {\n return privateFetcher(makeQuranicCalendarPostOfWeekUrl(weekNumber));\n};\n","import { makeUrl } from '@/utils/auth/apiPaths';\nimport GetAllUserReflectionsQueryParams from '@/utils/auth/types/GetAllUserReflectionsQueryParams';\n\nconst getPrefixedUrl = (url: string) => `qf/${url}`;\n\nexport const makePostReflectionViewsUrl = (postId: string) =>\n makeUrl(getPrefixedUrl(`posts/${postId}/views`));\n\nexport const makeFollowUserUrl = (userNameOrId: string) =>\n makeUrl(getPrefixedUrl(`users/${userNameOrId}/follow`));\n\nexport const makeIsUserFollowedUrl = (userNameOrId: string) =>\n makeUrl(getPrefixedUrl(`users/${userNameOrId}/is-followed`));\n\nexport const makeGetUserReflectionsUrl = (params?: GetAllUserReflectionsQueryParams) =>\n makeUrl(getPrefixedUrl('posts'), params as any);\n\nexport const makeQuranicCalendarPostOfWeekUrl = (weekNumber: number) =>\n makeUrl(getPrefixedUrl(`quranic-calendar/${weekNumber}`));\n","import stringify from '@/utils/qs-stringify';\n\nconst STAGING_API_HOST = 'https://quranreflect.org';\nconst PRODUCTION_API_HOST = 'https://quranreflect.com';\n\n// env variables in Vercel can't be dynamic, we have to hardcode the urls here. https://stackoverflow.com/questions/44342226/next-js-error-only-absolute-urls-are-supported\nexport const API_HOST =\n process.env.NEXT_PUBLIC_VERCEL_ENV === 'production' ? PRODUCTION_API_HOST : STAGING_API_HOST;\n\nconst getQuranReflectFilteredVerseUrl = (chapterId: string, verseNumber: string, params) => {\n return `${API_HOST}?filters=${chapterId}:${verseNumber}&${stringify(params)}`;\n};\n\nexport const getQuranReflectVerseUrl = (chapterId: string, verseNumber: string) => {\n return getQuranReflectFilteredVerseUrl(chapterId, verseNumber, { feed: true });\n};\n\nexport const getQuranReflectEditUrl = (chapterId: string, verseNumber: string) => {\n return getQuranReflectFilteredVerseUrl(chapterId, verseNumber, { edit: true });\n};\n\nexport const getQuranReflectAuthorUrl = (username: string) => {\n return `${API_HOST}/${username}`;\n};\n\nexport const getQuranReflectPostUrl = (postId: number | string, viewComments = false) =>\n `${API_HOST}/posts/${postId}${viewComments ? '#comments' : ''}`;\n\nexport const getQuranReflectTagUrl = (tag: string) =>\n `${API_HOST}/?tags=${encodeURIComponent(tag)}`;\n","/**\n * Shorten a text by setting the maximum number of characters\n * by the value of the parameter and adding \"...\" at the end.\n *\n * @param {string} rawString\n * @param {number} length\n * @param {string} suffix\n * @returns {string}\n */\nexport const truncateString = (rawString: string, length: number, suffix = '...'): string => {\n const characters = rawString.split('', length);\n let shortenedText = '';\n for (let index = 0; index < characters.length; index += 1) {\n const character = characters[index];\n if (shortenedText.length === length - 1) {\n shortenedText = `${shortenedText}${character}${suffix}`;\n break;\n }\n shortenedText = `${shortenedText}${character}`;\n }\n return shortenedText;\n};\n\n/**\n * Strip HTML tags from a string.\n *\n * @param {string} rawString\n * @returns {string}\n */\nexport const stripHTMLTags = (rawString: string): string => rawString.replace(/(<([^>]+)>)/gi, '');\n\n/**\n * Convert a slugified collection id to collection id only after\n * removing the slug.\n *\n * @param {string} slugifiedCollectionId\n * @returns {string}\n */\nexport const slugifiedCollectionIdToCollectionId = (slugifiedCollectionId: string): string => {\n if (!slugifiedCollectionId) {\n return '';\n }\n const splits = slugifiedCollectionId.split('-');\n // if there is no slug in the url (collections with a name that cannot be slugified e.g. emoticons)\n if (splits.length === 1) {\n return splits[0];\n }\n return splits[splits.length - 1];\n};\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 = {\"hashtag\":\"ReflectionText_hashtag__uFX_O\",\"body\":\"ReflectionText_body__0Igdy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text\":\"JoinQuranicCalendarButton_text__LVgQ6\",\"cta\":\"JoinQuranicCalendarButton_cta__A1sPD\",\"highlight\":\"JoinQuranicCalendarButton_highlight__TunkA\",\"normal\":\"JoinQuranicCalendarButton_normal__aSk2p\",\"bordered\":\"JoinQuranicCalendarButton_bordered__fH_X5\",\"subTextContainer\":\"JoinQuranicCalendarButton_subTextContainer__vMx_r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"monthHeader\":\"QuranicCalendarMonth_monthHeader__yK_65\",\"container\":\"QuranicCalendarMonth_container__Nxg83\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"weekContainer\":\"QuranicCalendarWeek_weekContainer__x1skz\",\"currentWeek\":\"QuranicCalendarWeek_currentWeek__cJvlZ\",\"collapsibleTitle\":\"QuranicCalendarWeek_collapsibleTitle__sEy8B\",\"collapsibleBody\":\"QuranicCalendarWeek_collapsibleBody__VGUAZ\",\"link\":\"QuranicCalendarWeek_link__58BsZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Hero_container__MwEz4\",\"rowContainer\":\"Hero_rowContainer__txyaV\",\"row\":\"Hero_row__3_Icm\",\"header\":\"Hero_header__DT50D\",\"desc\":\"Hero_desc__gLk4u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Collapsible_header__CmhJq\",\"headerLeft\":\"Collapsible_headerLeft__Xh00n\",\"prefixContainer\":\"Collapsible_prefixContainer__AVHUT\",\"prefixRotated\":\"Collapsible_prefixRotated__bjKLn\",\"suffixContainer\":\"Collapsible_suffixContainer__uZ1IW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"calendar_container__HzLHf\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","tagRe","nlRe","getElements","parts","_a","slice","paired","children","unpaired","concat","formatElements","value","elements","replace","split","tree","before","shift","push","forEach","realIndex","key","after","element","Fragment","cloneElement","Trans","i18nKey","values","components","fallback","defaultTrans","ns","_b","useTranslation","lang","useMemo","text","default","window","__NEXT_P","url","image","imageAlt","imageHeight","imageWidth","openGraph","description","rest","openGraphParams","images","alt","params","truncateString","NextSeo","div","className","styles","parseReflectionBody","reflectionBody","hashtagStyle","index","indexOf","beforeText","Math","max","afterText","includes","_","tag","tagWithHashTag","getQuranReflectTagUrl","tagToLink","reflectionText","CollapsibleDirection","isDefaultOpen","prefix","title","suffix","shouldRotatePrefixOnToggle","shouldOpen","onOpenChange","direction","Left","useState","isOpen","setIsOpen","useEffect","CollapsiblePrimitive","open","asChild","onClick","preValue","classNames","preventDefault","stopPropagation","DatePart","DateMapping","monthsLengthFlags","gy","gm","gd","this","hijriMonthsLengthFlags","gregorianDate","Date","DatePart$1","token","pad","val","locale","len","String","localizeNum","symbolMap","dayNumMap","ar","name","rtl","dayNamesShort","dayNames","monthNamesShort","monthNames","timeNames","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","num","s","output","i","charAt","localizeDayNum","section","localizeCommas","v","en","UmAlQuraStatic","hijriToGregorian","hy","hm","hd","_checkYearRange","_checkMonthRange","_checkDayRange","nDays","minCalendarYear","dt","hijriYearData","b","m","addDays","getFullYear","getMonth","getDate","gregorianToHijri","date","_checkMillsRange","getTime","trunc","minDate","millisPerDay","_dayDiff","yh1","mh1","dh1","daysPerThisMonth","addYears","hys","addMonths","hms","y","_getDatePart","Year","Month","Day","days","getDaysInMonth","_setTime","getHours","getMinutes","getSeconds","getMilliseconds","addWeeks","wks","valueOf","setDate","addTime","unit","setHours","setMinutes","setSeconds","setMilliseconds","Error","getDayOfYear","DayOfYear","getDayOfMonth","getDayOfWeek","getDay","getWeekOfYear","daysToDayOfWeek","startOf","ceil","getDaysInYear","getYear","getMonthArray","weeks","month","start","end","endOf","w","floor","day","toDate","dow","daysInMonth","isLeapYear","hour","minute","second","millisecond","millisPerSecond","format","mask","woy","D","H","M","L","W","N","flags","dd","ddd","dddd","MM","MMM","MMMM","yy","yyyy","h","hh","HH","mm","ss","l","round","tt","T","TT","S","match","_loadLocale","setLocale","registerLocale","locales","console","warn","part","_getAbsoluteDateUmAlQura","maxCalendarYear","millis","maxDate","other","_initDateMapping","rawData","mapping","millisPerMinute","millisPerHour","UmAlQura","dateOrHy","_date","_hy","_hm","_hd","_setDate","undefined","defineProperty","prototype","get","enumerable","configurable","map","add","subtract","isBefore","thisDate","thatDate","isAfter","isSame","isSameOrBefore","isSameOrAfter","isBetween","from","to","fromInclusive","toInclusive","clone","VERSION","$","min","times","daysShort","months","monthsShort","QC_USERNAME","currentQuranicCalendarWeek","currentHijriDate","toast","useToast","isLoading","setIsLoading","hasJoined","setHasJoined","hasError","setHasError","isLoggedIn","isUserFollowed","then","response","followed","catch","finally","router","useRouter","br","highlight","span","toLocalizedNumber","year","useGrouping","toLocalizedDate","dateStyle","weekNumber","normal","Button","isDisabled","logButtonClick","followUser","status","ToastStatus","getLoginNavigationUrl","getQuranicCalendarNavigationUrl","type","ButtonType","shape","ButtonShape","size","ButtonSize","NotificationBellIcon","dir","p","formattedText","useReflectionBodyParser","dangerouslySetInnerHTML","__html","data","localizedMonth","isCurrentWeek","ranges","onRangesClicked","settings","onInteractClicked","useSWRImmutable","makeQuranicCalendarPostOfWeekUrl","getQuranicCalendarPostOfWeek","isValidating","error","hasPost","post","body","rangeStart","toLocalizedVerseKey","rangeEnd","Link","isNewTab","QuranicCalendarRangesNavigationSettings","variant","LinkVariant","href","getQuranicCalendarRangesNavigationUrl","Collapsible","ChevronDownIcon","ReflectionText","getQuranReflectPostUrl","id","monthWeeks","hijriMonth","week","QuranicCalendarWeek","Number","MONTHS_WEEKS","monthsMap","PATH","umalqura","today","startDate","endDate","getCurrentQuranicCalendarWeek","NextSeoWrapper","getCanonicalUrl","languageAlternates","getLanguageAlternates","QuranicCalendarHero","PageContainer","JoinQuranicCalendarButton","Virtuoso","initialItemCount","initialTopMostItemIndex","calendarMonth","hijriYear","getInitialTopMostItemIndex","totalCount","itemContent","QuranicCalendarMonth","postReflectionViews","postId","postRequest","makePostReflectionViewsUrl","usernameOrId","makeFollowUserUrl","privateFetcher","makeIsUserFollowedUrl","makeGetUserReflectionsUrl","getPrefixedUrl","makeUrl","userNameOrId","API_HOST","env","NEXT_PUBLIC_VERCEL_ENV","getQuranReflectFilteredVerseUrl","chapterId","verseNumber","stringify","getQuranReflectVerseUrl","feed","getQuranReflectEditUrl","edit","getQuranReflectAuthorUrl","username","viewComments","encodeURIComponent","rawString","characters","shortenedText","character","stripHTMLTags","slugifiedCollectionIdToCollectionId","slugifiedCollectionId","splits","module","exports"],"sourceRoot":""}
|