@mantine/schedule 9.2.2 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs +11 -10
  2. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
  3. package/cjs/components/DayView/DayView.cjs +7 -3
  4. package/cjs/components/DayView/DayView.cjs.map +1 -1
  5. package/cjs/components/DragContext/DragContext.cjs +0 -1
  6. package/cjs/components/DragContext/DragContext.cjs.map +1 -1
  7. package/cjs/components/MoreEvents/MoreEvents.cjs +0 -1
  8. package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
  9. package/cjs/components/Schedule/Schedule.cjs +0 -1
  10. package/cjs/components/Schedule/Schedule.cjs.map +1 -1
  11. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +0 -1
  12. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
  13. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs +0 -1
  14. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
  15. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs +0 -1
  16. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
  17. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs +0 -1
  18. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
  19. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +0 -1
  20. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
  21. package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs +0 -1
  22. package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs.map +1 -1
  23. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs +0 -1
  24. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
  25. package/cjs/components/WeekView/WeekView.cjs +8 -4
  26. package/cjs/components/WeekView/WeekView.cjs.map +1 -1
  27. package/cjs/hooks/use-auto-scroll-on-drag.cjs +0 -1
  28. package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
  29. package/cjs/hooks/use-drag-state.cjs +0 -1
  30. package/cjs/hooks/use-drag-state.cjs.map +1 -1
  31. package/cjs/hooks/use-slot-drag-select.cjs +0 -1
  32. package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
  33. package/cjs/utils/get-current-time-position/get-current-time-position.cjs +10 -7
  34. package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
  35. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs +11 -10
  36. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
  37. package/esm/components/DayView/DayView.mjs +7 -3
  38. package/esm/components/DayView/DayView.mjs.map +1 -1
  39. package/esm/components/WeekView/WeekView.mjs +8 -4
  40. package/esm/components/WeekView/WeekView.mjs.map +1 -1
  41. package/esm/utils/get-current-time-position/get-current-time-position.mjs +10 -7
  42. package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -1
  43. package/lib/components/CurrentTimeIndicator/CurrentTimeIndicator.d.ts +5 -1
  44. package/lib/components/DayView/DayView.d.ts +3 -1
  45. package/lib/components/WeekView/WeekView.d.ts +3 -1
  46. package/lib/utils/get-current-time-position/get-current-time-position.d.ts +4 -0
  47. package/package.json +4 -4
@@ -22,7 +22,7 @@ const defaultProps = {
22
22
  const varsResolver = (0, _mantine_core.createVarsResolver)((theme, { color }) => ({ currentTimeIndicator: { "--indicator-color": color ? (0, _mantine_core.getThemeColor)(color, theme) : void 0 } }));
23
23
  const CurrentTimeIndicator = (0, _mantine_core.factory)((_props) => {
24
24
  const props = (0, _mantine_core.useProps)("CurrentTimeIndicator", defaultProps, _props);
25
- const { classNames, className, style, styles, unstyled, vars, attributes, startOffset, endOffset, color, withTimeBubble, withThumb, currentTimeFormat, locale, timeBubbleStartOffset, __staticSelector, topOffset, startTime, endTime, ...others } = props;
25
+ const { classNames, className, style, styles, unstyled, vars, attributes, startOffset, endOffset, color, withTimeBubble, withThumb, currentTimeFormat, locale, timeBubbleStartOffset, __staticSelector, topOffset, startTime, endTime, intervalMinutes, getCurrentTime, ...others } = props;
26
26
  const getStyles = (0, _mantine_core.useStyles)({
27
27
  name: __staticSelector,
28
28
  classes: require_CurrentTimeIndicator_module.default,
@@ -38,21 +38,22 @@ const CurrentTimeIndicator = (0, _mantine_core.factory)((_props) => {
38
38
  rootSelector: "currentTimeIndicator"
39
39
  });
40
40
  const ctx = (0, _mantine_dates.useDatesContext)();
41
- const [offsetPercent, setOffsetPercent] = (0, react.useState)(require_get_current_time_position.getCurrentTimePosition({
41
+ const [, setTick] = (0, react.useState)(0);
42
+ (0, _mantine_hooks.useInterval)(() => setTick((tick) => tick + 1), 1e3 * 60, { autoInvoke: true });
43
+ const now = getCurrentTime ? (0, dayjs.default)(getCurrentTime()) : (0, dayjs.default)();
44
+ const offsetPercent = require_get_current_time_position.getCurrentTimePosition({
42
45
  startTime,
43
- endTime
44
- }));
45
- (0, _mantine_hooks.useInterval)(() => setOffsetPercent(require_get_current_time_position.getCurrentTimePosition({
46
- startTime,
47
- endTime
48
- })), 1e3 * 60, { autoInvoke: true });
46
+ endTime,
47
+ intervalMinutes,
48
+ now
49
+ });
49
50
  const formattedTime = withTimeBubble ? require_format_date.formatDate({
50
51
  locale: ctx.getLocale(locale),
51
- date: (0, dayjs.default)(),
52
+ date: now,
52
53
  format: currentTimeFormat
53
54
  }) : "";
54
55
  if (!require_is_in_time_range.isInTimeRange({
55
- date: (0, dayjs.default)().toDate(),
56
+ date: now,
56
57
  startTime,
57
58
  endTime
58
59
  })) return null;
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentTimeIndicator.cjs","names":["getCurrentTimePosition","formatDate","isInTimeRange","Box","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 { 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\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 ...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 [offsetPercent, setOffsetPercent] = useState(\n getCurrentTimePosition({ startTime, endTime })\n );\n useInterval(() => setOffsetPercent(getCurrentTimePosition({ startTime, endTime })), 1000 * 60, {\n autoInvoke: true,\n });\n const formattedTime = withTimeBubble\n ? formatDate({ locale: ctx.getLocale(locale), date: dayjs(), format: currentTimeFormat })\n : '';\n\n if (!isInTimeRange({ date: dayjs().toDate(), 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":";;;;;;;;;;;;;;AA4EA,MAAM,eAAe;CACnB,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,mBAAmB;CACnB,WAAW;AACb;AAEA,MAAM,gBAAA,GAAA,cAAA,qBAAgE,OAAO,EAAE,aAAa,EAC1F,sBAAsB,EACpB,qBAAqB,SAAA,GAAA,cAAA,eAAsB,OAAO,KAAK,IAAI,KAAA,EAC7D,EACF,EAAE;AAEF,MAAa,wBAAA,GAAA,cAAA,UAA6D,WAAW;CACnF,MAAM,SAAA,GAAA,cAAA,UAAiB,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,GAAG,WACD;CAEJ,MAAM,aAAA,GAAA,cAAA,WAAmD;EACvD,MAAM;EACN,SAAA,oCAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,OAAA,GAAA,eAAA,iBAAsB;CAC5B,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UACpBA,kCAAAA,uBAAuB;EAAE;EAAW;CAAQ,CAAC,CAC/C;CACA,CAAA,GAAA,eAAA,mBAAkB,iBAAiBA,kCAAAA,uBAAuB;EAAE;EAAW;CAAQ,CAAC,CAAC,GAAG,MAAO,IAAI,EAC7F,YAAY,KACd,CAAC;CACD,MAAM,gBAAgB,iBAClBC,oBAAAA,WAAW;EAAE,QAAQ,IAAI,UAAU,MAAM;EAAG,OAAA,GAAA,MAAA,SAAY;EAAG,QAAQ;CAAkB,CAAC,IACtF;CAEJ,IAAI,CAACC,yBAAAA,cAAc;EAAE,OAAA,GAAA,MAAA,SAAY,EAAE,OAAO;EAAG;EAAW;CAAQ,CAAC,GAC/D,OAAO;CAGT,OACE,iBAAA,GAAA,kBAAA,MAACC,cAAAA,KAAD;EACE,GAAI,UAAU,sBAAsB;EACpC,QAAQ;GACN,gBAAgB,QAAQ,cAAc,MAAM,UAAU;GACtD,kBAAkB;GAClB,gBAAgB;GAChB,8BAA8B;GAG9B,uBAAuB,eAAe,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,IACvE,SACA;EACN;EACA,GAAI;YAbN;GAeG,kBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,GAAI,UAAU,gCAAgC;cAAI;GAAmB,CAAA;GAG3E,aAAa,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,GAAI,UAAU,2BAA2B,EAAI,CAAA;GAEhE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,GAAI,UAAU,0BAA0B,EAAI,CAAA;EAC9C;;AAET,CAAC;AAED,qBAAqB,cAAc;AACnC,qBAAqB,UAAUC,oCAAAA;AAC/B,qBAAqB,eAAe"}
1
+ {"version":3,"file":"CurrentTimeIndicator.cjs","names":["getCurrentTimePosition","formatDate","isInTimeRange","Box","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,gBAAA,GAAA,cAAA,qBAAgE,OAAO,EAAE,aAAa,EAC1F,sBAAsB,EACpB,qBAAqB,SAAA,GAAA,cAAA,eAAsB,OAAO,KAAK,IAAI,KAAA,EAC7D,EACF,EAAE;AAEF,MAAa,wBAAA,GAAA,cAAA,UAA6D,WAAW;CACnF,MAAM,SAAA,GAAA,cAAA,UAAiB,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,aAAA,GAAA,cAAA,WAAmD;EACvD,MAAM;EACN,SAAA,oCAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,OAAA,GAAA,eAAA,iBAAsB;CAC5B,MAAM,GAAG,YAAA,GAAA,MAAA,UAAoB,CAAC;CAC9B,CAAA,GAAA,eAAA,mBAAkB,SAAS,SAAS,OAAO,CAAC,GAAG,MAAO,IAAI,EACxD,YAAY,KACd,CAAC;CAED,MAAM,MAAM,kBAAA,GAAA,MAAA,SAAuB,eAAe,CAAC,KAAA,GAAA,MAAA,SAAU;CAC7D,MAAM,gBAAgBA,kCAAAA,uBAAuB;EAAE;EAAW;EAAS;EAAiB;CAAI,CAAC;CACzF,MAAM,gBAAgB,iBAClBC,oBAAAA,WAAW;EAAE,QAAQ,IAAI,UAAU,MAAM;EAAG,MAAM;EAAK,QAAQ;CAAkB,CAAC,IAClF;CAEJ,IAAI,CAACC,yBAAAA,cAAc;EAAE,MAAM;EAAK;EAAW;CAAQ,CAAC,GAClD,OAAO;CAGT,OACE,iBAAA,GAAA,kBAAA,MAACC,cAAAA,KAAD;EACE,GAAI,UAAU,sBAAsB;EACpC,QAAQ;GACN,gBAAgB,QAAQ,cAAc,MAAM,UAAU;GACtD,kBAAkB;GAClB,gBAAgB;GAChB,8BAA8B;GAG9B,uBAAuB,eAAe,SAAS,EAAE,YAAY,EAAE,SAAS,GAAG,IACvE,SACA;EACN;EACA,GAAI;YAbN;GAeG,kBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,GAAI,UAAU,gCAAgC;cAAI;GAAmB,CAAA;GAG3E,aAAa,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,GAAI,UAAU,2BAA2B,EAAI,CAAA;GAEhE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,GAAI,UAAU,0BAA0B,EAAI,CAAA;EAC9C;;AAET,CAAC;AAED,qBAAqB,cAAc;AACnC,qBAAqB,UAAUC,oCAAAA;AAC/B,qBAAqB,eAAe"}
@@ -53,7 +53,7 @@ const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius, sl
53
53
  } }));
54
54
  const DayView = (0, _mantine_core.factory)((_props) => {
55
55
  const props = (0, _mantine_core.useProps)("DayView", defaultProps, _props);
56
- const { classNames, className, style, styles, unstyled, attributes, vars, __staticSelector, startTime, endTime, intervalMinutes, withAllDaySlot, date, locale, slotLabelFormat, headerFormat, withCurrentTimeIndicator = (0, dayjs.default)(date).isSame((0, dayjs.default)(), "day"), withCurrentTimeBubble, withHeader, radius, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, slotHeight, allDaySlotHeight, scrollAreaProps, events, moreEventsProps, renderEventBody, renderEvent, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, recurrenceExpansionLimit, getTimeSlotProps, ...others } = props;
56
+ const { classNames, className, style, styles, unstyled, attributes, vars, __staticSelector, startTime, endTime, intervalMinutes, withAllDaySlot, date, locale, slotLabelFormat, headerFormat, getCurrentTime, withCurrentTimeIndicator, withCurrentTimeBubble, withHeader, radius, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, slotHeight, allDaySlotHeight, scrollAreaProps, events, moreEventsProps, renderEventBody, renderEvent, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, recurrenceExpansionLimit, getTimeSlotProps, ...others } = props;
57
57
  const getStyles = (0, _mantine_core.useStyles)({
58
58
  name: __staticSelector,
59
59
  classes: require_DayView_module.default,
@@ -82,6 +82,8 @@ const DayView = (0, _mantine_core.factory)((_props) => {
82
82
  };
83
83
  const theme = (0, _mantine_core.useMantineTheme)();
84
84
  const ctx = (0, _mantine_dates.useDatesContext)();
85
+ const resolveNow = () => getCurrentTime ? (0, dayjs.default)(getCurrentTime()) : (0, dayjs.default)();
86
+ const showCurrentTimeIndicator = withCurrentTimeIndicator ?? (0, dayjs.default)(date).isSame(resolveNow(), "day");
85
87
  const slots = require_get_day_time_intervals.getDayTimeIntervals({
86
88
  startTime,
87
89
  endTime,
@@ -379,7 +381,7 @@ const DayView = (0, _mantine_core.factory)((_props) => {
379
381
  navigationHandlers: {
380
382
  previous: () => require_to_date_string.toDateString((0, dayjs.default)(date).subtract(1, "day")),
381
383
  next: () => require_to_date_string.toDateString((0, dayjs.default)(date).add(1, "day")),
382
- today: () => require_to_date_string.toDateString((0, dayjs.default)())
384
+ today: () => require_to_date_string.toDateString(resolveNow())
383
385
  },
384
386
  control: {
385
387
  title: require_format_date.formatDate({
@@ -461,7 +463,7 @@ const DayView = (0, _mantine_core.factory)((_props) => {
461
463
  children: [
462
464
  backgroundTimedEventNodes,
463
465
  eventsNodes,
464
- withCurrentTimeIndicator && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CurrentTimeIndicator.CurrentTimeIndicator, {
466
+ showCurrentTimeIndicator && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CurrentTimeIndicator.CurrentTimeIndicator, {
465
467
  startOffset: "calc(var(--day-view-slot-labels-width) * -1)",
466
468
  endOffset: "0rem",
467
469
  topOffset: "0rem",
@@ -472,6 +474,8 @@ const DayView = (0, _mantine_core.factory)((_props) => {
472
474
  locale,
473
475
  startTime,
474
476
  endTime,
477
+ intervalMinutes,
478
+ getCurrentTime,
475
479
  ...stylesApiProps
476
480
  }),
477
481
  items
@@ -1 +1 @@
1
- {"version":3,"file":"DayView.cjs","names":["getDayTimeIntervals","useSlotDragSelect","getDayViewEvents","expandRecurringEvents","useDragDropHandlers","calculateDropTime","useEventResize","isAllDayEvent","ScheduleEvent","getVisibleEvents","UnstyledButton","getBusinessHoursMod","clampIntervalMinutes","getLabel","formatDate","Box","ScheduleHeaderBase","toDateString","ScrollArea","MoreEvents","CurrentTimeIndicator","DragContext","classes"],"sources":["../../../src/components/DayView/DayView.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useCallback, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n rem,\n ScrollArea,\n ScrollAreaAutosizeProps,\n StylesApiProps,\n UnstyledButton,\n useMantineTheme,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useIsomorphicEffect, useMergedRef } from '@mantine/hooks';\nimport { useAutoScrollOnDrag } from '../../hooks/use-auto-scroll-on-drag';\nimport { useDragDropHandlers } from '../../hooks/use-drag-drop-handlers';\nimport { useEventResize } from '../../hooks/use-event-resize';\nimport { useSlotDragSelect } from '../../hooks/use-slot-drag-select';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport {\n DateLabelFormat,\n DateStringValue,\n DateTimeStringValue,\n ScheduleEventData,\n ScheduleMode,\n ScheduleViewLevel,\n} from '../../types';\nimport {\n calculateDropTime,\n clampIntervalMinutes,\n expandRecurringEvents,\n formatDate,\n getBusinessHoursMod,\n getDayTimeIntervals,\n getVisibleEvents,\n isAllDayEvent,\n toDateString,\n} from '../../utils';\nimport {\n CurrentTimeIndicator,\n CurrentTimeIndicatorStylesNames,\n} from '../CurrentTimeIndicator/CurrentTimeIndicator';\nimport { DragContext } from '../DragContext/DragContext';\nimport { MoreEvents, MoreEventsProps, MoreEventsStylesNames } from '../MoreEvents/MoreEvents';\nimport {\n RenderEvent,\n RenderEventBody,\n ScheduleEvent,\n ScheduleEventStylesNames,\n} from '../ScheduleEvent/ScheduleEvent';\nimport { MonthYearSelectStylesNames } from '../ScheduleHeader/MonthYearSelect/MonthYearSelect';\nimport { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';\nimport { ScheduleHeaderBase } from '../ScheduleHeader/ScheduleHeaderBase';\nimport { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';\nimport { getDayViewEvents } from './get-day-view-events/get-day-view-events';\nimport classes from './DayView.module.css';\n\nexport type DayViewStylesNames =\n | 'dayView'\n | 'dayViewInner'\n | 'dayViewScrollArea'\n | 'dayViewAllDay'\n | 'dayViewAllDayEvents'\n | 'dayViewSlot'\n | 'dayViewSlots'\n | 'dayViewTimeSlots'\n | 'dayViewSlotLabel'\n | 'dayViewSlotLabels'\n | 'dayViewBackgroundEvent'\n | MoreEventsStylesNames\n | ScheduleEventStylesNames\n | Exclude<CombinedScheduleHeaderStylesNames, MonthYearSelectStylesNames>\n | CurrentTimeIndicatorStylesNames;\n\nexport type DayViewCssVariables = {\n dayView: '--day-view-radius' | '--day-view-slot-height' | '--day-view-all-day-slot-height';\n};\n\nexport interface DayViewProps\n extends BoxProps, StylesApiProps<DayViewFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Day to display, Date object or date string in `YYYY-MM-DD` format */\n date: Date | DateStringValue;\n\n /** Called when date is changed */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Events to display, must be a stable reference */\n events?: ScheduleEventData[];\n\n /** Time slots start time, in `HH:mm:ss` format @default 00:00:00 */\n startTime?: string;\n\n /** Time slots end time in `HH:mm:ss` format @default 23:59:59 */\n endTime?: string;\n\n /** Number of minutes for each time slot @default 15 */\n intervalMinutes?: number;\n\n /** If set, the all-day slot is displayed below the header @default true */\n withAllDaySlot?: boolean;\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 /** Dayjs format for slot labels or a callback function that returns formatted value @default HH:mm */\n slotLabelFormat?: DateLabelFormat;\n\n /** Date format in the header @default MMMM D, YYYY */\n headerFormat?: DateLabelFormat;\n\n /** If set, displays a line indicating the current time. By default, displayed only for the current day. */\n withCurrentTimeIndicator?: boolean;\n\n /** If set, the time indicator displays the current time in the bubble @default true */\n withCurrentTimeBubble?: boolean;\n\n /** If set, the header is displayed @default true */\n withHeader?: boolean;\n\n /** Called when view level select button is clicked */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Props passed to previous month control */\n previousControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to next month control */\n nextControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to today control */\n todayControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to view level select */\n viewSelectProps?: Partial<ViewSelectProps> & DataAttributes;\n\n /** Height of 1hr slot @default 64px */\n slotHeight?: React.CSSProperties['height'];\n\n /** Height of all-day slot @default 44px */\n allDaySlotHeight?: React.CSSProperties['height'];\n\n /** Props passed down to the `ScrollArea.Autosize` component */\n scrollAreaProps?: ScrollAreaAutosizeProps & DataAttributes;\n\n /** Props passed down to `MoreEvents` component */\n moreEventsProps?: Partial<MoreEventsProps>;\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\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 /** Labels override */\n labels?: ScheduleLabelsOverride;\n\n /** If set to true, highlights business hours with white background @default false */\n highlightBusinessHours?: boolean;\n\n /** Business hours range in `HH:mm:ss` format @default ['09:00:00', '17:00:00'] */\n businessHours?: [string, string];\n\n /** If true, events can be dragged and dropped @default false */\n withEventsDragAndDrop?: boolean;\n\n /** Called when event is dropped at new time */\n onEventDrop?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be dragged */\n canDragEvent?: (event: ScheduleEventData) => boolean;\n\n /** Called when any event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when any event drag ends */\n onEventDragEnd?: () => void;\n\n /** Called when time slot is clicked */\n onTimeSlotClick?: (data: {\n slotStart: DateTimeStringValue;\n slotEnd: DateTimeStringValue;\n nativeEvent: React.MouseEvent<HTMLButtonElement>;\n }) => void;\n\n /** Called when all-day slot is clicked */\n onAllDaySlotClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Called when event is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** If set, enables drag-to-select time slot ranges @default false */\n withDragSlotSelect?: boolean;\n\n /** Called when a time slot range is selected by dragging */\n onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** Time to scroll to on initial render, in `HH:mm:ss` format */\n startScrollTime?: string;\n\n /** Called when an external item is dropped onto the schedule. Receives the `DataTransfer` object and the drop target datetime. */\n onExternalEventDrop?: (dataTransfer: DataTransfer, dropDateTime: DateTimeStringValue) => void;\n\n /** If true, events can be resized by dragging their edges @default false */\n withEventResize?: boolean;\n\n /** Called when event is resized */\n onEventResize?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be resized */\n canResizeEvent?: (event: ScheduleEventData) => boolean;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n\n /** Function to get additional props for each time slot. Receives slot start and end datetime strings. Returned props are spread onto the slot element. Event handlers returned by this function are composed with internal handlers (e.g. onClick) rather than overriding them. */\n getTimeSlotProps?: (data: {\n start: DateTimeStringValue;\n end: DateTimeStringValue;\n }) => Record<string, any> | undefined;\n}\n\nexport type DayViewFactory = Factory<{\n props: DayViewProps;\n ref: HTMLDivElement;\n stylesNames: DayViewStylesNames;\n vars: DayViewCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'DayView',\n startTime: '00:00:00',\n endTime: '23:59:59',\n intervalMinutes: 15,\n withAllDaySlot: true,\n slotLabelFormat: 'HH:mm',\n headerFormat: 'MMMM D, YYYY',\n withCurrentTimeBubble: true,\n withHeader: true,\n highlightBusinessHours: false,\n businessHours: ['09:00:00', '17:00:00'],\n withEventsDragAndDrop: false,\n withDragSlotSelect: false,\n withEventResize: false,\n mode: 'default',\n} satisfies Partial<DayViewProps>;\n\nconst varsResolver = createVarsResolver<DayViewFactory>(\n (_theme, { radius, slotHeight, allDaySlotHeight }) => ({\n dayView: {\n '--day-view-radius': radius !== undefined ? getRadius(radius) : undefined,\n '--day-view-slot-height': rem(slotHeight),\n '--day-view-all-day-slot-height': rem(allDaySlotHeight),\n },\n })\n);\n\nexport const DayView = factory<DayViewFactory>((_props) => {\n const props = useProps('DayView', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n attributes,\n vars,\n __staticSelector,\n startTime,\n endTime,\n intervalMinutes,\n withAllDaySlot,\n date,\n locale,\n slotLabelFormat,\n headerFormat,\n withCurrentTimeIndicator = dayjs(date).isSame(dayjs(), 'day'),\n withCurrentTimeBubble,\n withHeader,\n radius,\n onDateChange,\n onViewChange,\n previousControlProps,\n nextControlProps,\n todayControlProps,\n viewSelectProps,\n slotHeight,\n allDaySlotHeight,\n scrollAreaProps,\n events,\n moreEventsProps,\n renderEventBody,\n renderEvent,\n labels,\n highlightBusinessHours,\n businessHours,\n withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n mode,\n startScrollTime,\n onExternalEventDrop,\n withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n getTimeSlotProps,\n ...others\n } = props;\n\n const getStyles = useStyles<DayViewFactory>({\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: 'dayView',\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DayViewFactory>({\n classNames,\n styles,\n props,\n });\n\n const stylesApiProps = {\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n attributes,\n __staticSelector,\n radius,\n };\n\n const theme = useMantineTheme();\n const ctx = useDatesContext();\n const slots = getDayTimeIntervals({ startTime, endTime, intervalMinutes });\n const slotsRef = useRef<HTMLButtonElement[]>([]);\n const viewportRef = useRef<HTMLDivElement>(null);\n const timeSlotsContainerRef = useRef<HTMLDivElement>(null);\n const mergedViewportRef = useMergedRef(viewportRef, scrollAreaProps?.viewportRef);\n\n useAutoScrollOnDrag({\n viewportRef,\n enabled: (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== 'static',\n });\n\n useIsomorphicEffect(() => {\n if (!startScrollTime || !viewportRef.current || slotsRef.current.length === 0) {\n return;\n }\n\n const targetIndex = slots.findIndex((s) => s.startTime >= startScrollTime);\n if (targetIndex < 0) {\n return;\n }\n\n const targetSlot = slotsRef.current[targetIndex];\n if (!targetSlot) {\n return;\n }\n\n const slotRect = targetSlot.getBoundingClientRect();\n const viewportRect = viewportRef.current.getBoundingClientRect();\n viewportRef.current.scrollTo({ left: 0, top: slotRect.top - viewportRect.top });\n }, []);\n\n const getSlotIndexFromDragPoint = useCallback((event: React.DragEvent) => {\n const slotIndex = slotsRef.current.findIndex((slotNode) => {\n if (!slotNode) {\n return false;\n }\n\n const rect = slotNode.getBoundingClientRect();\n return event.clientY >= rect.top && event.clientY <= rect.bottom;\n });\n\n if (slotIndex >= 0) {\n return slotIndex;\n }\n\n const firstSlot = slotsRef.current[0];\n const lastSlot = slotsRef.current[slotsRef.current.length - 1];\n\n if (!firstSlot || !lastSlot) {\n return null;\n }\n\n const firstRect = firstSlot.getBoundingClientRect();\n const lastRect = lastSlot.getBoundingClientRect();\n\n if (event.clientY < firstRect.top) {\n return 0;\n }\n\n if (event.clientY > lastRect.bottom) {\n return slotsRef.current.length - 1;\n }\n\n return null;\n }, []);\n\n const handleSlotKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, slotIndex: number) => {\n const direction = event.key;\n if (direction === 'ArrowDown' && slotIndex < slots.length - 1) {\n event.preventDefault();\n slotsRef.current[slotIndex + 1]?.focus();\n } else if (direction === 'ArrowUp' && slotIndex > 0) {\n event.preventDefault();\n slotsRef.current[slotIndex - 1]?.focus();\n }\n };\n\n const slotDragSelect = useSlotDragSelect({\n enabled: withDragSlotSelect && mode !== 'static',\n onDragEnd: (startIndex, endIndex) => {\n if (!onSlotDragEnd) {\n return;\n }\n const slotDate = dayjs(date).format('YYYY-MM-DD');\n onSlotDragEnd(\n `${slotDate} ${slots[startIndex].startTime}`,\n `${slotDate} ${slots[endIndex].endTime}`\n );\n },\n });\n\n const expandedEvents = expandRecurringEvents({\n events,\n rangeStart: dayjs(date).startOf('day').toDate(),\n rangeEnd: dayjs(date).endOf('day').toDate(),\n expansionLimit: recurrenceExpansionLimit,\n });\n\n const eventsData = getDayViewEvents({\n events: expandedEvents,\n date,\n startTime,\n endTime,\n intervalMinutes,\n });\n\n const handleExternalDrop = useCallback(\n (e: React.DragEvent, slotIndex: number) => {\n if (!onExternalEventDrop) {\n return;\n }\n const slotDate = dayjs(date).format('YYYY-MM-DD');\n onExternalEventDrop(e.dataTransfer, `${slotDate} ${slots[slotIndex].startTime}`);\n },\n [onExternalEventDrop, date, slots]\n );\n\n const dragDrop = useDragDropHandlers({\n enabled: withEventsDragAndDrop,\n mode,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n calculateDropTarget: (slotIndex: number, draggedEvent: ScheduleEventData) => {\n const slotTime = slots[slotIndex].startTime;\n return calculateDropTime({\n draggedEvent,\n targetDate: date,\n targetSlotTime: slotTime,\n intervalMinutes,\n });\n },\n onExternalDrop: onExternalEventDrop ? handleExternalDrop : undefined,\n });\n\n const eventResize = useEventResize({\n enabled: withEventResize,\n mode,\n startTime,\n endTime,\n intervalMinutes,\n onEventResize,\n canResizeEvent,\n });\n\n const withDragHandlers = (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== 'static';\n\n const eventsNodes = eventsData.regularEvents.map((event) => {\n const eventIsAllDay = isAllDayEvent({ event, date });\n const isDraggable = !eventIsAllDay && dragDrop.isDraggableEvent(event);\n const isResizable = !eventIsAllDay && eventResize.isResizableEvent(event);\n const resizePosition = eventResize.getResizePosition(event.id);\n const eventTop = resizePosition ? resizePosition.top : event.position.top;\n const eventHeight = resizePosition ? resizePosition.height : event.position.height;\n\n return (\n <ScheduleEvent\n event={event}\n key={event.id}\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n autoSize\n draggable={isDraggable}\n withResize={isResizable}\n isResizing={resizePosition !== null}\n onResizeStart={\n isResizable\n ? (edge, e) => {\n if (timeSlotsContainerRef.current) {\n eventResize.handleResizeStart({\n event,\n edge,\n container: timeSlotsContainerRef.current,\n originalTop: event.position.top,\n originalHeight: event.position.height,\n eventDate: dayjs(date).format('YYYY-MM-DD'),\n pointerEvent: e,\n });\n }\n }\n : undefined\n }\n mode={mode}\n onClick={\n onEventClick\n ? (e) => {\n if (!eventResize.wasResizing()) {\n onEventClick(event, e);\n }\n }\n : undefined\n }\n {...stylesApiProps}\n style={{\n ...stylesApiProps.styles?.event,\n top: `${eventTop}%`,\n height: `${eventHeight}%`,\n insetInlineStart: `${event.position.offset}%`,\n width: `${event.position.width}%`,\n position: 'absolute',\n }}\n />\n );\n });\n\n const allDayEventsCount = getVisibleEvents({\n maxEvents: 2,\n totalEvents: eventsData.allDayEvents.length,\n });\n\n const allDayEventsNodes = eventsData.allDayEvents\n .slice(0, allDayEventsCount.visibleEventsCount)\n .map((event) => (\n <ScheduleEvent\n key={event.id}\n event={event}\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n style={{ maxHeight: '50%' }}\n nowrap\n autoSize\n mode={mode}\n onClick={onEventClick ? (e) => onEventClick(event, e) : undefined}\n {...stylesApiProps}\n />\n ));\n\n const dayGroup = dayjs(date).format('YYYY-MM-DD');\n\n const items = slots.map((slot, index) => {\n const isDropTarget = dragDrop.isDropTarget(index);\n const isDragSelected = slotDragSelect.isSlotSelected(index, dayGroup);\n const slotStart = `${dayGroup} ${slot.startTime}` as DateTimeStringValue;\n const slotEnd = `${dayGroup} ${slot.endTime}` as DateTimeStringValue;\n const { onClick: externalOnClick, ...externalSlotProps } =\n getTimeSlotProps?.({ start: slotStart, end: slotEnd }) || {};\n\n const handleClick =\n mode === 'static'\n ? undefined\n : (event: React.MouseEvent<HTMLButtonElement>) => {\n onTimeSlotClick?.({\n slotStart,\n slotEnd,\n nativeEvent: event,\n });\n externalOnClick?.(event);\n };\n\n return (\n <UnstyledButton\n {...getStyles('dayViewSlot')}\n key={slot.startTime}\n ref={(node) => {\n slotsRef.current[index] = node!;\n }}\n mod={{\n 'hour-start': slot.isHourStart,\n ...getBusinessHoursMod({\n time: slot.startTime,\n businessHours,\n highlightBusinessHours,\n }),\n 'drop-target': isDropTarget,\n 'drag-selected': isDragSelected,\n static: mode === 'static',\n }}\n __vars={{ '--slot-size': `${clampIntervalMinutes(intervalMinutes) / 60}` }}\n aria-label={`${getLabel('timeSlot', labels)} ${slot.startTime} - ${slot.endTime}`}\n tabIndex={mode === 'static' ? -1 : index === 0 ? 0 : -1}\n data-drag-slot-index={withDragSlotSelect && mode !== 'static' ? index : undefined}\n data-drag-slot-group={withDragSlotSelect && mode !== 'static' ? dayGroup : undefined}\n onKeyDown={mode === 'static' ? undefined : (e) => handleSlotKeyDown(e, index)}\n onPointerDown={\n withDragSlotSelect && mode !== 'static'\n ? (e) => slotDragSelect.handleSlotPointerDown(e, index, dayGroup)\n : undefined\n }\n onClick={handleClick}\n onDragOver={withDragHandlers ? (event) => event.preventDefault() : undefined}\n {...externalSlotProps}\n />\n );\n });\n\n const slotsLabels = slots.reduce<React.ReactNode[]>((acc, slot) => {\n if (slot.isHourStart) {\n const slotTime = dayjs(`${dayjs(date).format('YYYY-MM-DD')} ${slot.startTime}`);\n const label = formatDate({\n locale: ctx.getLocale(locale),\n date: slotTime,\n format: slotLabelFormat,\n });\n\n acc.push(\n <Box\n {...getStyles('dayViewSlotLabel')}\n key={slot.startTime}\n mod={getBusinessHoursMod({\n time: slot.startTime,\n businessHours,\n highlightBusinessHours,\n })}\n >\n {label}\n </Box>\n );\n }\n return acc;\n }, []);\n\n const backgroundAllDayEventNodes = eventsData.backgroundAllDayEvents.map((event) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: 'light',\n autoContrast: true,\n });\n\n const bgEventBody =\n typeof renderEventBody === 'function' ? renderEventBody(event) : event.title;\n\n const bgEventProps = {\n key: `bg-allday-${event.id}`,\n ...getStyles('dayViewBackgroundEvent', {\n style: { top: 0, height: '100%', width: '100%' },\n }),\n __vars: {\n '--bg-event-bg': colors.background,\n '--bg-event-color': colors.color,\n },\n children: bgEventBody,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, bgEventProps as any);\n }\n\n const { key: bgEventKey, ...restBgEventProps } = bgEventProps;\n return <Box key={bgEventKey} {...restBgEventProps} />;\n });\n\n const backgroundTimedEventNodes = eventsData.backgroundTimedEvents.map((event) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: 'light',\n autoContrast: true,\n });\n\n const bgEventBody =\n typeof renderEventBody === 'function' ? renderEventBody(event) : event.title;\n\n const bgEventProps = {\n key: event.id,\n ...getStyles('dayViewBackgroundEvent', {\n style: {\n top: `calc(${event.position.top}% + 1px)`,\n height: `calc(${event.position.height}% - 2px)`,\n width: '100%',\n },\n }),\n __vars: {\n '--bg-event-bg': colors.background,\n '--bg-event-color': colors.color,\n },\n children: bgEventBody,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, bgEventProps as any);\n }\n\n const { key: bgEventKey, ...restBgEventProps } = bgEventProps;\n return <Box key={bgEventKey} {...restBgEventProps} />;\n });\n\n const content = (\n <Box\n {...getStyles('dayView')}\n mod={{ static: mode === 'static', 'slot-dragging': slotDragSelect.isDragging }}\n {...others}\n >\n {withHeader && (\n <ScheduleHeaderBase\n view=\"day\"\n navigationHandlers={{\n previous: () => toDateString(dayjs(date).subtract(1, 'day')),\n next: () => toDateString(dayjs(date).add(1, 'day')),\n today: () => toDateString(dayjs()),\n }}\n control={{\n title: formatDate({ locale: ctx.getLocale(locale), date, format: headerFormat }),\n miw: 140,\n }}\n labels={labels}\n onDateChange={onDateChange}\n onViewChange={onViewChange}\n previousControlProps={previousControlProps}\n nextControlProps={nextControlProps}\n todayControlProps={todayControlProps}\n viewSelectProps={viewSelectProps}\n stylesApiProps={stylesApiProps}\n />\n )}\n\n <ScrollArea.Autosize\n scrollbarSize={4}\n {...scrollAreaProps}\n {...getStyles('dayViewScrollArea', {\n className: scrollAreaProps?.className,\n style: scrollAreaProps?.style,\n })}\n viewportRef={mergedViewportRef}\n >\n <Box {...getStyles('dayViewInner')}>\n <div {...getStyles('dayViewSlotLabels')}>\n {withAllDaySlot && (\n <Box {...getStyles('dayViewSlotLabel')} mod={{ 'all-day': true }}>\n {getLabel('allDay', labels)}\n </Box>\n )}\n {slotsLabels}\n </div>\n\n <div {...getStyles('dayViewSlots')}>\n {withAllDaySlot && (\n <div {...getStyles('dayViewAllDay')}>\n {backgroundAllDayEventNodes}\n <div {...getStyles('dayViewAllDayEvents')}>\n {allDayEventsNodes}\n {allDayEventsCount.hiddenEventsCount > 0 && (\n <MoreEvents\n events={eventsData.allDayEvents}\n moreEventsCount={allDayEventsCount.hiddenEventsCount}\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n mode={mode}\n labels={labels}\n onEventClick={onEventClick}\n {...stylesApiProps}\n {...moreEventsProps}\n />\n )}\n </div>\n <UnstyledButton\n {...getStyles('dayViewSlot')}\n mod={{ 'all-day': true, static: mode === 'static' }}\n aria-label={`${getLabel('timeSlot', labels)} ${getLabel('allDay', labels)}`}\n onClick={\n mode === 'static' || !onAllDaySlotClick\n ? undefined\n : (e) => {\n onAllDaySlotClick(dayjs(date).format('YYYY-MM-DD'), e);\n }\n }\n />\n </div>\n )}\n\n <div\n ref={timeSlotsContainerRef}\n {...getStyles('dayViewTimeSlots')}\n onDragOver={\n withDragHandlers\n ? (event) => {\n const slotIndex = getSlotIndexFromDragPoint(event);\n if (slotIndex !== null) {\n dragDrop.handleDragOver(event, slotIndex);\n }\n }\n : undefined\n }\n onDragLeave={withDragHandlers ? dragDrop.handleDragLeave : undefined}\n onDrop={\n withDragHandlers\n ? (event) => {\n const slotIndex = getSlotIndexFromDragPoint(event);\n if (slotIndex !== null) {\n dragDrop.handleDrop(event, slotIndex);\n }\n }\n : undefined\n }\n >\n {backgroundTimedEventNodes}\n\n {eventsNodes}\n\n {withCurrentTimeIndicator && (\n <CurrentTimeIndicator\n startOffset=\"calc(var(--day-view-slot-labels-width) * -1)\"\n endOffset=\"0rem\"\n topOffset=\"0rem\"\n timeBubbleStartOffset=\"calc(var(--day-view-slot-labels-width) * -1 + 30px)\"\n currentTimeFormat={slotLabelFormat}\n withTimeBubble={withCurrentTimeBubble}\n withThumb={!withCurrentTimeBubble}\n locale={locale}\n startTime={startTime}\n endTime={endTime}\n {...stylesApiProps}\n />\n )}\n {items}\n </div>\n </div>\n </Box>\n </ScrollArea.Autosize>\n </Box>\n );\n\n if (withEventsDragAndDrop) {\n return <DragContext.Provider value={dragDrop.dragContextValue}>{content}</DragContext.Provider>;\n }\n\n return content;\n});\n\nDayView.displayName = '@mantine/schedule/DayView';\nDayView.classes = classes;\nDayView.varsResolver = varsResolver;\n\nexport namespace DayView {\n export type Props = DayViewProps;\n export type Factory = DayViewFactory;\n export type StylesNames = DayViewStylesNames;\n export type CssVariables = DayViewCssVariables;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DayView.cjs","names":["getDayTimeIntervals","useSlotDragSelect","getDayViewEvents","expandRecurringEvents","useDragDropHandlers","calculateDropTime","useEventResize","isAllDayEvent","ScheduleEvent","getVisibleEvents","UnstyledButton","getBusinessHoursMod","clampIntervalMinutes","getLabel","formatDate","Box","ScheduleHeaderBase","toDateString","ScrollArea","MoreEvents","CurrentTimeIndicator","DragContext","classes"],"sources":["../../../src/components/DayView/DayView.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useCallback, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n rem,\n ScrollArea,\n ScrollAreaAutosizeProps,\n StylesApiProps,\n UnstyledButton,\n useMantineTheme,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useIsomorphicEffect, useMergedRef } from '@mantine/hooks';\nimport { useAutoScrollOnDrag } from '../../hooks/use-auto-scroll-on-drag';\nimport { useDragDropHandlers } from '../../hooks/use-drag-drop-handlers';\nimport { useEventResize } from '../../hooks/use-event-resize';\nimport { useSlotDragSelect } from '../../hooks/use-slot-drag-select';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport {\n AnyDateValue,\n DateLabelFormat,\n DateStringValue,\n DateTimeStringValue,\n ScheduleEventData,\n ScheduleMode,\n ScheduleViewLevel,\n} from '../../types';\nimport {\n calculateDropTime,\n clampIntervalMinutes,\n expandRecurringEvents,\n formatDate,\n getBusinessHoursMod,\n getDayTimeIntervals,\n getVisibleEvents,\n isAllDayEvent,\n toDateString,\n} from '../../utils';\nimport {\n CurrentTimeIndicator,\n CurrentTimeIndicatorStylesNames,\n} from '../CurrentTimeIndicator/CurrentTimeIndicator';\nimport { DragContext } from '../DragContext/DragContext';\nimport { MoreEvents, MoreEventsProps, MoreEventsStylesNames } from '../MoreEvents/MoreEvents';\nimport {\n RenderEvent,\n RenderEventBody,\n ScheduleEvent,\n ScheduleEventStylesNames,\n} from '../ScheduleEvent/ScheduleEvent';\nimport { MonthYearSelectStylesNames } from '../ScheduleHeader/MonthYearSelect/MonthYearSelect';\nimport { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';\nimport { ScheduleHeaderBase } from '../ScheduleHeader/ScheduleHeaderBase';\nimport { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';\nimport { getDayViewEvents } from './get-day-view-events/get-day-view-events';\nimport classes from './DayView.module.css';\n\nexport type DayViewStylesNames =\n | 'dayView'\n | 'dayViewInner'\n | 'dayViewScrollArea'\n | 'dayViewAllDay'\n | 'dayViewAllDayEvents'\n | 'dayViewSlot'\n | 'dayViewSlots'\n | 'dayViewTimeSlots'\n | 'dayViewSlotLabel'\n | 'dayViewSlotLabels'\n | 'dayViewBackgroundEvent'\n | MoreEventsStylesNames\n | ScheduleEventStylesNames\n | Exclude<CombinedScheduleHeaderStylesNames, MonthYearSelectStylesNames>\n | CurrentTimeIndicatorStylesNames;\n\nexport type DayViewCssVariables = {\n dayView: '--day-view-radius' | '--day-view-slot-height' | '--day-view-all-day-slot-height';\n};\n\nexport interface DayViewProps\n extends BoxProps, StylesApiProps<DayViewFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Day to display, Date object or date string in `YYYY-MM-DD` format */\n date: Date | DateStringValue;\n\n /** Called when date is changed */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Events to display, must be a stable reference */\n events?: ScheduleEventData[];\n\n /** Time slots start time, in `HH:mm:ss` format @default 00:00:00 */\n startTime?: string;\n\n /** Time slots end time in `HH:mm:ss` format @default 23:59:59 */\n endTime?: string;\n\n /** Number of minutes for each time slot @default 15 */\n intervalMinutes?: number;\n\n /** If set, the all-day slot is displayed below the header @default true */\n withAllDaySlot?: boolean;\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 /** Dayjs format for slot labels or a callback function that returns formatted value @default HH:mm */\n slotLabelFormat?: DateLabelFormat;\n\n /** Date format in the header @default MMMM D, YYYY */\n headerFormat?: DateLabelFormat;\n\n /** If set, displays a line indicating the current time. By default, displayed only for the current day. */\n withCurrentTimeIndicator?: boolean;\n\n /** If set, the time indicator displays the current time in the bubble @default true */\n withCurrentTimeBubble?: boolean;\n\n /** A function to get the current time, called on every tick. Can be used to display the current time indicator in a different timezone. @default () => dayjs() */\n getCurrentTime?: () => AnyDateValue;\n\n /** If set, the header is displayed @default true */\n withHeader?: boolean;\n\n /** Called when view level select button is clicked */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Props passed to previous month control */\n previousControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to next month control */\n nextControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to today control */\n todayControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to view level select */\n viewSelectProps?: Partial<ViewSelectProps> & DataAttributes;\n\n /** Height of 1hr slot @default 64px */\n slotHeight?: React.CSSProperties['height'];\n\n /** Height of all-day slot @default 44px */\n allDaySlotHeight?: React.CSSProperties['height'];\n\n /** Props passed down to the `ScrollArea.Autosize` component */\n scrollAreaProps?: ScrollAreaAutosizeProps & DataAttributes;\n\n /** Props passed down to `MoreEvents` component */\n moreEventsProps?: Partial<MoreEventsProps>;\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\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 /** Labels override */\n labels?: ScheduleLabelsOverride;\n\n /** If set to true, highlights business hours with white background @default false */\n highlightBusinessHours?: boolean;\n\n /** Business hours range in `HH:mm:ss` format @default ['09:00:00', '17:00:00'] */\n businessHours?: [string, string];\n\n /** If true, events can be dragged and dropped @default false */\n withEventsDragAndDrop?: boolean;\n\n /** Called when event is dropped at new time */\n onEventDrop?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be dragged */\n canDragEvent?: (event: ScheduleEventData) => boolean;\n\n /** Called when any event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when any event drag ends */\n onEventDragEnd?: () => void;\n\n /** Called when time slot is clicked */\n onTimeSlotClick?: (data: {\n slotStart: DateTimeStringValue;\n slotEnd: DateTimeStringValue;\n nativeEvent: React.MouseEvent<HTMLButtonElement>;\n }) => void;\n\n /** Called when all-day slot is clicked */\n onAllDaySlotClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Called when event is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** If set, enables drag-to-select time slot ranges @default false */\n withDragSlotSelect?: boolean;\n\n /** Called when a time slot range is selected by dragging */\n onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** Time to scroll to on initial render, in `HH:mm:ss` format */\n startScrollTime?: string;\n\n /** Called when an external item is dropped onto the schedule. Receives the `DataTransfer` object and the drop target datetime. */\n onExternalEventDrop?: (dataTransfer: DataTransfer, dropDateTime: DateTimeStringValue) => void;\n\n /** If true, events can be resized by dragging their edges @default false */\n withEventResize?: boolean;\n\n /** Called when event is resized */\n onEventResize?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be resized */\n canResizeEvent?: (event: ScheduleEventData) => boolean;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n\n /** Function to get additional props for each time slot. Receives slot start and end datetime strings. Returned props are spread onto the slot element. Event handlers returned by this function are composed with internal handlers (e.g. onClick) rather than overriding them. */\n getTimeSlotProps?: (data: {\n start: DateTimeStringValue;\n end: DateTimeStringValue;\n }) => Record<string, any> | undefined;\n}\n\nexport type DayViewFactory = Factory<{\n props: DayViewProps;\n ref: HTMLDivElement;\n stylesNames: DayViewStylesNames;\n vars: DayViewCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'DayView',\n startTime: '00:00:00',\n endTime: '23:59:59',\n intervalMinutes: 15,\n withAllDaySlot: true,\n slotLabelFormat: 'HH:mm',\n headerFormat: 'MMMM D, YYYY',\n withCurrentTimeBubble: true,\n withHeader: true,\n highlightBusinessHours: false,\n businessHours: ['09:00:00', '17:00:00'],\n withEventsDragAndDrop: false,\n withDragSlotSelect: false,\n withEventResize: false,\n mode: 'default',\n} satisfies Partial<DayViewProps>;\n\nconst varsResolver = createVarsResolver<DayViewFactory>(\n (_theme, { radius, slotHeight, allDaySlotHeight }) => ({\n dayView: {\n '--day-view-radius': radius !== undefined ? getRadius(radius) : undefined,\n '--day-view-slot-height': rem(slotHeight),\n '--day-view-all-day-slot-height': rem(allDaySlotHeight),\n },\n })\n);\n\nexport const DayView = factory<DayViewFactory>((_props) => {\n const props = useProps('DayView', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n attributes,\n vars,\n __staticSelector,\n startTime,\n endTime,\n intervalMinutes,\n withAllDaySlot,\n date,\n locale,\n slotLabelFormat,\n headerFormat,\n getCurrentTime,\n withCurrentTimeIndicator,\n withCurrentTimeBubble,\n withHeader,\n radius,\n onDateChange,\n onViewChange,\n previousControlProps,\n nextControlProps,\n todayControlProps,\n viewSelectProps,\n slotHeight,\n allDaySlotHeight,\n scrollAreaProps,\n events,\n moreEventsProps,\n renderEventBody,\n renderEvent,\n labels,\n highlightBusinessHours,\n businessHours,\n withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n mode,\n startScrollTime,\n onExternalEventDrop,\n withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n getTimeSlotProps,\n ...others\n } = props;\n\n const getStyles = useStyles<DayViewFactory>({\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: 'dayView',\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DayViewFactory>({\n classNames,\n styles,\n props,\n });\n\n const stylesApiProps = {\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n attributes,\n __staticSelector,\n radius,\n };\n\n const theme = useMantineTheme();\n const ctx = useDatesContext();\n const resolveNow = () => (getCurrentTime ? dayjs(getCurrentTime()) : dayjs());\n const showCurrentTimeIndicator =\n withCurrentTimeIndicator ?? dayjs(date).isSame(resolveNow(), 'day');\n const slots = getDayTimeIntervals({ startTime, endTime, intervalMinutes });\n const slotsRef = useRef<HTMLButtonElement[]>([]);\n const viewportRef = useRef<HTMLDivElement>(null);\n const timeSlotsContainerRef = useRef<HTMLDivElement>(null);\n const mergedViewportRef = useMergedRef(viewportRef, scrollAreaProps?.viewportRef);\n\n useAutoScrollOnDrag({\n viewportRef,\n enabled: (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== 'static',\n });\n\n useIsomorphicEffect(() => {\n if (!startScrollTime || !viewportRef.current || slotsRef.current.length === 0) {\n return;\n }\n\n const targetIndex = slots.findIndex((s) => s.startTime >= startScrollTime);\n if (targetIndex < 0) {\n return;\n }\n\n const targetSlot = slotsRef.current[targetIndex];\n if (!targetSlot) {\n return;\n }\n\n const slotRect = targetSlot.getBoundingClientRect();\n const viewportRect = viewportRef.current.getBoundingClientRect();\n viewportRef.current.scrollTo({ left: 0, top: slotRect.top - viewportRect.top });\n }, []);\n\n const getSlotIndexFromDragPoint = useCallback((event: React.DragEvent) => {\n const slotIndex = slotsRef.current.findIndex((slotNode) => {\n if (!slotNode) {\n return false;\n }\n\n const rect = slotNode.getBoundingClientRect();\n return event.clientY >= rect.top && event.clientY <= rect.bottom;\n });\n\n if (slotIndex >= 0) {\n return slotIndex;\n }\n\n const firstSlot = slotsRef.current[0];\n const lastSlot = slotsRef.current[slotsRef.current.length - 1];\n\n if (!firstSlot || !lastSlot) {\n return null;\n }\n\n const firstRect = firstSlot.getBoundingClientRect();\n const lastRect = lastSlot.getBoundingClientRect();\n\n if (event.clientY < firstRect.top) {\n return 0;\n }\n\n if (event.clientY > lastRect.bottom) {\n return slotsRef.current.length - 1;\n }\n\n return null;\n }, []);\n\n const handleSlotKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, slotIndex: number) => {\n const direction = event.key;\n if (direction === 'ArrowDown' && slotIndex < slots.length - 1) {\n event.preventDefault();\n slotsRef.current[slotIndex + 1]?.focus();\n } else if (direction === 'ArrowUp' && slotIndex > 0) {\n event.preventDefault();\n slotsRef.current[slotIndex - 1]?.focus();\n }\n };\n\n const slotDragSelect = useSlotDragSelect({\n enabled: withDragSlotSelect && mode !== 'static',\n onDragEnd: (startIndex, endIndex) => {\n if (!onSlotDragEnd) {\n return;\n }\n const slotDate = dayjs(date).format('YYYY-MM-DD');\n onSlotDragEnd(\n `${slotDate} ${slots[startIndex].startTime}`,\n `${slotDate} ${slots[endIndex].endTime}`\n );\n },\n });\n\n const expandedEvents = expandRecurringEvents({\n events,\n rangeStart: dayjs(date).startOf('day').toDate(),\n rangeEnd: dayjs(date).endOf('day').toDate(),\n expansionLimit: recurrenceExpansionLimit,\n });\n\n const eventsData = getDayViewEvents({\n events: expandedEvents,\n date,\n startTime,\n endTime,\n intervalMinutes,\n });\n\n const handleExternalDrop = useCallback(\n (e: React.DragEvent, slotIndex: number) => {\n if (!onExternalEventDrop) {\n return;\n }\n const slotDate = dayjs(date).format('YYYY-MM-DD');\n onExternalEventDrop(e.dataTransfer, `${slotDate} ${slots[slotIndex].startTime}`);\n },\n [onExternalEventDrop, date, slots]\n );\n\n const dragDrop = useDragDropHandlers({\n enabled: withEventsDragAndDrop,\n mode,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n calculateDropTarget: (slotIndex: number, draggedEvent: ScheduleEventData) => {\n const slotTime = slots[slotIndex].startTime;\n return calculateDropTime({\n draggedEvent,\n targetDate: date,\n targetSlotTime: slotTime,\n intervalMinutes,\n });\n },\n onExternalDrop: onExternalEventDrop ? handleExternalDrop : undefined,\n });\n\n const eventResize = useEventResize({\n enabled: withEventResize,\n mode,\n startTime,\n endTime,\n intervalMinutes,\n onEventResize,\n canResizeEvent,\n });\n\n const withDragHandlers = (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== 'static';\n\n const eventsNodes = eventsData.regularEvents.map((event) => {\n const eventIsAllDay = isAllDayEvent({ event, date });\n const isDraggable = !eventIsAllDay && dragDrop.isDraggableEvent(event);\n const isResizable = !eventIsAllDay && eventResize.isResizableEvent(event);\n const resizePosition = eventResize.getResizePosition(event.id);\n const eventTop = resizePosition ? resizePosition.top : event.position.top;\n const eventHeight = resizePosition ? resizePosition.height : event.position.height;\n\n return (\n <ScheduleEvent\n event={event}\n key={event.id}\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n autoSize\n draggable={isDraggable}\n withResize={isResizable}\n isResizing={resizePosition !== null}\n onResizeStart={\n isResizable\n ? (edge, e) => {\n if (timeSlotsContainerRef.current) {\n eventResize.handleResizeStart({\n event,\n edge,\n container: timeSlotsContainerRef.current,\n originalTop: event.position.top,\n originalHeight: event.position.height,\n eventDate: dayjs(date).format('YYYY-MM-DD'),\n pointerEvent: e,\n });\n }\n }\n : undefined\n }\n mode={mode}\n onClick={\n onEventClick\n ? (e) => {\n if (!eventResize.wasResizing()) {\n onEventClick(event, e);\n }\n }\n : undefined\n }\n {...stylesApiProps}\n style={{\n ...stylesApiProps.styles?.event,\n top: `${eventTop}%`,\n height: `${eventHeight}%`,\n insetInlineStart: `${event.position.offset}%`,\n width: `${event.position.width}%`,\n position: 'absolute',\n }}\n />\n );\n });\n\n const allDayEventsCount = getVisibleEvents({\n maxEvents: 2,\n totalEvents: eventsData.allDayEvents.length,\n });\n\n const allDayEventsNodes = eventsData.allDayEvents\n .slice(0, allDayEventsCount.visibleEventsCount)\n .map((event) => (\n <ScheduleEvent\n key={event.id}\n event={event}\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n style={{ maxHeight: '50%' }}\n nowrap\n autoSize\n mode={mode}\n onClick={onEventClick ? (e) => onEventClick(event, e) : undefined}\n {...stylesApiProps}\n />\n ));\n\n const dayGroup = dayjs(date).format('YYYY-MM-DD');\n\n const items = slots.map((slot, index) => {\n const isDropTarget = dragDrop.isDropTarget(index);\n const isDragSelected = slotDragSelect.isSlotSelected(index, dayGroup);\n const slotStart = `${dayGroup} ${slot.startTime}` as DateTimeStringValue;\n const slotEnd = `${dayGroup} ${slot.endTime}` as DateTimeStringValue;\n const { onClick: externalOnClick, ...externalSlotProps } =\n getTimeSlotProps?.({ start: slotStart, end: slotEnd }) || {};\n\n const handleClick =\n mode === 'static'\n ? undefined\n : (event: React.MouseEvent<HTMLButtonElement>) => {\n onTimeSlotClick?.({\n slotStart,\n slotEnd,\n nativeEvent: event,\n });\n externalOnClick?.(event);\n };\n\n return (\n <UnstyledButton\n {...getStyles('dayViewSlot')}\n key={slot.startTime}\n ref={(node) => {\n slotsRef.current[index] = node!;\n }}\n mod={{\n 'hour-start': slot.isHourStart,\n ...getBusinessHoursMod({\n time: slot.startTime,\n businessHours,\n highlightBusinessHours,\n }),\n 'drop-target': isDropTarget,\n 'drag-selected': isDragSelected,\n static: mode === 'static',\n }}\n __vars={{ '--slot-size': `${clampIntervalMinutes(intervalMinutes) / 60}` }}\n aria-label={`${getLabel('timeSlot', labels)} ${slot.startTime} - ${slot.endTime}`}\n tabIndex={mode === 'static' ? -1 : index === 0 ? 0 : -1}\n data-drag-slot-index={withDragSlotSelect && mode !== 'static' ? index : undefined}\n data-drag-slot-group={withDragSlotSelect && mode !== 'static' ? dayGroup : undefined}\n onKeyDown={mode === 'static' ? undefined : (e) => handleSlotKeyDown(e, index)}\n onPointerDown={\n withDragSlotSelect && mode !== 'static'\n ? (e) => slotDragSelect.handleSlotPointerDown(e, index, dayGroup)\n : undefined\n }\n onClick={handleClick}\n onDragOver={withDragHandlers ? (event) => event.preventDefault() : undefined}\n {...externalSlotProps}\n />\n );\n });\n\n const slotsLabels = slots.reduce<React.ReactNode[]>((acc, slot) => {\n if (slot.isHourStart) {\n const slotTime = dayjs(`${dayjs(date).format('YYYY-MM-DD')} ${slot.startTime}`);\n const label = formatDate({\n locale: ctx.getLocale(locale),\n date: slotTime,\n format: slotLabelFormat,\n });\n\n acc.push(\n <Box\n {...getStyles('dayViewSlotLabel')}\n key={slot.startTime}\n mod={getBusinessHoursMod({\n time: slot.startTime,\n businessHours,\n highlightBusinessHours,\n })}\n >\n {label}\n </Box>\n );\n }\n return acc;\n }, []);\n\n const backgroundAllDayEventNodes = eventsData.backgroundAllDayEvents.map((event) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: 'light',\n autoContrast: true,\n });\n\n const bgEventBody =\n typeof renderEventBody === 'function' ? renderEventBody(event) : event.title;\n\n const bgEventProps = {\n key: `bg-allday-${event.id}`,\n ...getStyles('dayViewBackgroundEvent', {\n style: { top: 0, height: '100%', width: '100%' },\n }),\n __vars: {\n '--bg-event-bg': colors.background,\n '--bg-event-color': colors.color,\n },\n children: bgEventBody,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, bgEventProps as any);\n }\n\n const { key: bgEventKey, ...restBgEventProps } = bgEventProps;\n return <Box key={bgEventKey} {...restBgEventProps} />;\n });\n\n const backgroundTimedEventNodes = eventsData.backgroundTimedEvents.map((event) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: 'light',\n autoContrast: true,\n });\n\n const bgEventBody =\n typeof renderEventBody === 'function' ? renderEventBody(event) : event.title;\n\n const bgEventProps = {\n key: event.id,\n ...getStyles('dayViewBackgroundEvent', {\n style: {\n top: `calc(${event.position.top}% + 1px)`,\n height: `calc(${event.position.height}% - 2px)`,\n width: '100%',\n },\n }),\n __vars: {\n '--bg-event-bg': colors.background,\n '--bg-event-color': colors.color,\n },\n children: bgEventBody,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, bgEventProps as any);\n }\n\n const { key: bgEventKey, ...restBgEventProps } = bgEventProps;\n return <Box key={bgEventKey} {...restBgEventProps} />;\n });\n\n const content = (\n <Box\n {...getStyles('dayView')}\n mod={{ static: mode === 'static', 'slot-dragging': slotDragSelect.isDragging }}\n {...others}\n >\n {withHeader && (\n <ScheduleHeaderBase\n view=\"day\"\n navigationHandlers={{\n previous: () => toDateString(dayjs(date).subtract(1, 'day')),\n next: () => toDateString(dayjs(date).add(1, 'day')),\n today: () => toDateString(resolveNow()),\n }}\n control={{\n title: formatDate({ locale: ctx.getLocale(locale), date, format: headerFormat }),\n miw: 140,\n }}\n labels={labels}\n onDateChange={onDateChange}\n onViewChange={onViewChange}\n previousControlProps={previousControlProps}\n nextControlProps={nextControlProps}\n todayControlProps={todayControlProps}\n viewSelectProps={viewSelectProps}\n stylesApiProps={stylesApiProps}\n />\n )}\n\n <ScrollArea.Autosize\n scrollbarSize={4}\n {...scrollAreaProps}\n {...getStyles('dayViewScrollArea', {\n className: scrollAreaProps?.className,\n style: scrollAreaProps?.style,\n })}\n viewportRef={mergedViewportRef}\n >\n <Box {...getStyles('dayViewInner')}>\n <div {...getStyles('dayViewSlotLabels')}>\n {withAllDaySlot && (\n <Box {...getStyles('dayViewSlotLabel')} mod={{ 'all-day': true }}>\n {getLabel('allDay', labels)}\n </Box>\n )}\n {slotsLabels}\n </div>\n\n <div {...getStyles('dayViewSlots')}>\n {withAllDaySlot && (\n <div {...getStyles('dayViewAllDay')}>\n {backgroundAllDayEventNodes}\n <div {...getStyles('dayViewAllDayEvents')}>\n {allDayEventsNodes}\n {allDayEventsCount.hiddenEventsCount > 0 && (\n <MoreEvents\n events={eventsData.allDayEvents}\n moreEventsCount={allDayEventsCount.hiddenEventsCount}\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n mode={mode}\n labels={labels}\n onEventClick={onEventClick}\n {...stylesApiProps}\n {...moreEventsProps}\n />\n )}\n </div>\n <UnstyledButton\n {...getStyles('dayViewSlot')}\n mod={{ 'all-day': true, static: mode === 'static' }}\n aria-label={`${getLabel('timeSlot', labels)} ${getLabel('allDay', labels)}`}\n onClick={\n mode === 'static' || !onAllDaySlotClick\n ? undefined\n : (e) => {\n onAllDaySlotClick(dayjs(date).format('YYYY-MM-DD'), e);\n }\n }\n />\n </div>\n )}\n\n <div\n ref={timeSlotsContainerRef}\n {...getStyles('dayViewTimeSlots')}\n onDragOver={\n withDragHandlers\n ? (event) => {\n const slotIndex = getSlotIndexFromDragPoint(event);\n if (slotIndex !== null) {\n dragDrop.handleDragOver(event, slotIndex);\n }\n }\n : undefined\n }\n onDragLeave={withDragHandlers ? dragDrop.handleDragLeave : undefined}\n onDrop={\n withDragHandlers\n ? (event) => {\n const slotIndex = getSlotIndexFromDragPoint(event);\n if (slotIndex !== null) {\n dragDrop.handleDrop(event, slotIndex);\n }\n }\n : undefined\n }\n >\n {backgroundTimedEventNodes}\n\n {eventsNodes}\n\n {showCurrentTimeIndicator && (\n <CurrentTimeIndicator\n startOffset=\"calc(var(--day-view-slot-labels-width) * -1)\"\n endOffset=\"0rem\"\n topOffset=\"0rem\"\n timeBubbleStartOffset=\"calc(var(--day-view-slot-labels-width) * -1 + 30px)\"\n currentTimeFormat={slotLabelFormat}\n withTimeBubble={withCurrentTimeBubble}\n withThumb={!withCurrentTimeBubble}\n locale={locale}\n startTime={startTime}\n endTime={endTime}\n intervalMinutes={intervalMinutes}\n getCurrentTime={getCurrentTime}\n {...stylesApiProps}\n />\n )}\n {items}\n </div>\n </div>\n </Box>\n </ScrollArea.Autosize>\n </Box>\n );\n\n if (withEventsDragAndDrop) {\n return <DragContext.Provider value={dragDrop.dragContextValue}>{content}</DragContext.Provider>;\n }\n\n return content;\n});\n\nDayView.displayName = '@mantine/schedule/DayView';\nDayView.classes = classes;\nDayView.varsResolver = varsResolver;\n\nexport namespace DayView {\n export type Props = DayViewProps;\n export type Factory = DayViewFactory;\n export type StylesNames = DayViewStylesNames;\n export type CssVariables = DayViewCssVariables;\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- require("../../_virtual/_rolldown/runtime.cjs");
3
2
  //#region packages/@mantine/schedule/src/components/DragContext/DragContext.tsx
4
3
  const DragContext = (0, require("react").createContext)({});
5
4
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"DragContext.cjs","names":[],"sources":["../../../src/components/DragContext/DragContext.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { DropTarget, ScheduleEventData } from '../../types';\n\nexport interface DragContextValue {\n /** Whether an event is currently being dragged */\n isDragging?: boolean;\n\n /** ID of the event being dragged */\n draggedEventId?: string | number | null;\n\n /** The event being dragged */\n draggedEvent?: ScheduleEventData | null;\n\n /** Current drop target information */\n dropTarget?: DropTarget | null;\n\n /** Called when drag starts */\n onDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when drag ends */\n onDragEnd?: () => void;\n\n /** Set the current drop target */\n setDropTarget?: (target: DropTarget | null) => void;\n}\n\nexport const DragContext = createContext<DragContextValue>({});\n"],"mappings":";;;AA0BA,MAAa,eAAA,kBAAA,EAAA,eAA8C,CAAC,CAAC"}
1
+ {"version":3,"file":"DragContext.cjs","names":[],"sources":["../../../src/components/DragContext/DragContext.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { DropTarget, ScheduleEventData } from '../../types';\n\nexport interface DragContextValue {\n /** Whether an event is currently being dragged */\n isDragging?: boolean;\n\n /** ID of the event being dragged */\n draggedEventId?: string | number | null;\n\n /** The event being dragged */\n draggedEvent?: ScheduleEventData | null;\n\n /** Current drop target information */\n dropTarget?: DropTarget | null;\n\n /** Called when drag starts */\n onDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when drag ends */\n onDragEnd?: () => void;\n\n /** Set the current drop target */\n setDropTarget?: (target: DropTarget | null) => void;\n}\n\nexport const DragContext = createContext<DragContextValue>({});\n"],"mappings":";;AA0BA,MAAa,eAAA,kBAAA,EAAA,eAA8C,CAAC,CAAC"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- require("../../_virtual/_rolldown/runtime.cjs");
3
2
  const require_labels = require("../../labels.cjs");
4
3
  const require_ScheduleEvent = require("../ScheduleEvent/ScheduleEvent.cjs");
5
4
  const require_MoreEvents_module = require("./MoreEvents.module.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"MoreEvents.cjs","names":["ScheduleEvent","Modal","Popover","UnstyledButton","getLabel","classes"],"sources":["../../../src/components/MoreEvents/MoreEvents.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n Modal,\n ModalProps,\n Popover,\n PopoverProps,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { RenderEvent, RenderEventBody, ScheduleEvent } from '../ScheduleEvent/ScheduleEvent';\nimport classes from './MoreEvents.module.css';\n\nexport type MoreEventsDropdownType = 'popover' | 'modal';\n\nexport type MoreEventsStylesNames = 'moreEventsButton' | 'moreEventsList' | 'moreEventsDropdown';\n\nexport interface MoreEventsProps\n extends BoxProps, StylesApiProps<MoreEventsFactory>, ElementProps<'button'> {\n /** List of events to display */\n events: ScheduleEventData[];\n\n /** Events count to use for `+X more` label */\n moreEventsCount: number;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Title for the Modal component, ignored if `dropdownType` is not 'modal' */\n modalTitle?: string;\n\n /** Type of dropdown to use for displaying more events @default 'popover' */\n dropdownType?: MoreEventsDropdownType;\n\n /** Props passed down to `Popover` component */\n popoverProps?: Partial<Omit<PopoverProps, 'children'>>;\n\n /** Props passed down to `Modal` component */\n modalProps?: Partial<Omit<ModalProps, 'children'>>;\n\n /** Called when the dropdown is closed */\n onDropdownClose?: () => void;\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\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 /** Labels override */\n labels?: ScheduleLabelsOverride;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** Called when an event inside the dropdown is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport type MoreEventsFactory = Factory<{\n props: MoreEventsProps;\n ref: HTMLButtonElement;\n stylesNames: MoreEventsStylesNames;\n}>;\n\nconst defaultProps = {\n dropdownType: 'popover',\n} satisfies Partial<MoreEventsProps>;\n\nexport const MoreEvents = factory<MoreEventsFactory>((_props) => {\n const props = useProps('MoreEvents', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n radius,\n dropdownType,\n events,\n moreEventsCount,\n popoverProps,\n modalProps,\n onDropdownClose,\n children,\n modalTitle,\n renderEventBody,\n renderEvent,\n id,\n labels,\n mode,\n onEventClick,\n ...others\n } = props;\n const [dropdownOpened, dropdownHandlers] = useDisclosure();\n\n const getStyles = useStyles<MoreEventsFactory>({\n name: 'MoreEvents',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n rootSelector: 'moreEventsButton',\n });\n\n const handleClose = () => {\n dropdownHandlers.close();\n onDropdownClose?.();\n };\n\n const eventsList = (\n <div {...getStyles('moreEventsList')}>\n {events.map((event) => (\n <ScheduleEvent\n key={event.id}\n radius={radius}\n event={event}\n size=\"md\"\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n mode={mode}\n onClick={onEventClick ? (e) => onEventClick(event, e) : undefined}\n >\n {event.title}\n </ScheduleEvent>\n ))}\n </div>\n );\n\n return (\n <>\n {dropdownType === 'modal' && (\n <Modal\n opened={dropdownOpened}\n onClose={handleClose}\n unstyled={unstyled}\n radius={radius}\n title={modalTitle}\n {...modalProps}\n >\n {eventsList}\n </Modal>\n )}\n\n <Popover\n position=\"bottom-start\"\n width={260}\n opened={dropdownOpened}\n trapFocus\n returnFocus={false}\n unstyled={unstyled}\n disabled={popoverProps?.disabled || dropdownType === 'modal'}\n radius={radius}\n transitionProps={{ transition: 'pop', duration: 120 }}\n offset={-46}\n id={id}\n {...popoverProps}\n onChange={(_opened) => {\n if (!_opened) {\n popoverProps?.onChange?.(_opened);\n handleClose();\n }\n }}\n >\n <Popover.Target>\n <UnstyledButton\n {...getStyles('moreEventsButton')}\n mod={{ static: mode === 'static' }}\n onClick={() => dropdownHandlers.toggle()}\n {...others}\n >\n {getLabel('moreLabel', labels)(moreEventsCount)}\n </UnstyledButton>\n </Popover.Target>\n\n <Popover.Dropdown {...getStyles('moreEventsDropdown')}>{eventsList}</Popover.Dropdown>\n </Popover>\n </>\n );\n});\n\nMoreEvents.displayName = '@mantine/schedule/MoreEvents';\nMoreEvents.classes = classes;\n"],"mappings":";;;;;;;;;AAyEA,MAAM,eAAe,EACnB,cAAc,UAChB;AAEA,MAAa,cAAA,GAAA,cAAA,UAAyC,WAAW;CAC/D,MAAM,SAAA,GAAA,cAAA,UAAiB,cAAc,cAAc,MAAM;CACzD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,QACA,cACA,QACA,iBACA,cACA,YACA,iBACA,UACA,YACA,iBACA,aACA,IACA,QACA,MACA,cACA,GAAG,WACD;CACJ,MAAM,CAAC,gBAAgB,qBAAA,GAAA,eAAA,eAAkC;CAEzD,MAAM,aAAA,GAAA,cAAA,WAAyC;EAC7C,MAAM;EACN,SAAA,0BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,oBAAoB;EACxB,iBAAiB,MAAM;EACvB,kBAAkB;CACpB;CAEA,MAAM,aACJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,GAAI,UAAU,gBAAgB;YAChC,OAAO,KAAK,UACX,iBAAA,GAAA,kBAAA,KAACA,sBAAAA,eAAD;GAEU;GACD;GACP,MAAK;GACY;GACJ;GACP;GACN,SAAS,gBAAgB,MAAM,aAAa,OAAO,CAAC,IAAI,KAAA;aAEvD,MAAM;EACM,GAVR,MAAM,EAUE,CAChB;CACE,CAAA;CAGP,OACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,iBAAiB,WAChB,iBAAA,GAAA,kBAAA,KAACC,cAAAA,OAAD;EACE,QAAQ;EACR,SAAS;EACC;EACF;EACR,OAAO;EACP,GAAI;YAEH;CACI,CAAA,GAGT,iBAAA,GAAA,kBAAA,MAACC,cAAAA,SAAD;EACE,UAAS;EACT,OAAO;EACP,QAAQ;EACR,WAAA;EACA,aAAa;EACH;EACV,UAAU,cAAc,YAAY,iBAAiB;EAC7C;EACR,iBAAiB;GAAE,YAAY;GAAO,UAAU;EAAI;EACpD,QAAQ;EACJ;EACJ,GAAI;EACJ,WAAW,YAAY;GACrB,IAAI,CAAC,SAAS;IACZ,cAAc,WAAW,OAAO;IAChC,YAAY;GACd;EACF;YAlBF,CAoBE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,QAAQ,QAAT,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,cAAAA,gBAAD;GACE,GAAI,UAAU,kBAAkB;GAChC,KAAK,EAAE,QAAQ,SAAS,SAAS;GACjC,eAAe,iBAAiB,OAAO;GACvC,GAAI;aAEHC,eAAAA,SAAS,aAAa,MAAM,EAAE,eAAe;EAChC,CAAA,EACF,CAAA,GAEhB,iBAAA,GAAA,kBAAA,KAACF,cAAAA,QAAQ,UAAT;GAAkB,GAAI,UAAU,oBAAoB;aAAI;EAA6B,CAAA,CAC9E;GACT,EAAA,CAAA;AAEN,CAAC;AAED,WAAW,cAAc;AACzB,WAAW,UAAUG,0BAAAA"}
1
+ {"version":3,"file":"MoreEvents.cjs","names":["ScheduleEvent","Modal","Popover","UnstyledButton","getLabel","classes"],"sources":["../../../src/components/MoreEvents/MoreEvents.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n Modal,\n ModalProps,\n Popover,\n PopoverProps,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { RenderEvent, RenderEventBody, ScheduleEvent } from '../ScheduleEvent/ScheduleEvent';\nimport classes from './MoreEvents.module.css';\n\nexport type MoreEventsDropdownType = 'popover' | 'modal';\n\nexport type MoreEventsStylesNames = 'moreEventsButton' | 'moreEventsList' | 'moreEventsDropdown';\n\nexport interface MoreEventsProps\n extends BoxProps, StylesApiProps<MoreEventsFactory>, ElementProps<'button'> {\n /** List of events to display */\n events: ScheduleEventData[];\n\n /** Events count to use for `+X more` label */\n moreEventsCount: number;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Title for the Modal component, ignored if `dropdownType` is not 'modal' */\n modalTitle?: string;\n\n /** Type of dropdown to use for displaying more events @default 'popover' */\n dropdownType?: MoreEventsDropdownType;\n\n /** Props passed down to `Popover` component */\n popoverProps?: Partial<Omit<PopoverProps, 'children'>>;\n\n /** Props passed down to `Modal` component */\n modalProps?: Partial<Omit<ModalProps, 'children'>>;\n\n /** Called when the dropdown is closed */\n onDropdownClose?: () => void;\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\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 /** Labels override */\n labels?: ScheduleLabelsOverride;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** Called when an event inside the dropdown is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport type MoreEventsFactory = Factory<{\n props: MoreEventsProps;\n ref: HTMLButtonElement;\n stylesNames: MoreEventsStylesNames;\n}>;\n\nconst defaultProps = {\n dropdownType: 'popover',\n} satisfies Partial<MoreEventsProps>;\n\nexport const MoreEvents = factory<MoreEventsFactory>((_props) => {\n const props = useProps('MoreEvents', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n radius,\n dropdownType,\n events,\n moreEventsCount,\n popoverProps,\n modalProps,\n onDropdownClose,\n children,\n modalTitle,\n renderEventBody,\n renderEvent,\n id,\n labels,\n mode,\n onEventClick,\n ...others\n } = props;\n const [dropdownOpened, dropdownHandlers] = useDisclosure();\n\n const getStyles = useStyles<MoreEventsFactory>({\n name: 'MoreEvents',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n rootSelector: 'moreEventsButton',\n });\n\n const handleClose = () => {\n dropdownHandlers.close();\n onDropdownClose?.();\n };\n\n const eventsList = (\n <div {...getStyles('moreEventsList')}>\n {events.map((event) => (\n <ScheduleEvent\n key={event.id}\n radius={radius}\n event={event}\n size=\"md\"\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n mode={mode}\n onClick={onEventClick ? (e) => onEventClick(event, e) : undefined}\n >\n {event.title}\n </ScheduleEvent>\n ))}\n </div>\n );\n\n return (\n <>\n {dropdownType === 'modal' && (\n <Modal\n opened={dropdownOpened}\n onClose={handleClose}\n unstyled={unstyled}\n radius={radius}\n title={modalTitle}\n {...modalProps}\n >\n {eventsList}\n </Modal>\n )}\n\n <Popover\n position=\"bottom-start\"\n width={260}\n opened={dropdownOpened}\n trapFocus\n returnFocus={false}\n unstyled={unstyled}\n disabled={popoverProps?.disabled || dropdownType === 'modal'}\n radius={radius}\n transitionProps={{ transition: 'pop', duration: 120 }}\n offset={-46}\n id={id}\n {...popoverProps}\n onChange={(_opened) => {\n if (!_opened) {\n popoverProps?.onChange?.(_opened);\n handleClose();\n }\n }}\n >\n <Popover.Target>\n <UnstyledButton\n {...getStyles('moreEventsButton')}\n mod={{ static: mode === 'static' }}\n onClick={() => dropdownHandlers.toggle()}\n {...others}\n >\n {getLabel('moreLabel', labels)(moreEventsCount)}\n </UnstyledButton>\n </Popover.Target>\n\n <Popover.Dropdown {...getStyles('moreEventsDropdown')}>{eventsList}</Popover.Dropdown>\n </Popover>\n </>\n );\n});\n\nMoreEvents.displayName = '@mantine/schedule/MoreEvents';\nMoreEvents.classes = classes;\n"],"mappings":";;;;;;;;AAyEA,MAAM,eAAe,EACnB,cAAc,UAChB;AAEA,MAAa,cAAA,GAAA,cAAA,UAAyC,WAAW;CAC/D,MAAM,SAAA,GAAA,cAAA,UAAiB,cAAc,cAAc,MAAM;CACzD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,QACA,cACA,QACA,iBACA,cACA,YACA,iBACA,UACA,YACA,iBACA,aACA,IACA,QACA,MACA,cACA,GAAG,WACD;CACJ,MAAM,CAAC,gBAAgB,qBAAA,GAAA,eAAA,eAAkC;CAEzD,MAAM,aAAA,GAAA,cAAA,WAAyC;EAC7C,MAAM;EACN,SAAA,0BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,oBAAoB;EACxB,iBAAiB,MAAM;EACvB,kBAAkB;CACpB;CAEA,MAAM,aACJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,GAAI,UAAU,gBAAgB;YAChC,OAAO,KAAK,UACX,iBAAA,GAAA,kBAAA,KAACA,sBAAAA,eAAD;GAEU;GACD;GACP,MAAK;GACY;GACJ;GACP;GACN,SAAS,gBAAgB,MAAM,aAAa,OAAO,CAAC,IAAI,KAAA;aAEvD,MAAM;EACM,GAVR,MAAM,EAUE,CAChB;CACE,CAAA;CAGP,OACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,iBAAiB,WAChB,iBAAA,GAAA,kBAAA,KAACC,cAAAA,OAAD;EACE,QAAQ;EACR,SAAS;EACC;EACF;EACR,OAAO;EACP,GAAI;YAEH;CACI,CAAA,GAGT,iBAAA,GAAA,kBAAA,MAACC,cAAAA,SAAD;EACE,UAAS;EACT,OAAO;EACP,QAAQ;EACR,WAAA;EACA,aAAa;EACH;EACV,UAAU,cAAc,YAAY,iBAAiB;EAC7C;EACR,iBAAiB;GAAE,YAAY;GAAO,UAAU;EAAI;EACpD,QAAQ;EACJ;EACJ,GAAI;EACJ,WAAW,YAAY;GACrB,IAAI,CAAC,SAAS;IACZ,cAAc,WAAW,OAAO;IAChC,YAAY;GACd;EACF;YAlBF,CAoBE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,QAAQ,QAAT,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,cAAAA,gBAAD;GACE,GAAI,UAAU,kBAAkB;GAChC,KAAK,EAAE,QAAQ,SAAS,SAAS;GACjC,eAAe,iBAAiB,OAAO;GACvC,GAAI;aAEHC,eAAAA,SAAS,aAAa,MAAM,EAAE,eAAe;EAChC,CAAA,EACF,CAAA,GAEhB,iBAAA,GAAA,kBAAA,KAACF,cAAAA,QAAQ,UAAT;GAAkB,GAAI,UAAU,oBAAoB;aAAI;EAA6B,CAAA,CAC9E;GACT,EAAA,CAAA;AAEN,CAAC;AAED,WAAW,cAAc;AACzB,WAAW,UAAUG,0BAAAA"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- require("../../_virtual/_rolldown/runtime.cjs");
3
2
  const require_DayView = require("../DayView/DayView.cjs");
4
3
  const require_MobileMonthView = require("../MobileMonthView/MobileMonthView.cjs");
5
4
  const require_MonthView = require("../MonthView/MonthView.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"Schedule.cjs","names":["DayView","WeekView","MonthView","YearView","MobileMonthView","Box","classes"],"sources":["../../../src/components/Schedule/Schedule.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n DateStringValue,\n DateTimeStringValue,\n ScheduleEventData,\n ScheduleMode,\n ScheduleViewLevel,\n} from '../../types';\nimport { DayView, DayViewProps, DayViewStylesNames } from '../DayView/DayView';\nimport {\n MobileMonthView,\n MobileMonthViewProps,\n MobileMonthViewStylesNames,\n} from '../MobileMonthView/MobileMonthView';\nimport { MonthView, MonthViewProps, MonthViewStylesNames } from '../MonthView/MonthView';\nimport { RenderEventBody } from '../ScheduleEvent/ScheduleEvent';\nimport { WeekView, WeekViewProps, WeekViewStylesNames } from '../WeekView/WeekView';\nimport { YearView, YearViewProps, YearViewStylesNames } from '../YearView/YearView';\nimport classes from './Schedule.module.css';\n\nexport type ScheduleStylesNames =\n | 'root'\n | 'desktopView'\n | 'mobileView'\n | DayViewStylesNames\n | WeekViewStylesNames\n | MonthViewStylesNames\n | YearViewStylesNames\n | MobileMonthViewStylesNames;\n\nexport type ScheduleLayout = 'default' | 'responsive';\n\ntype ScheduleCommonProps =\n | 'date'\n | 'onDateChange'\n | 'events'\n | 'locale'\n | 'radius'\n | 'labels'\n | 'renderEventBody'\n | 'withEventsDragAndDrop'\n | 'onEventDrop'\n | 'canDragEvent'\n | 'onEventDragStart'\n | 'onEventDragEnd'\n | 'onTimeSlotClick'\n | 'onAllDaySlotClick'\n | 'onEventClick'\n | 'onDayClick'\n | 'onMonthClick'\n | 'withDragSlotSelect'\n | 'onSlotDragEnd'\n | 'view'\n | 'onViewChange'\n | 'mode'\n | 'onExternalEventDrop'\n | 'withEventResize'\n | 'onEventResize'\n | 'canResizeEvent'\n | 'recurrenceExpansionLimit';\n\ntype ScheduleViewProps<T> = Partial<Omit<T, ScheduleCommonProps>>;\n\nexport interface ScheduleProps\n extends BoxProps, StylesApiProps<ScheduleFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Current date to display (controlled) */\n date?: Date | DateStringValue;\n\n /** Default date (uncontrolled) */\n defaultDate?: Date | DateStringValue;\n\n /** Called when date changes via navigation */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Current view level (controlled) */\n view?: ScheduleViewLevel;\n\n /** Default view level (uncontrolled) */\n defaultView?: ScheduleViewLevel;\n\n /** Called when view level changes */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Events to display across all views */\n events?: ScheduleEventData[];\n\n /** Locale for date formatting (overrides `DatesProvider`) */\n locale?: string;\n\n /** Key of theme.radius or any valid CSS value to set border-radius */\n radius?: MantineRadius;\n\n /** Labels override for i18n */\n labels?: ScheduleLabelsOverride;\n\n /** Custom event body renderer */\n renderEventBody?: RenderEventBody;\n\n /** Enable drag and drop for events @default false */\n withEventsDragAndDrop?: boolean;\n\n /** Called when event is dropped */\n onEventDrop?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be dragged */\n canDragEvent?: (event: ScheduleEventData) => boolean;\n\n /** Called when any event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when any event drag ends */\n onEventDragEnd?: () => void;\n\n /** Called when time slot is clicked in DayView/WeekView */\n onTimeSlotClick?: (data: {\n slotStart: DateTimeStringValue;\n slotEnd: DateTimeStringValue;\n nativeEvent: React.MouseEvent<HTMLButtonElement>;\n }) => void;\n\n /** Called when all-day slot is clicked in DayView/WeekView */\n onAllDaySlotClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Called when a day is clicked in MonthView and YearView */\n onDayClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** If set, enables drag-to-select slot ranges @default false */\n withDragSlotSelect?: boolean;\n\n /** Called when a slot range is selected by dragging */\n onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n /** Called when event is clicked in any view */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Interaction mode:\n * - `'default'` allows all interactions\n * - `'static'` disables event interactions\n * @default 'default' */\n mode?: ScheduleMode;\n\n /** Called when an external item is dropped onto the schedule. Receives the `DataTransfer` object and the drop target datetime. */\n onExternalEventDrop?: (dataTransfer: DataTransfer, dropDateTime: DateTimeStringValue) => void;\n\n /** If true, events can be resized by dragging their edges @default false */\n withEventResize?: boolean;\n\n /** Called when event is resized */\n onEventResize?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be resized */\n canResizeEvent?: (event: ScheduleEventData) => boolean;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n\n /** Layout mode:\n * - `'default'` uses same views on all screen sizes\n * - `'responsive'` switches to YearView/MobileMonthView on small screens\n * @default 'default' */\n layout?: ScheduleLayout;\n\n /** Props specific to DayView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n dayViewProps?: ScheduleViewProps<DayViewProps>;\n\n /** Props specific to WeekView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n weekViewProps?: ScheduleViewProps<WeekViewProps>;\n\n /** Props specific to MonthView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n monthViewProps?: ScheduleViewProps<MonthViewProps>;\n\n /** Props specific to YearView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n yearViewProps?: ScheduleViewProps<YearViewProps>;\n\n /** Props specific to MobileMonthView (used in responsive layout) */\n mobileMonthViewProps?: ScheduleViewProps<MobileMonthViewProps>;\n}\n\nexport type ScheduleFactory = Factory<{\n props: ScheduleProps;\n ref: HTMLDivElement;\n stylesNames: ScheduleStylesNames;\n}>;\n\nconst defaultProps: Partial<ScheduleProps> = {\n defaultView: 'week',\n mode: 'default',\n layout: 'default',\n};\n\nexport const Schedule = factory<ScheduleFactory>((_props) => {\n const props = useProps('Schedule', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n defaultDate,\n onDateChange,\n view,\n defaultView,\n onViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n layout,\n dayViewProps,\n weekViewProps,\n monthViewProps,\n yearViewProps,\n mobileMonthViewProps,\n __staticSelector,\n mod,\n ...others\n } = props;\n\n const getStyles = useStyles<ScheduleFactory>({\n name: __staticSelector || 'Schedule',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n });\n\n const [_view, _setView] = useUncontrolled<ScheduleViewLevel>({\n value: view,\n defaultValue: defaultView,\n onChange: onViewChange,\n });\n\n const [_date, _setDate] = useUncontrolled<Date | DateStringValue>({\n value: date,\n defaultValue: defaultDate ?? new Date(),\n });\n\n const handleDateChange = (newDate: DateStringValue) => {\n _setDate(newDate);\n onDateChange?.(newDate);\n };\n\n const handleViewChange = (newView: ScheduleViewLevel) => {\n _setView(newView);\n onViewChange?.(newView);\n };\n\n const handleMonthClick = (monthDate: DateStringValue) => {\n handleDateChange(monthDate);\n handleViewChange('month');\n };\n\n const commonProps = {\n date: _date,\n onDateChange: handleDateChange,\n view: _view,\n onViewChange: handleViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop: mode === 'static' ? false : withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize: mode === 'static' ? false : withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n };\n\n const desktopContent = (() => {\n switch (_view) {\n case 'day':\n return <DayView {...commonProps} {...dayViewProps} />;\n case 'week':\n return <WeekView {...commonProps} {...weekViewProps} />;\n case 'month':\n return <MonthView {...commonProps} {...monthViewProps} />;\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n const mobileContent = (() => {\n switch (_view) {\n case 'day':\n case 'week':\n case 'month':\n return (\n <MobileMonthView\n date={_date}\n onDateChange={handleDateChange}\n events={events}\n locale={locale}\n radius={radius}\n labels={labels}\n mode={mode}\n recurrenceExpansionLimit={recurrenceExpansionLimit}\n onYearClick={() => handleViewChange('year')}\n onEventClick={onEventClick}\n {...mobileMonthViewProps}\n />\n );\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n if (layout === 'responsive') {\n return (\n <Box {...getStyles('root')} mod={[{ layout }, mod]} {...others}>\n <Box {...getStyles('desktopView')}>{desktopContent}</Box>\n <Box {...getStyles('mobileView')}>{mobileContent}</Box>\n </Box>\n );\n }\n\n return (\n <Box {...getStyles('root')} mod={mod} {...others}>\n {desktopContent}\n </Box>\n );\n});\n\nSchedule.displayName = '@mantine/schedule/Schedule';\nSchedule.classes = classes;\n\nexport namespace Schedule {\n export type Props = ScheduleProps;\n export type StylesNames = ScheduleStylesNames;\n export type Factory = ScheduleFactory;\n export type Layout = ScheduleLayout;\n}\n"],"mappings":";;;;;;;;;;;;AAgNA,MAAM,eAAuC;CAC3C,aAAa;CACb,MAAM;CACN,QAAQ;AACV;AAEA,MAAa,YAAA,GAAA,cAAA,UAAqC,WAAW;CAC3D,MAAM,SAAA,GAAA,cAAA,UAAiB,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,aACA,cACA,MACA,aACA,cACA,QACA,QACA,QACA,QACA,iBACA,uBACA,aACA,cACA,kBACA,gBACA,iBACA,mBACA,YACA,cACA,oBACA,eACA,qBACA,iBACA,eACA,gBACA,0BACA,MACA,QACA,cACA,eACA,gBACA,eACA,sBACA,kBACA,KACA,GAAG,WACD;CAEJ,MAAM,aAAA,GAAA,cAAA,WAAuC;EAC3C,MAAM,oBAAoB;EAC1B,SAAA,wBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,CAAC,OAAO,aAAA,GAAA,eAAA,iBAA+C;EAC3D,OAAO;EACP,cAAc;EACd,UAAU;CACZ,CAAC;CAED,MAAM,CAAC,OAAO,aAAA,GAAA,eAAA,iBAAoD;EAChE,OAAO;EACP,cAAc,+BAAe,IAAI,KAAK;CACxC,CAAC;CAED,MAAM,oBAAoB,YAA6B;EACrD,SAAS,OAAO;EAChB,eAAe,OAAO;CACxB;CAEA,MAAM,oBAAoB,YAA+B;EACvD,SAAS,OAAO;EAChB,eAAe,OAAO;CACxB;CAEA,MAAM,oBAAoB,cAA+B;EACvD,iBAAiB,SAAS;EAC1B,iBAAiB,OAAO;CAC1B;CAEA,MAAM,cAAc;EAClB,MAAM;EACN,cAAc;EACd,MAAM;EACN,cAAc;EACd;EACA;EACA;EACA;EACA;EACA,uBAAuB,SAAS,WAAW,QAAQ;EACnD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB,SAAS,WAAW,QAAQ;EAC7C;EACA;EACA;EACA;CACF;CAEA,MAAM,wBAAwB;EAC5B,QAAQ,OAAR;GACE,KAAK,OACH,OAAO,iBAAA,GAAA,kBAAA,KAACA,gBAAAA,SAAD;IAAS,GAAI;IAAa,GAAI;GAAe,CAAA;GACtD,KAAK,QACH,OAAO,iBAAA,GAAA,kBAAA,KAACC,iBAAAA,UAAD;IAAU,GAAI;IAAa,GAAI;GAAgB,CAAA;GACxD,KAAK,SACH,OAAO,iBAAA,GAAA,kBAAA,KAACC,kBAAAA,WAAD;IAAW,GAAI;IAAa,GAAI;GAAiB,CAAA;GAC1D,KAAK,QACH,OAAO,iBAAA,GAAA,kBAAA,KAACC,iBAAAA,UAAD;IAAU,GAAI;IAAa,cAAc;IAAkB,GAAI;GAAgB,CAAA;GACxF,SACE,OAAO;EACX;CACF,GAAG;CAEH,MAAM,uBAAuB;EAC3B,QAAQ,OAAR;GACE,KAAK;GACL,KAAK;GACL,KAAK,SACH,OACE,iBAAA,GAAA,kBAAA,KAACC,wBAAAA,iBAAD;IACE,MAAM;IACN,cAAc;IACN;IACA;IACA;IACA;IACF;IACoB;IAC1B,mBAAmB,iBAAiB,MAAM;IAC5B;IACd,GAAI;GACL,CAAA;GAEL,KAAK,QACH,OAAO,iBAAA,GAAA,kBAAA,KAACD,iBAAAA,UAAD;IAAU,GAAI;IAAa,cAAc;IAAkB,GAAI;GAAgB,CAAA;GACxF,SACE,OAAO;EACX;CACF,GAAG;CAEH,IAAI,WAAW,cACb,OACE,iBAAA,GAAA,kBAAA,MAACE,cAAAA,KAAD;EAAK,GAAI,UAAU,MAAM;EAAG,KAAK,CAAC,EAAE,OAAO,GAAG,GAAG;EAAG,GAAI;YAAxD,CACE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,KAAD;GAAK,GAAI,UAAU,aAAa;aAAI;EAAoB,CAAA,GACxD,iBAAA,GAAA,kBAAA,KAACA,cAAAA,KAAD;GAAK,GAAI,UAAU,YAAY;aAAI;EAAmB,CAAA,CACnD;;CAIT,OACE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,KAAD;EAAK,GAAI,UAAU,MAAM;EAAQ;EAAK,GAAI;YACvC;CACE,CAAA;AAET,CAAC;AAED,SAAS,cAAc;AACvB,SAAS,UAAUC,wBAAAA"}
1
+ {"version":3,"file":"Schedule.cjs","names":["DayView","WeekView","MonthView","YearView","MobileMonthView","Box","classes"],"sources":["../../../src/components/Schedule/Schedule.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n DateStringValue,\n DateTimeStringValue,\n ScheduleEventData,\n ScheduleMode,\n ScheduleViewLevel,\n} from '../../types';\nimport { DayView, DayViewProps, DayViewStylesNames } from '../DayView/DayView';\nimport {\n MobileMonthView,\n MobileMonthViewProps,\n MobileMonthViewStylesNames,\n} from '../MobileMonthView/MobileMonthView';\nimport { MonthView, MonthViewProps, MonthViewStylesNames } from '../MonthView/MonthView';\nimport { RenderEventBody } from '../ScheduleEvent/ScheduleEvent';\nimport { WeekView, WeekViewProps, WeekViewStylesNames } from '../WeekView/WeekView';\nimport { YearView, YearViewProps, YearViewStylesNames } from '../YearView/YearView';\nimport classes from './Schedule.module.css';\n\nexport type ScheduleStylesNames =\n | 'root'\n | 'desktopView'\n | 'mobileView'\n | DayViewStylesNames\n | WeekViewStylesNames\n | MonthViewStylesNames\n | YearViewStylesNames\n | MobileMonthViewStylesNames;\n\nexport type ScheduleLayout = 'default' | 'responsive';\n\ntype ScheduleCommonProps =\n | 'date'\n | 'onDateChange'\n | 'events'\n | 'locale'\n | 'radius'\n | 'labels'\n | 'renderEventBody'\n | 'withEventsDragAndDrop'\n | 'onEventDrop'\n | 'canDragEvent'\n | 'onEventDragStart'\n | 'onEventDragEnd'\n | 'onTimeSlotClick'\n | 'onAllDaySlotClick'\n | 'onEventClick'\n | 'onDayClick'\n | 'onMonthClick'\n | 'withDragSlotSelect'\n | 'onSlotDragEnd'\n | 'view'\n | 'onViewChange'\n | 'mode'\n | 'onExternalEventDrop'\n | 'withEventResize'\n | 'onEventResize'\n | 'canResizeEvent'\n | 'recurrenceExpansionLimit';\n\ntype ScheduleViewProps<T> = Partial<Omit<T, ScheduleCommonProps>>;\n\nexport interface ScheduleProps\n extends BoxProps, StylesApiProps<ScheduleFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Current date to display (controlled) */\n date?: Date | DateStringValue;\n\n /** Default date (uncontrolled) */\n defaultDate?: Date | DateStringValue;\n\n /** Called when date changes via navigation */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Current view level (controlled) */\n view?: ScheduleViewLevel;\n\n /** Default view level (uncontrolled) */\n defaultView?: ScheduleViewLevel;\n\n /** Called when view level changes */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Events to display across all views */\n events?: ScheduleEventData[];\n\n /** Locale for date formatting (overrides `DatesProvider`) */\n locale?: string;\n\n /** Key of theme.radius or any valid CSS value to set border-radius */\n radius?: MantineRadius;\n\n /** Labels override for i18n */\n labels?: ScheduleLabelsOverride;\n\n /** Custom event body renderer */\n renderEventBody?: RenderEventBody;\n\n /** Enable drag and drop for events @default false */\n withEventsDragAndDrop?: boolean;\n\n /** Called when event is dropped */\n onEventDrop?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be dragged */\n canDragEvent?: (event: ScheduleEventData) => boolean;\n\n /** Called when any event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when any event drag ends */\n onEventDragEnd?: () => void;\n\n /** Called when time slot is clicked in DayView/WeekView */\n onTimeSlotClick?: (data: {\n slotStart: DateTimeStringValue;\n slotEnd: DateTimeStringValue;\n nativeEvent: React.MouseEvent<HTMLButtonElement>;\n }) => void;\n\n /** Called when all-day slot is clicked in DayView/WeekView */\n onAllDaySlotClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Called when a day is clicked in MonthView and YearView */\n onDayClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** If set, enables drag-to-select slot ranges @default false */\n withDragSlotSelect?: boolean;\n\n /** Called when a slot range is selected by dragging */\n onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n /** Called when event is clicked in any view */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Interaction mode:\n * - `'default'` allows all interactions\n * - `'static'` disables event interactions\n * @default 'default' */\n mode?: ScheduleMode;\n\n /** Called when an external item is dropped onto the schedule. Receives the `DataTransfer` object and the drop target datetime. */\n onExternalEventDrop?: (dataTransfer: DataTransfer, dropDateTime: DateTimeStringValue) => void;\n\n /** If true, events can be resized by dragging their edges @default false */\n withEventResize?: boolean;\n\n /** Called when event is resized */\n onEventResize?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be resized */\n canResizeEvent?: (event: ScheduleEventData) => boolean;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n\n /** Layout mode:\n * - `'default'` uses same views on all screen sizes\n * - `'responsive'` switches to YearView/MobileMonthView on small screens\n * @default 'default' */\n layout?: ScheduleLayout;\n\n /** Props specific to DayView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n dayViewProps?: ScheduleViewProps<DayViewProps>;\n\n /** Props specific to WeekView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n weekViewProps?: ScheduleViewProps<WeekViewProps>;\n\n /** Props specific to MonthView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n monthViewProps?: ScheduleViewProps<MonthViewProps>;\n\n /** Props specific to YearView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n yearViewProps?: ScheduleViewProps<YearViewProps>;\n\n /** Props specific to MobileMonthView (used in responsive layout) */\n mobileMonthViewProps?: ScheduleViewProps<MobileMonthViewProps>;\n}\n\nexport type ScheduleFactory = Factory<{\n props: ScheduleProps;\n ref: HTMLDivElement;\n stylesNames: ScheduleStylesNames;\n}>;\n\nconst defaultProps: Partial<ScheduleProps> = {\n defaultView: 'week',\n mode: 'default',\n layout: 'default',\n};\n\nexport const Schedule = factory<ScheduleFactory>((_props) => {\n const props = useProps('Schedule', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n defaultDate,\n onDateChange,\n view,\n defaultView,\n onViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n layout,\n dayViewProps,\n weekViewProps,\n monthViewProps,\n yearViewProps,\n mobileMonthViewProps,\n __staticSelector,\n mod,\n ...others\n } = props;\n\n const getStyles = useStyles<ScheduleFactory>({\n name: __staticSelector || 'Schedule',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n });\n\n const [_view, _setView] = useUncontrolled<ScheduleViewLevel>({\n value: view,\n defaultValue: defaultView,\n onChange: onViewChange,\n });\n\n const [_date, _setDate] = useUncontrolled<Date | DateStringValue>({\n value: date,\n defaultValue: defaultDate ?? new Date(),\n });\n\n const handleDateChange = (newDate: DateStringValue) => {\n _setDate(newDate);\n onDateChange?.(newDate);\n };\n\n const handleViewChange = (newView: ScheduleViewLevel) => {\n _setView(newView);\n onViewChange?.(newView);\n };\n\n const handleMonthClick = (monthDate: DateStringValue) => {\n handleDateChange(monthDate);\n handleViewChange('month');\n };\n\n const commonProps = {\n date: _date,\n onDateChange: handleDateChange,\n view: _view,\n onViewChange: handleViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop: mode === 'static' ? false : withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize: mode === 'static' ? false : withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n };\n\n const desktopContent = (() => {\n switch (_view) {\n case 'day':\n return <DayView {...commonProps} {...dayViewProps} />;\n case 'week':\n return <WeekView {...commonProps} {...weekViewProps} />;\n case 'month':\n return <MonthView {...commonProps} {...monthViewProps} />;\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n const mobileContent = (() => {\n switch (_view) {\n case 'day':\n case 'week':\n case 'month':\n return (\n <MobileMonthView\n date={_date}\n onDateChange={handleDateChange}\n events={events}\n locale={locale}\n radius={radius}\n labels={labels}\n mode={mode}\n recurrenceExpansionLimit={recurrenceExpansionLimit}\n onYearClick={() => handleViewChange('year')}\n onEventClick={onEventClick}\n {...mobileMonthViewProps}\n />\n );\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n if (layout === 'responsive') {\n return (\n <Box {...getStyles('root')} mod={[{ layout }, mod]} {...others}>\n <Box {...getStyles('desktopView')}>{desktopContent}</Box>\n <Box {...getStyles('mobileView')}>{mobileContent}</Box>\n </Box>\n );\n }\n\n return (\n <Box {...getStyles('root')} mod={mod} {...others}>\n {desktopContent}\n </Box>\n );\n});\n\nSchedule.displayName = '@mantine/schedule/Schedule';\nSchedule.classes = classes;\n\nexport namespace Schedule {\n export type Props = ScheduleProps;\n export type StylesNames = ScheduleStylesNames;\n export type Factory = ScheduleFactory;\n export type Layout = ScheduleLayout;\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- require("../../_virtual/_rolldown/runtime.cjs");
3
2
  const require_DragContext = require("../DragContext/DragContext.cjs");
4
3
  const require_ScheduleEvent_module = require("./ScheduleEvent.module.cjs");
5
4
  let _mantine_core = require("@mantine/core");
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleEvent.cjs","names":["DragContext","Box","UnstyledButton","classes"],"sources":["../../../src/components/ScheduleEvent/ScheduleEvent.tsx"],"sourcesContent":["import { use, useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { DragContext } from '../DragContext/DragContext';\nimport classes from './ScheduleEvent.module.css';\n\nexport type ScheduleEventStylesNames = 'event' | 'eventInner' | 'eventResizeHandle';\n\nexport type ScheduleEventVariant = 'filled' | 'light';\nexport type ScheduleEventCssVariables = {\n event: '--event-bg' | '--event-color' | '--event-radius' | '--event-hover';\n};\n\nexport type RenderEventBody = (event: ScheduleEventData<any>) => React.ReactNode;\n\nexport type RenderEvent = (\n event: ScheduleEventData,\n props: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode }\n) => React.ReactElement;\n\nexport interface ScheduleEventProps\n extends BoxProps, StylesApiProps<ScheduleEventFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Event to display */\n event: ScheduleEventData;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default 'sm' */\n radius?: MantineRadius;\n\n /** If set, event has `white-space: nowrap` @default false */\n nowrap?: boolean;\n\n /** If set, event shrinks its font-size with limited height @default false */\n autoSize?: boolean;\n\n /** Event size @default 'sm' */\n size?: 'sm' | 'md' | (string & {});\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\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 /** Event hanging position */\n hanging?: 'start' | 'end' | 'both' | 'none';\n\n /** If true, event can be dragged @default false */\n draggable?: boolean;\n\n /** Called when event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when event drag ends */\n onEventDragEnd?: () => void;\n\n /** If true, event is currently being dragged @default false */\n isDragging?: boolean;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** If true, event can be resized by dragging its edges @default false */\n withResize?: boolean;\n\n /** Called when resize starts on an edge */\n onResizeStart?: (edge: 'top' | 'bottom', e: React.PointerEvent) => void;\n\n /** If true, event is currently being resized @default false */\n isResizing?: boolean;\n}\n\nexport type ScheduleEventFactory = Factory<{\n props: ScheduleEventProps;\n ref: HTMLButtonElement;\n stylesNames: ScheduleEventStylesNames;\n vars: ScheduleEventCssVariables;\n variant: ScheduleEventVariant;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ScheduleEvent',\n mode: 'default',\n radius: 'sm' as MantineRadius,\n} satisfies Partial<ScheduleEventProps>;\n\nconst varsResolver = createVarsResolver<ScheduleEventFactory>(\n (theme, { event, variant, radius }) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: variant || event.variant || 'light',\n autoContrast: true,\n });\n\n return {\n event: {\n '--event-bg': colors.background,\n '--event-hover': colors.hover,\n '--event-color': colors.color,\n '--event-radius': getRadius(radius),\n },\n };\n }\n);\n\nexport const ScheduleEvent = factory<ScheduleEventFactory>((_props) => {\n const props = useProps('ScheduleEvent', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n children,\n nowrap,\n radius,\n color,\n __staticSelector,\n event,\n renderEventBody,\n renderEvent,\n size,\n autoSize,\n mod,\n hanging,\n draggable = false,\n onEventDragStart,\n onEventDragEnd,\n isDragging = false,\n mode,\n withResize = false,\n onResizeStart,\n isResizing = false,\n ...others\n } = props;\n\n const ctx = use(DragContext);\n\n const getStyles = useStyles<ScheduleEventFactory>({\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: 'event',\n });\n\n const handleDragStart = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!draggable) {\n e.preventDefault();\n return;\n }\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('application/json', JSON.stringify({ eventId: event.id }));\n onEventDragStart?.(event);\n ctx.onDragStart?.(event);\n };\n\n const handleDragEnd = () => {\n onEventDragEnd?.();\n ctx.onDragEnd?.();\n };\n\n const isCurrentlyDragging = isDragging || ctx.draggedEventId === event.id;\n const isAnyEventDragging = ctx.isDragging || false;\n\n const dragEndRef = useRef(ctx.onDragEnd);\n dragEndRef.current = ctx.onDragEnd;\n\n useEffect(() => {\n if (isCurrentlyDragging) {\n return () => {\n dragEndRef.current?.();\n };\n }\n return undefined;\n }, [isCurrentlyDragging]);\n\n const showResizeHandles = withResize && mode !== 'static';\n\n const eventChildren = (\n <>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'top' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('top', e)}\n />\n )}\n <Box mod={{ nowrap, size, autoSize, hanging }} {...getStyles('eventInner')}>\n {typeof renderEventBody === 'function' ? renderEventBody(event) : event.title}\n </Box>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'bottom' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('bottom', e)}\n />\n )}\n </>\n );\n\n const rootProps = {\n ...getStyles('event'),\n 'data-event-id': event.id,\n size,\n title: event.title,\n mod: [\n {\n autoSize,\n hanging,\n draggable,\n dragging: isCurrentlyDragging,\n 'any-dragging': isAnyEventDragging,\n static: mode === 'static',\n resizing: isResizing,\n resizable: showResizeHandles,\n },\n mod,\n ],\n draggable: draggable && mode !== 'static',\n tabIndex: mode === 'static' ? -1 : 0,\n onDragStart: mode === 'static' ? undefined : handleDragStart,\n onDragEnd: mode === 'static' ? undefined : handleDragEnd,\n onClick: mode === 'static' ? undefined : others.onClick,\n ...others,\n children: eventChildren,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, rootProps);\n }\n\n return <UnstyledButton {...rootProps} />;\n});\n\nScheduleEvent.displayName = '@mantine/schedule/ScheduleEvent';\nScheduleEvent.classes = classes;\nScheduleEvent.varsResolver = varsResolver;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScheduleEvent.cjs","names":["DragContext","Box","UnstyledButton","classes"],"sources":["../../../src/components/ScheduleEvent/ScheduleEvent.tsx"],"sourcesContent":["import { use, useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { DragContext } from '../DragContext/DragContext';\nimport classes from './ScheduleEvent.module.css';\n\nexport type ScheduleEventStylesNames = 'event' | 'eventInner' | 'eventResizeHandle';\n\nexport type ScheduleEventVariant = 'filled' | 'light';\nexport type ScheduleEventCssVariables = {\n event: '--event-bg' | '--event-color' | '--event-radius' | '--event-hover';\n};\n\nexport type RenderEventBody = (event: ScheduleEventData<any>) => React.ReactNode;\n\nexport type RenderEvent = (\n event: ScheduleEventData,\n props: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode }\n) => React.ReactElement;\n\nexport interface ScheduleEventProps\n extends BoxProps, StylesApiProps<ScheduleEventFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Event to display */\n event: ScheduleEventData;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default 'sm' */\n radius?: MantineRadius;\n\n /** If set, event has `white-space: nowrap` @default false */\n nowrap?: boolean;\n\n /** If set, event shrinks its font-size with limited height @default false */\n autoSize?: boolean;\n\n /** Event size @default 'sm' */\n size?: 'sm' | 'md' | (string & {});\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\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 /** Event hanging position */\n hanging?: 'start' | 'end' | 'both' | 'none';\n\n /** If true, event can be dragged @default false */\n draggable?: boolean;\n\n /** Called when event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when event drag ends */\n onEventDragEnd?: () => void;\n\n /** If true, event is currently being dragged @default false */\n isDragging?: boolean;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** If true, event can be resized by dragging its edges @default false */\n withResize?: boolean;\n\n /** Called when resize starts on an edge */\n onResizeStart?: (edge: 'top' | 'bottom', e: React.PointerEvent) => void;\n\n /** If true, event is currently being resized @default false */\n isResizing?: boolean;\n}\n\nexport type ScheduleEventFactory = Factory<{\n props: ScheduleEventProps;\n ref: HTMLButtonElement;\n stylesNames: ScheduleEventStylesNames;\n vars: ScheduleEventCssVariables;\n variant: ScheduleEventVariant;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ScheduleEvent',\n mode: 'default',\n radius: 'sm' as MantineRadius,\n} satisfies Partial<ScheduleEventProps>;\n\nconst varsResolver = createVarsResolver<ScheduleEventFactory>(\n (theme, { event, variant, radius }) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: variant || event.variant || 'light',\n autoContrast: true,\n });\n\n return {\n event: {\n '--event-bg': colors.background,\n '--event-hover': colors.hover,\n '--event-color': colors.color,\n '--event-radius': getRadius(radius),\n },\n };\n }\n);\n\nexport const ScheduleEvent = factory<ScheduleEventFactory>((_props) => {\n const props = useProps('ScheduleEvent', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n children,\n nowrap,\n radius,\n color,\n __staticSelector,\n event,\n renderEventBody,\n renderEvent,\n size,\n autoSize,\n mod,\n hanging,\n draggable = false,\n onEventDragStart,\n onEventDragEnd,\n isDragging = false,\n mode,\n withResize = false,\n onResizeStart,\n isResizing = false,\n ...others\n } = props;\n\n const ctx = use(DragContext);\n\n const getStyles = useStyles<ScheduleEventFactory>({\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: 'event',\n });\n\n const handleDragStart = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!draggable) {\n e.preventDefault();\n return;\n }\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('application/json', JSON.stringify({ eventId: event.id }));\n onEventDragStart?.(event);\n ctx.onDragStart?.(event);\n };\n\n const handleDragEnd = () => {\n onEventDragEnd?.();\n ctx.onDragEnd?.();\n };\n\n const isCurrentlyDragging = isDragging || ctx.draggedEventId === event.id;\n const isAnyEventDragging = ctx.isDragging || false;\n\n const dragEndRef = useRef(ctx.onDragEnd);\n dragEndRef.current = ctx.onDragEnd;\n\n useEffect(() => {\n if (isCurrentlyDragging) {\n return () => {\n dragEndRef.current?.();\n };\n }\n return undefined;\n }, [isCurrentlyDragging]);\n\n const showResizeHandles = withResize && mode !== 'static';\n\n const eventChildren = (\n <>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'top' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('top', e)}\n />\n )}\n <Box mod={{ nowrap, size, autoSize, hanging }} {...getStyles('eventInner')}>\n {typeof renderEventBody === 'function' ? renderEventBody(event) : event.title}\n </Box>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'bottom' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('bottom', e)}\n />\n )}\n </>\n );\n\n const rootProps = {\n ...getStyles('event'),\n 'data-event-id': event.id,\n size,\n title: event.title,\n mod: [\n {\n autoSize,\n hanging,\n draggable,\n dragging: isCurrentlyDragging,\n 'any-dragging': isAnyEventDragging,\n static: mode === 'static',\n resizing: isResizing,\n resizable: showResizeHandles,\n },\n mod,\n ],\n draggable: draggable && mode !== 'static',\n tabIndex: mode === 'static' ? -1 : 0,\n onDragStart: mode === 'static' ? undefined : handleDragStart,\n onDragEnd: mode === 'static' ? undefined : handleDragEnd,\n onClick: mode === 'static' ? undefined : others.onClick,\n ...others,\n children: eventChildren,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, rootProps);\n }\n\n return <UnstyledButton {...rootProps} />;\n});\n\nScheduleEvent.displayName = '@mantine/schedule/ScheduleEvent';\nScheduleEvent.classes = classes;\nScheduleEvent.varsResolver = varsResolver;\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- require("../../../_virtual/_rolldown/runtime.cjs");
3
2
  const require_labels = require("../../../labels.cjs");
4
3
  const require_ScheduleHeaderContext = require("../ScheduleHeaderContext.cjs");
5
4
  const require_HeaderControl_module = require("./HeaderControl.module.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderControl.cjs","names":["UnstyledButton","classes","getLabel","useScheduleHeaderLabels","AccordionChevron"],"sources":["../../../../src/components/ScheduleHeader/HeaderControl/HeaderControl.tsx"],"sourcesContent":["import {\n AccordionChevron,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useDirection,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { getLabel, ScheduleLabelsOverride } from '../../../labels';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './HeaderControl.module.css';\n\nexport type HeaderControlStylesNames = 'headerControl';\nexport type HeaderControlCssVariables = {\n headerControl: '--control-radius';\n};\n\nexport interface HeaderControlProps\n extends BoxProps, StylesApiProps<HeaderControlFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Applies active styles */\n active?: boolean;\n\n /** Removes inline padding */\n square?: boolean;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** If set to `false`, the control will not be clickable */\n interactive?: boolean;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type HeaderControlFactory = Factory<{\n props: HeaderControlProps;\n ref: HTMLButtonElement;\n stylesNames: HeaderControlStylesNames;\n vars: HeaderControlCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'HeaderControl',\n interactive: true,\n} satisfies Partial<HeaderControlProps>;\n\nconst varsResolver = createVarsResolver<HeaderControlFactory>((_theme, { radius }) => ({\n headerControl: {\n '--control-radius': radius === undefined ? undefined : getRadius(radius),\n },\n}));\n\nexport const HeaderControl = factory<HeaderControlFactory>((_props) => {\n const props = useProps('HeaderControl', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n mod,\n attributes,\n active,\n square,\n radius,\n interactive,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<HeaderControlFactory>({\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: 'headerControl',\n });\n\n return (\n <UnstyledButton\n {...getStyles('headerControl', { active: interactive })}\n mod={[{ active, square, interactive }, mod]}\n tabIndex={interactive ? undefined : -1}\n {...others}\n />\n );\n});\n\nHeaderControl.displayName = '@mantine/schedule/HeaderControl';\nHeaderControl.classes = classes;\nHeaderControl.varsResolver = varsResolver;\n\nexport function ScheduleHeaderNext(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"next\" aria-label={getLabel('next', resolvedLabels)} square {...props}>\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? 90 : -90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderPrevious(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl\n data-type=\"previous\"\n aria-label={getLabel('previous', resolvedLabels)}\n square\n {...props}\n >\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? -90 : 90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderToday(props: HeaderControlProps) {\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"today\" aria-label={getLabel('today', resolvedLabels)} {...props}>\n {getLabel('today', resolvedLabels)}\n </HeaderControl>\n );\n}\n\nScheduleHeaderNext.displayName = '@mantine/schedule/ScheduleHeaderNext';\nScheduleHeaderPrevious.displayName = '@mantine/schedule/ScheduleHeaderPrevious';\nScheduleHeaderToday.displayName = '@mantine/schedule/ScheduleHeaderToday';\n"],"mappings":";;;;;;;;AAmDA,MAAM,eAAe;CACnB,kBAAkB;CAClB,aAAa;AACf;AAEA,MAAM,gBAAA,GAAA,cAAA,qBAAyD,QAAQ,EAAE,cAAc,EACrF,eAAe,EACb,oBAAoB,WAAW,KAAA,IAAY,KAAA,KAAA,GAAA,cAAA,WAAsB,MAAM,EACzE,EACF,EAAE;AAEF,MAAa,iBAAA,GAAA,cAAA,UAA+C,WAAW;CACrE,MAAM,SAAA,GAAA,cAAA,UAAiB,iBAAiB,cAAc,MAAM;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,kBACA,KACA,YACA,QACA,QACA,QACA,aACA,QACA,GAAG,WACD;CAiBJ,OACE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,gBAAD;EACE,IAAA,GAAA,cAAA,WAjB8C;GAChD,MAAM;GACN,SAAA,6BAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;EAChB,CAIgB,EAAE,iBAAiB,EAAE,QAAQ,YAAY,CAAC;EACtD,KAAK,CAAC;GAAE;GAAQ;GAAQ;EAAY,GAAG,GAAG;EAC1C,UAAU,cAAc,KAAA,IAAY;EACpC,GAAI;CACL,CAAA;AAEL,CAAC;AAED,cAAc,cAAc;AAC5B,cAAc,UAAUC,6BAAAA;AACxB,cAAc,eAAe;AAE7B,SAAgB,mBAAmB,OAA2B;CAC5D,MAAM,EAAE,SAAA,GAAA,cAAA,cAAqB;CAG7B,OACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EAAe,aAAU;EAAO,cAAYC,eAAAA,SAAS,QAHhCC,8BAAAA,wBAAwB,MAAM,MAGuB,CAAC;EAAG,QAAA;EAAO,GAAI;YACvF,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,KAAK,IAAI,MAAM,EAAI,CAAA;CACtE,CAAA;AAEnB;AAEA,SAAgB,uBAAuB,OAA2B;CAChE,MAAM,EAAE,SAAA,GAAA,cAAA,cAAqB;CAG7B,OACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EACE,aAAU;EACV,cAAYF,eAAAA,SAAS,YALFC,8BAAAA,wBAAwB,MAAM,MAKH,CAAC;EAC/C,QAAA;EACA,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,MAAM,GAAG,MAAM,EAAI,CAAA;CACtE,CAAA;AAEnB;AAEA,SAAgB,oBAAoB,OAA2B;CAC7D,MAAM,iBAAiBD,8BAAAA,wBAAwB,MAAM,MAAM;CAE3D,OACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EAAe,aAAU;EAAQ,cAAYD,eAAAA,SAAS,SAAS,cAAc;EAAG,GAAI;YACjFA,eAAAA,SAAS,SAAS,cAAc;CACpB,CAAA;AAEnB;AAEA,mBAAmB,cAAc;AACjC,uBAAuB,cAAc;AACrC,oBAAoB,cAAc"}
1
+ {"version":3,"file":"HeaderControl.cjs","names":["UnstyledButton","classes","getLabel","useScheduleHeaderLabels","AccordionChevron"],"sources":["../../../../src/components/ScheduleHeader/HeaderControl/HeaderControl.tsx"],"sourcesContent":["import {\n AccordionChevron,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useDirection,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { getLabel, ScheduleLabelsOverride } from '../../../labels';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './HeaderControl.module.css';\n\nexport type HeaderControlStylesNames = 'headerControl';\nexport type HeaderControlCssVariables = {\n headerControl: '--control-radius';\n};\n\nexport interface HeaderControlProps\n extends BoxProps, StylesApiProps<HeaderControlFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Applies active styles */\n active?: boolean;\n\n /** Removes inline padding */\n square?: boolean;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** If set to `false`, the control will not be clickable */\n interactive?: boolean;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type HeaderControlFactory = Factory<{\n props: HeaderControlProps;\n ref: HTMLButtonElement;\n stylesNames: HeaderControlStylesNames;\n vars: HeaderControlCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'HeaderControl',\n interactive: true,\n} satisfies Partial<HeaderControlProps>;\n\nconst varsResolver = createVarsResolver<HeaderControlFactory>((_theme, { radius }) => ({\n headerControl: {\n '--control-radius': radius === undefined ? undefined : getRadius(radius),\n },\n}));\n\nexport const HeaderControl = factory<HeaderControlFactory>((_props) => {\n const props = useProps('HeaderControl', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n mod,\n attributes,\n active,\n square,\n radius,\n interactive,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<HeaderControlFactory>({\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: 'headerControl',\n });\n\n return (\n <UnstyledButton\n {...getStyles('headerControl', { active: interactive })}\n mod={[{ active, square, interactive }, mod]}\n tabIndex={interactive ? undefined : -1}\n {...others}\n />\n );\n});\n\nHeaderControl.displayName = '@mantine/schedule/HeaderControl';\nHeaderControl.classes = classes;\nHeaderControl.varsResolver = varsResolver;\n\nexport function ScheduleHeaderNext(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"next\" aria-label={getLabel('next', resolvedLabels)} square {...props}>\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? 90 : -90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderPrevious(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl\n data-type=\"previous\"\n aria-label={getLabel('previous', resolvedLabels)}\n square\n {...props}\n >\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? -90 : 90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderToday(props: HeaderControlProps) {\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"today\" aria-label={getLabel('today', resolvedLabels)} {...props}>\n {getLabel('today', resolvedLabels)}\n </HeaderControl>\n );\n}\n\nScheduleHeaderNext.displayName = '@mantine/schedule/ScheduleHeaderNext';\nScheduleHeaderPrevious.displayName = '@mantine/schedule/ScheduleHeaderPrevious';\nScheduleHeaderToday.displayName = '@mantine/schedule/ScheduleHeaderToday';\n"],"mappings":";;;;;;;AAmDA,MAAM,eAAe;CACnB,kBAAkB;CAClB,aAAa;AACf;AAEA,MAAM,gBAAA,GAAA,cAAA,qBAAyD,QAAQ,EAAE,cAAc,EACrF,eAAe,EACb,oBAAoB,WAAW,KAAA,IAAY,KAAA,KAAA,GAAA,cAAA,WAAsB,MAAM,EACzE,EACF,EAAE;AAEF,MAAa,iBAAA,GAAA,cAAA,UAA+C,WAAW;CACrE,MAAM,SAAA,GAAA,cAAA,UAAiB,iBAAiB,cAAc,MAAM;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,kBACA,KACA,YACA,QACA,QACA,QACA,aACA,QACA,GAAG,WACD;CAiBJ,OACE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,gBAAD;EACE,IAAA,GAAA,cAAA,WAjB8C;GAChD,MAAM;GACN,SAAA,6BAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;EAChB,CAIgB,EAAE,iBAAiB,EAAE,QAAQ,YAAY,CAAC;EACtD,KAAK,CAAC;GAAE;GAAQ;GAAQ;EAAY,GAAG,GAAG;EAC1C,UAAU,cAAc,KAAA,IAAY;EACpC,GAAI;CACL,CAAA;AAEL,CAAC;AAED,cAAc,cAAc;AAC5B,cAAc,UAAUC,6BAAAA;AACxB,cAAc,eAAe;AAE7B,SAAgB,mBAAmB,OAA2B;CAC5D,MAAM,EAAE,SAAA,GAAA,cAAA,cAAqB;CAG7B,OACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EAAe,aAAU;EAAO,cAAYC,eAAAA,SAAS,QAHhCC,8BAAAA,wBAAwB,MAAM,MAGuB,CAAC;EAAG,QAAA;EAAO,GAAI;YACvF,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,KAAK,IAAI,MAAM,EAAI,CAAA;CACtE,CAAA;AAEnB;AAEA,SAAgB,uBAAuB,OAA2B;CAChE,MAAM,EAAE,SAAA,GAAA,cAAA,cAAqB;CAG7B,OACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EACE,aAAU;EACV,cAAYF,eAAAA,SAAS,YALFC,8BAAAA,wBAAwB,MAAM,MAKH,CAAC;EAC/C,QAAA;EACA,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,MAAM,GAAG,MAAM,EAAI,CAAA;CACtE,CAAA;AAEnB;AAEA,SAAgB,oBAAoB,OAA2B;CAC7D,MAAM,iBAAiBD,8BAAAA,wBAAwB,MAAM,MAAM;CAE3D,OACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EAAe,aAAU;EAAQ,cAAYD,eAAAA,SAAS,SAAS,cAAc;EAAG,GAAI;YACjFA,eAAAA,SAAS,SAAS,cAAc;CACpB,CAAA;AAEnB;AAEA,mBAAmB,cAAc;AACjC,uBAAuB,cAAc;AACrC,oBAAoB,cAAc"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- require("../../../_virtual/_rolldown/runtime.cjs");
3
2
  const require_labels = require("../../../labels.cjs");
4
3
  const require_format_date = require("../../../utils/format-date/format-date.cjs");
5
4
  const require_get_months_list = require("../../../utils/get-months-list/get-months-list.cjs");