@zag-js/date-utils 0.66.1 → 0.68.0

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.js CHANGED
@@ -316,10 +316,13 @@ var import_date8 = require("@internationalized/date");
316
316
 
317
317
  // src/get-start-of-week.ts
318
318
  var import_date7 = require("@internationalized/date");
319
- function getStartOfWeek(date, locale, firstDayOfWeek = 0) {
320
- const day = (0, import_date7.getDayOfWeek)(date, locale);
321
- const diff = (day - firstDayOfWeek + 7) % 7;
322
- return date.subtract({ days: diff });
319
+ function getStartOfWeek(date, locale, firstDayOfWeek) {
320
+ if (firstDayOfWeek !== void 0) {
321
+ const currentDayOfWeek = (0, import_date7.getDayOfWeek)(date, locale);
322
+ const daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7;
323
+ return date.subtract({ days: daysToSubtract });
324
+ }
325
+ return (0, import_date7.startOfWeek)(date, locale);
323
326
  }
324
327
 
325
328
  // src/get-month-days.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["export * from \"./align\"\nexport * from \"./assertion\"\nexport * from \"./constrain\"\nexport * from \"./duration\"\nexport * from \"./format-range\"\nexport * from \"./format-selected-date\"\nexport * from \"./format-visible-range\"\nexport * from \"./get-day-formatter\"\nexport * from \"./get-decade-range\"\nexport * from \"./get-month-days\"\nexport * from \"./get-month-formatter\"\nexport * from \"./get-month-names\"\nexport * from \"./get-week-days\"\nexport * from \"./get-weekday-formats\"\nexport * from \"./get-year-range\"\nexport * from \"./mutation\"\nexport * from \"./pagination\"\nexport * from \"./parse-date\"\nexport * from \"./preset\"\nexport type { DateAdjustFn, DateGranularity } from \"./types\"\n","import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n const halfDuration: DateDuration = {}\n\n for (let prop in duration) {\n const key = prop as keyof DateDuration\n\n const value = duration[key]\n if (value == null) continue\n\n halfDuration[key] = Math.floor(value / 2)\n\n if (halfDuration[key] > 0 && value % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n const aligned = alignStart(date, duration, locale).subtract(halfDuration)\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))!\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))!\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))!\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))!\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return isDateOutsideVisibleRange(date, startDate, endDate) || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let clone = { ...duration }\n\n for (let key in clone) {\n clone[key as keyof typeof clone] = 1\n }\n\n return clone\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let clone = { ...duration }\n\n if (clone.days) {\n clone.days--\n } else {\n clone.days = -1\n }\n\n return startDate.add(clone)\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {\n const day = getDayOfWeek(date, locale)\n const diff = (day - firstDayOfWeek + 7) % 7\n return date.subtract({ days: diff })\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | null | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | null | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | null | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string | null\n month: string | null\n day: string | null\n}\n\ntype DatePart = keyof DateParts\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr as DatePart] = matches[index + 1]\n } else {\n acc[curr as DatePart] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["import_date","import_date","import_date","start","end","import_date","import_date","import_date","import_date","import_date","import_date","isDateUnavailable","import_date","import_date","date","import_date","today"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["export * from \"./align\"\nexport * from \"./assertion\"\nexport * from \"./constrain\"\nexport * from \"./duration\"\nexport * from \"./format-range\"\nexport * from \"./format-selected-date\"\nexport * from \"./format-visible-range\"\nexport * from \"./get-day-formatter\"\nexport * from \"./get-decade-range\"\nexport * from \"./get-month-days\"\nexport * from \"./get-month-formatter\"\nexport * from \"./get-month-names\"\nexport * from \"./get-week-days\"\nexport * from \"./get-weekday-formats\"\nexport * from \"./get-year-range\"\nexport * from \"./mutation\"\nexport * from \"./pagination\"\nexport * from \"./parse-date\"\nexport * from \"./preset\"\nexport type { DateAdjustFn, DateGranularity } from \"./types\"\n","import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n const halfDuration: DateDuration = {}\n\n for (let prop in duration) {\n const key = prop as keyof DateDuration\n\n const value = duration[key]\n if (value == null) continue\n\n halfDuration[key] = Math.floor(value / 2)\n\n if (halfDuration[key] > 0 && value % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n const aligned = alignStart(date, duration, locale).subtract(halfDuration)\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))!\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))!\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))!\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))!\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return isDateOutsideVisibleRange(date, startDate, endDate) || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let clone = { ...duration }\n\n for (let key in clone) {\n clone[key as keyof typeof clone] = 1\n }\n\n return clone\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let clone = { ...duration }\n\n if (clone.days) {\n clone.days--\n } else {\n clone.days = -1\n }\n\n return startDate.add(clone)\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek, startOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek?: number) {\n // If firstDayOfWeek is provided, use it; otherwise, use the locale's default\n if (firstDayOfWeek !== undefined) {\n // Adjust the date to the specified first day of the week\n const currentDayOfWeek = getDayOfWeek(date, locale)\n const daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7\n return date.subtract({ days: daysToSubtract })\n }\n\n // Use the built-in startOfWeek function for locale-specific behavior\n return startOfWeek(date, locale)\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | null | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | null | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | null | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string | null\n month: string | null\n day: string | null\n}\n\ntype DatePart = keyof DateParts\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr as DatePart] = matches[index + 1]\n } else {\n acc[curr as DatePart] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["import_date","import_date","import_date","start","end","import_date","import_date","import_date","import_date","import_date","import_date","isDateUnavailable","import_date","import_date","date","import_date","today"]}
package/dist/index.mjs CHANGED
@@ -248,11 +248,14 @@ function getDecadeRange(year) {
248
248
  import { getWeeksInMonth, isSameDay as isSameDay4, getDayOfWeek as getDayOfWeek2, startOfMonth as startOfMonth3 } from "@internationalized/date";
249
249
 
250
250
  // src/get-start-of-week.ts
251
- import { getDayOfWeek } from "@internationalized/date";
252
- function getStartOfWeek(date, locale, firstDayOfWeek = 0) {
253
- const day = getDayOfWeek(date, locale);
254
- const diff = (day - firstDayOfWeek + 7) % 7;
255
- return date.subtract({ days: diff });
251
+ import { getDayOfWeek, startOfWeek as startOfWeek2 } from "@internationalized/date";
252
+ function getStartOfWeek(date, locale, firstDayOfWeek) {
253
+ if (firstDayOfWeek !== void 0) {
254
+ const currentDayOfWeek = getDayOfWeek(date, locale);
255
+ const daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7;
256
+ return date.subtract({ days: daysToSubtract });
257
+ }
258
+ return startOfWeek2(date, locale);
256
259
  }
257
260
 
258
261
  // src/get-month-days.ts
@@ -376,7 +379,7 @@ import {
376
379
  endOfMonth as endOfMonth2,
377
380
  endOfWeek,
378
381
  startOfMonth as startOfMonth4,
379
- startOfWeek as startOfWeek2
382
+ startOfWeek as startOfWeek3
380
383
  } from "@internationalized/date";
381
384
  function getAdjustedDateFn(visibleDuration, locale, minValue, maxValue) {
382
385
  return function getDate(options) {
@@ -468,7 +471,7 @@ function getSectionStart(focusedDate, startDate, visibleDuration, locale, minVal
468
471
  }
469
472
  if (visibleDuration.weeks) {
470
473
  return adjust({
471
- focusedDate: startOfWeek2(focusedDate, locale),
474
+ focusedDate: startOfWeek3(focusedDate, locale),
472
475
  startDate
473
476
  });
474
477
  }
@@ -606,14 +609,14 @@ import {
606
609
  endOfYear,
607
610
  now,
608
611
  startOfMonth as startOfMonth5,
609
- startOfWeek as startOfWeek3,
612
+ startOfWeek as startOfWeek4,
610
613
  startOfYear as startOfYear2
611
614
  } from "@internationalized/date";
612
615
  function getDateRangePreset(preset, locale, timeZone) {
613
616
  const today4 = now(timeZone);
614
617
  switch (preset) {
615
618
  case "thisWeek":
616
- return [startOfWeek3(today4, locale), endOfWeek2(today4, locale)];
619
+ return [startOfWeek4(today4, locale), endOfWeek2(today4, locale)];
617
620
  case "thisMonth":
618
621
  return [startOfMonth5(today4), today4];
619
622
  case "thisQuarter":
@@ -638,7 +641,7 @@ function getDateRangePreset(preset, locale, timeZone) {
638
641
  endOfMonth3(today4.add({ months: -today4.month % 3 - 1 }))
639
642
  ];
640
643
  case "lastWeek":
641
- return [startOfWeek3(today4, locale).add({ weeks: -1 }), endOfWeek2(today4, locale).add({ weeks: -1 })];
644
+ return [startOfWeek4(today4, locale).add({ weeks: -1 }), endOfWeek2(today4, locale).add({ weeks: -1 })];
642
645
  case "lastYear":
643
646
  return [startOfYear2(today4.add({ years: -1 })), endOfYear(today4.add({ years: -1 }))];
644
647
  default:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n const halfDuration: DateDuration = {}\n\n for (let prop in duration) {\n const key = prop as keyof DateDuration\n\n const value = duration[key]\n if (value == null) continue\n\n halfDuration[key] = Math.floor(value / 2)\n\n if (halfDuration[key] > 0 && value % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n const aligned = alignStart(date, duration, locale).subtract(halfDuration)\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))!\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))!\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))!\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))!\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return isDateOutsideVisibleRange(date, startDate, endDate) || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let clone = { ...duration }\n\n for (let key in clone) {\n clone[key as keyof typeof clone] = 1\n }\n\n return clone\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let clone = { ...duration }\n\n if (clone.days) {\n clone.days--\n } else {\n clone.days = -1\n }\n\n return startDate.add(clone)\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {\n const day = getDayOfWeek(date, locale)\n const diff = (day - firstDayOfWeek + 7) % 7\n return date.subtract({ days: diff })\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | null | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | null | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | null | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string | null\n month: string | null\n day: string | null\n}\n\ntype DatePart = keyof DateParts\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr as DatePart] = matches[index + 1]\n } else {\n acc[curr as DatePart] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["isSameDay","isSameDay","start","end","isSameDay","startOfMonth","today","toCalendarDate","DateFormatter","toCalendarDate","today","DateFormatter","isSameDay","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","DateFormatter","toCalendarDateTime","today","today","toCalendarDateTime","isDateUnavailable","endOfMonth","startOfMonth","startOfWeek","startOfWeek","startOfMonth","endOfMonth","DateFormatter","date","endOfMonth","endOfWeek","startOfMonth","startOfWeek","startOfYear","today"]}
1
+ {"version":3,"sources":["../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-range.ts","../src/format-selected-date.ts","../src/get-day-formatter.ts","../src/get-era-format.ts","../src/format-visible-range.ts","../src/get-month-formatter.ts","../src/get-decade-range.ts","../src/get-month-days.ts","../src/get-start-of-week.ts","../src/get-month-names.ts","../src/get-weekday-formats.ts","../src/get-week-days.ts","../src/get-year-range.ts","../src/mutation.ts","../src/pagination.ts","../src/parse-date.ts","../src/preset.ts"],"sourcesContent":["import {\n type DateDuration,\n type DateValue,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate,\n} from \"@internationalized/date\"\n\n/* -----------------------------------------------------------------------------\n * Align date to start, end, or center of a duration\n * -----------------------------------------------------------------------------*/\n\nexport function alignCenter(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n const halfDuration: DateDuration = {}\n\n for (let prop in duration) {\n const key = prop as keyof DateDuration\n\n const value = duration[key]\n if (value == null) continue\n\n halfDuration[key] = Math.floor(value / 2)\n\n if (halfDuration[key] > 0 && value % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n const aligned = alignStart(date, duration, locale).subtract(halfDuration)\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignStart(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n // align to the start of the largest unit\n let aligned = date\n if (duration.years) {\n aligned = startOfYear(date)\n } else if (duration.months) {\n aligned = startOfMonth(date)\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale)\n }\n\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\nexport function alignEnd(\n date: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n let d: DateDuration = { ...duration }\n // subtract 1 from the smallest unit\n if (d.days) {\n d.days--\n } else if (d.weeks) {\n d.weeks--\n } else if (d.months) {\n d.months--\n } else if (d.years) {\n d.years--\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d)\n return constrainStart(date, aligned, duration, locale, min, max)\n}\n\n/* -----------------------------------------------------------------------------\n * Constrain a date to a min/max range\n * -----------------------------------------------------------------------------*/\n\nexport function constrainStart(\n date: DateValue,\n aligned: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue,\n max?: DateValue,\n): DateValue {\n if (min && date.compare(min) >= 0) {\n aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale))!\n }\n\n if (max && date.compare(max) <= 0) {\n aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale))!\n }\n\n return aligned\n}\n\nexport function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue))!\n }\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue))!\n }\n return date\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\nimport { alignCenter, alignEnd, alignStart } from \"./constrain\"\nimport type { DateAlignment } from \"./types\"\n\nexport function alignDate(\n date: DateValue,\n alignment: DateAlignment,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n switch (alignment) {\n case \"start\":\n return alignStart(date, duration, locale, min, max)\n case \"end\":\n return alignEnd(date, duration, locale, min, max)\n case \"center\":\n default:\n return alignCenter(date, duration, locale, min, max)\n }\n}\n\nexport function alignStartDate(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n duration: DateDuration,\n locale: string,\n min?: DateValue | undefined,\n max?: DateValue | undefined,\n) {\n if (date.compare(startDate) < 0) {\n return alignEnd(date, duration, locale, min, max)\n }\n if (date.compare(endDate) > 0) {\n return alignStart(date, duration, locale, min, max)\n }\n return startDate\n}\n","import { type DateValue, isSameDay, isToday } from \"@internationalized/date\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function isTodayDate(date: DateValue, timeZone: string) {\n return isToday(date, timeZone)\n}\n\nexport function isDateEqual(dateA: DateValue, dateB?: DateValue | null) {\n return dateB != null && isSameDay(dateA, dateB)\n}\n\nexport function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null) {\n return (minValue != null && date.compare(minValue) < 0) || (maxValue != null && date.compare(maxValue) > 0)\n}\n\nexport function isDateDisabled(\n date: DateValue,\n startDate: DateValue,\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n return isDateOutsideVisibleRange(date, startDate, endDate) || isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateUnavailable(\n date: DateValue | null,\n isUnavailable: DateAvailableFn | undefined,\n locale: string,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n if (!date) {\n return false\n }\n if (isUnavailable?.(date, locale)) {\n return true\n }\n return isDateInvalid(date, minValue, maxValue)\n}\n\nexport function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue) {\n return date.compare(startDate) < 0 || date.compare(endDate) > 0\n}\n\nexport function isPreviousVisibleRangeInvalid(\n startDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const prevDate = startDate.subtract({ days: 1 })\n return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue)\n}\n\nexport function isNextVisibleRangeInvalid(\n endDate: DateValue,\n minValue?: DateValue | null,\n maxValue?: DateValue | null,\n) {\n const nextDate = endDate.add({ days: 1 })\n return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue)\n}\n","import type { DateDuration, DateValue } from \"@internationalized/date\"\n\nexport function getUnitDuration(duration: DateDuration) {\n let clone = { ...duration }\n\n for (let key in clone) {\n clone[key as keyof typeof clone] = 1\n }\n\n return clone\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let clone = { ...duration }\n\n if (clone.days) {\n clone.days--\n } else {\n clone.days = -1\n }\n\n return startDate.add(clone)\n}\n","import type { DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function formatRange(\n startDate: DateValue,\n endDate: DateValue,\n formatter: DateFormatter,\n toString: (start: string, end: string) => string,\n timeZone: string,\n) {\n let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone))\n\n let separatorIndex = -1\n\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i]\n if (part.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i\n } else if (part.source === \"endRange\") {\n break\n }\n }\n\n let start = \"\"\n let end = \"\"\n\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n start += parts[i].value\n } else if (i > separatorIndex) {\n end += parts[i].value\n }\n }\n\n return toString(start, end)\n}\n","import { type DateValue, isSameDay } from \"@internationalized/date\"\nimport { formatRange } from \"./format-range\"\nimport { getDayFormatter } from \"./get-day-formatter\"\n\nexport function formatSelectedDate(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n let start = startDate\n let end = endDate ?? startDate\n\n let formatter = getDayFormatter(locale, timeZone)\n\n if (isSameDay(start, end)) {\n return formatter.format(start.toDate(timeZone))\n }\n\n return formatRange(start, end, formatter, (start, end) => `${start} – ${end}`, timeZone)\n}\n","import { DateFormatter, toCalendarDateTime, today } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getDayFormatter(locale: string, timeZone: string) {\n const date = toCalendarDateTime(today(timeZone))\n return new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(date),\n timeZone,\n })\n}\n","import type { DateValue } from \"@internationalized/date\"\n\nexport function getEraFormat(date: DateValue | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined\n}\n","import { type DateValue, endOfMonth, isSameDay, startOfMonth } from \"@internationalized/date\"\nimport { getDayFormatter } from \"./get-day-formatter\"\nimport { getMonthFormatter } from \"./get-month-formatter\"\n\nexport function formatVisibleRange(startDate: DateValue, endDate: DateValue | null, locale: string, timeZone: string) {\n const start = startDate\n const end = endDate ?? startDate\n\n const dayFormatter = getDayFormatter(locale, timeZone)\n\n if (!isSameDay(start, startOfMonth(start))) {\n return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n const monthFormatter = getMonthFormatter(locale, timeZone)\n\n if (isSameDay(end, endOfMonth(start))) {\n return monthFormatter.format(start.toDate(timeZone))\n }\n\n if (isSameDay(end, endOfMonth(end))) {\n return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone))\n }\n\n return \"\"\n}\n","import { today, toCalendarDate, DateFormatter } from \"@internationalized/date\"\nimport { getEraFormat } from \"./get-era-format\"\n\nexport function getMonthFormatter(locale: string, timeZone: string) {\n const date = toCalendarDate(today(timeZone))\n return new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era: getEraFormat(date),\n calendar: date?.calendar.identifier,\n timeZone: timeZone,\n })\n}\n","export function getDecadeRange(year: number) {\n const computedYear = year - (year % 10) - 1\n\n const years: number[] = []\n\n for (let i = 0; i < 12; i += 1) {\n const value = computedYear + i\n years.push(value)\n }\n\n return years\n}\n","import { type DateValue, getWeeksInMonth, isSameDay, getDayOfWeek, startOfMonth } from \"@internationalized/date\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getDaysInWeek(weekIndex: number, from: DateValue, locale: string, firstDayOfWeek?: number) {\n const weekDate = from.add({ weeks: weekIndex })\n const dates: DateValue[] = []\n let date = getStartOfWeek(weekDate, locale, firstDayOfWeek)\n while (dates.length < 7) {\n dates.push(date)\n let nextDate = date.add({ days: 1 })\n if (isSameDay(date, nextDate)) {\n break\n }\n date = nextDate\n }\n return dates\n}\n\nexport function getCustomWeeksInMonth(from: DateValue, locale: string, firstDayOfWeek?: number) {\n if (firstDayOfWeek == null) {\n return getWeeksInMonth(from, locale)\n }\n const paddingDays = (getDayOfWeek(startOfMonth(from), locale) - firstDayOfWeek + 7) % 7\n\n return Math.ceil((paddingDays + from.calendar.getDaysInMonth(from)) / 7)\n}\n\nexport function getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = numOfWeeks ?? getCustomWeeksInMonth(from, locale, firstDayOfWeek)\n\n const weeks = [...new Array(monthWeeks).keys()]\n return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek))\n}\n","import { type DateValue, getDayOfWeek, startOfWeek } from \"@internationalized/date\"\n\nexport function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek?: number) {\n // If firstDayOfWeek is provided, use it; otherwise, use the locale's default\n if (firstDayOfWeek !== undefined) {\n // Adjust the date to the specified first day of the week\n const currentDayOfWeek = getDayOfWeek(date, locale)\n const daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7\n return date.subtract({ days: daysToSubtract })\n }\n\n // Use the built-in startOfWeek function for locale-specific behavior\n return startOfWeek(date, locale)\n}\n","export function getMonthNames(locale: string, format: Intl.DateTimeFormatOptions[\"month\"] = \"long\") {\n const date = new Date(2021, 0, 1)\n const monthNames: string[] = []\n for (let i = 0; i < 12; i++) {\n monthNames.push(date.toLocaleString(locale, { month: format }))\n date.setMonth(date.getMonth() + 1)\n }\n return monthNames\n}\n","import { type DateValue, DateFormatter } from \"@internationalized/date\"\n\nexport function getWeekdayFormats(locale: string, timeZone: string) {\n const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone })\n const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone })\n const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone })\n return <T extends DateValue | Date>(value: T) => {\n const date = value instanceof Date ? value : value.toDate(timeZone)\n return {\n value,\n short: shortFormat.format(date),\n long: longFormat.format(date),\n narrow: narrowFormat.format(date),\n }\n }\n}\n","import type { DateValue } from \"@internationalized/date\"\nimport { getWeekdayFormats } from \"./get-weekday-formats\"\nimport { getStartOfWeek } from \"./get-start-of-week\"\n\nexport function getWeekDays(date: DateValue, startOfWeekProp: number | undefined, timeZone: string, locale: string) {\n const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp)\n const weeks = [...new Array(7).keys()]\n const format = getWeekdayFormats(locale, timeZone)\n return weeks.map((index) => format(firstDayOfWeek.add({ days: index })))\n}\n","export interface YearsRange {\n from: number\n to: number\n}\n\nexport function getYearsRange(range: YearsRange) {\n const years: number[] = []\n\n for (let year = range.from; year <= range.to; year += 1) {\n years.push(year)\n }\n\n return years\n}\n","import {\n type Calendar,\n type DateValue,\n getLocalTimeZone,\n toCalendar,\n toCalendarDateTime,\n today,\n} from \"@internationalized/date\"\nimport { constrainValue } from \"./constrain\"\nimport type { DateAvailableFn } from \"./types\"\n\nexport function getTodayDate(timeZone?: string) {\n return today(timeZone ?? getLocalTimeZone())\n}\n\nexport function getNextDay(date: DateValue) {\n return date.add({ days: 1 })\n}\n\nexport function getPreviousDay(date: DateValue) {\n return date.subtract({ days: 1 })\n}\n\nexport function setMonth(date: DateValue, month: number) {\n return date.set({ month })\n}\n\nexport function setYear(date: DateValue, year: number) {\n return date.set({ year })\n}\n\nexport function setCalendar(date: DateValue, calendar: Calendar) {\n return toCalendar(toCalendarDateTime(date), calendar)\n}\n\nexport function setDate(\n date: DateValue,\n startDate: DateValue,\n isDateUnavailable: DateAvailableFn,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue,\n) {\n let result: DateValue | undefined\n result = constrainValue(date, minValue, maxValue)\n result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable)\n return result\n}\n\nexport function getPreviousAvailableDate(\n date: DateValue,\n minValue: DateValue,\n locale: string,\n isDateUnavailable?: DateAvailableFn,\n) {\n if (!isDateUnavailable) {\n return date\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date, locale)) {\n date = date.subtract({ days: 1 })\n }\n\n if (date.compare(minValue) >= 0) {\n return date\n }\n}\n","import {\n type DateDuration,\n type DateValue,\n endOfMonth,\n endOfWeek,\n startOfMonth,\n startOfWeek,\n} from \"@internationalized/date\"\nimport { isDateInvalid } from \"./assertion\"\nimport { alignEnd, alignStart, constrainStart, constrainValue } from \"./constrain\"\nimport { getEndDate, getUnitDuration } from \"./duration\"\n\nexport interface AdjustDateParams {\n startDate: DateValue\n focusedDate: DateValue\n}\n\nexport interface AdjustDateReturn extends AdjustDateParams {\n endDate: DateValue\n}\n\nexport function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: AdjustDateParams): AdjustDateReturn {\n const { startDate, focusedDate } = options\n const endDate = getEndDate(startDate, visibleDuration)\n\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n if (isDateInvalid(focusedDate, minValue, maxValue)) {\n return {\n startDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(startDate) < 0) {\n return {\n startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n endDate,\n }\n }\n\n if (focusedDate.compare(endDate) > 0) {\n return {\n startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n\n return {\n startDate,\n endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get next and previous page (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const start = startDate.add(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.add(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\nexport function getPreviousPage(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n let start = startDate.subtract(visibleDuration)\n\n return adjust({\n focusedDate: focusedDate.subtract(visibleDuration),\n startDate: alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale,\n ),\n })\n}\n\n/* -----------------------------------------------------------------------------\n * Get the next and previous row (for date range)\n * -----------------------------------------------------------------------------*/\n\nexport function getNextRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ weeks: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousRow(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ weeks: 1 }),\n startDate,\n })\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Get start and end date for a date section\n * -----------------------------------------------------------------------------*/\n\nexport function getSectionStart(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: startDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: startOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: startOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getSectionEnd(\n focusedDate: DateValue,\n startDate: DateValue,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n const endDate = getEndDate(startDate, visibleDuration)\n\n if (visibleDuration.days) {\n return adjust({\n focusedDate: endDate,\n startDate,\n })\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n //@ts-expect-error - endOfWeek is loosely typed\n focusedDate: endOfWeek(focusedDate, locale),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: endOfMonth(focusedDate),\n startDate,\n })\n }\n}\n\nexport function getNextSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.add({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.add({ years: 1 }),\n startDate,\n })\n }\n}\n\nexport function getPreviousSection(\n focusedDate: DateValue,\n startDate: DateValue,\n larger: boolean,\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue)\n\n if (!larger && !visibleDuration.days) {\n return adjust({\n focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n startDate,\n })\n }\n\n if (visibleDuration.days) {\n return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue)\n }\n\n if (visibleDuration.weeks) {\n return adjust({\n focusedDate: focusedDate.subtract({ months: 1 }),\n startDate,\n })\n }\n\n if (visibleDuration.months || visibleDuration.years) {\n return adjust({\n focusedDate: focusedDate.subtract({ years: 1 }),\n startDate,\n })\n }\n}\n","import { CalendarDate, DateFormatter, type DateValue } from \"@internationalized/date\"\n\nconst isValidYear = (year: string | null | undefined): year is string => year != null && year.length === 4\nconst isValidMonth = (month: string | null | undefined): month is string => month != null && parseFloat(month) <= 12\nconst isValidDay = (day: string | null | undefined): day is string => day != null && parseFloat(day) <= 31\n\nexport function parseDateString(date: string, locale: string, timeZone: string): DateValue | undefined {\n const regex = createRegex(locale, timeZone)\n\n let { year, month, day } = extract(regex, date) ?? {}\n\n const hasMatch = year != null || month != null || day != null\n\n if (hasMatch) {\n const curr = new Date()\n year ||= curr.getFullYear().toString()\n month ||= (curr.getMonth() + 1).toString()\n day ||= curr.getDate().toString()\n }\n\n if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n return new CalendarDate(+year, +month, +day)\n }\n\n // We should never get here, but just in case\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n}\n\nfunction createRegex(locale: string, timeZone: string) {\n const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone })\n const parts = formatter.formatToParts(new Date(2000, 11, 25))\n return parts.map(({ type, value }) => (type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`)).join(\"\")\n}\n\ninterface DateParts {\n year: string | null\n month: string | null\n day: string | null\n}\n\ntype DatePart = keyof DateParts\n\nfunction extract(pattern: string | RegExp, str: string) {\n const matches = str.match(pattern)\n return pattern\n .toString()\n .match(/<(.+?)>/g)\n ?.map((group) => {\n const groupMatches = group.match(/<(.+)>/)\n if (!groupMatches || groupMatches.length <= 0) {\n return null\n }\n return group.match(/<(.+)>/)?.[1]\n })\n .reduce((acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr as DatePart] = matches[index + 1]\n } else {\n acc[curr as DatePart] = null\n }\n return acc\n }, {} as DateParts)\n}\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type DateValue,\n} from \"@internationalized/date\"\n\nexport type DateRangePreset =\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisQuarter\"\n | \"lastQuarter\"\n | \"thisYear\"\n | \"lastYear\"\n | \"last3Days\"\n | \"last7Days\"\n | \"last14Days\"\n | \"last30Days\"\n | \"last90Days\"\n\nexport function getDateRangePreset(preset: DateRangePreset, locale: string, timeZone: string): [DateValue, DateValue] {\n const today = now(timeZone)\n\n switch (preset) {\n case \"thisWeek\":\n return [startOfWeek(today, locale), endOfWeek(today, locale)]\n case \"thisMonth\":\n return [startOfMonth(today), today]\n case \"thisQuarter\":\n return [startOfMonth(today).add({ months: -today.month % 3 }), today]\n case \"thisYear\":\n return [startOfYear(today), today]\n case \"last3Days\":\n return [today.add({ days: -2 }), today]\n case \"last7Days\":\n return [today.add({ days: -6 }), today]\n case \"last14Days\":\n return [today.add({ days: -13 }), today]\n case \"last30Days\":\n return [today.add({ days: -29 }), today]\n case \"last90Days\":\n return [today.add({ days: -89 }), today]\n case \"lastMonth\":\n return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]\n case \"lastQuarter\":\n return [\n startOfMonth(today.add({ months: (-today.month % 3) - 3 })),\n endOfMonth(today.add({ months: (-today.month % 3) - 1 })),\n ]\n case \"lastWeek\":\n return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]\n case \"lastYear\":\n return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]\n default:\n throw new Error(`Invalid date range preset: ${preset}`)\n }\n}\n"],"mappings":"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","names":["isSameDay","isSameDay","start","end","isSameDay","startOfMonth","today","toCalendarDate","DateFormatter","toCalendarDate","today","DateFormatter","isSameDay","startOfMonth","isSameDay","getDayOfWeek","startOfMonth","startOfWeek","isSameDay","getDayOfWeek","startOfMonth","DateFormatter","toCalendarDateTime","today","today","toCalendarDateTime","isDateUnavailable","endOfMonth","startOfMonth","startOfWeek","startOfWeek","startOfMonth","endOfMonth","DateFormatter","date","endOfMonth","endOfWeek","startOfMonth","startOfWeek","startOfYear","today"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/date-utils",
3
- "version": "0.66.1",
3
+ "version": "0.68.0",
4
4
  "description": "Date utilities for zag.js",
5
5
  "keywords": [
6
6
  "js",
@@ -1,7 +1,14 @@
1
- import { type DateValue, getDayOfWeek } from "@internationalized/date"
1
+ import { type DateValue, getDayOfWeek, startOfWeek } from "@internationalized/date"
2
2
 
3
- export function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek: number = 0) {
4
- const day = getDayOfWeek(date, locale)
5
- const diff = (day - firstDayOfWeek + 7) % 7
6
- return date.subtract({ days: diff })
3
+ export function getStartOfWeek(date: DateValue, locale: string, firstDayOfWeek?: number) {
4
+ // If firstDayOfWeek is provided, use it; otherwise, use the locale's default
5
+ if (firstDayOfWeek !== undefined) {
6
+ // Adjust the date to the specified first day of the week
7
+ const currentDayOfWeek = getDayOfWeek(date, locale)
8
+ const daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7
9
+ return date.subtract({ days: daysToSubtract })
10
+ }
11
+
12
+ // Use the built-in startOfWeek function for locale-specific behavior
13
+ return startOfWeek(date, locale)
7
14
  }