{"version":3,"sources":["jsdelivr-header.js","/npm/react-native-big-calendar@4.19.0/src/theme/defaultTheme.ts","/npm/react-native-big-calendar@4.19.0/src/theme/ThemeContext.tsx","/npm/react-native-big-calendar@4.19.0/src/utils/object.ts","/npm/react-native-big-calendar@4.19.0/src/utils/react.ts","/npm/react-native-big-calendar@4.19.0/src/commonStyles.ts","/npm/react-native-big-calendar@4.19.0/src/utils/datetime.ts","/npm/react-native-big-calendar@4.19.0/src/hooks/useNow.ts","/npm/react-native-big-calendar@4.19.0/src/hooks/usePanResponder.ts","/npm/react-native-big-calendar@4.19.0/src/hooks/useCalendarTouchableOpacityProps.ts","/npm/react-native-big-calendar@4.19.0/src/components/DefaultCalendarEventRenderer.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarEvent.tsx","/npm/react-native-big-calendar@4.19.0/src/components/HourGuideCell.tsx","/npm/react-native-big-calendar@4.19.0/src/components/HourGuideColumn.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarBody.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarEventForMonthView.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarBodyForMonthView.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarHeader.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarHeaderForMonthView.tsx","/npm/react-native-big-calendar@4.19.0/src/components/Schedule.tsx","/npm/react-native-big-calendar@4.19.0/src/components/CalendarContainer.tsx","/npm/react-native-big-calendar@4.19.0/src/components/Calendar.tsx","/npm/react-native-big-calendar@4.19.0/src/index.ts"],"names":[],"mappings":"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","file":"/npm/react-native-big-calendar@4.19.0/build/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-native-big-calendar@4.19.0/build/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { ThemeInterface } from './ThemeInterface'\n\nexport const defaultTheme: ThemeInterface = {\n  isRTL: false,\n  palette: {\n    primary: {\n      main: 'rgb(66, 133, 244)',\n      contrastText: '#fff',\n    },\n    nowIndicator: 'red',\n    gray: {\n      // 50: '#fafafa',\n      100: '#f5f5f5',\n      200: '#eeeeee',\n      300: '#e0e0e0',\n      // 400: '#bdbdbd',\n      500: '#9e9e9e',\n      // 600: '#757575',\n      // 700: '#616161',\n      800: '#424242',\n      // 900: '#212121',\n    },\n    moreLabel: '#000000',\n  },\n  eventCellOverlappings: [\n    { main: '#E26245', contrastText: '#fff' }, // orange\n    { main: '#4AC001', contrastText: '#fff' }, // green\n    { main: '#5934C7', contrastText: '#fff' }, // purple\n  ],\n  typography: {\n    xs: {\n      fontSize: 10,\n    },\n    sm: {\n      fontSize: 12,\n    },\n    xl: {\n      fontSize: 22,\n    },\n    moreLabel: {\n      fontSize: 11,\n      fontWeight: 'bold',\n    },\n  },\n}\n","import { createContext, useContext } from 'react'\n\nimport { defaultTheme } from './defaultTheme'\n\nexport const ThemeContext = createContext(defaultTheme)\n\nexport const useTheme = () => {\n  const customTheme = useContext(ThemeContext)\n  if (!customTheme) {\n    return defaultTheme\n  }\n  return customTheme\n}\n","import { TextStyle, ViewStyle } from 'react-native'\n\nimport { DeepPartial } from './utility-types'\n\nexport function objHasContent(obj: ViewStyle | TextStyle): boolean {\n  return !!Object.keys(obj).length\n}\n\nexport function stringHasContent(string: string): boolean {\n  return !!string.length\n}\n\nfunction isObject(item: any): item is object {\n  return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nfunction keys<T extends object>(obj: T): (keyof T)[] {\n  return Object.keys(obj) as any\n}\n\nexport function deepMerge<T extends object>(target: T, source: DeepPartial<T>): T {\n  const output: T = Object.assign({}, target)\n  if (isObject(target) && isObject(source)) {\n    keys(source).forEach((key) => {\n      if (isObject(source[key])) {\n        if (!(key in target)) Object.assign(output, { [key]: source[key] })\n        // @ts-ignore\n        else output[key] = deepMerge(target[key], source[key])\n      } else {\n        Object.assign(output, { [key]: source[key] })\n      }\n    })\n  }\n  return output\n}\n","import React from 'react'\n\nexport const typedMemo: <T>(c: T) => T = React.memo\n","import { Platform, StyleSheet } from 'react-native'\n\nexport const MIN_HEIGHT = 1200\nexport const HOUR_GUIDE_WIDTH = 50\nexport const OVERLAP_OFFSET = Platform.OS === 'web' ? 20 : 8\nexport const OVERLAP_PADDING = Platform.OS === 'web' ? 3 : 0\n\nexport const eventCellCss = StyleSheet.create({\n  style: {\n    zIndex: 100,\n    borderRadius: 3,\n    padding: 4,\n    overflow: 'hidden',\n    shadowColor: '#000',\n    shadowOffset: { width: 0, height: 1 },\n    shadowOpacity: 0.2,\n    shadowRadius: 1,\n    elevation: 2,\n    minWidth: '33%',\n  },\n})\n\n/*\n * Utility-first CSS.\n */\nexport const u = StyleSheet.create({\n  /*\n   * Flex\n   */\n  flex: {\n    flexDirection: 'row',\n  },\n  'flex-row': {\n    flexDirection: 'row',\n  },\n  'flex-row-reverse': {\n    flexDirection: 'row-reverse',\n  },\n  'flex-column': {\n    flexDirection: 'column',\n  },\n  'flex-column-reverse': {\n    flexDirection: 'column-reverse',\n  },\n  'flex-1': {\n    flex: 1,\n  },\n  'justify-between': {\n    justifyContent: 'space-between',\n  },\n  'justify-center': {\n    justifyContent: 'center',\n  },\n  'items-center': {\n    alignItems: 'center',\n  },\n  'self-center': {\n    alignSelf: 'center',\n  },\n\n  /*\n   * Border\n   */\n  'border-l': {\n    borderLeftWidth: 1,\n  },\n  'border-t': {\n    borderTopWidth: 1,\n  },\n  'border-b': {\n    borderBottomWidth: 1,\n  },\n  'border-b-2': {\n    borderBottomWidth: 2,\n  },\n  'border-r': {\n    borderRightWidth: 1,\n  },\n\n  /*\n   * Spacing\n   */\n  'mt-2': {\n    marginTop: 2,\n  },\n  'mt-4': {\n    marginTop: 4,\n  },\n  'mt-6': {\n    marginTop: 6,\n  },\n  'mb-6': {\n    marginBottom: 6,\n  },\n  'mx-3': {\n    marginLeft: 3,\n    marginRight: 3,\n  },\n  'p-2': {\n    padding: 2,\n  },\n  'p-8': {\n    padding: 8,\n  },\n  'pt-2': {\n    paddingTop: 2,\n  },\n  'py-2': {\n    paddingVertical: 2,\n  },\n  'px-6': {\n    paddingHorizontal: 6,\n  },\n  'pb-6': {\n    paddingBottom: 6,\n  },\n\n  /*\n   * Text\n   */\n  'text-center': {\n    textAlign: 'center',\n  },\n\n  /*\n   * Radius\n   */\n  rounded: {\n    borderRadius: 3,\n  },\n  'rounded-full': {\n    borderRadius: 9999,\n  },\n\n  /*\n   * Z Index\n   */\n  'z-0': {\n    zIndex: 0,\n  },\n  'z-10': {\n    zIndex: 10,\n  },\n  'z-20': {\n    zIndex: 20,\n  },\n\n  /*\n   * Width\n   */\n  'w-20': {\n    width: 20,\n  },\n  'w-36': {\n    width: 36,\n  },\n  'w-50': {\n    width: 50,\n  },\n\n  /*\n   * Height\n   */\n  'h-36': {\n    height: 36,\n  },\n  'h-50': {\n    height: 50,\n  },\n\n  /*\n   * Misc\n   */\n  'overflow-hidden': {\n    overflow: 'hidden',\n  },\n  absolute: {\n    position: 'absolute',\n  },\n  truncate:\n    Platform.OS === 'web'\n      ? {\n          overflow: 'hidden',\n          // textOverflow: 'ellipsis',\n          // whiteSpace: 'nowrap',\n        }\n      : {},\n})\n","import calendarize, { Week } from 'calendarize'\nimport dayjs from 'dayjs'\n\nimport { OVERLAP_PADDING } from '../commonStyles'\nimport { ICalendarEventBase, Mode, WeekNum } from '../interfaces'\nimport { Palette } from '../theme/ThemeInterface'\n\nexport const DAY_MINUTES = 1440\nexport const SIMPLE_DATE_FORMAT = 'YYYY-MM-DD'\n\nexport function getDatesInMonth(date: string | Date | dayjs.Dayjs = new Date(), locale = 'en') {\n  const subject = dayjs(date)\n  const days = Array(subject.daysInMonth())\n    .fill(0)\n    .map((_, i) => {\n      return subject.date(i + 1).locale(locale)\n    })\n  return days\n}\n\nexport function getDatesInWeek(\n  date: string | Date | dayjs.Dayjs = new Date(),\n  weekStartsOn: WeekNum = 0,\n  locale = 'en',\n) {\n  const subject = dayjs(date)\n  const subjectDOW = subject.day()\n  const days = Array(7)\n    .fill(0)\n    .map((_, i) => {\n      return subject\n        .add(i - (subjectDOW < weekStartsOn ? 7 + subjectDOW : subjectDOW) + weekStartsOn, 'day')\n        .locale(locale)\n    })\n  return days\n}\n\nexport function getDatesInNextThreeDays(\n  date: string | Date | dayjs.Dayjs = new Date(),\n  locale = 'en',\n) {\n  const subject = dayjs(date).locale(locale)\n  const days = Array(3)\n    .fill(0)\n    .map((_, i) => {\n      return subject.add(i, 'day')\n    })\n  return days\n}\n\nexport function getDatesInNextOneDay(\n  date: string | Date | dayjs.Dayjs = new Date(),\n  locale = 'en',\n) {\n  const subject = dayjs(date).locale(locale)\n  const days = Array(1)\n    .fill(0)\n    .map((_, i) => {\n      return subject.add(i, 'day')\n    })\n  return days\n}\n\nexport function formatHour(hour: number, ampm = false) {\n  if (ampm) {\n    if (hour === 0) {\n      return ''\n    }\n    if (hour === 12) {\n      return `12 PM`\n    }\n    if (hour > 12) {\n      return `${hour - 12} PM`\n    }\n    return `${hour} AM`\n  }\n  return `${hour}:00`\n}\n\nexport function isToday(date: dayjs.Dayjs) {\n  const today = dayjs()\n  return today.isSame(date, 'day')\n}\n\nexport function getRelativeTopInDay(date: dayjs.Dayjs, minHour: number = 0, hours: number = 24) {\n  const totalMinutesInRange = (DAY_MINUTES / 24) * hours\n  return (100 * ((date.hour() - minHour) * 60 + date.minute())) / totalMinutesInRange\n}\n\nexport function todayInMinutes() {\n  const today = dayjs()\n  return today.diff(dayjs().startOf('day'), 'minute')\n}\n\nexport function modeToNum(mode: Mode, current?: dayjs.Dayjs | Date): number {\n  if (mode === 'month') {\n    if (!current) {\n      throw new Error('You must specify current date if mode is month')\n    }\n    if (current instanceof Date) {\n      current = dayjs(current)\n    }\n    return current.daysInMonth() - current.date() + 1\n  }\n  switch (mode) {\n    case 'day':\n      return 1\n    case '3days':\n      return 3\n    case 'week':\n    case 'custom':\n      return 7\n    default:\n      throw new Error('undefined mode')\n  }\n}\n\nexport function formatStartEnd(start: Date, end: Date, format: string) {\n  return `${dayjs(start).format(format)} - ${dayjs(end).format(format)}`\n}\n\nexport function isAllDayEvent(start: Date, end: Date) {\n  const _start = dayjs(start)\n  const _end = dayjs(end)\n\n  return _start.hour() === 0 && _start.minute() === 0 && _end.hour() === 0 && _end.minute() === 0\n}\n\nexport function getCountOfEventsAtEvent(\n  event: ICalendarEventBase,\n  sortedEventList: ICalendarEventBase[],\n) {\n  let count = 0\n\n  // Since the list is sorted, we can stop iterating once the start time exceeds the event's end time\n  for (const e of sortedEventList) {\n    // If the current event starts after the end of the event we're checking, no need to proceed further\n    if (e.start >= event.end) {\n      break\n    }\n\n    // Check for overlap\n    if (e.end > event.start && e.start < event.end) {\n      count++\n    }\n  }\n\n  return count\n}\n\nexport function getOrderOfEvent(\n  event: ICalendarEventBase,\n  sortedEventList: ICalendarEventBase[],\n): number {\n  const eventStart = new Date(event.start).getTime()\n  const eventEnd = new Date(event.end).getTime()\n\n  // Helper functions to get start and end times\n  const getStartTime = (e: ICalendarEventBase) => new Date(e.start).getTime()\n  const getEndTime = (e: ICalendarEventBase) => new Date(e.end).getTime()\n\n  // Binary search to find the first potentially overlapping event\n  let left = 0\n  let right = sortedEventList.length - 1\n  let firstOverlapIndex = sortedEventList.length\n\n  while (left <= right) {\n    const mid = Math.floor((left + right) / 2)\n    const midEventEnd = getEndTime(sortedEventList[mid])\n\n    if (midEventEnd <= eventStart) {\n      left = mid + 1\n    } else {\n      firstOverlapIndex = mid\n      right = mid - 1\n    }\n  }\n\n  // Collect overlapping events starting from the firstOverlapIndex\n  const overlappingEvents = []\n  for (let i = firstOverlapIndex; i < sortedEventList.length; i++) {\n    const currentEvent = sortedEventList[i]\n    const start = getStartTime(currentEvent)\n    const end = getEndTime(currentEvent)\n\n    if (start >= eventEnd) {\n      break // No further events will overlap\n    }\n\n    if ((eventStart >= start && eventStart < end) || (start >= eventStart && start < eventEnd)) {\n      overlappingEvents.push({ event: currentEvent, start, end })\n    }\n  }\n\n  // Sort overlapping events by start time and duration\n  overlappingEvents.sort((a, b) => {\n    if (a.start === b.start) {\n      return a.end - a.start - (b.end - b.start)\n    } else {\n      return a.start - b.start\n    }\n  })\n\n  // Find the index of the given event in the sorted overlapping events\n  const index = overlappingEvents.findIndex(({ event: e }) => e === event)\n  return index === -1 ? 0 : index\n}\n\n/**\n * Iterate over a sorted list of events and add the following properties:\n * - overlapPosition: position of the event in the stack of overlapping events\n * - overlapsCount: number of events that overlap with this event\n * @param events Sorted list of events by start time\n * @param eventsAreSorted indicates if the events are already sorted\n */\nexport function enrichEvents<T extends ICalendarEventBase>(\n  events: T[],\n  eventsAreSorted?: boolean,\n): Record<string, T[]> {\n  if (!events.length) return {}\n\n  let groupEndTime = events[0].end\n  let overlapPosition = 0\n  let overlapCounting = 0\n  let overlapCountingPointers: number[] = []\n\n  // If events are not sorted, sort them by start time\n  const baseEvents = eventsAreSorted\n    ? events\n    : events.sort((a, b) => a.start.getTime() - b.start.getTime())\n\n  const eventsWithOverlaps = baseEvents.map((event, index) => {\n    // If the event starts before the group end time, it overlaps\n    if (event.start < groupEndTime) {\n      // Update the group end time if this overlapping event ends after the current group end time\n      if (event.end > groupEndTime) {\n        groupEndTime = event.end\n      }\n      overlapCounting++\n      // If this is the last event, we need to add the overlap counting to the overlap counting pointers\n      if (index === baseEvents.length - 1) {\n        overlapCountingPointers.push(...Array(overlapCounting).fill(overlapCounting))\n      }\n      //  Otherwise, it doesn't overlap and we reset the pointers\n    } else {\n      groupEndTime = event.end\n      overlapCountingPointers.push(...Array(overlapCounting).fill(overlapCounting))\n      // If this is the last event, we need to add a \"group\" of 1 into the overlap counting pointers\n      if (index === baseEvents.length - 1) {\n        overlapCountingPointers.push(1)\n      }\n      overlapPosition = 0\n      overlapCounting = 1\n    }\n\n    return {\n      ...event,\n      // Add the overlap position to the event and increment by 1 for the next event\n      overlapPosition: overlapPosition++,\n    }\n  })\n\n  const eventsByDate: Record<string, T[]> = {}\n  eventsWithOverlaps.forEach((event, index) => {\n    // Add overlap count to the event\n    const enrichedEvent = {\n      ...event,\n      overlapCount: overlapCountingPointers[index],\n    }\n\n    const startDate = dayjs(enrichedEvent.start).format(SIMPLE_DATE_FORMAT)\n    const endDate = dayjs(enrichedEvent.end).format(SIMPLE_DATE_FORMAT)\n\n    if (!eventsByDate[startDate]) {\n      eventsByDate[startDate] = []\n    }\n\n    if (!eventsByDate[endDate]) {\n      eventsByDate[endDate] = []\n    }\n\n    if (startDate === endDate) {\n      eventsByDate[startDate].push(enrichedEvent)\n    } else {\n      /**\n       * In case of multi-day events, we need to create an event for each day setting the start\n       * and end dates of the middle days to the start and end of the day.\n       */\n\n      // Add the event to the bucket of the start date\n      eventsByDate[startDate].push({\n        ...enrichedEvent,\n        end: dayjs(enrichedEvent.start).endOf('day').toDate(),\n      })\n\n      // Add events in the bucket of the middle dates\n      const amountOfDaysBetweenDates = dayjs(enrichedEvent.start).diff(enrichedEvent.end, 'day')\n      for (let i = 1; i <= amountOfDaysBetweenDates; i++) {\n        const intermediateDate = dayjs(enrichedEvent.start).add(1, 'day')\n        if (!eventsByDate[intermediateDate.format(SIMPLE_DATE_FORMAT)]) {\n          eventsByDate[intermediateDate.format(SIMPLE_DATE_FORMAT)] = []\n        }\n        eventsByDate[intermediateDate.format(SIMPLE_DATE_FORMAT)].push({\n          ...enrichedEvent,\n          start: intermediateDate.startOf('day').toDate(),\n        })\n      }\n\n      // Add the event to the bucket of the end date\n      eventsByDate[endDate].push({\n        ...enrichedEvent,\n        start: dayjs(enrichedEvent.end).startOf('day').toDate(),\n      })\n    }\n  })\n\n  return eventsByDate\n}\n\nexport function getStyleForOverlappingEvent(\n  eventPosition: number,\n  overlapOffset: number,\n  palettes: Palette[],\n) {\n  let overlapStyle = {}\n  const offset = overlapOffset\n  const start = eventPosition * offset\n  const zIndex = 100 + eventPosition\n  const bgColors = palettes.map((p) => p.main)\n  overlapStyle = {\n    start: start + OVERLAP_PADDING,\n    end: OVERLAP_PADDING,\n    backgroundColor: bgColors[eventPosition % bgColors.length] || bgColors[0],\n    zIndex,\n  }\n  return overlapStyle\n}\n\nexport function getDatesInNextCustomDays(\n  date: string | Date | dayjs.Dayjs = new Date(),\n  weekStartsOn: WeekNum = 0,\n  weekEndsOn: WeekNum = 6,\n  locale = 'en',\n) {\n  const subject = dayjs(date)\n  const subjectDOW = subject.day()\n  const days = Array(weekDaysCount(weekStartsOn, weekEndsOn))\n    .fill(0)\n    .map((_, i) => {\n      return subject.add(i - subjectDOW + weekStartsOn, 'day').locale(locale)\n    })\n  return days\n}\n\n// TODO: This method should be unit-tested\nfunction weekDaysCount(weekStartsOn: WeekNum, weekEndsOn: WeekNum) {\n  // handle reverse week\n  if (weekEndsOn < weekStartsOn) {\n    let daysCount = 1\n    let i = weekStartsOn\n    while (i !== weekEndsOn) {\n      ++i\n      ++daysCount\n      if (i > 6) {\n        i = 0\n      }\n      // fallback for infinite\n      if (daysCount > 7) {\n        break\n      }\n    }\n    return daysCount\n  }\n  // normal week\n  if (weekEndsOn > weekStartsOn) {\n    return weekEndsOn - weekStartsOn + 1\n  }\n  // default\n  return 1\n}\n\nexport function getEventSpanningInfo(\n  event: ICalendarEventBase,\n  date: dayjs.Dayjs,\n  dayOfTheWeek: number,\n  calendarWidth: number,\n  showAdjacentMonths: boolean,\n) {\n  const dayWidth = calendarWidth / 7\n\n  // adding + 1 because durations start at 0\n  const eventDuration =\n    Math.floor(dayjs.duration(dayjs(event.end).endOf('day').diff(dayjs(event.start))).asDays()) + 1\n  const eventDaysLeft =\n    Math.floor(dayjs.duration(dayjs(event.end).endOf('day').diff(date)).asDays()) + 1\n  const weekDaysLeft = 7 - dayOfTheWeek\n  const monthDaysLeft = date.endOf('month').date() - date.date()\n  const isMultipleDays = eventDuration > 1\n  // This is to determine how many days from the event to show during a week\n  const eventWeekDuration =\n    !showAdjacentMonths && monthDaysLeft < 7 && monthDaysLeft < eventDuration\n      ? monthDaysLeft + 1\n      : eventDaysLeft > weekDaysLeft\n      ? weekDaysLeft\n      : eventDaysLeft < eventDuration\n      ? eventDaysLeft\n      : eventDuration\n  const isMultipleDaysStart =\n    isMultipleDays &&\n    (date.isSame(event.start, 'day') ||\n      (dayOfTheWeek === 0 && date.isAfter(event.start)) ||\n      (!showAdjacentMonths && date.get('date') === 1))\n  // - 6 to take in account the padding\n  const eventWidth = dayWidth * eventWeekDuration - 6\n\n  return { eventWidth, isMultipleDays, isMultipleDaysStart, eventWeekDuration }\n}\n\nexport function getWeeksWithAdjacentMonths(targetDate: dayjs.Dayjs, weekStartsOn: WeekNum) {\n  let weeks = calendarize(targetDate.toDate(), weekStartsOn)\n  const firstDayIndex = weeks[0].findIndex((d) => d === 1)\n  const lastDay = targetDate.endOf('month').date()\n  const lastDayIndex = weeks[weeks.length - 1].findIndex((d) => d === lastDay)\n\n  weeks = weeks.map((week, iw) => {\n    return week.map((d, id) => {\n      if (d !== 0) {\n        return d\n      } else if (iw === 0) {\n        return d - (firstDayIndex - id - 1)\n      } else {\n        return lastDay + (id - lastDayIndex)\n      }\n    }) as Week\n  })\n\n  return weeks\n}\n","import dayjs from 'dayjs'\nimport React from 'react'\n\nexport function useNow(enabled: boolean) {\n  const [now, setNow] = React.useState(dayjs())\n\n  React.useEffect(() => {\n    if (!enabled) {\n      return () => {}\n    }\n    const pid = setInterval(() => setNow(dayjs()), 60 * 1000)\n    return () => clearInterval(pid)\n  }, [enabled])\n\n  return {\n    now,\n  }\n}\n","import React from 'react'\nimport { PanResponder } from 'react-native'\n\nimport { HorizontalDirection } from '../interfaces'\n\nconst SWIPE_THRESHOLD = 50\n\nexport function usePanResponder({\n  onSwipeHorizontal,\n}: {\n  onSwipeHorizontal?: (d: HorizontalDirection) => void\n}) {\n  const panHandledRef = React.useRef(false)\n\n  const panResponder = React.useMemo(\n    () =>\n      PanResponder.create({\n        // see https://stackoverflow.com/questions/47568850/touchableopacity-with-parent-panresponder\n        onMoveShouldSetPanResponder: (_, { dx, dy }) => {\n          if (onSwipeHorizontal !== undefined) {\n            return Math.abs(dx / dy) > 1\n          }\n          return false\n        },\n        onPanResponderMove: (_, { dy, dx }) => {\n          if (dy < -1 * SWIPE_THRESHOLD || SWIPE_THRESHOLD < dy || panHandledRef.current) {\n            return\n          }\n          if (dx < -1 * SWIPE_THRESHOLD) {\n            onSwipeHorizontal && onSwipeHorizontal('LEFT')\n            panHandledRef.current = true\n            return\n          }\n          if (dx > SWIPE_THRESHOLD) {\n            onSwipeHorizontal && onSwipeHorizontal('RIGHT')\n            panHandledRef.current = true\n            return\n          }\n        },\n        onPanResponderEnd: () => {\n          panHandledRef.current = false\n        },\n      }),\n    [onSwipeHorizontal],\n  )\n\n  return panResponder\n}\n","import dayjs from 'dayjs'\nimport React from 'react'\nimport { AccessibilityProps, ViewStyle } from 'react-native'\n\nimport { eventCellCss } from '../commonStyles'\nimport { CalendarTouchableOpacityProps, EventCellStyle, ICalendarEventBase } from '../interfaces'\n\ninterface UseCalendarTouchableOpacityPropsProps<T extends ICalendarEventBase> {\n  event: T\n  eventCellStyle?: EventCellStyle<T>\n  eventCellAccessibilityProps?: AccessibilityProps\n  onPressEvent?: (event: T) => void\n  injectedStyles?: ViewStyle[]\n}\n\nexport function useCalendarTouchableOpacityProps<T extends ICalendarEventBase>({\n  event,\n  eventCellStyle,\n  eventCellAccessibilityProps: eventCellAccessiblityProps = {},\n  injectedStyles = [],\n  onPressEvent,\n}: UseCalendarTouchableOpacityPropsProps<T>) {\n  const getEventStyle = React.useMemo(\n    () => (typeof eventCellStyle === 'function' ? eventCellStyle : () => eventCellStyle),\n    [eventCellStyle],\n  )\n\n  const plainJsEvent = React.useMemo(\n    () => ({\n      ...event,\n      start: dayjs(event.start).toDate(),\n      end: dayjs(event.end).toDate(),\n    }),\n    [event],\n  )\n\n  const _onPress = React.useCallback(() => {\n    onPressEvent && onPressEvent(plainJsEvent)\n  }, [onPressEvent, plainJsEvent])\n\n  const touchableOpacityProps: CalendarTouchableOpacityProps = {\n    delayPressIn: 20,\n    key: `${event.start.toISOString()}_${event.title}`,\n    style: [eventCellCss.style, ...injectedStyles, getEventStyle(plainJsEvent)],\n    onPress: _onPress,\n    disabled: !onPressEvent || !!event.disabled,\n    ...eventCellAccessiblityProps,\n  }\n\n  return touchableOpacityProps\n}\n","import dayjs from 'dayjs'\nimport * as React from 'react'\nimport { Text, TouchableOpacity } from 'react-native'\n\nimport { CalendarTouchableOpacityProps, ICalendarEventBase } from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport { formatStartEnd } from '../utils/datetime'\n\ninterface DefaultCalendarEventRendererProps<T extends ICalendarEventBase> {\n  touchableOpacityProps: CalendarTouchableOpacityProps\n  event: T\n  showTime?: boolean\n  textColor: string\n  ampm: boolean\n}\n\nexport function DefaultCalendarEventRenderer<T extends ICalendarEventBase>({\n  touchableOpacityProps,\n  event,\n  showTime = true,\n  textColor,\n  ampm,\n}: DefaultCalendarEventRendererProps<T>) {\n  const theme = useTheme()\n  const eventTimeStyle = { fontSize: theme.typography.xs.fontSize, color: textColor }\n  const eventTitleStyle = { fontSize: theme.typography.sm.fontSize, color: textColor }\n\n  return (\n    <TouchableOpacity {...touchableOpacityProps}>\n      {dayjs(event.end).diff(event.start, 'minute') < 32 && showTime ? (\n        <Text style={eventTitleStyle}>\n          {event.title},\n          <Text style={eventTimeStyle}>\n            {dayjs(event.start).format(ampm ? 'hh:mm a' : 'HH:mm')}\n          </Text>\n        </Text>\n      ) : (\n        <>\n          <Text style={eventTitleStyle}>{event.title}</Text>\n          {showTime && (\n            <Text style={eventTimeStyle}>\n              {formatStartEnd(event.start, event.end, ampm ? 'h:mm a' : 'HH:mm')}\n            </Text>\n          )}\n          {event.children && event.children}\n        </>\n      )}\n    </TouchableOpacity>\n  )\n}\n","import dayjs from 'dayjs'\nimport * as React from 'react'\n\nimport { OVERLAP_OFFSET, u } from '../commonStyles'\nimport { useCalendarTouchableOpacityProps } from '../hooks/useCalendarTouchableOpacityProps'\nimport { EventCellStyle, EventRenderer, ICalendarEventBase, Mode } from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport { DAY_MINUTES, getRelativeTopInDay, getStyleForOverlappingEvent } from '../utils/datetime'\nimport { typedMemo } from '../utils/react'\nimport { DefaultCalendarEventRenderer } from './DefaultCalendarEventRenderer'\nimport { AccessibilityProps } from 'react-native'\n\nconst getEventCellPositionStyle = (start: Date, end: Date, minHour: number, hours: number) => {\n  const totalMinutesInRange = (DAY_MINUTES / 24) * hours\n  const durationInMinutes = dayjs(end).diff(start, 'minute')\n  const relativeHeight = 100 * (1 / totalMinutesInRange) * durationInMinutes\n  const relativeTop = getRelativeTopInDay(dayjs(start), minHour, hours)\n  const relativeTopOffset = (minHour * 60) / DAY_MINUTES\n  return {\n    height: `${relativeHeight}%`,\n    top: `${relativeTop - relativeTopOffset}%`,\n  }\n}\n\ninterface CalendarEventProps<T extends ICalendarEventBase> {\n  event: T\n  onPressEvent?: (event: T) => void\n  eventCellStyle?: EventCellStyle<T>\n  eventCellTextColor?: string\n  eventCellAccessibilityProps?: AccessibilityProps\n  showTime: boolean\n  eventCount?: number\n  eventOrder?: number\n  overlapOffset?: number\n  renderEvent?: EventRenderer<T>\n  ampm: boolean\n  mode?: Mode\n  maxHour?: number\n  minHour?: number\n  hours?: number\n}\n\nfunction _CalendarEvent<T extends ICalendarEventBase>({\n  event,\n  onPressEvent,\n  eventCellStyle,\n  eventCellAccessibilityProps = {},\n  eventCellTextColor,\n  showTime,\n  eventCount = 1,\n  eventOrder = 0,\n  overlapOffset = OVERLAP_OFFSET,\n  renderEvent,\n  ampm,\n  mode,\n  minHour = 0,\n  hours = 24,\n}: CalendarEventProps<T>) {\n  const theme = useTheme()\n\n  const palettes = React.useMemo(\n    () => [theme.palette.primary, ...theme.eventCellOverlappings],\n    [theme],\n  )\n\n  const touchableOpacityProps = useCalendarTouchableOpacityProps({\n    event,\n    eventCellStyle,\n    eventCellAccessibilityProps,\n    onPressEvent,\n    injectedStyles:\n      mode === 'schedule'\n        ? [getStyleForOverlappingEvent(eventOrder, overlapOffset, palettes)]\n        : [\n            getEventCellPositionStyle(event.start, event.end, minHour, hours),\n            getStyleForOverlappingEvent(eventOrder, overlapOffset, palettes),\n            u['absolute'],\n            u['mt-2'],\n            u['mx-3'],\n          ],\n  })\n\n  const textColor = React.useMemo(() => {\n    const fgColors = palettes.map((p) => p.contrastText)\n    return fgColors[eventCount % fgColors.length] || fgColors[0]\n  }, [eventCount, palettes])\n  if (renderEvent) {\n    return renderEvent(event, touchableOpacityProps)\n  }\n\n  return (\n    <DefaultCalendarEventRenderer\n      event={event}\n      showTime={showTime}\n      ampm={ampm}\n      touchableOpacityProps={touchableOpacityProps}\n      textColor={eventCellTextColor || textColor}\n    />\n  )\n}\n\nexport const CalendarEvent = typedMemo(_CalendarEvent)\n","import dayjs from 'dayjs'\nimport * as React from 'react'\nimport { AccessibilityProps, TouchableWithoutFeedback, View } from 'react-native'\n\nimport { u } from '../commonStyles'\nimport { CalendarCellStyle } from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\n\ninterface HourGuideCellProps {\n  cellHeight: number\n  onLongPress: (d: dayjs.Dayjs) => void\n  onPress: (d: dayjs.Dayjs) => void\n  date: dayjs.Dayjs\n  hour: number\n  index: number\n  calendarCellStyle?: CalendarCellStyle\n  calendarCellAccessibilityProps?: AccessibilityProps\n  timeslots: number\n}\n\nconst _HourGuideCell = ({\n  cellHeight,\n  onLongPress,\n  onPress,\n  date,\n  hour,\n  index,\n  calendarCellStyle,\n  calendarCellAccessibilityProps,\n  timeslots,\n}: HourGuideCellProps) => {\n  const theme = useTheme()\n\n  const getCalendarCellStyle = React.useMemo(\n    () => (typeof calendarCellStyle === 'function' ? calendarCellStyle : () => calendarCellStyle),\n    [calendarCellStyle],\n  )\n\n  return (\n    <TouchableWithoutFeedback\n      onLongPress={() => onLongPress(date.hour(hour).minute(0))}\n      onPress={() => onPress(date.hour(hour).minute(0))}\n      {...calendarCellAccessibilityProps}\n    >\n      <View\n        style={[\n          u['border-l'],\n          u['border-b'],\n          {\n            borderColor: theme.palette.gray['200'],\n            height: cellHeight,\n            justifyContent: 'space-evenly',\n          },\n          { ...getCalendarCellStyle(date.toDate(), index) },\n        ]}\n      >\n        {Array.from({ length: timeslots }, (_, index) => (\n          <View\n            key={index}\n            style={[\n              u['border-l'],\n              u['border-b'],\n              {\n                borderColor: theme.palette.gray['100'],\n                height: 1,\n              },\n            ]}\n          />\n        ))}\n      </View>\n    </TouchableWithoutFeedback>\n  )\n}\n\nexport const HourGuideCell = React.memo(_HourGuideCell)\n","import * as React from 'react'\nimport { AccessibilityProps, Text, TextStyle, View } from 'react-native'\n\nimport { u } from '../commonStyles'\nimport { useTheme } from '../theme/ThemeContext'\nimport { formatHour } from '../utils/datetime'\nimport { objHasContent } from '../utils/object'\nimport { HourRenderer } from '../interfaces'\n\ninterface HourGuideColumnProps {\n  cellHeight: number\n  hour: number\n  ampm: boolean\n  hourStyle: TextStyle\n  calendarCellAccessibilityProps?: AccessibilityProps\n  hourComponent?: HourRenderer\n}\n\nconst _HourGuideColumn = ({\n  cellHeight,\n  hour,\n  ampm,\n  hourStyle = {},\n  calendarCellAccessibilityProps = {},\n  hourComponent: HourComponent,\n}: HourGuideColumnProps) => {\n  const theme = useTheme()\n  const textStyle = React.useMemo(\n    () => ({ color: theme.palette.gray[500], fontSize: theme.typography.xs.fontSize }),\n    [theme],\n  )\n\n  const HourComp = HourComponent as any\n  return (\n    <View style={{ height: cellHeight }} {...calendarCellAccessibilityProps}>\n      {HourComponent ? (\n        <HourComp hour={hour} ampm={ampm} />\n      ) : (\n        <Text style={[objHasContent(hourStyle) ? hourStyle : textStyle, u['text-center']]}>\n          {formatHour(hour, ampm)}\n        </Text>\n      )}\n    </View>\n  )\n}\n\nexport const HourGuideColumn = React.memo(_HourGuideColumn, () => true)\n","import dayjs from 'dayjs'\nimport * as React from 'react'\nimport {\n  AccessibilityProps,\n  Platform,\n  ScrollView,\n  StyleSheet,\n  TextStyle,\n  View,\n  ViewStyle,\n} from 'react-native'\n\nimport { u } from '../commonStyles'\nimport { useNow } from '../hooks/useNow'\nimport { usePanResponder } from '../hooks/usePanResponder'\nimport {\n  CalendarCellStyle,\n  EventCellStyle,\n  EventRenderer,\n  HorizontalDirection,\n  ICalendarEventBase,\n  HourRenderer,\n} from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport {\n  SIMPLE_DATE_FORMAT,\n  enrichEvents,\n  getCountOfEventsAtEvent,\n  getOrderOfEvent,\n  getRelativeTopInDay,\n  isToday,\n} from '../utils/datetime'\nimport { typedMemo } from '../utils/react'\nimport { CalendarEvent } from './CalendarEvent'\nimport { HourGuideCell } from './HourGuideCell'\nimport { HourGuideColumn } from './HourGuideColumn'\n\nconst styles = StyleSheet.create({\n  nowIndicator: {\n    position: 'absolute',\n    zIndex: 10000,\n    height: 2,\n    width: '100%',\n  },\n})\n\ninterface CalendarBodyProps<T extends ICalendarEventBase> {\n  cellHeight: number\n  containerHeight: number\n  dateRange: dayjs.Dayjs[]\n  events: T[]\n  scrollOffsetMinutes: number\n  ampm: boolean\n  showTime: boolean\n  style: ViewStyle\n  eventCellTextColor?: string\n  eventCellStyle?: EventCellStyle<T>\n  eventCellAccessibilityProps?: AccessibilityProps\n  calendarCellStyle?: CalendarCellStyle\n  calendarCellAccessibilityProps?: AccessibilityProps\n  hideNowIndicator?: boolean\n  overlapOffset?: number\n  onLongPressCell?: (date: Date) => void\n  onPressCell?: (date: Date) => void\n  onPressEvent?: (event: T) => void\n  onSwipeHorizontal?: (d: HorizontalDirection) => void\n  renderEvent?: EventRenderer<T>\n  headerComponent?: React.ReactElement | null\n  headerComponentStyle?: ViewStyle\n  hourStyle?: TextStyle\n  hideHours?: Boolean\n  minHour?: number\n  maxHour?: number\n  isEventOrderingEnabled?: boolean\n  showWeekNumber?: boolean\n  showVerticalScrollIndicator?: boolean\n  scrollEnabled?: boolean\n  enrichedEventsByDate?: Record<string, T[]>\n  enableEnrichedEvents?: boolean\n  eventsAreSorted?: boolean\n  timeslots?: number\n  hourComponent?: HourRenderer\n}\n\nfunction _CalendarBody<T extends ICalendarEventBase>({\n  containerHeight,\n  cellHeight,\n  dateRange,\n  style,\n  onLongPressCell,\n  onPressCell,\n  events,\n  onPressEvent,\n  eventCellTextColor,\n  eventCellStyle,\n  eventCellAccessibilityProps = {},\n  calendarCellStyle,\n  calendarCellAccessibilityProps = {},\n  ampm,\n  showTime,\n  scrollOffsetMinutes,\n  onSwipeHorizontal,\n  hideNowIndicator,\n  overlapOffset,\n  renderEvent,\n  headerComponent = null,\n  headerComponentStyle = {},\n  hourStyle = {},\n  hideHours = false,\n  minHour = 0,\n  maxHour = 23,\n  isEventOrderingEnabled = true,\n  showWeekNumber = false,\n  showVerticalScrollIndicator = false,\n  scrollEnabled = true,\n  enrichedEventsByDate,\n  enableEnrichedEvents = false,\n  eventsAreSorted = false,\n  timeslots = 0,\n  hourComponent,\n}: CalendarBodyProps<T>) {\n  const scrollView = React.useRef<ScrollView>(null)\n  const { now } = useNow(!hideNowIndicator)\n  const hours = Array.from({ length: maxHour - minHour + 1 }, (_, i) => minHour + i)\n\n  React.useEffect(() => {\n    let timeout: ReturnType<typeof setTimeout>\n    if (scrollView.current && scrollOffsetMinutes && Platform.OS !== 'ios') {\n      // We add delay here to work correct on React Native\n      // see: https://stackoverflow.com/questions/33208477/react-native-android-scrollview-scrollto-not-working\n      timeout = setTimeout(\n        () => {\n          if (scrollView && scrollView.current) {\n            scrollView.current.scrollTo({\n              y: (cellHeight * scrollOffsetMinutes) / 60,\n              animated: false,\n            })\n          }\n        },\n        Platform.OS === 'web' ? 0 : 10,\n      )\n    }\n    return () => {\n      if (timeout) {\n        clearTimeout(timeout)\n      }\n    }\n  }, [scrollView, scrollOffsetMinutes, cellHeight])\n\n  const panResponder = usePanResponder({\n    onSwipeHorizontal,\n  })\n\n  const _onPressCell = React.useCallback(\n    (date: dayjs.Dayjs) => {\n      onPressCell && onPressCell(date.toDate())\n    },\n    [onPressCell],\n  )\n\n  const _onLongPressCell = React.useCallback(\n    (date: dayjs.Dayjs) => {\n      onLongPressCell && onLongPressCell(date.toDate())\n    },\n    [onLongPressCell],\n  )\n\n  const internalEnrichedEventsByDate = React.useMemo(() => {\n    if (enableEnrichedEvents) {\n      return enrichedEventsByDate || enrichEvents(events, eventsAreSorted)\n    }\n    return {}\n  }, [enableEnrichedEvents, enrichedEventsByDate, events, eventsAreSorted])\n\n  const enrichedEvents = React.useMemo(() => {\n    if (enableEnrichedEvents) return []\n\n    if (isEventOrderingEnabled) {\n      // Events are being sorted once so we dont have to do it on each loop\n      const sortedEvents = events.sort((a, b) => a.start.getDate() - b.start.getDate())\n      return sortedEvents.map((event) => ({\n        ...event,\n        overlapPosition: getOrderOfEvent(event, sortedEvents),\n        overlapCount: getCountOfEventsAtEvent(event, sortedEvents),\n      }))\n    }\n\n    return events\n  }, [enableEnrichedEvents, events, isEventOrderingEnabled])\n\n  const _renderMappedEvent = React.useCallback(\n    (event: T, index: number) => {\n      return (\n        <CalendarEvent\n          key={`${index}${event.start}${event.title}${event.end}`}\n          event={event}\n          onPressEvent={onPressEvent}\n          eventCellStyle={eventCellStyle}\n          eventCellAccessibilityProps={eventCellAccessibilityProps}\n          eventCellTextColor={eventCellTextColor}\n          showTime={showTime}\n          eventCount={event.overlapCount}\n          eventOrder={event.overlapPosition}\n          overlapOffset={overlapOffset}\n          renderEvent={renderEvent}\n          ampm={ampm}\n          maxHour={maxHour}\n          minHour={minHour}\n          hours={hours.length}\n        />\n      )\n    },\n    [\n      ampm,\n      eventCellStyle,\n      eventCellTextColor,\n      eventCellAccessibilityProps,\n      onPressEvent,\n      overlapOffset,\n      renderEvent,\n      showTime,\n      maxHour,\n      minHour,\n      hours.length,\n    ],\n  )\n\n  const _renderEvents = React.useCallback(\n    (date: dayjs.Dayjs) => {\n      if (enableEnrichedEvents) {\n        return (internalEnrichedEventsByDate[date.format(SIMPLE_DATE_FORMAT)] || []).map(\n          _renderMappedEvent,\n        )\n      } else {\n        return (\n          <>\n            {/* Render events of this date */}\n            {/* M  T  (W)  T  F  S  S */}\n            {/*       S-E             */}\n            {(enrichedEvents as T[])\n              .filter(({ start }) =>\n                dayjs(start).isBetween(date.startOf('day'), date.endOf('day'), null, '[)'),\n              )\n              .map(_renderMappedEvent)}\n\n            {/* Render events which starts before this date and ends on this date */}\n            {/* M  T  (W)  T  F  S  S */}\n            {/* S------E              */}\n            {(enrichedEvents as T[])\n              .filter(\n                ({ start, end }) =>\n                  dayjs(start).isBefore(date.startOf('day')) &&\n                  dayjs(end).isBetween(date.startOf('day'), date.endOf('day'), null, '[)'),\n              )\n              .map((event) => ({\n                ...event,\n                start: dayjs(event.end).startOf('day'),\n              }))\n              .map(_renderMappedEvent)}\n\n            {/* Render events which starts before this date and ends after this date */}\n            {/* M  T  (W)  T  F  S  S */}\n            {/*    S-------E          */}\n            {(enrichedEvents as T[])\n              .filter(\n                ({ start, end }) =>\n                  dayjs(start).isBefore(date.startOf('day')) &&\n                  dayjs(end).isAfter(date.endOf('day')),\n              )\n              .map((event) => ({\n                ...event,\n                start: dayjs(event.end).startOf('day'),\n                end: dayjs(event.end).endOf('day'),\n              }))\n              .map(_renderMappedEvent)}\n          </>\n        )\n      }\n    },\n    [_renderMappedEvent, enableEnrichedEvents, enrichedEvents, internalEnrichedEventsByDate],\n  )\n\n  const theme = useTheme()\n\n  return (\n    <React.Fragment>\n      {headerComponent != null ? <View style={headerComponentStyle}>{headerComponent}</View> : null}\n      <ScrollView\n        style={[\n          {\n            height: containerHeight - cellHeight * 3,\n          },\n          style,\n        ]}\n        ref={scrollView}\n        scrollEventThrottle={32}\n        {...(Platform.OS !== 'web' ? panResponder.panHandlers : {})}\n        showsVerticalScrollIndicator={showVerticalScrollIndicator}\n        scrollEnabled={scrollEnabled}\n        nestedScrollEnabled\n        contentOffset={Platform.OS === 'ios' ? { x: 0, y: scrollOffsetMinutes } : { x: 0, y: 0 }}\n      >\n        <View\n          style={[u['flex-1'], theme.isRTL ? u['flex-row-reverse'] : u['flex-row']]}\n          {...(Platform.OS === 'web' ? panResponder.panHandlers : {})}\n        >\n          {(!hideHours || showWeekNumber) && (\n            <View style={[u['z-20'], u['w-50']]}>\n              {hours.map((hour) => (\n                <HourGuideColumn\n                  key={hour}\n                  cellHeight={cellHeight}\n                  hour={hour}\n                  ampm={ampm}\n                  hourStyle={hourStyle}\n                  calendarCellAccessibilityProps={calendarCellAccessibilityProps}\n                  hourComponent={hourComponent}\n                />\n              ))}\n            </View>\n          )}\n\n          {dateRange.map((date) => (\n            <View style={[u['flex-1'], u['overflow-hidden']]} key={date.toString()}>\n              {hours.map((hour, index) => (\n                <HourGuideCell\n                  key={hour}\n                  cellHeight={cellHeight}\n                  date={date}\n                  hour={hour}\n                  onLongPress={_onLongPressCell}\n                  onPress={_onPressCell}\n                  index={index}\n                  calendarCellStyle={calendarCellStyle}\n                  calendarCellAccessibilityProps={calendarCellAccessibilityProps}\n                  timeslots={timeslots}\n                />\n              ))}\n              {_renderEvents(date)}\n              {isToday(date) && !hideNowIndicator && (\n                <View\n                  style={[\n                    styles.nowIndicator,\n                    { backgroundColor: theme.palette.nowIndicator },\n                    {\n                      top: `${getRelativeTopInDay(now, minHour, hours.length)}%`,\n                    },\n                  ]}\n                />\n              )}\n            </View>\n          ))}\n        </View>\n      </ScrollView>\n    </React.Fragment>\n  )\n}\n\nexport const CalendarBody = typedMemo(_CalendarBody)\n","import dayjs from 'dayjs'\nimport * as React from 'react'\nimport { AccessibilityProps, Text, TouchableOpacity, View } from 'react-native'\n\nimport { u } from '../commonStyles'\nimport { useCalendarTouchableOpacityProps } from '../hooks/useCalendarTouchableOpacityProps'\nimport { EventCellStyle, EventRenderer, ICalendarEventBase } from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport { getEventSpanningInfo } from '../utils/datetime'\nimport { typedMemo } from '../utils/react'\n\ninterface CalendarEventProps<T extends ICalendarEventBase> {\n  event: T\n  onPressEvent?: (event: T) => void\n  eventCellStyle?: EventCellStyle<T>\n  eventCellAccessibilityProps?: AccessibilityProps\n  renderEvent?: EventRenderer<T>\n  renderMultiDayEventPadding?: EventRenderer<T>\n  date: dayjs.Dayjs\n  dayOfTheWeek: number\n  calendarWidth: number\n  isRTL: boolean\n  eventMinHeightForMonthView: number\n  showAdjacentMonths: boolean\n}\n\nfunction _CalendarEventForMonthView<T extends ICalendarEventBase>({\n  event,\n  onPressEvent,\n  eventCellStyle,\n  eventCellAccessibilityProps = {},\n  renderEvent,\n  renderMultiDayEventPadding,\n  date,\n  dayOfTheWeek,\n  calendarWidth,\n  isRTL,\n  eventMinHeightForMonthView,\n  showAdjacentMonths,\n}: CalendarEventProps<T>) {\n  const theme = useTheme()\n\n  const { eventWidth, isMultipleDays, isMultipleDaysStart, eventWeekDuration } = React.useMemo(\n    () => getEventSpanningInfo(event, date, dayOfTheWeek, calendarWidth, showAdjacentMonths),\n    [date, dayOfTheWeek, event, calendarWidth, showAdjacentMonths],\n  )\n\n  const touchableOpacityProps = useCalendarTouchableOpacityProps({\n    event,\n    eventCellStyle,\n    eventCellAccessibilityProps,\n    onPressEvent,\n    injectedStyles: [\n      { backgroundColor: theme.palette.primary.main },\n      isMultipleDaysStart && eventWeekDuration > 1\n        ? {\n            position: 'absolute',\n            width: eventWidth,\n            zIndex: 10000,\n          }\n        : {},\n      isRTL ? { right: 0 } : { left: 0 },\n    ],\n  })\n\n  return (\n    <TouchableOpacity\n      style={[{ minHeight: eventMinHeightForMonthView }, u['mt-2']]}\n      onPress={() => !event.disabled && onPressEvent?.(event)}\n    >\n      {(!isMultipleDays && date.isSame(event.start, 'day')) ||\n      (isMultipleDays && isMultipleDaysStart) ? (\n        renderEvent ? (\n          renderEvent(event, touchableOpacityProps)\n        ) : (\n          <View {...touchableOpacityProps}>\n            <Text\n              style={[\n                { color: theme.palette.primary.contrastText },\n                theme.typography.xs,\n                u['truncate'],\n                isRTL && { textAlign: 'right' },\n              ]}\n              numberOfLines={1}\n            >\n              {event.title}\n            </Text>\n          </View>\n        )\n      ) : renderMultiDayEventPadding ? (\n        renderMultiDayEventPadding(event, touchableOpacityProps)\n      ) : null}\n    </TouchableOpacity>\n  )\n}\n\nexport const CalendarEventForMonthView = typedMemo(_CalendarEventForMonthView)\n","import calendarize from 'calendarize'\nimport dayjs from 'dayjs'\nimport * as React from 'react'\nimport {\n  AccessibilityProps,\n  Animated,\n  Platform,\n  Text,\n  TouchableHighlight,\n  TouchableOpacity,\n  View,\n  ViewStyle,\n} from 'react-native'\n\nimport { u } from '../commonStyles'\nimport { useNow } from '../hooks/useNow'\nimport { usePanResponder } from '../hooks/usePanResponder'\nimport {\n  CalendarCellStyle,\n  CalendarCellTextStyle,\n  EventCellStyle,\n  EventRenderer,\n  HorizontalDirection,\n  ICalendarEventBase,\n  WeekNum,\n} from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport { SIMPLE_DATE_FORMAT, getWeeksWithAdjacentMonths } from '../utils/datetime'\nimport { typedMemo } from '../utils/react'\nimport { CalendarEventForMonthView } from './CalendarEventForMonthView'\n\ninterface CalendarBodyForMonthViewProps<T extends ICalendarEventBase> {\n  containerHeight: number\n  targetDate: dayjs.Dayjs\n  events: T[]\n  style: ViewStyle\n  eventCellStyle?: EventCellStyle<T>\n  eventCellAccessibilityProps?: AccessibilityProps\n  calendarCellStyle?: CalendarCellStyle\n  calendarCellAccessibilityPropsForMonthView?: AccessibilityProps\n  calendarCellAccessibilityProps?: AccessibilityProps\n  calendarCellTextStyle?: CalendarCellTextStyle\n  hideNowIndicator?: boolean\n  showAdjacentMonths: boolean\n  onLongPressCell?: (date: Date) => void\n  onPressCell?: (date: Date) => void\n  onPressDateHeader?: (date: Date) => void\n  onPressEvent?: (event: T) => void\n  onSwipeHorizontal?: (d: HorizontalDirection) => void\n  renderEvent?: EventRenderer<T>\n  renderMultiDayEventPadding?: EventRenderer<T>\n  maxVisibleEventCount: number\n  weekStartsOn: WeekNum\n  eventMinHeightForMonthView: number\n  moreLabel: string\n  onPressMoreLabel?: (events: T[], date: Date) => void\n  sortedMonthView: boolean\n  showWeekNumber?: boolean\n  renderCustomDateForMonth?: (date: Date) => React.ReactElement | null\n  disableMonthEventCellPress?: boolean\n}\n\nfunction _CalendarBodyForMonthView<T extends ICalendarEventBase>({\n  containerHeight,\n  targetDate,\n  style,\n  onLongPressCell,\n  onPressCell,\n  onPressDateHeader,\n  events,\n  onPressEvent,\n  eventCellStyle,\n  eventCellAccessibilityProps = {},\n  calendarCellStyle,\n  calendarCellAccessibilityPropsForMonthView = {},\n  calendarCellAccessibilityProps = {},\n  calendarCellTextStyle,\n  onSwipeHorizontal,\n  hideNowIndicator,\n  showAdjacentMonths,\n  renderEvent,\n  renderMultiDayEventPadding,\n  maxVisibleEventCount,\n  weekStartsOn,\n  eventMinHeightForMonthView,\n  moreLabel,\n  onPressMoreLabel,\n  sortedMonthView,\n  showWeekNumber = false,\n  renderCustomDateForMonth,\n  disableMonthEventCellPress,\n}: CalendarBodyForMonthViewProps<T>) {\n  const { now } = useNow(!hideNowIndicator)\n  const [calendarWidth, setCalendarWidth] = React.useState<number>(0)\n  const [calendarCellHeight, setCalendarCellHeight] = React.useState<number>(0)\n\n  const panResponder = usePanResponder({\n    onSwipeHorizontal,\n  })\n\n  const weeks = showAdjacentMonths\n    ? getWeeksWithAdjacentMonths(targetDate, weekStartsOn)\n    : calendarize(targetDate.toDate(), weekStartsOn)\n\n  const minCellHeight = containerHeight / 5 - 30\n  const theme = useTheme()\n\n  const getCalendarCellStyle = React.useMemo(\n    () => (typeof calendarCellStyle === 'function' ? calendarCellStyle : () => calendarCellStyle),\n    [calendarCellStyle],\n  )\n\n  const getCalendarCellTextStyle = React.useMemo(\n    () =>\n      typeof calendarCellTextStyle === 'function'\n        ? calendarCellTextStyle\n        : () => calendarCellTextStyle,\n    [calendarCellTextStyle],\n  )\n\n  const eventsByDate = React.useMemo(() => {\n    const eventDict: { [date: string]: T[] } = {}\n\n    if (!sortedMonthView) {\n      const gridStart = dayjs(targetDate).startOf('month').startOf('week')\n      const gridEnd = dayjs(targetDate).endOf('month').endOf('week')\n      let d = gridStart.clone()\n\n      while (d.isBefore(gridEnd, 'day')) {\n        const key = d.format(SIMPLE_DATE_FORMAT)\n        eventDict[key] = events.filter(({ start, end }) =>\n          // replicate your previous behavior: inclusive start, exclusive end\n          d.isBetween(dayjs(start).startOf('day'), dayjs(end).endOf('day'), null, '[)'),\n        )\n        d = d.add(1, 'day')\n      }\n      return eventDict\n    }\n\n    let dateToCompare = dayjs(targetDate).startOf('month').startOf('week').startOf('day')\n    let startDateOfWeek = dateToCompare.startOf('week')\n    let lastDateOfWeek = dateToCompare.endOf('week')\n    const multipleDayEventsOrder: Map<T, number> = new Map()\n    const lastDateOfMonth = dayjs(targetDate)\n      .endOf('month')\n      .endOf('week')\n      .endOf('day')\n      .add(1, 'day')\n\n    while (dateToCompare.isBefore(lastDateOfMonth, 'day')) {\n      // Update the relevant variables to the next week when the date you're currently trying to index is past the last date of the current week\n      // Initialize the order index for multi-date events, as the order of multi-date events changes every week.\n      if (dateToCompare.isAfter(lastDateOfWeek)) {\n        multipleDayEventsOrder.clear()\n        startDateOfWeek = dayjs(dateToCompare).startOf('week')\n        lastDateOfWeek = dayjs(dateToCompare).endOf('week')\n      }\n\n      // Get all the events that start today and sort them.\n      const todayStartsEvents = events\n        .filter(\n          (event) =>\n            dateToCompare.isSame(dayjs(event.start).startOf('day'), 'day') ||\n            (dateToCompare.isSame(startDateOfWeek, 'day') &&\n              dateToCompare.isBetween(\n                dayjs(event.start).startOf('day'),\n                dayjs(event.end).startOf('day'),\n                'day',\n                '[]',\n              )),\n        )\n        .sort((a, b) => a.start.getTime() - b.start.getTime())\n\n      const todayStartsEventsSet = new Set(todayStartsEvents)\n      const finalEvents = [...todayStartsEvents]\n\n      // Import and sort events that don't start today, but are included today.\n      const todayIncludedEvents = events\n        .filter(\n          (event) =>\n            dateToCompare.isBetween(\n              dayjs(event.start).startOf('day'),\n              dayjs(event.end).startOf('day'),\n              'day',\n              '[]',\n            ) && !todayStartsEventsSet.has(event),\n        )\n        .sort((a, b) => (multipleDayEventsOrder.get(a) ?? 0) - (multipleDayEventsOrder.get(b) ?? 0))\n\n      // Inserts an existing multi-day event into today's schedule,\n      // preserving the order of the existing multi-day event.\n      for (const event of todayIncludedEvents) {\n        if (!multipleDayEventsOrder.has(event)) continue\n        const order = multipleDayEventsOrder.get(event)\n        if (order === undefined) continue\n        finalEvents.splice(order, 0, event)\n      }\n\n      eventDict[dateToCompare.format(SIMPLE_DATE_FORMAT)] = finalEvents\n\n      // Pre-indexes locations in a multi-date event starting with the current date\n      // for use in the next date index.\n      for (let i = 0; i < finalEvents.length; i++) {\n        const event = finalEvents[i]\n        // Check whether span on multiple calendar days\n        if (!dayjs(event.start).isSame(dayjs(event.end), 'day')) {\n          multipleDayEventsOrder.set(event, i)\n        }\n      }\n\n      dateToCompare = dateToCompare.add(1, 'day')\n    }\n    return eventDict\n  }, [events, sortedMonthView, targetDate])\n\n  const renderDateCell = (date: dayjs.Dayjs | null, index: number) => {\n    if (date && renderCustomDateForMonth) {\n      return renderCustomDateForMonth(date.toDate())\n    }\n\n    return (\n      <Text\n        style={[\n          { textAlign: 'center' },\n          theme.typography.sm,\n          {\n            color:\n              date?.format(SIMPLE_DATE_FORMAT) === now.format(SIMPLE_DATE_FORMAT)\n                ? theme.palette.primary.main\n                : date?.month() !== targetDate.month()\n                ? theme.palette.gray['500']\n                : theme.palette.gray['800'],\n          },\n          {\n            ...getCalendarCellTextStyle(date?.toDate(), index),\n          },\n        ]}\n      >\n        {date && date.format('D')}\n      </Text>\n    )\n  }\n\n  return (\n    <View\n      style={[\n        {\n          height: containerHeight,\n        },\n        u['flex-column'],\n        u['flex-1'],\n        u['border-b'],\n        u['border-l'],\n        u['border-r'],\n        u['rounded'],\n        { borderColor: theme.palette.gray['200'] },\n        style,\n      ]}\n      onLayout={({ nativeEvent: { layout } }) => {\n        setCalendarWidth(layout.width)\n      }}\n      {...panResponder.panHandlers}\n    >\n      {weeks.map((week, i) => (\n        <View\n          key={i}\n          style={[\n            u['flex-1'],\n            theme.isRTL ? u['flex-row-reverse'] : u['flex-row'],\n            Platform.OS === 'android' && style, // TODO: in Android, backgroundColor is not applied to child components\n            {\n              minHeight: minCellHeight,\n            },\n          ]}\n        >\n          {showWeekNumber ? (\n            <View\n              style={[\n                i > 0 && u['border-t'],\n                { borderColor: theme.palette.gray['200'] },\n                u['p-2'],\n                u['w-20'],\n                u['flex-column'],\n                {\n                  minHeight: minCellHeight,\n                },\n              ]}\n              key={'weekNumber'}\n              {...calendarCellAccessibilityProps}\n            >\n              <Text\n                style={[\n                  { textAlign: 'center' },\n                  theme.typography.sm,\n                  {\n                    color: theme.palette.gray['800'],\n                  },\n                ]}\n              >\n                {week.length > 0\n                  ? targetDate.date(week[0]).startOf('week').add(4, 'days').isoWeek()\n                  : ''}\n              </Text>\n            </View>\n          ) : null}\n          {week\n            .map((d) =>\n              showAdjacentMonths ? targetDate.date(d) : d > 0 ? targetDate.date(d) : null,\n            )\n            .map((date, ii) => (\n              <TouchableOpacity\n                onLongPress={() => date && onLongPressCell && onLongPressCell(date.toDate())}\n                onPress={() => date && onPressCell && onPressCell(date.toDate())}\n                style={[\n                  i > 0 && u['border-t'],\n                  theme.isRTL && (ii > 0 || showWeekNumber) && u['border-r'],\n                  !theme.isRTL && (ii > 0 || showWeekNumber) && u['border-l'],\n                  { borderColor: theme.palette.gray['200'] },\n                  u['p-2'],\n                  u['flex-1'],\n                  u['flex-column'],\n                  {\n                    minHeight: minCellHeight,\n                    zIndex: ii * -1,\n                  },\n                  {\n                    ...getCalendarCellStyle(date?.toDate(), i),\n                  },\n                ]}\n                key={ii}\n                onLayout={({ nativeEvent: { layout } }) =>\n                  // Only set calendarCellHeight once because they are all same\n                  // Only set calendarCellHeight if disableMonthEventCellPress is true, since calendarCellHeihgt is only used when disableMonthEventCellPress is true\n                  i === 0 &&\n                  ii === 0 &&\n                  disableMonthEventCellPress &&\n                  setCalendarCellHeight(layout.height)\n                }\n                {...calendarCellAccessibilityPropsForMonthView}\n              >\n                <TouchableOpacity\n                  onPress={() =>\n                    date &&\n                    (onPressDateHeader\n                      ? onPressDateHeader(date.toDate())\n                      : onPressCell && onPressCell(date.toDate()))\n                  }\n                  onLongPress={() =>\n                    date &&\n                    (onPressDateHeader\n                      ? onPressDateHeader(date.toDate())\n                      : onLongPressCell && onLongPressCell(date.toDate()))\n                  }\n                  {...calendarCellAccessibilityProps}\n                >\n                  {renderDateCell(date, i)}\n                </TouchableOpacity>\n                {\n                  //Calendar body will re-render after calendarWidth/calendarCellHeight is set from layout event, prevent expensive operation during first render\n                  calendarWidth > 0 &&\n                    (!disableMonthEventCellPress || calendarCellHeight > 0) &&\n                    date &&\n                    (eventsByDate[date.format('YYYY-MM-DD')] ?? []).reduce(\n                      (elements, event, index, events) => [\n                        ...elements,\n                        index > maxVisibleEventCount ? null : index === maxVisibleEventCount ? (\n                          <Text\n                            key={index}\n                            style={[\n                              theme.typography.moreLabel,\n                              { marginTop: 2, color: theme.palette.moreLabel },\n                            ]}\n                            onPress={() => onPressMoreLabel?.(events, date.toDate())}\n                          >\n                            {moreLabel.replace(\n                              '{moreCount}',\n                              `${events.length - maxVisibleEventCount}`,\n                            )}\n                          </Text>\n                        ) : (\n                          <CalendarEventForMonthView\n                            key={index}\n                            event={event}\n                            eventCellStyle={eventCellStyle}\n                            eventCellAccessibilityProps={eventCellAccessibilityProps}\n                            onPressEvent={onPressEvent}\n                            renderEvent={renderEvent}\n                            renderMultiDayEventPadding={renderMultiDayEventPadding}\n                            date={date}\n                            dayOfTheWeek={ii}\n                            calendarWidth={calendarWidth}\n                            isRTL={theme.isRTL}\n                            eventMinHeightForMonthView={eventMinHeightForMonthView}\n                            showAdjacentMonths={showAdjacentMonths}\n                          />\n                        ),\n                      ],\n                      [] as (null | JSX.Element)[],\n                    )\n                }\n                {disableMonthEventCellPress &&\n                  calendarCellHeight > 0 && ( //if calendarCellHeight has not been set from layout event, then don't render the element since it will be 0 height\n                    /* In this case, we render `TouchableGradually` on the date cell to prevent event cell's touch events from being called. */\n                    <TouchableGradually\n                      style={{\n                        height: calendarCellHeight,\n                        width: Math.floor(calendarWidth / 7),\n                        position: 'absolute',\n                        top: 0,\n                        left: 0,\n                      }}\n                      onLongPress={() => date && onLongPressCell && onLongPressCell(date.toDate())}\n                      onPress={() => date && onPressCell && onPressCell(date.toDate())}\n                      {...calendarCellAccessibilityProps}\n                    />\n                  )}\n              </TouchableOpacity>\n            ))}\n        </View>\n      ))}\n    </View>\n  )\n}\n\nexport const CalendarBodyForMonthView = typedMemo(_CalendarBodyForMonthView)\n\n/**\n * A utility component which prevents event cells from being pressed in Month View.\n */\nfunction TouchableGradually({\n  onLongPress,\n  onPress,\n  style,\n}: {\n  style?: ViewStyle\n  onLongPress: () => void\n  onPress: () => void\n}) {\n  const backgroundColor = React.useRef(new Animated.Value(0)).current\n\n  const handlePressIn = () => {\n    Animated.timing(backgroundColor, {\n      toValue: 1,\n      duration: 200,\n      useNativeDriver: false,\n    }).start()\n  }\n\n  const handlePressOut = () => {\n    Animated.timing(backgroundColor, {\n      toValue: 0,\n      duration: 200,\n      useNativeDriver: false,\n    }).start()\n  }\n\n  return (\n    <TouchableHighlight\n      onLongPress={onLongPress}\n      onPressIn={handlePressIn}\n      onPressOut={handlePressOut}\n      onPress={onPress}\n      underlayColor=\"transparent\"\n      style={style}\n    >\n      <Animated.View\n        style={[\n          {\n            backgroundColor: backgroundColor.interpolate({\n              inputRange: [0, 1],\n              outputRange: ['rgba(0, 0, 0, 0)', 'rgba(0, 0, 0, 0.2)'],\n            }),\n          },\n          style,\n        ]}\n      />\n    </TouchableHighlight>\n  )\n}\n","import dayjs from 'dayjs'\nimport * as React from 'react'\nimport { AccessibilityProps, Platform, Text, TouchableOpacity, View, ViewStyle } from 'react-native'\n\nimport { eventCellCss, u } from '../commonStyles'\nimport { ICalendarEventBase } from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport { isToday } from '../utils/datetime'\nimport { objHasContent, stringHasContent } from '../utils/object'\nimport { typedMemo } from '../utils/react'\n\nexport interface CalendarHeaderProps<T extends ICalendarEventBase> {\n  dateRange: dayjs.Dayjs[]\n  cellHeight: number\n  locale: string\n  style: ViewStyle\n  allDayEventCellStyle: ViewStyle | ((event: T) => ViewStyle)\n  allDayEventCellTextColor: string\n  allDayEvents: T[]\n  onPressDateHeader?: (date: Date) => void\n  onPressEvent?: (event: T) => void\n  activeDate?: Date\n  headerContentStyle?: ViewStyle\n  dayHeaderStyle?: ViewStyle\n  dayHeaderHighlightColor?: string\n  weekDayHeaderHighlightColor?: string\n  showAllDayEventCell?: boolean\n  hideHours?: Boolean\n  showWeekNumber?: boolean\n  weekNumberPrefix?: string\n  allDayEventCellAccessibilityProps?: AccessibilityProps\n  headerContainerAccessibilityProps?: AccessibilityProps\n  headerCellAccessibilityProps?: AccessibilityProps\n}\n\nfunction _CalendarHeader<T extends ICalendarEventBase>({\n  dateRange,\n  cellHeight,\n  style,\n  allDayEventCellStyle,\n  allDayEventCellTextColor,\n  allDayEvents,\n  onPressDateHeader,\n  onPressEvent,\n  activeDate,\n  headerContentStyle = {},\n  dayHeaderStyle = {},\n  dayHeaderHighlightColor = '',\n  weekDayHeaderHighlightColor = '',\n  showAllDayEventCell = true,\n  hideHours = false,\n  showWeekNumber = false,\n  weekNumberPrefix = '',\n  allDayEventCellAccessibilityProps = {},\n  headerContainerAccessibilityProps = {},\n  headerCellAccessibilityProps = {},\n}: CalendarHeaderProps<T>) {\n  const _onPressHeader = React.useCallback(\n    (date: Date) => {\n      onPressDateHeader && onPressDateHeader(date)\n    },\n    [onPressDateHeader],\n  )\n\n  const _onPressEvent = React.useCallback(\n    (event: T) => {\n      onPressEvent && onPressEvent(event)\n    },\n    [onPressEvent],\n  )\n\n  const theme = useTheme()\n\n  const borderColor = { borderColor: theme.palette.gray['200'] }\n  const primaryBg = { backgroundColor: theme.palette.primary.main }\n\n  return (\n    <View\n      style={[\n        showAllDayEventCell ? u['border-b-2'] : {},\n        showAllDayEventCell ? borderColor : {},\n        theme.isRTL ? u['flex-row-reverse'] : u['flex-row'],\n        style,\n      ]}\n      {...headerContainerAccessibilityProps}\n    >\n      {(!hideHours || showWeekNumber) && (\n        <View style={[u['z-10'], u['w-50'], u['pt-2'], borderColor]}>\n          {showWeekNumber ? (\n            <View\n              style={[\n                { height: cellHeight },\n                objHasContent(headerContentStyle) ? headerContentStyle : u['justify-between'],\n              ]}\n              {...headerCellAccessibilityProps}\n            >\n              <Text\n                style={[\n                  theme.typography.xs,\n                  u['text-center'],\n                  {\n                    color: theme.palette.gray['500'],\n                  },\n                ]}\n              >\n                {weekNumberPrefix}\n              </Text>\n              <View style={objHasContent(dayHeaderStyle) ? dayHeaderStyle : [u['mb-6']]}>\n                <Text\n                  style={[\n                    {\n                      color: theme.palette.gray['800'],\n                    },\n                    theme.typography.xl,\n                    u['text-center'],\n                  ]}\n                >\n                  {dateRange.length > 0\n                    ? dateRange[0].startOf('week').add(4, 'days').isoWeek()\n                    : ''}\n                </Text>\n              </View>\n            </View>\n          ) : null}\n        </View>\n      )}\n      {dateRange.map((date) => {\n        const shouldHighlight = activeDate ? date.isSame(activeDate, 'date') : isToday(date)\n\n        return (\n          <TouchableOpacity\n            style={[u['flex-1'], u['pt-2']]}\n            onPress={() => _onPressHeader(date.toDate())}\n            disabled={onPressDateHeader === undefined}\n            key={date.toString()}\n            {...headerCellAccessibilityProps}\n          >\n            <View\n              style={[\n                { height: cellHeight },\n                objHasContent(headerContentStyle) ? headerContentStyle : u['justify-between'],\n              ]}\n            >\n              <Text\n                style={[\n                  theme.typography.xs,\n                  u['text-center'],\n                  {\n                    color: shouldHighlight\n                      ? stringHasContent(weekDayHeaderHighlightColor)\n                        ? weekDayHeaderHighlightColor\n                        : theme.palette.primary.main\n                      : theme.palette.gray['500'],\n                  },\n                ]}\n              >\n                {date.format('ddd')}\n              </Text>\n              <View\n                style={\n                  objHasContent(dayHeaderStyle)\n                    ? dayHeaderStyle\n                    : shouldHighlight\n                    ? [\n                        primaryBg,\n                        u['h-36'],\n                        u['w-36'],\n                        u['pb-6'],\n                        u['rounded-full'],\n                        u['items-center'],\n                        u['justify-center'],\n                        u['self-center'],\n                        u['z-20'],\n                      ]\n                    : [u['mb-6']]\n                }\n              >\n                <Text\n                  style={[\n                    {\n                      color: shouldHighlight\n                        ? stringHasContent(dayHeaderHighlightColor)\n                          ? dayHeaderHighlightColor\n                          : theme.palette.primary.contrastText\n                        : theme.palette.gray['800'],\n                    },\n                    theme.typography.xl,\n                    u['text-center'],\n                    Platform.OS === 'web' &&\n                      shouldHighlight &&\n                      !stringHasContent(dayHeaderHighlightColor) &&\n                      u['mt-6'],\n                  ]}\n                >\n                  {date.format('D')}\n                </Text>\n              </View>\n            </View>\n            {showAllDayEventCell ? (\n              <View\n                style={[\n                  u['border-l'],\n                  { borderColor: theme.palette.gray['200'] },\n                  { height: cellHeight },\n                ]}\n              >\n                {allDayEvents.map((event, index) => {\n                  if (!dayjs(date).isBetween(event.start, event.end, 'day', '[]')) {\n                    return null\n                  }\n\n                  const getEventStyle =\n                    typeof allDayEventCellStyle === 'function'\n                      ? allDayEventCellStyle\n                      : () => allDayEventCellStyle\n\n                  return (\n                    <TouchableOpacity\n                      style={[eventCellCss.style, primaryBg, u['mt-2'], getEventStyle(event)]}\n                      key={index}\n                      onPress={() => _onPressEvent(event)}\n                      {...allDayEventCellAccessibilityProps}\n                    >\n                      <Text\n                        style={{\n                          fontSize: theme.typography.sm.fontSize,\n                          color: allDayEventCellTextColor || theme.palette.primary.contrastText,\n                        }}\n                      >\n                        {event.title}\n                      </Text>\n                    </TouchableOpacity>\n                  )\n                })}\n              </View>\n            ) : null}\n          </TouchableOpacity>\n        )\n      })}\n    </View>\n  )\n}\n\nexport const CalendarHeader = typedMemo(_CalendarHeader)\n","import dayjs from 'dayjs'\nimport * as React from 'react'\nimport { AccessibilityProps, Text, View, ViewStyle } from 'react-native'\n\nimport { u } from '../commonStyles'\nimport { WeekNum } from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport { getDatesInWeek } from '../utils/datetime'\nimport { typedMemo } from '../utils/react'\n\nexport interface CalendarHeaderForMonthViewProps {\n  weekStartsOn: WeekNum\n  locale: string\n  style: ViewStyle\n  showWeekNumber?: boolean\n  weekNumberPrefix?: string\n  headerContainerAccessibilityProps?: AccessibilityProps\n  headerCellAccessibilityProps?: AccessibilityProps\n}\n\nfunction _CalendarHeaderForMonthView({\n  locale,\n  weekStartsOn,\n  style,\n  showWeekNumber = false,\n  weekNumberPrefix = '',\n  headerContainerAccessibilityProps = {},\n  headerCellAccessibilityProps = {},\n}: CalendarHeaderForMonthViewProps) {\n  const dates = getDatesInWeek(new Date(), weekStartsOn, locale)\n  const todayWeekNum = dayjs().day()\n\n  const theme = useTheme()\n\n  return (\n    <View\n      style={[\n        u['border-b'],\n        { borderColor: theme.palette.gray['100'] },\n        theme.isRTL ? u['flex-row-reverse'] : u['flex-row'],\n        style,\n      ]}\n      {...headerContainerAccessibilityProps}\n    >\n      {showWeekNumber ? (\n        <View\n          style={[u['w-20'], { paddingTop: 2 }]}\n          key={'weekNumber'}\n          {...headerCellAccessibilityProps}\n        >\n          <View style={{ flex: 1, height: 30 }}>\n            <Text\n              style={[\n                u['text-center'],\n                {\n                  color: theme.palette.gray['800'],\n                },\n              ]}\n            >\n              {weekNumberPrefix != undefined ? weekNumberPrefix : ''}\n            </Text>\n          </View>\n        </View>\n      ) : null}\n      {dates.map((date) => (\n        <View\n          style={{ flex: 1, paddingTop: 2 }}\n          key={date.toISOString()}\n          {...headerCellAccessibilityProps}\n        >\n          <View style={{ height: 30 }}>\n            <Text\n              style={[\n                u['text-center'],\n                {\n                  color:\n                    todayWeekNum === date.day()\n                      ? theme.palette.primary.main\n                      : theme.palette.gray['800'],\n                },\n              ]}\n            >\n              {date.format('ddd')}\n            </Text>\n          </View>\n        </View>\n      ))}\n    </View>\n  )\n}\n\nexport const CalendarHeaderForMonthView = typedMemo(_CalendarHeaderForMonthView)\n","import dayjs from 'dayjs'\nimport React from 'react'\nimport {\n  AccessibilityProps,\n  FlatList,\n  Platform,\n  Text,\n  TextStyle,\n  View,\n  ViewStyle,\n} from 'react-native'\n\nimport { u } from '../commonStyles'\nimport {\n  CalendarCellStyle,\n  EventCellStyle,\n  EventRenderer,\n  HorizontalDirection,\n  ICalendarEventBase,\n} from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport {\n  SIMPLE_DATE_FORMAT,\n  getCountOfEventsAtEvent,\n  getOrderOfEvent,\n  isToday,\n} from '../utils/datetime'\nimport { stringHasContent } from '../utils/object'\nimport { typedMemo } from '../utils/react'\nimport { CalendarEvent } from './CalendarEvent'\n\ninterface ScheduleProps<T extends ICalendarEventBase> {\n  events: T[]\n  cellHeight: number\n  containerHeight: number\n  dateRange: dayjs.Dayjs[]\n  scrollOffsetMinutes: number\n  ampm: boolean\n  showTime: boolean\n  style: ViewStyle\n  eventCellStyle?: EventCellStyle<T>\n  eventCellAccessibilityProps?: AccessibilityProps\n  calendarCellStyle?: CalendarCellStyle\n  calendarCellAccessibilityProps?: AccessibilityProps\n  hideNowIndicator?: boolean\n  overlapOffset?: number\n  onLongPressCell?: (date: Date) => void\n  onPressCell?: (date: Date) => void\n  onPressEvent?: (event: T) => void\n  onSwipeHorizontal?: (d: HorizontalDirection) => void\n  renderEvent?: EventRenderer<T>\n  headerComponent?: React.ReactElement | null\n  headerComponentStyle?: ViewStyle\n  hourStyle?: TextStyle\n  hideHours?: Boolean\n  isEventOrderingEnabled?: boolean\n  showVerticalScrollIndicator?: boolean\n  activeDate?: Date\n  weekDayHeaderHighlightColor?: string\n  dayHeaderHighlightColor?: string\n  itemSeparatorComponent?: React.ComponentType<any> | null | undefined\n  locale: string\n  scheduleMonthSeparatorStyle?: TextStyle\n}\n\nfunction _Schedule<T extends ICalendarEventBase>({\n  events,\n  ampm,\n  onPressEvent,\n  eventCellStyle,\n  eventCellAccessibilityProps = {},\n  showTime,\n  isEventOrderingEnabled,\n  overlapOffset,\n  renderEvent,\n  containerHeight,\n  style,\n  activeDate,\n  weekDayHeaderHighlightColor = '',\n  dayHeaderHighlightColor = '',\n  itemSeparatorComponent,\n  locale,\n  calendarCellAccessibilityProps = {},\n  scheduleMonthSeparatorStyle,\n}: ScheduleProps<T>) {\n  const theme = useTheme()\n\n  /**\n   * Bind default style for eventCellStyle.\n   */\n  const eventStyles = React.useCallback(\n    (event: T) => {\n      // This default style  need for Schedule view\n      const defaultEventStyle = {\n        ...u['flex-column'],\n        ...u['h-50'],\n      }\n\n      if (Array.isArray(eventCellStyle)) {\n        return [...[defaultEventStyle], ...eventCellStyle]\n      }\n      if (typeof eventCellStyle === 'object') {\n        return { ...defaultEventStyle, ...eventCellStyle }\n      }\n      if (typeof eventCellStyle === 'function') {\n        const output = eventCellStyle(event)\n        if (Array.isArray(output)) {\n          return [...[defaultEventStyle], ...output]\n        }\n        if (typeof output === 'object') {\n          return { ...defaultEventStyle, ...output }\n        }\n      }\n      return defaultEventStyle\n    },\n    [eventCellStyle],\n  )\n\n  /**\n   * Group by events by start date.\n   */\n  const getItem = React.useMemo((): T[][] => {\n    const groupedData = events\n      .sort((a, b) => dayjs(a.start).diff(b.start))\n      .reduce((result: any, item: T): any => {\n        const startDate = dayjs(item.start).format(SIMPLE_DATE_FORMAT)\n        if (!result[startDate]) {\n          result[startDate] = []\n        }\n        result[startDate].push(item)\n        return result\n      }, {})\n\n    return Object.values(groupedData)\n  }, [events])\n\n  const renderMonthSeparator = (date: dayjs.Dayjs): JSX.Element => (\n    <View style={{ width: '100%' }}>\n      <Text\n        style={[\n          { color: theme.palette.primary.main, textAlign: 'center', paddingVertical: 6 },\n          scheduleMonthSeparatorStyle,\n        ]}\n      >\n        {date.format('MMMM YYYY')}\n      </Text>\n    </View>\n  )\n\n  const renderFlatListItem = (eventGroup: T[], index: number): JSX.Element => {\n    const date = dayjs(eventGroup[0].start).locale(locale)\n    const shouldHighlight = activeDate ? date.isSame(activeDate, 'date') : isToday(date)\n    const isNewMonth =\n      index === 0 || !dayjs(eventGroup[0].start).isSame(getItem[index - 1][0].start, 'month')\n\n    return (\n      <View style={[u['flex'], { padding: 2, flexWrap: 'wrap' }]}>\n        {isNewMonth && renderMonthSeparator(date)}\n        <View style={[u['flex'], u['justify-center'], { width: '20%' }]}>\n          <View\n            style={[\n              { width: 60, height: 60, borderRadius: 30 },\n              u['flex'],\n              u['justify-center'],\n              u['items-center'],\n              u['flex-column-reverse'],\n            ]}\n            {...calendarCellAccessibilityProps}\n          >\n            <Text\n              style={[\n                {\n                  color: shouldHighlight\n                    ? stringHasContent(dayHeaderHighlightColor)\n                      ? dayHeaderHighlightColor\n                      : theme.palette.primary.main\n                    : theme.palette.gray['800'],\n                },\n\n                theme.typography.xl,\n                u['text-center'],\n                Platform.OS === 'web' &&\n                  shouldHighlight &&\n                  !stringHasContent(dayHeaderHighlightColor) &&\n                  u['mt-6'],\n              ]}\n            >\n              {date.format('D')}\n            </Text>\n            <Text\n              style={[\n                theme.typography.xs,\n                {\n                  color: shouldHighlight\n                    ? stringHasContent(weekDayHeaderHighlightColor)\n                      ? weekDayHeaderHighlightColor\n                      : theme.palette.primary.main\n                    : theme.palette.gray['500'],\n                },\n              ]}\n            >\n              {date.format('ddd')}\n            </Text>\n          </View>\n        </View>\n        <View style={[u['flex'], u['flex-column'], { width: '75%' }]}>\n          {eventGroup.map((event: T, index) => {\n            return (\n              <View\n                style={[u['flex-1'], u['overflow-hidden'], { marginTop: 2, marginBottom: 2 }]}\n                key={index}\n              >\n                <CalendarEvent\n                  key={`${index}${event.start}${event.title}${event.end}`}\n                  event={event}\n                  onPressEvent={onPressEvent}\n                  eventCellStyle={eventStyles}\n                  eventCellAccessibilityProps={eventCellAccessibilityProps}\n                  showTime={showTime}\n                  eventCount={\n                    isEventOrderingEnabled ? getCountOfEventsAtEvent(event, events) : undefined\n                  }\n                  eventOrder={isEventOrderingEnabled ? getOrderOfEvent(event, events) : undefined}\n                  overlapOffset={overlapOffset}\n                  renderEvent={renderEvent}\n                  ampm={ampm}\n                  mode=\"schedule\"\n                />\n              </View>\n            )\n          })}\n        </View>\n      </View>\n    )\n  }\n\n  return (\n    <View style={{ ...style, height: containerHeight }}>\n      <FlatList\n        data={getItem}\n        renderItem={({ item }: { item: any }) => renderFlatListItem(item, getItem.indexOf(item))}\n        ItemSeparatorComponent={itemSeparatorComponent}\n        keyExtractor={(_, index) => index.toString()}\n      />\n    </View>\n  )\n}\n\nexport const Schedule = typedMemo(_Schedule)\n","import dayjs from 'dayjs'\nimport React from 'react'\nimport { AccessibilityProps, TextStyle, ViewStyle } from 'react-native'\n\nimport { MIN_HEIGHT } from '../commonStyles'\nimport {\n  AllDayEventCellStyle,\n  CalendarCellStyle,\n  CalendarCellTextStyle,\n  DateRangeHandler,\n  EventCellStyle,\n  EventRenderer,\n  HeaderRenderer,\n  HorizontalDirection,\n  HourRenderer,\n  ICalendarEventBase,\n  Mode,\n  MonthHeaderRenderer,\n  WeekNum,\n} from '../interfaces'\nimport { useTheme } from '../theme/ThemeContext'\nimport {\n  getDatesInMonth,\n  getDatesInNextCustomDays,\n  getDatesInNextOneDay,\n  getDatesInNextThreeDays,\n  getDatesInWeek,\n  isAllDayEvent,\n  modeToNum,\n} from '../utils/datetime'\nimport { typedMemo } from '../utils/react'\nimport { CalendarBody } from './CalendarBody'\nimport { CalendarBodyForMonthView } from './CalendarBodyForMonthView'\nimport { CalendarHeader } from './CalendarHeader'\nimport { CalendarHeaderForMonthView } from './CalendarHeaderForMonthView'\nimport { Schedule } from './Schedule'\n\nexport interface CalendarContainerProps<T extends ICalendarEventBase> {\n  /**\n   * To remove Hours Column from week View.\n   */\n  hideHours?: Boolean\n  /**\n   * Events to be rendered. This is a required prop.\n   */\n  events: T[]\n\n  /**\n   * The height of calendar component. This is a required prop.\n   */\n  height: number\n\n  /**\n   * The height of each hour row.\n   */\n  hourRowHeight?: number\n\n  /**\n   * Adjusts the indentation of events that occur during the same time period. Defaults to 20 on web and 8 on mobile.\n   */\n  overlapOffset?: number\n\n  /**\n   * Custom style. It accepts styles or an array of styles, or a function that returns styles or an array of styles.\n   */\n  eventCellStyle?: EventCellStyle<T>\n  eventCellTextColor?: string\n  eventCellAccessibilityProps?: AccessibilityProps\n  allDayEventCellStyle?: AllDayEventCellStyle<T>\n  allDayEventCellTextColor?: string\n  allDayEventCellAccessibilityProps?: AccessibilityProps\n  calendarCellStyle?: CalendarCellStyle\n  calendarCellTextStyle?: CalendarCellTextStyle\n  calendarCellAccessibilityProps?: AccessibilityProps\n  calendarCellAccessibilityPropsForMonthView?: AccessibilityProps\n  calendarContainerStyle?: ViewStyle\n  headerContainerStyle?: ViewStyle\n  headerContainerAccessibilityProps?: AccessibilityProps\n  headerContentStyle?: ViewStyle\n  headerCellAccessibilityProps?: AccessibilityProps\n  dayHeaderStyle?: ViewStyle\n  dayHeaderHighlightColor?: string\n  weekDayHeaderHighlightColor?: string\n  bodyContainerStyle?: ViewStyle\n\n  // Custom renderer\n  renderEvent?: EventRenderer<T>\n  renderHeader?: HeaderRenderer<T>\n  renderHeaderForMonthView?: MonthHeaderRenderer\n  renderCustomDateForMonth?: (date: Date) => React.ReactElement | null\n  renderMultiDayEventPadding?: EventRenderer<T>\n\n  ampm?: boolean\n  date?: Date\n  locale?: string\n  hideNowIndicator?: boolean\n  showAdjacentMonths?: boolean\n  mode?: Mode\n  scrollOffsetMinutes?: number\n  showTime?: boolean\n  minHour?: number\n  maxHour?: number\n  swipeEnabled?: boolean\n  weekStartsOn?: WeekNum\n  onChangeDate?: DateRangeHandler\n  onLongPressCell?: (date: Date) => void\n  onPressCell?: (date: Date) => void\n  onPressDateHeader?: (date: Date) => void\n  onPressEvent?: (event: T) => void\n  weekEndsOn?: WeekNum\n  maxVisibleEventCount?: number\n  eventMinHeightForMonthView?: number\n  activeDate?: Date\n  headerComponent?: React.ReactElement | null\n  headerComponentStyle?: ViewStyle\n  hourStyle?: TextStyle\n  showAllDayEventCell?: boolean\n  sortedMonthView?: boolean\n  moreLabel?: string\n  isEventOrderingEnabled?: boolean\n\n  //Week Number\n  showWeekNumber?: boolean\n  weekNumberPrefix?: string\n  onPressMoreLabel?: (event: T[]) => void\n  disableMonthEventCellPress?: boolean\n  showVerticalScrollIndicator?: boolean\n  /**\n   * Indicates if the calendar body should be scrollable\n   */\n  verticalScrollEnabled?: boolean\n  itemSeparatorComponent?: React.ComponentType<any> | null | undefined\n  /**\n   * Callback when the user swipes horizontally.\n   * Note: Memoize this callback to avoid un-necessary re-renders.\n   * @param date The date where the user swiped to.\n   */\n  onSwipeEnd?: (date: Date) => void\n  /**\n   * If provided, we will skip the internal process of building the enriched events by date dictionary.\n   */\n  enrichedEventsByDate?: Record<string, T[]>\n  /**\n   * If true, the events will be enriched with the following properties:\n   * - `overlapPosition`: position of the event in the stack of overlapping events\n   * Default value is `false`.\n   */\n  enableEnrichedEvents?: boolean\n  /**\n   * If true, skip the sorting of events improving the performance.\n   * This parameter is ignored if `enableEnrichedEvents` is `false`.\n   * Default value is `false`.\n   */\n  eventsAreSorted?: boolean\n  timeslots?: number\n  hourComponent?: HourRenderer\n  scheduleMonthSeparatorStyle?: TextStyle\n}\n\nfunction _CalendarContainer<T extends ICalendarEventBase>({\n  events,\n  height,\n  hourRowHeight,\n  ampm = false,\n  date,\n  allDayEventCellStyle = {},\n  allDayEventCellTextColor = '',\n  allDayEventCellAccessibilityProps = {},\n  eventCellStyle,\n  eventCellTextColor = '',\n  eventCellAccessibilityProps = {},\n  calendarCellAccessibilityPropsForMonthView = {},\n  calendarCellStyle,\n  calendarCellTextStyle,\n  calendarCellAccessibilityProps = {},\n  locale = 'en',\n  hideNowIndicator = false,\n  mode = 'week',\n  overlapOffset,\n  scrollOffsetMinutes = 0,\n  showTime = true,\n  headerContainerStyle = {},\n  headerContainerAccessibilityProps = {},\n  headerContentStyle = {},\n  headerCellAccessibilityProps = {},\n  dayHeaderStyle = {},\n  dayHeaderHighlightColor = '',\n  weekDayHeaderHighlightColor = '',\n  bodyContainerStyle = {},\n  swipeEnabled = true,\n  weekStartsOn = 0,\n  onChangeDate,\n  onLongPressCell,\n  onPressCell,\n  onPressDateHeader,\n  onPressEvent,\n  renderEvent,\n  renderHeader: HeaderComponent = CalendarHeader,\n  renderHeaderForMonthView: HeaderComponentForMonthView = CalendarHeaderForMonthView,\n  renderMultiDayEventPadding,\n  weekEndsOn = 6,\n  maxVisibleEventCount = 3,\n  eventMinHeightForMonthView = 22,\n  activeDate,\n  headerComponent = null,\n  headerComponentStyle = {},\n  hourStyle = {},\n  showAllDayEventCell = true,\n  moreLabel = '{moreCount} More',\n  showAdjacentMonths = true,\n  sortedMonthView = true,\n  hideHours = false,\n  minHour = 0,\n  maxHour = 23,\n  isEventOrderingEnabled,\n  showWeekNumber = false,\n  weekNumberPrefix = '',\n  onPressMoreLabel,\n  renderCustomDateForMonth,\n  disableMonthEventCellPress = false,\n  showVerticalScrollIndicator = false,\n  verticalScrollEnabled = true,\n  itemSeparatorComponent = null,\n  enrichedEventsByDate,\n  enableEnrichedEvents = false,\n  eventsAreSorted = false,\n  onSwipeEnd,\n  timeslots = 0,\n  hourComponent,\n  scheduleMonthSeparatorStyle = {},\n}: CalendarContainerProps<T>) {\n  // To ensure we have proper effect callback, use string to date comparision.\n  const dateString = date?.toString()\n\n  const [targetDate, setTargetDate] = React.useState(() => dayjs(date))\n\n  React.useEffect(() => {\n    if (dateString) {\n      setTargetDate(dayjs(dateString))\n    }\n  }, [dateString]) // if setting `[date]`, it will triggered twice\n\n  const allDayEvents = React.useMemo(\n    () => events.filter((event) => isAllDayEvent(event.start, event.end)),\n    [events],\n  )\n\n  const daytimeEvents = React.useMemo(\n    () => events.filter((event) => !isAllDayEvent(event.start, event.end)),\n    [events],\n  )\n\n  const getDateRange = React.useCallback(\n    (date: string | dayjs.Dayjs) => {\n      switch (mode) {\n        case 'month':\n          return getDatesInMonth(date, locale)\n        case 'week':\n          return getDatesInWeek(date, weekStartsOn, locale)\n        case '3days':\n          return getDatesInNextThreeDays(date, locale)\n        case 'day':\n          return getDatesInNextOneDay(date, locale)\n        case 'custom':\n          return getDatesInNextCustomDays(date, weekStartsOn, weekEndsOn, locale)\n        case 'schedule': // TODO: this will update\n          return getDatesInMonth(date, locale)\n        default:\n          throw new Error(\n            `[react-native-big-calendar] The mode which you specified \"${mode}\" is not supported.`,\n          )\n      }\n    },\n    [mode, locale, weekEndsOn, weekStartsOn],\n  )\n\n  if (minHour < 0) {\n    throw new Error('minHour should be 0 or greater')\n  }\n  if (maxHour > 23) {\n    throw new Error('maxHour should be less that 24')\n  }\n  if (minHour >= maxHour) {\n    throw new Error('minHour should be less than maxHour')\n  }\n\n  const cellHeight = React.useMemo(\n    () => hourRowHeight || Math.max(height - 30, MIN_HEIGHT) / 24,\n    [height, hourRowHeight],\n  )\n\n  const theme = useTheme()\n\n  const onSwipeHorizontal = React.useCallback(\n    (direction: HorizontalDirection) => {\n      if (!swipeEnabled) {\n        return\n      }\n      let nextTargetDate: dayjs.Dayjs\n      if ((direction === 'LEFT' && !theme.isRTL) || (direction === 'RIGHT' && theme.isRTL)) {\n        nextTargetDate = targetDate.add(modeToNum(mode, targetDate), 'day')\n      } else {\n        if (mode === 'month') {\n          nextTargetDate = targetDate.add(targetDate.date() * -1, 'day')\n        } else {\n          nextTargetDate = targetDate.add(modeToNum(mode, targetDate) * -1, 'day')\n        }\n      }\n      setTargetDate(nextTargetDate)\n      onSwipeEnd?.(nextTargetDate.toDate())\n    },\n    [swipeEnabled, theme.isRTL, onSwipeEnd, targetDate, mode],\n  )\n\n  React.useEffect(() => {\n    if (dateString && onChangeDate) {\n      const dateRange = getDateRange(dateString)\n      onChangeDate([dateRange[0].toDate(), dateRange[dateRange.length - 1].toDate()])\n    }\n  }, [dateString, onChangeDate, getDateRange])\n\n  const commonProps = {\n    cellHeight,\n    dateRange: getDateRange(targetDate),\n    mode,\n    onPressEvent,\n    hideHours,\n    showWeekNumber,\n  }\n\n  if (mode === 'month') {\n    const headerProps = {\n      style: headerContainerStyle,\n      headerContainerAccessibilityProps: headerContainerAccessibilityProps,\n      locale: locale,\n      weekStartsOn: weekStartsOn,\n      headerContentStyle: headerContentStyle,\n      headerCellAccessibilityProps: headerCellAccessibilityProps,\n      dayHeaderStyle: dayHeaderStyle,\n      dayHeaderHighlightColor: dayHeaderHighlightColor,\n      weekDayHeaderHighlightColor: weekDayHeaderHighlightColor,\n      showAllDayEventCell: showAllDayEventCell,\n      showWeekNumber: showWeekNumber,\n      weekNumberPrefix: weekNumberPrefix,\n    }\n    const HeaderComp = HeaderComponentForMonthView as any\n    return (\n      <React.Fragment>\n        <HeaderComp {...headerProps} />\n        <CalendarBodyForMonthView<T>\n          {...commonProps}\n          style={bodyContainerStyle}\n          containerHeight={height}\n          events={[...daytimeEvents, ...allDayEvents]}\n          eventCellStyle={eventCellStyle}\n          eventCellAccessibilityProps={eventCellAccessibilityProps}\n          calendarCellStyle={calendarCellStyle}\n          calendarCellAccessibilityProps={calendarCellAccessibilityProps}\n          calendarCellAccessibilityPropsForMonthView={calendarCellAccessibilityPropsForMonthView}\n          calendarCellTextStyle={calendarCellTextStyle}\n          weekStartsOn={weekStartsOn}\n          hideNowIndicator={hideNowIndicator}\n          showAdjacentMonths={showAdjacentMonths}\n          onLongPressCell={onLongPressCell}\n          onPressCell={onPressCell}\n          onPressDateHeader={onPressDateHeader}\n          onPressEvent={onPressEvent}\n          onSwipeHorizontal={onSwipeHorizontal}\n          renderEvent={renderEvent}\n          renderMultiDayEventPadding={renderMultiDayEventPadding}\n          targetDate={targetDate}\n          maxVisibleEventCount={maxVisibleEventCount}\n          eventMinHeightForMonthView={eventMinHeightForMonthView}\n          sortedMonthView={sortedMonthView}\n          moreLabel={moreLabel}\n          onPressMoreLabel={onPressMoreLabel}\n          renderCustomDateForMonth={renderCustomDateForMonth}\n          disableMonthEventCellPress={disableMonthEventCellPress}\n        />\n      </React.Fragment>\n    )\n  }\n\n  const headerProps = {\n    ...commonProps,\n    style: headerContainerStyle,\n    headerContainerAccessibilityProps: headerContainerAccessibilityProps,\n    locale,\n    allDayEventCellStyle,\n    allDayEventCellTextColor,\n    allDayEvents: allDayEvents,\n    allDayEventCellAccessibilityProps: allDayEventCellAccessibilityProps,\n    onPressDateHeader: onPressDateHeader,\n    activeDate,\n    headerContentStyle: headerContentStyle,\n    headerCellAccessibilityProps: headerCellAccessibilityProps,\n    dayHeaderStyle: dayHeaderStyle,\n    dayHeaderHighlightColor: dayHeaderHighlightColor,\n    weekDayHeaderHighlightColor: weekDayHeaderHighlightColor,\n    showAllDayEventCell: showAllDayEventCell,\n    weekNumberPrefix: weekNumberPrefix,\n  }\n\n  if (mode === 'schedule') {\n    return (\n      <Schedule\n        events={[...daytimeEvents, ...allDayEvents]}\n        {...headerProps}\n        style={bodyContainerStyle}\n        containerHeight={height}\n        eventCellStyle={eventCellStyle}\n        calendarCellStyle={calendarCellStyle}\n        calendarCellAccessibilityProps={calendarCellAccessibilityProps}\n        hideNowIndicator={hideNowIndicator}\n        overlapOffset={overlapOffset}\n        scrollOffsetMinutes={scrollOffsetMinutes}\n        ampm={ampm}\n        showTime={showTime}\n        onLongPressCell={onLongPressCell}\n        onPressCell={onPressCell}\n        onPressEvent={onPressEvent}\n        onSwipeHorizontal={onSwipeHorizontal}\n        renderEvent={renderEvent}\n        headerComponent={headerComponent}\n        headerComponentStyle={headerComponentStyle}\n        hourStyle={hourStyle}\n        isEventOrderingEnabled={isEventOrderingEnabled}\n        showVerticalScrollIndicator={showVerticalScrollIndicator}\n        itemSeparatorComponent={itemSeparatorComponent}\n        scheduleMonthSeparatorStyle={scheduleMonthSeparatorStyle}\n      />\n    )\n  }\n\n  const HeaderComp = HeaderComponent as any\n  return (\n    <React.Fragment>\n      <HeaderComp {...headerProps} />\n      <CalendarBody\n        {...commonProps}\n        style={bodyContainerStyle}\n        containerHeight={height}\n        events={daytimeEvents}\n        eventCellStyle={eventCellStyle}\n        eventCellAccessibilityProps={eventCellAccessibilityProps}\n        eventCellTextColor={eventCellTextColor}\n        calendarCellStyle={calendarCellStyle}\n        calendarCellAccessibilityProps={calendarCellAccessibilityProps}\n        hideNowIndicator={hideNowIndicator}\n        overlapOffset={overlapOffset}\n        scrollOffsetMinutes={scrollOffsetMinutes}\n        ampm={ampm}\n        minHour={minHour}\n        maxHour={maxHour}\n        showTime={showTime}\n        onLongPressCell={onLongPressCell}\n        onPressCell={onPressCell}\n        onPressEvent={onPressEvent}\n        onSwipeHorizontal={onSwipeHorizontal}\n        renderEvent={renderEvent}\n        headerComponent={headerComponent}\n        headerComponentStyle={headerComponentStyle}\n        hourStyle={hourStyle}\n        isEventOrderingEnabled={isEventOrderingEnabled}\n        showVerticalScrollIndicator={showVerticalScrollIndicator}\n        scrollEnabled={verticalScrollEnabled}\n        enrichedEventsByDate={enrichedEventsByDate}\n        enableEnrichedEvents={enableEnrichedEvents}\n        eventsAreSorted={eventsAreSorted}\n        timeslots={timeslots}\n        hourComponent={hourComponent}\n      />\n    </React.Fragment>\n  )\n}\n\nexport const CalendarContainer = typedMemo(_CalendarContainer)\n","import dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport React from 'react'\n\nimport { ICalendarEventBase } from '../interfaces'\nimport { defaultTheme } from '../theme/defaultTheme'\nimport { ThemeContext } from '../theme/ThemeContext'\nimport { ThemeInterface } from '../theme/ThemeInterface'\nimport { deepMerge } from '../utils/object'\nimport { typedMemo } from '../utils/react'\nimport { DeepPartial } from '../utils/utility-types'\nimport { CalendarContainer, CalendarContainerProps } from './CalendarContainer'\n\nexport interface CalendarProps<T extends ICalendarEventBase> extends CalendarContainerProps<T> {\n  theme?: DeepPartial<ThemeInterface>\n  isRTL?: boolean\n}\n\ndayjs.extend(isBetween)\n\nfunction _Calendar<T extends ICalendarEventBase>({\n  theme = defaultTheme,\n  isRTL,\n  ...props\n}: CalendarProps<T>) {\n  const _theme = deepMerge(defaultTheme, theme) as ThemeInterface\n  // TODO: Old prop support. This should be included in custom theme itself.\n  if (isRTL !== undefined) {\n    _theme.isRTL = isRTL\n  }\n  return (\n    <ThemeContext.Provider value={_theme}>\n      <CalendarContainer {...props} />\n    </ThemeContext.Provider>\n  )\n}\n\nexport const Calendar = typedMemo(_Calendar)\n","import dayjs from 'dayjs'\nimport duration from 'dayjs/plugin/duration'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport isoWeek from 'dayjs/plugin/isoWeek'\n\ndayjs.extend(duration)\ndayjs.extend(isBetween)\ndayjs.extend(isoWeek)\n\nexport * from './components/Calendar'\nexport * from './components/CalendarBody'\nexport * from './components/CalendarBodyForMonthView'\nexport * from './components/CalendarEvent'\nexport * from './components/CalendarEventForMonthView'\nexport * from './components/CalendarHeader'\nexport * from './components/CalendarHeaderForMonthView'\nexport * from './components/DefaultCalendarEventRenderer'\n\nexport * from './commonStyles'\nexport * from './interfaces'\nexport * from './theme/ThemeContext'\nexport * from './theme/ThemeInterface'\nexport * from './theme/defaultTheme'\nexport * from './utils/datetime'\nexport * from './utils/object'\nexport * from './utils/react'\n\nexport * from './interfaces'\n"]}