@internationalized/date 3.11.0 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +113 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +45 -0
- package/dist/index.mjs.map +1 -0
- package/dist/{CalendarDate.main.js → private/CalendarDate.cjs} +102 -120
- package/dist/private/CalendarDate.cjs.map +1 -0
- package/dist/{CalendarDate.mjs → private/CalendarDate.js} +65 -65
- package/dist/private/CalendarDate.js.map +1 -0
- package/dist/{CalendarDate.module.js → private/CalendarDate.mjs} +99 -117
- package/dist/private/CalendarDate.mjs.map +1 -0
- package/dist/{DateFormatter.main.js → private/DateFormatter.cjs} +27 -27
- package/dist/private/DateFormatter.cjs.map +1 -0
- package/dist/{DateFormatter.module.js → private/DateFormatter.js} +23 -23
- package/dist/{DateFormatter.module.js.map → private/DateFormatter.js.map} +1 -1
- package/dist/{DateFormatter.mjs → private/DateFormatter.mjs} +27 -27
- package/dist/private/DateFormatter.mjs.map +1 -0
- package/dist/{BuddhistCalendar.main.js → private/calendars/BuddhistCalendar.cjs} +13 -13
- package/dist/{BuddhistCalendar.main.js.map → private/calendars/BuddhistCalendar.cjs.map} +1 -1
- package/dist/{BuddhistCalendar.module.js → private/calendars/BuddhistCalendar.js} +13 -13
- package/dist/{BuddhistCalendar.module.js.map → private/calendars/BuddhistCalendar.js.map} +1 -1
- package/dist/{BuddhistCalendar.mjs → private/calendars/BuddhistCalendar.mjs} +13 -13
- package/dist/private/calendars/BuddhistCalendar.mjs.map +1 -0
- package/dist/{EthiopicCalendar.main.js → private/calendars/EthiopicCalendar.cjs} +32 -32
- package/dist/{EthiopicCalendar.main.js.map → private/calendars/EthiopicCalendar.cjs.map} +1 -1
- package/dist/{EthiopicCalendar.module.js → private/calendars/EthiopicCalendar.js} +30 -30
- package/dist/{EthiopicCalendar.module.js.map → private/calendars/EthiopicCalendar.js.map} +1 -1
- package/dist/{EthiopicCalendar.mjs → private/calendars/EthiopicCalendar.mjs} +30 -30
- package/dist/private/calendars/EthiopicCalendar.mjs.map +1 -0
- package/dist/{GregorianCalendar.main.js → private/calendars/GregorianCalendar.cjs} +31 -31
- package/dist/{GregorianCalendar.main.js.map → private/calendars/GregorianCalendar.cjs.map} +1 -1
- package/dist/{GregorianCalendar.module.js → private/calendars/GregorianCalendar.js} +27 -27
- package/dist/{GregorianCalendar.module.js.map → private/calendars/GregorianCalendar.js.map} +1 -1
- package/dist/{GregorianCalendar.mjs → private/calendars/GregorianCalendar.mjs} +27 -27
- package/dist/private/calendars/GregorianCalendar.mjs.map +1 -0
- package/dist/{HebrewCalendar.main.js → private/calendars/HebrewCalendar.cjs} +44 -44
- package/dist/{HebrewCalendar.main.js.map → private/calendars/HebrewCalendar.cjs.map} +1 -1
- package/dist/{HebrewCalendar.module.js → private/calendars/HebrewCalendar.js} +44 -44
- package/dist/{HebrewCalendar.module.js.map → private/calendars/HebrewCalendar.js.map} +1 -1
- package/dist/{HebrewCalendar.mjs → private/calendars/HebrewCalendar.mjs} +44 -44
- package/dist/private/calendars/HebrewCalendar.mjs.map +1 -0
- package/dist/{IndianCalendar.main.js → private/calendars/IndianCalendar.cjs} +20 -20
- package/dist/{IndianCalendar.main.js.map → private/calendars/IndianCalendar.cjs.map} +1 -1
- package/dist/{IndianCalendar.module.js → private/calendars/IndianCalendar.js} +20 -20
- package/dist/{IndianCalendar.module.js.map → private/calendars/IndianCalendar.js.map} +1 -1
- package/dist/{IndianCalendar.mjs → private/calendars/IndianCalendar.mjs} +20 -20
- package/dist/private/calendars/IndianCalendar.mjs.map +1 -0
- package/dist/private/calendars/IslamicCalendar.cjs +168 -0
- package/dist/private/calendars/IslamicCalendar.cjs.map +1 -0
- package/dist/private/calendars/IslamicCalendar.js +161 -0
- package/dist/{IslamicCalendar.module.js.map → private/calendars/IslamicCalendar.js.map} +1 -1
- package/dist/private/calendars/IslamicCalendar.mjs +161 -0
- package/dist/private/calendars/IslamicCalendar.mjs.map +1 -0
- package/dist/{JapaneseCalendar.main.js → private/calendars/JapaneseCalendar.cjs} +37 -37
- package/dist/{JapaneseCalendar.main.js.map → private/calendars/JapaneseCalendar.cjs.map} +1 -1
- package/dist/{JapaneseCalendar.module.js → private/calendars/JapaneseCalendar.js} +37 -37
- package/dist/{JapaneseCalendar.module.js.map → private/calendars/JapaneseCalendar.js.map} +1 -1
- package/dist/{JapaneseCalendar.mjs → private/calendars/JapaneseCalendar.mjs} +37 -37
- package/dist/private/calendars/JapaneseCalendar.mjs.map +1 -0
- package/dist/{PersianCalendar.main.js → private/calendars/PersianCalendar.cjs} +13 -13
- package/dist/{PersianCalendar.main.js.map → private/calendars/PersianCalendar.cjs.map} +1 -1
- package/dist/{PersianCalendar.module.js → private/calendars/PersianCalendar.js} +13 -13
- package/dist/{PersianCalendar.module.js.map → private/calendars/PersianCalendar.js.map} +1 -1
- package/dist/{PersianCalendar.mjs → private/calendars/PersianCalendar.mjs} +13 -13
- package/dist/private/calendars/PersianCalendar.mjs.map +1 -0
- package/dist/{TaiwanCalendar.main.js → private/calendars/TaiwanCalendar.cjs} +20 -20
- package/dist/{TaiwanCalendar.main.js.map → private/calendars/TaiwanCalendar.cjs.map} +1 -1
- package/dist/private/calendars/TaiwanCalendar.js +75 -0
- package/dist/{TaiwanCalendar.module.js.map → private/calendars/TaiwanCalendar.js.map} +1 -1
- package/dist/{TaiwanCalendar.mjs → private/calendars/TaiwanCalendar.mjs} +20 -20
- package/dist/private/calendars/TaiwanCalendar.mjs.map +1 -0
- package/dist/private/conversion.cjs +241 -0
- package/dist/private/conversion.cjs.map +1 -0
- package/dist/private/conversion.js +222 -0
- package/dist/private/conversion.js.map +1 -0
- package/dist/private/conversion.mjs +222 -0
- package/dist/private/conversion.mjs.map +1 -0
- package/dist/private/createCalendar.cjs +69 -0
- package/dist/{createCalendar.main.js.map → private/createCalendar.cjs.map} +1 -1
- package/dist/private/createCalendar.js +64 -0
- package/dist/{createCalendar.module.js.map → private/createCalendar.js.map} +1 -1
- package/dist/private/createCalendar.mjs +64 -0
- package/dist/private/createCalendar.mjs.map +1 -0
- package/dist/{manipulation.main.js → private/manipulation.cjs} +106 -109
- package/dist/private/manipulation.cjs.map +1 -0
- package/dist/{manipulation.mjs → private/manipulation.js} +88 -88
- package/dist/{manipulation.module.js.map → private/manipulation.js.map} +1 -1
- package/dist/{manipulation.module.js → private/manipulation.mjs} +93 -96
- package/dist/private/manipulation.mjs.map +1 -0
- package/dist/private/queries.cjs +359 -0
- package/dist/private/queries.cjs.map +1 -0
- package/dist/private/queries.js +326 -0
- package/dist/private/queries.js.map +1 -0
- package/dist/private/queries.mjs +324 -0
- package/dist/private/queries.mjs.map +1 -0
- package/dist/private/string.cjs +181 -0
- package/dist/private/string.cjs.map +1 -0
- package/dist/{string.mjs → private/string.js} +64 -64
- package/dist/{string.module.js.map → private/string.js.map} +1 -1
- package/dist/private/string.mjs +166 -0
- package/dist/private/string.mjs.map +1 -0
- package/dist/{utils.main.js → private/utils.cjs} +3 -3
- package/dist/{utils.main.js.map → private/utils.cjs.map} +1 -1
- package/dist/{utils.module.js → private/utils.js} +3 -3
- package/dist/{utils.module.js.map → private/utils.js.map} +1 -1
- package/dist/{utils.mjs → private/utils.mjs} +3 -3
- package/dist/private/utils.mjs.map +1 -0
- package/dist/{weekStartData.main.js → private/weekStartData.cjs} +3 -3
- package/dist/{weekStartData.main.js.map → private/weekStartData.cjs.map} +1 -1
- package/dist/{weekStartData.module.js → private/weekStartData.js} +3 -3
- package/dist/{weekStartData.module.js.map → private/weekStartData.js.map} +1 -1
- package/dist/{weekStartData.mjs → private/weekStartData.mjs} +3 -3
- package/dist/private/weekStartData.mjs.map +1 -0
- package/dist/types/src/CalendarDate.d.ts +177 -0
- package/dist/types/src/DateFormatter.d.ts +21 -0
- package/dist/types/src/calendars/BuddhistCalendar.d.ts +16 -0
- package/dist/types/src/calendars/EthiopicCalendar.d.ts +45 -0
- package/dist/types/src/calendars/GregorianCalendar.d.ts +25 -0
- package/dist/types/src/calendars/HebrewCalendar.d.ts +21 -0
- package/dist/types/src/calendars/IndianCalendar.d.ts +17 -0
- package/dist/types/src/calendars/IslamicCalendar.d.ts +48 -0
- package/dist/types/src/calendars/JapaneseCalendar.d.ts +21 -0
- package/dist/types/src/calendars/PersianCalendar.d.ts +19 -0
- package/dist/types/src/calendars/TaiwanCalendar.d.ts +19 -0
- package/dist/types/src/conversion.d.ts +42 -0
- package/dist/types/src/createCalendar.d.ts +3 -0
- package/dist/types/src/index.d.ts +17 -0
- package/dist/types/src/manipulation.d.ts +25 -0
- package/dist/types/src/queries.d.ts +87 -0
- package/dist/types/src/string.d.ts +35 -0
- package/dist/types/src/types.d.ts +132 -0
- package/dist/types/src/utils.d.ts +4 -0
- package/dist/types/src/weekStartData.d.ts +97 -0
- package/package.json +26 -11
- package/src/CalendarDate.ts +2 -0
- package/src/conversion.ts +10 -3
- package/src/index.ts +2 -0
- package/src/queries.ts +9 -3
- package/dist/CalendarDate.main.js.map +0 -1
- package/dist/CalendarDate.module.js.map +0 -1
- package/dist/DateFormatter.main.js.map +0 -1
- package/dist/IslamicCalendar.main.js +0 -168
- package/dist/IslamicCalendar.main.js.map +0 -1
- package/dist/IslamicCalendar.mjs +0 -161
- package/dist/IslamicCalendar.module.js +0 -161
- package/dist/TaiwanCalendar.module.js +0 -75
- package/dist/conversion.main.js +0 -236
- package/dist/conversion.main.js.map +0 -1
- package/dist/conversion.mjs +0 -218
- package/dist/conversion.module.js +0 -218
- package/dist/conversion.module.js.map +0 -1
- package/dist/createCalendar.main.js +0 -69
- package/dist/createCalendar.mjs +0 -64
- package/dist/createCalendar.module.js +0 -64
- package/dist/import.mjs +0 -45
- package/dist/main.js +0 -112
- package/dist/main.js.map +0 -1
- package/dist/manipulation.main.js.map +0 -1
- package/dist/module.js +0 -45
- package/dist/module.js.map +0 -1
- package/dist/queries.main.js +0 -354
- package/dist/queries.main.js.map +0 -1
- package/dist/queries.mjs +0 -320
- package/dist/queries.module.js +0 -320
- package/dist/queries.module.js.map +0 -1
- package/dist/string.main.js +0 -190
- package/dist/string.main.js.map +0 -1
- package/dist/string.module.js +0 -175
- package/dist/types.d.ts +0 -668
- package/dist/types.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/@internationalized/date/src/calendars/HebrewCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst HEBREW_EPOCH = 347997;\n\n// Hebrew date calculations are performed in terms of days, hours, and\n// \"parts\" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.\nconst HOUR_PARTS = 1080;\nconst DAY_PARTS = 24 * HOUR_PARTS;\n\n// An approximate value for the length of a lunar month.\n// It is used to calculate the approximate year and month of a given\n// absolute date.\nconst MONTH_DAYS = 29;\nconst MONTH_FRACT = 12 * HOUR_PARTS + 793;\nconst MONTH_PARTS = MONTH_DAYS * DAY_PARTS + MONTH_FRACT;\n\nfunction isLeapYear(year: number) {\n return mod(year * 7 + 1, 19) < 7;\n}\n\n// Test for delay of start of new year and to avoid\n// Sunday, Wednesday, and Friday as start of the new year.\nfunction hebrewDelay1(year: number) {\n let months = Math.floor((235 * year - 234) / 19);\n let parts = 12084 + 13753 * months;\n let day = months * 29 + Math.floor(parts / 25920);\n\n if (mod(3 * (day + 1), 7) < 3) {\n day += 1;\n }\n\n return day;\n}\n\n// Check for delay in start of new year due to length of adjacent years\nfunction hebrewDelay2(year: number) {\n let last = hebrewDelay1(year - 1);\n let present = hebrewDelay1(year);\n let next = hebrewDelay1(year + 1);\n\n if (next - present === 356) {\n return 2;\n }\n\n if (present - last === 382) {\n return 1;\n }\n\n return 0;\n}\n\nfunction startOfYear(year: number) {\n return hebrewDelay1(year) + hebrewDelay2(year);\n}\n\nfunction getDaysInYear(year: number) {\n return startOfYear(year + 1) - startOfYear(year);\n}\n\nfunction getYearType(year: number) {\n let yearLength = getDaysInYear(year);\n\n if (yearLength > 380) {\n yearLength -= 30; // Subtract length of leap month.\n }\n\n switch (yearLength) {\n case 353:\n return 0; // deficient\n case 354:\n return 1; // normal\n case 355:\n return 2; // complete\n }\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n // Normalize month numbers from 1 - 13, even on non-leap years\n if (month >= 6 && !isLeapYear(year)) {\n month++;\n }\n\n // First of all, dispose of fixed-length 29 day months\n if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) {\n return 29;\n }\n\n let yearType = getYearType(year);\n\n // If it's Heshvan, days depend on length of year\n if (month === 2) {\n return yearType === 2 ? 30 : 29;\n }\n\n // Similarly, Kislev varies with the length of year\n if (month === 3) {\n return yearType === 0 ? 29 : 30;\n }\n\n // Adar I only exists in leap years\n if (month === 6) {\n return isLeapYear(year) ? 30 : 0;\n }\n\n return 30;\n}\n\n/**\n * The Hebrew calendar is used in Israel and around the world by the Jewish faith.\n * Years include either 12 or 13 months depending on whether it is a leap year.\n * In leap years, an extra month is inserted at month 6.\n */\nexport class HebrewCalendar implements Calendar {\n identifier: CalendarIdentifier = 'hebrew';\n\n fromJulianDay(jd: number): CalendarDate {\n let d = jd - HEBREW_EPOCH;\n let m = (d * DAY_PARTS) / MONTH_PARTS; // Months (approx)\n let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)\n let ys = startOfYear(year); // 1st day of year\n let dayOfYear = Math.floor(d - ys);\n\n // Because of the postponement rules, it's possible to guess wrong. Fix it.\n while (dayOfYear < 1) {\n year--;\n ys = startOfYear(year);\n dayOfYear = Math.floor(d - ys);\n }\n\n // Now figure out which month we're in, and the date within that month\n let month = 1;\n let monthStart = 0;\n while (monthStart < dayOfYear) {\n monthStart += getDaysInMonth(year, month);\n month++;\n }\n\n month--;\n monthStart -= getDaysInMonth(year, month);\n\n let day = dayOfYear - monthStart;\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let jd = startOfYear(date.year);\n for (let month = 1; month < date.month; month++) {\n jd += getDaysInMonth(date.year, month);\n }\n\n return jd + date.day + HEBREW_EPOCH;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 13 : 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return getDaysInYear(date.year);\n }\n\n getMaximumMonthsInYear(): number {\n return 13;\n }\n\n getMaximumDaysInMonth(): number {\n return 30;\n }\n\n getYearsInEra(): number {\n // 6239 gregorian\n return 9999;\n }\n\n getEras(): string[] {\n return ['AM'];\n }\n\n balanceYearMonth(date: Mutable<AnyCalendarDate>, previousDate: AnyCalendarDate): void {\n // Keep date in the same month when switching between leap years and non leap years\n if (previousDate.year !== date.year) {\n if (isLeapYear(previousDate.year) && !isLeapYear(date.year) && previousDate.month > 6) {\n date.month--;\n } else if (!isLeapYear(previousDate.year) && isLeapYear(date.year) && previousDate.month > 6) {\n date.month++;\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"HebrewCalendar.
|
|
1
|
+
{"mappings":"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","sources":["packages/@internationalized/date/src/calendars/HebrewCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst HEBREW_EPOCH = 347997;\n\n// Hebrew date calculations are performed in terms of days, hours, and\n// \"parts\" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.\nconst HOUR_PARTS = 1080;\nconst DAY_PARTS = 24 * HOUR_PARTS;\n\n// An approximate value for the length of a lunar month.\n// It is used to calculate the approximate year and month of a given\n// absolute date.\nconst MONTH_DAYS = 29;\nconst MONTH_FRACT = 12 * HOUR_PARTS + 793;\nconst MONTH_PARTS = MONTH_DAYS * DAY_PARTS + MONTH_FRACT;\n\nfunction isLeapYear(year: number) {\n return mod(year * 7 + 1, 19) < 7;\n}\n\n// Test for delay of start of new year and to avoid\n// Sunday, Wednesday, and Friday as start of the new year.\nfunction hebrewDelay1(year: number) {\n let months = Math.floor((235 * year - 234) / 19);\n let parts = 12084 + 13753 * months;\n let day = months * 29 + Math.floor(parts / 25920);\n\n if (mod(3 * (day + 1), 7) < 3) {\n day += 1;\n }\n\n return day;\n}\n\n// Check for delay in start of new year due to length of adjacent years\nfunction hebrewDelay2(year: number) {\n let last = hebrewDelay1(year - 1);\n let present = hebrewDelay1(year);\n let next = hebrewDelay1(year + 1);\n\n if (next - present === 356) {\n return 2;\n }\n\n if (present - last === 382) {\n return 1;\n }\n\n return 0;\n}\n\nfunction startOfYear(year: number) {\n return hebrewDelay1(year) + hebrewDelay2(year);\n}\n\nfunction getDaysInYear(year: number) {\n return startOfYear(year + 1) - startOfYear(year);\n}\n\nfunction getYearType(year: number) {\n let yearLength = getDaysInYear(year);\n\n if (yearLength > 380) {\n yearLength -= 30; // Subtract length of leap month.\n }\n\n switch (yearLength) {\n case 353:\n return 0; // deficient\n case 354:\n return 1; // normal\n case 355:\n return 2; // complete\n }\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n // Normalize month numbers from 1 - 13, even on non-leap years\n if (month >= 6 && !isLeapYear(year)) {\n month++;\n }\n\n // First of all, dispose of fixed-length 29 day months\n if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) {\n return 29;\n }\n\n let yearType = getYearType(year);\n\n // If it's Heshvan, days depend on length of year\n if (month === 2) {\n return yearType === 2 ? 30 : 29;\n }\n\n // Similarly, Kislev varies with the length of year\n if (month === 3) {\n return yearType === 0 ? 29 : 30;\n }\n\n // Adar I only exists in leap years\n if (month === 6) {\n return isLeapYear(year) ? 30 : 0;\n }\n\n return 30;\n}\n\n/**\n * The Hebrew calendar is used in Israel and around the world by the Jewish faith.\n * Years include either 12 or 13 months depending on whether it is a leap year.\n * In leap years, an extra month is inserted at month 6.\n */\nexport class HebrewCalendar implements Calendar {\n identifier: CalendarIdentifier = 'hebrew';\n\n fromJulianDay(jd: number): CalendarDate {\n let d = jd - HEBREW_EPOCH;\n let m = (d * DAY_PARTS) / MONTH_PARTS; // Months (approx)\n let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)\n let ys = startOfYear(year); // 1st day of year\n let dayOfYear = Math.floor(d - ys);\n\n // Because of the postponement rules, it's possible to guess wrong. Fix it.\n while (dayOfYear < 1) {\n year--;\n ys = startOfYear(year);\n dayOfYear = Math.floor(d - ys);\n }\n\n // Now figure out which month we're in, and the date within that month\n let month = 1;\n let monthStart = 0;\n while (monthStart < dayOfYear) {\n monthStart += getDaysInMonth(year, month);\n month++;\n }\n\n month--;\n monthStart -= getDaysInMonth(year, month);\n\n let day = dayOfYear - monthStart;\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let jd = startOfYear(date.year);\n for (let month = 1; month < date.month; month++) {\n jd += getDaysInMonth(date.year, month);\n }\n\n return jd + date.day + HEBREW_EPOCH;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 13 : 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return getDaysInYear(date.year);\n }\n\n getMaximumMonthsInYear(): number {\n return 13;\n }\n\n getMaximumDaysInMonth(): number {\n return 30;\n }\n\n getYearsInEra(): number {\n // 6239 gregorian\n return 9999;\n }\n\n getEras(): string[] {\n return ['AM'];\n }\n\n balanceYearMonth(date: Mutable<AnyCalendarDate>, previousDate: AnyCalendarDate): void {\n // Keep date in the same month when switching between leap years and non leap years\n if (previousDate.year !== date.year) {\n if (isLeapYear(previousDate.year) && !isLeapYear(date.year) && previousDate.month > 6) {\n date.month--;\n } else if (!isLeapYear(previousDate.year) && isLeapYear(date.year) && previousDate.month > 6) {\n date.month++;\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"HebrewCalendar.cjs.map"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {CalendarDate as $
|
|
2
|
-
import {mod as $
|
|
1
|
+
import {CalendarDate as $9a4e222e1bd2b190$export$99faa760c7908e4f} from "../CalendarDate.js";
|
|
2
|
+
import {mod as $1797f75f9a4d3bd4$export$842a2cf37af977e1} from "../utils.js";
|
|
3
3
|
|
|
4
4
|
/*
|
|
5
5
|
* Copyright 2020 Adobe. All rights reserved.
|
|
@@ -15,46 +15,46 @@ import {mod as $2b4dce13dd5a17fa$export$842a2cf37af977e1} from "./utils.module.j
|
|
|
15
15
|
// Original licensing can be found in the NOTICE file in the root directory of this source tree.
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
const $
|
|
18
|
+
const $f6eb69e87cd1adc1$var$HEBREW_EPOCH = 347997;
|
|
19
19
|
// Hebrew date calculations are performed in terms of days, hours, and
|
|
20
20
|
// "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
|
|
21
|
-
const $
|
|
22
|
-
const $
|
|
21
|
+
const $f6eb69e87cd1adc1$var$HOUR_PARTS = 1080;
|
|
22
|
+
const $f6eb69e87cd1adc1$var$DAY_PARTS = 24 * $f6eb69e87cd1adc1$var$HOUR_PARTS;
|
|
23
23
|
// An approximate value for the length of a lunar month.
|
|
24
24
|
// It is used to calculate the approximate year and month of a given
|
|
25
25
|
// absolute date.
|
|
26
|
-
const $
|
|
27
|
-
const $
|
|
28
|
-
const $
|
|
29
|
-
function $
|
|
30
|
-
return (0, $
|
|
26
|
+
const $f6eb69e87cd1adc1$var$MONTH_DAYS = 29;
|
|
27
|
+
const $f6eb69e87cd1adc1$var$MONTH_FRACT = 12 * $f6eb69e87cd1adc1$var$HOUR_PARTS + 793;
|
|
28
|
+
const $f6eb69e87cd1adc1$var$MONTH_PARTS = $f6eb69e87cd1adc1$var$MONTH_DAYS * $f6eb69e87cd1adc1$var$DAY_PARTS + $f6eb69e87cd1adc1$var$MONTH_FRACT;
|
|
29
|
+
function $f6eb69e87cd1adc1$var$isLeapYear(year) {
|
|
30
|
+
return (0, $1797f75f9a4d3bd4$export$842a2cf37af977e1)(year * 7 + 1, 19) < 7;
|
|
31
31
|
}
|
|
32
32
|
// Test for delay of start of new year and to avoid
|
|
33
33
|
// Sunday, Wednesday, and Friday as start of the new year.
|
|
34
|
-
function $
|
|
34
|
+
function $f6eb69e87cd1adc1$var$hebrewDelay1(year) {
|
|
35
35
|
let months = Math.floor((235 * year - 234) / 19);
|
|
36
36
|
let parts = 12084 + 13753 * months;
|
|
37
37
|
let day = months * 29 + Math.floor(parts / 25920);
|
|
38
|
-
if ((0, $
|
|
38
|
+
if ((0, $1797f75f9a4d3bd4$export$842a2cf37af977e1)(3 * (day + 1), 7) < 3) day += 1;
|
|
39
39
|
return day;
|
|
40
40
|
}
|
|
41
41
|
// Check for delay in start of new year due to length of adjacent years
|
|
42
|
-
function $
|
|
43
|
-
let last = $
|
|
44
|
-
let present = $
|
|
45
|
-
let next = $
|
|
42
|
+
function $f6eb69e87cd1adc1$var$hebrewDelay2(year) {
|
|
43
|
+
let last = $f6eb69e87cd1adc1$var$hebrewDelay1(year - 1);
|
|
44
|
+
let present = $f6eb69e87cd1adc1$var$hebrewDelay1(year);
|
|
45
|
+
let next = $f6eb69e87cd1adc1$var$hebrewDelay1(year + 1);
|
|
46
46
|
if (next - present === 356) return 2;
|
|
47
47
|
if (present - last === 382) return 1;
|
|
48
48
|
return 0;
|
|
49
49
|
}
|
|
50
|
-
function $
|
|
51
|
-
return $
|
|
50
|
+
function $f6eb69e87cd1adc1$var$startOfYear(year) {
|
|
51
|
+
return $f6eb69e87cd1adc1$var$hebrewDelay1(year) + $f6eb69e87cd1adc1$var$hebrewDelay2(year);
|
|
52
52
|
}
|
|
53
|
-
function $
|
|
54
|
-
return $
|
|
53
|
+
function $f6eb69e87cd1adc1$var$getDaysInYear(year) {
|
|
54
|
+
return $f6eb69e87cd1adc1$var$startOfYear(year + 1) - $f6eb69e87cd1adc1$var$startOfYear(year);
|
|
55
55
|
}
|
|
56
|
-
function $
|
|
57
|
-
let yearLength = $
|
|
56
|
+
function $f6eb69e87cd1adc1$var$getYearType(year) {
|
|
57
|
+
let yearLength = $f6eb69e87cd1adc1$var$getDaysInYear(year);
|
|
58
58
|
if (yearLength > 380) yearLength -= 30; // Subtract length of leap month.
|
|
59
59
|
switch(yearLength){
|
|
60
60
|
case 353:
|
|
@@ -65,58 +65,58 @@ function $7c5f6fbf42389787$var$getYearType(year) {
|
|
|
65
65
|
return 2; // complete
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
function $
|
|
68
|
+
function $f6eb69e87cd1adc1$var$getDaysInMonth(year, month) {
|
|
69
69
|
// Normalize month numbers from 1 - 13, even on non-leap years
|
|
70
|
-
if (month >= 6 && !$
|
|
70
|
+
if (month >= 6 && !$f6eb69e87cd1adc1$var$isLeapYear(year)) month++;
|
|
71
71
|
// First of all, dispose of fixed-length 29 day months
|
|
72
72
|
if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) return 29;
|
|
73
|
-
let yearType = $
|
|
73
|
+
let yearType = $f6eb69e87cd1adc1$var$getYearType(year);
|
|
74
74
|
// If it's Heshvan, days depend on length of year
|
|
75
75
|
if (month === 2) return yearType === 2 ? 30 : 29;
|
|
76
76
|
// Similarly, Kislev varies with the length of year
|
|
77
77
|
if (month === 3) return yearType === 0 ? 29 : 30;
|
|
78
78
|
// Adar I only exists in leap years
|
|
79
|
-
if (month === 6) return $
|
|
79
|
+
if (month === 6) return $f6eb69e87cd1adc1$var$isLeapYear(year) ? 30 : 0;
|
|
80
80
|
return 30;
|
|
81
81
|
}
|
|
82
|
-
class $
|
|
82
|
+
class $f6eb69e87cd1adc1$export$ca405048b8fb5af {
|
|
83
83
|
fromJulianDay(jd) {
|
|
84
|
-
let d = jd - $
|
|
85
|
-
let m = d * $
|
|
84
|
+
let d = jd - $f6eb69e87cd1adc1$var$HEBREW_EPOCH;
|
|
85
|
+
let m = d * $f6eb69e87cd1adc1$var$DAY_PARTS / $f6eb69e87cd1adc1$var$MONTH_PARTS; // Months (approx)
|
|
86
86
|
let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)
|
|
87
|
-
let ys = $
|
|
87
|
+
let ys = $f6eb69e87cd1adc1$var$startOfYear(year); // 1st day of year
|
|
88
88
|
let dayOfYear = Math.floor(d - ys);
|
|
89
89
|
// Because of the postponement rules, it's possible to guess wrong. Fix it.
|
|
90
90
|
while(dayOfYear < 1){
|
|
91
91
|
year--;
|
|
92
|
-
ys = $
|
|
92
|
+
ys = $f6eb69e87cd1adc1$var$startOfYear(year);
|
|
93
93
|
dayOfYear = Math.floor(d - ys);
|
|
94
94
|
}
|
|
95
95
|
// Now figure out which month we're in, and the date within that month
|
|
96
96
|
let month = 1;
|
|
97
97
|
let monthStart = 0;
|
|
98
98
|
while(monthStart < dayOfYear){
|
|
99
|
-
monthStart += $
|
|
99
|
+
monthStart += $f6eb69e87cd1adc1$var$getDaysInMonth(year, month);
|
|
100
100
|
month++;
|
|
101
101
|
}
|
|
102
102
|
month--;
|
|
103
|
-
monthStart -= $
|
|
103
|
+
monthStart -= $f6eb69e87cd1adc1$var$getDaysInMonth(year, month);
|
|
104
104
|
let day = dayOfYear - monthStart;
|
|
105
|
-
return new (0, $
|
|
105
|
+
return new (0, $9a4e222e1bd2b190$export$99faa760c7908e4f)(this, year, month, day);
|
|
106
106
|
}
|
|
107
107
|
toJulianDay(date) {
|
|
108
|
-
let jd = $
|
|
109
|
-
for(let month = 1; month < date.month; month++)jd += $
|
|
110
|
-
return jd + date.day + $
|
|
108
|
+
let jd = $f6eb69e87cd1adc1$var$startOfYear(date.year);
|
|
109
|
+
for(let month = 1; month < date.month; month++)jd += $f6eb69e87cd1adc1$var$getDaysInMonth(date.year, month);
|
|
110
|
+
return jd + date.day + $f6eb69e87cd1adc1$var$HEBREW_EPOCH;
|
|
111
111
|
}
|
|
112
112
|
getDaysInMonth(date) {
|
|
113
|
-
return $
|
|
113
|
+
return $f6eb69e87cd1adc1$var$getDaysInMonth(date.year, date.month);
|
|
114
114
|
}
|
|
115
115
|
getMonthsInYear(date) {
|
|
116
|
-
return $
|
|
116
|
+
return $f6eb69e87cd1adc1$var$isLeapYear(date.year) ? 13 : 12;
|
|
117
117
|
}
|
|
118
118
|
getDaysInYear(date) {
|
|
119
|
-
return $
|
|
119
|
+
return $f6eb69e87cd1adc1$var$getDaysInYear(date.year);
|
|
120
120
|
}
|
|
121
121
|
getMaximumMonthsInYear() {
|
|
122
122
|
return 13;
|
|
@@ -136,8 +136,8 @@ class $7c5f6fbf42389787$export$ca405048b8fb5af {
|
|
|
136
136
|
balanceYearMonth(date, previousDate) {
|
|
137
137
|
// Keep date in the same month when switching between leap years and non leap years
|
|
138
138
|
if (previousDate.year !== date.year) {
|
|
139
|
-
if ($
|
|
140
|
-
else if (!$
|
|
139
|
+
if ($f6eb69e87cd1adc1$var$isLeapYear(previousDate.year) && !$f6eb69e87cd1adc1$var$isLeapYear(date.year) && previousDate.month > 6) date.month--;
|
|
140
|
+
else if (!$f6eb69e87cd1adc1$var$isLeapYear(previousDate.year) && $f6eb69e87cd1adc1$var$isLeapYear(date.year) && previousDate.month > 6) date.month++;
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
constructor(){
|
|
@@ -146,5 +146,5 @@ class $7c5f6fbf42389787$export$ca405048b8fb5af {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
|
|
149
|
-
export {$
|
|
150
|
-
//# sourceMappingURL=HebrewCalendar.
|
|
149
|
+
export {$f6eb69e87cd1adc1$export$ca405048b8fb5af as HebrewCalendar};
|
|
150
|
+
//# sourceMappingURL=HebrewCalendar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/@internationalized/date/src/calendars/HebrewCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst HEBREW_EPOCH = 347997;\n\n// Hebrew date calculations are performed in terms of days, hours, and\n// \"parts\" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.\nconst HOUR_PARTS = 1080;\nconst DAY_PARTS = 24 * HOUR_PARTS;\n\n// An approximate value for the length of a lunar month.\n// It is used to calculate the approximate year and month of a given\n// absolute date.\nconst MONTH_DAYS = 29;\nconst MONTH_FRACT = 12 * HOUR_PARTS + 793;\nconst MONTH_PARTS = MONTH_DAYS * DAY_PARTS + MONTH_FRACT;\n\nfunction isLeapYear(year: number) {\n return mod(year * 7 + 1, 19) < 7;\n}\n\n// Test for delay of start of new year and to avoid\n// Sunday, Wednesday, and Friday as start of the new year.\nfunction hebrewDelay1(year: number) {\n let months = Math.floor((235 * year - 234) / 19);\n let parts = 12084 + 13753 * months;\n let day = months * 29 + Math.floor(parts / 25920);\n\n if (mod(3 * (day + 1), 7) < 3) {\n day += 1;\n }\n\n return day;\n}\n\n// Check for delay in start of new year due to length of adjacent years\nfunction hebrewDelay2(year: number) {\n let last = hebrewDelay1(year - 1);\n let present = hebrewDelay1(year);\n let next = hebrewDelay1(year + 1);\n\n if (next - present === 356) {\n return 2;\n }\n\n if (present - last === 382) {\n return 1;\n }\n\n return 0;\n}\n\nfunction startOfYear(year: number) {\n return hebrewDelay1(year) + hebrewDelay2(year);\n}\n\nfunction getDaysInYear(year: number) {\n return startOfYear(year + 1) - startOfYear(year);\n}\n\nfunction getYearType(year: number) {\n let yearLength = getDaysInYear(year);\n\n if (yearLength > 380) {\n yearLength -= 30; // Subtract length of leap month.\n }\n\n switch (yearLength) {\n case 353:\n return 0; // deficient\n case 354:\n return 1; // normal\n case 355:\n return 2; // complete\n }\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n // Normalize month numbers from 1 - 13, even on non-leap years\n if (month >= 6 && !isLeapYear(year)) {\n month++;\n }\n\n // First of all, dispose of fixed-length 29 day months\n if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) {\n return 29;\n }\n\n let yearType = getYearType(year);\n\n // If it's Heshvan, days depend on length of year\n if (month === 2) {\n return yearType === 2 ? 30 : 29;\n }\n\n // Similarly, Kislev varies with the length of year\n if (month === 3) {\n return yearType === 0 ? 29 : 30;\n }\n\n // Adar I only exists in leap years\n if (month === 6) {\n return isLeapYear(year) ? 30 : 0;\n }\n\n return 30;\n}\n\n/**\n * The Hebrew calendar is used in Israel and around the world by the Jewish faith.\n * Years include either 12 or 13 months depending on whether it is a leap year.\n * In leap years, an extra month is inserted at month 6.\n */\nexport class HebrewCalendar implements Calendar {\n identifier: CalendarIdentifier = 'hebrew';\n\n fromJulianDay(jd: number): CalendarDate {\n let d = jd - HEBREW_EPOCH;\n let m = (d * DAY_PARTS) / MONTH_PARTS; // Months (approx)\n let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)\n let ys = startOfYear(year); // 1st day of year\n let dayOfYear = Math.floor(d - ys);\n\n // Because of the postponement rules, it's possible to guess wrong. Fix it.\n while (dayOfYear < 1) {\n year--;\n ys = startOfYear(year);\n dayOfYear = Math.floor(d - ys);\n }\n\n // Now figure out which month we're in, and the date within that month\n let month = 1;\n let monthStart = 0;\n while (monthStart < dayOfYear) {\n monthStart += getDaysInMonth(year, month);\n month++;\n }\n\n month--;\n monthStart -= getDaysInMonth(year, month);\n\n let day = dayOfYear - monthStart;\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let jd = startOfYear(date.year);\n for (let month = 1; month < date.month; month++) {\n jd += getDaysInMonth(date.year, month);\n }\n\n return jd + date.day + HEBREW_EPOCH;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 13 : 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return getDaysInYear(date.year);\n }\n\n getMaximumMonthsInYear(): number {\n return 13;\n }\n\n getMaximumDaysInMonth(): number {\n return 30;\n }\n\n getYearsInEra(): number {\n // 6239 gregorian\n return 9999;\n }\n\n getEras(): string[] {\n return ['AM'];\n }\n\n balanceYearMonth(date: Mutable<AnyCalendarDate>, previousDate: AnyCalendarDate): void {\n // Keep date in the same month when switching between leap years and non leap years\n if (previousDate.year !== date.year) {\n if (isLeapYear(previousDate.year) && !isLeapYear(date.year) && previousDate.month > 6) {\n date.month--;\n } else if (!isLeapYear(previousDate.year) && isLeapYear(date.year) && previousDate.month > 6) {\n date.month++;\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"HebrewCalendar.
|
|
1
|
+
{"mappings":"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","sources":["packages/@internationalized/date/src/calendars/HebrewCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst HEBREW_EPOCH = 347997;\n\n// Hebrew date calculations are performed in terms of days, hours, and\n// \"parts\" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.\nconst HOUR_PARTS = 1080;\nconst DAY_PARTS = 24 * HOUR_PARTS;\n\n// An approximate value for the length of a lunar month.\n// It is used to calculate the approximate year and month of a given\n// absolute date.\nconst MONTH_DAYS = 29;\nconst MONTH_FRACT = 12 * HOUR_PARTS + 793;\nconst MONTH_PARTS = MONTH_DAYS * DAY_PARTS + MONTH_FRACT;\n\nfunction isLeapYear(year: number) {\n return mod(year * 7 + 1, 19) < 7;\n}\n\n// Test for delay of start of new year and to avoid\n// Sunday, Wednesday, and Friday as start of the new year.\nfunction hebrewDelay1(year: number) {\n let months = Math.floor((235 * year - 234) / 19);\n let parts = 12084 + 13753 * months;\n let day = months * 29 + Math.floor(parts / 25920);\n\n if (mod(3 * (day + 1), 7) < 3) {\n day += 1;\n }\n\n return day;\n}\n\n// Check for delay in start of new year due to length of adjacent years\nfunction hebrewDelay2(year: number) {\n let last = hebrewDelay1(year - 1);\n let present = hebrewDelay1(year);\n let next = hebrewDelay1(year + 1);\n\n if (next - present === 356) {\n return 2;\n }\n\n if (present - last === 382) {\n return 1;\n }\n\n return 0;\n}\n\nfunction startOfYear(year: number) {\n return hebrewDelay1(year) + hebrewDelay2(year);\n}\n\nfunction getDaysInYear(year: number) {\n return startOfYear(year + 1) - startOfYear(year);\n}\n\nfunction getYearType(year: number) {\n let yearLength = getDaysInYear(year);\n\n if (yearLength > 380) {\n yearLength -= 30; // Subtract length of leap month.\n }\n\n switch (yearLength) {\n case 353:\n return 0; // deficient\n case 354:\n return 1; // normal\n case 355:\n return 2; // complete\n }\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n // Normalize month numbers from 1 - 13, even on non-leap years\n if (month >= 6 && !isLeapYear(year)) {\n month++;\n }\n\n // First of all, dispose of fixed-length 29 day months\n if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) {\n return 29;\n }\n\n let yearType = getYearType(year);\n\n // If it's Heshvan, days depend on length of year\n if (month === 2) {\n return yearType === 2 ? 30 : 29;\n }\n\n // Similarly, Kislev varies with the length of year\n if (month === 3) {\n return yearType === 0 ? 29 : 30;\n }\n\n // Adar I only exists in leap years\n if (month === 6) {\n return isLeapYear(year) ? 30 : 0;\n }\n\n return 30;\n}\n\n/**\n * The Hebrew calendar is used in Israel and around the world by the Jewish faith.\n * Years include either 12 or 13 months depending on whether it is a leap year.\n * In leap years, an extra month is inserted at month 6.\n */\nexport class HebrewCalendar implements Calendar {\n identifier: CalendarIdentifier = 'hebrew';\n\n fromJulianDay(jd: number): CalendarDate {\n let d = jd - HEBREW_EPOCH;\n let m = (d * DAY_PARTS) / MONTH_PARTS; // Months (approx)\n let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)\n let ys = startOfYear(year); // 1st day of year\n let dayOfYear = Math.floor(d - ys);\n\n // Because of the postponement rules, it's possible to guess wrong. Fix it.\n while (dayOfYear < 1) {\n year--;\n ys = startOfYear(year);\n dayOfYear = Math.floor(d - ys);\n }\n\n // Now figure out which month we're in, and the date within that month\n let month = 1;\n let monthStart = 0;\n while (monthStart < dayOfYear) {\n monthStart += getDaysInMonth(year, month);\n month++;\n }\n\n month--;\n monthStart -= getDaysInMonth(year, month);\n\n let day = dayOfYear - monthStart;\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let jd = startOfYear(date.year);\n for (let month = 1; month < date.month; month++) {\n jd += getDaysInMonth(date.year, month);\n }\n\n return jd + date.day + HEBREW_EPOCH;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 13 : 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return getDaysInYear(date.year);\n }\n\n getMaximumMonthsInYear(): number {\n return 13;\n }\n\n getMaximumDaysInMonth(): number {\n return 30;\n }\n\n getYearsInEra(): number {\n // 6239 gregorian\n return 9999;\n }\n\n getEras(): string[] {\n return ['AM'];\n }\n\n balanceYearMonth(date: Mutable<AnyCalendarDate>, previousDate: AnyCalendarDate): void {\n // Keep date in the same month when switching between leap years and non leap years\n if (previousDate.year !== date.year) {\n if (isLeapYear(previousDate.year) && !isLeapYear(date.year) && previousDate.month > 6) {\n date.month--;\n } else if (!isLeapYear(previousDate.year) && isLeapYear(date.year) && previousDate.month > 6) {\n date.month++;\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"HebrewCalendar.js.map"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {CalendarDate as $
|
|
2
|
-
import {mod as $
|
|
1
|
+
import {CalendarDate as $2aaf608024c21ca1$export$99faa760c7908e4f} from "../CalendarDate.mjs";
|
|
2
|
+
import {mod as $09ec6a572d60460f$export$842a2cf37af977e1} from "../utils.mjs";
|
|
3
3
|
|
|
4
4
|
/*
|
|
5
5
|
* Copyright 2020 Adobe. All rights reserved.
|
|
@@ -15,46 +15,46 @@ import {mod as $2b4dce13dd5a17fa$export$842a2cf37af977e1} from "./utils.mjs";
|
|
|
15
15
|
// Original licensing can be found in the NOTICE file in the root directory of this source tree.
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
const $
|
|
18
|
+
const $f39495b96f9dbac6$var$HEBREW_EPOCH = 347997;
|
|
19
19
|
// Hebrew date calculations are performed in terms of days, hours, and
|
|
20
20
|
// "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
|
|
21
|
-
const $
|
|
22
|
-
const $
|
|
21
|
+
const $f39495b96f9dbac6$var$HOUR_PARTS = 1080;
|
|
22
|
+
const $f39495b96f9dbac6$var$DAY_PARTS = 24 * $f39495b96f9dbac6$var$HOUR_PARTS;
|
|
23
23
|
// An approximate value for the length of a lunar month.
|
|
24
24
|
// It is used to calculate the approximate year and month of a given
|
|
25
25
|
// absolute date.
|
|
26
|
-
const $
|
|
27
|
-
const $
|
|
28
|
-
const $
|
|
29
|
-
function $
|
|
30
|
-
return (0, $
|
|
26
|
+
const $f39495b96f9dbac6$var$MONTH_DAYS = 29;
|
|
27
|
+
const $f39495b96f9dbac6$var$MONTH_FRACT = 12 * $f39495b96f9dbac6$var$HOUR_PARTS + 793;
|
|
28
|
+
const $f39495b96f9dbac6$var$MONTH_PARTS = $f39495b96f9dbac6$var$MONTH_DAYS * $f39495b96f9dbac6$var$DAY_PARTS + $f39495b96f9dbac6$var$MONTH_FRACT;
|
|
29
|
+
function $f39495b96f9dbac6$var$isLeapYear(year) {
|
|
30
|
+
return (0, $09ec6a572d60460f$export$842a2cf37af977e1)(year * 7 + 1, 19) < 7;
|
|
31
31
|
}
|
|
32
32
|
// Test for delay of start of new year and to avoid
|
|
33
33
|
// Sunday, Wednesday, and Friday as start of the new year.
|
|
34
|
-
function $
|
|
34
|
+
function $f39495b96f9dbac6$var$hebrewDelay1(year) {
|
|
35
35
|
let months = Math.floor((235 * year - 234) / 19);
|
|
36
36
|
let parts = 12084 + 13753 * months;
|
|
37
37
|
let day = months * 29 + Math.floor(parts / 25920);
|
|
38
|
-
if ((0, $
|
|
38
|
+
if ((0, $09ec6a572d60460f$export$842a2cf37af977e1)(3 * (day + 1), 7) < 3) day += 1;
|
|
39
39
|
return day;
|
|
40
40
|
}
|
|
41
41
|
// Check for delay in start of new year due to length of adjacent years
|
|
42
|
-
function $
|
|
43
|
-
let last = $
|
|
44
|
-
let present = $
|
|
45
|
-
let next = $
|
|
42
|
+
function $f39495b96f9dbac6$var$hebrewDelay2(year) {
|
|
43
|
+
let last = $f39495b96f9dbac6$var$hebrewDelay1(year - 1);
|
|
44
|
+
let present = $f39495b96f9dbac6$var$hebrewDelay1(year);
|
|
45
|
+
let next = $f39495b96f9dbac6$var$hebrewDelay1(year + 1);
|
|
46
46
|
if (next - present === 356) return 2;
|
|
47
47
|
if (present - last === 382) return 1;
|
|
48
48
|
return 0;
|
|
49
49
|
}
|
|
50
|
-
function $
|
|
51
|
-
return $
|
|
50
|
+
function $f39495b96f9dbac6$var$startOfYear(year) {
|
|
51
|
+
return $f39495b96f9dbac6$var$hebrewDelay1(year) + $f39495b96f9dbac6$var$hebrewDelay2(year);
|
|
52
52
|
}
|
|
53
|
-
function $
|
|
54
|
-
return $
|
|
53
|
+
function $f39495b96f9dbac6$var$getDaysInYear(year) {
|
|
54
|
+
return $f39495b96f9dbac6$var$startOfYear(year + 1) - $f39495b96f9dbac6$var$startOfYear(year);
|
|
55
55
|
}
|
|
56
|
-
function $
|
|
57
|
-
let yearLength = $
|
|
56
|
+
function $f39495b96f9dbac6$var$getYearType(year) {
|
|
57
|
+
let yearLength = $f39495b96f9dbac6$var$getDaysInYear(year);
|
|
58
58
|
if (yearLength > 380) yearLength -= 30; // Subtract length of leap month.
|
|
59
59
|
switch(yearLength){
|
|
60
60
|
case 353:
|
|
@@ -65,58 +65,58 @@ function $7c5f6fbf42389787$var$getYearType(year) {
|
|
|
65
65
|
return 2; // complete
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
function $
|
|
68
|
+
function $f39495b96f9dbac6$var$getDaysInMonth(year, month) {
|
|
69
69
|
// Normalize month numbers from 1 - 13, even on non-leap years
|
|
70
|
-
if (month >= 6 && !$
|
|
70
|
+
if (month >= 6 && !$f39495b96f9dbac6$var$isLeapYear(year)) month++;
|
|
71
71
|
// First of all, dispose of fixed-length 29 day months
|
|
72
72
|
if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) return 29;
|
|
73
|
-
let yearType = $
|
|
73
|
+
let yearType = $f39495b96f9dbac6$var$getYearType(year);
|
|
74
74
|
// If it's Heshvan, days depend on length of year
|
|
75
75
|
if (month === 2) return yearType === 2 ? 30 : 29;
|
|
76
76
|
// Similarly, Kislev varies with the length of year
|
|
77
77
|
if (month === 3) return yearType === 0 ? 29 : 30;
|
|
78
78
|
// Adar I only exists in leap years
|
|
79
|
-
if (month === 6) return $
|
|
79
|
+
if (month === 6) return $f39495b96f9dbac6$var$isLeapYear(year) ? 30 : 0;
|
|
80
80
|
return 30;
|
|
81
81
|
}
|
|
82
|
-
class $
|
|
82
|
+
class $f39495b96f9dbac6$export$ca405048b8fb5af {
|
|
83
83
|
fromJulianDay(jd) {
|
|
84
|
-
let d = jd - $
|
|
85
|
-
let m = d * $
|
|
84
|
+
let d = jd - $f39495b96f9dbac6$var$HEBREW_EPOCH;
|
|
85
|
+
let m = d * $f39495b96f9dbac6$var$DAY_PARTS / $f39495b96f9dbac6$var$MONTH_PARTS; // Months (approx)
|
|
86
86
|
let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)
|
|
87
|
-
let ys = $
|
|
87
|
+
let ys = $f39495b96f9dbac6$var$startOfYear(year); // 1st day of year
|
|
88
88
|
let dayOfYear = Math.floor(d - ys);
|
|
89
89
|
// Because of the postponement rules, it's possible to guess wrong. Fix it.
|
|
90
90
|
while(dayOfYear < 1){
|
|
91
91
|
year--;
|
|
92
|
-
ys = $
|
|
92
|
+
ys = $f39495b96f9dbac6$var$startOfYear(year);
|
|
93
93
|
dayOfYear = Math.floor(d - ys);
|
|
94
94
|
}
|
|
95
95
|
// Now figure out which month we're in, and the date within that month
|
|
96
96
|
let month = 1;
|
|
97
97
|
let monthStart = 0;
|
|
98
98
|
while(monthStart < dayOfYear){
|
|
99
|
-
monthStart += $
|
|
99
|
+
monthStart += $f39495b96f9dbac6$var$getDaysInMonth(year, month);
|
|
100
100
|
month++;
|
|
101
101
|
}
|
|
102
102
|
month--;
|
|
103
|
-
monthStart -= $
|
|
103
|
+
monthStart -= $f39495b96f9dbac6$var$getDaysInMonth(year, month);
|
|
104
104
|
let day = dayOfYear - monthStart;
|
|
105
|
-
return new (0, $
|
|
105
|
+
return new (0, $2aaf608024c21ca1$export$99faa760c7908e4f)(this, year, month, day);
|
|
106
106
|
}
|
|
107
107
|
toJulianDay(date) {
|
|
108
|
-
let jd = $
|
|
109
|
-
for(let month = 1; month < date.month; month++)jd += $
|
|
110
|
-
return jd + date.day + $
|
|
108
|
+
let jd = $f39495b96f9dbac6$var$startOfYear(date.year);
|
|
109
|
+
for(let month = 1; month < date.month; month++)jd += $f39495b96f9dbac6$var$getDaysInMonth(date.year, month);
|
|
110
|
+
return jd + date.day + $f39495b96f9dbac6$var$HEBREW_EPOCH;
|
|
111
111
|
}
|
|
112
112
|
getDaysInMonth(date) {
|
|
113
|
-
return $
|
|
113
|
+
return $f39495b96f9dbac6$var$getDaysInMonth(date.year, date.month);
|
|
114
114
|
}
|
|
115
115
|
getMonthsInYear(date) {
|
|
116
|
-
return $
|
|
116
|
+
return $f39495b96f9dbac6$var$isLeapYear(date.year) ? 13 : 12;
|
|
117
117
|
}
|
|
118
118
|
getDaysInYear(date) {
|
|
119
|
-
return $
|
|
119
|
+
return $f39495b96f9dbac6$var$getDaysInYear(date.year);
|
|
120
120
|
}
|
|
121
121
|
getMaximumMonthsInYear() {
|
|
122
122
|
return 13;
|
|
@@ -136,8 +136,8 @@ class $7c5f6fbf42389787$export$ca405048b8fb5af {
|
|
|
136
136
|
balanceYearMonth(date, previousDate) {
|
|
137
137
|
// Keep date in the same month when switching between leap years and non leap years
|
|
138
138
|
if (previousDate.year !== date.year) {
|
|
139
|
-
if ($
|
|
140
|
-
else if (!$
|
|
139
|
+
if ($f39495b96f9dbac6$var$isLeapYear(previousDate.year) && !$f39495b96f9dbac6$var$isLeapYear(date.year) && previousDate.month > 6) date.month--;
|
|
140
|
+
else if (!$f39495b96f9dbac6$var$isLeapYear(previousDate.year) && $f39495b96f9dbac6$var$isLeapYear(date.year) && previousDate.month > 6) date.month++;
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
constructor(){
|
|
@@ -146,5 +146,5 @@ class $7c5f6fbf42389787$export$ca405048b8fb5af {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
|
|
149
|
-
export {$
|
|
150
|
-
//# sourceMappingURL=HebrewCalendar.
|
|
149
|
+
export {$f39495b96f9dbac6$export$ca405048b8fb5af as HebrewCalendar};
|
|
150
|
+
//# sourceMappingURL=HebrewCalendar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/@internationalized/date/src/calendars/HebrewCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst HEBREW_EPOCH = 347997;\n\n// Hebrew date calculations are performed in terms of days, hours, and\n// \"parts\" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.\nconst HOUR_PARTS = 1080;\nconst DAY_PARTS = 24 * HOUR_PARTS;\n\n// An approximate value for the length of a lunar month.\n// It is used to calculate the approximate year and month of a given\n// absolute date.\nconst MONTH_DAYS = 29;\nconst MONTH_FRACT = 12 * HOUR_PARTS + 793;\nconst MONTH_PARTS = MONTH_DAYS * DAY_PARTS + MONTH_FRACT;\n\nfunction isLeapYear(year: number) {\n return mod(year * 7 + 1, 19) < 7;\n}\n\n// Test for delay of start of new year and to avoid\n// Sunday, Wednesday, and Friday as start of the new year.\nfunction hebrewDelay1(year: number) {\n let months = Math.floor((235 * year - 234) / 19);\n let parts = 12084 + 13753 * months;\n let day = months * 29 + Math.floor(parts / 25920);\n\n if (mod(3 * (day + 1), 7) < 3) {\n day += 1;\n }\n\n return day;\n}\n\n// Check for delay in start of new year due to length of adjacent years\nfunction hebrewDelay2(year: number) {\n let last = hebrewDelay1(year - 1);\n let present = hebrewDelay1(year);\n let next = hebrewDelay1(year + 1);\n\n if (next - present === 356) {\n return 2;\n }\n\n if (present - last === 382) {\n return 1;\n }\n\n return 0;\n}\n\nfunction startOfYear(year: number) {\n return hebrewDelay1(year) + hebrewDelay2(year);\n}\n\nfunction getDaysInYear(year: number) {\n return startOfYear(year + 1) - startOfYear(year);\n}\n\nfunction getYearType(year: number) {\n let yearLength = getDaysInYear(year);\n\n if (yearLength > 380) {\n yearLength -= 30; // Subtract length of leap month.\n }\n\n switch (yearLength) {\n case 353:\n return 0; // deficient\n case 354:\n return 1; // normal\n case 355:\n return 2; // complete\n }\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n // Normalize month numbers from 1 - 13, even on non-leap years\n if (month >= 6 && !isLeapYear(year)) {\n month++;\n }\n\n // First of all, dispose of fixed-length 29 day months\n if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) {\n return 29;\n }\n\n let yearType = getYearType(year);\n\n // If it's Heshvan, days depend on length of year\n if (month === 2) {\n return yearType === 2 ? 30 : 29;\n }\n\n // Similarly, Kislev varies with the length of year\n if (month === 3) {\n return yearType === 0 ? 29 : 30;\n }\n\n // Adar I only exists in leap years\n if (month === 6) {\n return isLeapYear(year) ? 30 : 0;\n }\n\n return 30;\n}\n\n/**\n * The Hebrew calendar is used in Israel and around the world by the Jewish faith.\n * Years include either 12 or 13 months depending on whether it is a leap year.\n * In leap years, an extra month is inserted at month 6.\n */\nexport class HebrewCalendar implements Calendar {\n identifier: CalendarIdentifier = 'hebrew';\n\n fromJulianDay(jd: number): CalendarDate {\n let d = jd - HEBREW_EPOCH;\n let m = (d * DAY_PARTS) / MONTH_PARTS; // Months (approx)\n let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)\n let ys = startOfYear(year); // 1st day of year\n let dayOfYear = Math.floor(d - ys);\n\n // Because of the postponement rules, it's possible to guess wrong. Fix it.\n while (dayOfYear < 1) {\n year--;\n ys = startOfYear(year);\n dayOfYear = Math.floor(d - ys);\n }\n\n // Now figure out which month we're in, and the date within that month\n let month = 1;\n let monthStart = 0;\n while (monthStart < dayOfYear) {\n monthStart += getDaysInMonth(year, month);\n month++;\n }\n\n month--;\n monthStart -= getDaysInMonth(year, month);\n\n let day = dayOfYear - monthStart;\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let jd = startOfYear(date.year);\n for (let month = 1; month < date.month; month++) {\n jd += getDaysInMonth(date.year, month);\n }\n\n return jd + date.day + HEBREW_EPOCH;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 13 : 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return getDaysInYear(date.year);\n }\n\n getMaximumMonthsInYear(): number {\n return 13;\n }\n\n getMaximumDaysInMonth(): number {\n return 30;\n }\n\n getYearsInEra(): number {\n // 6239 gregorian\n return 9999;\n }\n\n getEras(): string[] {\n return ['AM'];\n }\n\n balanceYearMonth(date: Mutable<AnyCalendarDate>, previousDate: AnyCalendarDate): void {\n // Keep date in the same month when switching between leap years and non leap years\n if (previousDate.year !== date.year) {\n if (isLeapYear(previousDate.year) && !isLeapYear(date.year) && previousDate.month > 6) {\n date.month--;\n } else if (!isLeapYear(previousDate.year) && isLeapYear(date.year) && previousDate.month > 6) {\n date.month++;\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"HebrewCalendar.mjs.map"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var $
|
|
2
|
-
var $
|
|
1
|
+
var $c51b7e0106f45dea$exports = require("../CalendarDate.cjs");
|
|
2
|
+
var $05031860ba2f881f$exports = require("./GregorianCalendar.cjs");
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
function $parcel$export(e, n, v, s) {
|
|
6
6
|
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
$parcel$export(module.exports, "IndianCalendar", ()
|
|
9
|
+
$parcel$export(module.exports, "IndianCalendar", function () { return $9dc8610ad30fbfe5$export$39f31c639fa15726; });
|
|
10
10
|
/*
|
|
11
11
|
* Copyright 2020 Adobe. All rights reserved.
|
|
12
12
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -22,28 +22,28 @@ $parcel$export(module.exports, "IndianCalendar", () => $5f1dfa5c67609fe6$export$
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
// Starts in 78 AD,
|
|
25
|
-
const $
|
|
25
|
+
const $9dc8610ad30fbfe5$var$INDIAN_ERA_START = 78;
|
|
26
26
|
// The Indian year starts 80 days later than the Gregorian year.
|
|
27
|
-
const $
|
|
28
|
-
class $
|
|
27
|
+
const $9dc8610ad30fbfe5$var$INDIAN_YEAR_START = 80;
|
|
28
|
+
class $9dc8610ad30fbfe5$export$39f31c639fa15726 extends (0, $05031860ba2f881f$exports.GregorianCalendar) {
|
|
29
29
|
fromJulianDay(jd) {
|
|
30
30
|
// Gregorian date for Julian day
|
|
31
31
|
let date = super.fromJulianDay(jd);
|
|
32
32
|
// Year in Saka era
|
|
33
|
-
let indianYear = date.year - $
|
|
33
|
+
let indianYear = date.year - $9dc8610ad30fbfe5$var$INDIAN_ERA_START;
|
|
34
34
|
// Day number in Gregorian year (starting from 0)
|
|
35
|
-
let yDay = jd - (0, $
|
|
35
|
+
let yDay = jd - (0, $05031860ba2f881f$exports.gregorianToJulianDay)(date.era, date.year, 1, 1);
|
|
36
36
|
let leapMonth;
|
|
37
|
-
if (yDay < $
|
|
37
|
+
if (yDay < $9dc8610ad30fbfe5$var$INDIAN_YEAR_START) {
|
|
38
38
|
// Day is at the end of the preceding Saka year
|
|
39
39
|
indianYear--;
|
|
40
40
|
// Days in leapMonth this year, previous Gregorian year
|
|
41
|
-
leapMonth = (0, $
|
|
41
|
+
leapMonth = (0, $05031860ba2f881f$exports.isLeapYear)(date.year - 1) ? 31 : 30;
|
|
42
42
|
yDay += leapMonth + 155 + 90 + 10;
|
|
43
43
|
} else {
|
|
44
44
|
// Days in leapMonth this year
|
|
45
|
-
leapMonth = (0, $
|
|
46
|
-
yDay -= $
|
|
45
|
+
leapMonth = (0, $05031860ba2f881f$exports.isLeapYear)(date.year) ? 31 : 30;
|
|
46
|
+
yDay -= $9dc8610ad30fbfe5$var$INDIAN_YEAR_START;
|
|
47
47
|
}
|
|
48
48
|
let indianMonth;
|
|
49
49
|
let indianDay;
|
|
@@ -61,19 +61,19 @@ class $5f1dfa5c67609fe6$export$39f31c639fa15726 extends (0, $af14c9812fdceb33$ex
|
|
|
61
61
|
indianDay = mDay % 30 + 1;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
return new (0, $
|
|
64
|
+
return new (0, $c51b7e0106f45dea$exports.CalendarDate)(this, indianYear, indianMonth, indianDay);
|
|
65
65
|
}
|
|
66
66
|
toJulianDay(date) {
|
|
67
|
-
let extendedYear = date.year + $
|
|
68
|
-
let [era, year] = (0, $
|
|
67
|
+
let extendedYear = date.year + $9dc8610ad30fbfe5$var$INDIAN_ERA_START;
|
|
68
|
+
let [era, year] = (0, $05031860ba2f881f$exports.fromExtendedYear)(extendedYear);
|
|
69
69
|
let leapMonth;
|
|
70
70
|
let jd;
|
|
71
|
-
if ((0, $
|
|
71
|
+
if ((0, $05031860ba2f881f$exports.isLeapYear)(year)) {
|
|
72
72
|
leapMonth = 31;
|
|
73
|
-
jd = (0, $
|
|
73
|
+
jd = (0, $05031860ba2f881f$exports.gregorianToJulianDay)(era, year, 3, 21);
|
|
74
74
|
} else {
|
|
75
75
|
leapMonth = 30;
|
|
76
|
-
jd = (0, $
|
|
76
|
+
jd = (0, $05031860ba2f881f$exports.gregorianToJulianDay)(era, year, 3, 22);
|
|
77
77
|
}
|
|
78
78
|
if (date.month === 1) return jd + date.day - 1;
|
|
79
79
|
jd += leapMonth + Math.min(date.month - 2, 5) * 31;
|
|
@@ -82,7 +82,7 @@ class $5f1dfa5c67609fe6$export$39f31c639fa15726 extends (0, $af14c9812fdceb33$ex
|
|
|
82
82
|
return jd;
|
|
83
83
|
}
|
|
84
84
|
getDaysInMonth(date) {
|
|
85
|
-
if (date.month === 1 && (0, $
|
|
85
|
+
if (date.month === 1 && (0, $05031860ba2f881f$exports.isLeapYear)(date.year + $9dc8610ad30fbfe5$var$INDIAN_ERA_START)) return 31;
|
|
86
86
|
if (date.month >= 2 && date.month <= 6) return 31;
|
|
87
87
|
return 30;
|
|
88
88
|
}
|
|
@@ -103,4 +103,4 @@ class $5f1dfa5c67609fe6$export$39f31c639fa15726 extends (0, $af14c9812fdceb33$ex
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
|
|
106
|
-
//# sourceMappingURL=IndianCalendar.
|
|
106
|
+
//# sourceMappingURL=IndianCalendar.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;AAAA;;;;;;;;;;CAUC,GAED,gEAAgE;AAChE,gGAAgG;;;AAMhG,mBAAmB;AACnB,MAAM,yCAAmB;AAEzB,gEAAgE;AAChE,MAAM,0CAAoB;AAOnB,MAAM,kDAAuB,CAAA,GAAA,2CAAgB;IAGlD,cAAc,EAAU,EAAgB;QACtC,gCAAgC;QAChC,IAAI,OAAO,KAAK,CAAC,cAAc;QAE/B,mBAAmB;QACnB,IAAI,aAAa,KAAK,IAAI,GAAG;QAE7B,iDAAiD;QACjD,IAAI,OAAO,KAAK,CAAA,GAAA,8CAAmB,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG;QAE7D,IAAI;QACJ,IAAI,OAAO,yCAAmB;YAC5B,gDAAgD;YAChD;YAEA,uDAAuD;YACvD,YAAY,CAAA,GAAA,oCAAS,EAAE,KAAK,IAAI,GAAG,KAAK,KAAK;YAC7C,QAAQ,YAAa,MAAW,KAAU;QAC5C,OAAO;YACL,8BAA8B;YAC9B,YAAY,CAAA,GAAA,oCAAS,EAAE,KAAK,IAAI,IAAI,KAAK;YACzC,QAAQ;QACV;QAEA,IAAI;QACJ,IAAI;QACJ,IAAI,OAAO,WAAW;YACpB,cAAc;YACd,YAAY,OAAO;QACrB,OAAO;YACL,IAAI,OAAO,OAAO;YAClB,IAAI,OAAQ,KAAS;gBACnB,cAAc,KAAK,KAAK,CAAC,OAAO,MAAM;gBACtC,YAAY,AAAC,OAAO,KAAM;YAC5B,OAAO;gBACL,QAAQ;gBACR,cAAc,KAAK,KAAK,CAAC,OAAO,MAAM;gBACtC,YAAY,AAAC,OAAO,KAAM;YAC5B;QACF;QAEA,OAAO,IAAI,CAAA,GAAA,sCAAW,EAAE,IAAI,EAAE,YAAY,aAAa;IACzD;IAEA,YAAY,IAAqB,EAAU;QACzC,IAAI,eAAe,KAAK,IAAI,GAAG;QAC/B,IAAI,CAAC,KAAK,KAAK,GAAG,CAAA,GAAA,0CAAe,EAAE;QAEnC,IAAI;QACJ,IAAI;QACJ,IAAI,CAAA,GAAA,oCAAS,EAAE,OAAO;YACpB,YAAY;YACZ,KAAK,CAAA,GAAA,8CAAmB,EAAE,KAAK,MAAM,GAAG;QAC1C,OAAO;YACL,YAAY;YACZ,KAAK,CAAA,GAAA,8CAAmB,EAAE,KAAK,MAAM,GAAG;QAC1C;QAEA,IAAI,KAAK,KAAK,KAAK,GACjB,OAAO,KAAK,KAAK,GAAG,GAAG;QAGzB,MAAM,YAAY,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,KAAK;QAEhD,IAAI,KAAK,KAAK,IAAI,GAChB,MAAM,AAAC,CAAA,KAAK,KAAK,GAAG,CAAA,IAAK;QAG3B,MAAM,KAAK,GAAG,GAAG;QACjB,OAAO;IACT;IAEA,eAAe,IAAqB,EAAU;QAC5C,IAAI,KAAK,KAAK,KAAK,KAAK,CAAA,GAAA,oCAAS,EAAE,KAAK,IAAI,GAAG,yCAC7C,OAAO;QAGT,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,GACnC,OAAO;QAGT,OAAO;IACT;IAEA,gBAAwB;QACtB,6CAA6C;QAC7C,6CAA6C;QAC7C,OAAO;IACT;IAEA,UAAoB;QAClB,OAAO;YAAC;SAAO;IACjB;IAEA,cAAoB,CAAC;;QAjGhB,qBACL,aAAiC;;AAiGnC","sources":["packages/@internationalized/date/src/calendars/IndianCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {fromExtendedYear, GregorianCalendar, gregorianToJulianDay, isLeapYear} from './GregorianCalendar';\n\n// Starts in 78 AD,\nconst INDIAN_ERA_START = 78;\n\n// The Indian year starts 80 days later than the Gregorian year.\nconst INDIAN_YEAR_START = 80;\n\n/**\n * The Indian National Calendar is similar to the Gregorian calendar, but with\n * years numbered since the Saka era in 78 AD (Gregorian). There are 12 months\n * in each year, with either 30 or 31 days. Only one era identifier is supported: 'saka'.\n */\nexport class IndianCalendar extends GregorianCalendar {\n identifier: CalendarIdentifier = 'indian';\n\n fromJulianDay(jd: number): CalendarDate {\n // Gregorian date for Julian day\n let date = super.fromJulianDay(jd);\n\n // Year in Saka era\n let indianYear = date.year - INDIAN_ERA_START;\n\n // Day number in Gregorian year (starting from 0)\n let yDay = jd - gregorianToJulianDay(date.era, date.year, 1, 1);\n\n let leapMonth: number;\n if (yDay < INDIAN_YEAR_START) {\n // Day is at the end of the preceding Saka year\n indianYear--;\n\n // Days in leapMonth this year, previous Gregorian year\n leapMonth = isLeapYear(date.year - 1) ? 31 : 30;\n yDay += leapMonth + (31 * 5) + (30 * 3) + 10;\n } else {\n // Days in leapMonth this year\n leapMonth = isLeapYear(date.year) ? 31 : 30;\n yDay -= INDIAN_YEAR_START;\n }\n\n let indianMonth: number;\n let indianDay: number;\n if (yDay < leapMonth) {\n indianMonth = 1;\n indianDay = yDay + 1;\n } else {\n let mDay = yDay - leapMonth;\n if (mDay < (31 * 5)) {\n indianMonth = Math.floor(mDay / 31) + 2;\n indianDay = (mDay % 31) + 1;\n } else {\n mDay -= 31 * 5;\n indianMonth = Math.floor(mDay / 30) + 7;\n indianDay = (mDay % 30) + 1;\n }\n }\n\n return new CalendarDate(this, indianYear, indianMonth, indianDay);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let extendedYear = date.year + INDIAN_ERA_START;\n let [era, year] = fromExtendedYear(extendedYear);\n\n let leapMonth: number;\n let jd: number;\n if (isLeapYear(year)) {\n leapMonth = 31;\n jd = gregorianToJulianDay(era, year, 3, 21);\n } else {\n leapMonth = 30;\n jd = gregorianToJulianDay(era, year, 3, 22);\n }\n\n if (date.month === 1) {\n return jd + date.day - 1;\n }\n\n jd += leapMonth + Math.min(date.month - 2, 5) * 31;\n\n if (date.month >= 8) {\n jd += (date.month - 7) * 30;\n }\n\n jd += date.day - 1;\n return jd;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n if (date.month === 1 && isLeapYear(date.year + INDIAN_ERA_START)) {\n return 31;\n }\n\n if (date.month >= 2 && date.month <= 6) {\n return 31;\n }\n\n return 30;\n }\n\n getYearsInEra(): number {\n // 9999-12-31 gregorian is 9920-10-10 indian.\n // Round down to 9919 for the last full year.\n return 9919;\n }\n\n getEras(): string[] {\n return ['saka'];\n }\n\n balanceDate(): void {}\n}\n"],"names":[],"version":3,"file":"IndianCalendar.
|
|
1
|
+
{"mappings":";;;;;;;;;AAAA;;;;;;;;;;CAUC,GAED,gEAAgE;AAChE,gGAAgG;;;AAMhG,mBAAmB;AACnB,MAAM,yCAAmB;AAEzB,gEAAgE;AAChE,MAAM,0CAAoB;AAOnB,MAAM,kDAAuB,CAAA,GAAA,2CAAgB;IAGlD,cAAc,EAAU,EAAgB;QACtC,gCAAgC;QAChC,IAAI,OAAO,KAAK,CAAC,cAAc;QAE/B,mBAAmB;QACnB,IAAI,aAAa,KAAK,IAAI,GAAG;QAE7B,iDAAiD;QACjD,IAAI,OAAO,KAAK,CAAA,GAAA,8CAAmB,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG;QAE7D,IAAI;QACJ,IAAI,OAAO,yCAAmB;YAC5B,gDAAgD;YAChD;YAEA,uDAAuD;YACvD,YAAY,CAAA,GAAA,oCAAS,EAAE,KAAK,IAAI,GAAG,KAAK,KAAK;YAC7C,QAAQ,YAAa,MAAW,KAAU;QAC5C,OAAO;YACL,8BAA8B;YAC9B,YAAY,CAAA,GAAA,oCAAS,EAAE,KAAK,IAAI,IAAI,KAAK;YACzC,QAAQ;QACV;QAEA,IAAI;QACJ,IAAI;QACJ,IAAI,OAAO,WAAW;YACpB,cAAc;YACd,YAAY,OAAO;QACrB,OAAO;YACL,IAAI,OAAO,OAAO;YAClB,IAAI,OAAQ,KAAS;gBACnB,cAAc,KAAK,KAAK,CAAC,OAAO,MAAM;gBACtC,YAAY,AAAC,OAAO,KAAM;YAC5B,OAAO;gBACL,QAAQ;gBACR,cAAc,KAAK,KAAK,CAAC,OAAO,MAAM;gBACtC,YAAY,AAAC,OAAO,KAAM;YAC5B;QACF;QAEA,OAAO,IAAI,CAAA,GAAA,sCAAW,EAAE,IAAI,EAAE,YAAY,aAAa;IACzD;IAEA,YAAY,IAAqB,EAAU;QACzC,IAAI,eAAe,KAAK,IAAI,GAAG;QAC/B,IAAI,CAAC,KAAK,KAAK,GAAG,CAAA,GAAA,0CAAe,EAAE;QAEnC,IAAI;QACJ,IAAI;QACJ,IAAI,CAAA,GAAA,oCAAS,EAAE,OAAO;YACpB,YAAY;YACZ,KAAK,CAAA,GAAA,8CAAmB,EAAE,KAAK,MAAM,GAAG;QAC1C,OAAO;YACL,YAAY;YACZ,KAAK,CAAA,GAAA,8CAAmB,EAAE,KAAK,MAAM,GAAG;QAC1C;QAEA,IAAI,KAAK,KAAK,KAAK,GACjB,OAAO,KAAK,KAAK,GAAG,GAAG;QAGzB,MAAM,YAAY,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,KAAK;QAEhD,IAAI,KAAK,KAAK,IAAI,GAChB,MAAM,AAAC,CAAA,KAAK,KAAK,GAAG,CAAA,IAAK;QAG3B,MAAM,KAAK,GAAG,GAAG;QACjB,OAAO;IACT;IAEA,eAAe,IAAqB,EAAU;QAC5C,IAAI,KAAK,KAAK,KAAK,KAAK,CAAA,GAAA,oCAAS,EAAE,KAAK,IAAI,GAAG,yCAC7C,OAAO;QAGT,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,GACnC,OAAO;QAGT,OAAO;IACT;IAEA,gBAAwB;QACtB,6CAA6C;QAC7C,6CAA6C;QAC7C,OAAO;IACT;IAEA,UAAoB;QAClB,OAAO;YAAC;SAAO;IACjB;IAEA,cAAoB,CAAC;;QAjGhB,qBACL,aAAiC;;AAiGnC","sources":["packages/@internationalized/date/src/calendars/IndianCalendar.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {fromExtendedYear, GregorianCalendar, gregorianToJulianDay, isLeapYear} from './GregorianCalendar';\n\n// Starts in 78 AD,\nconst INDIAN_ERA_START = 78;\n\n// The Indian year starts 80 days later than the Gregorian year.\nconst INDIAN_YEAR_START = 80;\n\n/**\n * The Indian National Calendar is similar to the Gregorian calendar, but with\n * years numbered since the Saka era in 78 AD (Gregorian). There are 12 months\n * in each year, with either 30 or 31 days. Only one era identifier is supported: 'saka'.\n */\nexport class IndianCalendar extends GregorianCalendar {\n identifier: CalendarIdentifier = 'indian';\n\n fromJulianDay(jd: number): CalendarDate {\n // Gregorian date for Julian day\n let date = super.fromJulianDay(jd);\n\n // Year in Saka era\n let indianYear = date.year - INDIAN_ERA_START;\n\n // Day number in Gregorian year (starting from 0)\n let yDay = jd - gregorianToJulianDay(date.era, date.year, 1, 1);\n\n let leapMonth: number;\n if (yDay < INDIAN_YEAR_START) {\n // Day is at the end of the preceding Saka year\n indianYear--;\n\n // Days in leapMonth this year, previous Gregorian year\n leapMonth = isLeapYear(date.year - 1) ? 31 : 30;\n yDay += leapMonth + (31 * 5) + (30 * 3) + 10;\n } else {\n // Days in leapMonth this year\n leapMonth = isLeapYear(date.year) ? 31 : 30;\n yDay -= INDIAN_YEAR_START;\n }\n\n let indianMonth: number;\n let indianDay: number;\n if (yDay < leapMonth) {\n indianMonth = 1;\n indianDay = yDay + 1;\n } else {\n let mDay = yDay - leapMonth;\n if (mDay < (31 * 5)) {\n indianMonth = Math.floor(mDay / 31) + 2;\n indianDay = (mDay % 31) + 1;\n } else {\n mDay -= 31 * 5;\n indianMonth = Math.floor(mDay / 30) + 7;\n indianDay = (mDay % 30) + 1;\n }\n }\n\n return new CalendarDate(this, indianYear, indianMonth, indianDay);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n let extendedYear = date.year + INDIAN_ERA_START;\n let [era, year] = fromExtendedYear(extendedYear);\n\n let leapMonth: number;\n let jd: number;\n if (isLeapYear(year)) {\n leapMonth = 31;\n jd = gregorianToJulianDay(era, year, 3, 21);\n } else {\n leapMonth = 30;\n jd = gregorianToJulianDay(era, year, 3, 22);\n }\n\n if (date.month === 1) {\n return jd + date.day - 1;\n }\n\n jd += leapMonth + Math.min(date.month - 2, 5) * 31;\n\n if (date.month >= 8) {\n jd += (date.month - 7) * 30;\n }\n\n jd += date.day - 1;\n return jd;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n if (date.month === 1 && isLeapYear(date.year + INDIAN_ERA_START)) {\n return 31;\n }\n\n if (date.month >= 2 && date.month <= 6) {\n return 31;\n }\n\n return 30;\n }\n\n getYearsInEra(): number {\n // 9999-12-31 gregorian is 9920-10-10 indian.\n // Round down to 9919 for the last full year.\n return 9919;\n }\n\n getEras(): string[] {\n return ['saka'];\n }\n\n balanceDate(): void {}\n}\n"],"names":[],"version":3,"file":"IndianCalendar.cjs.map"}
|