{"version":3,"file":"MobileMonthView.cjs","names":["toDateString","getMobileMonthViewEvents","expandRecurringEvents","getWeekdaysNames","getMonthDays","isSameMonth","UnstyledButton","getWeekNumber","sortEvents","Box","Text","React","formatDate","AccordionChevron","getLabel","classes"],"sources":["../../../src/components/MobileMonthView/MobileMonthView.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport React, { useRef } from 'react';\nimport {\n  AccordionChevron,\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getRadius,\n  getThemeColor,\n  MantineRadius,\n  StylesApiProps,\n  Text,\n  UnstyledButton,\n  useDirection,\n  useMantineTheme,\n  useProps,\n  useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport {\n  DateLabelFormat,\n  DateStringValue,\n  DayOfWeek,\n  ScheduleEventData,\n  ScheduleMode,\n} from '../../types';\nimport {\n  expandRecurringEvents,\n  formatDate,\n  getMonthDays,\n  getWeekdaysNames,\n  getWeekNumber,\n  isSameMonth,\n  sortEvents,\n  toDateString,\n} from '../../utils';\nimport {\n  handleMonthViewKeyDown,\n  MonthViewControlsRef,\n} from '../MonthView/handle-month-view-key-down';\nimport { RenderEvent } from '../ScheduleEvent/ScheduleEvent';\nimport { getMobileMonthViewEvents } from './get-mobile-month-view-events';\nimport classes from './MobileMonthView.module.css';\n\nexport type MobileMonthViewStylesNames =\n  | 'mobileMonthView'\n  | 'mobileMonthViewHeader'\n  | 'mobileMonthViewHeaderBackButton'\n  | 'mobileMonthViewHeaderLabel'\n  | 'mobileMonthViewCalendar'\n  | 'mobileMonthViewWeekdays'\n  | 'mobileMonthViewWeekday'\n  | 'mobileMonthViewWeekdaysCorner'\n  | 'mobileMonthViewWeek'\n  | 'mobileMonthViewWeekNumber'\n  | 'mobileMonthViewDay'\n  | 'mobileMonthViewDayIndicators'\n  | 'mobileMonthViewDayIndicator'\n  | 'mobileMonthViewEventsList'\n  | 'mobileMonthViewEventsHeader'\n  | 'mobileMonthViewEvent'\n  | 'mobileMonthViewEventColor'\n  | 'mobileMonthViewEventBody'\n  | 'mobileMonthViewEventTitle'\n  | 'mobileMonthViewEventTime'\n  | 'mobileMonthViewNoEvents';\n\nexport type MobileMonthViewCssVariables = {\n  mobileMonthView: '--mobile-month-view-radius';\n};\n\nexport interface MobileMonthViewRenderHeaderInput {\n  /** Current interaction mode */\n  mode: ScheduleMode;\n  /** Current date displayed in the view */\n  date: Date | string;\n  /** Default header element */\n  defaultHeader: React.ReactNode;\n}\n\nexport interface MobileMonthViewProps\n  extends BoxProps, StylesApiProps<MobileMonthViewFactory>, 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  /** Currently selected date (controlled) */\n  selectedDate?: Date | string | null;\n\n  /** Default selected date (uncontrolled) */\n  defaultSelectedDate?: Date | string | null;\n\n  /** Called when selected date changes */\n  onSelectedDateChange?: (value: DateStringValue | null) => 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  /** 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 false */\n  withOutsideDays?: boolean;\n\n  /** Events to display */\n  events?: ScheduleEventData[];\n\n  /** Labels override for i18n */\n  labels?: ScheduleLabelsOverride;\n\n  /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default 'default' */\n  mode?: ScheduleMode;\n\n  /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */\n  renderEvent?: RenderEvent;\n\n  /** Format for the events list header date @default 'dddd, MMMM D' */\n  eventsHeaderFormat?: DateLabelFormat;\n\n  /** Called when the year back button in the header is clicked */\n  onYearClick?: () => void;\n\n  /** Called when event is clicked */\n  onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n  /** Custom header renderer, receives object with mode, date, and default header element */\n  renderHeader?: (input: MobileMonthViewRenderHeaderInput) => React.ReactNode;\n\n  /** Max number of generated recurring instances per recurring series @default 2000 */\n  recurrenceExpansionLimit?: number;\n}\n\nexport type MobileMonthViewFactory = Factory<{\n  props: MobileMonthViewProps;\n  ref: HTMLDivElement;\n  stylesNames: MobileMonthViewStylesNames;\n  vars: MobileMonthViewCssVariables;\n}>;\n\nconst defaultProps = {\n  __staticSelector: 'MobileMonthView',\n  withWeekDays: true,\n  consistentWeeks: true,\n  highlightToday: true,\n  mode: 'default',\n  eventsHeaderFormat: 'dddd, MMMM D',\n} satisfies Partial<MobileMonthViewProps>;\n\nconst varsResolver = createVarsResolver<MobileMonthViewFactory>((_theme, { radius }) => ({\n  mobileMonthView: {\n    '--mobile-month-view-radius': getRadius(radius),\n  },\n}));\n\nexport const MobileMonthView = factory<MobileMonthViewFactory>((_props) => {\n  const props = useProps('MobileMonthView', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    attributes,\n    __staticSelector,\n    date,\n    onDateChange,\n    selectedDate,\n    defaultSelectedDate,\n    onSelectedDateChange,\n    withWeekNumbers,\n    withWeekDays,\n    locale,\n    firstDayOfWeek,\n    weekdayFormat,\n    weekendDays,\n    getWeekNumberProps,\n    getDayProps,\n    onDayClick,\n    onWeekNumberClick,\n    consistentWeeks,\n    highlightToday,\n    radius,\n    withOutsideDays,\n    events,\n    labels,\n    mode,\n    renderEvent,\n    eventsHeaderFormat,\n    onYearClick,\n    onEventClick,\n    renderHeader,\n    recurrenceExpansionLimit,\n    ...others\n  } = props;\n\n  const ctx = useDatesContext();\n  const theme = useMantineTheme();\n  const today = dayjs();\n\n  const [_selectedDate, _setSelectedDate] = useUncontrolled<Date | string | null>({\n    value: selectedDate,\n    defaultValue: defaultSelectedDate ?? toDateString(today),\n    onChange: (value) => onSelectedDateChange?.(value ? toDateString(dayjs(value)) : null),\n  });\n\n  const getStyles = useStyles<MobileMonthViewFactory>({\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: 'mobileMonthView',\n  });\n\n  const daysRef: MonthViewControlsRef = useRef<HTMLButtonElement[][]>([]);\n  const firstDayPosition = useRef<{ weekIndex: number; dayIndex: number } | null>(null);\n\n  const expandedEvents = expandRecurringEvents({\n    events,\n    rangeStart: dayjs(date).startOf('month').toDate(),\n    rangeEnd: dayjs(date).endOf('month').toDate(),\n    expansionLimit: recurrenceExpansionLimit,\n  });\n\n  const groupedEvents = getMobileMonthViewEvents({ date, events: expandedEvents });\n\n  const weekdays = withWeekDays\n    ? getWeekdaysNames({\n        locale: ctx.getLocale(locale),\n        format: weekdayFormat,\n        firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n      }).map((day, index) => (\n        <div {...getStyles('mobileMonthViewWeekday')} key={index}>\n          {day}\n        </div>\n      ))\n    : null;\n\n  const weeks = getMonthDays({\n    month: dayjs(date).format('YYYY-MM-DD'),\n    firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n    consistentWeeks,\n  }).map((week, weekIndex) => {\n    const days = week.map((dayDate, dayIndex) => {\n      const outside = !isSameMonth(dayDate, date);\n      const weekend = ctx.getWeekendDays(weekendDays).includes(dayjs(dayDate).day());\n      const ariaLabel = dayjs(dayDate)\n        .locale(locale || ctx.locale)\n        .format('MMMM D, YYYY');\n\n      const dayProps = getDayProps?.(dayjs(dayDate).format('YYYY-MM-DD')) || {};\n      const isToday = dayjs(dayDate).isSame(today, 'day') && highlightToday;\n      const isSelected = _selectedDate && dayjs(dayDate).isSame(dayjs(_selectedDate), 'day');\n      const dayEvents = groupedEvents[dayjs(dayDate).format('YYYY-MM-DD')] || [];\n\n      const shouldRender = withOutsideDays || !outside;\n\n      if (shouldRender && firstDayPosition.current === null) {\n        firstDayPosition.current = { weekIndex, dayIndex };\n      }\n\n      const isFirstDay =\n        firstDayPosition.current?.weekIndex === weekIndex &&\n        firstDayPosition.current?.dayIndex === dayIndex;\n\n      const indicators = dayEvents.slice(0, 3).map((event) => (\n        <div\n          {...getStyles('mobileMonthViewDayIndicator', {\n            style: { backgroundColor: getThemeColor(event.color, theme) },\n          })}\n          key={event.id}\n        />\n      ));\n\n      const handleDayClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n        const dateStr = dayjs(dayDate).format('YYYY-MM-DD');\n        _setSelectedDate(dateStr);\n        onDayClick?.(dateStr, event);\n        dayProps.onClick?.(event);\n      };\n\n      const handleDayKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n        handleMonthViewKeyDown({\n          controlsRef: daysRef,\n          weekIndex,\n          dayIndex,\n          event,\n        });\n      };\n\n      return (\n        <UnstyledButton\n          aria-label={ariaLabel}\n          aria-selected={isSelected || undefined}\n          {...dayProps}\n          {...getStyles('mobileMonthViewDay', {\n            className: dayProps.className,\n            style: dayProps.style,\n          })}\n          key={dayDate}\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          mod={[\n            {\n              outside,\n              weekend,\n              today: isToday,\n              selected: isSelected,\n              static: mode === 'static',\n              hidden: !shouldRender,\n            },\n            dayProps.mod,\n          ]}\n          tabIndex={mode === 'static' || !shouldRender ? -1 : isFirstDay ? 0 : -1}\n          onClick={mode === 'static' || !shouldRender ? undefined : handleDayClick}\n          onKeyDown={mode === 'static' || !shouldRender ? undefined : handleDayKeyDown}\n        >\n          {shouldRender ? dayjs(dayDate).format('D') : null}\n          {shouldRender && <div {...getStyles('mobileMonthViewDayIndicators')}>{indicators}</div>}\n        </UnstyledButton>\n      );\n    });\n\n    const weekNumberProps = getWeekNumberProps?.(dayjs(week[0]).format('YYYY-MM-DD')) || {};\n    const weekNumber = getWeekNumber(week);\n\n    return (\n      <div {...getStyles('mobileMonthViewWeek')} 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                    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('mobileMonthViewWeekNumber', {\n              className: weekNumberProps.className,\n              style: weekNumberProps.style,\n            })}\n          >\n            {weekNumber}\n          </UnstyledButton>\n        )}\n        {days}\n      </div>\n    );\n  });\n\n  const selectedDateEvents = _selectedDate\n    ? sortEvents(groupedEvents[dayjs(_selectedDate).format('YYYY-MM-DD')] || [])\n    : [];\n\n  const eventsList = selectedDateEvents.map((event) => {\n    const startTime = dayjs(event.start).format('HH:mm');\n    const endTime = dayjs(event.end).format('HH:mm');\n    const isAllDay = startTime === '00:00' && endTime === '00:00';\n\n    const eventChildren = (\n      <Box {...getStyles('mobileMonthViewEventBody')}>\n        <div\n          {...getStyles('mobileMonthViewEventColor', {\n            style: { backgroundColor: getThemeColor(event.color, theme) },\n          })}\n        />\n        <div>\n          <Text {...getStyles('mobileMonthViewEventTitle')}>{event.title}</Text>\n          <Text {...getStyles('mobileMonthViewEventTime')}>\n            {isAllDay ? 'All day' : `${startTime} – ${endTime}`}\n          </Text>\n        </div>\n      </Box>\n    );\n\n    const rootProps: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode } = {\n      ...getStyles('mobileMonthViewEvent'),\n      onClick:\n        mode === 'static'\n          ? undefined\n          : (e: React.MouseEvent<HTMLButtonElement>) => {\n              onEventClick?.(event, e);\n            },\n      tabIndex: mode === 'static' ? -1 : 0,\n      children: eventChildren,\n    };\n\n    if (typeof renderEvent === 'function') {\n      return <React.Fragment key={event.id}>{renderEvent(event, rootProps)}</React.Fragment>;\n    }\n\n    return <UnstyledButton {...rootProps} key={event.id} />;\n  });\n\n  const eventsHeader = _selectedDate\n    ? formatDate({\n        locale: ctx.getLocale(locale),\n        date: _selectedDate,\n        format: eventsHeaderFormat,\n      })\n    : '';\n\n  const { dir } = useDirection();\n\n  const headerLabel = formatDate({ locale: ctx.getLocale(locale), date, format: 'MMMM YYYY' });\n\n  const defaultHeader = (\n    <>\n      <UnstyledButton\n        {...getStyles('mobileMonthViewHeaderBackButton')}\n        onClick={onYearClick}\n        mod={{ static: mode === 'static' }}\n        tabIndex={mode === 'static' ? -1 : 0}\n      >\n        <AccordionChevron\n          style={{ transform: `rotate(${dir === 'rtl' ? -90 : 90}deg)` }}\n          size={20}\n        />\n        {dayjs(date).format('YYYY')}\n      </UnstyledButton>\n      <Text {...getStyles('mobileMonthViewHeaderLabel')}>{headerLabel}</Text>\n    </>\n  );\n\n  return (\n    <Box\n      {...getStyles('mobileMonthView')}\n      mod={{ 'with-week-numbers': withWeekNumbers }}\n      {...others}\n    >\n      <div {...getStyles('mobileMonthViewHeader')}>\n        {typeof renderHeader === 'function'\n          ? renderHeader({ mode: mode!, date, defaultHeader })\n          : defaultHeader}\n      </div>\n\n      <Box {...getStyles('mobileMonthViewCalendar')} mod={{ 'with-weekdays': withWeekDays }}>\n        {weekdays && (\n          <div {...getStyles('mobileMonthViewWeekdays')}>\n            {withWeekNumbers && <div {...getStyles('mobileMonthViewWeekdaysCorner')} />}\n            {weekdays}\n          </div>\n        )}\n        {weeks}\n      </Box>\n\n      <Box {...getStyles('mobileMonthViewEventsList')}>\n        <Text {...getStyles('mobileMonthViewEventsHeader')}>{eventsHeader}</Text>\n\n        {eventsList.length > 0 ? (\n          eventsList\n        ) : (\n          <Text {...getStyles('mobileMonthViewNoEvents')}>{getLabel('noEvents', labels)}</Text>\n        )}\n      </Box>\n    </Box>\n  );\n});\n\nMobileMonthView.displayName = '@mantine/schedule/MobileMonthView';\nMobileMonthView.classes = classes;\nMobileMonthView.varsResolver = varsResolver;\n\nexport namespace MobileMonthView {\n  export type Props = MobileMonthViewProps;\n  export type Factory = MobileMonthViewFactory;\n  export type StylesNames = MobileMonthViewStylesNames;\n  export type CssVariables = MobileMonthViewCssVariables;\n}\n"],"mappings":"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"}