@mantine/schedule 9.0.0-alpha.4 → 9.0.0-alpha.6
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/cjs/_virtual/_rolldown/runtime.cjs +24 -0
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs +79 -101
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.cjs +12 -0
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.cjs.map +1 -0
- package/cjs/components/DayView/DayView.cjs +462 -480
- package/cjs/components/DayView/DayView.cjs.map +1 -1
- package/cjs/components/DayView/DayView.module.cjs +20 -0
- package/cjs/components/DayView/DayView.module.cjs.map +1 -0
- package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs +89 -105
- package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -1
- package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs +106 -49
- package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
- package/cjs/components/DragContext/DragContext.cjs +7 -8
- package/cjs/components/DragContext/DragContext.cjs.map +1 -1
- package/cjs/components/MobileMonthView/MobileMonthView.cjs +261 -289
- package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
- package/cjs/components/MobileMonthView/MobileMonthView.module.cjs +27 -0
- package/cjs/components/MobileMonthView/MobileMonthView.module.cjs.map +1 -0
- package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs +35 -49
- package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
- package/cjs/components/MonthView/MonthView.cjs +365 -416
- package/cjs/components/MonthView/MonthView.cjs.map +1 -1
- package/cjs/components/MonthView/MonthView.module.cjs +18 -0
- package/cjs/components/MonthView/MonthView.module.cjs.map +1 -0
- package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs +15 -24
- package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs +23 -35
- package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs +16 -29
- package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs +87 -81
- package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs +36 -44
- package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs +30 -38
- package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
- package/cjs/components/MonthView/handle-month-view-key-down.cjs +94 -139
- package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -1
- package/cjs/components/MoreEvents/MoreEvents.cjs +87 -121
- package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
- package/cjs/components/MoreEvents/MoreEvents.module.cjs +11 -0
- package/cjs/components/MoreEvents/MoreEvents.module.cjs.map +1 -0
- package/cjs/components/Schedule/Schedule.cjs +147 -165
- package/cjs/components/Schedule/Schedule.cjs.map +1 -1
- package/cjs/components/Schedule/Schedule.module.cjs +11 -0
- package/cjs/components/Schedule/Schedule.module.cjs.map +1 -0
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +116 -130
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
- package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs +11 -0
- package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs.map +1 -0
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs +62 -73
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.cjs +7 -0
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.cjs.map +1 -0
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs +152 -189
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.cjs +13 -0
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.cjs.map +1 -0
- package/cjs/components/ScheduleHeader/ScheduleHeader.cjs +41 -55
- package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs +13 -0
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs.map +1 -0
- package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +83 -84
- package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs +105 -126
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.cjs +7 -0
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.cjs.map +1 -0
- package/cjs/components/WeekView/WeekView.cjs +617 -632
- package/cjs/components/WeekView/WeekView.cjs.map +1 -1
- package/cjs/components/WeekView/WeekView.module.cjs +29 -0
- package/cjs/components/WeekView/WeekView.module.cjs.map +1 -0
- package/cjs/components/WeekView/WeekViewDay.cjs +71 -106
- package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-label/get-week-label.cjs +27 -34
- package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs +21 -28
- package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs +13 -29
- package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs +14 -31
- package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs +13 -16
- package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs +14 -21
- package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs +26 -34
- package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs +26 -38
- package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs +11 -16
- package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs +17 -30
- package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs +200 -140
- package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs +11 -9
- package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs.map +1 -1
- package/cjs/components/WeekView/handle-week-view-key-down.cjs +82 -127
- package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -1
- package/cjs/components/YearView/YearView.cjs +160 -210
- package/cjs/components/YearView/YearView.cjs.map +1 -1
- package/cjs/components/YearView/YearView.module.cjs +20 -0
- package/cjs/components/YearView/YearView.module.cjs.map +1 -0
- package/cjs/components/YearView/YearViewMonth.cjs +135 -156
- package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
- package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs +32 -47
- package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
- package/cjs/components/YearView/handle-year-view-key-down.cjs +143 -202
- package/cjs/components/YearView/handle-year-view-key-down.cjs.map +1 -1
- package/cjs/hooks/use-auto-scroll-on-drag.cjs +67 -70
- package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
- package/cjs/hooks/use-drag-drop-handlers.cjs +110 -126
- package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
- package/cjs/hooks/use-drag-state.cjs +38 -42
- package/cjs/hooks/use-drag-state.cjs.map +1 -1
- package/cjs/hooks/use-event-resize.cjs +134 -0
- package/cjs/hooks/use-event-resize.cjs.map +1 -0
- package/cjs/hooks/use-slot-drag-select.cjs +75 -88
- package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
- package/cjs/index.cjs +98 -101
- package/cjs/labels.cjs +30 -28
- package/cjs/labels.cjs.map +1 -1
- package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs +23 -36
- package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -1
- package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs +17 -24
- package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -1
- package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs +9 -8
- package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs.map +1 -1
- package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs +120 -0
- package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -0
- package/cjs/utils/format-date/format-date.cjs +10 -15
- package/cjs/utils/format-date/format-date.cjs.map +1 -1
- package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs +23 -22
- package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs.map +1 -1
- package/cjs/utils/get-current-time-position/get-current-time-position.cjs +19 -25
- package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
- package/cjs/utils/get-day-position/get-day-position.cjs +26 -35
- package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -1
- package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs +50 -45
- package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs.map +1 -1
- package/cjs/utils/get-end-of-week/get-end-of-week.cjs +13 -20
- package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
- package/cjs/utils/get-month-days/get-month-days.cjs +41 -47
- package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
- package/cjs/utils/get-month-range/get-month-range.cjs +25 -30
- package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -1
- package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs +21 -21
- package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -1
- package/cjs/utils/get-months-list/get-months-list.cjs +20 -18
- package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
- package/cjs/utils/get-start-of-week/get-start-of-week.cjs +11 -16
- package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
- package/cjs/utils/get-visible-events/get-visible-events.cjs +13 -15
- package/cjs/utils/get-visible-events/get-visible-events.cjs.map +1 -1
- package/cjs/utils/get-week-days/get-week-days.cjs +23 -30
- package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
- package/cjs/utils/get-week-number/get-week-number.cjs +13 -19
- package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
- package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs +18 -23
- package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
- package/cjs/utils/get-years-list/get-years-list.cjs +8 -10
- package/cjs/utils/get-years-list/get-years-list.cjs.map +1 -1
- package/cjs/utils/is-after-min-date/is-after-min-date.cjs +9 -12
- package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -1
- package/cjs/utils/is-all-day-event/is-all-day-event.cjs +13 -16
- package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -1
- package/cjs/utils/is-before-max-date/is-before-max-date.cjs +9 -12
- package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -1
- package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs +19 -27
- package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
- package/cjs/utils/is-events-overlap/is-events-overlap.cjs +13 -16
- package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -1
- package/cjs/utils/is-in-time-range/is-in-time-range.cjs +17 -23
- package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -1
- package/cjs/utils/is-multiday-event/is-multiday-event.cjs +10 -14
- package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
- package/cjs/utils/is-same-month/is-same-month.cjs +9 -12
- package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
- package/cjs/utils/is-within-week/is-within-week.cjs +15 -15
- package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
- package/cjs/utils/next-week/next-week.cjs +15 -15
- package/cjs/utils/next-week/next-week.cjs.map +1 -1
- package/cjs/utils/parse-time-string/parse-time-string.cjs +11 -7
- package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -1
- package/cjs/utils/previous-week/previous-week.cjs +15 -15
- package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
- package/cjs/utils/sort-events/sort-events.cjs +14 -18
- package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
- package/cjs/utils/to-date-string/to-date-string.cjs +9 -12
- package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
- package/cjs/utils/to-time-string/to-time-string.cjs +6 -6
- package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -1
- package/cjs/utils/validate-event/validate-event.cjs +12 -23
- package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs +76 -94
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.mjs +12 -0
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.mjs.map +1 -0
- package/esm/components/DayView/DayView.mjs +459 -473
- package/esm/components/DayView/DayView.mjs.map +1 -1
- package/esm/components/DayView/DayView.module.mjs +20 -0
- package/esm/components/DayView/DayView.module.mjs.map +1 -0
- package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs +89 -103
- package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
- package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs +104 -43
- package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
- package/esm/components/DragContext/DragContext.mjs +6 -5
- package/esm/components/DragContext/DragContext.mjs.map +1 -1
- package/esm/components/MobileMonthView/MobileMonthView.mjs +257 -281
- package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
- package/esm/components/MobileMonthView/MobileMonthView.module.mjs +27 -0
- package/esm/components/MobileMonthView/MobileMonthView.module.mjs.map +1 -0
- package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs +33 -43
- package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.mjs +362 -409
- package/esm/components/MonthView/MonthView.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.module.mjs +18 -0
- package/esm/components/MonthView/MonthView.module.mjs.map +1 -0
- package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs +15 -22
- package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs +23 -33
- package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/find-available-row.mjs +14 -23
- package/esm/components/MonthView/get-month-view-events/find-available-row.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs +85 -75
- package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs +34 -38
- package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs +28 -32
- package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs.map +1 -1
- package/esm/components/MonthView/handle-month-view-key-down.mjs +94 -137
- package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -1
- package/esm/components/MoreEvents/MoreEvents.mjs +85 -118
- package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
- package/esm/components/MoreEvents/MoreEvents.module.mjs +11 -0
- package/esm/components/MoreEvents/MoreEvents.module.mjs.map +1 -0
- package/esm/components/Schedule/Schedule.mjs +145 -162
- package/esm/components/Schedule/Schedule.mjs.map +1 -1
- package/esm/components/Schedule/Schedule.module.mjs +11 -0
- package/esm/components/Schedule/Schedule.module.mjs.map +1 -0
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs +114 -127
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
- package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs +11 -0
- package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs.map +1 -0
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs +60 -70
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.mjs +7 -0
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.mjs.map +1 -0
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs +150 -186
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.mjs +13 -0
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.mjs.map +1 -0
- package/esm/components/ScheduleHeader/ScheduleHeader.mjs +33 -46
- package/esm/components/ScheduleHeader/ScheduleHeader.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs +13 -0
- package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs.map +1 -0
- package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs +82 -82
- package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs +103 -123
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.mjs +7 -0
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.mjs.map +1 -0
- package/esm/components/WeekView/WeekView.mjs +614 -625
- package/esm/components/WeekView/WeekView.mjs.map +1 -1
- package/esm/components/WeekView/WeekView.module.mjs +29 -0
- package/esm/components/WeekView/WeekView.module.mjs.map +1 -0
- package/esm/components/WeekView/WeekViewDay.mjs +69 -100
- package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
- package/esm/components/WeekView/get-week-label/get-week-label.mjs +25 -28
- package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs +21 -26
- package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs +11 -23
- package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs +12 -25
- package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs +11 -10
- package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs +14 -19
- package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs +26 -32
- package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/find-available-column.mjs +26 -36
- package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs +9 -10
- package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs +15 -24
- package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +198 -134
- package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs +11 -7
- package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs.map +1 -1
- package/esm/components/WeekView/handle-week-view-key-down.mjs +82 -125
- package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -1
- package/esm/components/YearView/YearView.mjs +157 -203
- package/esm/components/YearView/YearView.mjs.map +1 -1
- package/esm/components/YearView/YearView.module.mjs +20 -0
- package/esm/components/YearView/YearView.module.mjs.map +1 -0
- package/esm/components/YearView/YearViewMonth.mjs +133 -150
- package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
- package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs +30 -41
- package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs.map +1 -1
- package/esm/components/YearView/handle-year-view-key-down.mjs +143 -200
- package/esm/components/YearView/handle-year-view-key-down.mjs.map +1 -1
- package/esm/hooks/use-auto-scroll-on-drag.mjs +66 -68
- package/esm/hooks/use-auto-scroll-on-drag.mjs.map +1 -1
- package/esm/hooks/use-drag-drop-handlers.mjs +108 -120
- package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
- package/esm/hooks/use-drag-state.mjs +37 -40
- package/esm/hooks/use-drag-state.mjs.map +1 -1
- package/esm/hooks/use-event-resize.mjs +132 -0
- package/esm/hooks/use-event-resize.mjs.map +1 -0
- package/esm/hooks/use-slot-drag-select.mjs +74 -86
- package/esm/hooks/use-slot-drag-select.mjs.map +1 -1
- package/esm/index.mjs +49 -48
- package/esm/labels.mjs +30 -26
- package/esm/labels.mjs.map +1 -1
- package/esm/utils/calculate-drop-time/calculate-drop-time.mjs +21 -30
- package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
- package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs +15 -18
- package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs.map +1 -1
- package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs +9 -6
- package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs.map +1 -1
- package/esm/utils/expand-recurring-events/expand-recurring-events.mjs +118 -0
- package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -0
- package/esm/utils/format-date/format-date.mjs +8 -9
- package/esm/utils/format-date/format-date.mjs.map +1 -1
- package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs +23 -20
- package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs.map +1 -1
- package/esm/utils/get-current-time-position/get-current-time-position.mjs +17 -19
- package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -1
- package/esm/utils/get-day-position/get-day-position.mjs +24 -29
- package/esm/utils/get-day-position/get-day-position.mjs.map +1 -1
- package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs +50 -43
- package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs.map +1 -1
- package/esm/utils/get-end-of-week/get-end-of-week.mjs +11 -14
- package/esm/utils/get-end-of-week/get-end-of-week.mjs.map +1 -1
- package/esm/utils/get-month-days/get-month-days.mjs +39 -41
- package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
- package/esm/utils/get-month-range/get-month-range.mjs +23 -24
- package/esm/utils/get-month-range/get-month-range.mjs.map +1 -1
- package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs +19 -15
- package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs.map +1 -1
- package/esm/utils/get-months-list/get-months-list.mjs +18 -12
- package/esm/utils/get-months-list/get-months-list.mjs.map +1 -1
- package/esm/utils/get-start-of-week/get-start-of-week.mjs +9 -10
- package/esm/utils/get-start-of-week/get-start-of-week.mjs.map +1 -1
- package/esm/utils/get-visible-events/get-visible-events.mjs +13 -13
- package/esm/utils/get-visible-events/get-visible-events.mjs.map +1 -1
- package/esm/utils/get-week-days/get-week-days.mjs +21 -24
- package/esm/utils/get-week-days/get-week-days.mjs.map +1 -1
- package/esm/utils/get-week-number/get-week-number.mjs +9 -11
- package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
- package/esm/utils/get-weekdays-names/get-weekdays-names.mjs +16 -17
- package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
- package/esm/utils/get-years-list/get-years-list.mjs +8 -8
- package/esm/utils/get-years-list/get-years-list.mjs.map +1 -1
- package/esm/utils/is-after-min-date/is-after-min-date.mjs +7 -6
- package/esm/utils/is-after-min-date/is-after-min-date.mjs.map +1 -1
- package/esm/utils/is-all-day-event/is-all-day-event.mjs +11 -10
- package/esm/utils/is-all-day-event/is-all-day-event.mjs.map +1 -1
- package/esm/utils/is-before-max-date/is-before-max-date.mjs +7 -6
- package/esm/utils/is-before-max-date/is-before-max-date.mjs.map +1 -1
- package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs +17 -21
- package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
- package/esm/utils/is-events-overlap/is-events-overlap.mjs +11 -10
- package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -1
- package/esm/utils/is-in-time-range/is-in-time-range.mjs +15 -17
- package/esm/utils/is-in-time-range/is-in-time-range.mjs.map +1 -1
- package/esm/utils/is-multiday-event/is-multiday-event.mjs +8 -8
- package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -1
- package/esm/utils/is-same-month/is-same-month.mjs +7 -6
- package/esm/utils/is-same-month/is-same-month.mjs.map +1 -1
- package/esm/utils/is-within-week/is-within-week.mjs +13 -9
- package/esm/utils/is-within-week/is-within-week.mjs.map +1 -1
- package/esm/utils/next-week/next-week.mjs +13 -9
- package/esm/utils/next-week/next-week.mjs.map +1 -1
- package/esm/utils/parse-time-string/parse-time-string.mjs +11 -5
- package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -1
- package/esm/utils/previous-week/previous-week.mjs +13 -9
- package/esm/utils/previous-week/previous-week.mjs.map +1 -1
- package/esm/utils/sort-events/sort-events.mjs +12 -12
- package/esm/utils/sort-events/sort-events.mjs.map +1 -1
- package/esm/utils/to-date-string/to-date-string.mjs +7 -6
- package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
- package/esm/utils/to-time-string/to-time-string.mjs +6 -4
- package/esm/utils/to-time-string/to-time-string.mjs.map +1 -1
- package/esm/utils/validate-event/validate-event.mjs +10 -17
- package/esm/utils/validate-event/validate-event.mjs.map +1 -1
- package/lib/components/DayView/DayView.d.ts +10 -2
- package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +1 -1
- package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +4 -2
- package/lib/components/MobileMonthView/MobileMonthView.d.ts +2 -2
- package/lib/components/MonthView/MonthView.d.ts +7 -3
- package/lib/components/MonthView/get-month-view-events/get-month-positioned-events.d.ts +4 -0
- package/lib/components/Schedule/Schedule.d.ts +10 -2
- package/lib/components/ScheduleEvent/ScheduleEvent.d.ts +7 -1
- package/lib/components/WeekView/WeekView.d.ts +10 -2
- package/lib/components/WeekView/WeekViewDay.d.ts +3 -1
- package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +1 -0
- package/lib/components/YearView/YearView.d.ts +3 -1
- package/lib/hooks/use-drag-drop-handlers.d.ts +1 -1
- package/lib/hooks/use-event-resize.d.ts +22 -0
- package/lib/labels.d.ts +1 -0
- package/lib/test-utils.d.ts +1 -1
- package/lib/types.d.ts +58 -8
- package/lib/utils/expand-recurring-events/expand-recurring-events.d.ts +10 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/validate-event/validate-event.d.ts +1 -1
- package/package.json +9 -6
- package/styles.css +185 -79
- package/styles.layer.css +185 -79
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.cjs +0 -7
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.cjs.map +0 -1
- package/cjs/components/DayView/DayView.module.css.cjs +0 -7
- package/cjs/components/DayView/DayView.module.css.cjs.map +0 -1
- package/cjs/components/MobileMonthView/MobileMonthView.module.css.cjs +0 -7
- package/cjs/components/MobileMonthView/MobileMonthView.module.css.cjs.map +0 -1
- package/cjs/components/MonthView/MonthView.module.css.cjs +0 -7
- package/cjs/components/MonthView/MonthView.module.css.cjs.map +0 -1
- package/cjs/components/MoreEvents/MoreEvents.module.css.cjs +0 -7
- package/cjs/components/MoreEvents/MoreEvents.module.css.cjs.map +0 -1
- package/cjs/components/Schedule/Schedule.module.css.cjs +0 -7
- package/cjs/components/Schedule/Schedule.module.css.cjs.map +0 -1
- package/cjs/components/ScheduleEvent/ScheduleEvent.module.css.cjs +0 -7
- package/cjs/components/ScheduleEvent/ScheduleEvent.module.css.cjs.map +0 -1
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.cjs +0 -7
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.cjs.map +0 -1
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.cjs +0 -7
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.cjs.map +0 -1
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.css.cjs +0 -7
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.css.cjs.map +0 -1
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.cjs +0 -7
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.cjs.map +0 -1
- package/cjs/components/WeekView/WeekView.module.css.cjs +0 -7
- package/cjs/components/WeekView/WeekView.module.css.cjs.map +0 -1
- package/cjs/components/YearView/YearView.module.css.cjs +0 -7
- package/cjs/components/YearView/YearView.module.css.cjs.map +0 -1
- package/cjs/index.cjs.map +0 -1
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.mjs +0 -5
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.mjs.map +0 -1
- package/esm/components/DayView/DayView.module.css.mjs +0 -5
- package/esm/components/DayView/DayView.module.css.mjs.map +0 -1
- package/esm/components/MobileMonthView/MobileMonthView.module.css.mjs +0 -5
- package/esm/components/MobileMonthView/MobileMonthView.module.css.mjs.map +0 -1
- package/esm/components/MonthView/MonthView.module.css.mjs +0 -5
- package/esm/components/MonthView/MonthView.module.css.mjs.map +0 -1
- package/esm/components/MoreEvents/MoreEvents.module.css.mjs +0 -5
- package/esm/components/MoreEvents/MoreEvents.module.css.mjs.map +0 -1
- package/esm/components/Schedule/Schedule.module.css.mjs +0 -5
- package/esm/components/Schedule/Schedule.module.css.mjs.map +0 -1
- package/esm/components/ScheduleEvent/ScheduleEvent.module.css.mjs +0 -5
- package/esm/components/ScheduleEvent/ScheduleEvent.module.css.mjs.map +0 -1
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.mjs +0 -5
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.mjs.map +0 -1
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.mjs +0 -5
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.mjs.map +0 -1
- package/esm/components/ScheduleHeader/ScheduleHeader.module.css.mjs +0 -5
- package/esm/components/ScheduleHeader/ScheduleHeader.module.css.mjs.map +0 -1
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.mjs +0 -5
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.mjs.map +0 -1
- package/esm/components/WeekView/WeekView.module.css.mjs +0 -5
- package/esm/components/WeekView/WeekView.module.css.mjs.map +0 -1
- package/esm/components/YearView/YearView.module.css.mjs +0 -5
- package/esm/components/YearView/YearView.module.css.mjs.map +0 -1
- package/esm/index.mjs.map +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { validateEvent } from "../validate-event/validate-event.mjs";
|
|
3
|
+
import dayjs from "dayjs";
|
|
4
|
+
import { RRule } from "rrule";
|
|
5
|
+
//#region packages/@mantine/schedule/src/utils/expand-recurring-events/expand-recurring-events.ts
|
|
6
|
+
function getRecurrenceKey(recurringEventId, recurrenceId) {
|
|
7
|
+
return `${recurringEventId}::${recurrenceId}`;
|
|
8
|
+
}
|
|
9
|
+
function overlapsRange(eventStart, eventEnd, rangeStart, rangeEnd) {
|
|
10
|
+
return (eventEnd.isAfter(rangeStart) || eventEnd.isSame(rangeStart)) && (eventStart.isBefore(rangeEnd) || eventStart.isSame(rangeEnd));
|
|
11
|
+
}
|
|
12
|
+
function getExdateSet(recurrence) {
|
|
13
|
+
if (!recurrence?.exdate) return /* @__PURE__ */ new Set();
|
|
14
|
+
const values = recurrence.exdate.map((value) => dayjs(value)).filter((value) => value.isValid()).map((value) => value.format("YYYY-MM-DD HH:mm:ss"));
|
|
15
|
+
return new Set(values);
|
|
16
|
+
}
|
|
17
|
+
function getRRuleString(rule) {
|
|
18
|
+
const normalized = rule.trim();
|
|
19
|
+
if (!normalized.includes("\n")) return normalized.startsWith("RRULE:") ? normalized.replace(/^RRULE:/, "") : normalized;
|
|
20
|
+
const rruleLine = normalized.split("\n").map((line) => line.trim()).find((line) => line.startsWith("RRULE:"));
|
|
21
|
+
return rruleLine ? rruleLine.replace(/^RRULE:/, "") : normalized;
|
|
22
|
+
}
|
|
23
|
+
function getOccurrenceStartsInRange(event, rangeStart, rangeEnd, expansionLimit, durationMs) {
|
|
24
|
+
const dtstart = dayjs(event.recurrence?.dtstart || event.start);
|
|
25
|
+
if (!dtstart.isValid() || !event.recurrence) return [];
|
|
26
|
+
try {
|
|
27
|
+
const options = RRule.parseString(getRRuleString(event.recurrence.rrule));
|
|
28
|
+
options.dtstart = dtstart.toDate();
|
|
29
|
+
const rule = new RRule(options);
|
|
30
|
+
const searchStart = rangeStart.subtract(Math.max(0, durationMs), "millisecond").toDate();
|
|
31
|
+
return rule.between(searchStart, rangeEnd.toDate(), true).slice(0, expansionLimit).map((value) => dayjs(value));
|
|
32
|
+
} catch {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function isEventInRange(event, rangeStart, rangeEnd) {
|
|
37
|
+
const start = dayjs(event.start);
|
|
38
|
+
const end = dayjs(event.end);
|
|
39
|
+
if (!start.isValid() || !end.isValid()) return false;
|
|
40
|
+
return overlapsRange(start, end, rangeStart, rangeEnd);
|
|
41
|
+
}
|
|
42
|
+
function createGeneratedInstance(event, occurrenceStart, durationMs) {
|
|
43
|
+
const occurrenceEnd = occurrenceStart.add(durationMs, "millisecond");
|
|
44
|
+
const recurrenceId = occurrenceStart.format("YYYY-MM-DD HH:mm:ss");
|
|
45
|
+
const { recurrence, ...eventWithoutRecurrence } = event;
|
|
46
|
+
return {
|
|
47
|
+
...eventWithoutRecurrence,
|
|
48
|
+
id: `${event.id}::${recurrenceId}`,
|
|
49
|
+
start: occurrenceStart.format("YYYY-MM-DD HH:mm:ss"),
|
|
50
|
+
end: occurrenceEnd.format("YYYY-MM-DD HH:mm:ss"),
|
|
51
|
+
recurringEventId: event.id,
|
|
52
|
+
recurrenceId,
|
|
53
|
+
recurringInstance: {
|
|
54
|
+
isRecurringInstance: true,
|
|
55
|
+
recurringEventId: event.id,
|
|
56
|
+
recurrenceId,
|
|
57
|
+
originalStart: occurrenceStart.format("YYYY-MM-DD HH:mm:ss"),
|
|
58
|
+
originalEnd: occurrenceEnd.format("YYYY-MM-DD HH:mm:ss")
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const DEFAULT_EXPANSION_LIMIT = 2e3;
|
|
63
|
+
function expandRecurringEvents({ events, rangeStart, rangeEnd, expansionLimit = DEFAULT_EXPANSION_LIMIT }) {
|
|
64
|
+
if (!events || events.length === 0) return [];
|
|
65
|
+
const start = dayjs(rangeStart);
|
|
66
|
+
const end = dayjs(rangeEnd);
|
|
67
|
+
if (!start.isValid() || !end.isValid()) return [];
|
|
68
|
+
const regularEvents = [];
|
|
69
|
+
const recurringEvents = [];
|
|
70
|
+
const overrides = /* @__PURE__ */ new Map();
|
|
71
|
+
for (const event of events) {
|
|
72
|
+
if (event.recurringEventId && event.recurrenceId) {
|
|
73
|
+
overrides.set(getRecurrenceKey(event.recurringEventId, event.recurrenceId), event);
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (event.recurrence?.rrule) {
|
|
77
|
+
recurringEvents.push(event);
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
regularEvents.push(event);
|
|
81
|
+
}
|
|
82
|
+
const output = [];
|
|
83
|
+
const consumedOverrideIds = /* @__PURE__ */ new Set();
|
|
84
|
+
for (const event of regularEvents) if (isEventInRange(event, start, end)) output.push(validateEvent(event));
|
|
85
|
+
for (const event of recurringEvents) {
|
|
86
|
+
const eventStart = dayjs(event.recurrence?.dtstart || event.start);
|
|
87
|
+
const eventEnd = dayjs(event.end);
|
|
88
|
+
if (!eventStart.isValid() || !eventEnd.isValid()) continue;
|
|
89
|
+
const durationMs = eventEnd.diff(dayjs(event.start), "millisecond");
|
|
90
|
+
if (durationMs < 0) continue;
|
|
91
|
+
const exdate = getExdateSet(event.recurrence);
|
|
92
|
+
const starts = getOccurrenceStartsInRange(event, start, end, expansionLimit, durationMs);
|
|
93
|
+
for (const occurrenceStart of starts) {
|
|
94
|
+
const recurrenceId = occurrenceStart.format("YYYY-MM-DD HH:mm:ss");
|
|
95
|
+
if (exdate.has(recurrenceId)) continue;
|
|
96
|
+
const overrideKey = getRecurrenceKey(event.id, recurrenceId);
|
|
97
|
+
const override = overrides.get(overrideKey);
|
|
98
|
+
if (override) {
|
|
99
|
+
if (isEventInRange(override, start, end)) {
|
|
100
|
+
output.push(validateEvent(override));
|
|
101
|
+
consumedOverrideIds.add(override.id);
|
|
102
|
+
}
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const generated = createGeneratedInstance(event, occurrenceStart, durationMs);
|
|
106
|
+
if (overlapsRange(dayjs(generated.start), dayjs(generated.end), start, end)) output.push(validateEvent(generated));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const override of overrides.values()) {
|
|
110
|
+
if (consumedOverrideIds.has(override.id)) continue;
|
|
111
|
+
if (isEventInRange(override, start, end)) output.push(validateEvent(override));
|
|
112
|
+
}
|
|
113
|
+
return output;
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { expandRecurringEvents };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=expand-recurring-events.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand-recurring-events.mjs","names":[],"sources":["../../../src/utils/expand-recurring-events/expand-recurring-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { RRule } from 'rrule';\nimport { DateTimeStringValue, ScheduleEventData, ScheduleRecurrenceData } from '../../types';\nimport { validateEvent } from '../validate-event/validate-event';\n\ninterface ExpandRecurringEventsInput {\n events: ScheduleEventData[] | undefined;\n rangeStart: Date | string;\n rangeEnd: Date | string;\n expansionLimit?: number;\n}\n\nfunction getRecurrenceKey(recurringEventId: string | number, recurrenceId: DateTimeStringValue) {\n return `${recurringEventId}::${recurrenceId}`;\n}\n\nfunction overlapsRange(\n eventStart: dayjs.Dayjs,\n eventEnd: dayjs.Dayjs,\n rangeStart: dayjs.Dayjs,\n rangeEnd: dayjs.Dayjs\n) {\n return (\n (eventEnd.isAfter(rangeStart) || eventEnd.isSame(rangeStart)) &&\n (eventStart.isBefore(rangeEnd) || eventStart.isSame(rangeEnd))\n );\n}\n\nfunction getExdateSet(recurrence: ScheduleRecurrenceData | undefined) {\n if (!recurrence?.exdate) {\n return new Set<string>();\n }\n\n const values = recurrence.exdate\n .map((value) => dayjs(value))\n .filter((value) => value.isValid())\n .map((value) => value.format('YYYY-MM-DD HH:mm:ss'));\n\n return new Set(values);\n}\n\nfunction getRRuleString(rule: string) {\n const normalized = rule.trim();\n if (!normalized.includes('\\n')) {\n return normalized.startsWith('RRULE:') ? normalized.replace(/^RRULE:/, '') : normalized;\n }\n\n const rruleLine = normalized\n .split('\\n')\n .map((line) => line.trim())\n .find((line) => line.startsWith('RRULE:'));\n\n return rruleLine ? rruleLine.replace(/^RRULE:/, '') : normalized;\n}\n\nfunction getOccurrenceStartsInRange(\n event: ScheduleEventData,\n rangeStart: dayjs.Dayjs,\n rangeEnd: dayjs.Dayjs,\n expansionLimit: number,\n durationMs: number\n) {\n const dtstart = dayjs(event.recurrence?.dtstart || event.start);\n if (!dtstart.isValid() || !event.recurrence) {\n return [];\n }\n\n try {\n const options = RRule.parseString(getRRuleString(event.recurrence.rrule));\n options.dtstart = dtstart.toDate();\n const rule = new RRule(options);\n\n const searchStart = rangeStart.subtract(Math.max(0, durationMs), 'millisecond').toDate();\n const results = rule.between(searchStart, rangeEnd.toDate(), true);\n return results.slice(0, expansionLimit).map((value) => dayjs(value));\n } catch {\n return [];\n }\n}\n\nfunction isEventInRange(event: ScheduleEventData, rangeStart: dayjs.Dayjs, rangeEnd: dayjs.Dayjs) {\n const start = dayjs(event.start);\n const end = dayjs(event.end);\n\n if (!start.isValid() || !end.isValid()) {\n return false;\n }\n\n return overlapsRange(start, end, rangeStart, rangeEnd);\n}\n\nfunction createGeneratedInstance(\n event: ScheduleEventData,\n occurrenceStart: dayjs.Dayjs,\n durationMs: number\n): ScheduleEventData {\n const occurrenceEnd = occurrenceStart.add(durationMs, 'millisecond');\n const recurrenceId = occurrenceStart.format('YYYY-MM-DD HH:mm:ss');\n const { recurrence, ...eventWithoutRecurrence } = event;\n\n return {\n ...eventWithoutRecurrence,\n id: `${event.id}::${recurrenceId}`,\n start: occurrenceStart.format('YYYY-MM-DD HH:mm:ss'),\n end: occurrenceEnd.format('YYYY-MM-DD HH:mm:ss'),\n recurringEventId: event.id,\n recurrenceId,\n recurringInstance: {\n isRecurringInstance: true,\n recurringEventId: event.id,\n recurrenceId,\n originalStart: occurrenceStart.format('YYYY-MM-DD HH:mm:ss'),\n originalEnd: occurrenceEnd.format('YYYY-MM-DD HH:mm:ss'),\n },\n };\n}\n\nconst DEFAULT_EXPANSION_LIMIT = 2000;\n\nexport function expandRecurringEvents({\n events,\n rangeStart,\n rangeEnd,\n expansionLimit = DEFAULT_EXPANSION_LIMIT,\n}: ExpandRecurringEventsInput): ScheduleEventData[] {\n if (!events || events.length === 0) {\n return [];\n }\n\n const start = dayjs(rangeStart);\n const end = dayjs(rangeEnd);\n\n if (!start.isValid() || !end.isValid()) {\n return [];\n }\n\n const regularEvents: ScheduleEventData[] = [];\n const recurringEvents: ScheduleEventData[] = [];\n const overrides = new Map<string, ScheduleEventData>();\n\n for (const event of events) {\n if (event.recurringEventId && event.recurrenceId) {\n overrides.set(getRecurrenceKey(event.recurringEventId, event.recurrenceId), event);\n continue;\n }\n\n if (event.recurrence?.rrule) {\n recurringEvents.push(event);\n continue;\n }\n\n regularEvents.push(event);\n }\n\n const output: ScheduleEventData[] = [];\n const consumedOverrideIds = new Set<string | number>();\n\n for (const event of regularEvents) {\n if (isEventInRange(event, start, end)) {\n output.push(validateEvent(event));\n }\n }\n\n for (const event of recurringEvents) {\n const eventStart = dayjs(event.recurrence?.dtstart || event.start);\n const eventEnd = dayjs(event.end);\n\n if (!eventStart.isValid() || !eventEnd.isValid()) {\n continue;\n }\n\n const durationMs = eventEnd.diff(dayjs(event.start), 'millisecond');\n if (durationMs < 0) {\n continue;\n }\n\n const exdate = getExdateSet(event.recurrence);\n const starts = getOccurrenceStartsInRange(event, start, end, expansionLimit, durationMs);\n\n for (const occurrenceStart of starts) {\n const recurrenceId = occurrenceStart.format('YYYY-MM-DD HH:mm:ss');\n if (exdate.has(recurrenceId)) {\n continue;\n }\n\n const overrideKey = getRecurrenceKey(event.id, recurrenceId);\n const override = overrides.get(overrideKey);\n if (override) {\n if (isEventInRange(override, start, end)) {\n output.push(validateEvent(override));\n consumedOverrideIds.add(override.id);\n }\n continue;\n }\n\n const generated = createGeneratedInstance(event, occurrenceStart, durationMs);\n if (overlapsRange(dayjs(generated.start), dayjs(generated.end), start, end)) {\n output.push(validateEvent(generated));\n }\n }\n }\n\n for (const override of overrides.values()) {\n if (consumedOverrideIds.has(override.id)) {\n continue;\n }\n if (isEventInRange(override, start, end)) {\n output.push(validateEvent(override));\n }\n }\n\n return output;\n}\n\nexport { DEFAULT_EXPANSION_LIMIT };\n"],"mappings":";;;;;AAYA,SAAS,iBAAiB,kBAAmC,cAAmC;AAC9F,QAAO,GAAG,iBAAiB,IAAI;;AAGjC,SAAS,cACP,YACA,UACA,YACA,UACA;AACA,SACG,SAAS,QAAQ,WAAW,IAAI,SAAS,OAAO,WAAW,MAC3D,WAAW,SAAS,SAAS,IAAI,WAAW,OAAO,SAAS;;AAIjE,SAAS,aAAa,YAAgD;AACpE,KAAI,CAAC,YAAY,OACf,wBAAO,IAAI,KAAa;CAG1B,MAAM,SAAS,WAAW,OACvB,KAAK,UAAU,MAAM,MAAM,CAAC,CAC5B,QAAQ,UAAU,MAAM,SAAS,CAAC,CAClC,KAAK,UAAU,MAAM,OAAO,sBAAsB,CAAC;AAEtD,QAAO,IAAI,IAAI,OAAO;;AAGxB,SAAS,eAAe,MAAc;CACpC,MAAM,aAAa,KAAK,MAAM;AAC9B,KAAI,CAAC,WAAW,SAAS,KAAK,CAC5B,QAAO,WAAW,WAAW,SAAS,GAAG,WAAW,QAAQ,WAAW,GAAG,GAAG;CAG/E,MAAM,YAAY,WACf,MAAM,KAAK,CACX,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,MAAM,SAAS,KAAK,WAAW,SAAS,CAAC;AAE5C,QAAO,YAAY,UAAU,QAAQ,WAAW,GAAG,GAAG;;AAGxD,SAAS,2BACP,OACA,YACA,UACA,gBACA,YACA;CACA,MAAM,UAAU,MAAM,MAAM,YAAY,WAAW,MAAM,MAAM;AAC/D,KAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,MAAM,WAC/B,QAAO,EAAE;AAGX,KAAI;EACF,MAAM,UAAU,MAAM,YAAY,eAAe,MAAM,WAAW,MAAM,CAAC;AACzE,UAAQ,UAAU,QAAQ,QAAQ;EAClC,MAAM,OAAO,IAAI,MAAM,QAAQ;EAE/B,MAAM,cAAc,WAAW,SAAS,KAAK,IAAI,GAAG,WAAW,EAAE,cAAc,CAAC,QAAQ;AAExF,SADgB,KAAK,QAAQ,aAAa,SAAS,QAAQ,EAAE,KAAK,CACnD,MAAM,GAAG,eAAe,CAAC,KAAK,UAAU,MAAM,MAAM,CAAC;SAC9D;AACN,SAAO,EAAE;;;AAIb,SAAS,eAAe,OAA0B,YAAyB,UAAuB;CAChG,MAAM,QAAQ,MAAM,MAAM,MAAM;CAChC,MAAM,MAAM,MAAM,MAAM,IAAI;AAE5B,KAAI,CAAC,MAAM,SAAS,IAAI,CAAC,IAAI,SAAS,CACpC,QAAO;AAGT,QAAO,cAAc,OAAO,KAAK,YAAY,SAAS;;AAGxD,SAAS,wBACP,OACA,iBACA,YACmB;CACnB,MAAM,gBAAgB,gBAAgB,IAAI,YAAY,cAAc;CACpE,MAAM,eAAe,gBAAgB,OAAO,sBAAsB;CAClE,MAAM,EAAE,YAAY,GAAG,2BAA2B;AAElD,QAAO;EACL,GAAG;EACH,IAAI,GAAG,MAAM,GAAG,IAAI;EACpB,OAAO,gBAAgB,OAAO,sBAAsB;EACpD,KAAK,cAAc,OAAO,sBAAsB;EAChD,kBAAkB,MAAM;EACxB;EACA,mBAAmB;GACjB,qBAAqB;GACrB,kBAAkB,MAAM;GACxB;GACA,eAAe,gBAAgB,OAAO,sBAAsB;GAC5D,aAAa,cAAc,OAAO,sBAAsB;GACzD;EACF;;AAGH,MAAM,0BAA0B;AAEhC,SAAgB,sBAAsB,EACpC,QACA,YACA,UACA,iBAAiB,2BACiC;AAClD,KAAI,CAAC,UAAU,OAAO,WAAW,EAC/B,QAAO,EAAE;CAGX,MAAM,QAAQ,MAAM,WAAW;CAC/B,MAAM,MAAM,MAAM,SAAS;AAE3B,KAAI,CAAC,MAAM,SAAS,IAAI,CAAC,IAAI,SAAS,CACpC,QAAO,EAAE;CAGX,MAAM,gBAAqC,EAAE;CAC7C,MAAM,kBAAuC,EAAE;CAC/C,MAAM,4BAAY,IAAI,KAAgC;AAEtD,MAAK,MAAM,SAAS,QAAQ;AAC1B,MAAI,MAAM,oBAAoB,MAAM,cAAc;AAChD,aAAU,IAAI,iBAAiB,MAAM,kBAAkB,MAAM,aAAa,EAAE,MAAM;AAClF;;AAGF,MAAI,MAAM,YAAY,OAAO;AAC3B,mBAAgB,KAAK,MAAM;AAC3B;;AAGF,gBAAc,KAAK,MAAM;;CAG3B,MAAM,SAA8B,EAAE;CACtC,MAAM,sCAAsB,IAAI,KAAsB;AAEtD,MAAK,MAAM,SAAS,cAClB,KAAI,eAAe,OAAO,OAAO,IAAI,CACnC,QAAO,KAAK,cAAc,MAAM,CAAC;AAIrC,MAAK,MAAM,SAAS,iBAAiB;EACnC,MAAM,aAAa,MAAM,MAAM,YAAY,WAAW,MAAM,MAAM;EAClE,MAAM,WAAW,MAAM,MAAM,IAAI;AAEjC,MAAI,CAAC,WAAW,SAAS,IAAI,CAAC,SAAS,SAAS,CAC9C;EAGF,MAAM,aAAa,SAAS,KAAK,MAAM,MAAM,MAAM,EAAE,cAAc;AACnE,MAAI,aAAa,EACf;EAGF,MAAM,SAAS,aAAa,MAAM,WAAW;EAC7C,MAAM,SAAS,2BAA2B,OAAO,OAAO,KAAK,gBAAgB,WAAW;AAExF,OAAK,MAAM,mBAAmB,QAAQ;GACpC,MAAM,eAAe,gBAAgB,OAAO,sBAAsB;AAClE,OAAI,OAAO,IAAI,aAAa,CAC1B;GAGF,MAAM,cAAc,iBAAiB,MAAM,IAAI,aAAa;GAC5D,MAAM,WAAW,UAAU,IAAI,YAAY;AAC3C,OAAI,UAAU;AACZ,QAAI,eAAe,UAAU,OAAO,IAAI,EAAE;AACxC,YAAO,KAAK,cAAc,SAAS,CAAC;AACpC,yBAAoB,IAAI,SAAS,GAAG;;AAEtC;;GAGF,MAAM,YAAY,wBAAwB,OAAO,iBAAiB,WAAW;AAC7E,OAAI,cAAc,MAAM,UAAU,MAAM,EAAE,MAAM,UAAU,IAAI,EAAE,OAAO,IAAI,CACzE,QAAO,KAAK,cAAc,UAAU,CAAC;;;AAK3C,MAAK,MAAM,YAAY,UAAU,QAAQ,EAAE;AACzC,MAAI,oBAAoB,IAAI,SAAS,GAAG,CACtC;AAEF,MAAI,eAAe,UAAU,OAAO,IAAI,CACtC,QAAO,KAAK,cAAc,SAAS,CAAC;;AAIxC,QAAO"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import dayjs from
|
|
3
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
//#region packages/@mantine/schedule/src/utils/format-date/format-date.ts
|
|
4
4
|
function formatDate({ locale, date, format }) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
return dayjs(date).locale(locale).format(format);
|
|
5
|
+
if (typeof format === "function") return format(dayjs(date).format("YYYY-MM-DD HH:mm:ss"));
|
|
6
|
+
return dayjs(date).locale(locale).format(format);
|
|
9
7
|
}
|
|
10
|
-
|
|
8
|
+
//#endregion
|
|
11
9
|
export { formatDate };
|
|
12
|
-
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=format-date.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-date.mjs","sources":["../../../src/utils/format-date/format-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DateLabelFormat } from '../../types';\n\nexport interface FormatDateInput {\n locale: string;\n date: string | Date | dayjs.Dayjs;\n format: DateLabelFormat;\n}\n\nexport function formatDate({ locale, date, format }: FormatDateInput) {\n if (typeof format === 'function') {\n return format(dayjs(date).format('YYYY-MM-DD HH:mm:ss'));\n }\n\n return dayjs(date).locale(locale).format(format);\n}\n"],"
|
|
1
|
+
{"version":3,"file":"format-date.mjs","names":[],"sources":["../../../src/utils/format-date/format-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DateLabelFormat } from '../../types';\n\nexport interface FormatDateInput {\n locale: string;\n date: string | Date | dayjs.Dayjs;\n format: DateLabelFormat;\n}\n\nexport function formatDate({ locale, date, format }: FormatDateInput) {\n if (typeof format === 'function') {\n return format(dayjs(date).format('YYYY-MM-DD HH:mm:ss'));\n }\n\n return dayjs(date).locale(locale).format(format);\n}\n"],"mappings":";;;AASA,SAAgB,WAAW,EAAE,QAAQ,MAAM,UAA2B;AACpE,KAAI,OAAO,WAAW,WACpB,QAAO,OAAO,MAAM,KAAK,CAAC,OAAO,sBAAsB,CAAC;AAG1D,QAAO,MAAM,KAAK,CAAC,OAAO,OAAO,CAAC,OAAO,OAAO"}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
//#region packages/@mantine/schedule/src/utils/get-business-hours-mod/get-business-hours-mod.ts
|
|
3
|
+
/**
|
|
4
|
+
* Determines if a given time is within business hours and returns modifier object
|
|
5
|
+
* @param time - Time string in HH:mm:ss format
|
|
6
|
+
* @param businessHours - Tuple of [start, end] times in HH:mm:ss format
|
|
7
|
+
* @param highlightBusinessHours - Whether to highlight business hours
|
|
8
|
+
* @returns Modifier object for styling business/non-business hours
|
|
9
|
+
*/
|
|
10
|
+
function getBusinessHoursMod({ time, businessHours, highlightBusinessHours }) {
|
|
11
|
+
if (!highlightBusinessHours || !businessHours) return {
|
|
12
|
+
"business-hours": false,
|
|
13
|
+
"non-business-hours": false
|
|
14
|
+
};
|
|
15
|
+
const [start, end] = businessHours;
|
|
16
|
+
const isInBusinessHours = time >= start && time < end;
|
|
17
|
+
return {
|
|
18
|
+
"business-hours": isInBusinessHours,
|
|
19
|
+
"non-business-hours": !isInBusinessHours
|
|
20
|
+
};
|
|
19
21
|
}
|
|
20
|
-
|
|
22
|
+
//#endregion
|
|
21
23
|
export { getBusinessHoursMod };
|
|
22
|
-
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=get-business-hours-mod.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-business-hours-mod.mjs","sources":["../../../src/utils/get-business-hours-mod/get-business-hours-mod.ts"],"sourcesContent":["export interface GetBusinessHoursModInput {\n time: string;\n businessHours?: [string, string];\n highlightBusinessHours?: boolean;\n}\n\nexport interface BusinessHoursMod {\n 'business-hours': boolean;\n 'non-business-hours': boolean;\n}\n\n/**\n * Determines if a given time is within business hours and returns modifier object\n * @param time - Time string in HH:mm:ss format\n * @param businessHours - Tuple of [start, end] times in HH:mm:ss format\n * @param highlightBusinessHours - Whether to highlight business hours\n * @returns Modifier object for styling business/non-business hours\n */\nexport function getBusinessHoursMod({\n time,\n businessHours,\n highlightBusinessHours,\n}: GetBusinessHoursModInput): BusinessHoursMod {\n if (!highlightBusinessHours || !businessHours) {\n return {\n 'business-hours': false,\n 'non-business-hours': false,\n };\n }\n\n const [start, end] = businessHours;\n const isInBusinessHours = time >= start && time < end;\n\n return {\n 'business-hours': isInBusinessHours,\n 'non-business-hours': !isInBusinessHours,\n };\n}\n"],"
|
|
1
|
+
{"version":3,"file":"get-business-hours-mod.mjs","names":[],"sources":["../../../src/utils/get-business-hours-mod/get-business-hours-mod.ts"],"sourcesContent":["export interface GetBusinessHoursModInput {\n time: string;\n businessHours?: [string, string];\n highlightBusinessHours?: boolean;\n}\n\nexport interface BusinessHoursMod {\n 'business-hours': boolean;\n 'non-business-hours': boolean;\n}\n\n/**\n * Determines if a given time is within business hours and returns modifier object\n * @param time - Time string in HH:mm:ss format\n * @param businessHours - Tuple of [start, end] times in HH:mm:ss format\n * @param highlightBusinessHours - Whether to highlight business hours\n * @returns Modifier object for styling business/non-business hours\n */\nexport function getBusinessHoursMod({\n time,\n businessHours,\n highlightBusinessHours,\n}: GetBusinessHoursModInput): BusinessHoursMod {\n if (!highlightBusinessHours || !businessHours) {\n return {\n 'business-hours': false,\n 'non-business-hours': false,\n };\n }\n\n const [start, end] = businessHours;\n const isInBusinessHours = time >= start && time < end;\n\n return {\n 'business-hours': isInBusinessHours,\n 'non-business-hours': !isInBusinessHours,\n };\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAgB,oBAAoB,EAClC,MACA,eACA,0BAC6C;AAC7C,KAAI,CAAC,0BAA0B,CAAC,cAC9B,QAAO;EACL,kBAAkB;EAClB,sBAAsB;EACvB;CAGH,MAAM,CAAC,OAAO,OAAO;CACrB,MAAM,oBAAoB,QAAQ,SAAS,OAAO;AAElD,QAAO;EACL,kBAAkB;EAClB,sBAAsB,CAAC;EACxB"}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
import dayjs from
|
|
3
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
//#region packages/@mantine/schedule/src/utils/get-current-time-position/get-current-time-position.ts
|
|
4
4
|
function getCurrentTimePosition(input) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const totalMinutes = endDateTime.diff(startDateTime, "minute");
|
|
17
|
-
const currentMinutes = now.diff(startDateTime, "minute");
|
|
18
|
-
return currentMinutes / totalMinutes * 100;
|
|
5
|
+
const now = dayjs();
|
|
6
|
+
if (!input?.startTime || !input?.endTime) {
|
|
7
|
+
const startOf = dayjs().startOf("date");
|
|
8
|
+
return now.diff(startOf, "minute") / 1440 * 100;
|
|
9
|
+
}
|
|
10
|
+
const [startHour, startMinute] = input.startTime.split(":").map(Number);
|
|
11
|
+
const [endHour, endMinute] = input.endTime.split(":").map(Number);
|
|
12
|
+
const startOfDay = now.startOf("date");
|
|
13
|
+
const startDateTime = startOfDay.hour(startHour).minute(startMinute).second(0);
|
|
14
|
+
const totalMinutes = startOfDay.hour(endHour).minute(endMinute).second(0).diff(startDateTime, "minute");
|
|
15
|
+
return now.diff(startDateTime, "minute") / totalMinutes * 100;
|
|
19
16
|
}
|
|
20
|
-
|
|
17
|
+
//#endregion
|
|
21
18
|
export { getCurrentTimePosition };
|
|
22
|
-
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=get-current-time-position.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-current-time-position.mjs","sources":["../../../src/utils/get-current-time-position/get-current-time-position.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\ninterface GetCurrentTimePositionInput {\n startTime?: string;\n endTime?: string;\n}\n\nexport function getCurrentTimePosition(input?: GetCurrentTimePositionInput) {\n const now = dayjs();\n\n if (!input?.startTime || !input?.endTime) {\n const startOf = dayjs().startOf('date');\n const diffInMinutes = now.diff(startOf, 'minute');\n return (diffInMinutes / 1440) * 100;\n }\n\n const [startHour, startMinute] = input.startTime.split(':').map(Number);\n const [endHour, endMinute] = input.endTime.split(':').map(Number);\n\n const startOfDay = now.startOf('date');\n const startDateTime = startOfDay.hour(startHour).minute(startMinute).second(0);\n const endDateTime = startOfDay.hour(endHour).minute(endMinute).second(0);\n\n const totalMinutes = endDateTime.diff(startDateTime, 'minute');\n const currentMinutes = now.diff(startDateTime, 'minute');\n\n return (currentMinutes / totalMinutes) * 100;\n}\n"],"
|
|
1
|
+
{"version":3,"file":"get-current-time-position.mjs","names":[],"sources":["../../../src/utils/get-current-time-position/get-current-time-position.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\ninterface GetCurrentTimePositionInput {\n startTime?: string;\n endTime?: string;\n}\n\nexport function getCurrentTimePosition(input?: GetCurrentTimePositionInput) {\n const now = dayjs();\n\n if (!input?.startTime || !input?.endTime) {\n const startOf = dayjs().startOf('date');\n const diffInMinutes = now.diff(startOf, 'minute');\n return (diffInMinutes / 1440) * 100;\n }\n\n const [startHour, startMinute] = input.startTime.split(':').map(Number);\n const [endHour, endMinute] = input.endTime.split(':').map(Number);\n\n const startOfDay = now.startOf('date');\n const startDateTime = startOfDay.hour(startHour).minute(startMinute).second(0);\n const endDateTime = startOfDay.hour(endHour).minute(endMinute).second(0);\n\n const totalMinutes = endDateTime.diff(startDateTime, 'minute');\n const currentMinutes = now.diff(startDateTime, 'minute');\n\n return (currentMinutes / totalMinutes) * 100;\n}\n"],"mappings":";;;AAOA,SAAgB,uBAAuB,OAAqC;CAC1E,MAAM,MAAM,OAAO;AAEnB,KAAI,CAAC,OAAO,aAAa,CAAC,OAAO,SAAS;EACxC,MAAM,UAAU,OAAO,CAAC,QAAQ,OAAO;AAEvC,SADsB,IAAI,KAAK,SAAS,SAAS,GACzB,OAAQ;;CAGlC,MAAM,CAAC,WAAW,eAAe,MAAM,UAAU,MAAM,IAAI,CAAC,IAAI,OAAO;CACvE,MAAM,CAAC,SAAS,aAAa,MAAM,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;CAEjE,MAAM,aAAa,IAAI,QAAQ,OAAO;CACtC,MAAM,gBAAgB,WAAW,KAAK,UAAU,CAAC,OAAO,YAAY,CAAC,OAAO,EAAE;CAG9E,MAAM,eAFc,WAAW,KAAK,QAAQ,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,CAEvC,KAAK,eAAe,SAAS;AAG9D,QAFuB,IAAI,KAAK,eAAe,SAAS,GAE/B,eAAgB"}
|
|
@@ -1,31 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const startPercent = eventStartMinutes / totalMinutes * 100;
|
|
23
|
-
const endPercent = eventEndMinutes / totalMinutes * 100;
|
|
24
|
-
return {
|
|
25
|
-
top: startPercent,
|
|
26
|
-
height: endPercent - startPercent
|
|
27
|
-
};
|
|
1
|
+
"use client";
|
|
2
|
+
import { parseTimeString } from "../parse-time-string/parse-time-string.mjs";
|
|
3
|
+
import dayjs from "dayjs";
|
|
4
|
+
//#region packages/@mantine/schedule/src/utils/get-day-position/get-day-position.ts
|
|
5
|
+
/** Calculates day position within given start and end time boundaries. Returns top and height in percentages. */
|
|
6
|
+
function getDayPosition({ event, startTime = "00:00:00", endTime = "23:59:59" }) {
|
|
7
|
+
const eventStart = dayjs(event.start);
|
|
8
|
+
const eventEnd = dayjs(event.end);
|
|
9
|
+
const parsedStartTime = parseTimeString(startTime);
|
|
10
|
+
const parsedEndTime = parseTimeString(endTime);
|
|
11
|
+
const startOfDay = eventStart.startOf("date");
|
|
12
|
+
const boundaryStart = startOfDay.hour(parsedStartTime.hours).minute(parsedStartTime.minutes).second(0);
|
|
13
|
+
const boundaryEnd = startOfDay.hour(parsedEndTime.hours).minute(parsedEndTime.minutes).second(0);
|
|
14
|
+
const totalMinutes = boundaryEnd.diff(boundaryStart, "minute");
|
|
15
|
+
const eventStartMinutes = (eventStart.isBefore(boundaryStart) ? boundaryStart : eventStart).diff(boundaryStart, "minute");
|
|
16
|
+
const eventEndMinutes = (eventEnd.isAfter(boundaryEnd) ? boundaryEnd : eventEnd).diff(boundaryStart, "minute");
|
|
17
|
+
const startPercent = eventStartMinutes / totalMinutes * 100;
|
|
18
|
+
return {
|
|
19
|
+
top: startPercent,
|
|
20
|
+
height: eventEndMinutes / totalMinutes * 100 - startPercent
|
|
21
|
+
};
|
|
28
22
|
}
|
|
29
|
-
|
|
23
|
+
//#endregion
|
|
30
24
|
export { getDayPosition };
|
|
31
|
-
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=get-day-position.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-day-position.mjs","sources":["../../../src/utils/get-day-position/get-day-position.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\ninterface GetDayPositionInput {\n /** Event data to calculate position for */\n event: ScheduleEventData;\n\n /** Start time boundary for the day in HH:mm:ss format, `00:00:00` by default */\n startTime?: string;\n\n /** End time boundary for the day in HH:mm:ss format, `23:59:59` by default */\n endTime?: string;\n}\n\n/** Calculates day position within given start and end time boundaries. Returns top and height in percentages. */\nexport function getDayPosition({\n event,\n startTime = '00:00:00',\n endTime = '23:59:59',\n}: GetDayPositionInput) {\n const eventStart = dayjs(event.start);\n const eventEnd = dayjs(event.end);\n\n const parsedStartTime = parseTimeString(startTime);\n const parsedEndTime = parseTimeString(endTime);\n\n const startOfDay = eventStart.startOf('date');\n const boundaryStart = startOfDay\n .hour(parsedStartTime.hours)\n .minute(parsedStartTime.minutes)\n .second(0);\n const boundaryEnd = startOfDay.hour(parsedEndTime.hours).minute(parsedEndTime.minutes).second(0);\n const totalMinutes = boundaryEnd.diff(boundaryStart, 'minute');\n\n const clippedEventStart = eventStart.isBefore(boundaryStart) ? boundaryStart : eventStart;\n const eventStartMinutes = clippedEventStart.diff(boundaryStart, 'minute');\n\n const clippedEventEnd = eventEnd.isAfter(boundaryEnd) ? boundaryEnd : eventEnd;\n const eventEndMinutes = clippedEventEnd.diff(boundaryStart, 'minute');\n\n const startPercent = (eventStartMinutes / totalMinutes) * 100;\n const endPercent = (eventEndMinutes / totalMinutes) * 100;\n\n return {\n top: startPercent,\n height: endPercent - startPercent,\n };\n}\n"],"
|
|
1
|
+
{"version":3,"file":"get-day-position.mjs","names":[],"sources":["../../../src/utils/get-day-position/get-day-position.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\ninterface GetDayPositionInput {\n /** Event data to calculate position for */\n event: ScheduleEventData;\n\n /** Start time boundary for the day in HH:mm:ss format, `00:00:00` by default */\n startTime?: string;\n\n /** End time boundary for the day in HH:mm:ss format, `23:59:59` by default */\n endTime?: string;\n}\n\n/** Calculates day position within given start and end time boundaries. Returns top and height in percentages. */\nexport function getDayPosition({\n event,\n startTime = '00:00:00',\n endTime = '23:59:59',\n}: GetDayPositionInput) {\n const eventStart = dayjs(event.start);\n const eventEnd = dayjs(event.end);\n\n const parsedStartTime = parseTimeString(startTime);\n const parsedEndTime = parseTimeString(endTime);\n\n const startOfDay = eventStart.startOf('date');\n const boundaryStart = startOfDay\n .hour(parsedStartTime.hours)\n .minute(parsedStartTime.minutes)\n .second(0);\n const boundaryEnd = startOfDay.hour(parsedEndTime.hours).minute(parsedEndTime.minutes).second(0);\n const totalMinutes = boundaryEnd.diff(boundaryStart, 'minute');\n\n const clippedEventStart = eventStart.isBefore(boundaryStart) ? boundaryStart : eventStart;\n const eventStartMinutes = clippedEventStart.diff(boundaryStart, 'minute');\n\n const clippedEventEnd = eventEnd.isAfter(boundaryEnd) ? boundaryEnd : eventEnd;\n const eventEndMinutes = clippedEventEnd.diff(boundaryStart, 'minute');\n\n const startPercent = (eventStartMinutes / totalMinutes) * 100;\n const endPercent = (eventEndMinutes / totalMinutes) * 100;\n\n return {\n top: startPercent,\n height: endPercent - startPercent,\n };\n}\n"],"mappings":";;;;;AAgBA,SAAgB,eAAe,EAC7B,OACA,YAAY,YACZ,UAAU,cACY;CACtB,MAAM,aAAa,MAAM,MAAM,MAAM;CACrC,MAAM,WAAW,MAAM,MAAM,IAAI;CAEjC,MAAM,kBAAkB,gBAAgB,UAAU;CAClD,MAAM,gBAAgB,gBAAgB,QAAQ;CAE9C,MAAM,aAAa,WAAW,QAAQ,OAAO;CAC7C,MAAM,gBAAgB,WACnB,KAAK,gBAAgB,MAAM,CAC3B,OAAO,gBAAgB,QAAQ,CAC/B,OAAO,EAAE;CACZ,MAAM,cAAc,WAAW,KAAK,cAAc,MAAM,CAAC,OAAO,cAAc,QAAQ,CAAC,OAAO,EAAE;CAChG,MAAM,eAAe,YAAY,KAAK,eAAe,SAAS;CAG9D,MAAM,qBADoB,WAAW,SAAS,cAAc,GAAG,gBAAgB,YACnC,KAAK,eAAe,SAAS;CAGzE,MAAM,mBADkB,SAAS,QAAQ,YAAY,GAAG,cAAc,UAC9B,KAAK,eAAe,SAAS;CAErE,MAAM,eAAgB,oBAAoB,eAAgB;AAG1D,QAAO;EACL,KAAK;EACL,QAJkB,kBAAkB,eAAgB,MAI/B;EACtB"}
|
|
@@ -1,45 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
import { clampIntervalMinutes } from
|
|
3
|
-
import { parseTimeString } from
|
|
4
|
-
import { toTimeString } from
|
|
5
|
-
|
|
6
|
-
function getDayTimeIntervals({
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { clampIntervalMinutes } from "../clamp-interval-minutes/clamp-interval-minutes.mjs";
|
|
3
|
+
import { parseTimeString } from "../parse-time-string/parse-time-string.mjs";
|
|
4
|
+
import { toTimeString } from "../to-time-string/to-time-string.mjs";
|
|
5
|
+
//#region packages/@mantine/schedule/src/utils/get-day-time-intervals/get-day-time-intervals.ts
|
|
6
|
+
function getDayTimeIntervals({ startTime, endTime, intervalMinutes: _intervalMinutes = 60 }) {
|
|
7
|
+
const intervalMinutes = clampIntervalMinutes(_intervalMinutes);
|
|
8
|
+
const start = parseTimeString(startTime);
|
|
9
|
+
const end = endTime ? parseTimeString(endTime) : {
|
|
10
|
+
hours: 23,
|
|
11
|
+
minutes: 59,
|
|
12
|
+
seconds: 59
|
|
13
|
+
};
|
|
14
|
+
const startSeconds = start.hours * 3600 + start.minutes * 60 + start.seconds;
|
|
15
|
+
const endSeconds = end.hours * 3600 + end.minutes * 60 + end.seconds;
|
|
16
|
+
const intervalSeconds = intervalMinutes * 60;
|
|
17
|
+
const intervals = [];
|
|
18
|
+
let currentSeconds = startSeconds;
|
|
19
|
+
while (currentSeconds < endSeconds) {
|
|
20
|
+
const intervalStartSeconds = currentSeconds;
|
|
21
|
+
let intervalEndSeconds = currentSeconds + intervalSeconds;
|
|
22
|
+
if (intervalEndSeconds > endSeconds) intervalEndSeconds = endSeconds;
|
|
23
|
+
const startHours = Math.floor(intervalStartSeconds / 3600);
|
|
24
|
+
const startMinutes = Math.floor(intervalStartSeconds % 3600 / 60);
|
|
25
|
+
const startSecs = intervalStartSeconds % 60;
|
|
26
|
+
const endHours = Math.floor(intervalEndSeconds / 3600);
|
|
27
|
+
const endMinutes = Math.floor(intervalEndSeconds % 3600 / 60);
|
|
28
|
+
const endSecs = intervalEndSeconds % 60;
|
|
29
|
+
const durationSeconds = intervalEndSeconds - intervalStartSeconds;
|
|
30
|
+
const isHourStart = startMinutes === 0 && startSecs === 0;
|
|
31
|
+
intervals.push({
|
|
32
|
+
startTime: toTimeString({
|
|
33
|
+
hours: startHours,
|
|
34
|
+
minutes: startMinutes,
|
|
35
|
+
seconds: startSecs
|
|
36
|
+
}),
|
|
37
|
+
endTime: toTimeString({
|
|
38
|
+
hours: endHours,
|
|
39
|
+
minutes: endMinutes,
|
|
40
|
+
seconds: endSecs
|
|
41
|
+
}),
|
|
42
|
+
duration: durationSeconds,
|
|
43
|
+
isHourStart
|
|
44
|
+
});
|
|
45
|
+
currentSeconds = intervalEndSeconds;
|
|
46
|
+
}
|
|
47
|
+
return intervals;
|
|
42
48
|
}
|
|
43
|
-
|
|
49
|
+
//#endregion
|
|
44
50
|
export { getDayTimeIntervals };
|
|
45
|
-
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=get-day-time-intervals.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-day-time-intervals.mjs","sources":["../../../src/utils/get-day-time-intervals/get-day-time-intervals.ts"],"sourcesContent":["import { clampIntervalMinutes } from '../clamp-interval-minutes/clamp-interval-minutes';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\nimport { toTimeString } from '../to-time-string/to-time-string';\n\nexport interface DayTimeInterval {\n /** Start time of the interval in HH:mm:ss format */\n startTime: string;\n\n /** End time of the interval in HH:mm:ss format */\n endTime: string;\n\n /** Duration of the interval in seconds */\n duration: number;\n\n /** Indicates if the interval starts at the beginning of an hour */\n isHourStart: boolean;\n}\n\nexport interface GetDayTimeIntervalsInput {\n /** Start time in HH:mm:ss format */\n startTime: string;\n\n /** End time in HH:mm:ss format, end of the day by default */\n endTime?: string;\n\n /** Interval in minutes, 60 by default */\n intervalMinutes?: number;\n}\n\nexport function getDayTimeIntervals({\n startTime,\n endTime,\n intervalMinutes: _intervalMinutes = 60,\n}: GetDayTimeIntervalsInput): DayTimeInterval[] {\n const intervalMinutes = clampIntervalMinutes(_intervalMinutes);\n\n const start = parseTimeString(startTime);\n const end = endTime ? parseTimeString(endTime) : { hours: 23, minutes: 59, seconds: 59 };\n\n const startSeconds = start.hours * 3600 + start.minutes * 60 + start.seconds;\n const endSeconds = end.hours * 3600 + end.minutes * 60 + end.seconds;\n const intervalSeconds = intervalMinutes * 60;\n\n const intervals: DayTimeInterval[] = [];\n let currentSeconds = startSeconds;\n\n while (currentSeconds < endSeconds) {\n const intervalStartSeconds = currentSeconds;\n let intervalEndSeconds = currentSeconds + intervalSeconds;\n\n if (intervalEndSeconds > endSeconds) {\n intervalEndSeconds = endSeconds;\n }\n\n const startHours = Math.floor(intervalStartSeconds / 3600);\n const startMinutes = Math.floor((intervalStartSeconds % 3600) / 60);\n const startSecs = intervalStartSeconds % 60;\n\n const endHours = Math.floor(intervalEndSeconds / 3600);\n const endMinutes = Math.floor((intervalEndSeconds % 3600) / 60);\n const endSecs = intervalEndSeconds % 60;\n\n const durationSeconds = intervalEndSeconds - intervalStartSeconds;\n const isHourStart = startMinutes === 0 && startSecs === 0;\n\n intervals.push({\n startTime: toTimeString({ hours: startHours, minutes: startMinutes, seconds: startSecs }),\n endTime: toTimeString({ hours: endHours, minutes: endMinutes, seconds: endSecs }),\n duration: durationSeconds,\n isHourStart,\n });\n\n currentSeconds = intervalEndSeconds;\n }\n\n return intervals;\n}\n"],"
|
|
1
|
+
{"version":3,"file":"get-day-time-intervals.mjs","names":[],"sources":["../../../src/utils/get-day-time-intervals/get-day-time-intervals.ts"],"sourcesContent":["import { clampIntervalMinutes } from '../clamp-interval-minutes/clamp-interval-minutes';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\nimport { toTimeString } from '../to-time-string/to-time-string';\n\nexport interface DayTimeInterval {\n /** Start time of the interval in HH:mm:ss format */\n startTime: string;\n\n /** End time of the interval in HH:mm:ss format */\n endTime: string;\n\n /** Duration of the interval in seconds */\n duration: number;\n\n /** Indicates if the interval starts at the beginning of an hour */\n isHourStart: boolean;\n}\n\nexport interface GetDayTimeIntervalsInput {\n /** Start time in HH:mm:ss format */\n startTime: string;\n\n /** End time in HH:mm:ss format, end of the day by default */\n endTime?: string;\n\n /** Interval in minutes, 60 by default */\n intervalMinutes?: number;\n}\n\nexport function getDayTimeIntervals({\n startTime,\n endTime,\n intervalMinutes: _intervalMinutes = 60,\n}: GetDayTimeIntervalsInput): DayTimeInterval[] {\n const intervalMinutes = clampIntervalMinutes(_intervalMinutes);\n\n const start = parseTimeString(startTime);\n const end = endTime ? parseTimeString(endTime) : { hours: 23, minutes: 59, seconds: 59 };\n\n const startSeconds = start.hours * 3600 + start.minutes * 60 + start.seconds;\n const endSeconds = end.hours * 3600 + end.minutes * 60 + end.seconds;\n const intervalSeconds = intervalMinutes * 60;\n\n const intervals: DayTimeInterval[] = [];\n let currentSeconds = startSeconds;\n\n while (currentSeconds < endSeconds) {\n const intervalStartSeconds = currentSeconds;\n let intervalEndSeconds = currentSeconds + intervalSeconds;\n\n if (intervalEndSeconds > endSeconds) {\n intervalEndSeconds = endSeconds;\n }\n\n const startHours = Math.floor(intervalStartSeconds / 3600);\n const startMinutes = Math.floor((intervalStartSeconds % 3600) / 60);\n const startSecs = intervalStartSeconds % 60;\n\n const endHours = Math.floor(intervalEndSeconds / 3600);\n const endMinutes = Math.floor((intervalEndSeconds % 3600) / 60);\n const endSecs = intervalEndSeconds % 60;\n\n const durationSeconds = intervalEndSeconds - intervalStartSeconds;\n const isHourStart = startMinutes === 0 && startSecs === 0;\n\n intervals.push({\n startTime: toTimeString({ hours: startHours, minutes: startMinutes, seconds: startSecs }),\n endTime: toTimeString({ hours: endHours, minutes: endMinutes, seconds: endSecs }),\n duration: durationSeconds,\n isHourStart,\n });\n\n currentSeconds = intervalEndSeconds;\n }\n\n return intervals;\n}\n"],"mappings":";;;;;AA6BA,SAAgB,oBAAoB,EAClC,WACA,SACA,iBAAiB,mBAAmB,MACU;CAC9C,MAAM,kBAAkB,qBAAqB,iBAAiB;CAE9D,MAAM,QAAQ,gBAAgB,UAAU;CACxC,MAAM,MAAM,UAAU,gBAAgB,QAAQ,GAAG;EAAE,OAAO;EAAI,SAAS;EAAI,SAAS;EAAI;CAExF,MAAM,eAAe,MAAM,QAAQ,OAAO,MAAM,UAAU,KAAK,MAAM;CACrE,MAAM,aAAa,IAAI,QAAQ,OAAO,IAAI,UAAU,KAAK,IAAI;CAC7D,MAAM,kBAAkB,kBAAkB;CAE1C,MAAM,YAA+B,EAAE;CACvC,IAAI,iBAAiB;AAErB,QAAO,iBAAiB,YAAY;EAClC,MAAM,uBAAuB;EAC7B,IAAI,qBAAqB,iBAAiB;AAE1C,MAAI,qBAAqB,WACvB,sBAAqB;EAGvB,MAAM,aAAa,KAAK,MAAM,uBAAuB,KAAK;EAC1D,MAAM,eAAe,KAAK,MAAO,uBAAuB,OAAQ,GAAG;EACnE,MAAM,YAAY,uBAAuB;EAEzC,MAAM,WAAW,KAAK,MAAM,qBAAqB,KAAK;EACtD,MAAM,aAAa,KAAK,MAAO,qBAAqB,OAAQ,GAAG;EAC/D,MAAM,UAAU,qBAAqB;EAErC,MAAM,kBAAkB,qBAAqB;EAC7C,MAAM,cAAc,iBAAiB,KAAK,cAAc;AAExD,YAAU,KAAK;GACb,WAAW,aAAa;IAAE,OAAO;IAAY,SAAS;IAAc,SAAS;IAAW,CAAC;GACzF,SAAS,aAAa;IAAE,OAAO;IAAU,SAAS;IAAY,SAAS;IAAS,CAAC;GACjF,UAAU;GACV;GACD,CAAC;AAEF,mBAAiB;;AAGnB,QAAO"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import dayjs from
|
|
3
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
//#region packages/@mantine/schedule/src/utils/get-end-of-week/get-end-of-week.ts
|
|
4
4
|
function getEndOfWeek(date, firstDayOfWeek = 1) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
while (value.day() !== lastDayOfWeek) {
|
|
11
|
-
value = value.add(1, "day");
|
|
12
|
-
}
|
|
13
|
-
return value.format("YYYY-MM-DD");
|
|
5
|
+
let value = dayjs(date);
|
|
6
|
+
if (!value.isValid()) return value;
|
|
7
|
+
const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;
|
|
8
|
+
while (value.day() !== lastDayOfWeek) value = value.add(1, "day");
|
|
9
|
+
return value.format("YYYY-MM-DD");
|
|
14
10
|
}
|
|
15
|
-
|
|
11
|
+
//#endregion
|
|
16
12
|
export { getEndOfWeek };
|
|
17
|
-
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=get-end-of-week.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-end-of-week.mjs","sources":["../../../src/utils/get-end-of-week/get-end-of-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DayOfWeek } from '../../types';\n\nexport function getEndOfWeek(date: AnyDateValue, firstDayOfWeek: DayOfWeek = 1) {\n let value = dayjs(date);\n\n if (!value.isValid()) {\n return value;\n }\n\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n while (value.day() !== lastDayOfWeek) {\n value = value.add(1, 'day');\n }\n\n return value.format('YYYY-MM-DD');\n}\n"],"
|
|
1
|
+
{"version":3,"file":"get-end-of-week.mjs","names":[],"sources":["../../../src/utils/get-end-of-week/get-end-of-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DayOfWeek } from '../../types';\n\nexport function getEndOfWeek(date: AnyDateValue, firstDayOfWeek: DayOfWeek = 1) {\n let value = dayjs(date);\n\n if (!value.isValid()) {\n return value;\n }\n\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n while (value.day() !== lastDayOfWeek) {\n value = value.add(1, 'day');\n }\n\n return value.format('YYYY-MM-DD');\n}\n"],"mappings":";;;AAGA,SAAgB,aAAa,MAAoB,iBAA4B,GAAG;CAC9E,IAAI,QAAQ,MAAM,KAAK;AAEvB,KAAI,CAAC,MAAM,SAAS,CAClB,QAAO;CAGT,MAAM,gBAAgB,mBAAmB,IAAI,IAAI,iBAAiB;AAClE,QAAO,MAAM,KAAK,KAAK,cACrB,SAAQ,MAAM,IAAI,GAAG,MAAM;AAG7B,QAAO,MAAM,OAAO,aAAa"}
|