@mantine/schedule 9.3.2 → 9.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/AgendaView/AgendaView.cjs +133 -0
- package/cjs/components/AgendaView/AgendaView.cjs.map +1 -0
- package/cjs/components/AgendaView/AgendaView.module.cjs +19 -0
- package/cjs/components/AgendaView/AgendaView.module.cjs.map +1 -0
- package/cjs/components/AgendaView/get-agenda-view-events.cjs +48 -0
- package/cjs/components/AgendaView/get-agenda-view-events.cjs.map +1 -0
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
- package/cjs/components/DayView/DayView.cjs +127 -106
- package/cjs/components/DayView/DayView.cjs.map +1 -1
- package/cjs/components/DayView/DayView.module.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/components/DragContext/DragContext.cjs.map +1 -1
- package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
- package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
- package/cjs/components/MonthView/MonthView.cjs +114 -64
- package/cjs/components/MonthView/MonthView.cjs.map +1 -1
- package/cjs/components/MonthView/MonthView.module.cjs.map +1 -1
- 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/find-available-row.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
- package/cjs/components/MonthView/get-renderable-month-event-segments.cjs +17 -15
- package/cjs/components/MonthView/get-renderable-month-event-segments.cjs.map +1 -1
- package/cjs/components/MonthView/get-visible-columns.cjs +54 -0
- package/cjs/components/MonthView/get-visible-columns.cjs.map +1 -0
- package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -1
- package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
- package/cjs/components/ResourcesDayView/ResourcesDayView.cjs +578 -0
- package/cjs/components/ResourcesDayView/ResourcesDayView.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs +29 -0
- package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs +89 -0
- package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs +26 -0
- package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs +129 -0
- package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs.map +1 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs +602 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs.map +1 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs +23 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs.map +1 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs +105 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.module.cjs +7 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.module.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs +676 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs +33 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs +90 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs +97 -0
- package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs.map +1 -0
- package/cjs/components/Schedule/Schedule.cjs +3 -2
- package/cjs/components/Schedule/Schedule.cjs.map +1 -1
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +1 -1
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs +2 -0
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +29 -11
- package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
- package/cjs/components/WeekView/WeekView.cjs +128 -102
- package/cjs/components/WeekView/WeekView.cjs.map +1 -1
- package/cjs/components/WeekView/WeekView.module.cjs.map +1 -1
- package/cjs/components/WeekView/WeekViewDay.cjs +3 -1
- package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -1
- package/cjs/components/YearView/YearView.cjs.map +1 -1
- package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
- package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
- package/cjs/hooks/use-drag-state.cjs.map +1 -1
- package/cjs/hooks/use-event-resize.cjs.map +1 -1
- package/cjs/hooks/use-horizontal-event-resize.cjs +161 -0
- package/cjs/hooks/use-horizontal-event-resize.cjs.map +1 -0
- package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
- package/cjs/index.cjs +20 -0
- package/cjs/labels.cjs +5 -1
- package/cjs/labels.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -1
- package/cjs/utils/format-date/format-date.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/utils/get-day-relative-percent/get-day-relative-percent.cjs +18 -0
- package/cjs/utils/get-day-relative-percent/get-day-relative-percent.cjs.map +1 -0
- package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
- package/cjs/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.cjs +12 -0
- package/cjs/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.cjs.map +1 -0
- package/cjs/utils/get-index-from-drag-point/get-index-from-drag-point.cjs +27 -0
- package/cjs/utils/get-index-from-drag-point/get-index-from-drag-point.cjs.map +1 -0
- package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
- 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.map +1 -1
- package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
- package/cjs/utils/get-ordered-resources/get-ordered-resources.cjs +54 -0
- package/cjs/utils/get-ordered-resources/get-ordered-resources.cjs.map +1 -0
- package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
- package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
- package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
- package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
- package/cjs/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.cjs +88 -0
- package/cjs/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.cjs.map +1 -0
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
- package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
- package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
- package/cjs/utils/next-week/next-week.cjs.map +1 -1
- package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -1
- package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
- package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
- package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
- package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -1
- package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
- package/esm/components/AgendaView/AgendaView.mjs +130 -0
- package/esm/components/AgendaView/AgendaView.mjs.map +1 -0
- package/esm/components/AgendaView/AgendaView.module.mjs +19 -0
- package/esm/components/AgendaView/AgendaView.module.mjs.map +1 -0
- package/esm/components/AgendaView/get-agenda-view-events.mjs +46 -0
- package/esm/components/AgendaView/get-agenda-view-events.mjs.map +1 -0
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
- package/esm/components/DayView/DayView.mjs +128 -107
- package/esm/components/DayView/DayView.mjs.map +1 -1
- package/esm/components/DayView/DayView.module.mjs.map +1 -1
- 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.map +1 -1
- package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
- package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.mjs +115 -65
- package/esm/components/MonthView/MonthView.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.module.mjs.map +1 -1
- 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/find-available-row.mjs.map +1 -1
- 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.map +1 -1
- package/esm/components/MonthView/get-renderable-month-event-segments.mjs +17 -15
- package/esm/components/MonthView/get-renderable-month-event-segments.mjs.map +1 -1
- package/esm/components/MonthView/get-visible-columns.mjs +53 -0
- package/esm/components/MonthView/get-visible-columns.mjs.map +1 -0
- package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -1
- package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
- package/esm/components/ResourcesDayView/ResourcesDayView.mjs +576 -0
- package/esm/components/ResourcesDayView/ResourcesDayView.mjs.map +1 -0
- package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs +29 -0
- package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs.map +1 -0
- package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs +89 -0
- package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs.map +1 -0
- package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs +26 -0
- package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs.map +1 -0
- package/esm/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.mjs +127 -0
- package/esm/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.mjs.map +1 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs +600 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs.map +1 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs +23 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs.map +1 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs +105 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.module.mjs +7 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.module.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs +674 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs +33 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs +90 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs +95 -0
- package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs.map +1 -0
- package/esm/components/Schedule/Schedule.mjs +3 -2
- package/esm/components/Schedule/Schedule.mjs.map +1 -1
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs +1 -1
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs +2 -0
- package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs +29 -11
- package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
- package/esm/components/WeekView/WeekView.mjs +128 -102
- package/esm/components/WeekView/WeekView.mjs.map +1 -1
- package/esm/components/WeekView/WeekView.module.mjs.map +1 -1
- package/esm/components/WeekView/WeekViewDay.mjs +3 -1
- package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
- package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -1
- 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.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -1
- 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.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
- package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -1
- package/esm/components/YearView/YearView.mjs.map +1 -1
- package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
- 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.map +1 -1
- package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
- package/esm/hooks/use-event-resize.mjs.map +1 -1
- package/esm/hooks/use-horizontal-event-resize.mjs +159 -0
- package/esm/hooks/use-horizontal-event-resize.mjs.map +1 -0
- package/esm/index.mjs +11 -1
- package/esm/labels.mjs +5 -1
- package/esm/labels.mjs.map +1 -1
- 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.map +1 -1
- package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -1
- package/esm/utils/format-date/format-date.mjs.map +1 -1
- 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.map +1 -1
- package/esm/utils/get-day-relative-percent/get-day-relative-percent.mjs +18 -0
- package/esm/utils/get-day-relative-percent/get-day-relative-percent.mjs.map +1 -0
- package/esm/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs +12 -0
- package/esm/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs.map +1 -0
- package/esm/utils/get-index-from-drag-point/get-index-from-drag-point.mjs +27 -0
- package/esm/utils/get-index-from-drag-point/get-index-from-drag-point.mjs.map +1 -0
- package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
- 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.map +1 -1
- package/esm/utils/get-months-list/get-months-list.mjs.map +1 -1
- package/esm/utils/get-ordered-resources/get-ordered-resources.mjs +54 -0
- package/esm/utils/get-ordered-resources/get-ordered-resources.mjs.map +1 -0
- package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
- package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
- package/esm/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs +88 -0
- package/esm/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs.map +1 -0
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -1
- package/esm/utils/is-same-month/is-same-month.mjs.map +1 -1
- package/esm/utils/is-within-week/is-within-week.mjs.map +1 -1
- package/esm/utils/next-week/next-week.mjs.map +1 -1
- package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -1
- package/esm/utils/previous-week/previous-week.mjs.map +1 -1
- package/esm/utils/sort-events/sort-events.mjs.map +1 -1
- package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
- package/esm/utils/to-time-string/to-time-string.mjs.map +1 -1
- package/esm/utils/validate-event/validate-event.mjs.map +1 -1
- package/lib/components/AgendaView/AgendaView.d.ts +54 -0
- package/lib/components/AgendaView/get-agenda-view-events.d.ts +9 -0
- package/lib/components/AgendaView/index.d.ts +2 -0
- package/lib/components/DayView/DayView.d.ts +6 -1
- package/lib/components/MonthView/MonthView.d.ts +6 -1
- package/lib/components/MonthView/get-renderable-month-event-segments.d.ts +5 -1
- package/lib/components/MonthView/get-visible-columns.d.ts +19 -0
- package/lib/components/ResourcesDayView/ResourcesDayView.d.ts +148 -0
- package/lib/components/ResourcesDayView/ResourcesDayViewColumn.d.ts +39 -0
- package/lib/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.d.ts +2 -0
- package/lib/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.d.ts +16 -0
- package/lib/components/ResourcesDayView/index.d.ts +9 -0
- package/lib/components/ResourcesMonthView/ResourcesMonthView.d.ts +129 -0
- package/lib/components/ResourcesMonthView/index.d.ts +9 -0
- package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +123 -0
- package/lib/components/ResourcesSchedule/index.d.ts +3 -0
- package/lib/components/ResourcesWeekView/ResourcesWeekView.d.ts +117 -0
- package/lib/components/ResourcesWeekView/ResourcesWeekViewRow.d.ts +39 -0
- package/lib/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.d.ts +29 -0
- package/lib/components/ResourcesWeekView/index.d.ts +3 -0
- package/lib/components/Schedule/Schedule.d.ts +3 -1
- package/lib/components/ScheduleHeader/ScheduleHeaderBase.d.ts +5 -1
- package/lib/components/WeekView/WeekView.d.ts +6 -1
- package/lib/components/WeekView/WeekViewDay.d.ts +3 -1
- package/lib/hooks/use-horizontal-event-resize.d.ts +39 -0
- package/lib/index.d.mts +5 -0
- package/lib/index.d.ts +5 -0
- package/lib/labels.d.ts +4 -0
- package/lib/types.d.ts +20 -0
- package/lib/utils/get-day-relative-percent/get-day-relative-percent.d.ts +15 -0
- package/lib/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.d.ts +3 -0
- package/lib/utils/get-index-from-drag-point/get-index-from-drag-point.d.ts +6 -0
- package/lib/utils/get-ordered-resources/get-ordered-resources.d.ts +17 -0
- package/lib/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.d.ts +10 -0
- package/lib/utils/index.d.ts +7 -0
- package/package.json +4 -4
- package/styles.css +1362 -9
- package/styles.layer.css +1363 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-events-overlap.cjs","names":[],"sources":["../../../src/utils/is-events-overlap/is-events-overlap.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\n/** Returns true if two events overlap in time */\nexport function isEventsOverlap(event1: ScheduleEventData, event2: ScheduleEventData) {\n const start1 = dayjs(event1.start).valueOf();\n const end1 = dayjs(event1.end).valueOf();\n const start2 = dayjs(event2.start).valueOf();\n const end2 = dayjs(event2.end).valueOf();\n return start1 < end2 && start2 < end1;\n}\n"],"mappings":";;;;;;AAIA,SAAgB,gBAAgB,QAA2B,QAA2B;CACpF,MAAM,UAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"is-events-overlap.cjs","names":[],"sources":["../../../src/utils/is-events-overlap/is-events-overlap.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\n/** Returns true if two events overlap in time */\nexport function isEventsOverlap(event1: ScheduleEventData, event2: ScheduleEventData) {\n const start1 = dayjs(event1.start).valueOf();\n const end1 = dayjs(event1.end).valueOf();\n const start2 = dayjs(event2.start).valueOf();\n const end2 = dayjs(event2.end).valueOf();\n return start1 < end2 && start2 < end1;\n}\n"],"mappings":";;;;;;AAIA,SAAgB,gBAAgB,QAA2B,QAA2B;CACpF,MAAM,UAAA,GAAA,MAAA,QAAA,CAAe,OAAO,KAAK,CAAC,CAAC,QAAQ;CAC3C,MAAM,QAAA,GAAA,MAAA,QAAA,CAAa,OAAO,GAAG,CAAC,CAAC,QAAQ;CACvC,MAAM,UAAA,GAAA,MAAA,QAAA,CAAe,OAAO,KAAK,CAAC,CAAC,QAAQ;CAE3C,OAAO,UAAA,GAAA,MAAA,QAAA,CADY,OAAO,GAAG,CAAC,CAAC,QACZ,KAAK,SAAS;AACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-in-time-range.cjs","names":["parseTimeString"],"sources":["../../../src/utils/is-in-time-range/is-in-time-range.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\ninterface IsInTimeRangeInput {\n date: AnyDateValue;\n startTime?: string;\n endTime?: string;\n}\n\n/** Returns true if the given date's time is within the specified time range */\nexport function isInTimeRange({\n date,\n startTime = '00:00:00',\n endTime = '23:59:59',\n}: IsInTimeRangeInput) {\n const targetDate = dayjs(date);\n const parsedStartTime = parseTimeString(startTime);\n const parsedEndTime = parseTimeString(endTime);\n\n const startDateTime = targetDate\n .hour(parsedStartTime.hours)\n .minute(parsedStartTime.minutes)\n .second(parsedStartTime.seconds);\n\n const endDateTime = targetDate\n .hour(parsedEndTime.hours)\n .minute(parsedEndTime.minutes)\n .second(parsedEndTime.seconds);\n\n return targetDate.isAfter(startDateTime) && targetDate.isBefore(endDateTime);\n}\n"],"mappings":";;;;;;;AAWA,SAAgB,cAAc,EAC5B,MACA,YAAY,YACZ,UAAU,cACW;CACrB,MAAM,cAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"is-in-time-range.cjs","names":["parseTimeString"],"sources":["../../../src/utils/is-in-time-range/is-in-time-range.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\ninterface IsInTimeRangeInput {\n date: AnyDateValue;\n startTime?: string;\n endTime?: string;\n}\n\n/** Returns true if the given date's time is within the specified time range */\nexport function isInTimeRange({\n date,\n startTime = '00:00:00',\n endTime = '23:59:59',\n}: IsInTimeRangeInput) {\n const targetDate = dayjs(date);\n const parsedStartTime = parseTimeString(startTime);\n const parsedEndTime = parseTimeString(endTime);\n\n const startDateTime = targetDate\n .hour(parsedStartTime.hours)\n .minute(parsedStartTime.minutes)\n .second(parsedStartTime.seconds);\n\n const endDateTime = targetDate\n .hour(parsedEndTime.hours)\n .minute(parsedEndTime.minutes)\n .second(parsedEndTime.seconds);\n\n return targetDate.isAfter(startDateTime) && targetDate.isBefore(endDateTime);\n}\n"],"mappings":";;;;;;;AAWA,SAAgB,cAAc,EAC5B,MACA,YAAY,YACZ,UAAU,cACW;CACrB,MAAM,cAAA,GAAA,MAAA,QAAA,CAAmB,IAAI;CAC7B,MAAM,kBAAkBA,0BAAAA,gBAAgB,SAAS;CACjD,MAAM,gBAAgBA,0BAAAA,gBAAgB,OAAO;CAE7C,MAAM,gBAAgB,WACnB,KAAK,gBAAgB,KAAK,CAAC,CAC3B,OAAO,gBAAgB,OAAO,CAAC,CAC/B,OAAO,gBAAgB,OAAO;CAEjC,MAAM,cAAc,WACjB,KAAK,cAAc,KAAK,CAAC,CACzB,OAAO,cAAc,OAAO,CAAC,CAC7B,OAAO,cAAc,OAAO;CAE/B,OAAO,WAAW,QAAQ,aAAa,KAAK,WAAW,SAAS,WAAW;AAC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-multiday-event.cjs","names":[],"sources":["../../../src/utils/is-multiday-event/is-multiday-event.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\nexport function isMultidayEvent(event: ScheduleEventData) {\n const startDate = dayjs(event.start).startOf('day');\n const rawEnd = dayjs(event.end);\n const endAtMidnight = rawEnd.hour() === 0 && rawEnd.minute() === 0 && rawEnd.second() === 0;\n const endDate = endAtMidnight ? rawEnd.startOf('day').subtract(1, 'day') : rawEnd.startOf('day');\n return endDate.isAfter(startDate);\n}\n"],"mappings":";;;;;AAGA,SAAgB,gBAAgB,OAA0B;CACxD,MAAM,aAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"is-multiday-event.cjs","names":[],"sources":["../../../src/utils/is-multiday-event/is-multiday-event.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\nexport function isMultidayEvent(event: ScheduleEventData) {\n const startDate = dayjs(event.start).startOf('day');\n const rawEnd = dayjs(event.end);\n const endAtMidnight = rawEnd.hour() === 0 && rawEnd.minute() === 0 && rawEnd.second() === 0;\n const endDate = endAtMidnight ? rawEnd.startOf('day').subtract(1, 'day') : rawEnd.startOf('day');\n return endDate.isAfter(startDate);\n}\n"],"mappings":";;;;;AAGA,SAAgB,gBAAgB,OAA0B;CACxD,MAAM,aAAA,GAAA,MAAA,QAAA,CAAkB,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;CAClD,MAAM,UAAA,GAAA,MAAA,QAAA,CAAe,MAAM,GAAG;CAG9B,QAFsB,OAAO,KAAK,MAAM,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO,OAAO,MAAM,IAC1D,OAAO,QAAQ,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,IAAI,OAAO,QAAQ,KAAK,EAAA,CAChF,QAAQ,SAAS;AAClC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-same-month.cjs","names":[],"sources":["../../../src/utils/is-same-month/is-same-month.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue } from '../../types';\n\nexport function isSameMonth(date: AnyDateValue, comparison: AnyDateValue) {\n return dayjs(date).format('YYYY-MM') === dayjs(comparison).format('YYYY-MM');\n}\n"],"mappings":";;;;;AAGA,SAAgB,YAAY,MAAoB,YAA0B;CACxE,QAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"is-same-month.cjs","names":[],"sources":["../../../src/utils/is-same-month/is-same-month.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue } from '../../types';\n\nexport function isSameMonth(date: AnyDateValue, comparison: AnyDateValue) {\n return dayjs(date).format('YYYY-MM') === dayjs(comparison).format('YYYY-MM');\n}\n"],"mappings":";;;;;AAGA,SAAgB,YAAY,MAAoB,YAA0B;CACxE,QAAA,GAAA,MAAA,QAAA,CAAa,IAAI,CAAC,CAAC,OAAO,SAAS,OAAA,GAAA,MAAA,QAAA,CAAY,UAAU,CAAC,CAAC,OAAO,SAAS;AAC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-within-week.cjs","names":["getStartOfWeek"],"sources":["../../../src/utils/is-within-week/is-within-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DayOfWeek, ScheduleEventData } from '../../types';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week';\n\ninterface IsWithinWeekInput {\n event: ScheduleEventData;\n targetWeek: AnyDateValue;\n firstDayOfWeek: DayOfWeek;\n}\n\nexport function isWithinWeek({ event, targetWeek, firstDayOfWeek }: IsWithinWeekInput) {\n const startOfWeek = dayjs(getStartOfWeek({ date: targetWeek, firstDayOfWeek }));\n const endOfWeek = startOfWeek.add(7, 'day');\n return dayjs(event.start).isBefore(endOfWeek) && dayjs(event.end).isAfter(startOfWeek);\n}\n"],"mappings":";;;;;;AAUA,SAAgB,aAAa,EAAE,OAAO,YAAY,kBAAqC;CACrF,MAAM,eAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"is-within-week.cjs","names":["getStartOfWeek"],"sources":["../../../src/utils/is-within-week/is-within-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DayOfWeek, ScheduleEventData } from '../../types';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week';\n\ninterface IsWithinWeekInput {\n event: ScheduleEventData;\n targetWeek: AnyDateValue;\n firstDayOfWeek: DayOfWeek;\n}\n\nexport function isWithinWeek({ event, targetWeek, firstDayOfWeek }: IsWithinWeekInput) {\n const startOfWeek = dayjs(getStartOfWeek({ date: targetWeek, firstDayOfWeek }));\n const endOfWeek = startOfWeek.add(7, 'day');\n return dayjs(event.start).isBefore(endOfWeek) && dayjs(event.end).isAfter(startOfWeek);\n}\n"],"mappings":";;;;;;AAUA,SAAgB,aAAa,EAAE,OAAO,YAAY,kBAAqC;CACrF,MAAM,eAAA,GAAA,MAAA,QAAA,CAAoBA,0BAAAA,eAAe;EAAE,MAAM;EAAY;CAAe,CAAC,CAAC;CAC9E,MAAM,YAAY,YAAY,IAAI,GAAG,KAAK;CAC1C,QAAA,GAAA,MAAA,QAAA,CAAa,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,MAAA,GAAA,MAAA,QAAA,CAAW,MAAM,GAAG,CAAC,CAAC,QAAQ,WAAW;AACvF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-week.cjs","names":["getStartOfWeek","toDateString"],"sources":["../../../src/utils/next-week/next-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, DayOfWeek } from '../../types';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week';\nimport { toDateString } from '../to-date-string/to-date-string';\n\nexport function nextWeek(date: AnyDateValue, firstDayOfWeek: DayOfWeek): DateStringValue {\n const start = getStartOfWeek({ date, firstDayOfWeek });\n return toDateString(dayjs(start).set('date', dayjs(start).date() + 7));\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,SAAS,MAAoB,gBAA4C;CACvF,MAAM,QAAQA,0BAAAA,eAAe;EAAE;EAAM;CAAe,CAAC;CACrD,OAAOC,uBAAAA,cAAAA,GAAAA,MAAAA,
|
|
1
|
+
{"version":3,"file":"next-week.cjs","names":["getStartOfWeek","toDateString"],"sources":["../../../src/utils/next-week/next-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, DayOfWeek } from '../../types';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week';\nimport { toDateString } from '../to-date-string/to-date-string';\n\nexport function nextWeek(date: AnyDateValue, firstDayOfWeek: DayOfWeek): DateStringValue {\n const start = getStartOfWeek({ date, firstDayOfWeek });\n return toDateString(dayjs(start).set('date', dayjs(start).date() + 7));\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,SAAS,MAAoB,gBAA4C;CACvF,MAAM,QAAQA,0BAAAA,eAAe;EAAE;EAAM;CAAe,CAAC;CACrD,OAAOC,uBAAAA,cAAAA,GAAAA,MAAAA,QAAAA,CAAmB,KAAK,CAAC,CAAC,IAAI,SAAA,GAAA,MAAA,QAAA,CAAc,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-time-string.cjs","names":[],"sources":["../../../src/utils/parse-time-string/parse-time-string.ts"],"sourcesContent":["export interface ParsedTime {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport function parseTimeString(time: string): ParsedTime {\n const [hours, minutes, seconds] = time.split(':').map(Number);\n return { hours, minutes, seconds: seconds || 0 };\n}\n"],"mappings":";;AAMA,SAAgB,gBAAgB,MAA0B;CACxD,MAAM,CAAC,OAAO,SAAS,WAAW,KAAK,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"parse-time-string.cjs","names":[],"sources":["../../../src/utils/parse-time-string/parse-time-string.ts"],"sourcesContent":["export interface ParsedTime {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport function parseTimeString(time: string): ParsedTime {\n const [hours, minutes, seconds] = time.split(':').map(Number);\n return { hours, minutes, seconds: seconds || 0 };\n}\n"],"mappings":";;AAMA,SAAgB,gBAAgB,MAA0B;CACxD,MAAM,CAAC,OAAO,SAAS,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;CAC5D,OAAO;EAAE;EAAO;EAAS,SAAS,WAAW;CAAE;AACjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"previous-week.cjs","names":["getStartOfWeek","toDateString"],"sources":["../../../src/utils/previous-week/previous-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, DayOfWeek } from '../../types';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week';\nimport { toDateString } from '../to-date-string/to-date-string';\n\nexport function previousWeek(date: AnyDateValue, firstDayOfWeek: DayOfWeek): DateStringValue {\n const start = getStartOfWeek({ date, firstDayOfWeek });\n return toDateString(dayjs(start).set('date', dayjs(start).date() - 7));\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,aAAa,MAAoB,gBAA4C;CAC3F,MAAM,QAAQA,0BAAAA,eAAe;EAAE;EAAM;CAAe,CAAC;CACrD,OAAOC,uBAAAA,cAAAA,GAAAA,MAAAA,
|
|
1
|
+
{"version":3,"file":"previous-week.cjs","names":["getStartOfWeek","toDateString"],"sources":["../../../src/utils/previous-week/previous-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, DayOfWeek } from '../../types';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week';\nimport { toDateString } from '../to-date-string/to-date-string';\n\nexport function previousWeek(date: AnyDateValue, firstDayOfWeek: DayOfWeek): DateStringValue {\n const start = getStartOfWeek({ date, firstDayOfWeek });\n return toDateString(dayjs(start).set('date', dayjs(start).date() - 7));\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,aAAa,MAAoB,gBAA4C;CAC3F,MAAM,QAAQA,0BAAAA,eAAe;EAAE;EAAM;CAAe,CAAC;CACrD,OAAOC,uBAAAA,cAAAA,GAAAA,MAAAA,QAAAA,CAAmB,KAAK,CAAC,CAAC,IAAI,SAAA,GAAA,MAAA,QAAA,CAAc,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-events.cjs","names":[],"sources":["../../../src/utils/sort-events/sort-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\n/** Sorts events by start time, then by duration (longer first) */\nexport function sortEvents<T extends ScheduleEventData>(events: T[]): T[] {\n return events.toSorted((a, b) => {\n const startDiff = dayjs(a.start).diff(dayjs(b.start));\n\n if (startDiff !== 0) {\n return startDiff;\n }\n\n return dayjs(b.end).diff(dayjs(b.start)) - dayjs(a.end).diff(dayjs(a.start));\n });\n}\n"],"mappings":";;;;;;AAIA,SAAgB,WAAwC,QAAkB;CACxE,OAAO,OAAO,UAAU,GAAG,MAAM;EAC/B,MAAM,aAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"sort-events.cjs","names":[],"sources":["../../../src/utils/sort-events/sort-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\n/** Sorts events by start time, then by duration (longer first) */\nexport function sortEvents<T extends ScheduleEventData>(events: T[]): T[] {\n return events.toSorted((a, b) => {\n const startDiff = dayjs(a.start).diff(dayjs(b.start));\n\n if (startDiff !== 0) {\n return startDiff;\n }\n\n return dayjs(b.end).diff(dayjs(b.start)) - dayjs(a.end).diff(dayjs(a.start));\n });\n}\n"],"mappings":";;;;;;AAIA,SAAgB,WAAwC,QAAkB;CACxE,OAAO,OAAO,UAAU,GAAG,MAAM;EAC/B,MAAM,aAAA,GAAA,MAAA,QAAA,CAAkB,EAAE,KAAK,CAAC,CAAC,MAAA,GAAA,MAAA,QAAA,CAAW,EAAE,KAAK,CAAC;EAEpD,IAAI,cAAc,GAChB,OAAO;EAGT,QAAA,GAAA,MAAA,QAAA,CAAa,EAAE,GAAG,CAAC,CAAC,MAAA,GAAA,MAAA,QAAA,CAAW,EAAE,KAAK,CAAC,KAAA,GAAA,MAAA,QAAA,CAAU,EAAE,GAAG,CAAC,CAAC,MAAA,GAAA,MAAA,QAAA,CAAW,EAAE,KAAK,CAAC;CAC7E,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-date-string.cjs","names":[],"sources":["../../../src/utils/to-date-string/to-date-string.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue } from '../../types';\n\nexport function toDateString(date: AnyDateValue): DateStringValue {\n return dayjs(date).format('YYYY-MM-DD 00:00:00');\n}\n"],"mappings":";;;;;AAGA,SAAgB,aAAa,MAAqC;CAChE,QAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"to-date-string.cjs","names":[],"sources":["../../../src/utils/to-date-string/to-date-string.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue } from '../../types';\n\nexport function toDateString(date: AnyDateValue): DateStringValue {\n return dayjs(date).format('YYYY-MM-DD 00:00:00');\n}\n"],"mappings":";;;;;AAGA,SAAgB,aAAa,MAAqC;CAChE,QAAA,GAAA,MAAA,QAAA,CAAa,IAAI,CAAC,CAAC,OAAO,qBAAqB;AACjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-time-string.cjs","names":[],"sources":["../../../src/utils/to-time-string/to-time-string.ts"],"sourcesContent":["import { ParsedTime } from '../parse-time-string/parse-time-string';\n\nexport function toTimeString({ hours, minutes, seconds }: ParsedTime) {\n return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n}\n"],"mappings":";;AAEA,SAAgB,aAAa,EAAE,OAAO,SAAS,WAAuB;CACpE,OAAO,GAAG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"to-time-string.cjs","names":[],"sources":["../../../src/utils/to-time-string/to-time-string.ts"],"sourcesContent":["import { ParsedTime } from '../parse-time-string/parse-time-string';\n\nexport function toTimeString({ hours, minutes, seconds }: ParsedTime) {\n return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n}\n"],"mappings":";;AAEA,SAAgB,aAAa,EAAE,OAAO,SAAS,WAAuB;CACpE,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC,SAAS,GAAG,GAAG;AACjH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-event.cjs","names":[],"sources":["../../../src/utils/validate-event/validate-event.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\nexport function validateEvent(eventData: ScheduleEventData) {\n if (!dayjs(eventData.start).isValid()) {\n throw new Error(`[@mantine/schedule] Invalid start date for event id: ${eventData.id}`);\n }\n\n if (!dayjs(eventData.end).isValid()) {\n throw new Error(`[@mantine/schedule] Invalid end date for event id: ${eventData.id}`);\n }\n\n if (dayjs(eventData.end).isBefore(dayjs(eventData.start))) {\n throw new Error(\n `[@mantine/schedule] Event end date is before start date for event id: ${eventData.id}`\n );\n }\n\n return eventData;\n}\n"],"mappings":";;;;;AAGA,SAAgB,cAAc,WAA8B;CAC1D,IAAI,EAAA,GAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"validate-event.cjs","names":[],"sources":["../../../src/utils/validate-event/validate-event.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { ScheduleEventData } from '../../types';\n\nexport function validateEvent(eventData: ScheduleEventData) {\n if (!dayjs(eventData.start).isValid()) {\n throw new Error(`[@mantine/schedule] Invalid start date for event id: ${eventData.id}`);\n }\n\n if (!dayjs(eventData.end).isValid()) {\n throw new Error(`[@mantine/schedule] Invalid end date for event id: ${eventData.id}`);\n }\n\n if (dayjs(eventData.end).isBefore(dayjs(eventData.start))) {\n throw new Error(\n `[@mantine/schedule] Event end date is before start date for event id: ${eventData.id}`\n );\n }\n\n return eventData;\n}\n"],"mappings":";;;;;AAGA,SAAgB,cAAc,WAA8B;CAC1D,IAAI,EAAA,GAAA,MAAA,QAAA,CAAO,UAAU,KAAK,CAAC,CAAC,QAAQ,GAClC,MAAM,IAAI,MAAM,wDAAwD,UAAU,IAAI;CAGxF,IAAI,EAAA,GAAA,MAAA,QAAA,CAAO,UAAU,GAAG,CAAC,CAAC,QAAQ,GAChC,MAAM,IAAI,MAAM,sDAAsD,UAAU,IAAI;CAGtF,KAAA,GAAA,MAAA,QAAA,CAAU,UAAU,GAAG,CAAC,CAAC,UAAA,GAAA,MAAA,QAAA,CAAe,UAAU,KAAK,CAAC,GACtD,MAAM,IAAI,MACR,yEAAyE,UAAU,IACrF;CAGF,OAAO;AACT"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { getLabel } from "../../labels.mjs";
|
|
3
|
+
import { formatDate } from "../../utils/format-date/format-date.mjs";
|
|
4
|
+
import { isAllDayEvent } from "../../utils/is-all-day-event/is-all-day-event.mjs";
|
|
5
|
+
import { sortEvents } from "../../utils/sort-events/sort-events.mjs";
|
|
6
|
+
import { isMultidayEvent } from "../../utils/is-multiday-event/is-multiday-event.mjs";
|
|
7
|
+
import { expandRecurringEvents } from "../../utils/expand-recurring-events/expand-recurring-events.mjs";
|
|
8
|
+
import { getAgendaViewEvents } from "./get-agenda-view-events.mjs";
|
|
9
|
+
import AgendaView_module_default from "./AgendaView.module.mjs";
|
|
10
|
+
import dayjs from "dayjs";
|
|
11
|
+
import { Box, Text, UnstyledButton, createVarsResolver, factory, getRadius, getThemeColor, useMantineTheme, useProps, useStyles } from "@mantine/core";
|
|
12
|
+
import React, { createElement } from "react";
|
|
13
|
+
import { useDatesContext } from "@mantine/dates";
|
|
14
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
//#region packages/@mantine/schedule/src/components/AgendaView/AgendaView.tsx
|
|
16
|
+
const defaultProps = {
|
|
17
|
+
__staticSelector: "AgendaView",
|
|
18
|
+
mode: "default",
|
|
19
|
+
dateHeaderFormat: "dddd, MMMM D",
|
|
20
|
+
headerFormat: "MMMM D, YYYY"
|
|
21
|
+
};
|
|
22
|
+
const varsResolver = createVarsResolver((_theme, { radius }) => ({ agendaView: { "--agenda-view-radius": getRadius(radius) } }));
|
|
23
|
+
const AgendaView = factory((_props) => {
|
|
24
|
+
const props = useProps("AgendaView", defaultProps, _props);
|
|
25
|
+
const { classNames, className, style, styles, unstyled, vars, attributes, __staticSelector, rangeStart, rangeEnd, events, locale, radius, labels, mode, renderEvent, dateHeaderFormat, headerFormat, onEventClick, recurrenceExpansionLimit, ...others } = props;
|
|
26
|
+
const ctx = useDatesContext();
|
|
27
|
+
const theme = useMantineTheme();
|
|
28
|
+
const getStyles = useStyles({
|
|
29
|
+
name: __staticSelector,
|
|
30
|
+
classes: AgendaView_module_default,
|
|
31
|
+
props,
|
|
32
|
+
className,
|
|
33
|
+
style,
|
|
34
|
+
classNames,
|
|
35
|
+
styles,
|
|
36
|
+
unstyled,
|
|
37
|
+
attributes,
|
|
38
|
+
vars,
|
|
39
|
+
varsResolver,
|
|
40
|
+
rootSelector: "agendaView"
|
|
41
|
+
});
|
|
42
|
+
const groupedEvents = getAgendaViewEvents({
|
|
43
|
+
rangeStart,
|
|
44
|
+
rangeEnd,
|
|
45
|
+
events: expandRecurringEvents({
|
|
46
|
+
events,
|
|
47
|
+
rangeStart: dayjs(rangeStart).startOf("day").toDate(),
|
|
48
|
+
rangeEnd: dayjs(rangeEnd).endOf("day").toDate(),
|
|
49
|
+
expansionLimit: recurrenceExpansionLimit
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
const sortedDates = Object.keys(groupedEvents).sort();
|
|
53
|
+
const headerLabel = `${formatDate({
|
|
54
|
+
locale: ctx.getLocale(locale),
|
|
55
|
+
date: rangeStart,
|
|
56
|
+
format: headerFormat
|
|
57
|
+
})} – ${formatDate({
|
|
58
|
+
locale: ctx.getLocale(locale),
|
|
59
|
+
date: rangeEnd,
|
|
60
|
+
format: headerFormat
|
|
61
|
+
})}`;
|
|
62
|
+
const dateGroups = sortedDates.map((dateStr) => {
|
|
63
|
+
const eventNodes = sortEvents(groupedEvents[dateStr]).map((event) => {
|
|
64
|
+
const startTime = dayjs(event.start).format("HH:mm");
|
|
65
|
+
const endTime = dayjs(event.end).format("HH:mm");
|
|
66
|
+
const isAllDay = isMultidayEvent(event) || isAllDayEvent({
|
|
67
|
+
event,
|
|
68
|
+
date: dateStr
|
|
69
|
+
});
|
|
70
|
+
const eventChildren = /* @__PURE__ */ jsxs(Box, {
|
|
71
|
+
...getStyles("agendaViewEventBody"),
|
|
72
|
+
children: [/* @__PURE__ */ jsx("div", { ...getStyles("agendaViewEventColor", { style: { backgroundColor: getThemeColor(event.color, theme) } }) }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Text, {
|
|
73
|
+
...getStyles("agendaViewEventTitle"),
|
|
74
|
+
children: event.title
|
|
75
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
76
|
+
...getStyles("agendaViewEventTime"),
|
|
77
|
+
children: isAllDay ? getLabel("allDay", labels) : `${startTime} – ${endTime}`
|
|
78
|
+
})] })]
|
|
79
|
+
});
|
|
80
|
+
const rootProps = {
|
|
81
|
+
...getStyles("agendaViewEvent"),
|
|
82
|
+
onClick: mode === "static" ? void 0 : (e) => {
|
|
83
|
+
onEventClick?.(event, e);
|
|
84
|
+
},
|
|
85
|
+
tabIndex: mode === "static" ? -1 : 0,
|
|
86
|
+
children: eventChildren
|
|
87
|
+
};
|
|
88
|
+
if (typeof renderEvent === "function") return /* @__PURE__ */ jsx(React.Fragment, { children: renderEvent(event, rootProps) }, event.id);
|
|
89
|
+
return /* @__PURE__ */ createElement(UnstyledButton, {
|
|
90
|
+
...rootProps,
|
|
91
|
+
key: event.id
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
return /* @__PURE__ */ createElement("div", {
|
|
95
|
+
...getStyles("agendaViewDateGroup"),
|
|
96
|
+
key: dateStr
|
|
97
|
+
}, /* @__PURE__ */ jsx(Text, {
|
|
98
|
+
...getStyles("agendaViewDateHeader"),
|
|
99
|
+
children: formatDate({
|
|
100
|
+
locale: ctx.getLocale(locale),
|
|
101
|
+
date: dateStr,
|
|
102
|
+
format: dateHeaderFormat
|
|
103
|
+
})
|
|
104
|
+
}), eventNodes);
|
|
105
|
+
});
|
|
106
|
+
return /* @__PURE__ */ jsxs(Box, {
|
|
107
|
+
...getStyles("agendaView"),
|
|
108
|
+
...others,
|
|
109
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
110
|
+
...getStyles("agendaViewHeader"),
|
|
111
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
112
|
+
...getStyles("agendaViewHeaderLabel"),
|
|
113
|
+
children: headerLabel
|
|
114
|
+
})
|
|
115
|
+
}), /* @__PURE__ */ jsx(Box, {
|
|
116
|
+
...getStyles("agendaViewBody"),
|
|
117
|
+
children: dateGroups.length > 0 ? dateGroups : /* @__PURE__ */ jsx(Text, {
|
|
118
|
+
...getStyles("agendaViewNoEvents"),
|
|
119
|
+
children: getLabel("noEvents", labels)
|
|
120
|
+
})
|
|
121
|
+
})]
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
AgendaView.displayName = "@mantine/schedule/AgendaView";
|
|
125
|
+
AgendaView.classes = AgendaView_module_default;
|
|
126
|
+
AgendaView.varsResolver = varsResolver;
|
|
127
|
+
//#endregion
|
|
128
|
+
export { AgendaView };
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=AgendaView.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgendaView.mjs","names":["classes"],"sources":["../../../src/components/AgendaView/AgendaView.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport React from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n getThemeColor,\n MantineRadius,\n StylesApiProps,\n Text,\n UnstyledButton,\n useMantineTheme,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { AnyDateValue, DateLabelFormat, ScheduleEventData, ScheduleMode } from '../../types';\nimport {\n expandRecurringEvents,\n formatDate,\n isAllDayEvent,\n isMultidayEvent,\n sortEvents,\n} from '../../utils';\nimport { RenderEvent } from '../ScheduleEvent/ScheduleEvent';\nimport { getAgendaViewEvents } from './get-agenda-view-events';\nimport classes from './AgendaView.module.css';\n\nexport type AgendaViewStylesNames =\n | 'agendaView'\n | 'agendaViewHeader'\n | 'agendaViewHeaderLabel'\n | 'agendaViewBody'\n | 'agendaViewDateGroup'\n | 'agendaViewDateHeader'\n | 'agendaViewEvent'\n | 'agendaViewEventBody'\n | 'agendaViewEventColor'\n | 'agendaViewEventTitle'\n | 'agendaViewEventTime'\n | 'agendaViewNoEvents';\n\nexport type AgendaViewCssVariables = {\n agendaView: '--agenda-view-radius';\n};\n\nexport interface AgendaViewProps\n extends BoxProps, StylesApiProps<AgendaViewFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Start of the date range to display events for */\n rangeStart: AnyDateValue;\n\n /** End of the date range to display events for */\n rangeEnd: AnyDateValue;\n\n /** Events to display */\n events?: ScheduleEventData[];\n\n /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */\n locale?: string;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Labels override for i18n */\n labels?: ScheduleLabelsOverride;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default 'default' */\n mode?: ScheduleMode;\n\n /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */\n renderEvent?: RenderEvent;\n\n /** Format for the date group headers @default 'dddd, MMMM D' */\n dateHeaderFormat?: DateLabelFormat;\n\n /** Format for the header label showing the date range @default 'MMMM D, YYYY' */\n headerFormat?: DateLabelFormat;\n\n /** Called when event is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n}\n\nexport type AgendaViewFactory = Factory<{\n props: AgendaViewProps;\n ref: HTMLDivElement;\n stylesNames: AgendaViewStylesNames;\n vars: AgendaViewCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'AgendaView',\n mode: 'default',\n dateHeaderFormat: 'dddd, MMMM D',\n headerFormat: 'MMMM D, YYYY',\n} satisfies Partial<AgendaViewProps>;\n\nconst varsResolver = createVarsResolver<AgendaViewFactory>((_theme, { radius }) => ({\n agendaView: {\n '--agenda-view-radius': getRadius(radius),\n },\n}));\n\nexport const AgendaView = factory<AgendaViewFactory>((_props) => {\n const props = useProps('AgendaView', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n __staticSelector,\n rangeStart,\n rangeEnd,\n events,\n locale,\n radius,\n labels,\n mode,\n renderEvent,\n dateHeaderFormat,\n headerFormat,\n onEventClick,\n recurrenceExpansionLimit,\n ...others\n } = props;\n\n const ctx = useDatesContext();\n const theme = useMantineTheme();\n\n const getStyles = useStyles<AgendaViewFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'agendaView',\n });\n\n const expandedEvents = expandRecurringEvents({\n events,\n rangeStart: dayjs(rangeStart).startOf('day').toDate(),\n rangeEnd: dayjs(rangeEnd).endOf('day').toDate(),\n expansionLimit: recurrenceExpansionLimit,\n });\n\n const groupedEvents = getAgendaViewEvents({\n rangeStart,\n rangeEnd,\n events: expandedEvents,\n });\n\n const sortedDates = Object.keys(groupedEvents).sort();\n\n const headerLabel = `${formatDate({\n locale: ctx.getLocale(locale),\n date: rangeStart,\n format: headerFormat,\n })} – ${formatDate({\n locale: ctx.getLocale(locale),\n date: rangeEnd,\n format: headerFormat,\n })}`;\n\n const dateGroups = sortedDates.map((dateStr) => {\n const dateEvents = sortEvents(groupedEvents[dateStr]);\n\n const eventNodes = dateEvents.map((event) => {\n const startTime = dayjs(event.start).format('HH:mm');\n const endTime = dayjs(event.end).format('HH:mm');\n const isAllDay = isMultidayEvent(event) || isAllDayEvent({ event, date: dateStr });\n\n const eventChildren = (\n <Box {...getStyles('agendaViewEventBody')}>\n <div\n {...getStyles('agendaViewEventColor', {\n style: { backgroundColor: getThemeColor(event.color, theme) },\n })}\n />\n <div>\n <Text {...getStyles('agendaViewEventTitle')}>{event.title}</Text>\n <Text {...getStyles('agendaViewEventTime')}>\n {isAllDay ? getLabel('allDay', labels) : `${startTime} – ${endTime}`}\n </Text>\n </div>\n </Box>\n );\n\n const rootProps: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode } = {\n ...getStyles('agendaViewEvent'),\n onClick:\n mode === 'static'\n ? undefined\n : (e: React.MouseEvent<HTMLButtonElement>) => {\n onEventClick?.(event, e);\n },\n tabIndex: mode === 'static' ? -1 : 0,\n children: eventChildren,\n };\n\n if (typeof renderEvent === 'function') {\n return <React.Fragment key={event.id}>{renderEvent(event, rootProps)}</React.Fragment>;\n }\n\n return <UnstyledButton {...rootProps} key={event.id} />;\n });\n\n return (\n <div {...getStyles('agendaViewDateGroup')} key={dateStr}>\n <Text {...getStyles('agendaViewDateHeader')}>\n {formatDate({\n locale: ctx.getLocale(locale),\n date: dateStr,\n format: dateHeaderFormat,\n })}\n </Text>\n {eventNodes}\n </div>\n );\n });\n\n return (\n <Box {...getStyles('agendaView')} {...others}>\n <div {...getStyles('agendaViewHeader')}>\n <Text {...getStyles('agendaViewHeaderLabel')}>{headerLabel}</Text>\n </div>\n\n <Box {...getStyles('agendaViewBody')}>\n {dateGroups.length > 0 ? (\n dateGroups\n ) : (\n <Text {...getStyles('agendaViewNoEvents')}>{getLabel('noEvents', labels)}</Text>\n )}\n </Box>\n </Box>\n );\n});\n\nAgendaView.displayName = '@mantine/schedule/AgendaView';\nAgendaView.classes = classes;\nAgendaView.varsResolver = varsResolver;\n\nexport namespace AgendaView {\n export type Props = AgendaViewProps;\n export type Factory = AgendaViewFactory;\n export type StylesNames = AgendaViewStylesNames;\n export type CssVariables = AgendaViewCssVariables;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmGA,MAAM,eAAe;CACnB,kBAAkB;CAClB,MAAM;CACN,kBAAkB;CAClB,cAAc;AAChB;AAEA,MAAM,eAAe,oBAAuC,QAAQ,EAAE,cAAc,EAClF,YAAY,EACV,wBAAwB,UAAU,MAAM,EAC1C,EACF,EAAE;AAEF,MAAa,aAAa,SAA4B,WAAW;CAC/D,MAAM,QAAQ,SAAS,cAAc,cAAc,MAAM;CACzD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,kBACA,YACA,UACA,QACA,QACA,QACA,QACA,MACA,aACA,kBACA,cACA,cACA,0BACA,GAAG,WACD;CAEJ,MAAM,MAAM,gBAAgB;CAC5B,MAAM,QAAQ,gBAAgB;CAE9B,MAAM,YAAY,UAA6B;EAC7C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CASD,MAAM,gBAAgB,oBAAoB;EACxC;EACA;EACA,QAVqB,sBAAsB;GAC3C;GACA,YAAY,MAAM,UAAU,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO;GACpD,UAAU,MAAM,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO;GAC9C,gBAAgB;EAClB,CAKuB;CACvB,CAAC;CAED,MAAM,cAAc,OAAO,KAAK,aAAa,CAAC,CAAC,KAAK;CAEpD,MAAM,cAAc,GAAG,WAAW;EAChC,QAAQ,IAAI,UAAU,MAAM;EAC5B,MAAM;EACN,QAAQ;CACV,CAAC,EAAE,KAAK,WAAW;EACjB,QAAQ,IAAI,UAAU,MAAM;EAC5B,MAAM;EACN,QAAQ;CACV,CAAC;CAED,MAAM,aAAa,YAAY,KAAK,YAAY;EAG9C,MAAM,aAFa,WAAW,cAAc,QAEhB,CAAC,CAAC,KAAK,UAAU;GAC3C,MAAM,YAAY,MAAM,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;GACnD,MAAM,UAAU,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;GAC/C,MAAM,WAAW,gBAAgB,KAAK,KAAK,cAAc;IAAE;IAAO,MAAM;GAAQ,CAAC;GAEjF,MAAM,gBACJ,qBAAC,KAAD;IAAK,GAAI,UAAU,qBAAqB;cAAxC,CACE,oBAAC,OAAD,EACE,GAAI,UAAU,wBAAwB,EACpC,OAAO,EAAE,iBAAiB,cAAc,MAAM,OAAO,KAAK,EAAE,EAC9D,CAAC,EACF,CAAA,GACD,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,MAAD;KAAM,GAAI,UAAU,sBAAsB;eAAI,MAAM;IAAY,CAAA,GAChE,oBAAC,MAAD;KAAM,GAAI,UAAU,qBAAqB;eACtC,WAAW,SAAS,UAAU,MAAM,IAAI,GAAG,UAAU,KAAK;IACvD,CAAA,CACH,EAAA,CAAA,CACF;;GAGP,MAAM,YAAsF;IAC1F,GAAG,UAAU,iBAAiB;IAC9B,SACE,SAAS,WACL,KAAA,KACC,MAA2C;KAC1C,eAAe,OAAO,CAAC;IACzB;IACN,UAAU,SAAS,WAAW,KAAK;IACnC,UAAU;GACZ;GAEA,IAAI,OAAO,gBAAgB,YACzB,OAAO,oBAAC,MAAM,UAAP,EAAA,UAAgC,YAAY,OAAO,SAAS,EAAkB,GAAzD,MAAM,EAAmD;GAGvF,OAAO,8BAAC,gBAAD;IAAgB,GAAI;IAAW,KAAK,MAAM;GAAK,CAAA;EACxD,CAAC;EAED,OACE,8BAAC,OAAD;GAAK,GAAI,UAAU,qBAAqB;GAAG,KAAK;EAS3C,GARH,oBAAC,MAAD;GAAM,GAAI,UAAU,sBAAsB;aACvC,WAAW;IACV,QAAQ,IAAI,UAAU,MAAM;IAC5B,MAAM;IACN,QAAQ;GACV,CAAC;EACG,CAAA,GACL,UACE;CAET,CAAC;CAED,OACE,qBAAC,KAAD;EAAK,GAAI,UAAU,YAAY;EAAG,GAAI;YAAtC,CACE,oBAAC,OAAD;GAAK,GAAI,UAAU,kBAAkB;aACnC,oBAAC,MAAD;IAAM,GAAI,UAAU,uBAAuB;cAAI;GAAkB,CAAA;EAC9D,CAAA,GAEL,oBAAC,KAAD;GAAK,GAAI,UAAU,gBAAgB;aAChC,WAAW,SAAS,IACnB,aAEA,oBAAC,MAAD;IAAM,GAAI,UAAU,oBAAoB;cAAI,SAAS,YAAY,MAAM;GAAQ,CAAA;EAE9E,CAAA,CACF;;AAET,CAAC;AAED,WAAW,cAAc;AACzB,WAAW,UAAUA;AACrB,WAAW,eAAe"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region packages/@mantine/schedule/src/components/AgendaView/AgendaView.module.css
|
|
3
|
+
var AgendaView_module_default = {
|
|
4
|
+
"agendaView": "m_c5e63f2d",
|
|
5
|
+
"agendaViewHeader": "m_b70d381a",
|
|
6
|
+
"agendaViewHeaderLabel": "m_693056fa",
|
|
7
|
+
"agendaViewBody": "m_dd488e6f",
|
|
8
|
+
"agendaViewDateGroup": "m_e7e356c4",
|
|
9
|
+
"agendaViewDateHeader": "m_157e8ae8",
|
|
10
|
+
"agendaViewEvent": "m_cbf6b76d",
|
|
11
|
+
"agendaViewEventBody": "m_f9e2e6af",
|
|
12
|
+
"agendaViewEventColor": "m_428823f6",
|
|
13
|
+
"agendaViewEventTime": "m_f9eaffda",
|
|
14
|
+
"agendaViewNoEvents": "m_7a1aec87"
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { AgendaView_module_default as default };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=AgendaView.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgendaView.module.mjs","names":[],"sources":["../../../src/components/AgendaView/AgendaView.module.css"],"sourcesContent":[".agendaView {\n --agenda-view-radius: var(--schedule-radius, var(--mantine-radius-default));\n\n display: flex;\n flex-direction: column;\n\n @mixin where-light {\n --agenda-view-border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n --agenda-view-border-color: var(--mantine-color-dark-4);\n }\n}\n\n.agendaViewHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mantine-spacing-sm);\n border-bottom: 1px solid var(--agenda-view-border-color);\n}\n\n.agendaViewHeaderLabel {\n user-select: none;\n font-weight: var(--mantine-font-weight-semibold);\n font-size: var(--mantine-font-size-sm);\n text-transform: capitalize;\n}\n\n.agendaViewBody {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.agendaViewDateGroup {\n &:where(:not(:last-child)) {\n border-bottom: 1px solid var(--agenda-view-border-color);\n }\n}\n\n.agendaViewDateHeader {\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-sm);\n font-weight: var(--mantine-font-weight-semibold);\n font-size: var(--mantine-font-size-sm);\n text-transform: capitalize;\n\n @mixin where-light {\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n }\n}\n\n.agendaViewEvent {\n display: block;\n width: 100%;\n text-align: start;\n cursor: pointer;\n\n &:where(:not(:last-child)) {\n border-bottom: 1px solid var(--agenda-view-border-color);\n }\n\n @mixin hover {\n @mixin where-light {\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n }\n }\n}\n\n.agendaViewEventBody {\n display: flex;\n gap: var(--mantine-spacing-sm);\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-sm);\n}\n\n.agendaViewEventColor {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n}\n\n.agendaViewEventTime {\n margin-top: 2px;\n font-size: var(--mantine-font-size-xs);\n color: var(--mantine-color-dimmed);\n}\n\n.agendaViewNoEvents {\n padding: var(--mantine-spacing-xl) var(--mantine-spacing-sm);\n color: var(--mantine-color-dimmed);\n text-align: center;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { validateEvent } from "../../utils/validate-event/validate-event.mjs";
|
|
3
|
+
import { isMultidayEvent } from "../../utils/is-multiday-event/is-multiday-event.mjs";
|
|
4
|
+
import dayjs from "dayjs";
|
|
5
|
+
//#region packages/@mantine/schedule/src/components/AgendaView/get-agenda-view-events.ts
|
|
6
|
+
function getEffectiveEndDate(event) {
|
|
7
|
+
const endDate = dayjs(event.end).startOf("day");
|
|
8
|
+
if (dayjs(event.end).hour() === 0 && dayjs(event.end).minute() === 0) return endDate.subtract(1, "day");
|
|
9
|
+
return endDate;
|
|
10
|
+
}
|
|
11
|
+
function groupEventByDate(event, groupedEvents, rangeStart, rangeEnd) {
|
|
12
|
+
if (isMultidayEvent(event)) {
|
|
13
|
+
const startDate = dayjs(event.start).startOf("day");
|
|
14
|
+
const endDate = getEffectiveEndDate(event);
|
|
15
|
+
for (let date = startDate; date.isBefore(endDate) || date.isSame(endDate); date = date.add(1, "day")) {
|
|
16
|
+
if (date.isBefore(rangeStart) || date.isAfter(rangeEnd)) continue;
|
|
17
|
+
const dateKey = date.format("YYYY-MM-DD");
|
|
18
|
+
if (!groupedEvents[dateKey]) groupedEvents[dateKey] = [];
|
|
19
|
+
groupedEvents[dateKey].push(event);
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const eventDate = dayjs(event.start).format("YYYY-MM-DD");
|
|
24
|
+
if (!groupedEvents[eventDate]) groupedEvents[eventDate] = [];
|
|
25
|
+
groupedEvents[eventDate].push(event);
|
|
26
|
+
}
|
|
27
|
+
function getAgendaViewEvents({ rangeStart, rangeEnd, events }) {
|
|
28
|
+
const groupedEvents = {};
|
|
29
|
+
if (events === void 0) return groupedEvents;
|
|
30
|
+
const start = dayjs(rangeStart).startOf("day");
|
|
31
|
+
const end = dayjs(rangeEnd).startOf("day");
|
|
32
|
+
const ids = /* @__PURE__ */ new Set();
|
|
33
|
+
for (const event of events) {
|
|
34
|
+
if (event.display === "background") continue;
|
|
35
|
+
const eventStart = dayjs(event.start).startOf("day");
|
|
36
|
+
if (dayjs(event.end).startOf("day").isBefore(start) || eventStart.isAfter(end)) continue;
|
|
37
|
+
if (!ids.has(event.id)) ids.add(event.id);
|
|
38
|
+
else throw new Error(`[@mantine/schedule] AgendaView: Duplicated event ids found: ${event.id}`);
|
|
39
|
+
groupEventByDate(validateEvent(event), groupedEvents, start, end);
|
|
40
|
+
}
|
|
41
|
+
return groupedEvents;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { getAgendaViewEvents };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=get-agenda-view-events.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-agenda-view-events.mjs","names":[],"sources":["../../../src/components/AgendaView/get-agenda-view-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, ScheduleEventData } from '../../types';\nimport { isMultidayEvent, validateEvent } from '../../utils';\n\nfunction getEffectiveEndDate(event: ScheduleEventData) {\n const endDate = dayjs(event.end).startOf('day');\n if (dayjs(event.end).hour() === 0 && dayjs(event.end).minute() === 0) {\n return endDate.subtract(1, 'day');\n }\n return endDate;\n}\n\nexport type AgendaGroupedEvents = Record<DateStringValue, ScheduleEventData[]>;\n\nfunction groupEventByDate(\n event: ScheduleEventData,\n groupedEvents: AgendaGroupedEvents,\n rangeStart: dayjs.Dayjs,\n rangeEnd: dayjs.Dayjs\n) {\n if (isMultidayEvent(event)) {\n const startDate = dayjs(event.start).startOf('day');\n const endDate = getEffectiveEndDate(event);\n\n for (\n let date = startDate;\n date.isBefore(endDate) || date.isSame(endDate);\n date = date.add(1, 'day')\n ) {\n if (date.isBefore(rangeStart) || date.isAfter(rangeEnd)) {\n continue;\n }\n const dateKey = date.format('YYYY-MM-DD');\n if (!groupedEvents[dateKey]) {\n groupedEvents[dateKey] = [];\n }\n groupedEvents[dateKey].push(event);\n }\n\n return;\n }\n\n const eventDate = dayjs(event.start).format('YYYY-MM-DD');\n if (!groupedEvents[eventDate]) {\n groupedEvents[eventDate] = [];\n }\n groupedEvents[eventDate].push(event);\n}\n\ninterface GetAgendaViewEventsInput {\n rangeStart: AnyDateValue;\n rangeEnd: AnyDateValue;\n events: ScheduleEventData[] | undefined;\n}\n\nexport function getAgendaViewEvents({ rangeStart, rangeEnd, events }: GetAgendaViewEventsInput) {\n const groupedEvents: AgendaGroupedEvents = {};\n\n if (events === undefined) {\n return groupedEvents;\n }\n\n const start = dayjs(rangeStart).startOf('day');\n const end = dayjs(rangeEnd).startOf('day');\n const ids = new Set<string | number>();\n\n for (const event of events) {\n if (event.display === 'background') {\n continue;\n }\n\n const eventStart = dayjs(event.start).startOf('day');\n const eventEnd = dayjs(event.end).startOf('day');\n\n if (eventEnd.isBefore(start) || eventStart.isAfter(end)) {\n continue;\n }\n\n if (!ids.has(event.id)) {\n ids.add(event.id);\n } else {\n throw new Error(`[@mantine/schedule] AgendaView: Duplicated event ids found: ${event.id}`);\n }\n\n groupEventByDate(validateEvent(event), groupedEvents, start, end);\n }\n\n return groupedEvents;\n}\n"],"mappings":";;;;;AAIA,SAAS,oBAAoB,OAA0B;CACrD,MAAM,UAAU,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK;CAC9C,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,MAAM,GACjE,OAAO,QAAQ,SAAS,GAAG,KAAK;CAElC,OAAO;AACT;AAIA,SAAS,iBACP,OACA,eACA,YACA,UACA;CACA,IAAI,gBAAgB,KAAK,GAAG;EAC1B,MAAM,YAAY,MAAM,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;EAClD,MAAM,UAAU,oBAAoB,KAAK;EAEzC,KACE,IAAI,OAAO,WACX,KAAK,SAAS,OAAO,KAAK,KAAK,OAAO,OAAO,GAC7C,OAAO,KAAK,IAAI,GAAG,KAAK,GACxB;GACA,IAAI,KAAK,SAAS,UAAU,KAAK,KAAK,QAAQ,QAAQ,GACpD;GAEF,MAAM,UAAU,KAAK,OAAO,YAAY;GACxC,IAAI,CAAC,cAAc,UACjB,cAAc,WAAW,CAAC;GAE5B,cAAc,QAAQ,CAAC,KAAK,KAAK;EACnC;EAEA;CACF;CAEA,MAAM,YAAY,MAAM,MAAM,KAAK,CAAC,CAAC,OAAO,YAAY;CACxD,IAAI,CAAC,cAAc,YACjB,cAAc,aAAa,CAAC;CAE9B,cAAc,UAAU,CAAC,KAAK,KAAK;AACrC;AAQA,SAAgB,oBAAoB,EAAE,YAAY,UAAU,UAAoC;CAC9F,MAAM,gBAAqC,CAAC;CAE5C,IAAI,WAAW,KAAA,GACb,OAAO;CAGT,MAAM,QAAQ,MAAM,UAAU,CAAC,CAAC,QAAQ,KAAK;CAC7C,MAAM,MAAM,MAAM,QAAQ,CAAC,CAAC,QAAQ,KAAK;CACzC,MAAM,sBAAM,IAAI,IAAqB;CAErC,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,MAAM,YAAY,cACpB;EAGF,MAAM,aAAa,MAAM,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;EAGnD,IAFiB,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAE/B,CAAC,CAAC,SAAS,KAAK,KAAK,WAAW,QAAQ,GAAG,GACpD;EAGF,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,GACnB,IAAI,IAAI,MAAM,EAAE;OAEhB,MAAM,IAAI,MAAM,+DAA+D,MAAM,IAAI;EAG3F,iBAAiB,cAAc,KAAK,GAAG,eAAe,OAAO,GAAG;CAClE;CAEA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurrentTimeIndicator.mjs","names":["classes"],"sources":["../../../src/components/CurrentTimeIndicator/CurrentTimeIndicator.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useState } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useInterval } from '@mantine/hooks';\nimport { AnyDateValue, DateLabelFormat } from '../../types';\nimport { formatDate, getCurrentTimePosition, isInTimeRange } from '../../utils';\nimport classes from './CurrentTimeIndicator.module.css';\n\nexport type CurrentTimeIndicatorStylesNames =\n | 'currentTimeIndicator'\n | 'currentTimeIndicatorLine'\n | 'currentTimeIndicatorThumb'\n | 'currentTimeIndicatorTimeBubble';\n\nexport type CurrentTimeIndicatorCssVariables = {\n currentTimeIndicator: '--indicator-color';\n};\n\nexport interface CurrentTimeIndicatorProps\n extends BoxProps, StylesApiProps<CurrentTimeIndicatorFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Key of `theme.colors` or any valid CSS color value @default 'red' */\n color?: MantineColor;\n\n /** Offset from the left side */\n startOffset?: string;\n\n /** Offset from the right side */\n endOffset?: string;\n\n /** Extra configurable offset from the top */\n topOffset?: string;\n\n /** Offset for the time bubble */\n timeBubbleStartOffset?: string;\n\n /** If set, displays a bubble with the current time @default @true */\n withTimeBubble?: boolean;\n\n /** If set, displays thumb next to the line @default true */\n withThumb?: boolean;\n\n /** Format of the time displayed in the time bubble @default 'HH:mm' */\n currentTimeFormat?: DateLabelFormat;\n\n /** Locale passed down to dayjs during formatting */\n locale?: string;\n\n /** Start time of the day */\n startTime?: string;\n\n /** End time of the day */\n endTime?: string;\n\n /** Number of minutes per time slot. Used to align the indicator to whole slots when `endTime` does not divide evenly. */\n intervalMinutes?: number;\n\n /** A function to get the current time, called on every tick. Can be used to display the indicator in a different timezone. @default () => dayjs() */\n getCurrentTime?: () => AnyDateValue;\n}\n\nexport type CurrentTimeIndicatorFactory = Factory<{\n props: CurrentTimeIndicatorProps;\n ref: HTMLDivElement;\n stylesNames: CurrentTimeIndicatorStylesNames;\n vars: CurrentTimeIndicatorCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'CurrentTimeIndicator',\n withTimeBubble: true,\n withThumb: true,\n currentTimeFormat: 'HH:mm',\n topOffset: '0rem',\n} satisfies Partial<CurrentTimeIndicatorProps>;\n\nconst varsResolver = createVarsResolver<CurrentTimeIndicatorFactory>((theme, { color }) => ({\n currentTimeIndicator: {\n '--indicator-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const CurrentTimeIndicator = factory<CurrentTimeIndicatorFactory>((_props) => {\n const props = useProps('CurrentTimeIndicator', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n startOffset,\n endOffset,\n color,\n withTimeBubble,\n withThumb,\n currentTimeFormat,\n locale,\n timeBubbleStartOffset,\n __staticSelector,\n topOffset,\n startTime,\n endTime,\n intervalMinutes,\n getCurrentTime,\n ...others\n } = props;\n\n const getStyles = useStyles<CurrentTimeIndicatorFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n rootSelector: 'currentTimeIndicator',\n });\n\n const ctx = useDatesContext();\n const [, setTick] = useState(0);\n useInterval(() => setTick((tick) => tick + 1), 1000 * 60, {\n autoInvoke: true,\n });\n\n const now = getCurrentTime ? dayjs(getCurrentTime()) : dayjs();\n const offsetPercent = getCurrentTimePosition({ startTime, endTime, intervalMinutes, now });\n const formattedTime = withTimeBubble\n ? formatDate({ locale: ctx.getLocale(locale), date: now, format: currentTimeFormat })\n : '';\n\n if (!isInTimeRange({ date: now, startTime, endTime })) {\n return null;\n }\n\n return (\n <Box\n {...getStyles('currentTimeIndicator')}\n __vars={{\n '--top-offset': `calc(${offsetPercent}% + ${topOffset})`,\n '--start-offset': startOffset,\n '--end-offset': endOffset,\n '--time-bubble-start-offset': timeBubbleStartOffset,\n\n // Adjust time bubble width for formats including AM/PM\n '--time-bubble-width': formattedTime?.toString().toLowerCase().includes('m')\n ? '64px'\n : '46px',\n }}\n {...others}\n >\n {withTimeBubble && (\n <div {...getStyles('currentTimeIndicatorTimeBubble')}>{formattedTime}</div>\n )}\n\n {withThumb && <div {...getStyles('currentTimeIndicatorThumb')} />}\n\n <div {...getStyles('currentTimeIndicatorLine')} />\n </Box>\n );\n});\n\nCurrentTimeIndicator.displayName = '@mantine/schedule/CurrentTimeIndicator';\nCurrentTimeIndicator.classes = classes;\nCurrentTimeIndicator.varsResolver = varsResolver;\n"],"mappings":";;;;;;;;;;;;AAkFA,MAAM,eAAe;CACnB,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,mBAAmB;CACnB,WAAW;AACb;AAEA,MAAM,eAAe,oBAAiD,OAAO,EAAE,aAAa,EAC1F,sBAAsB,EACpB,qBAAqB,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA,EAC7D,EACF,EAAE;AAEF,MAAa,uBAAuB,SAAsC,WAAW;CACnF,MAAM,QAAQ,SAAS,wBAAwB,cAAc,MAAM;CACnE,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,aACA,WACA,OACA,gBACA,WACA,mBACA,QACA,uBACA,kBACA,WACA,WACA,SACA,iBACA,gBACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAuC;EACvD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,MAAM,gBAAgB;CAC5B,MAAM,GAAG,WAAW,SAAS,CAAC;CAC9B,kBAAkB,SAAS,SAAS,OAAO,CAAC,GAAG,MAAO,IAAI,EACxD,YAAY,KACd,CAAC;CAED,MAAM,MAAM,iBAAiB,MAAM,eAAe,CAAC,IAAI,MAAM;CAC7D,MAAM,gBAAgB,uBAAuB;EAAE;EAAW;EAAS;EAAiB;CAAI,CAAC;CACzF,MAAM,gBAAgB,iBAClB,WAAW;EAAE,QAAQ,IAAI,UAAU,MAAM;EAAG,MAAM;EAAK,QAAQ;CAAkB,CAAC,IAClF;CAEJ,IAAI,CAAC,cAAc;EAAE,MAAM;EAAK;EAAW;CAAQ,CAAC,GAClD,OAAO;CAGT,OACE,qBAAC,KAAD;EACE,GAAI,UAAU,sBAAsB;EACpC,QAAQ;GACN,gBAAgB,QAAQ,cAAc,MAAM,UAAU;GACtD,kBAAkB;GAClB,gBAAgB;GAChB,8BAA8B;GAG9B,uBAAuB,eAAe,SAAS,
|
|
1
|
+
{"version":3,"file":"CurrentTimeIndicator.mjs","names":["classes"],"sources":["../../../src/components/CurrentTimeIndicator/CurrentTimeIndicator.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useState } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useInterval } from '@mantine/hooks';\nimport { AnyDateValue, DateLabelFormat } from '../../types';\nimport { formatDate, getCurrentTimePosition, isInTimeRange } from '../../utils';\nimport classes from './CurrentTimeIndicator.module.css';\n\nexport type CurrentTimeIndicatorStylesNames =\n | 'currentTimeIndicator'\n | 'currentTimeIndicatorLine'\n | 'currentTimeIndicatorThumb'\n | 'currentTimeIndicatorTimeBubble';\n\nexport type CurrentTimeIndicatorCssVariables = {\n currentTimeIndicator: '--indicator-color';\n};\n\nexport interface CurrentTimeIndicatorProps\n extends BoxProps, StylesApiProps<CurrentTimeIndicatorFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Key of `theme.colors` or any valid CSS color value @default 'red' */\n color?: MantineColor;\n\n /** Offset from the left side */\n startOffset?: string;\n\n /** Offset from the right side */\n endOffset?: string;\n\n /** Extra configurable offset from the top */\n topOffset?: string;\n\n /** Offset for the time bubble */\n timeBubbleStartOffset?: string;\n\n /** If set, displays a bubble with the current time @default @true */\n withTimeBubble?: boolean;\n\n /** If set, displays thumb next to the line @default true */\n withThumb?: boolean;\n\n /** Format of the time displayed in the time bubble @default 'HH:mm' */\n currentTimeFormat?: DateLabelFormat;\n\n /** Locale passed down to dayjs during formatting */\n locale?: string;\n\n /** Start time of the day */\n startTime?: string;\n\n /** End time of the day */\n endTime?: string;\n\n /** Number of minutes per time slot. Used to align the indicator to whole slots when `endTime` does not divide evenly. */\n intervalMinutes?: number;\n\n /** A function to get the current time, called on every tick. Can be used to display the indicator in a different timezone. @default () => dayjs() */\n getCurrentTime?: () => AnyDateValue;\n}\n\nexport type CurrentTimeIndicatorFactory = Factory<{\n props: CurrentTimeIndicatorProps;\n ref: HTMLDivElement;\n stylesNames: CurrentTimeIndicatorStylesNames;\n vars: CurrentTimeIndicatorCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'CurrentTimeIndicator',\n withTimeBubble: true,\n withThumb: true,\n currentTimeFormat: 'HH:mm',\n topOffset: '0rem',\n} satisfies Partial<CurrentTimeIndicatorProps>;\n\nconst varsResolver = createVarsResolver<CurrentTimeIndicatorFactory>((theme, { color }) => ({\n currentTimeIndicator: {\n '--indicator-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const CurrentTimeIndicator = factory<CurrentTimeIndicatorFactory>((_props) => {\n const props = useProps('CurrentTimeIndicator', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n startOffset,\n endOffset,\n color,\n withTimeBubble,\n withThumb,\n currentTimeFormat,\n locale,\n timeBubbleStartOffset,\n __staticSelector,\n topOffset,\n startTime,\n endTime,\n intervalMinutes,\n getCurrentTime,\n ...others\n } = props;\n\n const getStyles = useStyles<CurrentTimeIndicatorFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n rootSelector: 'currentTimeIndicator',\n });\n\n const ctx = useDatesContext();\n const [, setTick] = useState(0);\n useInterval(() => setTick((tick) => tick + 1), 1000 * 60, {\n autoInvoke: true,\n });\n\n const now = getCurrentTime ? dayjs(getCurrentTime()) : dayjs();\n const offsetPercent = getCurrentTimePosition({ startTime, endTime, intervalMinutes, now });\n const formattedTime = withTimeBubble\n ? formatDate({ locale: ctx.getLocale(locale), date: now, format: currentTimeFormat })\n : '';\n\n if (!isInTimeRange({ date: now, startTime, endTime })) {\n return null;\n }\n\n return (\n <Box\n {...getStyles('currentTimeIndicator')}\n __vars={{\n '--top-offset': `calc(${offsetPercent}% + ${topOffset})`,\n '--start-offset': startOffset,\n '--end-offset': endOffset,\n '--time-bubble-start-offset': timeBubbleStartOffset,\n\n // Adjust time bubble width for formats including AM/PM\n '--time-bubble-width': formattedTime?.toString().toLowerCase().includes('m')\n ? '64px'\n : '46px',\n }}\n {...others}\n >\n {withTimeBubble && (\n <div {...getStyles('currentTimeIndicatorTimeBubble')}>{formattedTime}</div>\n )}\n\n {withThumb && <div {...getStyles('currentTimeIndicatorThumb')} />}\n\n <div {...getStyles('currentTimeIndicatorLine')} />\n </Box>\n );\n});\n\nCurrentTimeIndicator.displayName = '@mantine/schedule/CurrentTimeIndicator';\nCurrentTimeIndicator.classes = classes;\nCurrentTimeIndicator.varsResolver = varsResolver;\n"],"mappings":";;;;;;;;;;;;AAkFA,MAAM,eAAe;CACnB,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,mBAAmB;CACnB,WAAW;AACb;AAEA,MAAM,eAAe,oBAAiD,OAAO,EAAE,aAAa,EAC1F,sBAAsB,EACpB,qBAAqB,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA,EAC7D,EACF,EAAE;AAEF,MAAa,uBAAuB,SAAsC,WAAW;CACnF,MAAM,QAAQ,SAAS,wBAAwB,cAAc,MAAM;CACnE,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,aACA,WACA,OACA,gBACA,WACA,mBACA,QACA,uBACA,kBACA,WACA,WACA,SACA,iBACA,gBACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAuC;EACvD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,MAAM,gBAAgB;CAC5B,MAAM,GAAG,WAAW,SAAS,CAAC;CAC9B,kBAAkB,SAAS,SAAS,OAAO,CAAC,GAAG,MAAO,IAAI,EACxD,YAAY,KACd,CAAC;CAED,MAAM,MAAM,iBAAiB,MAAM,eAAe,CAAC,IAAI,MAAM;CAC7D,MAAM,gBAAgB,uBAAuB;EAAE;EAAW;EAAS;EAAiB;CAAI,CAAC;CACzF,MAAM,gBAAgB,iBAClB,WAAW;EAAE,QAAQ,IAAI,UAAU,MAAM;EAAG,MAAM;EAAK,QAAQ;CAAkB,CAAC,IAClF;CAEJ,IAAI,CAAC,cAAc;EAAE,MAAM;EAAK;EAAW;CAAQ,CAAC,GAClD,OAAO;CAGT,OACE,qBAAC,KAAD;EACE,GAAI,UAAU,sBAAsB;EACpC,QAAQ;GACN,gBAAgB,QAAQ,cAAc,MAAM,UAAU;GACtD,kBAAkB;GAClB,gBAAgB;GAChB,8BAA8B;GAG9B,uBAAuB,eAAe,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,GAAG,IACvE,SACA;EACN;EACA,GAAI;YAbN;GAeG,kBACC,oBAAC,OAAD;IAAK,GAAI,UAAU,gCAAgC;cAAI;GAAmB,CAAA;GAG3E,aAAa,oBAAC,OAAD,EAAK,GAAI,UAAU,2BAA2B,EAAI,CAAA;GAEhE,oBAAC,OAAD,EAAK,GAAI,UAAU,0BAA0B,EAAI,CAAA;EAC9C;;AAET,CAAC;AAED,qBAAqB,cAAc;AACnC,qBAAqB,UAAUA;AAC/B,qBAAqB,eAAe"}
|