{"version":3,"file":"dx-react-scheduler.umd.cjs","sources":["../src/plugins/scheduler-core.tsx","../src/scheduler.tsx","../src/plugins/basic-view.tsx","../src/plugins/vertical-view.tsx","../src/plugins/day-view.tsx","../src/plugins/week-view.tsx","../src/plugins/month-view.tsx","../src/plugins/toolbar.tsx","../src/plugins/date-navigator.tsx","../src/plugins/view-switcher.tsx","../src/plugins/appointments.tsx","../src/plugins/all-day-panel.tsx","../src/plugins/view-state.tsx","../src/plugins/editing-state.tsx","../src/plugins/appointment-tooltip.tsx","../src/plugins/appointment-form.tsx","../src/plugins/drag-drop-provider.tsx","../src/plugins/today-button.tsx","../src/plugins/edit-recurrence-menu.tsx","../src/plugins/integrated-editing.tsx","../src/plugins/resources.tsx","../src/plugins/confirmation-dialog.tsx","../src/plugins/grouping-state.tsx","../src/plugins/grouping-panel.tsx","../src/plugins/current-time-indicator.tsx","../src/plugins/integrated-grouping.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n  Plugin, Getter, Template, TemplatePlaceholder,\n} from '@devexpress/dx-react-core';\nimport { appointments, formatDateTimeGetter } from '@devexpress/dx-scheduler-core';\nimport { SchedulerProps } from '../types';\nimport { memoize } from '@devexpress/dx-core';\n\nclass SchedulerCoreBase extends React.PureComponent<SchedulerProps> {\n  formatDateTimeGetter = memoize(locale => formatDateTimeGetter(locale));\n\n  render() {\n    const {\n      data,\n      rootComponent: Root,\n      locale,\n      height,\n      firstDayOfWeek,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"SchedulerCore\"\n      >\n        <Getter name=\"appointments\" value={appointments(data)} />\n        <Getter name=\"formatDate\" value={this.formatDateTimeGetter(locale)} />\n        <Getter name=\"firstDayOfWeek\" value={firstDayOfWeek} />\n        <Getter name=\"locale\" value={locale} />\n        <Template name=\"root\">\n          <Root height={height}>\n            <TemplatePlaceholder name=\"schedulerRoot\" />\n            <TemplatePlaceholder name=\"header\" />\n            <TemplatePlaceholder name=\"body\" />\n            <TemplatePlaceholder name=\"footer\" />\n          </Root>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/***\n * The Scheduler is a root container component designed to process\n * and display the specified data. The Scheduler's functionality\n * (data visualization and processing) is implemented in several plugins\n * specified as child components.\n * */\nexport const SchedulerCore: React.ComponentType<SchedulerProps> = SchedulerCoreBase;\n","import * as React from 'react';\nimport { PluginHost } from '@devexpress/dx-react-core';\nimport { SchedulerCore } from './plugins/scheduler-core';\nimport { SchedulerProps } from './types';\n\nconst SchedulerBase: React.FunctionComponent<SchedulerProps> = ({\n  data,\n  rootComponent,\n  children,\n  locale,\n  height,\n  firstDayOfWeek,\n}) => (\n  <PluginHost>\n    <SchedulerCore\n      data={data}\n      rootComponent={rootComponent}\n      locale={locale}\n      height={height}\n      firstDayOfWeek={firstDayOfWeek}\n    />\n    {children}\n  </PluginHost>\n);\n\nSchedulerBase.defaultProps = {\n  data: [],\n  locale: 'en-US',\n  height: 'auto',\n  firstDayOfWeek: 0,\n};\n\n// tslint:disable: max-line-length\n/***\n * The Scheduler is a root container component designed to process\n * and display the specified data. The Scheduler’s functionality\n * (data visualization and processing) is implemented in several plugins specified as child components.\n * */\nexport const Scheduler: React.ComponentType<SchedulerProps> = SchedulerBase;\n","import * as React from 'react';\nimport {\n  Template,\n  Plugin,\n  Getter,\n  TemplateConnector,\n  TemplatePlaceholder,\n  ComputedFn,\n} from '@devexpress/dx-react-core';\nimport {\n  computed,\n  startViewDate as startViewDateCore,\n  endViewDate as endViewDateCore,\n  availableViews as availableViewsCore,\n  HORIZONTAL_GROUP_ORIENTATION,\n  VERTICAL_GROUP_ORIENTATION,\n} from '@devexpress/dx-scheduler-core';\nimport { memoize } from '@devexpress/dx-core';\nimport { BasicViewProps, BasicViewState, ScrollingStrategy } from '../types';\n\nconst CellPlaceholder = params => <TemplatePlaceholder name=\"cell\" params={params} />;\nconst TimeTableAppointmentLayer = () => <TemplatePlaceholder name=\"timeTableAppointmentLayer\" />;\n\nconst startViewDateBaseComputed = ({ viewCellsData }) => startViewDateCore(viewCellsData);\nconst endViewDateBaseComputed = ({ viewCellsData }) => endViewDateCore(viewCellsData);\n\nconst TimeTablePlaceholder = () => <TemplatePlaceholder name=\"timeTable\" />;\nconst DayScalePlaceholder = () => <TemplatePlaceholder name=\"dayScale\" />;\nconst DayScaleEmptyCellPlaceholder = () => <TemplatePlaceholder name=\"dayScaleEmptyCell\" />;\n\nconst GroupingPanelPlaceholder = () => <TemplatePlaceholder name=\"groupingPanel\" />;\n\nclass BasicViewBase extends React.PureComponent<BasicViewProps, BasicViewState> {\n  state = {\n    timeTableElementsMeta: {},\n    scrollingStrategy: {\n      topBoundary: 0,\n      bottomBoundary: 0,\n      leftBoundary: 0,\n      rightBoundary: 0,\n      changeVerticalScroll: () => undefined,\n      changeHorizontalScroll: () => undefined,\n    },\n    previousTimeTableCell: null,\n    // The key has to be generated every time the TimeTableCell is updated to rerender TimeTable\n    // and, consequently, update timeTableElementsMeta\n    timeTableLayoutKey: 0,\n  };\n\n  static getDerivedStateFromProps(\n    props: BasicViewProps, state: BasicViewState,\n  ): BasicViewState | null {\n\n    if (props.timeTableCellComponent !== state.previousTimeTableCell) {\n      return {\n        ...state,\n        previousTimeTableCell: props.timeTableCellComponent,\n        timeTableLayoutKey: Math.random(),\n      };\n    }\n    return null;\n  }\n\n  scrollingStrategyComputed = memoize((viewName, scrollingStrategy) => getters =>\n    computed(getters, viewName!, () => scrollingStrategy, getters.scrollingStrategy));\n\n  timeTableElementsMetaComputed = memoize((viewName, timeTableElementsMeta) => getters =>\n    computed(getters, viewName!, () => timeTableElementsMeta, getters.timeTableElementsMeta));\n\n  intervalCountComputed = memoize((viewName, intervalCount) => getters =>\n    computed(getters, viewName!, () => intervalCount, getters.intervalCount));\n\n  cellDurationComputed = memoize((viewName, cellDuration) => getters =>\n    computed(getters, viewName, () => cellDuration, getters.cellDuration));\n\n  excludedDaysComputed = memoize((viewName, excludedDays) => getters => computed(\n    getters, viewName!, () => excludedDays, getters.excludedDays,\n  ));\n\n  availableViewsComputed = memoize((viewName, viewDisplayName) => ({ availableViews }) =>\n    availableViewsCore(availableViews, viewName!, viewDisplayName));\n\n  currentViewComputed = memoize((viewName, viewDisplayName, type) => ({ currentView }) => (\n    currentView && currentView.name !== viewName\n      ? currentView\n      : { name: viewName, type, displayName: viewDisplayName }\n  ));\n\n  endViewDateComputed: ComputedFn = (getters) => {\n    const { name: viewName } = this.props;\n    return computed(\n      getters, viewName!, endViewDateBaseComputed, getters.endViewDate,\n    );\n  }\n\n  startViewDateComputed: ComputedFn = (getters) => {\n    const { name: viewName } = this.props;\n    return computed(\n      getters, viewName!, startViewDateBaseComputed, getters.startViewDate,\n    );\n  }\n\n  viewCellsDataComputed = memoize((\n    viewName, cellDuration, startDayHour, endDayHour, viewCellsDataBaseComputed,\n  ) => getters => computed(\n    getters,\n    viewName,\n    viewCellsDataBaseComputed(cellDuration, startDayHour, endDayHour),\n    getters.viewCellsData,\n  ));\n\n  timeTableAppointmentsComputed = memoize((\n    viewName, cellDuration, calculateAppointmentsIntervals,\n  ) => getters => computed(\n      getters,\n      viewName,\n      calculateAppointmentsIntervals(cellDuration),\n      getters.timeTableAppointments,\n    ));\n\n  updateCellElementsMeta = memoize((cellElementsMeta) => {\n    this.setState({ timeTableElementsMeta: cellElementsMeta });\n  });\n\n  setScrollingStrategy = (scrollingStrategy: ScrollingStrategy) => {\n    this.setState({ scrollingStrategy });\n  }\n\n  render() {\n    const {\n      name: viewName,\n      intervalCount,\n      displayName,\n      type,\n      excludedDays,\n      cellDuration,\n      startDayHour,\n      endDayHour,\n      viewCellsDataComputed,\n      calculateAppointmentsIntervals,\n      dayScaleCellComponent,\n      dayScaleRowComponent,\n      dayScaleLayoutComponent: DayScale,\n      timeTableCellComponent: TimeTableCell,\n      timeTableLayoutComponent: TimeTableLayout,\n      timeTableRowComponent,\n      appointmentLayerComponent: AppointmentLayer,\n      dayScaleEmptyCellComponent: DayScaleEmptyCell,\n      layoutProps,\n      layoutComponent: Layout,\n    } = this.props;\n    const { timeTableElementsMeta, scrollingStrategy, timeTableLayoutKey } = this.state;\n    const viewDisplayName = displayName || viewName;\n\n    return (\n      <Plugin name=\"basicView\">\n        <Getter\n          name=\"availableViews\"\n          computed={this.availableViewsComputed(viewName, viewDisplayName)}\n        />\n        <Getter\n          name=\"currentView\"\n          computed={this.currentViewComputed(viewName, viewDisplayName, type)}\n        />\n        <Getter\n          name=\"intervalCount\"\n          computed={this.intervalCountComputed(viewName, intervalCount)}\n        />\n        <Getter name=\"excludedDays\" computed={this.excludedDaysComputed(viewName, excludedDays)} />\n        <Getter\n          name=\"viewCellsData\"\n          computed={this.viewCellsDataComputed(\n            viewName, cellDuration, startDayHour, endDayHour, viewCellsDataComputed,\n          )}\n        />\n        <Getter name=\"startViewDate\" computed={this.startViewDateComputed} />\n        <Getter name=\"endViewDate\" computed={this.endViewDateComputed} />\n        <Getter\n          name=\"cellDuration\"\n          computed={this.cellDurationComputed(viewName, cellDuration)}\n        />\n\n        <Getter\n          name=\"timeTableElementsMeta\"\n          computed={this.timeTableElementsMetaComputed(viewName, timeTableElementsMeta)}\n        />\n        <Getter\n          name=\"scrollingStrategy\"\n          computed={this.scrollingStrategyComputed(viewName, scrollingStrategy)}\n        />\n\n        <Getter\n          name=\"timeTableAppointments\"\n          computed={this.timeTableAppointmentsComputed(\n            viewName, cellDuration, calculateAppointmentsIntervals,\n          )}\n        />\n\n        <Template name=\"body\">\n          { (params: any) =>\n            <TemplateConnector>\n              {({ currentView, groupOrientation, groups }) => {\n                if (currentView.name !== viewName) return <TemplatePlaceholder />;\n                const isVerticalGrouping = groupOrientation?.(viewName)\n                  === VERTICAL_GROUP_ORIENTATION;\n                return (\n                  <Layout\n                    forwardedRef={params?.forwardedRef}\n                    dayScaleComponent={DayScalePlaceholder}\n                    timeTableComponent={TimeTablePlaceholder}\n                    setScrollingStrategy={this.setScrollingStrategy}\n                    groupingPanelComponent={\n                      isVerticalGrouping ? GroupingPanelPlaceholder : undefined\n                    }\n                    groupingPanelSize={isVerticalGrouping ? groups?.length : 0}\n                    dayScaleEmptyCellComponent={DayScaleEmptyCellPlaceholder}\n                    {...layoutProps}\n                  />\n                );\n              }}\n            </TemplateConnector>\n          }\n        </Template>\n\n        <Template name=\"dayScale\">\n          <TemplateConnector>\n            {({ currentView, viewCellsData, formatDate, groupByDate, groupOrientation }) => {\n              if (currentView.name !== viewName) return <TemplatePlaceholder />;\n              const groupByDateEnabled = groupByDate?.(viewName);\n              const isHorizontalGrouping = groupOrientation?.(viewName)\n                === HORIZONTAL_GROUP_ORIENTATION;\n              return (\n                <DayScale\n                  cellComponent={dayScaleCellComponent}\n                  rowComponent={dayScaleRowComponent}\n                  groupingPanelComponent={\n                    isHorizontalGrouping ? GroupingPanelPlaceholder : undefined\n                  }\n                  cellsData={viewCellsData}\n                  formatDate={formatDate}\n                  groupedByDate={groupByDateEnabled}\n                />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"cell\">\n          {params => (\n            <TemplateConnector>\n              {({ currentView }) => {\n                if (currentView.name !== viewName) return <TemplatePlaceholder params={params} />;\n                return (\n                  <TimeTableCell {...params} />\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"timeTable\">\n          {(params: any) => (\n            <TemplateConnector>\n              {({ formatDate, currentView, viewCellsData }) => {\n                if (currentView.name !== viewName) return <TemplatePlaceholder />;\n                return (\n                  <>\n                    <TimeTableLayout\n                      cellsData={viewCellsData}\n                      rowComponent={timeTableRowComponent}\n                      cellComponent={CellPlaceholder}\n                      formatDate={formatDate}\n                      setCellElementsMeta={this.updateCellElementsMeta}\n                      key={timeTableLayoutKey}\n                      {...params}\n                    />\n                    <AppointmentLayer>\n                      <TimeTableAppointmentLayer />\n                    </AppointmentLayer>\n                  </>\n                );\n              }}\n          </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"dayScaleEmptyCell\">\n          <TemplateConnector>\n            {({ currentView }) => {\n              if (currentView.name !== viewName || !DayScaleEmptyCell) {\n                return <TemplatePlaceholder />;\n              }\n              return (\n                <DayScaleEmptyCell />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\nexport const BasicView: React.ComponentType<BasicViewProps> = BasicViewBase;\n","import * as React from 'react';\nimport {\n  Template,\n  Plugin,\n  TemplateConnector,\n  TemplatePlaceholder,\n  Getter,\n} from '@devexpress/dx-react-core';\nimport {\n  calculateWeekDateIntervals,\n  getTimeTableHeight,\n  timeCellsData as timeCellsDataCore,\n  computed,\n} from '@devexpress/dx-scheduler-core';\nimport { BasicView } from './basic-view';\nimport { CommonVerticalViewProps } from '../types';\nimport { memoize } from '@devexpress/dx-core';\n\nconst calculateAppointmentsIntervalsBaseComputed = cellDuration => ({\n  appointments, startViewDate, endViewDate, excludedDays,\n}) => calculateWeekDateIntervals(\n  appointments, startViewDate, endViewDate, excludedDays, cellDuration,\n);\nconst timeCellsDataComputed = (startDayHour, endDayHour) => ({\n  viewCellsData, cellDuration,\n}) => timeCellsDataCore(viewCellsData, startDayHour, endDayHour, cellDuration, Date.now());\n\nconst TimeScalePlaceholder = () => <TemplatePlaceholder name=\"timeScale\" />;\n\nclass VericalViewBase extends React.PureComponent<CommonVerticalViewProps> {\n  timeCellsDataComputed = memoize((viewName, startDayHour, endDayHour) => getters => computed(\n    getters,\n    viewName,\n    timeCellsDataComputed(startDayHour, endDayHour),\n    getters.timeCellsData,\n  ));\n\n  render() {\n    const {\n      layoutComponent,\n      dayScaleEmptyCellComponent,\n      timeScaleLayoutComponent: TimeScale,\n      timeScaleLabelComponent: TimeScaleLabel,\n      timeScaleTickCellComponent,\n      timeScaleTicksRowComponent,\n      dayScaleLayoutComponent,\n      dayScaleCellComponent,\n      dayScaleRowComponent,\n      timeTableLayoutComponent,\n      timeTableRowComponent,\n      timeTableCellComponent,\n      cellDuration,\n      excludedDays,\n      name: viewName,\n      appointmentLayerComponent,\n      intervalCount,\n      displayName,\n      startDayHour,\n      endDayHour,\n      viewCellsDataComputed,\n      type,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"WeekView\"\n      >\n        <BasicView\n          viewCellsDataComputed={viewCellsDataComputed}\n          type={type}\n          cellDuration={cellDuration}\n          name={viewName}\n          intervalCount={intervalCount}\n          displayName={displayName}\n          startDayHour={startDayHour}\n          endDayHour={endDayHour}\n          excludedDays={excludedDays}\n          calculateAppointmentsIntervals={calculateAppointmentsIntervalsBaseComputed}\n          dayScaleEmptyCellComponent={dayScaleEmptyCellComponent}\n          dayScaleLayoutComponent={dayScaleLayoutComponent}\n          dayScaleCellComponent={dayScaleCellComponent}\n          dayScaleRowComponent={dayScaleRowComponent}\n          timeTableCellComponent={timeTableCellComponent}\n          timeTableLayoutComponent={timeTableLayoutComponent}\n          timeTableRowComponent={timeTableRowComponent}\n          appointmentLayerComponent={appointmentLayerComponent}\n          layoutComponent={layoutComponent}\n          layoutProps={{\n            timeScaleComponent: TimeScalePlaceholder,\n          }}\n        />\n\n        <Getter\n          name=\"timeCellsData\"\n          computed={this.timeCellsDataComputed(viewName, startDayHour, endDayHour)}\n        />\n\n        <Template name=\"timeScale\">\n          {(params: any) => (\n            <TemplateConnector>\n              {({\n                currentView, timeCellsData, groups, formatDate,\n                groupOrientation: getGroupOrientation,\n                timeTableElementsMeta,\n              }) => {\n                if (currentView.name !== viewName) return <TemplatePlaceholder />;\n                const groupOrientation = getGroupOrientation?.(viewName);\n\n                return (\n                  <TimeScale\n                    labelComponent={TimeScaleLabel}\n                    tickCellComponent={timeScaleTickCellComponent}\n                    rowComponent={timeScaleTicksRowComponent}\n                    cellsData={timeCellsData}\n                    formatDate={formatDate}\n                    groups={groups}\n                    groupOrientation={groupOrientation}\n                    height={getTimeTableHeight(timeTableElementsMeta)}\n                    {...params}\n                  />\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\nexport const VerticalView: React.ComponentType<CommonVerticalViewProps> = VericalViewBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport {\n  viewCellsData as viewCellsDataCore,\n  VIEW_TYPES,\n} from '@devexpress/dx-scheduler-core';\nimport { VerticalViewProps } from '../types';\nimport { VerticalView } from './vertical-view';\n\nconst viewCellsDataBaseComputed = (\n  cellDuration, startDayHour, endDayHour,\n) => ({ currentDate, intervalCount }) => {\n  return viewCellsDataCore(\n    currentDate, undefined,\n    intervalCount, [],\n    startDayHour!, endDayHour!, cellDuration!,\n    Date.now(),\n  );\n};\n\nclass DayViewBase extends React.PureComponent<VerticalViewProps> {\n  static defaultProps: Partial<VerticalViewProps> = {\n    name: 'Day',\n    startDayHour: 0,\n    endDayHour: 24,\n    cellDuration: 30,\n    intervalCount: 1,\n  };\n\n  static components: PluginComponents = {\n    layoutComponent: 'Layout',\n    layoutContainer: 'LayoutContainer',\n    appointmentLayerComponent: 'AppointmentLayer',\n    dayScaleEmptyCellComponent: 'DayScaleEmptyCell',\n    timeScaleLayoutComponent: 'TimeScaleLayout',\n    timeScaleLabelComponent: 'TimeScaleLabel',\n    timeScaleTickCellComponent: 'TimeScaleTickCell',\n    timeScaleTicksRowComponent: 'TimeScaleTicksRow',\n    dayScaleLayoutComponent: 'DayScaleLayout',\n    dayScaleCellComponent: 'DayScaleCell',\n    dayScaleRowComponent: 'DayScaleRow',\n    timeTableContainerComponent: 'TimeTableContainer',\n    timeTableLayoutComponent: 'TimeTableLayout',\n    timeTableCellComponent: 'TimeTableCell',\n    timeTableRowComponent: 'TimeTableRow',\n  };\n\n  render() {\n    const {\n      layoutComponent,\n      dayScaleEmptyCellComponent: DayScaleEmptyCell,\n      timeScaleLayoutComponent,\n      timeScaleLabelComponent,\n      timeScaleTickCellComponent,\n      timeScaleTicksRowComponent,\n      dayScaleLayoutComponent,\n      dayScaleCellComponent,\n      dayScaleRowComponent,\n      timeTableLayoutComponent,\n      timeTableRowComponent,\n      timeTableCellComponent,\n      appointmentLayerComponent,\n      cellDuration,\n      name: viewName,\n      intervalCount,\n      displayName,\n      startDayHour,\n      endDayHour,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"DayView\"\n      >\n        <VerticalView\n          viewCellsDataComputed={viewCellsDataBaseComputed}\n          type={VIEW_TYPES.DAY}\n          cellDuration={cellDuration}\n          name={viewName}\n          intervalCount={intervalCount}\n          displayName={displayName}\n          startDayHour={startDayHour}\n          endDayHour={endDayHour}\n          dayScaleEmptyCellComponent={DayScaleEmptyCell}\n          dayScaleLayoutComponent={dayScaleLayoutComponent}\n          dayScaleCellComponent={dayScaleCellComponent}\n          dayScaleRowComponent={dayScaleRowComponent}\n          timeTableCellComponent={timeTableCellComponent}\n          timeTableLayoutComponent={timeTableLayoutComponent}\n          timeTableRowComponent={timeTableRowComponent}\n          appointmentLayerComponent={appointmentLayerComponent}\n          layoutComponent={layoutComponent}\n          timeScaleLayoutComponent={timeScaleLayoutComponent}\n          timeScaleLabelComponent={timeScaleLabelComponent}\n          timeScaleTickCellComponent={timeScaleTickCellComponent}\n          timeScaleTicksRowComponent={timeScaleTicksRowComponent}\n        />\n      </Plugin >\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\n/*** A plugin that renders Scheduler data for a day. This plugin arranges appointments from top to bottom.\n * If their time intervals overlap, their width is decreased and they are placed next to each other.\n * */\nexport const DayView: React.ComponentType<VerticalViewProps> = DayViewBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport {\n  viewCellsData as viewCellsDataCore,\n  VIEW_TYPES,\n} from '@devexpress/dx-scheduler-core';\nimport { WeekViewProps } from '../types';\nimport { VerticalView } from './vertical-view';\n\nconst DAYS_IN_WEEK = 7;\nconst viewCellsDataBaseComputed = (\n  cellDuration, startDayHour, endDayHour,\n) => ({ firstDayOfWeek, intervalCount, excludedDays, currentDate }) => {\n  return viewCellsDataCore(\n    currentDate, firstDayOfWeek,\n    intervalCount! * DAYS_IN_WEEK, excludedDays!,\n    startDayHour!, endDayHour!, cellDuration!,\n    Date.now(),\n  );\n};\n\nclass WeekViewBase extends React.PureComponent<WeekViewProps> {\n  static defaultProps: Partial<WeekViewProps> = {\n    startDayHour: 0,\n    endDayHour: 24,\n    cellDuration: 30,\n    intervalCount: 1,\n    excludedDays: [],\n    name: 'Week',\n  };\n\n  static components: PluginComponents = {\n    layoutComponent: 'Layout',\n    layoutContainerComponent: 'LayoutContainer',\n    appointmentLayerComponent: 'AppointmentLayer',\n    dayScaleEmptyCellComponent: 'DayScaleEmptyCell',\n    timeScaleLayoutComponent: 'TimeScaleLayout',\n    timeScaleLabelComponent: 'TimeScaleLabel',\n    timeScaleTickCellComponent: 'TimeScaleTickCell',\n    timeScaleTicksRowComponent: 'TimeScaleTicksRow',\n    dayScaleLayoutComponent: 'DayScaleLayout',\n    dayScaleCellComponent: 'DayScaleCell',\n    dayScaleRowComponent: 'DayScaleRow',\n    timeTableContainerComponent: 'TimeTableContainer',\n    timeTableLayoutComponent: 'TimeTableLayout',\n    timeTableCellComponent: 'TimeTableCell',\n    timeTableRowComponent: 'TimeTableRow',\n  };\n\n  render() {\n    const {\n      layoutComponent,\n      dayScaleEmptyCellComponent,\n      timeScaleLayoutComponent,\n      timeScaleLabelComponent,\n      timeScaleTickCellComponent,\n      timeScaleTicksRowComponent,\n      dayScaleLayoutComponent,\n      dayScaleCellComponent,\n      dayScaleRowComponent,\n      timeTableLayoutComponent,\n      timeTableRowComponent,\n      timeTableCellComponent,\n      cellDuration,\n      excludedDays,\n      name: viewName,\n      appointmentLayerComponent,\n      intervalCount,\n      displayName,\n      startDayHour,\n      endDayHour,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"WeekView\"\n      >\n        <VerticalView\n          viewCellsDataComputed={viewCellsDataBaseComputed}\n          type={VIEW_TYPES.WEEK}\n          cellDuration={cellDuration}\n          name={viewName}\n          intervalCount={intervalCount}\n          displayName={displayName}\n          startDayHour={startDayHour}\n          endDayHour={endDayHour}\n          excludedDays={excludedDays}\n          dayScaleEmptyCellComponent={dayScaleEmptyCellComponent}\n          dayScaleLayoutComponent={dayScaleLayoutComponent}\n          dayScaleCellComponent={dayScaleCellComponent}\n          dayScaleRowComponent={dayScaleRowComponent}\n          timeTableCellComponent={timeTableCellComponent}\n          timeTableLayoutComponent={timeTableLayoutComponent}\n          timeTableRowComponent={timeTableRowComponent}\n          appointmentLayerComponent={appointmentLayerComponent}\n          layoutComponent={layoutComponent}\n          timeScaleLayoutComponent={timeScaleLayoutComponent}\n          timeScaleLabelComponent={timeScaleLabelComponent}\n          timeScaleTickCellComponent={timeScaleTickCellComponent}\n          timeScaleTicksRowComponent={timeScaleTicksRowComponent}\n        />\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable: max-line-length\n/***\n * A plugin that renders the Scheduler's week view. This plugin arranges appointments from top to bottom.\n * If their time intervals overlap, their width is decreased and they are placed next to each other.\n * */\nexport const WeekView: React.ComponentType<WeekViewProps> = WeekViewBase;\n","import * as React from 'react';\nimport { Plugin, PluginComponents } from '@devexpress/dx-react-core';\nimport { monthCellsData, calculateMonthDateIntervals, VIEW_TYPES } from '@devexpress/dx-scheduler-core';\nimport { BasicView } from './basic-view';\nimport { MonthViewProps } from '../types';\n\nconst viewCellsDataBaseComputed = (\n  cellDuration, startDayHour, endDayHour,\n) => ({ currentDate, firstDayOfWeek, intervalCount }) => monthCellsData(\n  currentDate, firstDayOfWeek, intervalCount!, Date.now(),\n);\nconst calculateAppointmentsIntervalsBaseComputed = cellDuration => ({\n  appointments, startViewDate, endViewDate, excludedDays,\n}) => calculateMonthDateIntervals(\n  appointments, startViewDate, endViewDate,\n);\n\nclass MonthViewBase extends React.PureComponent<MonthViewProps> {\n  static defaultProps: Partial<MonthViewProps> = {\n    intervalCount: 1,\n    name: 'Month',\n  };\n\n  static components: PluginComponents = {\n    layoutComponent: 'Layout',\n    appointmentLayerComponent: 'AppointmentLayer',\n    dayScaleEmptyCellComponent: 'DayScaleEmptyCell',\n    dayScaleLayoutComponent: 'DayScaleLayout',\n    dayScaleCellComponent: 'DayScaleCell',\n    dayScaleRowComponent: 'DayScaleRow',\n    timeTableContainerComponent: 'TimeTableContainer',\n    timeTableLayoutComponent: 'TimeTableLayout',\n    timeTableCellComponent: 'TimeTableCell',\n    timeTableRowComponent: 'TimeTableRow',\n  };\n\n  render() {\n    const {\n      layoutComponent,\n      dayScaleEmptyCellComponent,\n      dayScaleLayoutComponent,\n      dayScaleCellComponent,\n      dayScaleRowComponent,\n      timeTableLayoutComponent,\n      timeTableRowComponent,\n      timeTableCellComponent,\n      appointmentLayerComponent,\n      name: viewName,\n      intervalCount,\n      displayName,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"MonthView\"\n      >\n        <BasicView\n          viewCellsDataComputed={viewCellsDataBaseComputed}\n          type={VIEW_TYPES.MONTH}\n          name={viewName}\n          intervalCount={intervalCount}\n          displayName={displayName}\n          calculateAppointmentsIntervals={calculateAppointmentsIntervalsBaseComputed}\n          dayScaleEmptyCellComponent={dayScaleEmptyCellComponent}\n          dayScaleLayoutComponent={dayScaleLayoutComponent}\n          dayScaleCellComponent={dayScaleCellComponent}\n          dayScaleRowComponent={dayScaleRowComponent}\n          timeTableCellComponent={timeTableCellComponent}\n          timeTableLayoutComponent={timeTableLayoutComponent}\n          timeTableRowComponent={timeTableRowComponent}\n          appointmentLayerComponent={appointmentLayerComponent}\n          layoutComponent={layoutComponent}\n        />\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable: max-line-length\n/***\n * A plugin that renders Scheduler data for a month. This plugin arranges appointments from left to right.\n * An appointment's size depends on its duration in days.\n * However, it occupies the entire day cell if an appointment lasts only for several hours or minutes.\n * The time scale and all-day panel are not available in this view.\n * */\nexport const MonthView: React.ComponentType<MonthViewProps> = MonthViewBase;\n","import * as React from 'react';\nimport {\n  Template,\n  Plugin,\n  TemplatePlaceholder,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport { ToolbarProps } from '../types';\n\nclass ToolbarBase extends React.PureComponent<ToolbarProps> {\n  static components: PluginComponents = {\n    rootComponent: 'Root',\n    flexibleSpaceComponent: 'FlexibleSpace',\n  };\n  render() {\n    const {\n      rootComponent: Root,\n      flexibleSpaceComponent: FlexibleSpaceComponent,\n    } = this.props;\n    return (\n      <Plugin\n        name=\"Toolbar\"\n      >\n        <Template name=\"header\">\n          <Root>\n            <TemplatePlaceholder name=\"toolbarContent\" />\n          </Root>\n          <TemplatePlaceholder />\n        </Template>\n        <Template name=\"toolbarContent\">\n          <FlexibleSpaceComponent />\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the Scheduler's toolbar. */\nexport const Toolbar: React.ComponentType<ToolbarProps> = ToolbarBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport {\n  monthCellsData,\n  viewBoundText,\n} from '@devexpress/dx-scheduler-core';\nimport { memoize } from '@devexpress/dx-core';\n\nimport { DateNavigatorProps, DateNavigatorState } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Toolbar' },\n  { name: 'ViewState' },\n];\n\nconst navigate = (action, currentView, intervalCount) => (direction, nextDate) => action({\n  direction,\n  nextDate,\n  amount: intervalCount,\n  step: currentView.type,\n});\n\nclass DateNavigatorBase extends React.PureComponent<DateNavigatorProps, DateNavigatorState> {\n  target!: React.ReactInstance;\n\n  state = {\n    visible: false,\n  };\n  static components: PluginComponents = {\n    rootComponent: 'Root',\n    overlayComponent: 'Overlay',\n    openButtonComponent: 'OpenButton',\n    navigationButtonComponent: 'NavigationButton',\n    calendarComponent: 'Calendar',\n    calendarRowComponent: 'CalendarRow',\n    calendarCellComponent: 'CalendarCell',\n    calendarHeaderRowComponent: 'CalendarHeaderRow',\n    calendarHeaderCellComponent: 'CalendarHeaderCell',\n    calendarTextComponent: 'CalendarText',\n    calendarNavigatorComponent: 'CalendarNavigator',\n    calendarNavigationButtonComponent: 'CalendarNavigationButton',\n  };\n\n  setRootRef = (target: React.ReactInstance) => {\n    this.target = target;\n  }\n\n  handleVisibilityToggle = () => {\n    this.setState(prevState => ({ visible: !prevState.visible }));\n  }\n\n  handleHide = () => {\n    this.setState({ visible: false });\n  }\n\n  navigateAction = memoize((changeCurrentDate, currentView, intervalCount, navigateAction) =>\n    navigateAction(changeCurrentDate, currentView, intervalCount));\n\n  render() {\n    const {\n      rootComponent: Root,\n      overlayComponent: Overlay,\n      openButtonComponent: OpenButton,\n      navigationButtonComponent: NavigationButton,\n      calendarComponent: Calendar,\n      calendarRowComponent: CalendarRow,\n      calendarCellComponent: CalendarCell,\n      calendarHeaderRowComponent: CalendarHeaderRow,\n      calendarHeaderCellComponent: CalendarHeaderCell,\n      calendarTextComponent: CalendarText,\n      calendarNavigationButtonComponent: CalendarNavigationButton,\n      calendarNavigatorComponent: CalendarNavigator,\n    } = this.props;\n\n    const { visible } = this.state;\n    return (\n      <Plugin\n        name=\"DateNavigator\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplateConnector>\n            {({\n              currentDate,\n              startViewDate,\n              endViewDate,\n              firstDayOfWeek,\n              currentView,\n              intervalCount,\n              formatDate,\n            }, {\n              changeCurrentDate,\n            }) => {\n              const navigateAction = this.navigateAction(\n                changeCurrentDate, currentView, intervalCount, navigate,\n              );\n              const calendarDateChanged = (nextDate) => {\n                navigateAction(undefined, nextDate);\n                this.handleHide();\n              };\n              const navigatorText = viewBoundText(\n                startViewDate,\n                endViewDate,\n                currentView.type,\n                currentDate,\n                intervalCount,\n                formatDate,\n              );\n              return (\n                <React.Fragment>\n                  <Root\n                    navigationButtonComponent={NavigationButton}\n                    openButtonComponent={OpenButton}\n                    navigatorText={navigatorText}\n                    rootRef={this.setRootRef}\n                    onVisibilityToggle={this.handleVisibilityToggle}\n                    onNavigate={navigateAction}\n                  />\n                  <Overlay\n                    visible={visible}\n                    target={this.target}\n                    onHide={this.handleHide}\n                  >\n                    <Calendar\n                      selectedDate={currentDate}\n                      firstDayOfWeek={firstDayOfWeek}\n                      getCells={monthCellsData}\n                      textComponent={CalendarText}\n                      navigationButtonComponent={CalendarNavigationButton}\n                      rowComponent={CalendarRow}\n                      cellComponent={CalendarCell}\n                      headerRowComponent={CalendarHeaderRow}\n                      headerCellComponent={CalendarHeaderCell}\n                      navigatorComponent={CalendarNavigator}\n                      onSelectedDateChange={calendarDateChanged}\n                      formatDate={formatDate}\n                    />\n                  </Overlay>\n                </React.Fragment>\n              );\n            }}\n          </TemplateConnector>\n          <TemplatePlaceholder />\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the Scheduler’s date navigator. */\nexport const DateNavigator: React.ComponentType<DateNavigatorProps> = DateNavigatorBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport { ViewSwitcherProps } from '../types/view-switcher';\n\nconst pluginDependencies = [\n  { name: 'Toolbar' },\n  { name: 'ViewState' },\n];\n\nclass ViewSwitcherBase extends React.PureComponent<ViewSwitcherProps> {\n  static components: PluginComponents = {\n    switcherComponent: 'Switcher',\n  };\n\n  render() {\n    const { switcherComponent: Switcher } = this.props;\n\n    return (\n      <Plugin\n        name=\"ViewSwitcher\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {({\n              currentView,\n              availableViews,\n            }, {\n              setCurrentViewName,\n            }) => (\n              <Switcher\n                currentView={currentView}\n                availableViews={availableViews}\n                onChange={setCurrentViewName}\n              />\n            )}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the Scheduler's view switcher. */\nexport const ViewSwitcher: React.ComponentType<ViewSwitcherProps> = ViewSwitcherBase;\n","import * as React from 'react';\nimport {\n  Plugin, Template, TemplatePlaceholder, TemplateConnector, PluginComponents,\n} from '@devexpress/dx-react-core';\nimport { createClickHandlers, memoize } from '@devexpress/dx-core';\nimport {\n  POSITION_START, POSITION_END, VERTICAL_TYPE,\n  getVerticalRectByAppointmentData, calculateRectByDateAndGroupIntervals,\n  getAppointmentStyle, HORIZONTAL_TYPE, getHorizontalRectByAppointmentData,\n  isAllDayElementsMetaActual, isTimeTableElementsMetaActual,\n  HORIZONTAL_GROUP_ORIENTATION, VIEW_TYPES, getGroupsLastRow, Rect,\n} from '@devexpress/dx-scheduler-core';\n\nimport { AppointmentsProps } from '../types';\n\nconst AppointmentPlaceholder = params => <TemplatePlaceholder name=\"appointment\" params={params} />;\n\nconst renderAppointments = rects => rects.map(({\n  dataItem, type: rectType, fromPrev, toNext,\n  durationType, resources, key, ...geometry\n}) => (\n  <AppointmentPlaceholder\n    key={key}\n    type={rectType}\n    data={dataItem}\n    fromPrev={fromPrev}\n    toNext={toNext}\n    durationType={durationType}\n    resources={resources}\n    style={getAppointmentStyle(geometry as Rect)}\n  />\n));\n\nconst pluginDependencies = [\n  { name: 'DayView', optional: true },\n  { name: 'WeekView', optional: true },\n  { name: 'MonthView', optional: true },\n];\n\nclass AppointmentsBase extends React.PureComponent<AppointmentsProps> {\n  static components: PluginComponents = {\n    splitIndicatorComponent: 'SplitIndicator',\n    containerComponent: 'Container',\n    appointmentComponent: 'Appointment',\n    appointmentContentComponent: 'AppointmentContent',\n    recurringIconComponent: 'RecurringIcon',\n  };\n  static defaultProps: Partial<AppointmentsProps> = {\n    placeAppointmentsNextToEachOther: false,\n  };\n\n  updateTimeTableAppointments = memoize((\n    timeTableAppointments, viewCellsData, timeTableElementsMeta, currentView,\n    startViewDate, endViewDate, cellDuration, groups, getGroupOrientation, groupByDate,\n    placeAppointmentsNextToEachOther,\n  ) => {\n    if (!isTimeTableElementsMetaActual(viewCellsData, timeTableElementsMeta)) return null;\n\n    const groupOrientation = getGroupOrientation\n      ? getGroupOrientation(currentView?.name)\n      : HORIZONTAL_GROUP_ORIENTATION;\n    const groupCount = groups ? getGroupsLastRow(groups).length : 1;\n\n    let appointmentType = { growDirection: VERTICAL_TYPE, multiline: false };\n    let getRects = getVerticalRectByAppointmentData as any;\n    if (currentView.type === VIEW_TYPES.MONTH) {\n      appointmentType = { growDirection: HORIZONTAL_TYPE, multiline: true };\n      getRects = getHorizontalRectByAppointmentData;\n    }\n\n    return renderAppointments(calculateRectByDateAndGroupIntervals(\n      appointmentType, timeTableAppointments, getRects,\n      {\n        startViewDate, endViewDate, cellDuration,\n        viewCellsData, cellElementsMeta: timeTableElementsMeta,\n        placeAppointmentsNextToEachOther,\n      },\n      {\n        groupOrientation,\n        groupedByDate: groupByDate?.(currentView?.name),\n        groupCount,\n      },\n    ));\n  });\n\n  updateAllDayAppointments = memoize((\n    allDayAppointments, viewCellsData, allDayElementsMeta, currentView,\n    startViewDate, endViewDate, groups, getGroupOrientation, groupByDate,\n  ) => {\n    const groupOrientation = getGroupOrientation\n      ? getGroupOrientation(currentView?.name)\n      : HORIZONTAL_GROUP_ORIENTATION;\n    const groupCount = groups ? getGroupsLastRow(groups).length : 1;\n\n    if (!isAllDayElementsMetaActual(\n      viewCellsData, allDayElementsMeta, groupOrientation, groupCount,\n    )) {\n      return null;\n    }\n\n    return renderAppointments(calculateRectByDateAndGroupIntervals(\n      { growDirection: HORIZONTAL_TYPE,  multiline: false },\n      allDayAppointments,\n      getHorizontalRectByAppointmentData,\n      {\n        startViewDate, endViewDate,\n        viewCellsData, cellElementsMeta: allDayElementsMeta,\n      },\n      {\n        groupOrientation,\n        groupedByDate: groupByDate?.(currentView?.name),\n        groupCount,\n      },\n    ));\n  });\n\n  render() {\n    const {\n      splitIndicatorComponent: SplitIndicator,\n      appointmentComponent: Appointment,\n      appointmentContentComponent: AppointmentContent,\n      containerComponent: Container,\n      recurringIconComponent,\n      placeAppointmentsNextToEachOther,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"Appointments\"\n        dependencies={pluginDependencies}\n      >\n        <Template\n          name=\"timeTableAppointmentLayer\"\n        >\n          <TemplateConnector>\n            {({\n              timeTableAppointments, viewCellsData, timeTableElementsMeta, currentView,\n              startViewDate, endViewDate, cellDuration, groupOrientation,  groups, groupByDate,\n            }) => this.updateTimeTableAppointments(\n              timeTableAppointments, viewCellsData, timeTableElementsMeta, currentView,\n              startViewDate, endViewDate, cellDuration, groups, groupOrientation, groupByDate,\n              placeAppointmentsNextToEachOther,\n            )}\n          </TemplateConnector>\n        </Template>\n        <Template\n          name=\"allDayAppointmentLayer\"\n        >\n          <TemplateConnector>\n            {({\n              allDayAppointments, viewCellsData, allDayElementsMeta,\n              startViewDate, endViewDate, groupOrientation, currentView, groups, groupByDate,\n            }) => this.updateAllDayAppointments(\n              allDayAppointments, viewCellsData, allDayElementsMeta, currentView,\n              startViewDate, endViewDate, groups, groupOrientation, groupByDate,\n            )}\n          </TemplateConnector>\n        </Template>\n        <Template\n          name=\"appointment\"\n        >\n          {({ style, ...params }: any) => (\n            <TemplateConnector>\n              {({ formatDate }) => (\n                <Container style={style}>\n                  <TemplatePlaceholder\n                    name=\"appointmentTop\"\n                    params={{ data: params.data, type: params.type, slice: params.fromPrev }}\n                  />\n                  <TemplatePlaceholder\n                    name=\"appointmentContent\"\n                    params={{ ...params, formatDate }}\n                  />\n                  <TemplatePlaceholder\n                    name=\"appointmentBottom\"\n                    params={{ data: params.data, type: params.type, slice: params.toNext }}\n                  />\n                </Container>\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"appointmentContent\">\n          {({\n            onClick, onDoubleClick, formatDate,\n            data, type, fromPrev, toNext,\n            durationType, resources, forwardedRef,\n            ...restParams\n          }: any) => (\n            <Appointment\n              forwardedRef={forwardedRef}\n              data={data}\n              resources={resources}\n              {...createClickHandlers(onClick, onDoubleClick)}\n              {...restParams}\n            >\n              {fromPrev && <SplitIndicator position={POSITION_START} appointmentType={type} />}\n              <AppointmentContent\n                data={data}\n                type={type}\n                durationType={durationType}\n                recurringIconComponent={recurringIconComponent}\n                formatDate={formatDate}\n                resources={resources}\n              />\n              {toNext && <SplitIndicator position={POSITION_END} appointmentType={type} />}\n            </Appointment>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders appointments. */\nexport const Appointments: React.ComponentType<AppointmentsProps> = AppointmentsBase;\n","import * as React from 'react';\nimport { getMessagesFormatter, memoize } from '@devexpress/dx-core';\nimport {\n  Getter,\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport {\n  allDayCells, calculateAllDayDateIntervals,\n  VERTICAL_GROUP_ORIENTATION, VIEW_TYPES,\n} from '@devexpress/dx-scheduler-core';\nimport moment from 'moment';\n\nimport { AllDayPanelProps, AllDayPanelState } from '../types';\n\nconst isMonthView = currentView => currentView.type === VIEW_TYPES.MONTH;\nconst isVerticalGrouping = (\n  currentView, groupOrientation,\n) => groupOrientation?.(currentView.name) === VERTICAL_GROUP_ORIENTATION;\n\nconst pluginDependencies = [\n  { name: 'DayView', optional: true },\n  { name: 'WeekView', optional: true },\n];\nconst defaultMessages = {\n  allDay: 'All Day',\n};\nconst AllDayAppointmentLayerPlaceholder = () =>\n  <TemplatePlaceholder name=\"allDayAppointmentLayer\" />;\nconst AllDayPanelPlaceholder = params => <TemplatePlaceholder name=\"allDayPanel\" params={params} />;\nconst CellPlaceholder = params => <TemplatePlaceholder name=\"allDayPanelCell\" params={params} />;\nconst AllDayTitlePlaceholder = params => <TemplatePlaceholder name=\"allDayTitle\" params={params} />;\n\nclass AllDayPanelBase extends React.PureComponent<AllDayPanelProps, AllDayPanelState> {\n  state: AllDayPanelState = {\n    elementsMeta: {},\n    previousCell: null,\n    // The key has to be generated every time the Cell component is updated to rerender the Layout\n    // and, consequently, update allDayElementsMeta\n    layoutKey: 0,\n  };\n  static defaultProps: Partial<AllDayPanelProps> = {\n    messages: {},\n  };\n  static components: PluginComponents = {\n    appointmentLayerComponent: 'AppointmentLayer',\n    layoutComponent: 'Layout',\n    layoutContainerComponent: 'LayoutContainer',\n    cellComponent: 'Cell',\n    rowComponent: 'Row',\n    titleCellComponent: 'TitleCell',\n    containerComponent: 'Container',\n  };\n\n  static getDerivedStateFromProps(\n    props: AllDayPanelProps, state: AllDayPanelState,\n  ): AllDayPanelState | null {\n    if (props.cellComponent !== state.previousCell) {\n      return {\n        ...state,\n        previousCell: props.cellComponent,\n        layoutKey: Math.random(),\n      };\n    }\n    return null;\n  }\n\n  allDayCellsDataComputed = memoize(({ viewCellsData }) => allDayCells(viewCellsData));\n\n  updateCellElementsMeta = memoize((cellElementsMeta) => {\n    this.setState({ elementsMeta: cellElementsMeta });\n  });\n\n  allDayAppointmentsComputed = memoize(({\n    appointments, startViewDate, endViewDate, excludedDays,\n  }) => {\n    const allDayLeftBound = moment(startViewDate).hours(0).minutes(0).toDate();\n    const allDayRightBound = moment(endViewDate).hours(23).minutes(59).toDate();\n    return calculateAllDayDateIntervals(\n      appointments, allDayLeftBound, allDayRightBound, excludedDays,\n    );\n  });\n\n  allDayPanelExistsComputed = memoize(({\n    currentView,\n  }) => !isMonthView(currentView));\n\n  getMessageFormatter = memoize((messages, allDayPanelDefaultMessages) =>\n    getMessagesFormatter({ ...allDayPanelDefaultMessages, ...messages }));\n\n  render() {\n    const {\n      appointmentLayerComponent: AppointmentLayer,\n      layoutComponent: Layout,\n      cellComponent: Cell,\n      rowComponent,\n      titleCellComponent: TitleCell,\n      containerComponent: Container,\n      messages,\n    } = this.props;\n    const { elementsMeta, layoutKey } = this.state;\n    const getMessage = this.getMessageFormatter(messages, defaultMessages);\n\n    return (\n      <Plugin\n        name=\"AllDayPanel\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"allDayElementsMeta\" value={elementsMeta} />\n        <Getter name=\"allDayCellsData\" computed={this.allDayCellsDataComputed} />\n        <Getter name=\"allDayPanelExists\" computed={this.allDayPanelExistsComputed} />\n        <Getter\n          name=\"allDayAppointments\"\n          computed={this.allDayAppointmentsComputed}\n        />\n\n        <Template name=\"timeTable\">\n          {(params: any) => (\n            <TemplateConnector>\n              {({ currentView, groupOrientation, allDayCellsData }) => {\n                if (isMonthView(currentView)\n                  || !isVerticalGrouping(currentView, groupOrientation)) {\n                  return <TemplatePlaceholder params={...params} />;\n                }\n                return (\n                  <>\n                    <TemplatePlaceholder\n                      params={{\n                        ...params,\n                        allDayCellComponent: CellPlaceholder,\n                        allDayRowComponent: rowComponent,\n                        allDayCellsData,\n                      }}\n                    />\n                    <AppointmentLayer>\n                      <AllDayAppointmentLayerPlaceholder />\n                    </AppointmentLayer>\n                  </>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"dayScaleEmptyCell\">\n          <TemplateConnector>\n            {({ currentView, groupOrientation }) => {\n              if (isMonthView(currentView) || isVerticalGrouping(currentView, groupOrientation)) {\n                return <TemplatePlaceholder />;\n              }\n\n              return (\n                <AllDayTitlePlaceholder />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"timeScale\">\n          {(params: any) => (\n            <TemplateConnector>\n              {({ currentView, groupOrientation }) => {\n                if (isMonthView(currentView)\n                  || !isVerticalGrouping(currentView, groupOrientation)) {\n                  return <TemplatePlaceholder params={...params} />;\n                }\n\n                return (\n                  <TemplatePlaceholder\n                    params={{\n                      ...params,\n                      allDayTitleComponent: AllDayTitlePlaceholder,\n                      showAllDayTitle: true,\n                    }}\n                  />\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"dayScale\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {({ currentView, groupOrientation }) => {\n              if (isMonthView(currentView) || isVerticalGrouping(currentView, groupOrientation)) {\n                return null;\n              }\n\n              return (\n                <Container>\n                  <AllDayPanelPlaceholder />\n                </Container>\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"allDayPanel\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {({\n              currentView, formatDate, allDayCellsData,\n            }) => {\n              if (currentView.type === VIEW_TYPES.MONTH) return null;\n\n              return (\n                <React.Fragment>\n                  <Layout\n                    cellComponent={CellPlaceholder}\n                    rowComponent={rowComponent}\n                    cellsData={allDayCellsData[0]}\n                    setCellElementsMeta={this.updateCellElementsMeta}\n                    formatDate={formatDate}\n                    key={layoutKey}\n                  />\n                  <AppointmentLayer>\n                    <AllDayAppointmentLayerPlaceholder />\n                  </AppointmentLayer>\n                </React.Fragment>\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"allDayTitle\">\n          {(params: any) => <TitleCell getMessage={getMessage} {...params}/>}\n        </Template>\n        <Template name=\"allDayPanelCell\">\n          {(params: any) => <Cell {...params} />}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the All Day Panel. */\nexport const AllDayPanel: React.ComponentType<AllDayPanelProps> = AllDayPanelBase;\n","import * as React from 'react';\nimport {\n  Getter,\n  Action,\n  Plugin,\n  createStateHelper,\n  StateHelper,\n  ActionFn,\n} from '@devexpress/dx-react-core';\nimport {\n  changeCurrentDate,\n  setCurrentViewName,\n  ChangeCurrentDatePayload,\n} from '@devexpress/dx-scheduler-core';\nimport { ViewStateProps, ViewStateState } from '../types';\nimport { memoize } from '@devexpress/dx-core';\n\nclass ViewStateBase extends React.PureComponent<ViewStateProps, ViewStateState> {\n  changeCurrentDate: ActionFn<ChangeCurrentDatePayload>;\n  setCurrentViewName: ActionFn<string>;\n\n  static defaultProps: Partial<ViewStateProps> = {\n    defaultCurrentDate: new Date(),\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      currentDate: props.currentDate || props.defaultCurrentDate,\n      currentViewName: props.currentViewName || props.defaultCurrentViewName,\n    };\n\n    const stateHelper: StateHelper = createStateHelper(\n      this,\n      {\n        currentDate: () => {\n          const { onCurrentDateChange } = this.props;\n          return onCurrentDateChange;\n        },\n        currentViewName: () => {\n          const { onCurrentViewNameChange } = this.props;\n          return onCurrentViewNameChange;\n        },\n      },\n    );\n\n    this.changeCurrentDate = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'currentDate', changeCurrentDate);\n    this.setCurrentViewName = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'currentViewName', setCurrentViewName);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      currentDate = prevState.currentDate,\n      currentViewName = prevState.currentViewName,\n    } = nextProps;\n\n    return {\n      currentDate,\n      currentViewName,\n    };\n  }\n\n  getCurrentViewComputed =  memoize(currentViewName => () => (\n    currentViewName\n    ? { name: currentViewName }\n    : undefined\n  ));\n\n  render() {\n    const { currentDate, currentViewName: stateCurrentViewName } = this.state;\n    return (\n      <Plugin\n        name=\"ViewState\"\n      >\n        <Getter name=\"currentDate\" value={currentDate} />\n        <Getter name=\"currentView\" computed={this.getCurrentViewComputed(stateCurrentViewName)} />\n        <Action name=\"changeCurrentDate\" action={this.changeCurrentDate} />\n        <Action name=\"setCurrentViewName\" action={this.setCurrentViewName} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the view state. It specifies the current date and the displayed view. */\nexport const ViewState: React.ComponentType<ViewStateProps> = ViewStateBase;\n","import * as React from 'react';\nimport {\n  Action, Plugin, Getter, createStateHelper, StateHelper, ComputedFn, ActionFn,\n} from '@devexpress/dx-react-core';\nimport {\n  addAppointment,\n  cancelAddedAppointment,\n  startEditAppointment,\n  stopEditAppointment,\n  changeAppointment,\n  cancelChanges,\n  changedAppointmentById,\n  RECURRENCE_EDIT_SCOPE,\n  preCommitChanges as preCommitChangesBase,\n} from '@devexpress/dx-scheduler-core';\nimport { EditingStateProps, EditingStateState } from '../types';\n\nclass EditingStateBase extends React.PureComponent<EditingStateProps, EditingStateState> {\n  startEditAppointment: ComputedFn;\n  stopEditAppointment: (payload?: any) => void;\n  changeAppointment: ComputedFn;\n  cancelChangedAppointment: (payload?: any) => void;\n  commitChangedAppointment: ActionFn<any>;\n  addAppointment: ComputedFn;\n  changeAddedAppointment: ComputedFn;\n  cancelAddedAppointment: (payload?: any) => void;\n  commitAddedAppointment: ComputedFn;\n  commitDeletedAppointment: ActionFn<any>;\n\n  static defaultProps: Partial<EditingStateProps> = {\n    defaultEditingAppointment: undefined,\n    defaultAppointmentChanges: {},\n    defaultAddedAppointment: {},\n    preCommitChanges: preCommitChangesBase,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      editingAppointment: props.editingAppointment || props.defaultEditingAppointment,\n      addedAppointment: props.addedAppointment || props.defaultAddedAppointment,\n      appointmentChanges: props.appointmentChanges || props.defaultAppointmentChanges,\n    };\n\n    const stateHelper: StateHelper = createStateHelper(\n      this,\n      {\n        editingAppointment: () => {\n          const { onEditingAppointmentChange } = this.props;\n          return onEditingAppointmentChange;\n        },\n        addedAppointment: () => {\n          const { onAddedAppointmentChange } = this.props;\n          return onAddedAppointmentChange;\n        },\n        appointmentChanges: () => {\n          const { onAppointmentChangesChange } = this.props;\n          return onAppointmentChangesChange;\n        },\n      },\n    );\n\n    this.addAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'addedAppointment', addAppointment);\n    this.changeAddedAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'addedAppointment', changeAppointment);\n    this.cancelAddedAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'addedAppointment', cancelAddedAppointment);\n\n    this.startEditAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'editingAppointment', startEditAppointment);\n    this.stopEditAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'editingAppointment', stopEditAppointment);\n\n    this.changeAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'appointmentChanges', changeAppointment);\n    this.cancelChangedAppointment = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'appointmentChanges', cancelChanges);\n\n    this.commitChangedAppointment = (type = RECURRENCE_EDIT_SCOPE.CURRENT) => {\n      const { appointmentChanges, editingAppointment } = this.state;\n      const { onCommitChanges, preCommitChanges } = this.props;\n      if (!editingAppointment) {\n        return;\n      }\n      const changes = !editingAppointment.rRule\n        ? { changed: changedAppointmentById(appointmentChanges, editingAppointment.id!) }\n        : preCommitChanges!(appointmentChanges, editingAppointment, type);\n\n      onCommitChanges(changes);\n      this.cancelChangedAppointment();\n      this.stopEditAppointment();\n    };\n\n    this.commitAddedAppointment = () => {\n      const { onCommitChanges } = this.props;\n      const { addedAppointment: stateAddedAppointment } = this.state;\n      onCommitChanges({\n        added: stateAddedAppointment,\n      });\n    };\n\n    this.commitDeletedAppointment = ({ deletedAppointmentData, type = 'current' }) => {\n      const { onCommitChanges, preCommitChanges } = this.props;\n\n      const changes = deletedAppointmentData.rRule\n        ? preCommitChanges!(null, deletedAppointmentData, type)\n        : { deleted: deletedAppointmentData.id };\n      onCommitChanges(changes);\n    };\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      editingAppointment = prevState.editingAppointment,\n      appointmentChanges = prevState.appointmentChanges,\n      addedAppointment = prevState.addedAppointment,\n    } = nextProps;\n\n    return {\n      editingAppointment,\n      appointmentChanges,\n      addedAppointment,\n    };\n  }\n\n  render() {\n    const { addedAppointment, editingAppointment, appointmentChanges } = this.state;\n\n    return (\n      <Plugin\n        name=\"EditingState\"\n      >\n        <Getter name=\"editingAppointment\" value={editingAppointment} />\n        <Action name=\"startEditAppointment\" action={this.startEditAppointment} />\n        <Action name=\"stopEditAppointment\" action={this.stopEditAppointment} />\n\n        <Getter name=\"appointmentChanges\" value={appointmentChanges} />\n        <Action name=\"changeAppointment\" action={this.changeAppointment} />\n        <Action name=\"cancelChangedAppointment\" action={this.cancelChangedAppointment} />\n        <Action name=\"commitChangedAppointment\" action={this.commitChangedAppointment} />\n\n        <Getter name=\"addedAppointment\" value={addedAppointment} />\n        <Action name=\"addAppointment\" action={this.addAppointment} />\n        <Action name=\"changeAddedAppointment\" action={this.changeAddedAppointment} />\n        <Action name=\"cancelAddedAppointment\" action={this.cancelAddedAppointment} />\n        <Action name=\"commitAddedAppointment\" action={this.commitAddedAppointment} />\n\n        <Action name=\"commitDeletedAppointment\" action={this.commitDeletedAppointment} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the scheduler appointment editing state. */\nexport const EditingState: React.ComponentType<EditingStateProps> = EditingStateBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  createStateHelper,\n  StateHelper,\n  PluginComponents,\n  Action,\n} from '@devexpress/dx-react-core';\nimport {\n  OPEN_COMMAND_BUTTON,\n  CLOSE_COMMAND_BUTTON,\n  DELETE_COMMAND_BUTTON,\n  setAppointmentMeta,\n  AppointmentMeta,\n  TOGGLE_APPOINTMENT_TOOLTIP_VISIBILITY,\n  getAppointmentResources,\n} from '@devexpress/dx-scheduler-core';\n\nimport { AppointmentTooltipProps, AppointmentTooltipState, Appointments } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Appointments' },\n  { name: 'EditingState', optional: true },\n  { name: 'EditRecurrenceMenu', optional: true },\n  { name: 'IntegratedEditing', optional: true },\n];\n\nconst commandButtonIds = {\n  open: OPEN_COMMAND_BUTTON,\n  close: CLOSE_COMMAND_BUTTON,\n  delete: DELETE_COMMAND_BUTTON,\n};\n\nclass AppointmentTooltipBase extends React.PureComponent<\n  AppointmentTooltipProps, AppointmentTooltipState\n> {\n  toggleVisibility: (payload?: any) => void;\n  setAppointmentMeta: (appointmentMeta: AppointmentMeta) => void;\n  onAppointmentClick: (appointmentMeta: AppointmentMeta) => void;\n\n  static defaultProps: Partial<AppointmentTooltipProps> = {\n    showOpenButton: false,\n    showDeleteButton: false,\n    showCloseButton: false,\n  };\n  static components: PluginComponents = {\n    layoutComponent: 'Layout',\n    headerComponent: 'Header',\n    contentComponent: 'Content',\n    commandButtonComponent: 'CommandButton',\n    recurringIconComponent: 'RecurringIcon',\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      visible: props.visible,\n      appointmentMeta: props.appointmentMeta,\n    };\n\n    const stateHelper: StateHelper = createStateHelper(\n      this,\n      {\n        visible: () => {\n          const { onVisibilityChange } = this.props;\n          return onVisibilityChange;\n        },\n        appointmentMeta: () => {\n          const { onAppointmentMetaChange } = this.props;\n          return onAppointmentMetaChange;\n        },\n      },\n    );\n\n    const toggleVisibility = () => {\n      const { visible: isOpen } = this.state;\n      return !isOpen;\n    };\n    this.toggleVisibility = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'visible', toggleVisibility);\n    this.setAppointmentMeta = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'appointmentMeta', setAppointmentMeta);\n    this.onAppointmentClick = ({ target, data }) => {\n      this.setAppointmentMeta({ target, data });\n      this.toggleVisibility();\n    };\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      visible = prevState.visible,\n      appointmentMeta = prevState.appointmentMeta,\n    } = nextProps;\n    return {\n      appointmentMeta,\n      visible,\n    };\n  }\n\n  render() {\n    const {\n      showOpenButton,\n      showDeleteButton,\n      showCloseButton,\n      layoutComponent: Layout,\n      headerComponent,\n      contentComponent,\n      commandButtonComponent,\n      recurringIconComponent,\n    } = this.props;\n    const { visible, appointmentMeta } = this.state;\n\n    return (\n      <Plugin\n        name=\"AppointmentTooltip\"\n        dependencies={pluginDependencies}\n      >\n        <Action name={TOGGLE_APPOINTMENT_TOOLTIP_VISIBILITY} action={this.toggleVisibility} />\n\n        <Template name=\"timeTable\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {({\n              formatDate, resources, plainResources,\n            }, {\n              finishDeleteAppointment, openDeleteConfirmationDialog,\n            }) => {\n              const onDeleteButtonClick = () => {\n                if (!finishDeleteAppointment) {\n                  return;\n                }\n                if (openDeleteConfirmationDialog) {\n                  openDeleteConfirmationDialog({\n                    hideActionName: TOGGLE_APPOINTMENT_TOOLTIP_VISIBILITY,\n                    appointmentData: appointmentMeta.data,\n                  });\n                } else {\n                  this.toggleVisibility();\n                  finishDeleteAppointment(appointmentMeta.data);\n                }\n              };\n              return (\n                <TemplatePlaceholder\n                  name=\"tooltip\"\n                  params={{\n                    commandButtonComponent,\n                    recurringIconComponent,\n                    showOpenButton,\n                    showDeleteButton,\n                    showCloseButton,\n                    headerComponent,\n                    contentComponent,\n                    appointmentMeta,\n                    appointmentResources: appointmentMeta ? getAppointmentResources(\n                      appointmentMeta.data as any, resources, plainResources,\n                    ) : [],\n                    visible,\n                    onHide: this.toggleVisibility,\n                    commandButtonIds,\n                    onDeleteButtonClick,\n                    formatDate,\n                  }}\n                />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"tooltip\">\n          {(params: any) => <Layout {...params} />}\n        </Template>\n\n        <Template name=\"appointment\">\n          {(params: Appointments.AppointmentProps) => (\n            <TemplatePlaceholder\n              params={{\n                ...params,\n                onClick: ({ target, data }) =>\n                 this.onAppointmentClick({ target, data }),\n              }}\n            />\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable: max-line-length\n/** The AppointmentTooltip plugin allows you to display information about an appointment in a tooltip. */\nexport const AppointmentTooltip: React.ComponentType<AppointmentTooltipProps> = AppointmentTooltipBase;\n","import * as React from 'react';\nimport { getMessagesFormatter, memoize } from '@devexpress/dx-core';\nimport {\n  Plugin,\n  Template,\n  createStateHelper,\n  StateHelper,\n  TemplateConnector,\n  TemplatePlaceholder,\n  PluginComponents,\n  Action,\n} from '@devexpress/dx-react-core';\nimport {\n  setAppointmentData,\n  isAllDayCell,\n  callActionIfExists,\n  AppointmentModel,\n  TOGGLE_APPOINTMENT_FORM_VISIBILITY,\n  getAppointmentResources,\n  ValidResourceInstance,\n  checkMultipleResourceFields,\n} from '@devexpress/dx-scheduler-core';\n\nimport {\n  AppointmentFormProps, AppointmentFormState, AppointmentTooltip, Appointments,\n} from '../types';\n\nconst addDoubleClickToCell = (\n  title, startDate, endDate, groupingInfo, resources,\n  allDay, openFormHandler, addAppointment, params,\n) => {\n  const resourceFields = !!groupingInfo\n    ? groupingInfo.reduce((acc, currentGroup) => (\n      { ...acc, [currentGroup.fieldName]: currentGroup.id }\n    ), {}) : {};\n  const validResourceFields = resources\n    ? checkMultipleResourceFields(resourceFields, resources)\n    : resourceFields;\n\n  const newAppointmentData = {\n    title,\n    startDate,\n    endDate,\n    allDay,\n    ...validResourceFields,\n  };\n\n  return (\n    <TemplatePlaceholder\n      params={{\n        ...params,\n        onDoubleClick: () => {\n          openFormHandler(newAppointmentData);\n          callActionIfExists(addAppointment,\n            { appointmentData: newAppointmentData });\n        },\n      }}\n    />\n  );\n};\n\nconst defaultMessages = {\n  allDayLabel: 'All Day',\n  titleLabel: 'Title',\n  commitCommand: 'Save',\n  detailsLabel: 'Details',\n  moreInformationLabel: 'More Information',\n  repeatLabel: 'Repeat',\n  notesLabel: 'Notes',\n  never: 'Never',\n  daily: 'Daily',\n  weekly: 'Weekly',\n  monthly: 'Monthly',\n  yearly: 'Yearly',\n  repeatEveryLabel: 'Repeat every',\n  daysLabel: 'day(s)',\n  endRepeatLabel: 'End repeat',\n  onLabel: 'On',\n  afterLabel: 'After',\n  occurrencesLabel: 'occurrence(s)',\n  weeksOnLabel: 'week(s) on:',\n  monthsLabel: 'month(s)',\n  ofEveryMonthLabel: 'of every month',\n  theLabel: 'The',\n  firstLabel: 'First',\n  secondLabel: 'Second',\n  thirdLabel: 'Third',\n  fourthLabel: 'Fourth',\n  lastLabel: 'Last',\n  yearsLabel: 'year(s)',\n  ofLabel: 'of ',\n  everyLabel: 'Every',\n};\n\nconst CommandLayoutPlaceholder = () => <TemplatePlaceholder name=\"commandLayout\" />;\nconst BasicLayoutPlaceholder = () => <TemplatePlaceholder name=\"basicLayout\" />;\nconst RecurrenceLayoutPlaceholder = () => <TemplatePlaceholder name=\"recurrenceLayout\" />;\n\nconst pluginDependencies = [\n  { name: 'EditingState', optional: true },\n  { name: 'Appointments', optional: true },\n  { name: 'AppointmentTooltip', optional: true },\n  { name: 'EditRecurrenceMenu', optional: true },\n  { name: 'IntegratedEditing', optional: true },\n];\n\nconst prepareChanges = (\n  appointmentData, editingAppointment,\n  addedAppointment, appointmentChanges,\n  resources, plainResources,\n) => {\n  const isNew = !editingAppointment;\n  const changedAppointment = {\n    ...appointmentData,\n    ...appointmentChanges,\n    ...isNew && addedAppointment,\n  };\n  const appointmentResources = getAppointmentResources(\n    changedAppointment, resources, plainResources,\n  );\n  const isFormEdited = isNew || Object.getOwnPropertyNames(appointmentChanges).length !== 0;\n  return { changedAppointment, appointmentResources, isNew, isFormEdited };\n};\n\nconst isFormFullSize = (\n  isFormVisible, changedAppointmentRRule, previousAppointmentRRule,\n) => !!changedAppointmentRRule || (!isFormVisible && !!previousAppointmentRRule);\n\nclass AppointmentFormBase extends React.PureComponent<AppointmentFormProps, AppointmentFormState> {\n  toggleVisibility: (payload?: any) => void;\n  setAppointmentData: (payload: any) => void;\n  openFormHandler: (payload: AppointmentModel) => void;\n  container = React.createRef();\n\n  static defaultProps: Partial<AppointmentFormProps> = {\n    messages: {},\n    readOnly: false,\n    onVisibilityChange: () => undefined,\n    onAppointmentDataChange: () => undefined,\n  };\n  static components: PluginComponents = {\n    overlayComponent: 'Overlay',\n    layoutComponent: 'Layout',\n    commandLayoutComponent: 'CommandLayout',\n    commandButtonComponent: 'CommandButton',\n    basicLayoutComponent: 'BasicLayout',\n    textEditorComponent: 'TextEditor',\n    labelComponent: 'Label',\n    dateEditorComponent: 'DateEditor',\n    booleanEditorComponent: 'BooleanEditor',\n    selectComponent: 'Select',\n    recurrenceLayoutComponent: 'RecurrenceLayout',\n    radioGroupComponent: 'RadioGroup',\n    weeklyRecurrenceSelectorComponent: 'WeeklyRecurrenceSelector',\n    resourceEditorComponent: 'ResourceEditor',\n    containerComponent: 'Container',\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      visible: props.visible,\n      appointmentData: props.appointmentData || {},\n      previousAppointment: props.appointmentData || {},\n    };\n\n    const stateHelper: StateHelper = createStateHelper(\n      this,\n      {\n        visible: () => {\n          const { onVisibilityChange } = this.props;\n          return onVisibilityChange;\n        },\n        appointmentData: () => {\n          const { onAppointmentDataChange } = this.props;\n          return onAppointmentDataChange;\n        },\n      },\n    );\n\n    const toggleVisibility = () => {\n      const { visible: isOpen } = this.state;\n      return !isOpen;\n    };\n    this.toggleVisibility = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'visible', toggleVisibility);\n    this.setAppointmentData = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'appointmentData', setAppointmentData);\n\n    this.openFormHandler = (appointmentData) => {\n      this.setAppointmentData({ appointmentData });\n      this.toggleVisibility();\n    };\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      visible = prevState.visible,\n      appointmentData = prevState.appointmentData,\n    } = nextProps;\n    return {\n      appointmentData,\n      visible,\n    };\n  }\n\n  commitChanges = memoize((\n    finishCommitAppointment, commitAddedAppointment, isNew, changedAppointment,\n  ) => () =>  {\n    this.toggleVisibility();\n    if (isNew) {\n      callActionIfExists(commitAddedAppointment, changedAppointment);\n    } else if (finishCommitAppointment) {\n      finishCommitAppointment();\n    }\n    this.setState({ previousAppointment: changedAppointment });\n  });\n\n  cancelChanges = memoize((\n    openCancelConfirmationDialog, isNew, stopEditAppointment, appointmentChanges,\n    changedAppointment, cancelAddedAppointment, cancelChangedAppointment,\n  ) => () => {\n    if (openCancelConfirmationDialog && Object.keys(appointmentChanges).length !== 0) {\n      openCancelConfirmationDialog(TOGGLE_APPOINTMENT_FORM_VISIBILITY);\n    } else {\n      if (isNew) {\n        callActionIfExists(cancelAddedAppointment, appointmentChanges);\n      } else {\n        callActionIfExists(stopEditAppointment, appointmentChanges);\n        callActionIfExists(cancelChangedAppointment, appointmentChanges);\n      }\n      this.toggleVisibility();\n    }\n    this.setState({ previousAppointment: changedAppointment });\n  });\n\n  deleteAppointment = memoize((\n    finishDeleteAppointment, appointmentData, openDeleteConfirmationDialog,\n    changedAppointment, cancelAddedAppointment, cancelChangedAppointment,\n    stopEditAppointment, isNew,\n  ) => () => {\n    if (openDeleteConfirmationDialog) {\n      openDeleteConfirmationDialog({\n        hideActionName: TOGGLE_APPOINTMENT_FORM_VISIBILITY, appointmentData: changedAppointment,\n      });\n    } else {\n      callActionIfExists(finishDeleteAppointment, appointmentData);\n      if (isNew) {\n        callActionIfExists(cancelAddedAppointment, appointmentData);\n      } else {\n        callActionIfExists(cancelChangedAppointment, appointmentData);\n        callActionIfExists(stopEditAppointment, appointmentData);\n      }\n      this.toggleVisibility();\n    }\n    this.setState({ previousAppointment: changedAppointment });\n  });\n\n  changeAppointmentField = memoize((isNew, changeAddedAppointment, changeAppointment) =>\n    (change) => {\n      if (change && change.rRule) {\n        this.setState({ previousAppointment: {\n          ...this.state.previousAppointment, rRule: change.rRule,\n        }});\n      }\n      if (isNew) {\n        callActionIfExists(changeAddedAppointment, { change });\n      } else {\n        callActionIfExists(changeAppointment, { change });\n      }\n    },\n  );\n\n  getMessage = memoize((menuMessages, messages) =>\n    getMessagesFormatter({ ...menuMessages, ...messages }));\n\n  render() {\n    const {\n      containerComponent: Container,\n      overlayComponent: Overlay,\n      layoutComponent: Layout,\n      commandLayoutComponent: CommandLayout,\n      basicLayoutComponent: BasicLayout,\n      recurrenceLayoutComponent: RecurrenceLayout,\n      commandButtonComponent,\n      textEditorComponent,\n      labelComponent,\n      dateEditorComponent,\n      booleanEditorComponent,\n      selectComponent,\n      radioGroupComponent,\n      weeklyRecurrenceSelectorComponent,\n      resourceEditorComponent,\n      readOnly,\n      messages,\n    } = this.props;\n    const { visible, appointmentData, previousAppointment } = this.state;\n    const getMessage = this.getMessage(defaultMessages, messages);\n    return (\n      <Plugin\n        name=\"AppointmentForm\"\n        dependencies={pluginDependencies}\n      >\n        <Action name={TOGGLE_APPOINTMENT_FORM_VISIBILITY} action={this.toggleVisibility} />\n\n        <Template name=\"schedulerRoot\">\n          <TemplateConnector>\n            {({\n              editingAppointment,\n              addedAppointment,\n              appointmentChanges,\n\n              resources,\n              plainResources,\n            }, {\n              openCancelConfirmationDialog,\n\n              stopEditAppointment,\n              cancelAddedAppointment,\n              cancelChangedAppointment,\n            }) => {\n              const { changedAppointment, isNew } = prepareChanges(\n                appointmentData, editingAppointment,\n                addedAppointment, appointmentChanges,\n                resources, plainResources,\n              );\n              const fullSize = isFormFullSize(\n                visible, changedAppointment.rRule, previousAppointment.rRule,\n              );\n              const onHideAction = () => visible && this.cancelChanges(\n                openCancelConfirmationDialog, isNew, stopEditAppointment,\n                { ...appointmentChanges, ...addedAppointment }, changedAppointment,\n                cancelAddedAppointment, cancelChangedAppointment,\n              )();\n\n              return (\n                <React.Fragment>\n                  <Container ref={this.container} />\n                  <Overlay\n                    visible={visible}\n                    onHide={onHideAction}\n                    fullSize={fullSize}\n                    target={this.container}\n                  >\n                    <Layout\n                      basicLayoutComponent={BasicLayoutPlaceholder}\n                      commandLayoutComponent={CommandLayoutPlaceholder}\n                      recurrenceLayoutComponent={RecurrenceLayoutPlaceholder}\n                      isRecurrence={fullSize}\n                    />\n                  </Overlay>\n                  <TemplatePlaceholder />\n                </React.Fragment>);\n            }}\n          </TemplateConnector>\n        </Template>\n        <Template name=\"commandLayout\">\n          <TemplateConnector>\n            {({\n              editingAppointment,\n              addedAppointment,\n              appointmentChanges,\n\n              resources,\n              plainResources,\n            }, {\n              commitAddedAppointment,\n              finishCommitAppointment,\n              finishDeleteAppointment,\n\n              stopEditAppointment,\n              cancelAddedAppointment,\n              cancelChangedAppointment,\n\n              openCancelConfirmationDialog,\n              openDeleteConfirmationDialog,\n            }) => {\n              const { isNew, changedAppointment, isFormEdited } = prepareChanges(\n                appointmentData, editingAppointment,\n                addedAppointment, appointmentChanges,\n                resources, plainResources,\n              );\n              const isRecurrence = isFormFullSize(\n                visible, changedAppointment.rRule, previousAppointment.rRule,\n              );\n              return (\n                <CommandLayout\n                  commandButtonComponent={commandButtonComponent}\n                  onCommitButtonClick={this.commitChanges(\n                    finishCommitAppointment, commitAddedAppointment, isNew, changedAppointment,\n                  )}\n                  onCancelButtonClick={this.cancelChanges(\n                    openCancelConfirmationDialog, isNew, stopEditAppointment,\n                    { ...appointmentChanges, ...addedAppointment }, changedAppointment,\n                    cancelAddedAppointment, cancelChangedAppointment,\n                  )}\n                  onDeleteButtonClick={this.deleteAppointment(\n                    finishDeleteAppointment, appointmentData, openDeleteConfirmationDialog,\n                    changedAppointment, cancelAddedAppointment, cancelChangedAppointment,\n                    stopEditAppointment, isNew,\n                  )}\n                  getMessage={getMessage}\n                  readOnly={readOnly}\n                  fullSize={isRecurrence}\n                  disableSaveButton={!isFormEdited}\n                  hideDeleteButton={isNew}\n                />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n        <Template name=\"basicLayout\">\n          <TemplateConnector>\n            {({\n              editingAppointment,\n              addedAppointment,\n              appointmentChanges,\n              locale,\n\n              resources,\n              plainResources,\n            }, {\n              changeAppointment,\n              changeAddedAppointment,\n            }) => {\n              const { isNew, changedAppointment, appointmentResources } = prepareChanges(\n                appointmentData, editingAppointment,\n                addedAppointment, appointmentChanges,\n                resources, plainResources,\n              );\n              return (\n                <BasicLayout\n                  locale={locale}\n                  appointmentData={visible ? changedAppointment : previousAppointment}\n                  onFieldChange={this.changeAppointmentField(\n                    isNew, changeAddedAppointment, changeAppointment,\n                  )}\n                  getMessage={getMessage}\n                  readOnly={readOnly}\n                  textEditorComponent={textEditorComponent}\n                  dateEditorComponent={dateEditorComponent}\n                  booleanEditorComponent={booleanEditorComponent}\n                  selectComponent={selectComponent}\n                  labelComponent={labelComponent}\n                  resourceEditorComponent={resourceEditorComponent}\n                  fullSize={!changedAppointment.rRule}\n                  resources={resources}\n                  appointmentResources={appointmentResources as Array<ValidResourceInstance>}\n                />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"recurrenceLayout\">\n          <TemplateConnector>\n            {({\n              editingAppointment,\n              addedAppointment,\n              appointmentChanges,\n              formatDate,\n              locale,\n              firstDayOfWeek,\n            }, {\n              changeAddedAppointment,\n              changeAppointment,\n            }) => {\n              const { isNew, changedAppointment } = prepareChanges(\n                appointmentData, editingAppointment,\n                addedAppointment, appointmentChanges,\n                undefined, undefined,\n              );\n              const isRecurrenceLayoutVisible = isFormFullSize(\n                visible, changedAppointment.rRule, previousAppointment.rRule,\n              );\n              const correctedAppointment = !changedAppointment.rRule\n                ? { ...changedAppointment, rRule: previousAppointment.rRule } : changedAppointment;\n\n              return (\n                <RecurrenceLayout\n                  locale={locale}\n                  appointmentData={visible ? correctedAppointment : previousAppointment}\n                  onFieldChange={this.changeAppointmentField(\n                    isNew, changeAddedAppointment, changeAppointment,\n                  )}\n                  getMessage={getMessage}\n                  readOnly={readOnly}\n                  formatDate={formatDate}\n                  textEditorComponent={textEditorComponent}\n                  dateEditorComponent={dateEditorComponent}\n                  radioGroupComponent={radioGroupComponent}\n                  weeklyRecurrenceSelectorComponent={weeklyRecurrenceSelectorComponent}\n                  labelComponent={labelComponent}\n                  selectComponent={selectComponent}\n                  visible={isRecurrenceLayoutVisible}\n                  firstDayOfWeek={firstDayOfWeek}\n                />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"tooltip\">\n          {(params: AppointmentTooltip.LayoutProps) => (\n            <TemplateConnector>\n              {(getters, { startEditAppointment }) => (\n                <TemplatePlaceholder\n                  params={{\n                    ...params,\n                    onOpenButtonClick: () => {\n                      this.openFormHandler(params.appointmentMeta!.data);\n                      callActionIfExists(startEditAppointment, params.appointmentMeta!.data);\n                    },\n                  }}\n                />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"appointment\">\n          {(params: Appointments.AppointmentProps) => (\n            <TemplateConnector>\n              {(getters, { startEditAppointment }) => (\n                <TemplatePlaceholder\n                  params={{\n                    ...params,\n                    onDoubleClick: () => {\n                      this.openFormHandler(params.data);\n                      callActionIfExists(startEditAppointment, params.data);\n                    },\n                  }}\n                />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"cell\">\n          {(params: any) => (\n            <TemplateConnector>\n              {({ resources }, { addAppointment }) => addDoubleClickToCell(\n                undefined, params.startDate, params.endDate, params.groupingInfo, resources,\n                isAllDayCell(params.startDate, params.endDate),\n                this.openFormHandler, addAppointment, params,\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n\n        <Template name=\"allDayPanelCell\">\n          {(params: any) => (\n            <TemplateConnector>\n              {({ resources }, { addAppointment }) => addDoubleClickToCell(\n                undefined, params.startDate, params.endDate, params.groupingInfo, resources,\n                true, this.openFormHandler, addAppointment, params,\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin >\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\n/** The AppointmentForm plugin renders a form that visualizes appointment’s data and allows a user to modify this data. */\nexport const AppointmentForm: React.ComponentType<AppointmentFormProps> = AppointmentFormBase;\n","import * as React from 'react';\nimport {\n  Plugin, Template, TemplatePlaceholder,\n  TemplateConnector, DropTarget, DragSource,\n  DragDropProvider as DragDropProviderCore,\n  PluginComponents, PlaceholderWithRef,\n} from '@devexpress/dx-react-core';\nimport {\n  cellIndex, cellData, cellType, getAppointmentStyle, intervalDuration, autoScroll,\n  calculateAppointmentTimeBoundaries, calculateInsidePart, RESIZE_TOP, RESIZE_BOTTOM,\n  POSITION_START, POSITION_END, getAppointmentResources, calculateAppointmentGroups,\n  appointmentDragged, calculateDraftAppointments,\n  HORIZONTAL_GROUP_ORIENTATION, VERTICAL_GROUP_ORIENTATION, SCROLL_SPEED_PX,\n} from '@devexpress/dx-scheduler-core';\nimport { DragDropProviderProps, DragDropProviderState } from '../types';\n\nconst renderAppointmentItems = (items, Wrapper, draftData) => (\n  items.length > 0 ? (\n    <Wrapper>\n      {items.map((draftAppointment, index) => (\n        <TemplatePlaceholder\n          name=\"draftAppointment\"\n          key={index.toString()}\n          params={{ data: draftData, draftAppointment }}\n        />\n      ))}\n    </Wrapper>\n  ) : (\n    null\n  )\n);\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n  { name: 'Appointments' },\n  { name: 'EditRecurrenceMenu', optional: true },\n  { name: 'IntegratedEditing', optional: true },\n  { name: 'DayView', optional: true },\n  { name: 'WeekView', optional: true },\n  { name: 'MonthView', optional: true },\n  { name: 'AllDayPanel', optional: true },\n];\n\nclass DragDropProviderBase extends React.PureComponent<\n  DragDropProviderProps, DragDropProviderState\n> {\n  timeTableDraftAppointments: any = [];\n  allDayDraftAppointments: any = [];\n  offsetTimeTop: number | null = null;\n  appointmentStartTime: any = null;\n  appointmentEndTime: any = null;\n  appointmentGroupingInfo: any = {};\n\n  state: DragDropProviderState = {\n    startTime: null,\n    endTime: null,\n    appointmentGroupingInfo: null,\n    payload: null,\n    isOutside: false,\n    allowDrag: () => true,\n    allowResize: () => true,\n    appointmentContentTemplateKey: 0,\n    appointmentTopTemplateKey: 0,\n    appointmentBottomTemplateKey: 0,\n  };\n  static components: PluginComponents = {\n    containerComponent: 'Container',\n    draftAppointmentComponent: 'DraftAppointment',\n    sourceAppointmentComponent: 'SourceAppointment',\n    resizeComponent: 'Resize',\n  };\n  static defaultProps: Partial<DragDropProviderProps> = {\n    allowDrag: () => true,\n    allowResize: () => true,\n    scrollSpeed: SCROLL_SPEED_PX,\n  };\n  static getDerivedStateFromProps(\n    props: DragDropProviderProps, state: DragDropProviderState,\n  ): DragDropProviderState | null {\n    const isAllowDragSame = props.allowDrag === state.allowDrag;\n    const isAllowResizeSame = props.allowResize === state.allowResize;\n\n    if (isAllowDragSame && isAllowResizeSame) {\n      return null;\n    }\n\n    return {\n      ...state,\n      appointmentContentTemplateKey:\n        isAllowDragSame ? state.appointmentContentTemplateKey : Math.random(),\n      appointmentTopTemplateKey:\n        isAllowResizeSame ? state.appointmentTopTemplateKey : Math.random(),\n      appointmentBottomTemplateKey:\n        isAllowResizeSame ? state.appointmentBottomTemplateKey : Math.random(),\n      allowDrag: props.allowDrag,\n      allowResize: props.allowResize,\n    };\n\n  }\n\n  onPayloadChange(actions) {\n    return args => this.handlePayloadChange(args, actions);\n  }\n\n  calculateNextBoundaries(getters, actions, scrollSpeed) {\n    return args => this.calculateBoundaries(args, getters, actions, scrollSpeed);\n  }\n\n  resetCache() {\n    this.timeTableDraftAppointments = [];\n    this.allDayDraftAppointments = [];\n    this.offsetTimeTop = null;\n    this.appointmentStartTime = null;\n    this.appointmentEndTime = null;\n    this.appointmentGroupingInfo = {};\n\n    this.setState({\n      payload: null,\n      startTime: null,\n      endTime: null,\n      isOutside: false,\n    });\n  }\n\n  applyChanges(\n    startTime, endTime, payload, startEditAppointment, changeAppointment, appointmentGroupingInfo,\n  ) {\n    startEditAppointment(payload);\n    changeAppointment({\n      change: {\n        startDate: startTime,\n        endDate: endTime,\n        ...payload.allDay && { allDay: undefined },\n        ...this.appointmentGroupingInfo,\n      },\n    });\n    this.setState({ startTime, endTime, payload, isOutside: false, appointmentGroupingInfo });\n  }\n\n  handlePayloadChange({ payload }, { finishCommitAppointment }) {\n    const { isOutside } = this.state;\n    if (payload || !isOutside) return;\n\n    finishCommitAppointment();\n    this.resetCache();\n  }\n\n  calculateBoundaries(\n    { payload, clientOffset },\n    {\n      viewCellsData, allDayCellsData, startViewDate, endViewDate, excludedDays, currentView,\n      timeTableElementsMeta, allDayElementsMeta, scrollingStrategy,\n      grouping, resources, groups, groupOrientation: getGroupOrientation, groupByDate,\n    },\n    { changeAppointment, startEditAppointment },\n    scrollSpeed,\n  ) {\n    if (clientOffset) {\n      autoScroll(clientOffset, scrollingStrategy, scrollSpeed);\n    }\n\n    const tableCellElementsMeta = timeTableElementsMeta;\n    const groupOrientation = getGroupOrientation\n      ? getGroupOrientation(currentView?.name)\n      : HORIZONTAL_GROUP_ORIENTATION;\n\n    // AllDayPanel doesn't always exist\n    const allDayCellsElementsMeta = allDayElementsMeta && allDayElementsMeta.getCellRects\n      ? allDayElementsMeta\n      : { getCellRects: [] };\n    const timeTableIndex = cellIndex(tableCellElementsMeta.getCellRects, clientOffset);\n    const allDayIndex = cellIndex(allDayCellsElementsMeta.getCellRects, clientOffset);\n\n    if (allDayIndex === -1 && timeTableIndex === -1) return;\n\n    const targetData = cellData(\n      timeTableIndex, allDayIndex, viewCellsData, allDayCellsData,\n    );\n    const targetType = cellType(targetData);\n    const insidePart = calculateInsidePart(\n      clientOffset.y, tableCellElementsMeta.getCellRects, timeTableIndex,\n    );\n    const cellDurationMinutes = intervalDuration(targetData, 'minutes');\n\n    const {\n      appointmentStartTime, appointmentEndTime, offsetTimeTop,\n    } = calculateAppointmentTimeBoundaries(\n      payload, targetData, targetType, cellDurationMinutes,\n      insidePart, this.offsetTimeTop!,\n    );\n\n    const appointmentGroups = calculateAppointmentGroups(\n      targetData.groupingInfo, resources, payload,\n    );\n\n    this.appointmentStartTime = appointmentStartTime || this.appointmentStartTime;\n    this.appointmentEndTime = appointmentEndTime || this.appointmentEndTime;\n    this.appointmentGroupingInfo = appointmentGroups || this.appointmentGroupingInfo;\n    this.offsetTimeTop = offsetTimeTop!;\n\n    const { startTime, endTime, appointmentGroupingInfo } = this.state;\n    if (!appointmentDragged(\n      this.appointmentStartTime, startTime!,\n      this.appointmentEndTime, endTime!,\n      this.appointmentGroupingInfo, appointmentGroupingInfo,\n    )) {\n      return;\n    }\n\n    const draftAppointments = [{\n      dataItem: {\n        ...payload,\n        startDate: this.appointmentStartTime,\n        endDate: this.appointmentEndTime,\n        ...this.appointmentGroupingInfo,\n      },\n      start: this.appointmentStartTime,\n      end: this.appointmentEndTime,\n    }];\n\n    const {\n      allDayDraftAppointments,\n      timeTableDraftAppointments,\n    } = calculateDraftAppointments(\n      allDayIndex, draftAppointments, startViewDate,\n      endViewDate, excludedDays, viewCellsData, allDayCellsElementsMeta,\n      targetType, cellDurationMinutes, tableCellElementsMeta, grouping, resources, groups,\n      groupOrientation, groupByDate?.(currentView?.name),\n    );\n\n    this.allDayDraftAppointments = allDayDraftAppointments;\n    this.timeTableDraftAppointments = timeTableDraftAppointments;\n\n    this.applyChanges(\n      this.appointmentStartTime, this.appointmentEndTime,\n      payload, startEditAppointment, changeAppointment,\n      this.appointmentGroupingInfo,\n    );\n  }\n\n  handleDrop = ({ finishCommitAppointment }) => () => {\n    finishCommitAppointment();\n    this.resetCache();\n  }\n\n  handleLeave = () => {\n    this.setState({ isOutside: true });\n  }\n\n  render() {\n    const {\n      payload, appointmentContentTemplateKey,\n      appointmentBottomTemplateKey, appointmentTopTemplateKey,\n    } = this.state;\n    const {\n      containerComponent: Container,\n      draftAppointmentComponent: DraftAppointment,\n      sourceAppointmentComponent: SourceAppointment,\n      resizeComponent: Resize,\n      allowDrag,\n      allowResize,\n      scrollSpeed,\n    } = this.props;\n\n    const draftData = {\n      ...payload, startDate: this.appointmentStartTime, endDate: this.appointmentEndTime,\n    };\n\n    return (\n      <Plugin\n        name=\"DragDropProvider\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"body\">\n          <TemplateConnector>\n            {({\n              viewCellsData, allDayCellsData, startViewDate, endViewDate, excludedDays,\n              timeTableElementsMeta, allDayElementsMeta, scrollingStrategy,\n              grouping, resources, groups, currentView, groupByDate, groupOrientation,\n            }, {\n              changeAppointment, startEditAppointment, finishCommitAppointment,\n            }) => {\n              const calculateBoundariesByMove = this.calculateNextBoundaries({\n                viewCellsData, allDayCellsData, currentView,\n                startViewDate, endViewDate, excludedDays,\n                timeTableElementsMeta, allDayElementsMeta, scrollingStrategy,\n                resources, grouping, groups, groupByDate, groupOrientation,\n              }, { changeAppointment, startEditAppointment }, scrollSpeed);\n              return (\n                <DragDropProviderCore\n                  onChange={this.onPayloadChange({ finishCommitAppointment })}\n                >\n                  <DropTarget\n                    onOver={calculateBoundariesByMove}\n                    onEnter={calculateBoundariesByMove}\n                    onDrop={this.handleDrop({ finishCommitAppointment })}\n                    onLeave={this.handleLeave}\n                  >\n                    <PlaceholderWithRef />\n                  </DropTarget>\n                </DragDropProviderCore>\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n\n        <Template\n          name=\"appointmentContent\"\n          predicate={({ data }: any) => allowDrag!(data)}\n          key={appointmentContentTemplateKey}\n        >\n          {({ styles, ...params }: any) => (\n            <DragSource\n              payload={{ ...params.data, type: params.type }}\n            >\n              {payload && params.data.id === payload.id ? (\n                <SourceAppointment {...params} />\n              ) : (\n                <PlaceholderWithRef params={{ ...params, draggable: true }} />\n              )}\n            </DragSource>\n          )}\n        </Template>\n\n        <Template\n          name=\"appointmentTop\"\n          predicate={(params: any) => !params.slice && allowResize!(params.data)}\n          key={appointmentTopTemplateKey}\n        >\n          {({ data, type }: any) => (\n            <DragSource\n              payload={{ ...data, type: RESIZE_TOP, appointmentType: type }}\n            >\n              <Resize position={POSITION_START} appointmentType={type} />\n            </DragSource>\n          )}\n        </Template>\n\n        <Template\n          name=\"appointmentBottom\"\n          predicate={(params: any) => !params.slice && allowResize!(params.data)}\n          key={appointmentBottomTemplateKey}\n        >\n          {({ data, type }: any) => (\n            <DragSource\n              payload={{ ...data, type: RESIZE_BOTTOM, appointmentType: type }}\n            >\n              <Resize position={POSITION_END} appointmentType={type} />\n            </DragSource>\n          )}\n        </Template>\n\n        <Template name=\"allDayPanel\">\n          <TemplateConnector>\n            {({ currentView, groupOrientation }) => (\n              <>\n                <TemplatePlaceholder />\n                {groupOrientation?.(currentView.name) !== VERTICAL_GROUP_ORIENTATION\n                  ? renderAppointmentItems(this.allDayDraftAppointments, Container, draftData)\n                  : null}\n              </>\n            )}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"timeTable\">\n          <TemplateConnector>\n            {({ currentView, groupOrientation }) => (\n              <>\n                <TemplatePlaceholder />\n                {renderAppointmentItems(this.timeTableDraftAppointments, Container, draftData)}\n                {groupOrientation?.(currentView.name) === VERTICAL_GROUP_ORIENTATION\n                  ? renderAppointmentItems(this.allDayDraftAppointments, Container, draftData)\n                  : null}\n              </>\n            )}\n          </TemplateConnector>\n        </Template>\n\n        <Template name=\"draftAppointment\">\n          {({ data, draftAppointment, ...restParams }: any) => (\n            <TemplateConnector>\n              {({ formatDate, resources, plainResources }) => {\n                const {\n                  dataItem, type, fromPrev, toNext, durationType, ...geometry\n                } = draftAppointment;\n                return (\n                  <DraftAppointment\n                    data={data}\n                    resources={getAppointmentResources(dataItem, resources, plainResources)}\n                    durationType={durationType}\n                    style={getAppointmentStyle(geometry)}\n                    type={type}\n                    fromPrev={fromPrev}\n                    toNext={toNext}\n                    formatDate={formatDate}\n                    {...restParams}\n                  />\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that enables users to edit appointments via drag-and-drop. */\nexport const DragDropProvider: React.ComponentType<DragDropProviderProps> = DragDropProviderBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport { TodayButtonProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Toolbar' },\n  { name: 'ViewState' },\n];\n\nconst defaultMessages = {\n  today: 'Today',\n};\n\nclass TodayButtonBase extends React.PureComponent<TodayButtonProps> {\n  static components: PluginComponents = {\n    buttonComponent: 'Button',\n  };\n  render() {\n    const {\n      buttonComponent: Button,\n      messages,\n    } = this.props;\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    return (\n      <Plugin\n        name=\"TodayButton\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplateConnector>\n            {(getters, {\n              changeCurrentDate,\n            }) => {\n              const setCurrentDate = nextDate => changeCurrentDate({\n                nextDate,\n              });\n              return (\n                <Button\n                  getMessage={getMessage}\n                  setCurrentDate={setCurrentDate}\n                />\n              );\n            }}\n          </TemplateConnector>\n          <TemplatePlaceholder />\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the Scheduler's button which sets the current date to today's date. */\nexport const TodayButton: React.ComponentType<TodayButtonProps> = TodayButtonBase;\n","import * as React from 'react';\nimport { memoize, getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Plugin, Template, TemplatePlaceholder, TemplateConnector, Action, Getters, Actions,\n} from '@devexpress/dx-react-core';\nimport { RECURRENCE_EDIT_SCOPE } from '@devexpress/dx-scheduler-core';\nimport { EditRecurrenceMenuProps, EditRecurrenceMenuState } from '../types';\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n];\n\nconst defaultAvailableOperations = [\n  { value: RECURRENCE_EDIT_SCOPE.CURRENT },\n  { value: RECURRENCE_EDIT_SCOPE.CURRENT_AND_FOLLOWING },\n  { value: RECURRENCE_EDIT_SCOPE.ALL },\n];\n\nconst defaultMessages = {\n  [RECURRENCE_EDIT_SCOPE.CURRENT]: 'This appointment',\n  [RECURRENCE_EDIT_SCOPE.CURRENT_AND_FOLLOWING]: 'This and following appointments',\n  [RECURRENCE_EDIT_SCOPE.ALL]: 'All appointments',\n  menuEditingTitle: 'Edit recurring appointment',\n  menuDeletingTitle: 'Delete recurring appointment',\n  cancelButton: 'Cancel',\n  commitButton: 'OK',\n};\n\nclass EditRecurrenceMenuBase extends React.PureComponent<\n  EditRecurrenceMenuProps, EditRecurrenceMenuState\n> {\n  static components = {\n    layoutComponent: 'Layout',\n    overlayComponent: 'Overlay',\n    buttonComponent: 'Button',\n    containerComponent: 'Container',\n  };\n\n  modalContainer = React.createRef();\n\n  state = {\n    isOpen: false,\n    deletedAppointmentData: null,\n  };\n\n  finishCommitAppointment = (\n    payload,\n    { editingAppointment }: Getters,\n    { commitChangedAppointment }: Actions,\n  ) => {\n    if (editingAppointment && !editingAppointment.rRule) {\n      commitChangedAppointment();\n    } else {\n      this.setState({\n        isOpen: true, deletedAppointmentData: null,\n      });\n    }\n  }\n\n  finishDeleteAppointment = (\n    payload,\n    getters,\n    { commitDeletedAppointment }: Actions,\n  ) => {\n    if (payload && !payload.rRule) {\n      commitDeletedAppointment({ deletedAppointmentData: payload });\n    } else {\n      this.setState({\n        isOpen: true, deletedAppointmentData: payload,\n      });\n    }\n  }\n\n  commit = memoize((editAction, deleteAction, payload) => (type) => {\n    if (payload) {\n      deleteAction({ deletedAppointmentData: payload, type });\n    } else {\n      editAction(type);\n    }\n    this.closeMenu();\n  });\n\n  closeMenu = () => {\n    this.setState({ isOpen: false, deletedAppointmentData: null });\n  }\n\n  cancelEditing = memoize((cancelAction, stopEditAction) => () => {\n    stopEditAction();\n    cancelAction();\n    this.closeMenu();\n  });\n\n  availableOperations = memoize((getMessage, menuAvailableOperations) =>\n    menuAvailableOperations.map(({ value }) => ({\n      value,\n      title: getMessage([value]),\n    })));\n\n  getMessage = memoize((messages, menuMessages) =>\n    getMessagesFormatter({ ...menuMessages, ...messages }));\n\n  render() {\n    const { isOpen, deletedAppointmentData } = this.state;\n    const {\n      layoutComponent: Layout,\n      overlayComponent: Overlay,\n      containerComponent: Container,\n      buttonComponent,\n      messages,\n    } = this.props;\n\n    const getMessage = this.getMessage(messages, defaultMessages);\n    const availableOperations = this.availableOperations(getMessage, defaultAvailableOperations);\n\n    return (\n      <Plugin\n        name=\"EditRecurrenceMenu\"\n        dependencies={pluginDependencies}\n      >\n        <Action name=\"finishCommitAppointment\" action={this.finishCommitAppointment} />\n        <Action name=\"finishDeleteAppointment\" action={this.finishDeleteAppointment} />\n\n        <Template name=\"schedulerRoot\">\n          <TemplatePlaceholder />\n          <Container ref={this.modalContainer} />\n          <TemplatePlaceholder name=\"overlay\" />\n        </Template>\n\n        <Template name=\"overlay\">\n          <TemplateConnector>\n            {(getters, {\n              commitChangedAppointment, commitDeletedAppointment,\n              cancelChangedAppointment, stopEditAppointment,\n            }) => {\n              const commit = this.commit(\n                commitChangedAppointment, commitDeletedAppointment, deletedAppointmentData,\n              );\n              const cancelEditing = this.cancelEditing(\n                cancelChangedAppointment, stopEditAppointment,\n              );\n\n              return (\n                <Overlay\n                  target={this.modalContainer}\n                  visible={isOpen}\n                  onHide={this.closeMenu}\n                >\n                  <Layout\n                    isDeleting={!!deletedAppointmentData}\n                    buttonComponent={buttonComponent}\n                    handleClose={cancelEditing}\n                    commit={commit}\n                    availableOperations={availableOperations}\n                    getMessage={getMessage}\n                  />\n                </Overlay>\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/**\n * A plugin that renders the Scheduler's edit menu.\n * Should not be used with the `IntegratedEditing` plugin.\n */\nexport const EditRecurrenceMenu: React.ComponentType<\n  EditRecurrenceMenuProps\n> = EditRecurrenceMenuBase;\n","import * as React from 'react';\nimport { Action, Plugin, Actions } from '@devexpress/dx-react-core';\nimport { IntegratedEditingProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n];\n\nclass IntegratedEditingBase extends React.PureComponent<IntegratedEditingProps> {\n  static defaultProps = {\n    totalCount: 0,\n  };\n\n  finishCommitAppointment = (payload, getters, { commitChangedAppointment }: Actions) => {\n    commitChangedAppointment();\n  }\n\n  finishDeleteAppointment = (payload, getters, { commitDeletedAppointment }: Actions) => {\n    commitDeletedAppointment({ deletedAppointmentData: payload });\n  }\n\n  render() {\n    return (\n      <Plugin\n        name=\"IntegratedEditing\"\n        dependencies={pluginDependencies}\n      >\n        <Action name=\"finishCommitAppointment\" action={this.finishCommitAppointment} />\n        <Action name=\"finishDeleteAppointment\" action={this.finishDeleteAppointment} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that allows implementing a editing calculation logic. */\nexport const IntegratedEditing: React.ComponentType<IntegratedEditingProps> = IntegratedEditingBase;\n","import * as React from 'react';\nimport { Plugin, Getter, Getters } from '@devexpress/dx-react-core';\nimport {\n  convertResourcesToPlain, validateResources, addResourcesToAppointments,\n} from '@devexpress/dx-scheduler-core';\nimport { ResourcesProps } from '../types/resources/resources.types';\n\nconst pluginDependencies = [\n  { name: 'Appointments' },\n];\n\nconst addResourcesToTimeTableAppointments = ({\n  timeTableAppointments, resources, plainResources,\n}: Getters) => timeTableAppointments\n  && addResourcesToAppointments(timeTableAppointments[0], resources, plainResources);\nconst addResourcesToAllDayAppointments = ({\n    allDayAppointments, resources, plainResources,\n  }: Getters) => allDayAppointments\n    && addResourcesToAppointments(allDayAppointments[0], resources, plainResources);\n\nconst ResourcesBase: React.FunctionComponent<ResourcesProps> = React.memo(({\n  data, mainResourceName, palette,\n}) => {\n  const convertResources = ({ resources }: Getters) =>\n    convertResourcesToPlain(resources);\n\n  return (\n  <Plugin\n    name=\"Resources\"\n    dependencies={pluginDependencies}\n  >\n    <Getter name=\"resources\" value={validateResources(data, mainResourceName, palette)} />\n    <Getter name=\"plainResources\" computed={convertResources} />\n    <Getter name=\"timeTableAppointments\" computed={addResourcesToTimeTableAppointments} />\n    <Getter name=\"allDayAppointments\" computed={addResourcesToAllDayAppointments} />\n  </Plugin>\n  );\n});\n\n/** A plugin that manages schedule's resources. */\nexport const Resources: React.ComponentType<ResourcesProps> = ResourcesBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  Action,\n} from '@devexpress/dx-react-core';\nimport { ConfirmationDialogProps } from '../types/editing/confirmation-dialog.types';\nimport { AppointmentModel } from '@devexpress/dx-scheduler-core';\n\nconst defaultMessages = {\n  discardButton: 'Discard',\n  deleteButton: 'Delete',\n  cancelButton: 'Cancel',\n  confirmDeleteMessage: 'Are you sure you want to delete this appointment?',\n  confirmCancelMessage: 'Discard unsaved changes?',\n};\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n  { name: 'EditRecurrenceMenu', optional: true },\n  { name: 'IntegratedEditing', optional: true },\n];\n\nconst ACTION_TYPES = {\n  CANCEL: 'cancel',\n  DELETE: 'delete',\n};\n\nconst ConfirmationDialogBase: React.FunctionComponent<ConfirmationDialogProps> & {components: {\n  overlayComponent: string, containerComponent: string,\n  layoutComponent: string, buttonComponent: string,\n}} = ({\n  messages, overlayComponent: Overlay, layoutComponent: Layout, containerComponent: Container,\n  buttonComponent, ignoreDelete, ignoreCancel,\n}) => {\n  const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n  const modalContainer = React.useRef();\n\n  const [visible, setVisible] = React.useState(false);\n  const [actionType, setActionType] = React.useState('');\n  const [hideActionName, setHideActionName] = React.useState('');\n  const [appointmentData, setAppointmentData] = React.useState({});\n\n  const toggleVisibility = React.useCallback(() => {\n    setVisible(!visible);\n  }, [visible, setVisible]);\n\n  const confirmCancelChanges = React.useCallback((hideAction) => {\n    toggleVisibility();\n    setHideActionName(hideAction);\n    setActionType(ACTION_TYPES.CANCEL);\n  }, [toggleVisibility, setHideActionName, setActionType]);\n\n  const confirmDelete = React.useCallback(({\n    hideActionName: hideAction, appointmentData: changedAppointment,\n  }) => {\n    toggleVisibility();\n    setHideActionName(hideAction);\n    setActionType(ACTION_TYPES.DELETE);\n    setAppointmentData(changedAppointment);\n  }, [toggleVisibility, setHideActionName, setActionType, setAppointmentData]);\n\n  const confirmAction = React.useCallback((\n    isNewAppointment, hideEditor, stopEditAppointment, finishDeleteAppointment,\n    cancelAddedAppointment, cancelChangedAppointment,\n  ) => () => {\n    hideEditor();\n    toggleVisibility();\n    if (isNewAppointment) {\n      cancelAddedAppointment();\n    } else {\n      stopEditAppointment();\n      cancelChangedAppointment();\n    }\n    if (actionType === ACTION_TYPES.DELETE) {\n      finishDeleteAppointment(appointmentData);\n    }\n  }, [toggleVisibility, actionType, appointmentData]);\n\n  return (\n    <Plugin\n      name=\"ConfirmationDialog\"\n      dependencies={pluginDependencies}\n    >\n      {!ignoreCancel &&\n        <Action name=\"openCancelConfirmationDialog\" action={confirmCancelChanges} />\n      }\n      {!ignoreDelete &&\n        <Action name=\"openDeleteConfirmationDialog\" action={confirmDelete} />\n      }\n\n      <Template name=\"schedulerRoot\">\n        <TemplatePlaceholder />\n        <Container ref={modalContainer} />\n        <TemplatePlaceholder name=\"confirmationDialogOverlay\" />\n      </Template>\n\n      <Template name=\"confirmationDialogOverlay\">\n        <TemplateConnector>\n          {({\n            editingAppointment,\n          }, actions) => {\n            const handleConfirm = confirmAction(\n              !editingAppointment, actions[hideActionName], actions.stopEditAppointment,\n              actions.finishDeleteAppointment, actions.cancelAddedAppointment,\n              actions.cancelChangedAppointment,\n            );\n\n            return (\n              <Overlay\n                target={modalContainer}\n                visible={visible}\n                onHide={toggleVisibility}\n              >\n                <Layout\n                  buttonComponent={buttonComponent}\n                  handleCancel={toggleVisibility}\n                  handleConfirm={handleConfirm}\n                  getMessage={getMessage}\n                  isDeleting={actionType === ACTION_TYPES.DELETE}\n                  appointmentData={appointmentData as AppointmentModel}\n                />\n              </Overlay>\n            );\n          }}\n        </TemplateConnector>\n      </Template>\n    </Plugin>\n  );\n};\n\nConfirmationDialogBase.components = {\n  overlayComponent: 'Overlay',\n  containerComponent: 'Container',\n  layoutComponent: 'Layout',\n  buttonComponent: 'Button',\n};\n\nConfirmationDialogBase.defaultProps = {\n  ignoreCancel: false,\n  ignoreDelete: false,\n};\n\n// tslint:disable-next-line: max-line-length\n/** A plugin that renders the dialog which allows users to confirm or to discard delete and cancel appointment actions. */\nexport const ConfirmationDialog: React.ComponentType<\n  ConfirmationDialogProps\n> = ConfirmationDialogBase;\n","import * as React from 'react';\nimport {\n  Action, Plugin, Getter, StateHelper, ActionFn, createStateHelper,\n} from '@devexpress/dx-react-core';\nimport {\n  ToggleGroupPayload, toggleExpandedGroups, HORIZONTAL_GROUP_ORIENTATION,\n} from '@devexpress/dx-scheduler-core';\nimport { GroupingStateProps, GroupingStateState } from '../types';\n\nclass GroupingStateBase extends React.PureComponent<GroupingStateProps, GroupingStateState> {\n  static defaultProps = {\n    defaultExpandedGroups: [],\n    groupByDate: () => false,\n    groupOrientation: () => HORIZONTAL_GROUP_ORIENTATION,\n  };\n  stateHelper: StateHelper;\n  toggleGroupExpanded: ActionFn<ToggleGroupPayload>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      grouping: props.grouping,\n      expandedGroups: props.expandedGroups || props.defaultExpandedGroups,\n    };\n    this.stateHelper = createStateHelper(\n      this,\n      {\n        expandedGroups: () => {\n          const { onExpandedGroupsChange } = this.props;\n          return onExpandedGroupsChange;\n        },\n      },\n    );\n    this.toggleGroupExpanded = this.stateHelper.applyReducer\n      .bind(this.stateHelper, toggleExpandedGroups);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      grouping = prevState.grouping,\n      expandedGroups = prevState.expandedGroups,\n    } = nextProps;\n\n    return { grouping, expandedGroups };\n  }\n\n  render() {\n    const { grouping, expandedGroups } = this.state;\n    const { groupByDate, groupOrientation } = this.props;\n\n    return (\n      <Plugin name=\"GroupingState\">\n        <Getter name=\"grouping\" value={grouping} />\n        <Getter name=\"groupByDate\" value={groupByDate} />\n        <Getter name=\"groupOrientation\" value={groupOrientation} />\n\n        <Getter name=\"expandedGroups\" value={expandedGroups} />\n        <Action name=\"toggleGroupExpanded\" action={this.toggleGroupExpanded} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the grouping state. */\nexport const GroupingState: React.ComponentType<GroupingStateProps> = GroupingStateBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  Template,\n  TemplateConnector,\n  PluginComponents,\n} from '@devexpress/dx-react-core';\nimport { GroupingPanelProps } from '../types';\nimport {\n  VERTICAL_VIEW_LEFT_OFFSET, HORIZONTAL_VIEW_LEFT_OFFSET,\n  HORIZONTAL_GROUP_ORIENTATION, VIEW_TYPES,\n} from '@devexpress/dx-scheduler-core';\n\nconst pluginDependencies = [\n  { name: 'GroupingState' },\n  { name: 'IntegratedGrouping' },\n  { name: 'DayView', optional: true },\n  { name: 'MonthView', optional: true },\n  { name: 'WeekView', optional: true },\n  { name: 'ViewState', optional: true },\n];\n\nclass GroupingPanelBase extends React.PureComponent<GroupingPanelProps> {\n  static components: PluginComponents = {\n    horizontalLayoutComponent: 'HorizontalLayout',\n    verticalLayoutComponent: 'VerticalLayout',\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n  };\n\n  render() {\n    const {\n      horizontalLayoutComponent: HorizontalLayout,\n      verticalLayoutComponent: VerticalLayout,\n      rowComponent,\n      cellComponent,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"GroupingPanel\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"groupingPanel\">\n          <TemplateConnector>\n            {({\n              viewCellsData, currentView, scrollingStrategy, allDayPanelExists,\n              groupByDate, groupOrientation: getGroupOrientation, groups,\n            }) => {\n              const groupOrientation = getGroupOrientation(currentView?.name);\n              return groupOrientation === HORIZONTAL_GROUP_ORIENTATION ? (\n                <HorizontalLayout\n                  rowComponent={rowComponent}\n                  cellComponent={cellComponent}\n                  groups={groups}\n                  colSpan={viewCellsData[0].length}\n                  cellStyle={{\n                    left: scrollingStrategy.fixedLeftWidth ? scrollingStrategy.fixedLeftWidth\n                    : currentView?.type === VIEW_TYPES.MONTH\n                      ? HORIZONTAL_VIEW_LEFT_OFFSET\n                      : VERTICAL_VIEW_LEFT_OFFSET,\n                  }}\n                  showHeaderForEveryDate={groupByDate?.(currentView && currentView.name)}\n                />\n              ) : (\n                <VerticalLayout\n                  rowComponent={rowComponent}\n                  cellComponent={cellComponent}\n                  groups={groups}\n                  rowSpan={viewCellsData.length}\n                  viewType={currentView?.type}\n                  cellTextTopOffset={scrollingStrategy?.fixedTopHeight}\n                  alignWithAllDayRow={allDayPanelExists}\n                />\n              );\n            }}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the grouping panel used to display group names. */\nexport const GroupingPanel: React.ComponentType<GroupingPanelProps> = GroupingPanelBase;\n","import * as React from 'react';\nimport {\n  Plugin,\n  Template,\n  TemplatePlaceholder,\n} from '@devexpress/dx-react-core';\nimport {\n  isMonthCell, isShadedAppointment,\n  isCellShaded, getCurrentTimeIndicatorTop,\n} from '@devexpress/dx-scheduler-core';\nimport { CurrentTimeIndicatorProps, Appointments } from '../types';\n\nconst pluginDependencies = [\n  { name: 'DayView', optional: true },\n  { name: 'WeekView', optional: true },\n  { name: 'MonthView', optional: true },\n  { name: 'DragDropProvider', optional: true },\n  { name: 'Appointments', optional: true },\n];\n\nconst CurrentTimeIndicatorBase: React.FunctionComponent<CurrentTimeIndicatorProps>  & {components: {\n  indicatorComponent: string,\n}} = ({\n  indicatorComponent, shadePreviousAppointments, shadePreviousCells, updateInterval,\n}) => {\n  const [currentTime, setCurrentTime] = React.useState(Date.now);\n\n  React.useEffect(() => {\n    const tick = () => setCurrentTime(Date.now());\n    const intervalId = (updateInterval\n      ? window.setInterval(tick, updateInterval)\n      : undefined\n    );\n    return () => window.clearInterval(intervalId);\n  }, [updateInterval]);\n\n  return (\n    <Plugin\n      name=\"CurrentTimeIndicator\"\n      dependencies={pluginDependencies}\n    >\n      <Template\n        name=\"cell\"\n        predicate={({ otherMonth }: any) => !isMonthCell(otherMonth)}\n      >\n        {(params: any) => (\n          <TemplatePlaceholder\n            params={{\n              ...params,\n              currentTimeIndicatorPosition: getCurrentTimeIndicatorTop(params, currentTime),\n              currentTimeIndicatorComponent: indicatorComponent,\n            }}\n          />\n        )}\n      </Template>\n      <Template\n        name=\"cell\"\n      >\n        {(params: any) => (\n          <TemplatePlaceholder\n            params={{\n              ...params,\n              isShaded: isCellShaded(params, currentTime, shadePreviousCells),\n            }}\n          />\n        )}\n      </Template>\n      <Template\n        name=\"appointmentContent\"\n      >\n        {(params: Appointments.AppointmentProps) => (\n          <TemplatePlaceholder\n            params={{\n              ...params,\n              isShaded: isShadedAppointment(\n                params, currentTime, shadePreviousAppointments,\n              ),\n            }}\n          />\n        )}\n      </Template>\n      <Template\n        name=\"draftAppointment\"\n      >\n        {(params: Appointments.AppointmentProps) => (\n          <TemplatePlaceholder\n            params={{\n              ...params,\n              isShaded: isShadedAppointment(\n                params, currentTime, shadePreviousAppointments,\n              ),\n            }}\n          />\n        )}\n      </Template>\n    </Plugin>\n  );\n};\n\nCurrentTimeIndicatorBase.defaultProps = {\n  updateInterval: 60000,\n  shadePreviousCells: false,\n  shadePreviousAppointments: false,\n};\n\nCurrentTimeIndicatorBase.components = {\n  indicatorComponent: 'Indicator',\n};\n\n// tslint:disable-next-line: max-line-length\n/** A plugin that renders the current time indicator and the shading that covers appointments and timetable cells up to the current time. */\nexport const CurrentTimeIndicator: React.ComponentType<\n  CurrentTimeIndicatorProps\n> = CurrentTimeIndicatorBase;\n","import * as React from 'react';\nimport { Plugin, Getter, Getters } from '@devexpress/dx-react-core';\nimport {\n  getGroupsFromResources, expandViewCellsDataWithGroups,\n  sortFilteredResources, filterResourcesByGrouping, updateGroupingWithMainResource,\n  expandGroups, VERTICAL_GROUP_ORIENTATION, VIEW_TYPES,\n  updateTimeTableCellElementsMeta, updateAllDayCellElementsMeta, updateTimeCellsData,\n} from '@devexpress/dx-scheduler-core';\nimport { IntegratedGroupingProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Resources' },\n  { name: 'GroupingState' },\n  { name: 'DayView', optional: true },\n  { name: 'MonthView', optional: true },\n  { name: 'WeekView', optional: true },\n];\n\nconst getViewCellsDataComputed = ({\n  viewCellsData, groups, resourcesToGroupBy, groupByDate, currentView, groupOrientation,\n}: Getters) => expandViewCellsDataWithGroups(\n  viewCellsData, groups, resourcesToGroupBy,\n  groupByDate(currentView.name), groupOrientation(currentView.name),\n);\nconst getAllDayCellsDataComputed = ({\n  allDayCellsData, groups, resourcesToGroupBy, groupByDate, currentView, groupOrientation,\n}: Getters) => allDayCellsData && expandViewCellsDataWithGroups(\n  allDayCellsData, groups, resourcesToGroupBy,\n  groupByDate(currentView.name), groupOrientation(currentView.name),\n);\n\nconst getGroupsComputed = (\n  { resourcesToGroupBy }: Getters,\n) => getGroupsFromResources(resourcesToGroupBy);\n\nconst getResourcesToGroupByComputed = (\n  { resources, grouping }: Getters,\n) => sortFilteredResources(filterResourcesByGrouping(resources, grouping), grouping);\n\nconst getGroupingComputed = (\n  { grouping, resources }: Getters,\n) => updateGroupingWithMainResource(grouping, resources);\n\nconst getTimeTableAppointmentsComputed = ({\n  timeTableAppointments, grouping, resourcesToGroupBy,\n  groups, groupByDate, currentView, excludedDays,\n}: Getters) => timeTableAppointments\n  && expandGroups(\n    timeTableAppointments, grouping, resourcesToGroupBy, groups,\n    excludedDays, groupByDate(currentView?.name) && currentView?.type === VIEW_TYPES.MONTH,\n  );\n\nconst getAllDayAppointmentsComputed = ({\n    allDayAppointments, grouping, resourcesToGroupBy,\n    groups, groupByDate, currentView, excludedDays,\n  }: Getters) => allDayAppointments &&\n  expandGroups(\n    allDayAppointments, grouping, resourcesToGroupBy,\n    groups, excludedDays, groupByDate(currentView?.name),\n  );\n\nconst getGroupByDateComputed = ({\n  currentView, groupByDate, groupOrientation,\n}: Getters) => groupOrientation(currentView?.name) === VERTICAL_GROUP_ORIENTATION\n  ? () => false : groupByDate;\n\nconst getTimeTableElementsMetaComputed = ({\n  timeTableElementsMeta, groupOrientation, groups, allDayPanelExists, viewCellsData, currentView,\n}: Getters) => updateTimeTableCellElementsMeta(\n  timeTableElementsMeta, groupOrientation, groups, allDayPanelExists, viewCellsData, currentView,\n);\n\nconst getAllDayElementsMetaComputed = ({\n  allDayElementsMeta, timeTableElementsMeta, groupOrientation, groups,\n  allDayPanelExists, viewCellsData, currentView,\n}: Getters) => updateAllDayCellElementsMeta(\n  allDayElementsMeta, timeTableElementsMeta, groupOrientation, groups,\n  allDayPanelExists, viewCellsData, currentView,\n);\n\nconst getTimeCellsDataComputed = ({\n  viewCellsData, timeCellsData,  currentView,\n  groups, resourcesToGroupBy, groupOrientation,\n}: Getters) => timeCellsData\n  && updateTimeCellsData(\n    viewCellsData,\n    timeCellsData,\n    groups,\n    resourcesToGroupBy,\n    groupOrientation(currentView.name),\n  );\n\nconst IntegratedGroupingBase: React.FunctionComponent<IntegratedGroupingProps> = React.memo(() => (\n  <Plugin\n    name=\"IntegratedGrouping\"\n    dependencies={pluginDependencies}\n  >\n    <Getter name=\"groupByDate\" computed={getGroupByDateComputed} />\n    <Getter name=\"grouping\" computed={getGroupingComputed} />\n    <Getter name=\"resourcesToGroupBy\" computed={getResourcesToGroupByComputed} />\n    <Getter name=\"groups\" computed={getGroupsComputed} />\n\n    <Getter name=\"viewCellsData\" computed={getViewCellsDataComputed} />\n    <Getter name=\"allDayCellsData\" computed={getAllDayCellsDataComputed} />\n    <Getter name=\"timeCellsData\" computed={getTimeCellsDataComputed} />\n\n    <Getter name=\"timeTableAppointments\" computed={getTimeTableAppointmentsComputed} />\n    <Getter name=\"allDayAppointments\" computed={getAllDayAppointmentsComputed} />\n\n    <Getter name=\"allDayElementsMeta\" computed={getAllDayElementsMetaComputed} />\n    <Getter name=\"timeTableElementsMeta\" computed={getTimeTableElementsMetaComputed} />\n  </Plugin>\n));\n\n/** A plugin that implements grouping. */\nexport const IntegratedGrouping: React.ComponentType<\n  IntegratedGroupingProps\n> = IntegratedGroupingBase;\n"],"names":["memoize","formatDateTimeGetter","React.createElement","Plugin","Getter","appointments","Template","TemplatePlaceholder","React.PureComponent","PluginHost","startViewDateCore","endViewDateCore","computed","availableViewsCore","TemplateConnector","VERTICAL_GROUP_ORIENTATION","HORIZONTAL_GROUP_ORIENTATION","calculateWeekDateIntervals","timeCellsDataCore","getTimeTableHeight","viewCellsDataCore","VIEW_TYPES","viewCellsDataBaseComputed","monthCellsData","calculateAppointmentsIntervalsBaseComputed","calculateMonthDateIntervals","viewBoundText","React.Fragment","pluginDependencies","getAppointmentStyle","isTimeTableElementsMetaActual","getGroupsLastRow","VERTICAL_TYPE","getVerticalRectByAppointmentData","HORIZONTAL_TYPE","getHorizontalRectByAppointmentData","calculateRectByDateAndGroupIntervals","isAllDayElementsMetaActual","createClickHandlers","POSITION_START","POSITION_END","CellPlaceholder","allDayCells","calculateAllDayDateIntervals","getMessagesFormatter","createStateHelper","changeCurrentDate","setCurrentViewName","Action","addAppointment","changeAppointment","cancelAddedAppointment","startEditAppointment","stopEditAppointment","cancelChanges","RECURRENCE_EDIT_SCOPE","changedAppointmentById","preCommitChangesBase","OPEN_COMMAND_BUTTON","CLOSE_COMMAND_BUTTON","DELETE_COMMAND_BUTTON","setAppointmentMeta","TOGGLE_APPOINTMENT_TOOLTIP_VISIBILITY","getAppointmentResources","checkMultipleResourceFields","callActionIfExists","defaultMessages","React.createRef","TOGGLE_APPOINTMENT_FORM_VISIBILITY","setAppointmentData","isAllDayCell","autoScroll","cellIndex","cellData","cellType","calculateInsidePart","intervalDuration","calculateAppointmentTimeBoundaries","calculateAppointmentGroups","appointmentDragged","calculateDraftAppointments","DragDropProviderCore","DropTarget","PlaceholderWithRef","DragSource","RESIZE_TOP","RESIZE_BOTTOM","SCROLL_SPEED_PX","addResourcesToAppointments","React.memo","convertResourcesToPlain","validateResources","React.useRef","React.useState","React.useCallback","toggleExpandedGroups","HORIZONTAL_VIEW_LEFT_OFFSET","VERTICAL_VIEW_LEFT_OFFSET","React.useEffect","isMonthCell","getCurrentTimeIndicatorTop","isCellShaded","isShadedAppointment","expandViewCellsDataWithGroups","getGroupsFromResources","sortFilteredResources","filterResourcesByGrouping","updateGroupingWithMainResource","expandGroups","updateTimeTableCellElementsMeta","updateAllDayCellElementsMeta","updateTimeCellsData"],"mappings":"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"}