@zag-js/date-utils 0.10.5 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/index.d.mts +145 -0
  2. package/dist/index.d.ts +145 -20
  3. package/dist/index.js +744 -74
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +687 -19
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +2 -2
  8. package/src/parse-date.ts +12 -9
  9. package/dist/align.d.ts +0 -4
  10. package/dist/align.js +0 -29
  11. package/dist/align.mjs +0 -24
  12. package/dist/assertion.d.ts +0 -10
  13. package/dist/assertion.js +0 -47
  14. package/dist/assertion.mjs +0 -36
  15. package/dist/constrain.d.ts +0 -6
  16. package/dist/constrain.js +0 -66
  17. package/dist/constrain.mjs +0 -58
  18. package/dist/duration.d.ts +0 -8
  19. package/dist/duration.js +0 -23
  20. package/dist/duration.mjs +0 -18
  21. package/dist/format-date.d.ts +0 -6
  22. package/dist/format-date.js +0 -57
  23. package/dist/format-date.mjs +0 -53
  24. package/dist/format-range.d.ts +0 -2
  25. package/dist/format-range.js +0 -28
  26. package/dist/format-range.mjs +0 -24
  27. package/dist/format-selected-date.d.ts +0 -2
  28. package/dist/format-selected-date.js +0 -19
  29. package/dist/format-selected-date.mjs +0 -15
  30. package/dist/format-visible-range.d.ts +0 -2
  31. package/dist/format-visible-range.js +0 -26
  32. package/dist/format-visible-range.mjs +0 -22
  33. package/dist/get-day-formatter.d.ts +0 -2
  34. package/dist/get-day-formatter.js +0 -20
  35. package/dist/get-day-formatter.mjs +0 -16
  36. package/dist/get-decade-range.d.ts +0 -1
  37. package/dist/get-decade-range.js +0 -15
  38. package/dist/get-decade-range.mjs +0 -11
  39. package/dist/get-era-format.d.ts +0 -2
  40. package/dist/get-era-format.js +0 -9
  41. package/dist/get-era-format.mjs +0 -5
  42. package/dist/get-month-days.d.ts +0 -3
  43. package/dist/get-month-days.js +0 -29
  44. package/dist/get-month-days.mjs +0 -24
  45. package/dist/get-month-formatter.d.ts +0 -2
  46. package/dist/get-month-formatter.js +0 -19
  47. package/dist/get-month-formatter.mjs +0 -15
  48. package/dist/get-month-names.d.ts +0 -1
  49. package/dist/get-month-names.js +0 -15
  50. package/dist/get-month-names.mjs +0 -11
  51. package/dist/get-start-of-week.d.ts +0 -2
  52. package/dist/get-start-of-week.js +0 -13
  53. package/dist/get-start-of-week.mjs +0 -9
  54. package/dist/get-week-days.d.ts +0 -7
  55. package/dist/get-week-days.js +0 -15
  56. package/dist/get-week-days.mjs +0 -11
  57. package/dist/get-weekday-formats.d.ts +0 -7
  58. package/dist/get-weekday-formats.js +0 -22
  59. package/dist/get-weekday-formats.mjs +0 -18
  60. package/dist/get-year-range.d.ts +0 -5
  61. package/dist/get-year-range.js +0 -13
  62. package/dist/get-year-range.mjs +0 -9
  63. package/dist/mutation.d.ts +0 -10
  64. package/dist/mutation.js +0 -51
  65. package/dist/mutation.mjs +0 -40
  66. package/dist/pagination.d.ts +0 -49
  67. package/dist/pagination.js +0 -191
  68. package/dist/pagination.mjs +0 -179
  69. package/dist/parse-date.d.ts +0 -2
  70. package/dist/parse-date.js +0 -44
  71. package/dist/parse-date.mjs +0 -40
  72. package/dist/types.d.ts +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constrain.ts","../src/align.ts","../src/assertion.ts","../src/duration.ts","../src/format-date.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"],"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 let halfDuration: DateDuration = {}\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2)\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration)\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 date.compare(startDate) < 0 || date.compare(endDate) > 0 || 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 d = { ...duration }\n for (let key in d) {\n d[key] = 1\n }\n return d\n}\n\nexport function getEndDate(startDate: DateValue, duration: DateDuration) {\n let d = { ...duration }\n if (d.days) {\n d.days--\n } else {\n d.days = -1\n }\n return startDate.add(d)\n}\n","import { type DateValue, toCalendarDateTime } from \"@internationalized/date\"\n\nfunction createRegEx(sign: string) {\n let symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(value: DateValue, formatString: string, locale: string, timeZone: string = \"UTC\") {\n const datetime = toCalendarDateTime(value)\n const date = datetime.toDate(timeZone)\n\n const formats = {\n // Time in ms\n T: date.getTime(),\n\n // Minutes\n m: date.toLocaleString(locale, { minute: \"numeric\" }),\n mm: date.toLocaleString(locale, { minute: \"2-digit\" }),\n\n // Seconds\n s: date.toLocaleString(locale, { second: \"numeric\" }),\n ss: date.toLocaleString(locale, { second: \"2-digit\" }),\n\n // Hours\n h: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }),\n hh: date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }),\n H: date.toLocaleString(locale, { hour: \"numeric\", hour12: false }),\n HH: date.toLocaleString(locale, { hour: \"2-digit\", hour12: false }),\n\n // Day period\n aa: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLowerCase(),\n AA: date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toUpperCase(),\n\n // Day of week\n E: date.toLocaleString(locale, { weekday: \"short\" }),\n EE: date.toLocaleString(locale, { weekday: \"short\" }),\n EEE: date.toLocaleString(locale, { weekday: \"short\" }),\n EEEE: date.toLocaleString(locale, { weekday: \"long\" }),\n\n // Date of month\n d: datetime.day,\n dd: date.toLocaleString(locale, { day: \"2-digit\" }),\n\n // Months\n M: datetime.month + 1,\n MM: date.toLocaleString(locale, { month: \"2-digit\" }),\n MMM: date.toLocaleString(locale, { month: \"short\" }),\n MMMM: date.toLocaleString(locale, { month: \"long\" }),\n\n // Years\n yy: date.toLocaleString(locale, { year: \"2-digit\" }),\n yyyy: date.toLocaleString(locale, { year: \"numeric\" }),\n YY: date.toLocaleString(locale, { year: \"2-digit\" }),\n YYYY: date.toLocaleString(locale, { year: \"numeric\" }),\n }\n\n let result = formatString\n for (const key in formats) {\n result = result.replace(createRegEx(key), \"$1\" + formats[key] + \"$3\")\n }\n\n return result\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 } 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 getMonthDays(from: DateValue, locale: string, numOfWeeks?: number, firstDayOfWeek?: number) {\n const monthWeeks = getWeeksInMonth(from, locale)\n const weeks = [...new Array(numOfWeeks ?? 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 function getAdjustedDateFn(\n visibleDuration: DateDuration,\n locale: string,\n minValue?: DateValue,\n maxValue?: DateValue,\n) {\n return function getDate(options: { startDate: DateValue; focusedDate: DateValue }) {\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 endDate,\n focusedDate: constrainValue(focusedDate, minValue, maxValue),\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 { CalendarDateTime, DateFormatter } from \"@internationalized/date\"\n\nexport function parseDateString(date: string, locale: string, timeZone: string) {\n const regex = createRegex(locale, timeZone)\n const { year, month, day } = extract(regex, date) ?? {}\n\n if (year != null && year.length === 4 && month != null && +month <= 12 && day != null && +day <= 31) {\n return new CalendarDateTime(+year, +month, +day)\n }\n\n const time = Date.parse(date)\n if (!isNaN(time)) {\n const date = new Date(time)\n return new CalendarDateTime(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\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(\n (acc, curr, index) => {\n if (!curr) return acc\n if (matches && matches.length > index) {\n acc[curr] = matches[index + 1]\n } else {\n acc[curr] = null\n }\n return acc\n },\n {} as { year: string; month: string; day: string },\n )\n}\n"],"mappings":"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","names":["isSameDay","toCalendarDateTime","toCalendarDateTime","isSameDay","start","end","isSameDay","startOfMonth","today","toCalendarDate","DateFormatter","toCalendarDate","today","DateFormatter","isSameDay","startOfMonth","isSameDay","isSameDay","DateFormatter","toCalendarDateTime","today","today","toCalendarDateTime","isDateUnavailable","endOfMonth","startOfMonth","startOfWeek","startOfWeek","startOfMonth","endOfMonth","DateFormatter","date"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/date-utils",
3
- "version": "0.10.5",
3
+ "version": "0.11.1",
4
4
  "description": "Date utilities for zag.js",
5
5
  "keywords": [
6
6
  "js",
@@ -42,7 +42,7 @@
42
42
  "./package.json": "./package.json"
43
43
  },
44
44
  "scripts": {
45
- "build": "vite build -c ../../../vite.config.ts",
45
+ "build": "tsup",
46
46
  "lint": "eslint src --ext .ts,.tsx",
47
47
  "typecheck": "tsc --noEmit"
48
48
  }
package/src/parse-date.ts CHANGED
@@ -33,13 +33,16 @@ function extract(pattern: string | RegExp, str: string) {
33
33
  }
34
34
  return group.match(/<(.+)>/)?.[1]
35
35
  })
36
- .reduce((acc, curr, index) => {
37
- if (!curr) return acc
38
- if (matches && matches.length > index) {
39
- acc[curr] = matches[index + 1]
40
- } else {
41
- acc[curr] = null
42
- }
43
- return acc
44
- }, {} as { year: string; month: string; day: string })
36
+ .reduce(
37
+ (acc, curr, index) => {
38
+ if (!curr) return acc
39
+ if (matches && matches.length > index) {
40
+ acc[curr] = matches[index + 1]
41
+ } else {
42
+ acc[curr] = null
43
+ }
44
+ return acc
45
+ },
46
+ {} as { year: string; month: string; day: string },
47
+ )
45
48
  }
package/dist/align.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { DateDuration, DateValue } from "@internationalized/date";
2
- import type { DateAlignment } from "./types";
3
- export declare function alignDate(date: DateValue, alignment: DateAlignment, duration: DateDuration, locale: string, min?: DateValue | undefined, max?: DateValue | undefined): DateValue;
4
- export declare function alignStartDate(date: DateValue, startDate: DateValue, endDate: DateValue, duration: DateDuration, locale: string, min?: DateValue | undefined, max?: DateValue | undefined): DateValue;
package/dist/align.js DELETED
@@ -1,29 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- const constrain = require('./constrain.js');
6
-
7
- function alignDate(date, alignment, duration, locale, min, max) {
8
- switch (alignment) {
9
- case "start":
10
- return constrain.alignStart(date, duration, locale, min, max);
11
- case "end":
12
- return constrain.alignEnd(date, duration, locale, min, max);
13
- case "center":
14
- default:
15
- return constrain.alignCenter(date, duration, locale, min, max);
16
- }
17
- }
18
- function alignStartDate(date, startDate, endDate, duration, locale, min, max) {
19
- if (date.compare(startDate) < 0) {
20
- return constrain.alignEnd(date, duration, locale, min, max);
21
- }
22
- if (date.compare(endDate) > 0) {
23
- return constrain.alignStart(date, duration, locale, min, max);
24
- }
25
- return startDate;
26
- }
27
-
28
- exports.alignDate = alignDate;
29
- exports.alignStartDate = alignStartDate;
package/dist/align.mjs DELETED
@@ -1,24 +0,0 @@
1
- import { alignCenter, alignEnd, alignStart } from './constrain.mjs';
2
-
3
- function alignDate(date, alignment, duration, locale, min, max) {
4
- switch (alignment) {
5
- case "start":
6
- return alignStart(date, duration, locale, min, max);
7
- case "end":
8
- return alignEnd(date, duration, locale, min, max);
9
- case "center":
10
- default:
11
- return alignCenter(date, duration, locale, min, max);
12
- }
13
- }
14
- function alignStartDate(date, startDate, endDate, duration, locale, min, max) {
15
- if (date.compare(startDate) < 0) {
16
- return alignEnd(date, duration, locale, min, max);
17
- }
18
- if (date.compare(endDate) > 0) {
19
- return alignStart(date, duration, locale, min, max);
20
- }
21
- return startDate;
22
- }
23
-
24
- export { alignDate, alignStartDate };
@@ -1,10 +0,0 @@
1
- import { type DateValue } from "@internationalized/date";
2
- import type { DateAvailableFn } from "./types";
3
- export declare function isTodayDate(date: DateValue, timeZone: string): boolean;
4
- export declare function isDateEqual(dateA: DateValue, dateB?: DateValue | null): boolean;
5
- export declare function isDateInvalid(date: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null): boolean;
6
- export declare function isDateDisabled(date: DateValue, startDate: DateValue, endDate: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null): boolean;
7
- export declare function isDateUnavailable(date: DateValue | null, isUnavailable: DateAvailableFn | undefined, locale: string, minValue?: DateValue | null, maxValue?: DateValue | null): boolean;
8
- export declare function isDateOutsideVisibleRange(date: DateValue, startDate: DateValue, endDate: DateValue): boolean;
9
- export declare function isPreviousVisibleRangeInvalid(startDate: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null): boolean;
10
- export declare function isNextVisibleRangeInvalid(endDate: DateValue, minValue?: DateValue | null, maxValue?: DateValue | null): boolean;
package/dist/assertion.js DELETED
@@ -1,47 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- const date = require('@internationalized/date');
6
-
7
- function isTodayDate(date$1, timeZone) {
8
- return date.isToday(date$1, timeZone);
9
- }
10
- function isDateEqual(dateA, dateB) {
11
- return dateB != null && date.isSameDay(dateA, dateB);
12
- }
13
- function isDateInvalid(date, minValue, maxValue) {
14
- return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
15
- }
16
- function isDateDisabled(date, startDate, endDate, minValue, maxValue) {
17
- return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue);
18
- }
19
- function isDateUnavailable(date, isUnavailable, locale, minValue, maxValue) {
20
- if (!date) {
21
- return false;
22
- }
23
- if (isUnavailable?.(date, locale)) {
24
- return true;
25
- }
26
- return isDateInvalid(date, minValue, maxValue);
27
- }
28
- function isDateOutsideVisibleRange(date, startDate, endDate) {
29
- return date.compare(startDate) < 0 || date.compare(endDate) > 0;
30
- }
31
- function isPreviousVisibleRangeInvalid(startDate, minValue, maxValue) {
32
- const prevDate = startDate.subtract({ days: 1 });
33
- return date.isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue);
34
- }
35
- function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
36
- const nextDate = endDate.add({ days: 1 });
37
- return date.isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
38
- }
39
-
40
- exports.isDateDisabled = isDateDisabled;
41
- exports.isDateEqual = isDateEqual;
42
- exports.isDateInvalid = isDateInvalid;
43
- exports.isDateOutsideVisibleRange = isDateOutsideVisibleRange;
44
- exports.isDateUnavailable = isDateUnavailable;
45
- exports.isNextVisibleRangeInvalid = isNextVisibleRangeInvalid;
46
- exports.isPreviousVisibleRangeInvalid = isPreviousVisibleRangeInvalid;
47
- exports.isTodayDate = isTodayDate;
@@ -1,36 +0,0 @@
1
- import { isToday, isSameDay } from '@internationalized/date';
2
-
3
- function isTodayDate(date, timeZone) {
4
- return isToday(date, timeZone);
5
- }
6
- function isDateEqual(dateA, dateB) {
7
- return dateB != null && isSameDay(dateA, dateB);
8
- }
9
- function isDateInvalid(date, minValue, maxValue) {
10
- return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
11
- }
12
- function isDateDisabled(date, startDate, endDate, minValue, maxValue) {
13
- return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue);
14
- }
15
- function isDateUnavailable(date, isUnavailable, locale, minValue, maxValue) {
16
- if (!date) {
17
- return false;
18
- }
19
- if (isUnavailable?.(date, locale)) {
20
- return true;
21
- }
22
- return isDateInvalid(date, minValue, maxValue);
23
- }
24
- function isDateOutsideVisibleRange(date, startDate, endDate) {
25
- return date.compare(startDate) < 0 || date.compare(endDate) > 0;
26
- }
27
- function isPreviousVisibleRangeInvalid(startDate, minValue, maxValue) {
28
- const prevDate = startDate.subtract({ days: 1 });
29
- return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue);
30
- }
31
- function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
32
- const nextDate = endDate.add({ days: 1 });
33
- return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
34
- }
35
-
36
- export { isDateDisabled, isDateEqual, isDateInvalid, isDateOutsideVisibleRange, isDateUnavailable, isNextVisibleRangeInvalid, isPreviousVisibleRangeInvalid, isTodayDate };
@@ -1,6 +0,0 @@
1
- import { type DateDuration, type DateValue } from "@internationalized/date";
2
- export declare function alignCenter(date: DateValue, duration: DateDuration, locale: string, min?: DateValue, max?: DateValue): DateValue;
3
- export declare function alignStart(date: DateValue, duration: DateDuration, locale: string, min?: DateValue, max?: DateValue): DateValue;
4
- export declare function alignEnd(date: DateValue, duration: DateDuration, locale: string, min?: DateValue, max?: DateValue): DateValue;
5
- export declare function constrainStart(date: DateValue, aligned: DateValue, duration: DateDuration, locale: string, min?: DateValue, max?: DateValue): DateValue;
6
- export declare function constrainValue(date: DateValue, minValue?: DateValue, maxValue?: DateValue): DateValue;
package/dist/constrain.js DELETED
@@ -1,66 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- const date = require('@internationalized/date');
6
-
7
- function alignCenter(date, duration, locale, min, max) {
8
- let halfDuration = {};
9
- for (let key in duration) {
10
- halfDuration[key] = Math.floor(duration[key] / 2);
11
- if (halfDuration[key] > 0 && duration[key] % 2 === 0) {
12
- halfDuration[key]--;
13
- }
14
- }
15
- let aligned = alignStart(date, duration, locale).subtract(halfDuration);
16
- return constrainStart(date, aligned, duration, locale, min, max);
17
- }
18
- function alignStart(date$1, duration, locale, min, max) {
19
- let aligned = date$1;
20
- if (duration.years) {
21
- aligned = date.startOfYear(date$1);
22
- } else if (duration.months) {
23
- aligned = date.startOfMonth(date$1);
24
- } else if (duration.weeks) {
25
- aligned = date.startOfWeek(date$1, locale);
26
- }
27
- return constrainStart(date$1, aligned, duration, locale, min, max);
28
- }
29
- function alignEnd(date, duration, locale, min, max) {
30
- let d = { ...duration };
31
- if (d.days) {
32
- d.days--;
33
- } else if (d.weeks) {
34
- d.weeks--;
35
- } else if (d.months) {
36
- d.months--;
37
- } else if (d.years) {
38
- d.years--;
39
- }
40
- let aligned = alignStart(date, duration, locale).subtract(d);
41
- return constrainStart(date, aligned, duration, locale, min, max);
42
- }
43
- function constrainStart(date$1, aligned, duration, locale, min, max) {
44
- if (min && date$1.compare(min) >= 0) {
45
- aligned = date.maxDate(aligned, alignStart(date.toCalendarDate(min), duration, locale));
46
- }
47
- if (max && date$1.compare(max) <= 0) {
48
- aligned = date.minDate(aligned, alignEnd(date.toCalendarDate(max), duration, locale));
49
- }
50
- return aligned;
51
- }
52
- function constrainValue(date$1, minValue, maxValue) {
53
- if (minValue) {
54
- date$1 = date.maxDate(date$1, date.toCalendarDate(minValue));
55
- }
56
- if (maxValue) {
57
- date$1 = date.minDate(date$1, date.toCalendarDate(maxValue));
58
- }
59
- return date$1;
60
- }
61
-
62
- exports.alignCenter = alignCenter;
63
- exports.alignEnd = alignEnd;
64
- exports.alignStart = alignStart;
65
- exports.constrainStart = constrainStart;
66
- exports.constrainValue = constrainValue;
@@ -1,58 +0,0 @@
1
- import { startOfYear, startOfMonth, startOfWeek, maxDate, toCalendarDate, minDate } from '@internationalized/date';
2
-
3
- function alignCenter(date, duration, locale, min, max) {
4
- let halfDuration = {};
5
- for (let key in duration) {
6
- halfDuration[key] = Math.floor(duration[key] / 2);
7
- if (halfDuration[key] > 0 && duration[key] % 2 === 0) {
8
- halfDuration[key]--;
9
- }
10
- }
11
- let aligned = alignStart(date, duration, locale).subtract(halfDuration);
12
- return constrainStart(date, aligned, duration, locale, min, max);
13
- }
14
- function alignStart(date, duration, locale, min, max) {
15
- let aligned = date;
16
- if (duration.years) {
17
- aligned = startOfYear(date);
18
- } else if (duration.months) {
19
- aligned = startOfMonth(date);
20
- } else if (duration.weeks) {
21
- aligned = startOfWeek(date, locale);
22
- }
23
- return constrainStart(date, aligned, duration, locale, min, max);
24
- }
25
- function alignEnd(date, duration, locale, min, max) {
26
- let d = { ...duration };
27
- if (d.days) {
28
- d.days--;
29
- } else if (d.weeks) {
30
- d.weeks--;
31
- } else if (d.months) {
32
- d.months--;
33
- } else if (d.years) {
34
- d.years--;
35
- }
36
- let aligned = alignStart(date, duration, locale).subtract(d);
37
- return constrainStart(date, aligned, duration, locale, min, max);
38
- }
39
- function constrainStart(date, aligned, duration, locale, min, max) {
40
- if (min && date.compare(min) >= 0) {
41
- aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale));
42
- }
43
- if (max && date.compare(max) <= 0) {
44
- aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale));
45
- }
46
- return aligned;
47
- }
48
- function constrainValue(date, minValue, maxValue) {
49
- if (minValue) {
50
- date = maxDate(date, toCalendarDate(minValue));
51
- }
52
- if (maxValue) {
53
- date = minDate(date, toCalendarDate(maxValue));
54
- }
55
- return date;
56
- }
57
-
58
- export { alignCenter, alignEnd, alignStart, constrainStart, constrainValue };
@@ -1,8 +0,0 @@
1
- import type { CalendarDate, CalendarDateTime, ZonedDateTime, DateDuration, DateValue } from '@internationalized/date';
2
- export declare function getUnitDuration(duration: DateDuration): {
3
- years?: number | undefined;
4
- months?: number | undefined;
5
- weeks?: number | undefined;
6
- days?: number | undefined;
7
- };
8
- export declare function getEndDate(startDate: DateValue, duration: DateDuration): CalendarDate | CalendarDateTime | ZonedDateTime;
package/dist/duration.js DELETED
@@ -1,23 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- function getUnitDuration(duration) {
6
- let d = { ...duration };
7
- for (let key in d) {
8
- d[key] = 1;
9
- }
10
- return d;
11
- }
12
- function getEndDate(startDate, duration) {
13
- let d = { ...duration };
14
- if (d.days) {
15
- d.days--;
16
- } else {
17
- d.days = -1;
18
- }
19
- return startDate.add(d);
20
- }
21
-
22
- exports.getEndDate = getEndDate;
23
- exports.getUnitDuration = getUnitDuration;
package/dist/duration.mjs DELETED
@@ -1,18 +0,0 @@
1
- function getUnitDuration(duration) {
2
- let d = { ...duration };
3
- for (let key in d) {
4
- d[key] = 1;
5
- }
6
- return d;
7
- }
8
- function getEndDate(startDate, duration) {
9
- let d = { ...duration };
10
- if (d.days) {
11
- d.days--;
12
- } else {
13
- d.days = -1;
14
- }
15
- return startDate.add(d);
16
- }
17
-
18
- export { getEndDate, getUnitDuration };
@@ -1,6 +0,0 @@
1
- import { type DateValue } from "@internationalized/date";
2
- /**
3
- * Formats a date using the given format string as defined in:
4
- * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
5
- */
6
- export declare function formatDate(value: DateValue, formatString: string, locale: string, timeZone?: string): string;
@@ -1,57 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- const date = require('@internationalized/date');
6
-
7
- function createRegEx(sign) {
8
- let symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
9
- return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
10
- }
11
- function formatDate(value, formatString, locale, timeZone = "UTC") {
12
- const datetime = date.toCalendarDateTime(value);
13
- const date$1 = datetime.toDate(timeZone);
14
- const formats = {
15
- // Time in ms
16
- T: date$1.getTime(),
17
- // Minutes
18
- m: date$1.toLocaleString(locale, { minute: "numeric" }),
19
- mm: date$1.toLocaleString(locale, { minute: "2-digit" }),
20
- // Seconds
21
- s: date$1.toLocaleString(locale, { second: "numeric" }),
22
- ss: date$1.toLocaleString(locale, { second: "2-digit" }),
23
- // Hours
24
- h: date$1.toLocaleString(locale, { hour: "numeric", hour12: true }),
25
- hh: date$1.toLocaleString(locale, { hour: "2-digit", hour12: true }),
26
- H: date$1.toLocaleString(locale, { hour: "numeric", hour12: false }),
27
- HH: date$1.toLocaleString(locale, { hour: "2-digit", hour12: false }),
28
- // Day period
29
- aa: date$1.toLocaleString(locale, { hour: "numeric", hour12: true }).toLowerCase(),
30
- AA: date$1.toLocaleString(locale, { hour: "numeric", hour12: true }).toUpperCase(),
31
- // Day of week
32
- E: date$1.toLocaleString(locale, { weekday: "short" }),
33
- EE: date$1.toLocaleString(locale, { weekday: "short" }),
34
- EEE: date$1.toLocaleString(locale, { weekday: "short" }),
35
- EEEE: date$1.toLocaleString(locale, { weekday: "long" }),
36
- // Date of month
37
- d: datetime.day,
38
- dd: date$1.toLocaleString(locale, { day: "2-digit" }),
39
- // Months
40
- M: datetime.month + 1,
41
- MM: date$1.toLocaleString(locale, { month: "2-digit" }),
42
- MMM: date$1.toLocaleString(locale, { month: "short" }),
43
- MMMM: date$1.toLocaleString(locale, { month: "long" }),
44
- // Years
45
- yy: date$1.toLocaleString(locale, { year: "2-digit" }),
46
- yyyy: date$1.toLocaleString(locale, { year: "numeric" }),
47
- YY: date$1.toLocaleString(locale, { year: "2-digit" }),
48
- YYYY: date$1.toLocaleString(locale, { year: "numeric" })
49
- };
50
- let result = formatString;
51
- for (const key in formats) {
52
- result = result.replace(createRegEx(key), "$1" + formats[key] + "$3");
53
- }
54
- return result;
55
- }
56
-
57
- exports.formatDate = formatDate;
@@ -1,53 +0,0 @@
1
- import { toCalendarDateTime } from '@internationalized/date';
2
-
3
- function createRegEx(sign) {
4
- let symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
5
- return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
6
- }
7
- function formatDate(value, formatString, locale, timeZone = "UTC") {
8
- const datetime = toCalendarDateTime(value);
9
- const date = datetime.toDate(timeZone);
10
- const formats = {
11
- // Time in ms
12
- T: date.getTime(),
13
- // Minutes
14
- m: date.toLocaleString(locale, { minute: "numeric" }),
15
- mm: date.toLocaleString(locale, { minute: "2-digit" }),
16
- // Seconds
17
- s: date.toLocaleString(locale, { second: "numeric" }),
18
- ss: date.toLocaleString(locale, { second: "2-digit" }),
19
- // Hours
20
- h: date.toLocaleString(locale, { hour: "numeric", hour12: true }),
21
- hh: date.toLocaleString(locale, { hour: "2-digit", hour12: true }),
22
- H: date.toLocaleString(locale, { hour: "numeric", hour12: false }),
23
- HH: date.toLocaleString(locale, { hour: "2-digit", hour12: false }),
24
- // Day period
25
- aa: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLowerCase(),
26
- AA: date.toLocaleString(locale, { hour: "numeric", hour12: true }).toUpperCase(),
27
- // Day of week
28
- E: date.toLocaleString(locale, { weekday: "short" }),
29
- EE: date.toLocaleString(locale, { weekday: "short" }),
30
- EEE: date.toLocaleString(locale, { weekday: "short" }),
31
- EEEE: date.toLocaleString(locale, { weekday: "long" }),
32
- // Date of month
33
- d: datetime.day,
34
- dd: date.toLocaleString(locale, { day: "2-digit" }),
35
- // Months
36
- M: datetime.month + 1,
37
- MM: date.toLocaleString(locale, { month: "2-digit" }),
38
- MMM: date.toLocaleString(locale, { month: "short" }),
39
- MMMM: date.toLocaleString(locale, { month: "long" }),
40
- // Years
41
- yy: date.toLocaleString(locale, { year: "2-digit" }),
42
- yyyy: date.toLocaleString(locale, { year: "numeric" }),
43
- YY: date.toLocaleString(locale, { year: "2-digit" }),
44
- YYYY: date.toLocaleString(locale, { year: "numeric" })
45
- };
46
- let result = formatString;
47
- for (const key in formats) {
48
- result = result.replace(createRegEx(key), "$1" + formats[key] + "$3");
49
- }
50
- return result;
51
- }
52
-
53
- export { formatDate };
@@ -1,2 +0,0 @@
1
- import type { DateValue, DateFormatter } from "@internationalized/date";
2
- export declare function formatRange(startDate: DateValue, endDate: DateValue, formatter: DateFormatter, toString: (start: string, end: string) => string, timeZone: string): string;
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- function formatRange(startDate, endDate, formatter, toString, timeZone) {
6
- let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));
7
- let separatorIndex = -1;
8
- for (let i = 0; i < parts.length; i++) {
9
- let part = parts[i];
10
- if (part.source === "shared" && part.type === "literal") {
11
- separatorIndex = i;
12
- } else if (part.source === "endRange") {
13
- break;
14
- }
15
- }
16
- let start = "";
17
- let end = "";
18
- for (let i = 0; i < parts.length; i++) {
19
- if (i < separatorIndex) {
20
- start += parts[i].value;
21
- } else if (i > separatorIndex) {
22
- end += parts[i].value;
23
- }
24
- }
25
- return toString(start, end);
26
- }
27
-
28
- exports.formatRange = formatRange;