@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.
Files changed (468) hide show
  1. package/cjs/_virtual/_rolldown/runtime.cjs +24 -0
  2. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs +79 -101
  3. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
  4. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.cjs +12 -0
  5. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.cjs.map +1 -0
  6. package/cjs/components/DayView/DayView.cjs +462 -480
  7. package/cjs/components/DayView/DayView.cjs.map +1 -1
  8. package/cjs/components/DayView/DayView.module.cjs +20 -0
  9. package/cjs/components/DayView/DayView.module.cjs.map +1 -0
  10. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs +89 -105
  11. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -1
  12. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs +106 -49
  13. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
  14. package/cjs/components/DragContext/DragContext.cjs +7 -8
  15. package/cjs/components/DragContext/DragContext.cjs.map +1 -1
  16. package/cjs/components/MobileMonthView/MobileMonthView.cjs +261 -289
  17. package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
  18. package/cjs/components/MobileMonthView/MobileMonthView.module.cjs +27 -0
  19. package/cjs/components/MobileMonthView/MobileMonthView.module.cjs.map +1 -0
  20. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs +35 -49
  21. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
  22. package/cjs/components/MonthView/MonthView.cjs +365 -416
  23. package/cjs/components/MonthView/MonthView.cjs.map +1 -1
  24. package/cjs/components/MonthView/MonthView.module.cjs +18 -0
  25. package/cjs/components/MonthView/MonthView.module.cjs.map +1 -0
  26. package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs +15 -24
  27. package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs.map +1 -1
  28. package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs +23 -35
  29. package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs.map +1 -1
  30. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs +16 -29
  31. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -1
  32. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs +87 -81
  33. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -1
  34. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs +36 -44
  35. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -1
  36. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs +30 -38
  37. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
  38. package/cjs/components/MonthView/handle-month-view-key-down.cjs +94 -139
  39. package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -1
  40. package/cjs/components/MoreEvents/MoreEvents.cjs +87 -121
  41. package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
  42. package/cjs/components/MoreEvents/MoreEvents.module.cjs +11 -0
  43. package/cjs/components/MoreEvents/MoreEvents.module.cjs.map +1 -0
  44. package/cjs/components/Schedule/Schedule.cjs +147 -165
  45. package/cjs/components/Schedule/Schedule.cjs.map +1 -1
  46. package/cjs/components/Schedule/Schedule.module.cjs +11 -0
  47. package/cjs/components/Schedule/Schedule.module.cjs.map +1 -0
  48. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +116 -130
  49. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
  50. package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs +11 -0
  51. package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs.map +1 -0
  52. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs +62 -73
  53. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
  54. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.cjs +7 -0
  55. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.cjs.map +1 -0
  56. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs +152 -189
  57. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
  58. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.cjs +13 -0
  59. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.cjs.map +1 -0
  60. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs +41 -55
  61. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
  62. package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs +13 -0
  63. package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs.map +1 -0
  64. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +83 -84
  65. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
  66. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs +105 -126
  67. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
  68. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.cjs +7 -0
  69. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.cjs.map +1 -0
  70. package/cjs/components/WeekView/WeekView.cjs +617 -632
  71. package/cjs/components/WeekView/WeekView.cjs.map +1 -1
  72. package/cjs/components/WeekView/WeekView.module.cjs +29 -0
  73. package/cjs/components/WeekView/WeekView.module.cjs.map +1 -0
  74. package/cjs/components/WeekView/WeekViewDay.cjs +71 -106
  75. package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
  76. package/cjs/components/WeekView/get-week-label/get-week-label.cjs +27 -34
  77. package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
  78. package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs +21 -28
  79. package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs.map +1 -1
  80. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs +13 -29
  81. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -1
  82. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs +14 -31
  83. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -1
  84. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs +13 -16
  85. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
  86. package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs +14 -21
  87. package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs.map +1 -1
  88. package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs +26 -34
  89. package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs.map +1 -1
  90. package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs +26 -38
  91. package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs.map +1 -1
  92. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs +11 -16
  93. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -1
  94. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs +17 -30
  95. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -1
  96. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs +200 -140
  97. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
  98. package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs +11 -9
  99. package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs.map +1 -1
  100. package/cjs/components/WeekView/handle-week-view-key-down.cjs +82 -127
  101. package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -1
  102. package/cjs/components/YearView/YearView.cjs +160 -210
  103. package/cjs/components/YearView/YearView.cjs.map +1 -1
  104. package/cjs/components/YearView/YearView.module.cjs +20 -0
  105. package/cjs/components/YearView/YearView.module.cjs.map +1 -0
  106. package/cjs/components/YearView/YearViewMonth.cjs +135 -156
  107. package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
  108. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs +32 -47
  109. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
  110. package/cjs/components/YearView/handle-year-view-key-down.cjs +143 -202
  111. package/cjs/components/YearView/handle-year-view-key-down.cjs.map +1 -1
  112. package/cjs/hooks/use-auto-scroll-on-drag.cjs +67 -70
  113. package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
  114. package/cjs/hooks/use-drag-drop-handlers.cjs +110 -126
  115. package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
  116. package/cjs/hooks/use-drag-state.cjs +38 -42
  117. package/cjs/hooks/use-drag-state.cjs.map +1 -1
  118. package/cjs/hooks/use-event-resize.cjs +134 -0
  119. package/cjs/hooks/use-event-resize.cjs.map +1 -0
  120. package/cjs/hooks/use-slot-drag-select.cjs +75 -88
  121. package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
  122. package/cjs/index.cjs +98 -101
  123. package/cjs/labels.cjs +30 -28
  124. package/cjs/labels.cjs.map +1 -1
  125. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs +23 -36
  126. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -1
  127. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs +17 -24
  128. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -1
  129. package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs +9 -8
  130. package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs.map +1 -1
  131. package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs +120 -0
  132. package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -0
  133. package/cjs/utils/format-date/format-date.cjs +10 -15
  134. package/cjs/utils/format-date/format-date.cjs.map +1 -1
  135. package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs +23 -22
  136. package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs.map +1 -1
  137. package/cjs/utils/get-current-time-position/get-current-time-position.cjs +19 -25
  138. package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
  139. package/cjs/utils/get-day-position/get-day-position.cjs +26 -35
  140. package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -1
  141. package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs +50 -45
  142. package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs.map +1 -1
  143. package/cjs/utils/get-end-of-week/get-end-of-week.cjs +13 -20
  144. package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
  145. package/cjs/utils/get-month-days/get-month-days.cjs +41 -47
  146. package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
  147. package/cjs/utils/get-month-range/get-month-range.cjs +25 -30
  148. package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -1
  149. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs +21 -21
  150. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -1
  151. package/cjs/utils/get-months-list/get-months-list.cjs +20 -18
  152. package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
  153. package/cjs/utils/get-start-of-week/get-start-of-week.cjs +11 -16
  154. package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
  155. package/cjs/utils/get-visible-events/get-visible-events.cjs +13 -15
  156. package/cjs/utils/get-visible-events/get-visible-events.cjs.map +1 -1
  157. package/cjs/utils/get-week-days/get-week-days.cjs +23 -30
  158. package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
  159. package/cjs/utils/get-week-number/get-week-number.cjs +13 -19
  160. package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
  161. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs +18 -23
  162. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
  163. package/cjs/utils/get-years-list/get-years-list.cjs +8 -10
  164. package/cjs/utils/get-years-list/get-years-list.cjs.map +1 -1
  165. package/cjs/utils/is-after-min-date/is-after-min-date.cjs +9 -12
  166. package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -1
  167. package/cjs/utils/is-all-day-event/is-all-day-event.cjs +13 -16
  168. package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -1
  169. package/cjs/utils/is-before-max-date/is-before-max-date.cjs +9 -12
  170. package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -1
  171. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs +19 -27
  172. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
  173. package/cjs/utils/is-events-overlap/is-events-overlap.cjs +13 -16
  174. package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -1
  175. package/cjs/utils/is-in-time-range/is-in-time-range.cjs +17 -23
  176. package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -1
  177. package/cjs/utils/is-multiday-event/is-multiday-event.cjs +10 -14
  178. package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
  179. package/cjs/utils/is-same-month/is-same-month.cjs +9 -12
  180. package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
  181. package/cjs/utils/is-within-week/is-within-week.cjs +15 -15
  182. package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
  183. package/cjs/utils/next-week/next-week.cjs +15 -15
  184. package/cjs/utils/next-week/next-week.cjs.map +1 -1
  185. package/cjs/utils/parse-time-string/parse-time-string.cjs +11 -7
  186. package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -1
  187. package/cjs/utils/previous-week/previous-week.cjs +15 -15
  188. package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
  189. package/cjs/utils/sort-events/sort-events.cjs +14 -18
  190. package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
  191. package/cjs/utils/to-date-string/to-date-string.cjs +9 -12
  192. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
  193. package/cjs/utils/to-time-string/to-time-string.cjs +6 -6
  194. package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -1
  195. package/cjs/utils/validate-event/validate-event.cjs +12 -23
  196. package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
  197. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs +76 -94
  198. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
  199. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.mjs +12 -0
  200. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.mjs.map +1 -0
  201. package/esm/components/DayView/DayView.mjs +459 -473
  202. package/esm/components/DayView/DayView.mjs.map +1 -1
  203. package/esm/components/DayView/DayView.module.mjs +20 -0
  204. package/esm/components/DayView/DayView.module.mjs.map +1 -0
  205. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs +89 -103
  206. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
  207. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs +104 -43
  208. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
  209. package/esm/components/DragContext/DragContext.mjs +6 -5
  210. package/esm/components/DragContext/DragContext.mjs.map +1 -1
  211. package/esm/components/MobileMonthView/MobileMonthView.mjs +257 -281
  212. package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
  213. package/esm/components/MobileMonthView/MobileMonthView.module.mjs +27 -0
  214. package/esm/components/MobileMonthView/MobileMonthView.module.mjs.map +1 -0
  215. package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs +33 -43
  216. package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -1
  217. package/esm/components/MonthView/MonthView.mjs +362 -409
  218. package/esm/components/MonthView/MonthView.mjs.map +1 -1
  219. package/esm/components/MonthView/MonthView.module.mjs +18 -0
  220. package/esm/components/MonthView/MonthView.module.mjs.map +1 -0
  221. package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs +15 -22
  222. package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs.map +1 -1
  223. package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs +23 -33
  224. package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs.map +1 -1
  225. package/esm/components/MonthView/get-month-view-events/find-available-row.mjs +14 -23
  226. package/esm/components/MonthView/get-month-view-events/find-available-row.mjs.map +1 -1
  227. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs +85 -75
  228. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -1
  229. package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs +34 -38
  230. package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs.map +1 -1
  231. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs +28 -32
  232. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs.map +1 -1
  233. package/esm/components/MonthView/handle-month-view-key-down.mjs +94 -137
  234. package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -1
  235. package/esm/components/MoreEvents/MoreEvents.mjs +85 -118
  236. package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
  237. package/esm/components/MoreEvents/MoreEvents.module.mjs +11 -0
  238. package/esm/components/MoreEvents/MoreEvents.module.mjs.map +1 -0
  239. package/esm/components/Schedule/Schedule.mjs +145 -162
  240. package/esm/components/Schedule/Schedule.mjs.map +1 -1
  241. package/esm/components/Schedule/Schedule.module.mjs +11 -0
  242. package/esm/components/Schedule/Schedule.module.mjs.map +1 -0
  243. package/esm/components/ScheduleEvent/ScheduleEvent.mjs +114 -127
  244. package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
  245. package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs +11 -0
  246. package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs.map +1 -0
  247. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs +60 -70
  248. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
  249. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.mjs +7 -0
  250. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.mjs.map +1 -0
  251. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs +150 -186
  252. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
  253. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.mjs +13 -0
  254. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.mjs.map +1 -0
  255. package/esm/components/ScheduleHeader/ScheduleHeader.mjs +33 -46
  256. package/esm/components/ScheduleHeader/ScheduleHeader.mjs.map +1 -1
  257. package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs +13 -0
  258. package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs.map +1 -0
  259. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs +82 -82
  260. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
  261. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs +103 -123
  262. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
  263. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.mjs +7 -0
  264. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.mjs.map +1 -0
  265. package/esm/components/WeekView/WeekView.mjs +614 -625
  266. package/esm/components/WeekView/WeekView.mjs.map +1 -1
  267. package/esm/components/WeekView/WeekView.module.mjs +29 -0
  268. package/esm/components/WeekView/WeekView.module.mjs.map +1 -0
  269. package/esm/components/WeekView/WeekViewDay.mjs +69 -100
  270. package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
  271. package/esm/components/WeekView/get-week-label/get-week-label.mjs +25 -28
  272. package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -1
  273. package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs +21 -26
  274. package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs.map +1 -1
  275. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs +11 -23
  276. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs.map +1 -1
  277. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs +12 -25
  278. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs.map +1 -1
  279. package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs +11 -10
  280. package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -1
  281. package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs +14 -19
  282. package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs.map +1 -1
  283. package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs +26 -32
  284. package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs.map +1 -1
  285. package/esm/components/WeekView/get-week-view-events/find-available-column.mjs +26 -36
  286. package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -1
  287. package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs +9 -10
  288. package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs.map +1 -1
  289. package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs +15 -24
  290. package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs.map +1 -1
  291. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +198 -134
  292. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
  293. package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs +11 -7
  294. package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs.map +1 -1
  295. package/esm/components/WeekView/handle-week-view-key-down.mjs +82 -125
  296. package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -1
  297. package/esm/components/YearView/YearView.mjs +157 -203
  298. package/esm/components/YearView/YearView.mjs.map +1 -1
  299. package/esm/components/YearView/YearView.module.mjs +20 -0
  300. package/esm/components/YearView/YearView.module.mjs.map +1 -0
  301. package/esm/components/YearView/YearViewMonth.mjs +133 -150
  302. package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
  303. package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs +30 -41
  304. package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs.map +1 -1
  305. package/esm/components/YearView/handle-year-view-key-down.mjs +143 -200
  306. package/esm/components/YearView/handle-year-view-key-down.mjs.map +1 -1
  307. package/esm/hooks/use-auto-scroll-on-drag.mjs +66 -68
  308. package/esm/hooks/use-auto-scroll-on-drag.mjs.map +1 -1
  309. package/esm/hooks/use-drag-drop-handlers.mjs +108 -120
  310. package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
  311. package/esm/hooks/use-drag-state.mjs +37 -40
  312. package/esm/hooks/use-drag-state.mjs.map +1 -1
  313. package/esm/hooks/use-event-resize.mjs +132 -0
  314. package/esm/hooks/use-event-resize.mjs.map +1 -0
  315. package/esm/hooks/use-slot-drag-select.mjs +74 -86
  316. package/esm/hooks/use-slot-drag-select.mjs.map +1 -1
  317. package/esm/index.mjs +49 -48
  318. package/esm/labels.mjs +30 -26
  319. package/esm/labels.mjs.map +1 -1
  320. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs +21 -30
  321. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
  322. package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs +15 -18
  323. package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs.map +1 -1
  324. package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs +9 -6
  325. package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs.map +1 -1
  326. package/esm/utils/expand-recurring-events/expand-recurring-events.mjs +118 -0
  327. package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -0
  328. package/esm/utils/format-date/format-date.mjs +8 -9
  329. package/esm/utils/format-date/format-date.mjs.map +1 -1
  330. package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs +23 -20
  331. package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs.map +1 -1
  332. package/esm/utils/get-current-time-position/get-current-time-position.mjs +17 -19
  333. package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -1
  334. package/esm/utils/get-day-position/get-day-position.mjs +24 -29
  335. package/esm/utils/get-day-position/get-day-position.mjs.map +1 -1
  336. package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs +50 -43
  337. package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs.map +1 -1
  338. package/esm/utils/get-end-of-week/get-end-of-week.mjs +11 -14
  339. package/esm/utils/get-end-of-week/get-end-of-week.mjs.map +1 -1
  340. package/esm/utils/get-month-days/get-month-days.mjs +39 -41
  341. package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
  342. package/esm/utils/get-month-range/get-month-range.mjs +23 -24
  343. package/esm/utils/get-month-range/get-month-range.mjs.map +1 -1
  344. package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs +19 -15
  345. package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs.map +1 -1
  346. package/esm/utils/get-months-list/get-months-list.mjs +18 -12
  347. package/esm/utils/get-months-list/get-months-list.mjs.map +1 -1
  348. package/esm/utils/get-start-of-week/get-start-of-week.mjs +9 -10
  349. package/esm/utils/get-start-of-week/get-start-of-week.mjs.map +1 -1
  350. package/esm/utils/get-visible-events/get-visible-events.mjs +13 -13
  351. package/esm/utils/get-visible-events/get-visible-events.mjs.map +1 -1
  352. package/esm/utils/get-week-days/get-week-days.mjs +21 -24
  353. package/esm/utils/get-week-days/get-week-days.mjs.map +1 -1
  354. package/esm/utils/get-week-number/get-week-number.mjs +9 -11
  355. package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
  356. package/esm/utils/get-weekdays-names/get-weekdays-names.mjs +16 -17
  357. package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
  358. package/esm/utils/get-years-list/get-years-list.mjs +8 -8
  359. package/esm/utils/get-years-list/get-years-list.mjs.map +1 -1
  360. package/esm/utils/is-after-min-date/is-after-min-date.mjs +7 -6
  361. package/esm/utils/is-after-min-date/is-after-min-date.mjs.map +1 -1
  362. package/esm/utils/is-all-day-event/is-all-day-event.mjs +11 -10
  363. package/esm/utils/is-all-day-event/is-all-day-event.mjs.map +1 -1
  364. package/esm/utils/is-before-max-date/is-before-max-date.mjs +7 -6
  365. package/esm/utils/is-before-max-date/is-before-max-date.mjs.map +1 -1
  366. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs +17 -21
  367. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
  368. package/esm/utils/is-events-overlap/is-events-overlap.mjs +11 -10
  369. package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -1
  370. package/esm/utils/is-in-time-range/is-in-time-range.mjs +15 -17
  371. package/esm/utils/is-in-time-range/is-in-time-range.mjs.map +1 -1
  372. package/esm/utils/is-multiday-event/is-multiday-event.mjs +8 -8
  373. package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -1
  374. package/esm/utils/is-same-month/is-same-month.mjs +7 -6
  375. package/esm/utils/is-same-month/is-same-month.mjs.map +1 -1
  376. package/esm/utils/is-within-week/is-within-week.mjs +13 -9
  377. package/esm/utils/is-within-week/is-within-week.mjs.map +1 -1
  378. package/esm/utils/next-week/next-week.mjs +13 -9
  379. package/esm/utils/next-week/next-week.mjs.map +1 -1
  380. package/esm/utils/parse-time-string/parse-time-string.mjs +11 -5
  381. package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -1
  382. package/esm/utils/previous-week/previous-week.mjs +13 -9
  383. package/esm/utils/previous-week/previous-week.mjs.map +1 -1
  384. package/esm/utils/sort-events/sort-events.mjs +12 -12
  385. package/esm/utils/sort-events/sort-events.mjs.map +1 -1
  386. package/esm/utils/to-date-string/to-date-string.mjs +7 -6
  387. package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
  388. package/esm/utils/to-time-string/to-time-string.mjs +6 -4
  389. package/esm/utils/to-time-string/to-time-string.mjs.map +1 -1
  390. package/esm/utils/validate-event/validate-event.mjs +10 -17
  391. package/esm/utils/validate-event/validate-event.mjs.map +1 -1
  392. package/lib/components/DayView/DayView.d.ts +10 -2
  393. package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +1 -1
  394. package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +4 -2
  395. package/lib/components/MobileMonthView/MobileMonthView.d.ts +2 -2
  396. package/lib/components/MonthView/MonthView.d.ts +7 -3
  397. package/lib/components/MonthView/get-month-view-events/get-month-positioned-events.d.ts +4 -0
  398. package/lib/components/Schedule/Schedule.d.ts +10 -2
  399. package/lib/components/ScheduleEvent/ScheduleEvent.d.ts +7 -1
  400. package/lib/components/WeekView/WeekView.d.ts +10 -2
  401. package/lib/components/WeekView/WeekViewDay.d.ts +3 -1
  402. package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +1 -0
  403. package/lib/components/YearView/YearView.d.ts +3 -1
  404. package/lib/hooks/use-drag-drop-handlers.d.ts +1 -1
  405. package/lib/hooks/use-event-resize.d.ts +22 -0
  406. package/lib/labels.d.ts +1 -0
  407. package/lib/test-utils.d.ts +1 -1
  408. package/lib/types.d.ts +58 -8
  409. package/lib/utils/expand-recurring-events/expand-recurring-events.d.ts +10 -0
  410. package/lib/utils/index.d.ts +1 -0
  411. package/lib/utils/validate-event/validate-event.d.ts +1 -1
  412. package/package.json +9 -6
  413. package/styles.css +185 -79
  414. package/styles.layer.css +185 -79
  415. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.cjs +0 -7
  416. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.cjs.map +0 -1
  417. package/cjs/components/DayView/DayView.module.css.cjs +0 -7
  418. package/cjs/components/DayView/DayView.module.css.cjs.map +0 -1
  419. package/cjs/components/MobileMonthView/MobileMonthView.module.css.cjs +0 -7
  420. package/cjs/components/MobileMonthView/MobileMonthView.module.css.cjs.map +0 -1
  421. package/cjs/components/MonthView/MonthView.module.css.cjs +0 -7
  422. package/cjs/components/MonthView/MonthView.module.css.cjs.map +0 -1
  423. package/cjs/components/MoreEvents/MoreEvents.module.css.cjs +0 -7
  424. package/cjs/components/MoreEvents/MoreEvents.module.css.cjs.map +0 -1
  425. package/cjs/components/Schedule/Schedule.module.css.cjs +0 -7
  426. package/cjs/components/Schedule/Schedule.module.css.cjs.map +0 -1
  427. package/cjs/components/ScheduleEvent/ScheduleEvent.module.css.cjs +0 -7
  428. package/cjs/components/ScheduleEvent/ScheduleEvent.module.css.cjs.map +0 -1
  429. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.cjs +0 -7
  430. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.cjs.map +0 -1
  431. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.cjs +0 -7
  432. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.cjs.map +0 -1
  433. package/cjs/components/ScheduleHeader/ScheduleHeader.module.css.cjs +0 -7
  434. package/cjs/components/ScheduleHeader/ScheduleHeader.module.css.cjs.map +0 -1
  435. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.cjs +0 -7
  436. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.cjs.map +0 -1
  437. package/cjs/components/WeekView/WeekView.module.css.cjs +0 -7
  438. package/cjs/components/WeekView/WeekView.module.css.cjs.map +0 -1
  439. package/cjs/components/YearView/YearView.module.css.cjs +0 -7
  440. package/cjs/components/YearView/YearView.module.css.cjs.map +0 -1
  441. package/cjs/index.cjs.map +0 -1
  442. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.mjs +0 -5
  443. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.mjs.map +0 -1
  444. package/esm/components/DayView/DayView.module.css.mjs +0 -5
  445. package/esm/components/DayView/DayView.module.css.mjs.map +0 -1
  446. package/esm/components/MobileMonthView/MobileMonthView.module.css.mjs +0 -5
  447. package/esm/components/MobileMonthView/MobileMonthView.module.css.mjs.map +0 -1
  448. package/esm/components/MonthView/MonthView.module.css.mjs +0 -5
  449. package/esm/components/MonthView/MonthView.module.css.mjs.map +0 -1
  450. package/esm/components/MoreEvents/MoreEvents.module.css.mjs +0 -5
  451. package/esm/components/MoreEvents/MoreEvents.module.css.mjs.map +0 -1
  452. package/esm/components/Schedule/Schedule.module.css.mjs +0 -5
  453. package/esm/components/Schedule/Schedule.module.css.mjs.map +0 -1
  454. package/esm/components/ScheduleEvent/ScheduleEvent.module.css.mjs +0 -5
  455. package/esm/components/ScheduleEvent/ScheduleEvent.module.css.mjs.map +0 -1
  456. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.mjs +0 -5
  457. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.mjs.map +0 -1
  458. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.mjs +0 -5
  459. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.mjs.map +0 -1
  460. package/esm/components/ScheduleHeader/ScheduleHeader.module.css.mjs +0 -5
  461. package/esm/components/ScheduleHeader/ScheduleHeader.module.css.mjs.map +0 -1
  462. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.mjs +0 -5
  463. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.mjs.map +0 -1
  464. package/esm/components/WeekView/WeekView.module.css.mjs +0 -5
  465. package/esm/components/WeekView/WeekView.module.css.mjs.map +0 -1
  466. package/esm/components/YearView/YearView.module.css.mjs +0 -5
  467. package/esm/components/YearView/YearView.module.css.mjs.map +0 -1
  468. package/esm/index.mjs.map +0 -1
@@ -1,89 +1,77 @@
1
- 'use client';
2
- import { useState, useRef, useCallback, useEffect } from 'react';
3
-
1
+ "use client";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ //#region packages/@mantine/schedule/src/hooks/use-slot-drag-select.ts
4
4
  function useSlotDragSelect({ enabled = true, onDragEnd }) {
5
- const [selectedRange, setSelectedRange] = useState(null);
6
- const dragRef = useRef(null);
7
- const onDragEndRef = useRef(onDragEnd);
8
- onDragEndRef.current = onDragEnd;
9
- const handleSlotPointerDown = useCallback(
10
- (_event, index, group) => {
11
- if (!enabled) {
12
- return;
13
- }
14
- dragRef.current = { group, startIndex: index, currentIndex: index };
15
- setSelectedRange({ group, start: index, end: index });
16
- },
17
- [enabled]
18
- );
19
- const isDragging = selectedRange !== null;
20
- useEffect(() => {
21
- if (!isDragging) {
22
- return void 0;
23
- }
24
- const savedUserSelect = document.body.style.userSelect;
25
- document.body.style.userSelect = "none";
26
- const handlePointerMove = (e) => {
27
- if (!dragRef.current) {
28
- return;
29
- }
30
- const elements = document.elementsFromPoint(e.clientX, e.clientY);
31
- for (const el of elements) {
32
- const indexAttr = el.getAttribute?.("data-drag-slot-index");
33
- const groupAttr = el.getAttribute?.("data-drag-slot-group");
34
- if (indexAttr != null && groupAttr != null) {
35
- if (groupAttr === dragRef.current.group) {
36
- const newIndex = Number(indexAttr);
37
- if (!isNaN(newIndex) && newIndex !== dragRef.current.currentIndex) {
38
- dragRef.current.currentIndex = newIndex;
39
- setSelectedRange({
40
- group: groupAttr,
41
- start: Math.min(dragRef.current.startIndex, newIndex),
42
- end: Math.max(dragRef.current.startIndex, newIndex)
43
- });
44
- }
45
- }
46
- break;
47
- }
48
- }
49
- };
50
- const handlePointerUp = () => {
51
- if (dragRef.current) {
52
- const { startIndex, currentIndex, group } = dragRef.current;
53
- if (startIndex !== currentIndex) {
54
- onDragEndRef.current?.(
55
- Math.min(startIndex, currentIndex),
56
- Math.max(startIndex, currentIndex),
57
- group
58
- );
59
- }
60
- }
61
- dragRef.current = null;
62
- setSelectedRange(null);
63
- };
64
- document.addEventListener("pointermove", handlePointerMove);
65
- document.addEventListener("pointerup", handlePointerUp);
66
- return () => {
67
- document.body.style.userSelect = savedUserSelect;
68
- document.removeEventListener("pointermove", handlePointerMove);
69
- document.removeEventListener("pointerup", handlePointerUp);
70
- };
71
- }, [isDragging]);
72
- const isSlotSelected = useCallback(
73
- (index, group) => {
74
- if (!selectedRange || selectedRange.group !== group) {
75
- return false;
76
- }
77
- return index >= selectedRange.start && index <= selectedRange.end;
78
- },
79
- [selectedRange]
80
- );
81
- return {
82
- handleSlotPointerDown,
83
- isSlotSelected,
84
- isDragging
85
- };
5
+ const [selectedRange, setSelectedRange] = useState(null);
6
+ const dragRef = useRef(null);
7
+ const onDragEndRef = useRef(onDragEnd);
8
+ onDragEndRef.current = onDragEnd;
9
+ const handleSlotPointerDown = useCallback((_event, index, group) => {
10
+ if (!enabled) return;
11
+ dragRef.current = {
12
+ group,
13
+ startIndex: index,
14
+ currentIndex: index
15
+ };
16
+ setSelectedRange({
17
+ group,
18
+ start: index,
19
+ end: index
20
+ });
21
+ }, [enabled]);
22
+ const isDragging = selectedRange !== null;
23
+ useEffect(() => {
24
+ if (!isDragging) return;
25
+ const savedUserSelect = document.body.style.userSelect;
26
+ document.body.style.userSelect = "none";
27
+ const handlePointerMove = (e) => {
28
+ if (!dragRef.current) return;
29
+ const elements = document.elementsFromPoint(e.clientX, e.clientY);
30
+ for (const el of elements) {
31
+ const indexAttr = el.getAttribute?.("data-drag-slot-index");
32
+ const groupAttr = el.getAttribute?.("data-drag-slot-group");
33
+ if (indexAttr != null && groupAttr != null) {
34
+ if (groupAttr === dragRef.current.group) {
35
+ const newIndex = Number(indexAttr);
36
+ if (!isNaN(newIndex) && newIndex !== dragRef.current.currentIndex) {
37
+ dragRef.current.currentIndex = newIndex;
38
+ setSelectedRange({
39
+ group: groupAttr,
40
+ start: Math.min(dragRef.current.startIndex, newIndex),
41
+ end: Math.max(dragRef.current.startIndex, newIndex)
42
+ });
43
+ }
44
+ }
45
+ break;
46
+ }
47
+ }
48
+ };
49
+ const handlePointerUp = () => {
50
+ if (dragRef.current) {
51
+ const { startIndex, currentIndex, group } = dragRef.current;
52
+ if (startIndex !== currentIndex) onDragEndRef.current?.(Math.min(startIndex, currentIndex), Math.max(startIndex, currentIndex), group);
53
+ }
54
+ dragRef.current = null;
55
+ setSelectedRange(null);
56
+ };
57
+ document.addEventListener("pointermove", handlePointerMove);
58
+ document.addEventListener("pointerup", handlePointerUp);
59
+ return () => {
60
+ document.body.style.userSelect = savedUserSelect;
61
+ document.removeEventListener("pointermove", handlePointerMove);
62
+ document.removeEventListener("pointerup", handlePointerUp);
63
+ };
64
+ }, [isDragging]);
65
+ return {
66
+ handleSlotPointerDown,
67
+ isSlotSelected: useCallback((index, group) => {
68
+ if (!selectedRange || selectedRange.group !== group) return false;
69
+ return index >= selectedRange.start && index <= selectedRange.end;
70
+ }, [selectedRange]),
71
+ isDragging
72
+ };
86
73
  }
87
-
74
+ //#endregion
88
75
  export { useSlotDragSelect };
89
- //# sourceMappingURL=use-slot-drag-select.mjs.map
76
+
77
+ //# sourceMappingURL=use-slot-drag-select.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-slot-drag-select.mjs","sources":["../../src/hooks/use-slot-drag-select.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\ninterface DragState {\n group: string;\n startIndex: number;\n currentIndex: number;\n}\n\ninterface SelectedRange {\n group: string;\n start: number;\n end: number;\n}\n\ninterface UseSlotDragSelectInput {\n enabled?: boolean;\n onDragEnd?: (startIndex: number, endIndex: number, group: string) => void;\n}\n\nexport function useSlotDragSelect({ enabled = true, onDragEnd }: UseSlotDragSelectInput) {\n const [selectedRange, setSelectedRange] = useState<SelectedRange | null>(null);\n const dragRef = useRef<DragState | null>(null);\n const onDragEndRef = useRef(onDragEnd);\n onDragEndRef.current = onDragEnd;\n\n const handleSlotPointerDown = useCallback(\n (_event: React.PointerEvent<HTMLButtonElement>, index: number, group: string) => {\n if (!enabled) {\n return;\n }\n dragRef.current = { group, startIndex: index, currentIndex: index };\n setSelectedRange({ group, start: index, end: index });\n },\n [enabled]\n );\n\n const isDragging = selectedRange !== null;\n\n useEffect(() => {\n if (!isDragging) {\n return undefined;\n }\n\n const savedUserSelect = document.body.style.userSelect;\n document.body.style.userSelect = 'none';\n\n const handlePointerMove = (e: PointerEvent) => {\n if (!dragRef.current) {\n return;\n }\n\n const elements = document.elementsFromPoint(e.clientX, e.clientY);\n for (const el of elements) {\n const indexAttr = (el as HTMLElement).getAttribute?.('data-drag-slot-index');\n const groupAttr = (el as HTMLElement).getAttribute?.('data-drag-slot-group');\n if (indexAttr != null && groupAttr != null) {\n if (groupAttr === dragRef.current.group) {\n const newIndex = Number(indexAttr);\n if (!isNaN(newIndex) && newIndex !== dragRef.current.currentIndex) {\n dragRef.current.currentIndex = newIndex;\n setSelectedRange({\n group: groupAttr,\n start: Math.min(dragRef.current.startIndex, newIndex),\n end: Math.max(dragRef.current.startIndex, newIndex),\n });\n }\n }\n break;\n }\n }\n };\n\n const handlePointerUp = () => {\n if (dragRef.current) {\n const { startIndex, currentIndex, group } = dragRef.current;\n if (startIndex !== currentIndex) {\n onDragEndRef.current?.(\n Math.min(startIndex, currentIndex),\n Math.max(startIndex, currentIndex),\n group\n );\n }\n }\n dragRef.current = null;\n setSelectedRange(null);\n };\n\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.body.style.userSelect = savedUserSelect;\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, [isDragging]);\n\n const isSlotSelected = useCallback(\n (index: number, group: string): boolean => {\n if (!selectedRange || selectedRange.group !== group) {\n return false;\n }\n return index >= selectedRange.start && index <= selectedRange.end;\n },\n [selectedRange]\n );\n\n return {\n handleSlotPointerDown,\n isSlotSelected,\n isDragging,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-slot-drag-select.mjs","names":[],"sources":["../../src/hooks/use-slot-drag-select.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\ninterface DragState {\n group: string;\n startIndex: number;\n currentIndex: number;\n}\n\ninterface SelectedRange {\n group: string;\n start: number;\n end: number;\n}\n\ninterface UseSlotDragSelectInput {\n enabled?: boolean;\n onDragEnd?: (startIndex: number, endIndex: number, group: string) => void;\n}\n\nexport function useSlotDragSelect({ enabled = true, onDragEnd }: UseSlotDragSelectInput) {\n const [selectedRange, setSelectedRange] = useState<SelectedRange | null>(null);\n const dragRef = useRef<DragState | null>(null);\n const onDragEndRef = useRef(onDragEnd);\n onDragEndRef.current = onDragEnd;\n\n const handleSlotPointerDown = useCallback(\n (_event: React.PointerEvent<HTMLButtonElement>, index: number, group: string) => {\n if (!enabled) {\n return;\n }\n dragRef.current = { group, startIndex: index, currentIndex: index };\n setSelectedRange({ group, start: index, end: index });\n },\n [enabled]\n );\n\n const isDragging = selectedRange !== null;\n\n useEffect(() => {\n if (!isDragging) {\n return undefined;\n }\n\n const savedUserSelect = document.body.style.userSelect;\n document.body.style.userSelect = 'none';\n\n const handlePointerMove = (e: PointerEvent) => {\n if (!dragRef.current) {\n return;\n }\n\n const elements = document.elementsFromPoint(e.clientX, e.clientY);\n for (const el of elements) {\n const indexAttr = (el as HTMLElement).getAttribute?.('data-drag-slot-index');\n const groupAttr = (el as HTMLElement).getAttribute?.('data-drag-slot-group');\n if (indexAttr != null && groupAttr != null) {\n if (groupAttr === dragRef.current.group) {\n const newIndex = Number(indexAttr);\n if (!isNaN(newIndex) && newIndex !== dragRef.current.currentIndex) {\n dragRef.current.currentIndex = newIndex;\n setSelectedRange({\n group: groupAttr,\n start: Math.min(dragRef.current.startIndex, newIndex),\n end: Math.max(dragRef.current.startIndex, newIndex),\n });\n }\n }\n break;\n }\n }\n };\n\n const handlePointerUp = () => {\n if (dragRef.current) {\n const { startIndex, currentIndex, group } = dragRef.current;\n if (startIndex !== currentIndex) {\n onDragEndRef.current?.(\n Math.min(startIndex, currentIndex),\n Math.max(startIndex, currentIndex),\n group\n );\n }\n }\n dragRef.current = null;\n setSelectedRange(null);\n };\n\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.body.style.userSelect = savedUserSelect;\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, [isDragging]);\n\n const isSlotSelected = useCallback(\n (index: number, group: string): boolean => {\n if (!selectedRange || selectedRange.group !== group) {\n return false;\n }\n return index >= selectedRange.start && index <= selectedRange.end;\n },\n [selectedRange]\n );\n\n return {\n handleSlotPointerDown,\n isSlotSelected,\n isDragging,\n };\n}\n"],"mappings":";;;AAmBA,SAAgB,kBAAkB,EAAE,UAAU,MAAM,aAAqC;CACvF,MAAM,CAAC,eAAe,oBAAoB,SAA+B,KAAK;CAC9E,MAAM,UAAU,OAAyB,KAAK;CAC9C,MAAM,eAAe,OAAO,UAAU;AACtC,cAAa,UAAU;CAEvB,MAAM,wBAAwB,aAC3B,QAA+C,OAAe,UAAkB;AAC/E,MAAI,CAAC,QACH;AAEF,UAAQ,UAAU;GAAE;GAAO,YAAY;GAAO,cAAc;GAAO;AACnE,mBAAiB;GAAE;GAAO,OAAO;GAAO,KAAK;GAAO,CAAC;IAEvD,CAAC,QAAQ,CACV;CAED,MAAM,aAAa,kBAAkB;AAErC,iBAAgB;AACd,MAAI,CAAC,WACH;EAGF,MAAM,kBAAkB,SAAS,KAAK,MAAM;AAC5C,WAAS,KAAK,MAAM,aAAa;EAEjC,MAAM,qBAAqB,MAAoB;AAC7C,OAAI,CAAC,QAAQ,QACX;GAGF,MAAM,WAAW,SAAS,kBAAkB,EAAE,SAAS,EAAE,QAAQ;AACjE,QAAK,MAAM,MAAM,UAAU;IACzB,MAAM,YAAa,GAAmB,eAAe,uBAAuB;IAC5E,MAAM,YAAa,GAAmB,eAAe,uBAAuB;AAC5E,QAAI,aAAa,QAAQ,aAAa,MAAM;AAC1C,SAAI,cAAc,QAAQ,QAAQ,OAAO;MACvC,MAAM,WAAW,OAAO,UAAU;AAClC,UAAI,CAAC,MAAM,SAAS,IAAI,aAAa,QAAQ,QAAQ,cAAc;AACjE,eAAQ,QAAQ,eAAe;AAC/B,wBAAiB;QACf,OAAO;QACP,OAAO,KAAK,IAAI,QAAQ,QAAQ,YAAY,SAAS;QACrD,KAAK,KAAK,IAAI,QAAQ,QAAQ,YAAY,SAAS;QACpD,CAAC;;;AAGN;;;;EAKN,MAAM,wBAAwB;AAC5B,OAAI,QAAQ,SAAS;IACnB,MAAM,EAAE,YAAY,cAAc,UAAU,QAAQ;AACpD,QAAI,eAAe,aACjB,cAAa,UACX,KAAK,IAAI,YAAY,aAAa,EAClC,KAAK,IAAI,YAAY,aAAa,EAClC,MACD;;AAGL,WAAQ,UAAU;AAClB,oBAAiB,KAAK;;AAGxB,WAAS,iBAAiB,eAAe,kBAAkB;AAC3D,WAAS,iBAAiB,aAAa,gBAAgB;AAEvD,eAAa;AACX,YAAS,KAAK,MAAM,aAAa;AACjC,YAAS,oBAAoB,eAAe,kBAAkB;AAC9D,YAAS,oBAAoB,aAAa,gBAAgB;;IAE3D,CAAC,WAAW,CAAC;AAYhB,QAAO;EACL;EACA,gBAZqB,aACpB,OAAe,UAA2B;AACzC,OAAI,CAAC,iBAAiB,cAAc,UAAU,MAC5C,QAAO;AAET,UAAO,SAAS,cAAc,SAAS,SAAS,cAAc;KAEhE,CAAC,cAAc,CAChB;EAKC;EACD"}
package/esm/index.mjs CHANGED
@@ -1,48 +1,49 @@
1
- export { DEFAULT_SCHEDULE_LABELS, getLabel } from './labels.mjs';
2
- export { getWeekdaysNames } from './utils/get-weekdays-names/get-weekdays-names.mjs';
3
- export { getStartOfWeek } from './utils/get-start-of-week/get-start-of-week.mjs';
4
- export { getEndOfWeek } from './utils/get-end-of-week/get-end-of-week.mjs';
5
- export { getWeekNumber } from './utils/get-week-number/get-week-number.mjs';
6
- export { getMonthDays } from './utils/get-month-days/get-month-days.mjs';
7
- export { isAfterMinDate } from './utils/is-after-min-date/is-after-min-date.mjs';
8
- export { isBeforeMaxDate } from './utils/is-before-max-date/is-before-max-date.mjs';
9
- export { isSameMonth } from './utils/is-same-month/is-same-month.mjs';
10
- export { getMonthsByQuarter } from './utils/get-months-by-quarter/get-months-by-quarter.mjs';
11
- export { getDayTimeIntervals } from './utils/get-day-time-intervals/get-day-time-intervals.mjs';
12
- export { getWeekDays } from './utils/get-week-days/get-week-days.mjs';
13
- export { getMonthsList } from './utils/get-months-list/get-months-list.mjs';
14
- export { getYearsList } from './utils/get-years-list/get-years-list.mjs';
15
- export { formatDate } from './utils/format-date/format-date.mjs';
16
- export { toDateString } from './utils/to-date-string/to-date-string.mjs';
17
- export { nextWeek } from './utils/next-week/next-week.mjs';
18
- export { previousWeek } from './utils/previous-week/previous-week.mjs';
19
- export { clampIntervalMinutes } from './utils/clamp-interval-minutes/clamp-interval-minutes.mjs';
20
- export { getCurrentTimePosition } from './utils/get-current-time-position/get-current-time-position.mjs';
21
- export { isInTimeRange } from './utils/is-in-time-range/is-in-time-range.mjs';
22
- export { isAllDayEvent } from './utils/is-all-day-event/is-all-day-event.mjs';
23
- export { validateEvent } from './utils/validate-event/validate-event.mjs';
24
- export { sortEvents } from './utils/sort-events/sort-events.mjs';
25
- export { isEventsOverlap } from './utils/is-events-overlap/is-events-overlap.mjs';
26
- export { getVisibleEvents } from './utils/get-visible-events/get-visible-events.mjs';
27
- export { isMultidayEvent } from './utils/is-multiday-event/is-multiday-event.mjs';
28
- export { isEventInTimeRange } from './utils/is-event-in-time-range/is-event-in-time-range.mjs';
29
- export { isWithinWeek } from './utils/is-within-week/is-within-week.mjs';
30
- export { getMonthRange } from './utils/get-month-range/get-month-range.mjs';
31
- export { parseTimeString } from './utils/parse-time-string/parse-time-string.mjs';
32
- export { toTimeString } from './utils/to-time-string/to-time-string.mjs';
33
- export { getDayPosition } from './utils/get-day-position/get-day-position.mjs';
34
- export { calculateDropTime } from './utils/calculate-drop-time/calculate-drop-time.mjs';
35
- export { calculateMonthDropDate } from './utils/calculate-month-drop-date/calculate-month-drop-date.mjs';
36
- export { getBusinessHoursMod } from './utils/get-business-hours-mod/get-business-hours-mod.mjs';
37
- export { Schedule } from './components/Schedule/Schedule.mjs';
38
- export { DayView } from './components/DayView/DayView.mjs';
39
- export { WeekView } from './components/WeekView/WeekView.mjs';
40
- export { MonthView } from './components/MonthView/MonthView.mjs';
41
- export { YearView } from './components/YearView/YearView.mjs';
42
- export { ScheduleEvent } from './components/ScheduleEvent/ScheduleEvent.mjs';
43
- export { ScheduleHeader } from './components/ScheduleHeader/ScheduleHeader.mjs';
44
- export { CurrentTimeIndicator } from './components/CurrentTimeIndicator/CurrentTimeIndicator.mjs';
45
- export { MoreEvents } from './components/MoreEvents/MoreEvents.mjs';
46
- export { MobileMonthView } from './components/MobileMonthView/MobileMonthView.mjs';
47
- export { DragContext } from './components/DragContext/DragContext.mjs';
48
- //# sourceMappingURL=index.mjs.map
1
+ import { DEFAULT_SCHEDULE_LABELS, getLabel } from "./labels.mjs";
2
+ import { formatDate } from "./utils/format-date/format-date.mjs";
3
+ import { getWeekdaysNames } from "./utils/get-weekdays-names/get-weekdays-names.mjs";
4
+ import { getStartOfWeek } from "./utils/get-start-of-week/get-start-of-week.mjs";
5
+ import { getEndOfWeek } from "./utils/get-end-of-week/get-end-of-week.mjs";
6
+ import { getWeekNumber } from "./utils/get-week-number/get-week-number.mjs";
7
+ import { getMonthDays } from "./utils/get-month-days/get-month-days.mjs";
8
+ import { isAfterMinDate } from "./utils/is-after-min-date/is-after-min-date.mjs";
9
+ import { isBeforeMaxDate } from "./utils/is-before-max-date/is-before-max-date.mjs";
10
+ import { isSameMonth } from "./utils/is-same-month/is-same-month.mjs";
11
+ import { getMonthsByQuarter } from "./utils/get-months-by-quarter/get-months-by-quarter.mjs";
12
+ import { clampIntervalMinutes } from "./utils/clamp-interval-minutes/clamp-interval-minutes.mjs";
13
+ import { parseTimeString } from "./utils/parse-time-string/parse-time-string.mjs";
14
+ import { toTimeString } from "./utils/to-time-string/to-time-string.mjs";
15
+ import { getDayTimeIntervals } from "./utils/get-day-time-intervals/get-day-time-intervals.mjs";
16
+ import { toDateString } from "./utils/to-date-string/to-date-string.mjs";
17
+ import { getWeekDays } from "./utils/get-week-days/get-week-days.mjs";
18
+ import { getMonthsList } from "./utils/get-months-list/get-months-list.mjs";
19
+ import { getYearsList } from "./utils/get-years-list/get-years-list.mjs";
20
+ import { nextWeek } from "./utils/next-week/next-week.mjs";
21
+ import { previousWeek } from "./utils/previous-week/previous-week.mjs";
22
+ import { getCurrentTimePosition } from "./utils/get-current-time-position/get-current-time-position.mjs";
23
+ import { isInTimeRange } from "./utils/is-in-time-range/is-in-time-range.mjs";
24
+ import { isAllDayEvent } from "./utils/is-all-day-event/is-all-day-event.mjs";
25
+ import { validateEvent } from "./utils/validate-event/validate-event.mjs";
26
+ import { sortEvents } from "./utils/sort-events/sort-events.mjs";
27
+ import { isEventsOverlap } from "./utils/is-events-overlap/is-events-overlap.mjs";
28
+ import { getVisibleEvents } from "./utils/get-visible-events/get-visible-events.mjs";
29
+ import { isMultidayEvent } from "./utils/is-multiday-event/is-multiday-event.mjs";
30
+ import { isEventInTimeRange } from "./utils/is-event-in-time-range/is-event-in-time-range.mjs";
31
+ import { isWithinWeek } from "./utils/is-within-week/is-within-week.mjs";
32
+ import { getMonthRange } from "./utils/get-month-range/get-month-range.mjs";
33
+ import { getDayPosition } from "./utils/get-day-position/get-day-position.mjs";
34
+ import { calculateDropTime } from "./utils/calculate-drop-time/calculate-drop-time.mjs";
35
+ import { calculateMonthDropDate } from "./utils/calculate-month-drop-date/calculate-month-drop-date.mjs";
36
+ import { getBusinessHoursMod } from "./utils/get-business-hours-mod/get-business-hours-mod.mjs";
37
+ import { expandRecurringEvents } from "./utils/expand-recurring-events/expand-recurring-events.mjs";
38
+ import { CurrentTimeIndicator } from "./components/CurrentTimeIndicator/CurrentTimeIndicator.mjs";
39
+ import { DragContext } from "./components/DragContext/DragContext.mjs";
40
+ import { ScheduleEvent } from "./components/ScheduleEvent/ScheduleEvent.mjs";
41
+ import { MoreEvents } from "./components/MoreEvents/MoreEvents.mjs";
42
+ import { ScheduleHeader } from "./components/ScheduleHeader/ScheduleHeader.mjs";
43
+ import { DayView } from "./components/DayView/DayView.mjs";
44
+ import { MobileMonthView } from "./components/MobileMonthView/MobileMonthView.mjs";
45
+ import { MonthView } from "./components/MonthView/MonthView.mjs";
46
+ import { WeekView } from "./components/WeekView/WeekView.mjs";
47
+ import { YearView } from "./components/YearView/YearView.mjs";
48
+ import { Schedule } from "./components/Schedule/Schedule.mjs";
49
+ export { CurrentTimeIndicator, DEFAULT_SCHEDULE_LABELS, DayView, DragContext, MobileMonthView, MonthView, MoreEvents, Schedule, ScheduleEvent, ScheduleHeader, WeekView, YearView, calculateDropTime, calculateMonthDropDate, clampIntervalMinutes, expandRecurringEvents, formatDate, getBusinessHoursMod, getCurrentTimePosition, getDayPosition, getDayTimeIntervals, getEndOfWeek, getLabel, getMonthDays, getMonthRange, getMonthsByQuarter, getMonthsList, getStartOfWeek, getVisibleEvents, getWeekDays, getWeekNumber, getWeekdaysNames, getYearsList, isAfterMinDate, isAllDayEvent, isBeforeMaxDate, isEventInTimeRange, isEventsOverlap, isInTimeRange, isMultidayEvent, isSameMonth, isWithinWeek, nextWeek, parseTimeString, previousWeek, sortEvents, toDateString, toTimeString, validateEvent };
package/esm/labels.mjs CHANGED
@@ -1,31 +1,35 @@
1
- 'use client';
1
+ "use client";
2
+ //#region packages/@mantine/schedule/src/labels.ts
2
3
  const DEFAULT_SCHEDULE_LABELS = {
3
- today: "Today",
4
- next: "Next",
5
- previous: "Previous",
6
- more: "More",
7
- day: "Day",
8
- week: "Week",
9
- month: "Month",
10
- year: "Year",
11
- allDay: "All day",
12
- weekday: "Weekday",
13
- timeSlot: "Time slot",
14
- selectMonth: "Select month",
15
- selectYear: "Select year",
16
- switchToDayView: "Switch to day view",
17
- switchToWeekView: "Switch to week view",
18
- switchToMonthView: "Switch to month view",
19
- switchToYearView: "Switch to year view",
20
- viewSelectLabel: "Calendar view",
21
- moreLabel: (hiddenEventsCount) => `+${hiddenEventsCount} more`
4
+ today: "Today",
5
+ next: "Next",
6
+ previous: "Previous",
7
+ more: "More",
8
+ day: "Day",
9
+ week: "Week",
10
+ month: "Month",
11
+ year: "Year",
12
+ allDay: "All day",
13
+ weekday: "Weekday",
14
+ timeSlot: "Time slot",
15
+ selectMonth: "Select month",
16
+ selectYear: "Select year",
17
+ switchToDayView: "Switch to day view",
18
+ switchToWeekView: "Switch to week view",
19
+ switchToMonthView: "Switch to month view",
20
+ switchToYearView: "Switch to year view",
21
+ viewSelectLabel: "Calendar view",
22
+ noEvents: "No events",
23
+ moreLabel: (hiddenEventsCount) => `+${hiddenEventsCount} more`
22
24
  };
23
25
  function getLabel(key, override) {
24
- if (override) {
25
- return { ...DEFAULT_SCHEDULE_LABELS, ...override }[key];
26
- }
27
- return DEFAULT_SCHEDULE_LABELS[key];
26
+ if (override) return {
27
+ ...DEFAULT_SCHEDULE_LABELS,
28
+ ...override
29
+ }[key];
30
+ return DEFAULT_SCHEDULE_LABELS[key];
28
31
  }
29
-
32
+ //#endregion
30
33
  export { DEFAULT_SCHEDULE_LABELS, getLabel };
31
- //# sourceMappingURL=labels.mjs.map
34
+
35
+ //# sourceMappingURL=labels.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"labels.mjs","sources":["../src/labels.ts"],"sourcesContent":["export interface ScheduleLabels {\n day: string;\n week: string;\n month: string;\n year: string;\n allDay: string;\n weekday: string;\n timeSlot: string;\n today: string;\n next: string;\n previous: string;\n more: string;\n selectMonth: string;\n selectYear: string;\n switchToDayView: string;\n switchToWeekView: string;\n switchToMonthView: string;\n switchToYearView: string;\n viewSelectLabel: string;\n moreLabel: (hiddenEventsCount: number) => string;\n}\n\nexport const DEFAULT_SCHEDULE_LABELS: ScheduleLabels = {\n today: 'Today',\n next: 'Next',\n previous: 'Previous',\n more: 'More',\n day: 'Day',\n week: 'Week',\n month: 'Month',\n year: 'Year',\n allDay: 'All day',\n weekday: 'Weekday',\n timeSlot: 'Time slot',\n selectMonth: 'Select month',\n selectYear: 'Select year',\n switchToDayView: 'Switch to day view',\n switchToWeekView: 'Switch to week view',\n switchToMonthView: 'Switch to month view',\n switchToYearView: 'Switch to year view',\n viewSelectLabel: 'Calendar view',\n moreLabel: (hiddenEventsCount: number) => `+${hiddenEventsCount} more`,\n};\n\nexport type ScheduleLabelsOverride = Partial<ScheduleLabels>;\n\nexport function getLabel<K extends keyof ScheduleLabels>(\n key: K,\n override?: ScheduleLabelsOverride\n): ScheduleLabels[K] {\n if (override) {\n return { ...DEFAULT_SCHEDULE_LABELS, ...override }[key];\n }\n\n return DEFAULT_SCHEDULE_LABELS[key];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"labels.mjs","names":[],"sources":["../src/labels.ts"],"sourcesContent":["export interface ScheduleLabels {\n day: string;\n week: string;\n month: string;\n year: string;\n allDay: string;\n weekday: string;\n timeSlot: string;\n today: string;\n next: string;\n previous: string;\n more: string;\n selectMonth: string;\n selectYear: string;\n switchToDayView: string;\n switchToWeekView: string;\n switchToMonthView: string;\n switchToYearView: string;\n viewSelectLabel: string;\n noEvents: string;\n moreLabel: (hiddenEventsCount: number) => string;\n}\n\nexport const DEFAULT_SCHEDULE_LABELS: ScheduleLabels = {\n today: 'Today',\n next: 'Next',\n previous: 'Previous',\n more: 'More',\n day: 'Day',\n week: 'Week',\n month: 'Month',\n year: 'Year',\n allDay: 'All day',\n weekday: 'Weekday',\n timeSlot: 'Time slot',\n selectMonth: 'Select month',\n selectYear: 'Select year',\n switchToDayView: 'Switch to day view',\n switchToWeekView: 'Switch to week view',\n switchToMonthView: 'Switch to month view',\n switchToYearView: 'Switch to year view',\n viewSelectLabel: 'Calendar view',\n noEvents: 'No events',\n moreLabel: (hiddenEventsCount: number) => `+${hiddenEventsCount} more`,\n};\n\nexport type ScheduleLabelsOverride = Partial<ScheduleLabels>;\n\nexport function getLabel<K extends keyof ScheduleLabels>(\n key: K,\n override?: ScheduleLabelsOverride\n): ScheduleLabels[K] {\n if (override) {\n return { ...DEFAULT_SCHEDULE_LABELS, ...override }[key];\n }\n\n return DEFAULT_SCHEDULE_LABELS[key];\n}\n"],"mappings":";;AAuBA,MAAa,0BAA0C;CACrD,OAAO;CACP,MAAM;CACN,UAAU;CACV,MAAM;CACN,KAAK;CACL,MAAM;CACN,OAAO;CACP,MAAM;CACN,QAAQ;CACR,SAAS;CACT,UAAU;CACV,aAAa;CACb,YAAY;CACZ,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,UAAU;CACV,YAAY,sBAA8B,IAAI,kBAAkB;CACjE;AAID,SAAgB,SACd,KACA,UACmB;AACnB,KAAI,SACF,QAAO;EAAE,GAAG;EAAyB,GAAG;EAAU,CAAC;AAGrD,QAAO,wBAAwB"}
@@ -1,32 +1,23 @@
1
- 'use client';
2
- import dayjs from 'dayjs';
3
- import { parseTimeString } from '../parse-time-string/parse-time-string.mjs';
4
-
5
- function calculateDropTime({
6
- draggedEvent,
7
- targetDate,
8
- targetSlotTime,
9
- mouseYOffset = 0,
10
- slotHeight = 64,
11
- intervalMinutes = 15
12
- }) {
13
- const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), "millisecond");
14
- const parsedTime = parseTimeString(targetSlotTime);
15
- const targetDay = dayjs(targetDate).startOf("day");
16
- const baseTargetTime = targetDay.hour(parsedTime.hours).minute(parsedTime.minutes).second(0);
17
- let finalTargetTime = baseTargetTime;
18
- if (mouseYOffset > 0 && slotHeight > 0) {
19
- const offsetRatio = mouseYOffset / slotHeight;
20
- const offsetMinutes = Math.round(offsetRatio * intervalMinutes);
21
- finalTargetTime = baseTargetTime.add(offsetMinutes, "minute");
22
- }
23
- const newStart = finalTargetTime.toDate();
24
- const newEnd = finalTargetTime.add(eventDuration, "millisecond").toDate();
25
- return {
26
- start: newStart,
27
- end: newEnd
28
- };
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/calculate-drop-time/calculate-drop-time.ts
5
+ function calculateDropTime({ draggedEvent, targetDate, targetSlotTime, mouseYOffset = 0, slotHeight = 64, intervalMinutes = 15 }) {
6
+ const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), "millisecond");
7
+ const parsedTime = parseTimeString(targetSlotTime);
8
+ const baseTargetTime = dayjs(targetDate).startOf("day").hour(parsedTime.hours).minute(parsedTime.minutes).second(0);
9
+ let finalTargetTime = baseTargetTime;
10
+ if (mouseYOffset > 0 && slotHeight > 0) {
11
+ const offsetRatio = mouseYOffset / slotHeight;
12
+ const offsetMinutes = Math.round(offsetRatio * intervalMinutes);
13
+ finalTargetTime = baseTargetTime.add(offsetMinutes, "minute");
14
+ }
15
+ return {
16
+ start: finalTargetTime.toDate(),
17
+ end: finalTargetTime.add(eventDuration, "millisecond").toDate()
18
+ };
29
19
  }
30
-
20
+ //#endregion
31
21
  export { calculateDropTime };
32
- //# sourceMappingURL=calculate-drop-time.mjs.map
22
+
23
+ //# sourceMappingURL=calculate-drop-time.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculate-drop-time.mjs","sources":["../../../src/utils/calculate-drop-time/calculate-drop-time.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, ScheduleEventData } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\nexport interface CalculateDropTimeInput {\n /** The event being dragged */\n draggedEvent: ScheduleEventData;\n\n /** Target date where event will be dropped */\n targetDate: AnyDateValue;\n\n /** Target time slot start time in HH:mm:ss format */\n targetSlotTime: string;\n\n /** Mouse Y position relative to the slot */\n mouseYOffset?: number;\n\n /** Height of one slot in pixels */\n slotHeight?: number;\n\n /** Minutes per slot */\n intervalMinutes?: number;\n}\n\nexport interface CalculateDropTimeResult {\n /** New start date/time for the event */\n start: Date;\n\n /** New end date/time for the event */\n end: Date;\n}\n\nexport function calculateDropTime({\n draggedEvent,\n targetDate,\n targetSlotTime,\n mouseYOffset = 0,\n slotHeight = 64,\n intervalMinutes = 15,\n}: CalculateDropTimeInput): CalculateDropTimeResult {\n const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), 'millisecond');\n\n const parsedTime = parseTimeString(targetSlotTime);\n const targetDay = dayjs(targetDate).startOf('day');\n\n const baseTargetTime = targetDay.hour(parsedTime.hours).minute(parsedTime.minutes).second(0);\n\n let finalTargetTime = baseTargetTime;\n\n if (mouseYOffset > 0 && slotHeight > 0) {\n const offsetRatio = mouseYOffset / slotHeight;\n const offsetMinutes = Math.round(offsetRatio * intervalMinutes);\n finalTargetTime = baseTargetTime.add(offsetMinutes, 'minute');\n }\n\n const newStart = finalTargetTime.toDate();\n const newEnd = finalTargetTime.add(eventDuration, 'millisecond').toDate();\n\n return {\n start: newStart,\n end: newEnd,\n };\n}\n"],"names":[],"mappings":";;;;AAgCO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,iBAAA,CAAkB,CAAA;AAAA,CAAA,CAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAe,CAAA,CAAA;AAAA,CAAA,CACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAa,CAAA,CAAA,CAAA;AAAA,CAAA,CACb,eAAA,CAAA,CAAA,CAAkB,CAAA,CAAA;AACpB,CAAA,CAAA,CAAoD,CAAA;AAClD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,aAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,GAAG,CAAA,CAAE,KAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,KAAK,CAAA,CAAA,CAAG,aAAa,CAAA,CAAA;AAE3F,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,cAAc,CAAA,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA;AAEjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,cAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA;AAE3F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,YAAA,CAAA,CAAA,CAAe,CAAA,IAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAG,CAAA;AACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAK,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,GAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA;AAAA,CAAA,CAC9D,CAAA;AAEA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,MAAA,CAAA,CAAO,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,EAAE,MAAA,CAAA,CAAO,CAAA;AAExE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AAAA,CAAA,CAAA,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACP,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CACP,CAAA;AACF,CAAA;;"}
1
+ {"version":3,"file":"calculate-drop-time.mjs","names":[],"sources":["../../../src/utils/calculate-drop-time/calculate-drop-time.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, ScheduleEventData } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\nexport interface CalculateDropTimeInput {\n /** The event being dragged */\n draggedEvent: ScheduleEventData;\n\n /** Target date where event will be dropped */\n targetDate: AnyDateValue;\n\n /** Target time slot start time in HH:mm:ss format */\n targetSlotTime: string;\n\n /** Mouse Y position relative to the slot */\n mouseYOffset?: number;\n\n /** Height of one slot in pixels */\n slotHeight?: number;\n\n /** Minutes per slot */\n intervalMinutes?: number;\n}\n\nexport interface CalculateDropTimeResult {\n /** New start date/time for the event */\n start: Date;\n\n /** New end date/time for the event */\n end: Date;\n}\n\nexport function calculateDropTime({\n draggedEvent,\n targetDate,\n targetSlotTime,\n mouseYOffset = 0,\n slotHeight = 64,\n intervalMinutes = 15,\n}: CalculateDropTimeInput): CalculateDropTimeResult {\n const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), 'millisecond');\n\n const parsedTime = parseTimeString(targetSlotTime);\n const targetDay = dayjs(targetDate).startOf('day');\n\n const baseTargetTime = targetDay.hour(parsedTime.hours).minute(parsedTime.minutes).second(0);\n\n let finalTargetTime = baseTargetTime;\n\n if (mouseYOffset > 0 && slotHeight > 0) {\n const offsetRatio = mouseYOffset / slotHeight;\n const offsetMinutes = Math.round(offsetRatio * intervalMinutes);\n finalTargetTime = baseTargetTime.add(offsetMinutes, 'minute');\n }\n\n const newStart = finalTargetTime.toDate();\n const newEnd = finalTargetTime.add(eventDuration, 'millisecond').toDate();\n\n return {\n start: newStart,\n end: newEnd,\n };\n}\n"],"mappings":";;;;AAgCA,SAAgB,kBAAkB,EAChC,cACA,YACA,gBACA,eAAe,GACf,aAAa,IACb,kBAAkB,MACgC;CAClD,MAAM,gBAAgB,MAAM,aAAa,IAAI,CAAC,KAAK,MAAM,aAAa,MAAM,EAAE,cAAc;CAE5F,MAAM,aAAa,gBAAgB,eAAe;CAGlD,MAAM,iBAFY,MAAM,WAAW,CAAC,QAAQ,MAAM,CAEjB,KAAK,WAAW,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC,OAAO,EAAE;CAE5F,IAAI,kBAAkB;AAEtB,KAAI,eAAe,KAAK,aAAa,GAAG;EACtC,MAAM,cAAc,eAAe;EACnC,MAAM,gBAAgB,KAAK,MAAM,cAAc,gBAAgB;AAC/D,oBAAkB,eAAe,IAAI,eAAe,SAAS;;AAM/D,QAAO;EACL,OAJe,gBAAgB,QAAQ;EAKvC,KAJa,gBAAgB,IAAI,eAAe,cAAc,CAAC,QAAQ;EAKxE"}
@@ -1,20 +1,17 @@
1
- 'use client';
2
- import dayjs from 'dayjs';
3
-
4
- function calculateMonthDropDate({
5
- draggedEvent,
6
- targetDay
7
- }) {
8
- const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), "millisecond");
9
- const originalStartTime = dayjs(draggedEvent.start);
10
- const targetDayStart = dayjs(targetDay).startOf("day");
11
- const newStart = targetDayStart.hour(originalStartTime.hour()).minute(originalStartTime.minute()).second(originalStartTime.second()).millisecond(originalStartTime.millisecond());
12
- const newEnd = newStart.add(eventDuration, "millisecond");
13
- return {
14
- start: newStart.toDate(),
15
- end: newEnd.toDate()
16
- };
1
+ "use client";
2
+ import dayjs from "dayjs";
3
+ //#region packages/@mantine/schedule/src/utils/calculate-month-drop-date/calculate-month-drop-date.ts
4
+ function calculateMonthDropDate({ draggedEvent, targetDay }) {
5
+ const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), "millisecond");
6
+ const originalStartTime = dayjs(draggedEvent.start);
7
+ const newStart = dayjs(targetDay).startOf("day").hour(originalStartTime.hour()).minute(originalStartTime.minute()).second(originalStartTime.second()).millisecond(originalStartTime.millisecond());
8
+ const newEnd = newStart.add(eventDuration, "millisecond");
9
+ return {
10
+ start: newStart.toDate(),
11
+ end: newEnd.toDate()
12
+ };
17
13
  }
18
-
14
+ //#endregion
19
15
  export { calculateMonthDropDate };
20
- //# sourceMappingURL=calculate-month-drop-date.mjs.map
16
+
17
+ //# sourceMappingURL=calculate-month-drop-date.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculate-month-drop-date.mjs","sources":["../../../src/utils/calculate-month-drop-date/calculate-month-drop-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DateStringValue, ScheduleEventData } from '../../types';\n\nexport interface CalculateMonthDropDateInput {\n /** The event being dragged */\n draggedEvent: ScheduleEventData;\n\n /** The target day where the event is being dropped */\n targetDay: DateStringValue;\n}\n\nexport interface CalculateMonthDropDateResult {\n /** New start date for the event */\n start: Date;\n\n /** New end date for the event */\n end: Date;\n}\n\nexport function calculateMonthDropDate({\n draggedEvent,\n targetDay,\n}: CalculateMonthDropDateInput): CalculateMonthDropDateResult {\n const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), 'millisecond');\n\n const originalStartTime = dayjs(draggedEvent.start);\n const targetDayStart = dayjs(targetDay).startOf('day');\n\n const newStart = targetDayStart\n .hour(originalStartTime.hour())\n .minute(originalStartTime.minute())\n .second(originalStartTime.second())\n .millisecond(originalStartTime.millisecond());\n\n const newEnd = newStart.add(eventDuration, 'millisecond');\n\n return {\n start: newStart.toDate(),\n end: newEnd.toDate(),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculate-month-drop-date.mjs","names":[],"sources":["../../../src/utils/calculate-month-drop-date/calculate-month-drop-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DateStringValue, ScheduleEventData } from '../../types';\n\nexport interface CalculateMonthDropDateInput {\n /** The event being dragged */\n draggedEvent: ScheduleEventData;\n\n /** The target day where the event is being dropped */\n targetDay: DateStringValue;\n}\n\nexport interface CalculateMonthDropDateResult {\n /** New start date for the event */\n start: Date;\n\n /** New end date for the event */\n end: Date;\n}\n\nexport function calculateMonthDropDate({\n draggedEvent,\n targetDay,\n}: CalculateMonthDropDateInput): CalculateMonthDropDateResult {\n const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), 'millisecond');\n\n const originalStartTime = dayjs(draggedEvent.start);\n const targetDayStart = dayjs(targetDay).startOf('day');\n\n const newStart = targetDayStart\n .hour(originalStartTime.hour())\n .minute(originalStartTime.minute())\n .second(originalStartTime.second())\n .millisecond(originalStartTime.millisecond());\n\n const newEnd = newStart.add(eventDuration, 'millisecond');\n\n return {\n start: newStart.toDate(),\n end: newEnd.toDate(),\n };\n}\n"],"mappings":";;;AAmBA,SAAgB,uBAAuB,EACrC,cACA,aAC4D;CAC5D,MAAM,gBAAgB,MAAM,aAAa,IAAI,CAAC,KAAK,MAAM,aAAa,MAAM,EAAE,cAAc;CAE5F,MAAM,oBAAoB,MAAM,aAAa,MAAM;CAGnD,MAAM,WAFiB,MAAM,UAAU,CAAC,QAAQ,MAAM,CAGnD,KAAK,kBAAkB,MAAM,CAAC,CAC9B,OAAO,kBAAkB,QAAQ,CAAC,CAClC,OAAO,kBAAkB,QAAQ,CAAC,CAClC,YAAY,kBAAkB,aAAa,CAAC;CAE/C,MAAM,SAAS,SAAS,IAAI,eAAe,cAAc;AAEzD,QAAO;EACL,OAAO,SAAS,QAAQ;EACxB,KAAK,OAAO,QAAQ;EACrB"}
@@ -1,9 +1,12 @@
1
- 'use client';
1
+ "use client";
2
+ //#region packages/@mantine/schedule/src/utils/clamp-interval-minutes/clamp-interval-minutes.ts
3
+ /** Clamp interval minutes to valid values (1-60) and ensure it divides evenly into 60 */
2
4
  function clampIntervalMinutes(intervalMinutes) {
3
- let clamped = Math.round(Math.max(1, Math.min(60, intervalMinutes)));
4
- clamped = 60 % clamped === 0 ? clamped : 60;
5
- return clamped;
5
+ let clamped = Math.round(Math.max(1, Math.min(60, intervalMinutes)));
6
+ clamped = 60 % clamped === 0 ? clamped : 60;
7
+ return clamped;
6
8
  }
7
-
9
+ //#endregion
8
10
  export { clampIntervalMinutes };
9
- //# sourceMappingURL=clamp-interval-minutes.mjs.map
11
+
12
+ //# sourceMappingURL=clamp-interval-minutes.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"clamp-interval-minutes.mjs","sources":["../../../src/utils/clamp-interval-minutes/clamp-interval-minutes.ts"],"sourcesContent":["/** Clamp interval minutes to valid values (1-60) and ensure it divides evenly into 60 */\nexport function clampIntervalMinutes(intervalMinutes: number): number {\n let clamped = Math.round(Math.max(1, Math.min(60, intervalMinutes)));\n clamped = 60 % clamped === 0 ? clamped : 60;\n return clamped;\n}\n"],"names":[],"mappings":";AACO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiC,CAAA;AACpE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,OAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAC,CAAC,CAAA,CAAA;AACnE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA;AACzC,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA;;"}
1
+ {"version":3,"file":"clamp-interval-minutes.mjs","names":[],"sources":["../../../src/utils/clamp-interval-minutes/clamp-interval-minutes.ts"],"sourcesContent":["/** Clamp interval minutes to valid values (1-60) and ensure it divides evenly into 60 */\nexport function clampIntervalMinutes(intervalMinutes: number): number {\n let clamped = Math.round(Math.max(1, Math.min(60, intervalMinutes)));\n clamped = 60 % clamped === 0 ? clamped : 60;\n return clamped;\n}\n"],"mappings":";;;AACA,SAAgB,qBAAqB,iBAAiC;CACpE,IAAI,UAAU,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,gBAAgB,CAAC,CAAC;AACpE,WAAU,KAAK,YAAY,IAAI,UAAU;AACzC,QAAO"}