{"version":3,"file":"index.mjs","sources":["src/components/DefaultEventRootComponent.tsx","src/context.ts","src/utils/createPageMapCoordsToContainer.ts","src/hooks/useClickAndDrag.ts","src/hooks/useMousetrap.ts","src/utils/getSpan.ts","src/utils/createGrid.ts","src/utils/cellToDate.ts","src/utils/createMapCellInfoToRecurringTimeRange.ts","src/utils/createMapDateRangeToCells.ts","src/utils/getEarliestTimeRange.ts","src/utils/mergeEvents.ts","src/components/Cell.tsx","src/utils/getTextForDateRange.ts","src/components/EventContent.tsx","src/components/RangeBox.tsx","src/components/Schedule.tsx","src/components/TimeGridScheduler.tsx"],"sourcesContent":["import React from 'react';\nimport { EventRootProps } from '../types';\n\nexport const DefaultEventRootComponent = React.memo(\n  React.forwardRef<any, EventRootProps>(function DefaultEventRootComponent(\n    {\n      isActive,\n      handleDelete,\n      cellIndex,\n      rangeIndex,\n      classes,\n      disabled,\n      ...props\n    },\n    ref,\n  ) {\n    return <div ref={ref} aria-disabled={disabled} {...props} />;\n  }),\n);\n","import en from 'date-fns/locale/en';\nimport { createContext } from 'react';\n\nexport const SchedulerContext = createContext({ locale: en });\n","export const createPageMapCoordsToContainer = (container: HTMLElement) => {\n  return (event: React.MouseEvent | MouseEvent | TouchEvent) => {\n    let clientX: number;\n    let clientY: number;\n    let pageX: number;\n    let pageY: number;\n\n    if ('changedTouches' in event) {\n      ({ clientX, clientY, pageX, pageY } = event.changedTouches[0]);\n    } else {\n      ({ clientX, clientY, pageX, pageY } = event);\n    }\n    const { top, left } = container.getBoundingClientRect();\n\n    return {\n      clientX,\n      clientY,\n      pageX,\n      pageY,\n      top,\n      left,\n      x: clientX - left,\n      y: clientY - top,\n    };\n  };\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { fromEvent, merge, Observable, of } from 'rxjs';\nimport {\n  delay,\n  filter,\n  map,\n  mergeMap,\n  startWith,\n  takeUntil,\n  tap,\n} from 'rxjs/operators';\nimport { Rect } from '../types';\nimport { createPageMapCoordsToContainer } from '../utils/createPageMapCoordsToContainer';\n\nconst prevent = tap((e: TouchEvent) => {\n  e.preventDefault();\n  e.stopPropagation();\n});\n\nexport function useClickAndDrag(\n  ref: React.RefObject<HTMLElement>,\n  isDisabled?: boolean,\n) {\n  const [style, setStyle] = useState<React.CSSProperties>({\n    transform: 'translate(0, 0)',\n    width: 0,\n    height: 0,\n  });\n  const [box, setBox] = useState<Rect | null>(null);\n  const [isDragging, setIsDragging] = useState(false);\n  const [hasFinishedDragging, setHasFinishedDragging] = useState(false);\n  const container = ref.current;\n\n  useEffect(() => {\n    if (!container || isDisabled) {\n      return;\n    }\n\n    const mapCoordsToContainer = createPageMapCoordsToContainer(container);\n\n    const touchMove$ = fromEvent<TouchEvent>(window, 'touchmove', {\n      passive: false,\n    }).pipe(prevent);\n\n    const touchEnd$ = fromEvent<TouchEvent>(window, 'touchend', {\n      passive: true,\n    });\n\n    const touchStart$ = fromEvent<TouchEvent>(container, 'touchstart', {\n      passive: false,\n    });\n\n    const touchStartWithDelay$ = touchStart$.pipe(\n      mergeMap(start =>\n        of(start).pipe(\n          delay(300),\n          takeUntil(touchMove$),\n          prevent,\n        ),\n      ),\n    );\n\n    const mouseDown$ = fromEvent<MouseEvent>(container, 'mousedown', {\n      passive: true,\n    }).pipe(filter(event => event.which === 1));\n\n    const mouseMove$ = fromEvent<MouseEvent>(window, 'mousemove', {\n      passive: true,\n    });\n\n    const mouseUp$ = fromEvent<MouseEvent>(window, 'mouseup', {\n      passive: true,\n    });\n\n    const dragStart$ = merge(mouseDown$, touchStartWithDelay$).pipe(\n      map(mapCoordsToContainer),\n    );\n\n    const dragEnd$ = merge(mouseUp$, touchEnd$).pipe(\n      map(mapCoordsToContainer),\n      tap(() => {\n        setIsDragging(false);\n        setHasFinishedDragging(true);\n      }),\n    );\n\n    const move$ = merge(mouseMove$, touchMove$).pipe(map(mapCoordsToContainer));\n\n    const box$: Observable<Rect | null> = dragStart$.pipe(\n      tap(() => {\n        setIsDragging(true);\n        setHasFinishedDragging(false);\n      }),\n      mergeMap(down => {\n        return move$.pipe(\n          startWith(down),\n          map(\n            (move): Rect => {\n              const startX = Math.max(down.x, 0);\n              const startY = Math.max(down.y, 0);\n              const endX = Math.min(move.x, container.scrollWidth);\n              const endY = Math.min(move.y, container.scrollHeight);\n              const top = Math.min(startY, endY);\n              const bottom = Math.max(startY, endY);\n              const left = Math.min(startX, endX);\n              const right = Math.max(startX, endX);\n\n              return {\n                startX,\n                startY,\n                endX,\n                endY,\n                top,\n                bottom,\n                left,\n                right,\n                width: right - left,\n                height: bottom - top,\n              };\n            },\n          ),\n          takeUntil(dragEnd$),\n        );\n      }),\n      map(rect => {\n        return rect.width === 0 && rect.height === 0 ? null : rect;\n      }),\n    );\n\n    const style$ = box$.pipe(\n      map(rect => {\n        if (rect !== null) {\n          const { width, height, left, top } = rect;\n          return {\n            transform: `translate(${left}px, ${top}px)`,\n            width,\n            height,\n          };\n        }\n\n        return { display: 'none' };\n      }),\n    );\n\n    const boxSubscriber = box$.subscribe(setBox);\n    const styleSubscriber = style$.subscribe(setStyle);\n\n    return () => {\n      boxSubscriber.unsubscribe();\n      styleSubscriber.unsubscribe();\n    };\n  }, [container, isDisabled]);\n\n  const cancel = useCallback(() => {\n    setIsDragging(false);\n    setHasFinishedDragging(false);\n    setBox(null);\n  }, []);\n\n  return { style, box, isDragging, cancel, hasFinishedDragging };\n}\n","import Mousetrap from 'mousetrap';\nimport { useEffect, useRef } from 'react';\n\n/**\n * Use mousetrap hook\n *\n * @param handlerKey - A key, key combo or array of combos according to Mousetrap documentation.\n * @param  handlerCallback - A function that is triggered on key combo catch.\n */\nexport function useMousetrap(\n  handlerKey: string | string[],\n  handlerCallback: (e: ExtendedKeyboardEvent, combo: string) => void,\n  elementOrElementRef: typeof document | React.RefObject<Element | null>,\n) {\n  const actionRef = useRef<typeof handlerCallback | null>(null);\n  actionRef.current = handlerCallback;\n  const element =\n    'current' in elementOrElementRef ? elementOrElementRef.current : document;\n\n  useEffect(() => {\n    const instance = new Mousetrap(element as Element);\n\n    instance.bind(handlerKey, (e, combo) => {\n      typeof actionRef.current === 'function' && actionRef.current(e, combo);\n    });\n\n    return () => {\n      instance.unbind(handlerKey);\n    };\n  }, [handlerKey, element]);\n}\n","export const getSpan = (x1: number, x2: number) => 1 + Math.abs(x2 - x1);\n","import clamp from 'lodash/clamp';\nimport floor from 'lodash/floor';\nimport round from 'lodash/round';\nimport { CellInfo, Grid, Rect } from '../types';\nimport { getSpan } from './getSpan';\n\nexport const createGrid = ({\n  totalHeight,\n  totalWidth,\n  numVerticalCells,\n  numHorizontalCells,\n}: {\n  totalHeight: number;\n  totalWidth: number;\n  numVerticalCells: number;\n  numHorizontalCells: number;\n}): Grid => {\n  const cellHeight = totalHeight / numVerticalCells;\n  const cellWidth = totalWidth / numHorizontalCells;\n\n  return {\n    totalHeight,\n    totalWidth,\n    numVerticalCells,\n    numHorizontalCells,\n    cellWidth,\n    cellHeight,\n\n    getRectFromCell(data: CellInfo) {\n      const { endX, startX, endY, startY, spanX, spanY } = data;\n      const bottom = endY * this.cellHeight;\n      const top = startY * this.cellHeight;\n      const left = startX * this.cellWidth;\n      const right = endX * this.cellWidth;\n      const height = spanY * this.cellHeight;\n      const width = spanX * this.cellWidth;\n\n      return {\n        bottom,\n        top,\n        left,\n        right,\n        height,\n        width,\n\n        // @TODO: check the math\n        startX: startX * this.cellWidth,\n        endX: endX * this.cellWidth,\n        startY: startY * this.cellHeight,\n        endY: endY * this.cellHeight,\n      };\n    },\n\n    getCellFromRect(data: Rect) {\n      const startX = clamp(\n        floor(data.left / this.cellWidth),\n        0,\n        numHorizontalCells - 1,\n      );\n      const startY = clamp(\n        round(data.top / this.cellHeight),\n        0,\n        numVerticalCells - 1,\n      );\n      const endX = clamp(\n        floor(data.right / this.cellWidth),\n        0,\n        numHorizontalCells - 1,\n      );\n      const endY = clamp(\n        round(data.bottom / this.cellHeight),\n        0,\n        numVerticalCells - 1,\n      );\n      const spanX = clamp(getSpan(startX, endX), 1, numHorizontalCells);\n      const spanY = clamp(getSpan(startY, endY), 1, numVerticalCells);\n\n      return {\n        spanX,\n        spanY,\n        startX,\n        startY,\n        endX,\n        endY,\n      };\n    },\n  };\n};\n","import addDays from 'date-fns/add_days';\nimport addMinutes from 'date-fns/add_minutes';\n\nexport const cellToDate = ({\n  startX,\n  startY,\n  toMin,\n  originDate,\n}: {\n  startX: number;\n  startY: number;\n  toMin: (y: number) => number;\n  toDay: (x: number) => number;\n  originDate: Date;\n}) => addMinutes(addDays(originDate, startX), toMin(startY));\n","import addMinutes from 'date-fns/add_minutes';\nimport compareAsc from 'date-fns/compare_asc';\nimport endOfDay from 'date-fns/end_of_day';\nimport isBefore from 'date-fns/is_before';\nimport min from 'date-fns/min';\nimport range from 'lodash/range';\nimport { DateRange, MapCellInfoToDateRange } from '../types';\nimport { cellToDate } from './cellToDate';\n\nexport type RecurringTimeRange = DateRange[];\n\nexport const createMapCellInfoToRecurringTimeRange: MapCellInfoToDateRange = ({\n  fromY: toMin,\n  fromX: toDay,\n  originDate,\n}) => ({ startX, startY, endX, spanY }) => {\n  const result = range(startX, endX + 1)\n    .map(i => {\n      const startDate = cellToDate({\n        startX: i,\n        startY,\n        toMin,\n        toDay,\n        originDate,\n      });\n      let endDate = min(\n        addMinutes(startDate, toMin(spanY)),\n        endOfDay(startDate),\n      );\n\n      const range: DateRange = isBefore(startDate, endDate)\n        ? [startDate, endDate]\n        : [endDate, startDate];\n\n      return range;\n    })\n    .sort((range1, range2) => compareAsc(range1[0], range2[0]));\n\n  return result;\n};\n","import differenceInDays from 'date-fns/difference_in_days';\nimport differenceInMinutes from 'date-fns/difference_in_minutes';\nimport isEqual from 'date-fns/is_equal';\nimport startOfDay from 'date-fns/start_of_day';\nimport range from 'lodash/range';\nimport { CellInfo, DateRange } from '../types';\nimport { getSpan } from './getSpan';\n\nexport const createMapDateRangeToCells = ({\n  toX = (x: number) => x,\n  toY,\n  numVerticalCells,\n  originDate,\n}: {\n  toX: (day: number) => number;\n  toY: (min: number) => number;\n  numHorizontalCells: number;\n  numVerticalCells: number;\n  originDate: Date;\n}) => ([start, end]: DateRange): CellInfo[] => {\n  const originOfThisDay = startOfDay(start);\n  const _startX = toX(differenceInDays(start, originDate));\n  const _startY = toY(differenceInMinutes(start, originOfThisDay));\n  const _endX = toX(differenceInDays(end, originDate));\n  const _endY = toY(differenceInMinutes(end, startOfDay(end))) - 1;\n\n  const cells = range(_startX, _endX + 1).map(i => {\n    const startX = i;\n    const endX = i;\n    const atStart = i === _startX;\n    const atEnd = i === _endX;\n    const startY = !atStart ? 0 : _startY;\n    const endY = !atEnd ? numVerticalCells - 1 : _endY;\n    const spanX = getSpan(startX, endX);\n    const spanY = getSpan(startY, endY);\n\n    return {\n      startX,\n      startY,\n      endX,\n      endY,\n      spanX,\n      spanY,\n    };\n  });\n\n  if (isEqual(end, startOfDay(end))) {\n    cells.pop();\n  }\n\n  return cells;\n};\n","import compareAsc from 'date-fns/compare_asc';\nimport setDay from 'date-fns/set_day';\nimport { DateRange } from '../types';\n\nexport function getEarliestTimeRange(\n  ranges: DateRange[],\n): DateRange | undefined {\n  return [...ranges].sort(([startA], [startB]) =>\n    compareAsc(setDay(startA, 0), setDay(startB, 0)),\n  )[0];\n}\n","import compareAsc from 'date-fns/compare_asc';\nimport _mergeRanges from 'merge-ranges';\nimport { ScheduleType } from '../types';\n\nexport function mergeRanges(event: ScheduleType): ScheduleType {\n  return _mergeRanges(\n    [...event].map(d => d.map(c => new Date(c)) as [Date, Date]),\n  );\n}\n\nexport function mergeEvents(\n  event1: ScheduleType,\n  event2: ScheduleType | null,\n): ScheduleType {\n  if (event2 === null) {\n    return event1;\n  }\n\n  return mergeRanges([...event1, ...event2]).sort((range1, range2) =>\n    compareAsc(range1[0], range2[0]),\n  );\n}\n","import classcat from 'classcat';\nimport getMinutes from 'date-fns/get_minutes';\nimport React from 'react';\nimport { CellInfo, ClassNames, DateRange } from '../types';\n\nexport const Cell = React.memo(function Cell({\n  timeIndex,\n  children,\n  classes,\n  getDateRangeForVisualGrid,\n  onClick,\n}: {\n  timeIndex: number;\n  classes: ClassNames;\n  getDateRangeForVisualGrid(cell: CellInfo): DateRange[];\n  children?(options: { start: Date; isHourStart: boolean }): React.ReactNode;\n  onClick?: React.MouseEventHandler;\n}) {\n  const [[start]] = getDateRangeForVisualGrid({\n    startX: 0,\n    startY: timeIndex,\n    endX: 0,\n    endY: timeIndex + 1,\n    spanX: 1,\n    spanY: 1,\n  });\n\n  const isHourStart = getMinutes(start) === 0;\n\n  return (\n    <div\n      role=\"button\"\n      onClick={onClick}\n      className={classcat([\n        classes.cell,\n        { [classes['is-hour-start']]: isHourStart },\n      ])}\n    >\n      {children && children({ start, isHourStart })}\n    </div>\n  );\n});\n","import format from 'date-fns/format';\nimport getMinutes from 'date-fns/get_minutes';\nimport isSameDay from 'date-fns/is_same_day';\n\nconst formatTemplate = 'ddd h:mma';\n\nconst dropSame = (\n  dates: [Date, Date],\n  template: string,\n  takeSecond: boolean = false,\n  locale: typeof import('date-fns/locale/en'),\n): [string, string] => {\n  const [first, second] = dates.map(date => format(date, template, { locale }));\n  if (first !== second) {\n    return [first, second];\n  }\n\n  if (takeSecond) {\n    return ['', second];\n  }\n\n  return [first, ''];\n};\n\nconst formatHour = (\n  date: Date,\n  locale: typeof import('date-fns/locale/en'),\n) => {\n  if (getMinutes(date) === 0) {\n    return format(date, 'h', { locale });\n  }\n\n  return format(date, 'h:mm', { locale });\n};\n\ntype Options = {\n  dateRange: [Date, Date];\n  locale: typeof import('date-fns/locale/en');\n  template?: string;\n  template2?: string;\n  includeDayIfSame?: boolean;\n};\n\nexport const getFormattedComponentsForDateRange = ({\n  dateRange,\n  locale,\n  template,\n  template2,\n  includeDayIfSame = true,\n}: Options) => {\n  const start = dateRange[0];\n  const end = dateRange[dateRange.length - 1];\n\n  if (isSameDay(start, end) && !template) {\n    const [firstM, secondM] = dropSame(dateRange, 'a', true, locale);\n    const day = includeDayIfSame ? `${format(start, 'ddd', { locale })} ` : '';\n    return [\n      `${day}${formatHour(start, {\n        locale,\n      })}${firstM}`,\n      `${formatHour(end, { locale })}${secondM}`,\n    ];\n  }\n\n  const startDateStr = format(start, template || formatTemplate, { locale });\n  const endDateStr = format(end, template2 || formatTemplate, { locale });\n\n  return [startDateStr, endDateStr];\n};\n\nexport const getTextForDateRange = (options: Options) => {\n  return getFormattedComponentsForDateRange(options).join(' – ');\n};\n","// @ts-ignore\nimport VisuallyHidden from '@reach/visually-hidden';\nimport React, { useContext } from 'react';\nimport { SchedulerContext } from '../context';\nimport { ClassNames } from '../types';\nimport {\n  getFormattedComponentsForDateRange,\n  getTextForDateRange,\n} from '../utils/getTextForDateRange';\n\nexport type EventContentProps = {\n  width: number;\n  height: number;\n  classes: ClassNames;\n  dateRange: [Date, Date];\n  isStart: boolean;\n  isEnd: boolean;\n};\n\nexport const EventContent = React.memo(function EventContent({\n  width,\n  height,\n  classes,\n  dateRange,\n  isStart,\n  isEnd,\n}: EventContentProps) {\n  const { locale } = useContext(SchedulerContext);\n  const [start, end] = getFormattedComponentsForDateRange({\n    dateRange,\n    locale,\n    includeDayIfSame: false,\n  });\n\n  return (\n    <div\n      style={{ width: width - 20, height }}\n      className={classes['event-content']}\n    >\n      <VisuallyHidden>\n        {getTextForDateRange({ dateRange, locale })}\n      </VisuallyHidden>\n      <span aria-hidden className={classes.start}>\n        {isStart && start}\n      </span>\n      <span aria-hidden className={classes.end}>\n        {isEnd && end}\n      </span>\n    </div>\n  );\n});\n","import classcat from 'classcat';\nimport invariant from 'invariant';\nimport Resizable, { ResizeCallback } from 're-resizable';\nimport React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport Draggable, { DraggableEventHandler } from 'react-draggable';\nimport { useMousetrap } from '../hooks/useMousetrap';\nimport { CellInfo } from '../types';\nimport { DefaultEventRootComponent } from './DefaultEventRootComponent';\nimport { EventContent } from './EventContent';\nimport { ScheduleProps } from './Schedule';\n\nexport const RangeBox = React.memo(function RangeBox({\n  classes,\n  grid,\n  rangeIndex,\n  cellIndex,\n  cellArray,\n  cell,\n  className,\n  onChange,\n  cellInfoToDateRange,\n  isResizable,\n  moveAxis,\n  onActiveChange,\n  onClick,\n  getIsActive,\n  eventContentComponent: EventContentComponent = EventContent,\n  eventRootComponent: EventRootComponent = DefaultEventRootComponent,\n  disabled,\n}: ScheduleProps & {\n  cellIndex: number;\n  cellArray: CellInfo[];\n  className?: string;\n  rangeIndex: number;\n  cell: CellInfo;\n}) {\n  const ref = useRef(null);\n  const [modifiedCell, setModifiedCell] = useState(cell);\n  const originalRect = useMemo(() => grid.getRectFromCell(cell), [cell, grid]);\n  const rect = useMemo(() => grid.getRectFromCell(modifiedCell), [\n    modifiedCell,\n    grid,\n  ]);\n\n  useEffect(() => {\n    setModifiedCell(cell);\n  }, [cell]);\n\n  const modifiedDateRange = useMemo(() => cellInfoToDateRange(modifiedCell), [\n    cellInfoToDateRange,\n    modifiedCell,\n  ]);\n\n  const { top, left, width, height } = rect;\n\n  const isStart = cellIndex === 0;\n  const isEnd = cellIndex === cellArray.length - 1;\n\n  const handleStop = useCallback(() => {\n    if (!onChange || disabled) {\n      return;\n    }\n\n    onChange(cellInfoToDateRange(modifiedCell), rangeIndex);\n  }, [modifiedCell, rangeIndex, disabled, cellInfoToDateRange, onChange]);\n\n  const isActive = useMemo(() => getIsActive({ cellIndex, rangeIndex }), [\n    cellIndex,\n    rangeIndex,\n    getIsActive,\n  ]);\n\n  useMousetrap(\n    'up',\n    () => {\n      if (!onChange || disabled || !isActive) {\n        return;\n      }\n\n      if (moveAxis === 'none' || moveAxis === 'x') {\n        return;\n      }\n\n      if (modifiedCell.startY === 0) {\n        return;\n      }\n\n      const newCell = {\n        ...modifiedCell,\n        startY: modifiedCell.startY - 1,\n        endY: modifiedCell.endY - 1,\n      };\n\n      onChange(cellInfoToDateRange(newCell), rangeIndex);\n    },\n    ref,\n  );\n\n  useMousetrap(\n    'shift+up',\n    () => {\n      if (!onChange || !isResizable || disabled || !isActive) {\n        return;\n      }\n\n      if (\n        modifiedCell.endY === modifiedCell.startY ||\n        modifiedCell.spanY === 0\n      ) {\n        return;\n      }\n\n      const newCell = {\n        ...modifiedCell,\n        endY: modifiedCell.endY - 1,\n        spanY: modifiedCell.spanY - 1,\n      };\n\n      onChange(cellInfoToDateRange(newCell), rangeIndex);\n    },\n    ref,\n  );\n\n  useMousetrap(\n    'down',\n    () => {\n      if (!onChange || disabled || !isActive) {\n        return;\n      }\n\n      if (moveAxis === 'none' || moveAxis === 'x') {\n        return;\n      }\n\n      if (Math.round(modifiedCell.endY) >= grid.numVerticalCells - 1) {\n        return;\n      }\n\n      const newCell = {\n        ...modifiedCell,\n        startY: modifiedCell.startY + 1,\n        endY: modifiedCell.endY + 1,\n      };\n\n      onChange(cellInfoToDateRange(newCell), rangeIndex);\n    },\n    ref,\n  );\n\n  useMousetrap(\n    'shift+down',\n    () => {\n      if (!onChange || !isResizable || disabled || !isActive) {\n        return;\n      }\n\n      if (moveAxis === 'none' || moveAxis === 'x') {\n        return;\n      }\n\n      if (Math.round(modifiedCell.endY) >= grid.numVerticalCells - 1) {\n        return;\n      }\n\n      const newCell = {\n        ...modifiedCell,\n        spanY: modifiedCell.spanY + 1,\n        endY: modifiedCell.endY + 1,\n      };\n\n      onChange(cellInfoToDateRange(newCell), rangeIndex);\n    },\n    ref,\n  );\n\n  const handleDrag: DraggableEventHandler = useCallback(\n    (event, { y, x }) => {\n      if (moveAxis === 'none' || disabled) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      const newRect = {\n        ...rect,\n      };\n\n      if (moveAxis === 'both' || moveAxis === 'y') {\n        const startOrEnd1 = y;\n        const startOrEnd2 = startOrEnd1 + rect.height;\n        const newTop = Math.min(startOrEnd1, startOrEnd2);\n        const newBottom = newTop + rect.height;\n        newRect.bottom = newBottom;\n        newRect.top = newTop;\n      }\n\n      if (moveAxis === 'both' || moveAxis === 'x') {\n        const startOrEnd1 = x;\n        const startOrEnd2 = startOrEnd1 + rect.width;\n        const newLeft = Math.min(startOrEnd1, startOrEnd2);\n        const newRight = newLeft + rect.width;\n        newRect.right = newRight;\n        newRect.left = newLeft;\n      }\n\n      const { startY, startX } = grid.getCellFromRect(newRect);\n\n      const newCell = {\n        ...cell,\n        startX: moveAxis === 'y' ? cell.startX : startX,\n        endX: moveAxis === 'x' ? startX + cell.spanX - 1 : cell.endX,\n        startY: moveAxis === 'x' ? cell.startY : startY,\n        endY: moveAxis === 'y' ? startY + cell.spanY - 1 : cell.endY,\n      };\n\n      invariant(\n        newCell.spanY === cell.spanY && newCell.spanX === cell.spanX,\n        `Expected the dragged time cell to have the same dimensions`,\n      );\n\n      setModifiedCell(newCell);\n    },\n    [grid, rect, moveAxis, disabled, cell, setModifiedCell],\n  );\n\n  const handleResize: ResizeCallback = useCallback(\n    (event, direction, _ref, delta) => {\n      if (!isResizable || disabled) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (delta.height === 0) {\n        return;\n      }\n\n      const newSize = {\n        height: delta.height + rect.height,\n        width: delta.width + rect.width + 20,\n      };\n\n      const newRect = {\n        ...originalRect,\n        ...newSize,\n      };\n\n      if (direction.includes('top')) {\n        newRect.top -= delta.height;\n      } else if (direction.includes('bottom')) {\n        newRect.bottom += delta.height;\n      }\n\n      const { spanY, startY, endY } = grid.getCellFromRect(newRect);\n      const newCell = {\n        ...cell,\n        spanY,\n        startY,\n        endY,\n      };\n\n      setModifiedCell(newCell);\n    },\n    [grid, rect, disabled, isResizable, setModifiedCell, cell, originalRect],\n  );\n\n  const handleDelete = useCallback(() => {\n    if (!onChange || disabled) {\n      return;\n    }\n\n    onChange(undefined, rangeIndex);\n  }, [onChange, disabled, rangeIndex]);\n\n  const handleOnFocus = useCallback(() => {\n    if (!onActiveChange || disabled) {\n      return;\n    }\n\n    onActiveChange([rangeIndex, cellIndex]);\n  }, [onActiveChange, disabled, rangeIndex, cellIndex]);\n\n  const handleOnClick = useCallback(() => {\n    if (!onClick || disabled || !isActive) {\n      return;\n    }\n\n    onClick([rangeIndex, cellIndex]);\n  }, [onClick, rangeIndex, disabled, isActive, cellIndex]);\n\n  useMousetrap('enter', handleOnClick, ref);\n\n  const cancelClasses = useMemo(\n    () =>\n      classes.handle\n        ? classes.handle\n            .split(' ')\n            .map(className => `.${className}`)\n            .join(', ')\n        : undefined,\n    [classes.handle],\n  );\n\n  return (\n    <Draggable\n      axis={moveAxis}\n      bounds={{\n        top: 0,\n        bottom: grid.totalHeight - height,\n        left: 0,\n        right: grid.totalWidth,\n      }}\n      position={{ x: left, y: top }}\n      onDrag={handleDrag}\n      onStop={handleStop}\n      cancel={cancelClasses}\n      disabled={disabled}\n    >\n      <EventRootComponent\n        role=\"button\"\n        disabled={disabled}\n        onFocus={handleOnFocus}\n        onClick={handleOnClick}\n        handleDelete={handleDelete}\n        cellIndex={cellIndex}\n        rangeIndex={rangeIndex}\n        isActive={isActive}\n        classes={classes}\n        className={classcat([\n          classes.event,\n          classes['range-boxes'],\n          className,\n          {\n            [classes['is-draggable']]: !disabled && moveAxis !== 'none',\n            [classes['is-disabled']]: disabled,\n          },\n        ])}\n        ref={ref}\n        style={{ width: width - 20, height }}\n      >\n        <Resizable\n          size={{ ...originalRect, width: originalRect.width - 20 }}\n          key={`${rangeIndex}.${cellIndex}.${cellArray.length}.${\n            originalRect.top\n          }.${originalRect.left}`}\n          onResize={handleResize}\n          onResizeStop={handleStop}\n          handleWrapperClass={classes['handle-wrapper']}\n          enable={\n            isResizable && !disabled\n              ? {\n                  top: true,\n                  bottom: true,\n                }\n              : {}\n          }\n          handleClasses={{\n            bottom: classcat([classes.handle, classes.bottom]),\n            bottomLeft: classes.handle,\n            bottomRight: classes.handle,\n            left: classes.handle,\n            right: classes.handle,\n            top: classcat([classes.handle, classes.top]),\n            topLeft: classes.handle,\n            topRight: classes.handle,\n          }}\n        >\n          <EventContentComponent\n            width={width}\n            height={height}\n            classes={classes}\n            dateRange={modifiedDateRange}\n            isStart={isStart}\n            isEnd={isEnd}\n          />\n        </Resizable>\n      </EventRootComponent>\n    </Draggable>\n  );\n});\n","import React from 'react';\nimport {\n  CellInfo,\n  ClassNames,\n  DateRange,\n  Grid,\n  OnChangeCallback,\n  ScheduleType,\n} from '../types';\nimport { RangeBox } from './RangeBox';\n\nexport type ScheduleProps = {\n  classes: ClassNames;\n  grid: Grid;\n  onChange?: OnChangeCallback;\n  isResizable?: boolean;\n  isDeletable?: boolean;\n  moveAxis: 'none' | 'both' | 'x' | 'y';\n  cellInfoToDateRange(cell: CellInfo): DateRange;\n  onActiveChange?(index: [number, number] | [null, null]): void;\n  onClick?(index: [number, number] | [null, null]): void;\n  getIsActive(indexes: { cellIndex: number; rangeIndex: number }): boolean;\n  eventContentComponent?: any;\n  eventRootComponent?: any;\n  disabled?: boolean;\n};\n\nexport const Schedule = React.memo(function Schedule({\n  classes,\n  ranges,\n  grid,\n  className,\n  onChange,\n  isResizable,\n  isDeletable,\n  moveAxis,\n  cellInfoToDateRange,\n  dateRangeToCells,\n  onActiveChange,\n  eventContentComponent,\n  eventRootComponent,\n  onClick,\n  getIsActive,\n  disabled,\n}: {\n  dateRangeToCells(range: DateRange): CellInfo[];\n  ranges: ScheduleType;\n  className?: string;\n  classes: ClassNames;\n} & ScheduleProps) {\n  return (\n    <div className={classes['range-boxes']}>\n      {ranges.map((dateRange, rangeIndex) => {\n        return (\n          <span key={rangeIndex}>\n            {dateRangeToCells(dateRange).map((cell, cellIndex, cellArray) => {\n              return (\n                <RangeBox\n                  classes={classes}\n                  onActiveChange={onActiveChange}\n                  key={`${rangeIndex}.${ranges.length}.${cellIndex}.${\n                    cellArray.length\n                  }`}\n                  isResizable={isResizable}\n                  moveAxis={moveAxis}\n                  isDeletable={isDeletable}\n                  cellInfoToDateRange={cellInfoToDateRange}\n                  cellArray={cellArray}\n                  cellIndex={cellIndex}\n                  rangeIndex={rangeIndex}\n                  className={className}\n                  onChange={onChange}\n                  onClick={onClick}\n                  grid={grid}\n                  cell={cell}\n                  getIsActive={getIsActive}\n                  eventContentComponent={eventContentComponent}\n                  eventRootComponent={eventRootComponent}\n                  disabled={disabled}\n                />\n              );\n            })}\n          </span>\n        );\n      })}\n    </div>\n  );\n});\n","import useComponentSize from '@rehooks/component-size';\nimport classcat from 'classcat';\nimport addDays from 'date-fns/add_days';\nimport addHours from 'date-fns/add_hours';\nimport format from 'date-fns/format';\nimport isDateEqual from 'date-fns/is_equal';\nimport startOfDay from 'date-fns/start_of_day';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport times from 'lodash/times';\nimport React, {\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { SchedulerContext } from '../context';\nimport { useClickAndDrag } from '../hooks/useClickAndDrag';\nimport { useMousetrap } from '../hooks/useMousetrap';\nimport {\n  CellInfo,\n  ClassNames,\n  DateRange,\n  Grid,\n  OnChangeCallback,\n  ScheduleType,\n} from '../types';\nimport { createGrid } from '../utils/createGrid';\nimport {\n  createMapCellInfoToRecurringTimeRange,\n  RecurringTimeRange,\n} from '../utils/createMapCellInfoToRecurringTimeRange';\nimport { createMapDateRangeToCells } from '../utils/createMapDateRangeToCells';\nimport { getEarliestTimeRange } from '../utils/getEarliestTimeRange';\nimport { getSpan } from '../utils/getSpan';\nimport { mergeEvents, mergeRanges } from '../utils/mergeEvents';\nimport { Cell } from './Cell';\nimport { Schedule, ScheduleProps } from './Schedule';\n\nconst MINS_IN_DAY = 24 * 60;\nconst horizontalPrecision = 1;\nconst toDay = (x: number): number => x * horizontalPrecision;\nconst toX = (days: number): number => days / horizontalPrecision;\nconst DELETE_KEYS = ['del', 'backspace'];\n\nexport const TimeGridScheduler = React.memo(function TimeGridScheduler({\n  verticalPrecision = 30,\n  visualGridVerticalPrecision = 30,\n  cellClickPrecision = visualGridVerticalPrecision,\n  style,\n  schedule,\n  originDate: _originDate = new Date(),\n  defaultHours = [9, 15],\n  classes,\n  className,\n  onChange,\n  onEventClick,\n  eventContentComponent,\n  eventRootComponent,\n  disabled,\n}: {\n  originDate?: Date;\n\n  /**\n   * The minimum number of minutes a created range can span\n   * @default 30\n   */\n  verticalPrecision?: number;\n\n  /**\n   * The visual grid increments in minutes.\n   * @default 30\n   */\n  visualGridVerticalPrecision?: number;\n\n  /**\n   * The minimum number of minutes for an time block\n   * created with a single click.\n   * @default visualGridVerticalPrecision\n   */\n  cellClickPrecision?: number;\n\n  /** Custom styles applied to the root of the view */\n  style?: React.CSSProperties;\n  schedule: ScheduleType;\n\n  /**\n   * A map of class names to the scoped class names\n   * The keys are class names like `'root'` and the values\n   * are the corresponding class names which can be scoped\n   * with CSS Modules, e.g. `'_root_7f2c6'`.\n   */\n  classes: ClassNames;\n  className?: string;\n\n  /**\n   * The view will initially be scrolled to these hours.\n   * Defaults to work hours (9-17).\n   * @default [9, 17]\n   */\n  defaultHours?: [number, number];\n  onChange(newSchedule: ScheduleType): void;\n  onEventClick?: ScheduleProps['onClick'];\n  eventContentComponent?: ScheduleProps['eventContentComponent'];\n  eventRootComponent?: ScheduleProps['eventRootComponent'];\n  disabled?: boolean;\n}) {\n  const { locale } = useContext(SchedulerContext);\n  const originDate = useMemo(() => startOfDay(_originDate), [_originDate]);\n  const numVerticalCells = MINS_IN_DAY / verticalPrecision;\n  const numHorizontalCells = 7 / horizontalPrecision;\n  const toMin = useCallback((y: number) => y * verticalPrecision, [\n    verticalPrecision,\n  ]);\n  const toY = useCallback((mins: number): number => mins / verticalPrecision, [\n    verticalPrecision,\n  ]);\n\n  const cellInfoToDateRanges = useMemo(() => {\n    return createMapCellInfoToRecurringTimeRange({\n      originDate,\n      fromY: toMin,\n      fromX: toDay,\n    });\n  }, [toMin, originDate]);\n\n  const cellInfoToSingleDateRange = useCallback(\n    (cell: CellInfo): DateRange => {\n      const [first, ...rest] = cellInfoToDateRanges(cell);\n      invariant(\n        rest.length === 0,\n        `Expected \"cellInfoToSingleDateRange\" to return a single date range, found ${\n          rest.length\n        } additional ranges instead. This is a bug in @remotelock/react-week-scheduler`,\n      );\n\n      return first;\n    },\n    [cellInfoToDateRanges],\n  );\n\n  const dateRangeToCells = useMemo(() => {\n    return createMapDateRangeToCells({\n      originDate,\n      numVerticalCells,\n      numHorizontalCells,\n      toX,\n      toY,\n    });\n  }, [toY, numVerticalCells, numHorizontalCells, originDate]);\n\n  const root = useRef<HTMLDivElement | null>(null);\n  const parent = useRef<HTMLDivElement | null>(null);\n\n  const size = useComponentSize(parent);\n  const {\n    style: dragBoxStyle,\n    box,\n    isDragging,\n    hasFinishedDragging,\n    cancel,\n  } = useClickAndDrag(parent, disabled);\n  const [\n    pendingCreation,\n    setPendingCreation,\n  ] = useState<RecurringTimeRange | null>(null);\n\n  const [[totalHeight, totalWidth], setDimensions] = useState([0, 0]);\n\n  const numVisualVerticalCells = (24 * 60) / visualGridVerticalPrecision;\n\n  useEffect(\n    function updateGridDimensionsOnSizeOrCellCountChange() {\n      if (!parent.current) {\n        setDimensions([0, 0]);\n        return;\n      }\n\n      setDimensions([parent.current.scrollHeight, parent.current.scrollWidth]);\n    },\n    [size, numVisualVerticalCells],\n  );\n\n  const grid = useMemo<Grid | null>(() => {\n    if (totalHeight === null || totalWidth === null) {\n      return null;\n    }\n\n    return createGrid({\n      totalHeight,\n      totalWidth,\n      numHorizontalCells,\n      numVerticalCells,\n    });\n  }, [totalHeight, totalWidth, numHorizontalCells, numVerticalCells]);\n\n  useEffect(\n    function updatePendingCreationOnDragBoxUpdate() {\n      if (grid === null || box === null) {\n        setPendingCreation(null);\n        return;\n      }\n\n      const cell = grid.getCellFromRect(box);\n      const dateRanges = cellInfoToDateRanges(cell);\n      const event = dateRanges;\n      setPendingCreation(event);\n    },\n    [box, grid, cellInfoToDateRanges, toY],\n  );\n\n  const [[activeRangeIndex, activeCellIndex], setActive] = useState<\n    [number, number] | [null, null]\n  >([null, null]);\n\n  useEffect(\n    function updateScheduleAfterDraggingFinished() {\n      if (disabled) {\n        return;\n      }\n\n      if (hasFinishedDragging) {\n        onChange(mergeEvents(schedule, pendingCreation));\n        setPendingCreation(null);\n      }\n    },\n    [\n      hasFinishedDragging,\n      disabled,\n      onChange,\n      setPendingCreation,\n      pendingCreation,\n      schedule,\n    ],\n  );\n\n  useEffect(\n    function clearActiveBlockAfterCreation() {\n      if (pendingCreation === null) {\n        setActive([null, null]);\n      }\n    },\n    [pendingCreation],\n  );\n\n  const handleEventChange = useCallback<OnChangeCallback>(\n    (newDateRange, rangeIndex) => {\n      if (disabled) {\n        return;\n      }\n\n      if (!schedule && newDateRange) {\n        onChange([newDateRange]);\n\n        return;\n      }\n\n      let newSchedule = [...schedule];\n\n      if (!newDateRange) {\n        newSchedule.splice(rangeIndex, 1);\n      } else {\n        if (\n          isDateEqual(newDateRange[0], newSchedule[rangeIndex][0]) &&\n          isDateEqual(newDateRange[1], newSchedule[rangeIndex][1])\n        ) {\n          return;\n        }\n        newSchedule[rangeIndex] = newDateRange;\n      }\n\n      newSchedule = mergeRanges(newSchedule);\n\n      onChange(newSchedule);\n    },\n    [schedule, onChange, disabled],\n  );\n\n  useMousetrap(\n    'esc',\n    function cancelOnEsc() {\n      if (pendingCreation) {\n        cancel();\n      }\n    },\n    document,\n  );\n\n  const getIsActive = useCallback(\n    ({ rangeIndex, cellIndex }) => {\n      return rangeIndex === activeRangeIndex && cellIndex === activeCellIndex;\n    },\n    [activeCellIndex, activeRangeIndex],\n  );\n\n  const handleDelete = useCallback(\n    (e: ExtendedKeyboardEvent) => {\n      if (activeRangeIndex === null || disabled) {\n        return;\n      }\n\n      e.preventDefault();\n      e.stopPropagation();\n      handleEventChange(undefined, activeRangeIndex);\n    },\n    [activeRangeIndex, disabled, handleEventChange],\n  );\n\n  useMousetrap(DELETE_KEYS, handleDelete, root);\n\n  useEffect(\n    function cancelPendingCreationOnSizeChange() {\n      cancel();\n    },\n    [size, cancel],\n  );\n\n  const getDateRangeForVisualGrid = useMemo(() => {\n    return createMapCellInfoToRecurringTimeRange({\n      originDate,\n      fromX: toDay,\n      fromY: y => y * visualGridVerticalPrecision,\n    });\n  }, [visualGridVerticalPrecision, originDate]);\n\n  useEffect(\n    function scrollToActiveTimeBlock() {\n      if (!document.activeElement) {\n        return;\n      }\n\n      if (!root.current || !root.current.contains(document.activeElement)) {\n        return;\n      }\n\n      scrollIntoView(document.activeElement, {\n        scrollMode: 'if-needed',\n        block: 'nearest',\n        inline: 'nearest',\n      });\n    },\n    [schedule],\n  );\n\n  const [wasInitialScrollPerformed, setWasInitialScrollPerformed] = useState(\n    false,\n  );\n\n  useEffect(\n    function performInitialScroll() {\n      if (wasInitialScrollPerformed || !root.current || !grid) {\n        return;\n      }\n\n      const range = dateRangeToCells(\n        getEarliestTimeRange(schedule) || [\n          addHours(originDate, defaultHours[0]),\n          addHours(originDate, defaultHours[1]),\n        ],\n      );\n      const rect = grid.getRectFromCell(range[0]);\n      const { top, bottom } = rect;\n\n      if (top === 0 && bottom === 0) {\n        return;\n      }\n\n      // IE, Edge do not support it\n      if (!('scrollBy' in root.current)) {\n        return;\n      }\n\n      root.current.scrollBy(0, top);\n\n      setWasInitialScrollPerformed(true);\n    },\n    [\n      wasInitialScrollPerformed,\n      grid,\n      schedule,\n      defaultHours,\n      originDate,\n      dateRangeToCells,\n    ],\n  );\n\n  const handleBlur: React.FocusEventHandler = useCallback(\n    event => {\n      if (!event.target.contains(document.activeElement)) {\n        setActive([null, null]);\n      }\n    },\n    [setActive],\n  );\n\n  const handleCellClick = useCallback(\n    (dayIndex: number, timeIndex: number) => (event: React.MouseEvent) => {\n      if (!grid || disabled) {\n        return;\n      }\n\n      const spanY = toY(cellClickPrecision);\n      const cell = {\n        startX: dayIndex,\n        startY: timeIndex,\n        endX: dayIndex,\n        endY: spanY + timeIndex,\n        spanY,\n        spanX: getSpan(dayIndex, dayIndex),\n      };\n\n      const dateRanges = cellInfoToDateRanges(cell);\n\n      setPendingCreation(dateRanges);\n\n      event.stopPropagation();\n      event.preventDefault();\n    },\n    [grid, disabled, toY, cellClickPrecision, cellInfoToDateRanges],\n  );\n\n  return (\n    <div\n      ref={root}\n      style={style}\n      onBlur={handleBlur}\n      touch-action={isDragging ? 'none' : undefined}\n      className={classcat([\n        classes.root,\n        classes.theme,\n        className,\n        { [classes['no-scroll']]: isDragging },\n      ])}\n    >\n      <div className={classes['grid-root']}>\n        <div\n          aria-hidden\n          className={classcat([classes.timeline, classes['sticky-left']])}\n        >\n          <div className={classes.header}>\n            <div className={classes['day-column']}>\n              <div className={classcat([classes.cell, classes.title])}>T</div>\n            </div>\n          </div>\n          <div className={classes.calendar}>\n            <div className={classes['day-column']}>\n              <div className={classes['day-hours']}>\n                {times(numVisualVerticalCells).map(timeIndex => {\n                  return (\n                    <Cell\n                      classes={classes}\n                      getDateRangeForVisualGrid={getDateRangeForVisualGrid}\n                      key={timeIndex}\n                      timeIndex={timeIndex}\n                    >\n                      {({ start, isHourStart }) => {\n                        if (isHourStart) {\n                          return (\n                            <div className={classes.time}>\n                              {format(start, 'h a', { locale })}\n                            </div>\n                          );\n                        }\n\n                        return null;\n                      }}\n                    </Cell>\n                  );\n                })}\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className={classcat([\n            classes['sticky-top'],\n            classes['day-header-row'],\n          ])}\n        >\n          <div\n            role=\"presentation\"\n            className={classcat([classes.calendar, classes.header])}\n          >\n            {times(7).map(i => (\n              <div\n                key={i}\n                role=\"presentation\"\n                className={classes['day-column']}\n              >\n                <div className={classcat([classes.cell, classes.title])}>\n                  {format(addDays(originDate, i), 'ddd', { locale })}\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n        <div className={classes['layer-container']}>\n          {isDragging && (\n            <div className={classes['drag-box']} style={dragBoxStyle}>\n              {hasFinishedDragging && <div className={classes.popup} />}\n            </div>\n          )}\n          {grid && pendingCreation && isDragging && (\n            <Schedule\n              classes={classes}\n              dateRangeToCells={dateRangeToCells}\n              cellInfoToDateRange={cellInfoToSingleDateRange}\n              className={classes['is-pending-creation']}\n              ranges={mergeEvents(schedule, pendingCreation)}\n              grid={grid}\n              moveAxis=\"none\"\n              eventContentComponent={eventContentComponent}\n              getIsActive={getIsActive}\n            />\n          )}\n          {grid && !pendingCreation && (\n            <Schedule\n              classes={classes}\n              onActiveChange={setActive}\n              dateRangeToCells={dateRangeToCells}\n              cellInfoToDateRange={cellInfoToSingleDateRange}\n              isResizable\n              moveAxis=\"y\"\n              isDeletable\n              onChange={handleEventChange}\n              onClick={onEventClick}\n              ranges={schedule}\n              grid={grid}\n              eventContentComponent={eventContentComponent}\n              eventRootComponent={eventRootComponent}\n              getIsActive={getIsActive}\n              disabled={disabled}\n            />\n          )}\n\n          <div ref={parent} role=\"grid\" className={classes.calendar}>\n            {times(7).map(dayIndex => {\n              return (\n                <div\n                  role=\"gridcell\"\n                  key={dayIndex}\n                  className={classes['day-column']}\n                >\n                  <div className={classes['day-hours']}>\n                    {times(numVisualVerticalCells).map(timeIndex => {\n                      return (\n                        <Cell\n                          classes={classes}\n                          onClick={handleCellClick(\n                            dayIndex,\n                            timeIndex *\n                              (numVerticalCells / numVisualVerticalCells),\n                          )}\n                          getDateRangeForVisualGrid={getDateRangeForVisualGrid}\n                          key={timeIndex}\n                          timeIndex={timeIndex}\n                        />\n                      );\n                    })}\n                  </div>\n                </div>\n              );\n            })}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}, isEqual);\n"],"names":["DefaultEventRootComponent","React","memo","forwardRef","ref","isActive","handleDelete","cellIndex","rangeIndex","classes","disabled","props","SchedulerContext","createContext","locale","en","createPageMapCoordsToContainer","container","event","clientX","clientY","pageX","pageY","changedTouches","getBoundingClientRect","top","left","x","y","prevent","tap","e","preventDefault","stopPropagation","useClickAndDrag","isDisabled","useState","transform","width","height","style","setStyle","box","setBox","isDragging","setIsDragging","hasFinishedDragging","setHasFinishedDragging","current","useEffect","mapCoordsToContainer","touchMove$","fromEvent","window","passive","pipe","touchEnd$","touchStart$","touchStartWithDelay$","mergeMap","start","of","delay","takeUntil","mouseDown$","filter","which","mouseMove$","mouseUp$","dragStart$","merge","map","dragEnd$","move$","box$","down","startWith","move","startX","Math","max","startY","endX","min","scrollWidth","endY","scrollHeight","bottom","right","rect","style$","display","boxSubscriber","subscribe","styleSubscriber","unsubscribe","cancel","useCallback","useMousetrap","handlerKey","handlerCallback","elementOrElementRef","actionRef","useRef","element","document","instance","Mousetrap","bind","combo","unbind","getSpan","x1","x2","abs","createGrid","totalHeight","totalWidth","numVerticalCells","numHorizontalCells","cellHeight","cellWidth","getRectFromCell","data","spanX","spanY","getCellFromRect","clamp","floor","round","cellToDate","toMin","originDate","addMinutes","addDays","createMapCellInfoToRecurringTimeRange","fromY","toDay","fromX","result","range","i","startDate","endDate","endOfDay","isBefore","sort","range1","range2","compareAsc","createMapDateRangeToCells","toX","toY","end","originOfThisDay","startOfDay","_startX","differenceInDays","_startY","differenceInMinutes","_endX","_endY","cells","atStart","atEnd","isEqual","pop","getEarliestTimeRange","ranges","startA","startB","setDay","mergeRanges","_mergeRanges","d","c","Date","mergeEvents","event1","event2","Cell","timeIndex","children","getDateRangeForVisualGrid","onClick","isHourStart","getMinutes","classcat","cell","formatTemplate","dropSame","dates","template","takeSecond","date","format","first","second","formatHour","getFormattedComponentsForDateRange","dateRange","template2","includeDayIfSame","length","isSameDay","firstM","secondM","day","startDateStr","endDateStr","getTextForDateRange","options","join","EventContent","isStart","isEnd","useContext","RangeBox","grid","cellArray","className","onChange","cellInfoToDateRange","isResizable","moveAxis","onActiveChange","getIsActive","eventContentComponent","EventContentComponent","eventRootComponent","EventRootComponent","modifiedCell","setModifiedCell","originalRect","useMemo","modifiedDateRange","handleStop","newCell","handleDrag","newRect","startOrEnd1","startOrEnd2","newTop","newBottom","newLeft","newRight","invariant","handleResize","direction","_ref","delta","newSize","includes","undefined","handleOnFocus","handleOnClick","cancelClasses","handle","split","bottomLeft","bottomRight","topLeft","topRight","Schedule","isDeletable","dateRangeToCells","MINS_IN_DAY","horizontalPrecision","days","DELETE_KEYS","TimeGridScheduler","verticalPrecision","visualGridVerticalPrecision","cellClickPrecision","schedule","_originDate","defaultHours","onEventClick","mins","cellInfoToDateRanges","cellInfoToSingleDateRange","rest","root","parent","size","useComponentSize","dragBoxStyle","pendingCreation","setPendingCreation","setDimensions","numVisualVerticalCells","updateGridDimensionsOnSizeOrCellCountChange","updatePendingCreationOnDragBoxUpdate","dateRanges","activeRangeIndex","activeCellIndex","setActive","updateScheduleAfterDraggingFinished","clearActiveBlockAfterCreation","handleEventChange","newDateRange","newSchedule","splice","isDateEqual","cancelOnEsc","cancelPendingCreationOnSizeChange","scrollToActiveTimeBlock","activeElement","contains","scrollIntoView","scrollMode","block","inline","wasInitialScrollPerformed","setWasInitialScrollPerformed","performInitialScroll","addHours","scrollBy","handleBlur","target","handleCellClick","dayIndex","theme","timeline","header","title","calendar","times","time","popup"],"mappings":"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"}