{"version":3,"file":"MonthView.cjs","names":["getVisibleColumnMap","getMonthRange","getMonthViewEvents","expandRecurringEvents","useDragDropHandlers","calculateMonthDropDate","useSlotDragSelect","getMonthDays","isSameMonth","getWeekdaysNames","UnstyledButton","getWeekNumber","clipSpanToVisibleColumns","Box","getRenderableMonthEventSegments","ScheduleEvent","MoreEvents","toDateString","ScheduleHeaderBase","AgendaView","ScrollArea","DragContext","classes"],"sources":["../../../src/components/MonthView/MonthView.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useCallback, useRef, useState } from 'react';\nimport {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  DataAttributes,\n  ElementProps,\n  factory,\n  Factory,\n  getRadius,\n  MantineRadius,\n  ScrollArea,\n  ScrollAreaProps,\n  StylesApiProps,\n  UnstyledButton,\n  useMantineTheme,\n  useProps,\n  useResolvedStylesApi,\n  useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useDragDropHandlers } from '../../hooks/use-drag-drop-handlers';\nimport { useSlotDragSelect } from '../../hooks/use-slot-drag-select';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n  DateLabelFormat,\n  DateStringValue,\n  DateTimeStringValue,\n  DayOfWeek,\n  ScheduleEventData,\n  ScheduleMode,\n  ScheduleViewLevel,\n} from '../../types';\nimport {\n  calculateMonthDropDate,\n  expandRecurringEvents,\n  getMonthDays,\n  getMonthRange,\n  getWeekdaysNames,\n  getWeekNumber,\n  isSameMonth,\n  toDateString,\n} from '../../utils';\nimport { AgendaView, AgendaViewStylesNames } from '../AgendaView/AgendaView';\nimport { DragContext } from '../DragContext/DragContext';\nimport { MoreEvents, MoreEventsProps } from '../MoreEvents/MoreEvents';\nimport { RenderEvent, RenderEventBody, ScheduleEvent } from '../ScheduleEvent/ScheduleEvent';\nimport { MonthYearSelectProps } from '../ScheduleHeader/MonthYearSelect/MonthYearSelect';\nimport { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';\nimport { ScheduleHeaderBase } from '../ScheduleHeader/ScheduleHeaderBase';\nimport { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';\nimport { getRenderableMonthEventSegments } from './get-renderable-month-event-segments';\nimport { clipSpanToVisibleColumns, getVisibleColumnMap } from './get-visible-columns';\nimport { getMonthViewEvents } from './get-month-view-events/get-month-view-events';\nimport { handleMonthViewKeyDown, MonthViewControlsRef } from './handle-month-view-key-down';\nimport classes from './MonthView.module.css';\n\nexport type MonthViewStylesNames =\n  | 'monthView'\n  | 'monthViewScrollArea'\n  | 'monthViewInner'\n  | 'monthViewWeek'\n  | 'monthViewDay'\n  | 'monthViewDayLabel'\n  | 'monthViewWeekNumber'\n  | 'monthViewWeekday'\n  | 'monthViewWeekdays'\n  | 'monthViewWeekdaysCorner'\n  | 'monthViewEvents'\n  | 'monthViewBackgroundEvent'\n  | CombinedScheduleHeaderStylesNames\n  | AgendaViewStylesNames;\n\nexport type MonthViewCssVariables = {\n  monthView: '--month-view-radius' | '--month-view-max-events';\n};\n\nexport interface MonthViewProps\n  extends BoxProps, StylesApiProps<MonthViewFactory>, ElementProps<'div'> {\n  __staticSelector?: string;\n\n  /** Date to display, Date object or date string in `YYYY-MM-DD 00:00:00` format */\n  date: Date | string;\n\n  /** Called with the new date value when a date is selected */\n  onDateChange?: (value: DateStringValue) => void;\n\n  /** If set, week numbers are displayed in the first column @default false */\n  withWeekNumbers?: boolean;\n\n  /** If set, weekdays names are displayed in the first row @default true */\n  withWeekDays?: boolean;\n\n  /** If set, weekend days are displayed. When `false`, days defined by `weekendDays` are hidden and the grid shrinks to the remaining columns @default true */\n  withWeekendDays?: boolean;\n\n  /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */\n  locale?: string;\n\n  /** Number 0-6, where 0 – Sunday and 6 – Saturday. @default 1 – Monday */\n  firstDayOfWeek?: DayOfWeek;\n\n  /** `dayjs` format for weekdays names. By default, the first letter of the weekday. */\n  weekdayFormat?: DateLabelFormat;\n\n  /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */\n  weekendDays?: DayOfWeek[];\n\n  /** Props passed down to the week number button */\n  getWeekNumberProps?: (weekStartDate: DateStringValue) => Record<string, any>;\n\n  /** Props passed down to the day button */\n  getDayProps?: (date: DateStringValue) => Record<string, any>;\n\n  /** Called when day is clicked */\n  onDayClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n  /** Called with first day of the week when week number is clicked */\n  onWeekNumberClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n  /** If set, always renders 6 weeks in the month view @default true */\n  consistentWeeks?: boolean;\n\n  /** If set, highlights the current day @default true */\n  highlightToday?: 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, days from the previous and next months are displayed to fill the weeks @default true */\n  withOutsideDays?: boolean;\n\n  /** If set, the header is displayed @default true */\n  withHeader?: boolean;\n\n  /** Props passed down to `MonthYearSelect` component in the header */\n  monthYearSelectProps?: Partial<MonthYearSelectProps>;\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  /** Events to display */\n  events?: ScheduleEventData[];\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  /** If true, events can be dragged and dropped @default false */\n  withEventsDragAndDrop?: boolean;\n\n  /** Called when event is dropped on new date */\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 event is clicked */\n  onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n  /** If set, enables drag-to-select day ranges @default false */\n  withDragSlotSelect?: boolean;\n\n  /** Called when a day range is selected by dragging */\n  onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n  /** Labels override for i18n */\n  labels?: ScheduleLabelsOverride;\n\n  /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n  mode?: ScheduleMode;\n\n  /** Props passed down to `ScrollArea` component */\n  scrollAreaProps?: Partial<ScrollAreaProps> & DataAttributes;\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  /** Max number of generated recurring instances per recurring series @default 2000 */\n  recurrenceExpansionLimit?: number;\n\n  /** Maximum number of events visible per day before \"+more\" indicator shows, value is clamped between 1 and 10 @default 2 */\n  maxEventsPerDay?: number;\n\n  /** If set, displays an Agenda button in the header that opens an agenda list view @default false */\n  withAgenda?: boolean;\n}\n\nexport type MonthViewFactory = Factory<{\n  props: MonthViewProps;\n  ref: HTMLDivElement;\n  stylesNames: MonthViewStylesNames;\n  vars: MonthViewCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<MonthViewFactory>(\n  (_theme, { radius, maxEventsPerDay }) => ({\n    monthView: {\n      '--month-view-radius': radius !== undefined ? getRadius(radius) : undefined,\n      '--month-view-max-events':\n        maxEventsPerDay !== undefined ? `${Math.min(10, Math.max(1, maxEventsPerDay))}` : undefined,\n    },\n  })\n);\n\nconst defaultProps = {\n  __staticSelector: 'MonthView',\n  withWeekDays: true,\n  withWeekendDays: true,\n  consistentWeeks: true,\n  highlightToday: true,\n  withOutsideDays: true,\n  withHeader: true,\n  weekdayFormat: 'ddd',\n  withEventsDragAndDrop: false,\n  withDragSlotSelect: false,\n  mode: 'default',\n} satisfies Partial<MonthViewProps>;\n\nexport const MonthView = factory<MonthViewFactory>((_props) => {\n  const props = useProps('MonthView', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    attributes,\n    vars,\n    mod,\n    date,\n    onDateChange,\n    withWeekNumbers,\n    withWeekDays,\n    withWeekendDays,\n    locale,\n    weekdayFormat,\n    firstDayOfWeek,\n    weekendDays,\n    __staticSelector,\n    getDayProps,\n    getWeekNumberProps,\n    onDayClick,\n    onWeekNumberClick,\n    consistentWeeks,\n    highlightToday,\n    radius,\n    withOutsideDays,\n    withHeader,\n    monthYearSelectProps,\n    onViewChange,\n    todayControlProps,\n    nextControlProps,\n    previousControlProps,\n    viewSelectProps,\n    events,\n    moreEventsProps,\n    renderEventBody,\n    renderEvent,\n    withEventsDragAndDrop,\n    onEventDrop,\n    canDragEvent,\n    onEventDragStart,\n    onEventDragEnd,\n    onEventClick,\n    withDragSlotSelect,\n    onSlotDragEnd,\n    labels,\n    mode,\n    scrollAreaProps,\n    onExternalEventDrop,\n    recurrenceExpansionLimit,\n    maxEventsPerDay: _maxEventsPerDay,\n    withAgenda,\n    ...others\n  } = props;\n\n  const [agendaOpen, setAgendaOpen] = useState(false);\n  const maxEventsPerDay = Math.min(10, Math.max(1, _maxEventsPerDay ?? 2));\n\n  const getStyles = useStyles<MonthViewFactory>({\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: 'monthView',\n  });\n\n  const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthViewFactory>({\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\n  const resolvedFirstDayOfWeek = ctx.getFirstDayOfWeek(firstDayOfWeek);\n  const resolvedWeekendDays = ctx.getWeekendDays(weekendDays);\n  const hiddenColumns = withWeekendDays\n    ? []\n    : Array.from({ length: 7 }, (_, index) => index).filter((index) =>\n        resolvedWeekendDays.includes(((resolvedFirstDayOfWeek + index) % 7) as DayOfWeek)\n      );\n  const hiddenColumnSet = new Set(hiddenColumns);\n  const columnsCount = 7 - hiddenColumns.length;\n  const visibleColumnMap = getVisibleColumnMap(hiddenColumns);\n\n  const range = getMonthRange({\n    month: date,\n    withOutsideDays,\n    consistentWeeks,\n    firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n  });\n\n  const expandedEvents = expandRecurringEvents({\n    events,\n    rangeStart: dayjs(range.start).startOf('day').toDate(),\n    rangeEnd: dayjs(range.end).endOf('day').toDate(),\n    expansionLimit: recurrenceExpansionLimit,\n  });\n\n  const monthEvents = getMonthViewEvents({\n    date,\n    events: expandedEvents,\n    firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n    withOutsideDays,\n    consistentWeeks,\n  });\n\n  const handleExternalDrop = useCallback(\n    (e: React.DragEvent, day: string) => {\n      if (!onExternalEventDrop) {\n        return;\n      }\n      onExternalEventDrop(e.dataTransfer, `${dayjs(day).format('YYYY-MM-DD')} 00:00:00`);\n    },\n    [onExternalEventDrop]\n  );\n\n  const dragDrop = useDragDropHandlers<string>({\n    enabled: withEventsDragAndDrop,\n    mode,\n    onEventDrop,\n    canDragEvent,\n    onEventDragStart,\n    onEventDragEnd,\n    calculateDropTarget: (targetDay: string, draggedEvent: ScheduleEventData) => {\n      return calculateMonthDropDate({\n        draggedEvent,\n        targetDay,\n      });\n    },\n    onExternalDrop: onExternalEventDrop ? handleExternalDrop : undefined,\n  });\n\n  const withDragHandlers = (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== 'static';\n\n  const flatDaysRef = useRef<string[]>([]);\n\n  const slotDragSelect = useSlotDragSelect({\n    enabled: withDragSlotSelect && mode !== 'static',\n    onDragEnd: (startIndex, endIndex) => {\n      if (!onSlotDragEnd) {\n        return;\n      }\n      const startDay = flatDaysRef.current[startIndex];\n      const endDay = flatDaysRef.current[endIndex];\n      if (startDay && endDay) {\n        onSlotDragEnd(\n          dayjs(startDay).startOf('day').format('YYYY-MM-DD HH:mm:ss'),\n          dayjs(endDay).endOf('day').format('YYYY-MM-DD HH:mm:ss')\n        );\n      }\n    },\n  });\n\n  const daysRef: MonthViewControlsRef = useRef<HTMLButtonElement[][]>([]);\n\n  const monthDays = getMonthDays({\n    month: dayjs(date).format('YYYY-MM-DD 00:00:00'),\n    firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n    consistentWeeks: consistentWeeks && withOutsideDays,\n  });\n\n  const firstDayIndex = (() => {\n    for (let weekIndex = 0; weekIndex < monthDays.length; weekIndex++) {\n      const week = monthDays[weekIndex];\n      let visibleDayIndex = -1;\n      for (let dayIndex = 0; dayIndex < week.length; dayIndex++) {\n        if (hiddenColumnSet.has(dayIndex)) {\n          continue;\n        }\n        visibleDayIndex += 1;\n        const day = week[dayIndex];\n        const outside = !isSameMonth(date, day);\n        if (!outside || withOutsideDays) {\n          return { weekIndex, dayIndex: visibleDayIndex };\n        }\n      }\n    }\n    return { weekIndex: 0, dayIndex: 0 };\n  })();\n\n  const weekdays = withWeekDays\n    ? getWeekdaysNames({\n        locale: ctx.getLocale(locale),\n        format: weekdayFormat,\n        firstDayOfWeek: resolvedFirstDayOfWeek,\n      })\n        .map((day, index) => ({ day, index }))\n        .filter(({ index }) => !hiddenColumnSet.has(index))\n        .map(({ day, index }) => (\n          <div {...getStyles('monthViewWeekday')} key={index}>\n            {day}\n          </div>\n        ))\n    : null;\n\n  const monthGroup = 'month';\n  flatDaysRef.current = monthDays\n    .map((week) => week.filter((_, index) => !hiddenColumnSet.has(index)))\n    .flat();\n\n  const weeks = monthDays.map((week, weekIndex) => {\n    daysRef.current[weekIndex] = [];\n\n    const days = week\n      .map((day, columnIndex) => ({ day, columnIndex }))\n      .filter(({ columnIndex }) => !hiddenColumnSet.has(columnIndex))\n      .map(({ day }, dayIndex) => {\n        const outside = !isSameMonth(date, day);\n        const weekend = resolvedWeekendDays.includes(dayjs(day).day());\n        const ariaLabel = dayjs(day)\n          .locale(locale || ctx.locale)\n          .format('MMMM D, YYYY');\n\n        const dayProps = getDayProps?.(dayjs(day).format('YYYY-MM-DD')) || {};\n        const today = dayjs(day).isSame(dayjs(), 'day') && highlightToday;\n\n        if (outside && !withOutsideDays) {\n          return (\n            <div key={day} data-static {...getStyles('monthViewDay', { style: dayProps.style })} />\n          );\n        }\n\n        const isFirstDay =\n          weekIndex === firstDayIndex.weekIndex && dayIndex === firstDayIndex.dayIndex;\n\n        const isDropTarget = dragDrop.isDropTarget(day);\n        const flatIndex = weekIndex * columnsCount + dayIndex;\n        const isDragSelected = slotDragSelect.isSlotSelected(flatIndex, monthGroup);\n\n        return (\n          <UnstyledButton\n            aria-label={ariaLabel}\n            {...dayProps}\n            {...getStyles('monthViewDay', { className: dayProps.className, style: dayProps.style })}\n            key={day}\n            ref={(node) => {\n              if (node) {\n                if (!daysRef.current[weekIndex]) {\n                  daysRef.current[weekIndex] = [];\n                }\n                daysRef.current[weekIndex][dayIndex] = node;\n              }\n            }}\n            data-drag-slot-index={withDragSlotSelect && mode !== 'static' ? flatIndex : undefined}\n            data-drag-slot-group={withDragSlotSelect && mode !== 'static' ? monthGroup : undefined}\n            onClick={\n              mode === 'static'\n                ? undefined\n                : (event) => {\n                    onDayClick?.(dayjs(day).format('YYYY-MM-DD'), event);\n                    dayProps.onClick?.(event);\n                  }\n            }\n            onPointerDown={\n              withDragSlotSelect && mode !== 'static'\n                ? (e) =>\n                    slotDragSelect.handleSlotPointerDown(\n                      e as React.PointerEvent<HTMLButtonElement>,\n                      flatIndex,\n                      monthGroup\n                    )\n                : undefined\n            }\n            onKeyDown={(event) => {\n              handleMonthViewKeyDown({\n                controlsRef: daysRef,\n                weekIndex,\n                dayIndex,\n                event,\n              });\n              dayProps.onKeyDown?.(event);\n            }}\n            mod={[\n              {\n                outside,\n                weekend,\n                today,\n                'drop-target': isDropTarget,\n                'drag-selected': isDragSelected,\n                static: mode === 'static',\n              },\n              dayProps.mod,\n            ]}\n            data-outside={outside || undefined}\n            tabIndex={mode === 'static' ? -1 : isFirstDay ? 0 : -1}\n            onDragOver={withDragHandlers ? (e) => dragDrop.handleDragOver(e, day) : undefined}\n            onDragLeave={withDragHandlers ? dragDrop.handleDragLeave : undefined}\n            onDrop={withDragHandlers ? (e) => dragDrop.handleDrop(e, day) : undefined}\n          >\n            <span data-today={today || undefined} {...getStyles('monthViewDayLabel')}>\n              {dayjs(day).format('D')}\n            </span>\n          </UnstyledButton>\n        );\n      });\n\n    const weekNumberProps = getWeekNumberProps?.(dayjs(week[0]).format('YYYY-MM-DD')) || {};\n    const weekNumber = getWeekNumber(week);\n\n    const backgroundEventNodes = (monthEvents.backgroundByWeek[weekIndex] || []).flatMap(\n      (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 startColumn = Math.round(event.position.startOffset / (100 / 7));\n        const span = Math.max(1, Math.round(event.position.width / (100 / 7)));\n        const spans =\n          hiddenColumns.length === 0\n            ? [{ startOffset: event.position.startOffset, width: event.position.width }]\n            : clipSpanToVisibleColumns(\n                startColumn,\n                startColumn + span - 1,\n                visibleColumnMap,\n                columnsCount\n              );\n\n        return spans.map((spanPosition, spanIndex) => {\n          const bgEventProps = {\n            key: `bg-${event.id}-${weekIndex}-${spanIndex}`,\n            ...getStyles('monthViewBackgroundEvent', {\n              style: {\n                left: `calc(${spanPosition.startOffset}% + 2px)`,\n                width: `calc(${spanPosition.width}% - 3px)`,\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    );\n\n    const rowHeightPercent = 100 / maxEventsPerDay;\n\n    const eventSegments = getRenderableMonthEventSegments({\n      events: monthEvents.groupedByWeek[weekIndex] || [],\n      groupedByDay: monthEvents.groupedByDay,\n      maxEventsPerDay,\n      week,\n      hiddenColumns,\n      columnsCount,\n    });\n\n    const events = eventSegments.map((segment) => {\n      const isDraggable = dragDrop.isDraggableEvent(segment.event);\n\n      return (\n        <ScheduleEvent\n          key={segment.key}\n          event={segment.event}\n          nowrap\n          autoSize\n          hanging={segment.position.hanging}\n          draggable={isDraggable}\n          renderEventBody={renderEventBody}\n          renderEvent={renderEvent}\n          radius={radius}\n          mode={mode}\n          mod={{ 'clip-start': segment.clipStart, 'clip-end': segment.clipEnd }}\n          onClick={onEventClick ? (e) => onEventClick(segment.event, e) : undefined}\n          style={{\n            position: 'absolute',\n            top: `calc(${segment.position.row * rowHeightPercent}% + 1px)`,\n            left: `calc(${segment.position.startOffset}% + 1px)`,\n            width: `calc(${segment.position.width}% - 2px)`,\n            height: `calc(${rowHeightPercent}% - 2px)`,\n          }}\n        />\n      );\n    });\n\n    const moreEventsNodes = week.map((day, dayIndex) => {\n      if (hiddenColumnSet.has(dayIndex)) {\n        return null;\n      }\n\n      const dayEvents = monthEvents.groupedByDay[day] || [];\n      const hiddenEventsCount = Math.max(0, dayEvents.length - maxEventsPerDay);\n\n      if (hiddenEventsCount <= 0) {\n        return null;\n      }\n\n      const dayStartOffset = (visibleColumnMap[dayIndex] / columnsCount) * 100;\n      const dayWidth = (1 / columnsCount) * 100;\n\n      return (\n        <MoreEvents\n          key={`more-${day}`}\n          events={dayEvents}\n          moreEventsCount={hiddenEventsCount}\n          mode={mode}\n          labels={labels}\n          renderEventBody={renderEventBody}\n          renderEvent={renderEvent}\n          onEventClick={onEventClick}\n          style={{\n            position: 'absolute',\n            top: `calc(100% - 2px)`,\n            left: `calc(${dayStartOffset}% + 1px)`,\n            width: `calc(${dayWidth}% - 1px)`,\n            height: '22px',\n            paddingInline: 4,\n          }}\n          {...moreEventsProps}\n        />\n      );\n    });\n\n    return (\n      <div {...getStyles('monthViewWeek')} key={weekIndex}>\n        {withWeekNumbers && (\n          <UnstyledButton\n            key={weekNumber}\n            aria-label={`Week ${weekNumber}`}\n            {...weekNumberProps}\n            onClick={\n              mode === 'static'\n                ? undefined\n                : (event) => {\n                    onViewChange?.('week');\n                    onDateChange?.(toDateString(week[0]));\n                    onWeekNumberClick?.(dayjs(week[0]).format('YYYY-MM-DD'), event);\n                    weekNumberProps.onClick?.(event);\n                  }\n            }\n            mod={{ static: mode === 'static' }}\n            tabIndex={mode === 'static' ? -1 : 0}\n            {...getStyles('monthViewWeekNumber', {\n              className: weekNumberProps.className,\n              style: weekNumberProps.style,\n            })}\n          >\n            {weekNumber}\n          </UnstyledButton>\n        )}\n\n        <div {...getStyles('monthViewEvents')} key=\"week-events\">\n          {backgroundEventNodes}\n          {events}\n          {moreEventsNodes}\n        </div>\n\n        {days}\n      </div>\n    );\n  });\n\n  const content = (\n    <Box\n      mod={[\n        {\n          'with-week-numbers': withWeekNumbers,\n          'with-weekdays': withWeekDays,\n          'without-weekend-days': hiddenColumns.length > 0,\n          static: mode === 'static',\n          'slot-dragging': slotDragSelect.isDragging,\n          'event-interaction': dragDrop.dragContextValue.isDragging,\n        },\n        mod,\n      ]}\n      __vars={hiddenColumns.length > 0 ? { '--month-view-columns': `${columnsCount}` } : undefined}\n      {...getStyles('monthView')}\n      {...others}\n    >\n      {withHeader && (\n        <ScheduleHeaderBase\n          view=\"month\"\n          navigationHandlers={{\n            previous: () => toDateString(dayjs(date).subtract(1, 'month').startOf('month')),\n            next: () => toDateString(dayjs(date).add(1, 'month').startOf('month')),\n            today: () => toDateString(dayjs()),\n          }}\n          control={{\n            monthYearSelect: {\n              locale,\n              yearValue: dayjs(date).get('year'),\n              monthValue: dayjs(date).get('month'),\n              onYearChange: (year) =>\n                onDateChange?.(toDateString(dayjs(date).set('year', year).startOf('month'))),\n              onMonthChange: (month) =>\n                onDateChange?.(toDateString(dayjs(date).set('month', month).startOf('month'))),\n              ...monthYearSelectProps,\n            },\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          onAgendaClick={withAgenda ? () => setAgendaOpen((v) => !v) : undefined}\n          agendaActive={agendaOpen}\n        />\n      )}\n\n      {agendaOpen && (\n        <AgendaView\n          rangeStart={dayjs(date).startOf('month').format('YYYY-MM-DD')}\n          rangeEnd={dayjs(date).endOf('month').format('YYYY-MM-DD')}\n          events={events}\n          locale={locale}\n          labels={labels}\n          mode={mode}\n          onEventClick={onEventClick}\n          recurrenceExpansionLimit={recurrenceExpansionLimit}\n          {...stylesApiProps}\n        />\n      )}\n\n      {!agendaOpen && (\n        <ScrollArea\n          scrollbarSize={4}\n          {...scrollAreaProps}\n          {...getStyles('monthViewScrollArea', {\n            className: scrollAreaProps?.className,\n            style: scrollAreaProps?.style,\n          })}\n        >\n          <div {...getStyles('monthViewInner')}>\n            {weekdays && (\n              <div {...getStyles('monthViewWeekdays')}>\n                {withWeekNumbers && <div {...getStyles('monthViewWeekdaysCorner')} />}\n                {weekdays}\n              </div>\n            )}\n\n            {weeks}\n          </div>\n        </ScrollArea>\n      )}\n    </Box>\n  );\n\n  if (withEventsDragAndDrop) {\n    return <DragContext.Provider value={dragDrop.dragContextValue}>{content}</DragContext.Provider>;\n  }\n\n  return content;\n});\n\nMonthView.displayName = '@mantine/schedule/MonthView';\nMonthView.classes = classes;\nMonthView.varsResolver = varsResolver;\n\nexport namespace MonthView {\n  export type Props = MonthViewProps;\n  export type Factory = MonthViewFactory;\n  export type StylesNames = MonthViewStylesNames;\n  export type CssVariables = MonthViewCssVariables;\n}\n"],"mappings":"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"}