{"version":3,"file":"dateTimeUtils.mjs","names":["createRange","padStart","getFirstDayOfMonth","year","month","Date","getLastDayOfMonth","getNumberOfDaysInMonth","getDate","changeMonth","change","day","String","addDays","date","days","d","setDate","getFullYear","getMonth","parseDate","split","map","Number","getMondayOfFirstWeekOfYear","januaryFirst","mondayOfFirstWeek","getDay","getWeek","d1w1","tv","diffTime","Math","abs","getTime","diffDays","ceil","floor","getDaysInMonth","createUTCDate","arguments","length","undefined","UTC","isFinite","getUTCFullYear","setUTCFullYear","firstWeekOffset","firstDayOfWeek","firstDayOfYear","firstWeekDayInFirstWeek","firstWeekDayOfYear","getUTCDay","dayOfYear","isLeapYear","weeksInYear","weekOffset","weekOffsetNext","daysInYear","weekNumber","localeFirstDayOfYear","week"],"sources":["../../src/util/dateTimeUtils.ts"],"sourcesContent":["// Utilities\nimport { createRange, padStart } from '@/util'\n\nexport function getFirstDayOfMonth (year: number, month: number) {\n return new Date(year, month, 1)\n}\n\nexport function getLastDayOfMonth (year: number, month: number) {\n return new Date(year, month + 1, 0)\n}\n\nfunction getNumberOfDaysInMonth (year: number, month: number) {\n return new Date(year, month, 0).getDate()\n}\n\nexport function changeMonth (year: number, month: number, change: number) {\n if (change < 0 && month + change < 1) {\n return [year - 1, 12 + (month + change)]\n } else if (change > 0 && month + change > 12) {\n return [year + 1, (month + change) % 12]\n } else {\n return [year, month + change]\n }\n}\n\nexport function getDate (year: number, month: number, day: number) {\n return `${year}-${padStart(String(month), 2, '0')}-${padStart(String(day), 2, '0')}`\n}\n\nexport function addDays (date: string, days: number) {\n const d = new Date(date)\n\n d.setDate(d.getDate() + days)\n\n return getDate(d.getFullYear(), d.getMonth() + 1, d.getDate())\n}\n\nexport function parseDate (date: string): [number, number, number] {\n const [year, month, day] = date.split('-').map(Number)\n\n return [year, month, day]\n}\n\nfunction getMondayOfFirstWeekOfYear (year: number) {\n const januaryFirst = new Date(year, 0, 1)\n const mondayOfFirstWeek = new Date(januaryFirst)\n\n mondayOfFirstWeek.setDate(mondayOfFirstWeek.getDate() + ((11 - januaryFirst.getDay()) % 7) - 3)\n\n return mondayOfFirstWeek\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek (date: Date) {\n let year = date.getFullYear()\n let d1w1 = getMondayOfFirstWeekOfYear(year)\n\n if (date < d1w1) {\n year = year - 1\n d1w1 = getMondayOfFirstWeekOfYear(year)\n } else {\n const tv = getMondayOfFirstWeekOfYear(year + 1)\n if (date >= tv) {\n year = year + 1\n d1w1 = tv\n }\n }\n\n const diffTime = Math.abs(date.getTime() - d1w1.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n\n return Math.floor(diffDays / 7) + 1\n}\n\nexport function getDaysInMonth (year: number, month: number) {\n return createRange(getNumberOfDaysInMonth(year, month), 1).map(day => ({\n year,\n month,\n day,\n date: getDate(year, month, day),\n }))\n}\n\n// old\n\nfunction createUTCDate (year: number, month = 0, day = 1) {\n let date\n if (year < 100 && year >= 0) {\n date = new Date(Date.UTC(year, month, day))\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(year)\n }\n } else {\n date = new Date(Date.UTC(year, month, day))\n }\n\n return date\n}\n\nfunction firstWeekOffset (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const firstWeekDayInFirstWeek = 7 + firstDayOfWeek - firstDayOfYear\n const firstWeekDayOfYear = (7 + createUTCDate(year, 0, firstWeekDayInFirstWeek).getUTCDay() - firstDayOfWeek) % 7\n\n return -firstWeekDayOfYear + firstWeekDayInFirstWeek - 1\n}\n\nfunction dayOfYear (year: number, month: number, day: number, firstDayOfWeek: number) {\n let dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][month]\n if (month > 1 && isLeapYear(year)) {\n dayOfYear++\n }\n\n return dayOfYear + day\n}\n\nfunction weeksInYear (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, firstDayOfYear)\n const weekOffsetNext = firstWeekOffset(year + 1, firstDayOfWeek, firstDayOfYear)\n const daysInYear = isLeapYear(year) ? 366 : 365\n\n return (daysInYear - weekOffset + weekOffsetNext) / 7\n}\n\nexport function weekNumber (year: number, month: number, day: number, firstDayOfWeek: number, localeFirstDayOfYear: number): number {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, localeFirstDayOfYear)\n const week = Math.ceil((dayOfYear(year, month, day, firstDayOfWeek) - weekOffset) / 7)\n\n if (week < 1) {\n return week + weeksInYear(year - 1, firstDayOfWeek, localeFirstDayOfYear)\n } else if (week > weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)) {\n return week - weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)\n } else {\n return week\n }\n}\n\nexport function isLeapYear (year: number): boolean {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\n}\n"],"mappings":"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"}