{"version":3,"file":"dx-react-grid.umd.cjs","sources":["../src/plugins/internal/table-group-row-columns.tsx","../src/plugins/internal/grid-core-getters.tsx","../src/plugins/internal/table-columns-getter.tsx","../src/plugins/internal/visible-table-columns.tsx","../src/plugins/internal/ordered-table-columns.tsx","../src/plugins/grid-core.tsx","../src/grid.tsx","../src/plugins/column-chooser.tsx","../src/plugins/filtering-state.tsx","../src/plugins/integrated-filtering.tsx","../src/plugins/editing-state.tsx","../src/plugins/paging-state.tsx","../src/plugins/integrated-paging.tsx","../src/plugins/custom-paging.tsx","../src/plugins/grouping-state.tsx","../src/plugins/integrated-grouping.tsx","../src/plugins/custom-grouping.tsx","../src/plugins/selection-state.tsx","../src/plugins/integrated-selection.tsx","../src/plugins/sorting-state.tsx","../src/plugins/integrated-sorting.tsx","../src/plugins/drag-drop-provider.tsx","../src/plugins/table-column-reordering.tsx","../src/plugins/table.tsx","../src/plugins/table-selection.tsx","../src/plugins/row-detail-state.tsx","../src/plugins/table-row-detail.tsx","../src/components/summary/constants.ts","../src/components/summary/table-summary-content.tsx","../src/components/summary/group-summaries.tsx","../src/plugins/table-group-row.tsx","../src/plugins/table-header-row.tsx","../src/plugins/table-band-header.tsx","../src/plugins/table-filter-row.tsx","../src/plugins/table-edit-row.tsx","../src/plugins/table-edit-column.tsx","../src/plugins/table-column-resizing.tsx","../src/plugins/paging-panel.tsx","../src/components/group-panel-layout/item-layout.tsx","../src/components/group-panel-layout.tsx","../src/plugins/grouping-panel.tsx","../src/plugins/data-type-provider.tsx","../src/plugins/table-column-visibility.tsx","../src/plugins/toolbar.tsx","../src/plugins/tree-data-state.tsx","../src/plugins/custom-tree-data.tsx","../src/plugins/table-tree-column.tsx","../src/plugins/search-state.tsx","../src/plugins/search-panel.tsx","../src/plugins/table-fixed-columns.tsx","../src/plugins/summary-state.tsx","../src/plugins/integrated-summary.tsx","../src/plugins/custom-summary.tsx","../src/plugins/table-summary-row.tsx","../src/plugins/virtual-table/virtual-table-state.tsx","../src/plugins/table-inline-cell-editing.tsx","../src/plugins/export-panel.tsx","../src/plugins/table-keyboard-navigation.tsx","../src/utils/helpers.ts","../src/components/table-layout.tsx","../src/components/table-layout/virtual-row-layout.tsx","../src/components/table-layout/virtual-table-layout-block.tsx","../src/components/table-layout/column-group.tsx","../src/components/table-layout/virtual-table-layout.tsx","../src/components/table-layout/row-layout.tsx","../src/components/table-layout/rows-block-layout.tsx","../src/components/table-layout/static-table-layout.tsx","../src/plugins/virtual-table/virtual-table.tsx","../src/utils/row-cache.ts","../src/utils/with-keyboard-navigation.tsx","../src/components/summary/inline-summary-item.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n  Getter, Plugin, Getters,\n} from '@devexpress/dx-react-core';\nimport { tableColumnsWithGrouping } from '@devexpress/dx-grid-core';\nimport { ShowColumnWhenGroupedGetterFn, TableColumnsWithGroupingProps } from '../../types';\n\nconst showColumnWhenGroupedGetter: ShowColumnWhenGroupedGetterFn = (\n  showColumnsWhenGrouped, columnExtensions = [],\n) => {\n  const map = columnExtensions.reduce((acc, columnExtension) => {\n    acc[columnExtension.columnName] = columnExtension.showWhenGrouped;\n    return acc;\n  }, {});\n\n  return columnName => map[columnName] || showColumnsWhenGrouped;\n};\n\n/** @internal */\nexport const TableColumnsWithGrouping: React.FunctionComponent<\n  TableColumnsWithGroupingProps\n> = React.memo(({\n  indentColumnWidth, showColumnsWhenGrouped, columnExtensions,\n}) => {\n  const tableColumnsComputed = ({\n    columns, tableColumns, grouping, draftGrouping,\n  }: Getters) => tableColumnsWithGrouping(\n    columns,\n    tableColumns,\n    grouping,\n    draftGrouping,\n    indentColumnWidth!,\n    showColumnWhenGroupedGetter(showColumnsWhenGrouped!, columnExtensions),\n  );\n\n  return (\n    <Plugin>\n      <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n    </Plugin>\n  );\n});\n\nTableColumnsWithGrouping.defaultProps = {\n  indentColumnWidth: 0,\n};\n","import * as React from 'react';\nimport {\n  Getter, Plugin,\n} from '@devexpress/dx-react-core';\nimport { rowIdGetter, cellValueGetter } from '@devexpress/dx-grid-core';\nimport { GridCoreGettersProps } from '../../types';\n\nexport const GridCoreGetters: React.FunctionComponent<GridCoreGettersProps> = React.memo(({\n  rows,\n  columns,\n  getRowId,\n  getCellValue,\n}) => (\n  <Plugin>\n    <Getter name=\"rows\" value={rows} />\n    <Getter name=\"getRowId\" value={rowIdGetter(getRowId!, rows)} />\n    <Getter name=\"columns\" value={columns} />\n    <Getter name=\"getCellValue\" value={cellValueGetter(getCellValue!, columns)} />\n  </Plugin>\n));\n","import * as React from 'react';\nimport {\n  Getter, Plugin,\n} from '@devexpress/dx-react-core';\nimport { tableColumnsWithDataRows, checkTableColumnExtensions } from '@devexpress/dx-grid-core';\nimport { Table } from '../../types';\n\nexport const TableColumnsWithDataRowsGetter: React.FunctionComponent<\n  { columnExtensions?: Table.ColumnExtension[]; }\n> = React.memo(({ columnExtensions }) => {\n  const tableColumnsComputed = React.useCallback(\n    ({ columns }) => (\n      tableColumnsWithDataRows(columns, columnExtensions!)\n    ), [columnExtensions]);\n  checkTableColumnExtensions(columnExtensions!);\n\n  return (\n    <Plugin>\n      <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n    </Plugin>\n  );\n});\n","import * as React from 'react';\nimport {\n  Getter,\n  Plugin,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  visibleTableColumns,\n} from '@devexpress/dx-grid-core';\nimport { VisibleTableColumnsProps } from '../../types';\n\nconst visibleTableColumnsComputed = (\n  { tableColumns, hiddenColumnNames }: Getters,\n) => visibleTableColumns(tableColumns, hiddenColumnNames);\n\n/** @internal */\nexport const VisibleTableColumns: React.FunctionComponent<\n  VisibleTableColumnsProps\n> = React.memo(({\n  hiddenColumnNames,\n}) => (\n  <Plugin>\n    <Getter name=\"hiddenColumnNames\" value={hiddenColumnNames} />\n    <Getter name=\"tableColumns\" computed={visibleTableColumnsComputed} />\n  </Plugin>\n));\n\nVisibleTableColumns.defaultProps = {\n  hiddenColumnNames: [],\n};\n","import * as React from 'react';\nimport {\n  Getter,\n  Plugin,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  orderedColumns,\n} from '@devexpress/dx-grid-core';\nimport { OrderedTableColumnsProps } from '../../types';\n\n/** @internal */\nexport const OrderedTableColumns: React.FunctionComponent<\n  OrderedTableColumnsProps\n> = ({\n  order,\n}) => {\n  const columnsComputed = (\n    { tableColumns }: Getters,\n  ) => orderedColumns(tableColumns, order!);\n\n  return (\n    <Plugin>\n      <Getter name=\"tableColumns\" computed={columnsComputed} />\n    </Plugin>\n  );\n};\n\nOrderedTableColumns.defaultProps = {\n  order: [],\n};\n","import * as React from 'react';\nimport {\n  Plugin, Getter, Template, TemplatePlaceholder,\n} from '@devexpress/dx-react-core';\nimport { GridProps } from '../types';\nimport { GridCoreGetters } from './internal';\n\nexport class GridCore extends React.PureComponent<GridProps, any> {\n  rootRef: React.RefObject<HTMLTableElement>;\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      ref: {},\n    };\n    this.rootRef = React.createRef();\n  }\n\n  componentDidMount() {\n    this.setState({\n      ref: this.rootRef,\n    });\n  }\n\n  render() {\n    const {\n      rootComponent: Root,\n      ...restProps\n    } = this.props;\n    const { ref } = this.state;\n\n    return (\n      <Plugin>\n        <Getter name=\"skip\" value={0} />\n        <Getter name=\"loadedRowsStart\" value={0} />\n        <Getter name=\"rootRef\" value={ref} />\n        <GridCoreGetters {...restProps} />\n\n        <Template name=\"root\">\n          <Root rootRef={this.rootRef}>\n            <TemplatePlaceholder name=\"header\" />\n            <TemplatePlaceholder name=\"body\" />\n            <TemplatePlaceholder name=\"footer\" />\n          </Root>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n","import * as React from 'react';\nimport { PluginHost } from '@devexpress/dx-react-core';\nimport { GridCore } from './plugins/grid-core';\nimport { GridProps } from './types';\n\nconst GridBase: React.FunctionComponent<GridProps> = ({\n  rows,\n  columns,\n  getRowId,\n  getCellValue,\n  rootComponent,\n  children,\n}) => (\n  <PluginHost>\n    <GridCore\n      rows={rows}\n      columns={columns}\n      getRowId={getRowId}\n      getCellValue={getCellValue}\n      rootComponent={rootComponent}\n    />\n    {children}\n  </PluginHost>\n);\n\n/***\n * The Grid is a root container component designed to process and display data specified via\n * the `rows` property. You can configure columns using the `columns` property. The Grid's\n * functionality  is implemented in several plugins specified as child components.\n * See the plugins concept for details.\n * */\nexport const Grid: React.ComponentType<GridProps> = GridBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Template, TemplatePlaceholder, Plugin, TemplateConnector,\n} from '@devexpress/dx-react-core';\nimport { columnChooserItems } from '@devexpress/dx-grid-core';\nimport { ColumnChooserState, ColumnChooserProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'TableColumnVisibility' },\n  { name: 'Toolbar' },\n];\n\nclass ColumnChooserBase extends React.PureComponent<ColumnChooserProps, ColumnChooserState> {\n  static defaultProps = {\n    messages: {},\n  };\n  static components = {\n    overlayComponent: 'Overlay',\n    containerComponent: 'Container',\n    itemComponent: 'Item',\n    toggleButtonComponent: 'ToggleButton',\n  };\n  button!: React.ReactInstance;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      visible: false,\n    };\n\n    this.handleToggle = this.handleToggle.bind(this);\n    this.handleHide = this.handleHide.bind(this);\n    this.setButtonRef = this.setButtonRef.bind(this);\n  }\n\n  setButtonRef(button) {\n    this.button = button;\n  }\n\n  handleToggle() {\n    const { visible } = this.state;\n    this.setState({ visible: !visible });\n  }\n\n  handleHide() {\n    this.setState({ visible: false });\n  }\n\n  render() {\n    const {\n      overlayComponent: Overlay,\n      containerComponent: Container,\n      itemComponent: Item,\n      toggleButtonComponent: ToggleButton,\n      messages,\n    } = this.props;\n    const getMessage = getMessagesFormatter(messages!);\n    const { visible } = this.state;\n\n    return (\n      <Plugin\n        name=\"ColumnChooser\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {(\n              { columns, hiddenColumnNames, isColumnTogglingEnabled },\n              { toggleColumnVisibility },\n            ) => (\n              <React.Fragment>\n                <ToggleButton\n                  buttonRef={this.setButtonRef}\n                  onToggle={this.handleToggle}\n                  getMessage={getMessage}\n                  active={visible}\n                />\n                <Overlay\n                  visible={visible}\n                  target={this.button}\n                  onHide={this.handleHide}\n                >\n                  <Container>\n                    {columnChooserItems(columns, hiddenColumnNames)\n                      .map((item) => {\n                        const { name: columnName } = item.column;\n                        const togglingEnabled = isColumnTogglingEnabled(columnName);\n                        return (\n                          <Item\n                            key={columnName}\n                            item={item}\n                            disabled={!togglingEnabled}\n                            onToggle={() => toggleColumnVisibility(columnName)}\n                          />\n                        );\n                      })}\n                  </Container>\n                </Overlay>\n              </React.Fragment>\n            )}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/***\n * The ColumnChooser plugin allows a user to toggle grid columns' visibility at runtime.\n * The column chooser lists columns with checkboxes that control a corresponding\n * column's visibility.\n * */\nexport const ColumnChooser: React.ComponentType<ColumnChooserProps> = ColumnChooserBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  changeColumnFilter,\n  getColumnExtensionValueGetter,\n  filterExpression,\n  ChangeFilterPayload,\n} from '@devexpress/dx-grid-core';\nimport { FilteringStateProps, FilteringStateState } from '../types';\n\nconst columnExtensionValueGetter = (columnExtensions, defaultValue) => (\n  getColumnExtensionValueGetter(columnExtensions, 'filteringEnabled', defaultValue)\n);\nconst filterExpressionComputed = (\n  { filters, filterExpression: filterExpressionValue }: Getters,\n) => filterExpression(filters, filterExpressionValue);\n\nclass FilteringStateBase extends React.PureComponent<FilteringStateProps, FilteringStateState> {\n  static defaultProps = {\n    defaultFilters: [],\n    columnFilteringEnabled: true,\n  };\n  changeColumnFilter: (payload: ChangeFilterPayload) => void;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      filters: props.filters || props.defaultFilters,\n    };\n    const stateHelper = createStateHelper(\n      this,\n      {\n        filters: () => {\n          const { onFiltersChange } = this.props;\n          return onFiltersChange;\n        },\n      },\n    );\n\n    this.changeColumnFilter = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'filters', changeColumnFilter);\n  }\n\n  // tslint:disable-next-line:member-ordering\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      filters = prevState.filters,\n    } = nextProps;\n\n    return {\n      filters,\n    };\n  }\n\n  render() {\n    const { filters } = this.state;\n    const { columnExtensions, columnFilteringEnabled } = this.props;\n\n    return (\n      <Plugin\n        name=\"FilteringState\"\n      >\n        <Getter name=\"filters\" value={filters} />\n        <Getter name=\"filterExpression\" computed={filterExpressionComputed} />\n        <Getter\n          name=\"isColumnFilteringEnabled\"\n          value={columnExtensionValueGetter(columnExtensions, columnFilteringEnabled)}\n        />\n        <Action name=\"changeColumnFilter\" action={this.changeColumnFilter} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the filtering state. */\nexport const FilteringState: React.ComponentType<FilteringStateProps> = FilteringStateBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport {\n  filteredRows,\n  filteredCollapsedRowsGetter,\n  unwrappedFilteredRows,\n  getColumnExtension,\n  defaultFilterPredicate,\n  FilterPredicate,\n} from '@devexpress/dx-grid-core';\nimport { PureComputed } from '@devexpress/dx-core';\nimport { IntegratedFilteringProps, DefaultPredicateFn } from '../types';\n\nconst pluginDependencies = [\n  { name: 'FilteringState', optional: true },\n  { name: 'SearchState', optional: true },\n];\n\nconst getCollapsedRowsComputed = ({ rows }: Getters) => filteredCollapsedRowsGetter(rows);\nconst unwrappedRowsComputed = ({ rows }: Getters) => unwrappedFilteredRows(rows);\n\nclass IntegratedFilteringBase extends React.PureComponent<IntegratedFilteringProps> {\n  static defaultPredicate: DefaultPredicateFn;\n\n  render() {\n    const { columnExtensions } = this.props;\n    const getColumnPredicate: PureComputed<\n      [string], FilterPredicate\n    > = columnName => getColumnExtension(\n      columnExtensions, columnName,\n    ).predicate!;\n\n    const rowsComputed = ({\n      rows,\n      filterExpression,\n      getCellValue,\n      getRowLevelKey,\n      getCollapsedRows,\n    }: Getters) => filteredRows(\n      rows,\n      filterExpression,\n      getCellValue,\n      getColumnPredicate,\n      getRowLevelKey,\n      getCollapsedRows,\n    );\n\n    return (\n      <Plugin\n        name=\"IntegratedFiltering\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"rows\" computed={rowsComputed} />\n        <Getter name=\"getCollapsedRows\" computed={getCollapsedRowsComputed} />\n        <Getter name=\"rows\" computed={unwrappedRowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\nIntegratedFilteringBase.defaultPredicate = defaultFilterPredicate;\n\nexport const IntegratedFiltering: React.ComponentType<IntegratedFilteringProps> & {\n  /***\n   * The built-in filter predicate.\n   * The `filter` parameter accepts an object containing the 'value' field.\n   **/\n  defaultPredicate: DefaultPredicateFn;\n} = IntegratedFilteringBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, StateHelper,\n} from '@devexpress/dx-react-core';\nimport {\n  createRowChangeGetter,\n  startEditRows,\n  stopEditRows,\n  addRow,\n  changeAddedRow,\n  cancelAddedRows,\n  addedRowsByIds,\n  changeRow,\n  cancelChanges,\n  changedRowsByIds,\n  deleteRows,\n  cancelDeletedRows,\n  getColumnExtensionValueGetter,\n  startEditCells,\n  stopEditCells,\n} from '@devexpress/dx-grid-core';\nimport { EditingStateProps, EditingStateState } from '../types';\n\nconst columnExtensionValueGetter = (\n  columnExtensions, defaultValue,\n) => getColumnExtensionValueGetter(columnExtensions, 'editingEnabled', defaultValue);\n\nclass EditingStateBase extends React.PureComponent<EditingStateProps, EditingStateState> {\n  static defaultProps = {\n    columnEditingEnabled: true,\n    defaultEditingRowIds: [],\n    defaultEditingCells: [],\n    defaultRowChanges: {},\n    defaultAddedRows: [],\n    defaultDeletedRowIds: [],\n  };\n  startEditRows: (payload: any) => void;\n  stopEditRows: (payload: any) => void;\n  startEditCells: (payload: any) => void;\n  stopEditCells: (payload: any) => void;\n  changeRow: (payload: any) => void;\n  cancelChangedRows: (payload: any) => void;\n  commitChangedRows: ({ rowIds }: { rowIds: any; }) => void;\n  addRow: (payload: any) => void;\n  changeAddedRow: (payload: any) => void;\n  cancelAddedRows: (payload: any) => void;\n  commitAddedRows: ({ rowIds }: { rowIds: any; }) => void;\n  deleteRows: (payload: any) => void;\n  cancelDeletedRows: (payload: any) => void;\n  commitDeletedRows: ({ rowIds }: { rowIds: any; }) => void;\n\n  constructor(props) {\n    super(props);\n    const rowChanges = props.rowChanges || props.defaultRowChanges;\n    const addedRows = props.addedRows || props.defaultAddedRows;\n    const getRowChanges = () => {\n      const { rowChanges: stateRowChanges } = this.state;\n      return stateRowChanges;\n    };\n    const getAddedRows = () => {\n      const { addedRows: stateAddedRows } = this.state;\n      return stateAddedRows;\n    };\n\n    this.state = {\n      addedRows,\n      rowChanges,\n      editingRowIds: props.editingRowIds || props.defaultEditingRowIds,\n      deletedRowIds: props.deletedRowIds || props.defaultDeletedRowIds,\n      editingCells: props.editingCells || props.defaultEditingCells,\n    };\n\n    const stateHelper: StateHelper = createStateHelper(\n      this,\n      {\n        editingRowIds: () => {\n          const { onEditingRowIdsChange } = this.props;\n          return onEditingRowIdsChange;\n        },\n        editingCells: () => {\n          const { onEditingCellsChange } = this.props;\n          return onEditingCellsChange;\n        },\n        addedRows: () => {\n          const { onAddedRowsChange } = this.props;\n          return onAddedRowsChange;\n        },\n        rowChanges: () => {\n          const { onRowChangesChange } = this.props;\n          return onRowChangesChange;\n        },\n        deletedRowIds: () => {\n          const { onDeletedRowIdsChange } = this.props;\n          return onDeletedRowIdsChange;\n        },\n      },\n    );\n\n    this.startEditRows = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'editingRowIds', startEditRows);\n    this.stopEditRows = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'editingRowIds', stopEditRows);\n\n    this.startEditCells = stateHelper.applyFieldReducer\n    .bind(stateHelper, 'editingCells', startEditCells);\n    this.stopEditCells = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'editingCells', stopEditCells);\n\n    this.changeRow = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'rowChanges', changeRow);\n    this.cancelChangedRows = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'rowChanges', cancelChanges);\n    this.commitChangedRows = ({ rowIds }) => {\n      const { onCommitChanges } = this.props;\n      onCommitChanges({\n        changed: changedRowsByIds(getRowChanges(), rowIds),\n      });\n      this.cancelChangedRows({ rowIds });\n    };\n\n    this.addRow = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'addedRows', addRow);\n    this.changeAddedRow = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'addedRows', changeAddedRow);\n    this.cancelAddedRows = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'addedRows', cancelAddedRows);\n    this.commitAddedRows = ({ rowIds }) => {\n      const { onCommitChanges } = this.props;\n      onCommitChanges({\n        added: addedRowsByIds(getAddedRows(), rowIds),\n      });\n      this.cancelAddedRows({ rowIds });\n    };\n\n    this.deleteRows = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'deletedRowIds', deleteRows);\n    this.cancelDeletedRows = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'deletedRowIds', cancelDeletedRows);\n    this.commitDeletedRows = ({ rowIds }) => {\n      const { onCommitChanges } = this.props;\n      onCommitChanges({ deleted: rowIds });\n      this.cancelDeletedRows({ rowIds });\n    };\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      editingRowIds = prevState.editingRowIds,\n      editingCells = prevState.editingCells,\n      rowChanges = prevState.rowChanges,\n      addedRows = prevState.addedRows,\n      deletedRowIds = prevState.deletedRowIds,\n    } = nextProps;\n\n    return {\n      editingRowIds,\n      editingCells,\n      rowChanges,\n      addedRows,\n      deletedRowIds,\n    };\n  }\n\n  render() {\n    const { createRowChange, columnExtensions, columnEditingEnabled } = this.props;\n    const {\n      editingRowIds, editingCells, rowChanges, addedRows, deletedRowIds,\n    } = this.state;\n\n    return (\n      <Plugin\n        name=\"EditingState\"\n      >\n        <Getter\n          name=\"createRowChange\"\n          value={createRowChangeGetter(createRowChange, columnExtensions)}\n        />\n\n        <Getter name=\"editingRowIds\" value={editingRowIds} />\n        <Action name=\"startEditRows\" action={this.startEditRows} />\n        <Action name=\"stopEditRows\" action={this.stopEditRows} />\n\n        <Getter name=\"editingCells\" value={editingCells} />\n        <Action name=\"startEditCells\" action={this.startEditCells} />\n        <Action name=\"stopEditCells\" action={this.stopEditCells} />\n\n        <Getter name=\"rowChanges\" value={rowChanges} />\n        <Action name=\"changeRow\" action={this.changeRow} />\n        <Action name=\"cancelChangedRows\" action={this.cancelChangedRows} />\n        <Action name=\"commitChangedRows\" action={this.commitChangedRows} />\n\n        <Getter name=\"addedRows\" value={addedRows} />\n        <Action name=\"addRow\" action={this.addRow} />\n        <Action name=\"changeAddedRow\" action={this.changeAddedRow} />\n        <Action name=\"cancelAddedRows\" action={this.cancelAddedRows} />\n        <Action name=\"commitAddedRows\" action={this.commitAddedRows} />\n\n        <Getter name=\"deletedRowIds\" value={deletedRowIds} />\n        <Action name=\"deleteRows\" action={this.deleteRows} />\n        <Action name=\"cancelDeletedRows\" action={this.cancelDeletedRows} />\n        <Action name=\"commitDeletedRows\" action={this.commitDeletedRows} />\n\n        <Getter\n          name=\"isColumnEditingEnabled\"\n          value={columnExtensionValueGetter(columnExtensions, columnEditingEnabled)}\n        />\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that manages grid rows' editing state. It arranges grid rows\n * by different lists depending on a row's state.\n * */\nexport const EditingState: React.ComponentType<EditingStateProps> = EditingStateBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper,\n} from '@devexpress/dx-react-core';\nimport { setCurrentPage, setPageSize } from '@devexpress/dx-grid-core';\nimport { PagingStateProps, PagingStateState } from '../types';\n\nclass PagingStateBase extends React.PureComponent<PagingStateProps, PagingStateState> {\n  static defaultProps = {\n    defaultPageSize: 10,\n    defaultCurrentPage: 0,\n  };\n  setCurrentPage: (payload: any) => void;\n  setPageSize: (payload: any) => void;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      currentPage: props.currentPage || props.defaultCurrentPage,\n      pageSize: props.pageSize !== undefined ? props.pageSize : props.defaultPageSize,\n    };\n\n    const stateHelper = createStateHelper(\n      this,\n      {\n        currentPage: () => {\n          const { onCurrentPageChange } = this.props;\n          return onCurrentPageChange;\n        },\n        pageSize: () => {\n          const { onPageSizeChange } = this.props;\n          return onPageSizeChange;\n        },\n      },\n    );\n\n    this.setCurrentPage = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'currentPage', setCurrentPage);\n    this.setPageSize = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'pageSize', setPageSize);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      currentPage = prevState.currentPage,\n      pageSize = prevState.pageSize,\n    } = nextProps;\n\n    return {\n      currentPage,\n      pageSize,\n    };\n  }\n\n  render() {\n    const { pageSize, currentPage } = this.state;\n\n    return (\n      <Plugin\n        name=\"PagingState\"\n      >\n        <Getter name=\"currentPage\" value={currentPage} />\n        <Getter name=\"pageSize\" value={pageSize} />\n        <Action name=\"setCurrentPage\" action={this.setCurrentPage} />\n        <Action name=\"setPageSize\" action={this.setPageSize} />\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that manages the paging state. It controls the total page count depending on the\n * total row count and the specified page size, controls the currently selected page number\n * and changes it in response to the corresponding actions.\n * */\nexport const PagingState: React.ComponentType<PagingStateProps> = PagingStateBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters, Actions } from '@devexpress/dx-react-core';\nimport {\n  paginatedRows, rowsWithPageHeaders, rowCount, currentPage,\n} from '@devexpress/dx-grid-core';\nimport { IntegratedPagingProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'PagingState' },\n];\n\nconst rowsWithHeadersComputed = (\n  { rows, pageSize, getRowLevelKey }: Getters,\n) => rowsWithPageHeaders(rows, pageSize, getRowLevelKey);\nconst totalCountComputed = ({ rows }: Getters) => rowCount(rows);\nconst paginatedRowsComputed = (\n  { rows, pageSize, currentPage: page }: Getters,\n) => paginatedRows(rows, pageSize, page);\nconst currentPageComputed = (\n  { currentPage: page, totalCount, pageSize }: Getters, { setCurrentPage }: Actions,\n) => currentPage(page, totalCount, pageSize, setCurrentPage);\n\n// eslint-disable-next-line react/prefer-stateless-function\nclass IntegratedPagingBase extends React.PureComponent<IntegratedPagingProps> {\n  render() {\n    return (\n      <Plugin\n        name=\"IntegratedPaging\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"rows\" computed={rowsWithHeadersComputed} />\n        <Getter name=\"totalCount\" computed={totalCountComputed} />\n        <Getter name=\"currentPage\" computed={currentPageComputed} />\n        <Getter name=\"rows\" computed={paginatedRowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that performs built-in data paging. It also changes the current page if the provided\n * one cannot be applied due to fewer available pages.\n * */\nexport const IntegratedPaging: React.ComponentType<IntegratedPagingProps> = IntegratedPagingBase;\n","import * as React from 'react';\nimport { Getter, Plugin } from '@devexpress/dx-react-core';\nimport { CustomPagingProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'PagingState' },\n];\n\nclass CustomPagingBase extends React.PureComponent<CustomPagingProps> {\n  static defaultProps = {\n    totalCount: 0,\n  };\n\n  render() {\n    const { totalCount } = this.props;\n\n    return (\n      <Plugin\n        name=\"CustomPaging\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"totalCount\" value={totalCount} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that allows implementing a custom totalCount calculation logic. */\nexport const CustomPaging: React.ComponentType<CustomPagingProps> = CustomPagingBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, StateHelper, ActionFn, Getters, Actions,\n} from '@devexpress/dx-react-core';\nimport {\n  changeColumnGrouping,\n  toggleExpandedGroups,\n  draftColumnGrouping,\n  cancelColumnGroupingDraft,\n  getColumnExtensionValueGetter,\n  adjustSortIndex,\n  ChangeGroupingPayload,\n  ToggleGroupPayload,\n  ChangeSortingPayload,\n} from '@devexpress/dx-grid-core';\nimport { GroupingStateProps, GroupingStateState } from '../types';\n\nconst dependencies = [\n  { name: 'SortingState', optional: true },\n];\n\nconst columnExtensionValueGetter = (\n  columnExtensions, defaultValue,\n) => getColumnExtensionValueGetter(columnExtensions, 'groupingEnabled', defaultValue);\n\nclass GroupingStateBase extends React.PureComponent<GroupingStateProps, GroupingStateState> {\n  static defaultProps = {\n    defaultGrouping: [],\n    defaultExpandedGroups: [],\n    columnGroupingEnabled: true,\n  };\n  stateHelper: StateHelper;\n  draftColumnGrouping: ActionFn<ChangeGroupingPayload>;\n  toggleGroupExpanded: ActionFn<ToggleGroupPayload>;\n  cancelColumnGroupingDraft: ActionFn<void>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      grouping: props.grouping || props.defaultGrouping,\n      draftGrouping: null,\n      expandedGroups: props.expandedGroups || props.defaultExpandedGroups,\n    };\n\n    this.stateHelper = createStateHelper(\n      this,\n      {\n        grouping: () => {\n          const { onGroupingChange } = this.props;\n          return onGroupingChange;\n        },\n        expandedGroups: () => {\n          const { onExpandedGroupsChange } = this.props;\n          return onExpandedGroupsChange;\n        },\n      },\n    );\n\n    this.changeColumnGrouping = this.changeColumnGrouping.bind(this);\n    this.toggleGroupExpanded = this.stateHelper.applyReducer\n      .bind(this.stateHelper, toggleExpandedGroups);\n    this.draftColumnGrouping = this.stateHelper.applyReducer\n      .bind(this.stateHelper, draftColumnGrouping);\n    this.cancelColumnGroupingDraft = this.stateHelper.applyReducer\n      .bind(this.stateHelper, cancelColumnGroupingDraft);\n    this.changeColumnSorting = this.changeColumnSorting.bind(this);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      grouping = prevState.grouping,\n      expandedGroups = prevState.expandedGroups,\n    } = nextProps;\n\n    return {\n      grouping,\n      expandedGroups,\n    };\n  }\n\n  changeColumnSorting(\n    { columnName, keepOther, ...restParams }: ChangeSortingPayload,\n    { sorting }: Getters,\n    { changeColumnSorting }: Actions,\n  ) {\n    const { grouping } = this.state;\n    const groupingIndex = grouping\n      .findIndex(columnGrouping => columnGrouping.columnName === columnName);\n    if (groupingIndex === -1) {\n      changeColumnSorting({\n        columnName,\n        keepOther: keepOther || grouping.map(columnGrouping => columnGrouping.columnName),\n        ...restParams,\n      });\n      return false;\n    }\n\n    const sortIndex = adjustSortIndex(groupingIndex, grouping, sorting);\n    changeColumnSorting({\n      columnName,\n      sortIndex,\n      keepOther: true,\n      ...restParams,\n    });\n    return false;\n  }\n\n  changeColumnGrouping(\n    { columnName, groupIndex }: ChangeGroupingPayload,\n    getters?: Getters,\n    actions?: Actions,\n  ) {\n    this.stateHelper.applyReducer(\n      changeColumnGrouping,\n      { columnName, groupIndex },\n      (nextState, state) => {\n        const { grouping } = nextState;\n        const { grouping: prevGrouping } = state;\n        const { sorting } = getters!;\n        const { changeColumnSorting } = actions!;\n\n        if (!sorting) return;\n\n        const columnSortingIndex = sorting\n          .findIndex(columnSorting => columnSorting.columnName === columnName);\n        const prevGroupingIndex = prevGrouping\n          .findIndex(columnGrouping => columnGrouping.columnName === columnName);\n        const groupingIndex = grouping\n          .findIndex(columnGrouping => columnGrouping.columnName === columnName);\n\n        if (columnSortingIndex === -1\n          || (prevGroupingIndex === prevGrouping.length - 1 && groupingIndex === -1)) return;\n\n        const sortIndex = adjustSortIndex(\n          groupingIndex === -1 ? grouping.length : groupingIndex,\n          grouping,\n          sorting,\n        );\n\n        if (columnSortingIndex === sortIndex) return;\n\n        changeColumnSorting({\n          sortIndex,\n          keepOther: true,\n          ...sorting[columnSortingIndex],\n        });\n      },\n    );\n  }\n\n  render() {\n    const { grouping, draftGrouping, expandedGroups } = this.state;\n    const { columnExtensions, columnGroupingEnabled } = this.props;\n\n    return (\n      <Plugin\n        name=\"GroupingState\"\n        dependencies={dependencies}\n      >\n        <Getter name=\"grouping\" value={grouping} />\n        <Getter name=\"draftGrouping\" value={draftGrouping || grouping} />\n        <Getter\n          name=\"isColumnGroupingEnabled\"\n          value={columnExtensionValueGetter(columnExtensions, columnGroupingEnabled)}\n        />\n        <Action name=\"changeColumnGrouping\" action={this.changeColumnGrouping} />\n        <Action name=\"draftColumnGrouping\" action={this.draftColumnGrouping} />\n        <Action name=\"cancelColumnGroupingDraft\" action={this.cancelColumnGroupingDraft} />\n\n        <Getter name=\"expandedGroups\" value={expandedGroups} />\n        <Action name=\"toggleGroupExpanded\" action={this.toggleGroupExpanded} />\n\n        <Action name=\"changeColumnSorting\" action={this.changeColumnSorting} />\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that manages the grouping state. It lists columns used for grouping and stores\n * information about expanded/collapsed groups.\n * */\nexport const GroupingState: React.ComponentType<GroupingStateProps> = GroupingStateBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport {\n  groupRowChecker,\n  groupRowLevelKeyGetter,\n  groupCollapsedRowsGetter,\n  groupedRows,\n  expandedGroupRows,\n  getColumnExtension,\n} from '@devexpress/dx-grid-core';\nimport { IntegratedGroupingProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'GroupingState' },\n];\n\nconst getCollapsedRowsComputed = (\n  { getCollapsedRows }: Getters,\n) => groupCollapsedRowsGetter(getCollapsedRows);\nconst expandedGroupedRowsComputed = (\n  { rows, grouping, expandedGroups, isExporting }: Getters,\n) => expandedGroupRows(rows, grouping, expandedGroups, isExporting);\n\nclass IntegratedGroupingBase extends React.PureComponent<IntegratedGroupingProps> {\n  render() {\n    const { columnExtensions } = this.props;\n    const getColumnCriteria = columnName => (getColumnExtension(\n      columnExtensions, columnName,\n    ) as any).criteria;\n\n    const groupedRowsComputed = (\n      { rows, grouping, getCellValue }: Getters,\n    ) => groupedRows(rows, grouping, getCellValue, getColumnCriteria);\n\n    return (\n      <Plugin\n        name=\"IntegratedGrouping\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"isGroupRow\" value={groupRowChecker} />\n        <Getter name=\"getRowLevelKey\" value={groupRowLevelKeyGetter} />\n        <Getter name=\"getCollapsedRows\" computed={getCollapsedRowsComputed} />\n        <Getter name=\"rows\" computed={groupedRowsComputed} />\n        <Getter name=\"rows\" computed={expandedGroupedRowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\n/* tslint:disable: max-line-length */\n/** A plugin that performs built-in grouping and group expanding/collapsing. */\nexport const IntegratedGrouping: React.ComponentType<IntegratedGroupingProps> = IntegratedGroupingBase;\n/* tslint:enable: max-line-length */\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport {\n  groupRowChecker,\n  groupRowLevelKeyGetter,\n  groupCollapsedRowsGetter,\n  customGroupingRowIdGetter,\n  customGroupedRows,\n  expandedGroupRows,\n} from '@devexpress/dx-grid-core';\nimport { CustomGroupingProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'GroupingState' },\n];\n\nconst getCollapsedRowsComputed = (\n  { getCollapsedRows }: Getters,\n) => groupCollapsedRowsGetter(getCollapsedRows);\nconst expandedGroupedRowsComputed = (\n  { rows, grouping, expandedGroups, isExporting }: Getters,\n) => expandedGroupRows(rows, grouping, expandedGroups, isExporting);\nconst getRowIdComputed = ({ getRowId, rows }: Getters) => customGroupingRowIdGetter(getRowId, rows);\n\nclass CustomGroupingBase extends React.PureComponent<CustomGroupingProps> {\n  render() {\n    const {\n      getChildGroups,\n      grouping: appliedGrouping,\n      expandedGroups: appliedExpandedGroups,\n    } = this.props;\n    const groupedRowsComputed = (\n      { rows, grouping }: Getters,\n    ) => customGroupedRows(rows, grouping, getChildGroups);\n\n    return (\n      <Plugin\n        name=\"CustomGrouping\"\n        dependencies={pluginDependencies}\n      >\n        {appliedGrouping && (\n          <Getter name=\"grouping\" value={appliedGrouping} />\n        )}\n        {appliedExpandedGroups && (\n          <Getter name=\"expandedGroups\" value={appliedExpandedGroups} />\n        )}\n        <Getter name=\"isGroupRow\" value={groupRowChecker} />\n        <Getter name=\"getRowLevelKey\" value={groupRowLevelKeyGetter} />\n        <Getter name=\"getCollapsedRows\" computed={getCollapsedRowsComputed} />\n        <Getter name=\"rows\" computed={groupedRowsComputed} />\n        <Getter name=\"getRowId\" computed={getRowIdComputed} />\n        <Getter name=\"rows\" computed={expandedGroupedRowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\n/** A plugin that converts custom formatted grouped data to a supported format and performs local group expanding/collapsing. */\nexport const CustomGrouping: React.ComponentType<CustomGroupingProps> = CustomGroupingBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, ActionFn,\n} from '@devexpress/dx-react-core';\nimport { toggleSelection } from '@devexpress/dx-grid-core';\nimport { SelectionStateProps, SelectionStateState } from '../types';\n\nclass SelectionStateBase extends React.PureComponent<SelectionStateProps, SelectionStateState> {\n  static defaultProps = {\n    defaultSelection: [],\n  };\n  toggleSelection: ActionFn<any>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      selection: props.selection || props.defaultSelection,\n    };\n\n    const stateHelper = createStateHelper(\n      this,\n      {\n        selection: () => {\n          const { onSelectionChange } = this.props;\n          return onSelectionChange;\n        },\n      },\n    );\n\n    this.toggleSelection = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'selection', toggleSelection);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      selection = prevState.selection,\n    } = nextProps;\n\n    return {\n      selection,\n    };\n  }\n\n  render() {\n    const { selection } = this.state;\n\n    return (\n      <Plugin\n        name=\"SelectionState\"\n      >\n        <Getter name=\"selection\" value={selection} />\n        <Action name=\"toggleSelection\" action={this.toggleSelection} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the selection state. */\nexport const SelectionState: React.ComponentType<SelectionStateProps> = SelectionStateBase;\n","import * as React from 'react';\nimport { Getter, Action, Plugin, Getters, Actions } from '@devexpress/dx-react-core';\nimport {\n  rowsWithAvailableToSelect,\n  someSelected,\n  allSelected,\n  unwrapSelectedRows,\n} from '@devexpress/dx-grid-core';\nimport { IntegratedSelectionProps } from '../types';\n\nconst rowsWithAvailableToSelectComputed = (\n  { rows, getRowId, isGroupRow }: Getters,\n) => rowsWithAvailableToSelect(rows, getRowId, isGroupRow);\nconst allSelectedComputed = ({ rows, selection }: Getters) => allSelected(rows, selection);\nconst someSelectedComputed = ({ rows, selection }: Getters) => someSelected(rows, selection);\nconst selectAllAvailableComputed = (\n  { rows: { availableToSelect } }: Getters,\n) => !!availableToSelect.length;\n\nconst toggleSelectAll = (\n  state, { rows: { availableToSelect } }: Getters, { toggleSelection }: Actions,\n) => {\n  toggleSelection({ state, rowIds: availableToSelect });\n};\nconst unwrapRowsComputed = ({ rows }: Getters) => unwrapSelectedRows(rows);\n\nconst pluginDependencies = [\n  { name: 'SelectionState' },\n];\n\n// eslint-disable-next-line react/prefer-stateless-function\nclass IntegratedSelectionBase extends React.PureComponent<IntegratedSelectionProps> {\n  render() {\n    return (\n      <Plugin\n        name=\"IntegratedSelection\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"rows\" computed={rowsWithAvailableToSelectComputed} />\n        <Getter name=\"allSelected\" computed={allSelectedComputed} />\n        <Getter name=\"someSelected\" computed={someSelectedComputed} />\n        <Getter name=\"selectAllAvailable\" computed={selectAllAvailableComputed} />\n        <Action name=\"toggleSelectAll\" action={toggleSelectAll} />\n        <Getter name=\"rows\" computed={unwrapRowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\n/* tslint:disable: max-line-length */\n/** A plugin that performs built-in selection. */\nexport const IntegratedSelection: React.ComponentType<IntegratedSelectionProps> = IntegratedSelectionBase;\n/* tslint:enable: max-line-length */\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, ActionFn,\n} from '@devexpress/dx-react-core';\nimport {\n  changeColumnSorting,\n  getColumnExtensionValueGetter,\n  getPersistentSortedColumns,\n  calculateKeepOther,\n  ChangeSortingPayload,\n} from '@devexpress/dx-grid-core';\nimport { SortingStateProps, SortingStateState } from '../types';\n\nconst columnExtensionValueGetter = (\n  columnExtensions, defaultValue,\n) => getColumnExtensionValueGetter(columnExtensions, 'sortingEnabled', defaultValue);\n\nclass SortingStateBase extends React.PureComponent<SortingStateProps, SortingStateState> {\n  static defaultProps = {\n    defaultSorting: [],\n    columnSortingEnabled: true,\n  };\n  changeColumnSorting: ActionFn<ChangeSortingPayload>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      sorting: props.sorting || props.defaultSorting,\n    };\n\n    const stateHelper = createStateHelper(\n      this,\n      {\n        sorting: () => {\n          const { onSortingChange } = this.props;\n          return onSortingChange;\n        },\n      },\n    );\n\n    this.changeColumnSorting = stateHelper.applyReducer\n      .bind(stateHelper, (prevState, payload) => {\n        const { sorting = prevState.sorting } = this.props;\n        const persistentSortedColumns = getPersistentSortedColumns(sorting, props.columnExtensions);\n        const keepOther = calculateKeepOther(\n          prevState.sorting, payload.keepOther, persistentSortedColumns,\n        );\n        return changeColumnSorting(prevState, { ...payload, keepOther });\n      });\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      sorting = prevState.sorting,\n    } = nextProps;\n\n    return {\n      sorting,\n    };\n  }\n\n  render() {\n    const { sorting } = this.state;\n    const { columnExtensions, columnSortingEnabled } = this.props;\n\n    return (\n      <Plugin\n        name=\"SortingState\"\n      >\n        <Getter name=\"sorting\" value={sorting} />\n        <Getter\n          name=\"isColumnSortingEnabled\"\n          value={columnExtensionValueGetter(columnExtensions, columnSortingEnabled)}\n        />\n        <Action name=\"changeColumnSorting\" action={this.changeColumnSorting} />\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\n/** A plugin that manages the sorting state. It controls the list of columns that participate in sorting. */\nexport const SortingState: React.ComponentType<SortingStateProps> = SortingStateBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport { sortedRows, getColumnExtension } from '@devexpress/dx-grid-core';\nimport { IntegratedSortingProps, IntegratedSorting as IntegratedSortingNs } from '../types';\n\nconst pluginDependencies = [\n  { name: 'SortingState' },\n];\n\nclass IntegratedSortingBase extends React.PureComponent<IntegratedSortingProps> {\n  render() {\n    const { columnExtensions } = this.props;\n    const getColumnCompare = columnName => (\n      getColumnExtension(columnExtensions, columnName) as IntegratedSortingNs.ColumnExtension\n    ).compare!;\n\n    const rowsComputed = (\n      { rows, sorting, getCellValue, isGroupRow, getRowLevelKey }: Getters,\n    ) => sortedRows(rows, sorting, getCellValue, getColumnCompare, isGroupRow, getRowLevelKey);\n\n    return (\n      <Plugin\n        name=\"IntegratedSorting\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"rows\" computed={rowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that performs built-in data sorting. */\nexport const IntegratedSorting: React.ComponentType<IntegratedSortingProps> = IntegratedSortingBase;\n","import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport {\n  Plugin, Getter, Template, TemplatePlaceholder,\n  TemplateConnector,\n  DragDropProvider as DragDropProviderCore,\n} from '@devexpress/dx-react-core';\nimport { DragDropProviderProps, DragDropProviderState } from '../types';\n\nconst getTargetColumns = (payload, columns) => payload\n  .filter(item => item.type === 'column')\n  .map(item => columns.find(column => column.name === item.columnName));\n\n// tslint:disable-next-line: max-line-length\nclass DragDropProviderBase extends React.PureComponent<DragDropProviderProps, DragDropProviderState> {\n  static components = {\n    containerComponent: 'Container',\n    columnComponent: 'Column',\n  };\n  change: (object) => void;\n  bodyRef!: HTMLElement;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      payload: null,\n      clientOffset: null,\n    };\n\n    this.change = ({ payload, clientOffset }) => this.setState({ payload, clientOffset });\n  }\n\n  componentDidMount() {\n    this.bodyRef = document.body;\n  }\n\n  render() {\n    const {\n      containerComponent: Container,\n      columnComponent: Column,\n    } = this.props;\n    const {\n      payload,\n      clientOffset,\n    } = this.state;\n\n    return (\n      <Plugin\n        name=\"DragDropProvider\"\n      >\n        <Getter name=\"draggingEnabled\" value />\n        <Template name=\"root\">\n          <DragDropProviderCore\n            onChange={this.change}\n          >\n            <TemplatePlaceholder />\n          </DragDropProviderCore>\n          {payload && (\n            <TemplateConnector>\n              {({ columns }) => (\n                createPortal(\n                  <Container\n                    clientOffset={clientOffset!}\n                  >\n                    {getTargetColumns(payload, columns)\n                      .map(column => (\n                        <Column\n                          key={column.name}\n                          column={column}\n                        />\n                      ))\n                    }\n                  </Container>,\n                  this.bodyRef,\n                )\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\n/** A plugin that implements the drag-and-drop functionality and visualizes columns that are being dragged. */\nexport const DragDropProvider: React.ComponentType<DragDropProviderProps> = DragDropProviderBase;\n","import * as React from 'react';\nimport {\n  Getter,\n  Plugin,\n  Template,\n  PlaceholderWithRef,\n  TemplateConnector,\n  DropTarget,\n  withComponents,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  TABLE_DATA_TYPE,\n  TABLE_REORDERING_TYPE,\n  changeColumnOrder,\n  getTableTargetColumnIndex,\n  tableHeaderRowsWithReordering,\n  draftOrder as draftOrderComputed,\n  TargetColumnGeometry,\n  TableColumn,\n} from '@devexpress/dx-grid-core';\nimport { OrderedTableColumns } from './internal/ordered-table-columns';\nimport {\n  Table as TableNS, CellDimensionsGetter, TableColumnReorderingProps,\n  DragOverArgs, TableColumnReorderingState,\n} from '../types';\n\nconst pluginDependencies = [\n  { name: 'Table' },\n  { name: 'DragDropProvider', optional: true },\n];\n\nconst tableHeaderRowsComputed = (\n  { tableHeaderRows }: Getters,\n) => tableHeaderRowsWithReordering(tableHeaderRows);\n\n// tslint:disable-next-line: max-line-length\nclass TableColumnReorderingRaw extends React.PureComponent<TableColumnReorderingProps, TableColumnReorderingState> {\n  static defaultProps = {\n    defaultOrder: [],\n  };\n  static components = {\n    tableContainerComponent: 'TableContainer',\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n  };\n  cellDimensionGetters: { [colName: string]: CellDimensionsGetter } = {};\n  cellDimensions: TargetColumnGeometry[] = [];\n  onOver: (arg: DragOverArgs) => void;\n  onLeave: () => void;\n  onDrop: () => void;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      order: props.defaultOrder,\n      sourceColumnIndex: -1,\n      targetColumnIndex: -1,\n    };\n\n    this.onOver = this.handleOver.bind(this);\n    this.onLeave = this.handleLeave.bind(this);\n    this.onDrop = this.handleDrop.bind(this);\n  }\n\n  getState() {\n    const { order: orderState } = this.state;\n    const {\n      order = orderState,\n    } = this.props;\n    return {\n      ...this.state,\n      order,\n    };\n  }\n\n  getDraftOrder() {\n    const { order, sourceColumnIndex, targetColumnIndex } = this.getState();\n    return draftOrderComputed(order, sourceColumnIndex, targetColumnIndex);\n  }\n\n  getAvailableColumns() {\n    return this.getDraftOrder()\n      .filter(columnName => !!this.cellDimensionGetters[columnName]);\n  }\n\n  cacheCellDimensions() {\n    this.cellDimensions = (this.cellDimensions\n        && this.cellDimensions.length\n        && this.cellDimensions.length === Object.keys(this.cellDimensionGetters).length\n      )\n      ? this.cellDimensions\n      : this.getAvailableColumns()\n        .map(columnName => this.cellDimensionGetters[columnName]());\n  }\n\n  resetCellDimensions() {\n    this.cellDimensions = [];\n  }\n\n  ensureCellDimensionGetters(tableColumns: ReadonlyArray<TableColumn>) {\n    Object.keys(this.cellDimensionGetters)\n      .forEach((columnName) => {\n        const columnIndex = tableColumns\n          .findIndex(({ type, column }) => type === TABLE_DATA_TYPE && column!.name === columnName);\n        if (columnIndex === -1) {\n          delete this.cellDimensionGetters[columnName];\n        }\n      });\n  }\n\n// tslint:disable-next-line: max-line-length\n  storeCellDimensionsGetter(tableColumn: Readonly<TableColumn>, getter: CellDimensionsGetter, tableColumns: ReadonlyArray<TableColumn>) {\n    if (tableColumn.type === TABLE_DATA_TYPE) {\n      this.cellDimensionGetters[tableColumn.column!.name] = getter;\n    }\n    this.ensureCellDimensionGetters(tableColumns);\n  }\n\n  handleOver({ payload, clientOffset: { x } }: DragOverArgs) {\n    const sourceColumnName = payload[0].columnName;\n    const availableColumns = this.getAvailableColumns();\n    const relativeSourceColumnIndex = availableColumns.indexOf(sourceColumnName);\n\n    if (relativeSourceColumnIndex === -1) return;\n\n    this.cacheCellDimensions();\n    const cellDimensions = this.cellDimensions;\n\n    const relativeTargetIndex = getTableTargetColumnIndex(cellDimensions, x);\n\n    if (relativeTargetIndex === -1) return;\n\n    const {\n      sourceColumnIndex: prevSourceColumnIndex,\n      targetColumnIndex: prevTargetColumnIndex,\n    } = this.getState();\n    const draftOrder = this.getDraftOrder();\n    const targetColumnIndex = draftOrder.indexOf(availableColumns[relativeTargetIndex]);\n\n    if (targetColumnIndex === prevTargetColumnIndex) return;\n\n    const sourceColumnIndex = prevSourceColumnIndex === -1\n      ? draftOrder.indexOf(sourceColumnName)\n      : prevSourceColumnIndex;\n\n    this.setState({\n      sourceColumnIndex,\n      targetColumnIndex,\n    });\n  }\n\n  handleLeave() {\n    this.setState({\n      sourceColumnIndex: -1,\n      targetColumnIndex: -1,\n    });\n\n    this.resetCellDimensions();\n  }\n\n  handleDrop() {\n    const { sourceColumnIndex, targetColumnIndex, order } = this.getState();\n    const { onOrderChange } = this.props;\n\n    if (sourceColumnIndex === -1 && targetColumnIndex === -1) return;\n\n    const nextOrder = changeColumnOrder(order, {\n      sourceColumnName: order[sourceColumnIndex],\n      targetColumnName: order[targetColumnIndex],\n    }) as string[];\n\n    this.setState({\n      order: nextOrder,\n      sourceColumnIndex: -1,\n      targetColumnIndex: -1,\n    });\n\n    if (onOrderChange) {\n      onOrderChange(nextOrder);\n    }\n\n    this.resetCellDimensions();\n  }\n\n  render() {\n    const {\n      tableContainerComponent: Container,\n      rowComponent: Row,\n      cellComponent: Cell,\n    } = this.props;\n\n    this.cellDimensionGetters = {};\n\n    return (\n      <Plugin\n        name=\"TableColumnReordering\"\n        dependencies={pluginDependencies}\n      >\n        <OrderedTableColumns order={this.getDraftOrder()} />\n\n        <Getter name=\"tableHeaderRows\" computed={tableHeaderRowsComputed} />\n        <Template name=\"table\">\n          {params => (\n            <TemplateConnector>\n              {({ draggingEnabled }) => (\n                <Container\n                  {...params}\n                  onOver={this.onOver}\n                  onLeave={this.onLeave}\n                  onDrop={this.onDrop}\n                  draggingEnabled={draggingEnabled}\n                >\n                  <PlaceholderWithRef />\n                </Container>\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: Getters) => tableRow.type === TABLE_REORDERING_TYPE}\n        >\n          {params => (\n            <Row {...params} />\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow }: Getters) => tableRow.type === TABLE_REORDERING_TYPE}\n        >\n          {(params: TableNS.CellProps) => (\n            <TemplateConnector>\n              {({ tableColumns }: Getters) => (\n                <Cell\n                  {...params}\n                  getCellDimensions={getter => this.storeCellDimensionsGetter(\n                    params.tableColumn, getter, tableColumns,\n                  )}\n                />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\nconst TableContainer = ({\n  onOver, onLeave, onDrop, children, draggingEnabled,\n}) => (\n  draggingEnabled ? (\n    <DropTarget\n      onOver={onOver}\n      onLeave={onLeave}\n      onDrop={onDrop}\n    >\n      {children}\n    </DropTarget>\n  ) : children\n);\n\n/** A plugin that manages the displayed columns' order. */\nexport const TableColumnReordering: React.ComponentType<TableColumnReorderingProps>\n  = withComponents({ TableContainer })(TableColumnReorderingRaw);\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Getter,\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  Plugin,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  tableRowsWithDataRows,\n  tableCellColSpanGetter,\n  isNoDataTableRow,\n  isNoDataTableCell,\n  isDataTableCell,\n  isHeaderStubTableCell,\n  isDataTableRow,\n  TABLE_DATA_TYPE,\n  TABLE_NODATA_TYPE,\n} from '@devexpress/dx-grid-core';\nimport { TableProps, Table as TableNS, TableLayoutProps } from '../types';\nimport { TableColumnsWithDataRowsGetter } from './internal/table-columns-getter';\n\nconst RowPlaceholder = React.forwardRef((props, ref) => (\n  <TemplatePlaceholder name=\"tableRow\" params={{ ...props, ref }} />\n));\nconst CellPlaceholder = props => <TemplatePlaceholder name=\"tableCell\" params={props} />;\n\nconst tableHeaderRows = [];\nconst tableBodyRowsComputed = ({ rows, getRowId, isDataLoading }: Getters) => (\n  tableRowsWithDataRows(rows, getRowId, isDataLoading)\n);\nconst tableFooterRows = [];\n\nconst defaultMessages = {\n  noData: 'No data',\n};\n\nclass TableBase extends React.PureComponent<TableProps> {\n  static COLUMN_TYPE = TABLE_DATA_TYPE;\n  static ROW_TYPE = TABLE_DATA_TYPE;\n  static NODATA_ROW_TYPE = TABLE_NODATA_TYPE;\n  static defaultProps = {\n    messages: {},\n  };\n  static components = {\n    tableComponent: 'Table',\n    headComponent: 'TableHead',\n    bodyComponent: 'TableBody',\n    footerComponent: 'TableFooter',\n    containerComponent: 'Container',\n    layoutComponent: 'Layout',\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n    noDataRowComponent: 'NoDataRow',\n    noDataCellComponent: 'NoDataCell',\n    stubRowComponent: 'StubRow',\n    stubCellComponent: 'StubCell',\n    stubHeaderCellComponent: 'StubHeaderCell',\n  };\n\n  render() {\n    const {\n      layoutComponent: Layout,\n      cellComponent: Cell,\n      rowComponent: Row,\n      noDataRowComponent: NoDataRow,\n      noDataCellComponent: NoDataCell,\n      stubRowComponent: StubRow,\n      stubCellComponent: StubCell,\n      stubHeaderCellComponent: StubHeaderCell,\n      columnExtensions,\n      messages,\n      containerComponent,\n      tableComponent,\n      headComponent,\n      bodyComponent,\n      footerComponent,\n    } = this.props;\n\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    return (\n      <Plugin\n        name=\"Table\"\n      >\n        <Getter name=\"tableHeaderRows\" value={tableHeaderRows} />\n        <Getter name=\"tableBodyRows\" computed={tableBodyRowsComputed} />\n        <Getter name=\"tableFooterRows\" value={tableFooterRows} />\n        <TableColumnsWithDataRowsGetter columnExtensions={columnExtensions} />\n        <Getter name=\"getTableCellColSpan\" value={tableCellColSpanGetter} />\n\n        <Template name=\"body\">\n          <TemplatePlaceholder name=\"table\" />\n        </Template>\n        <Template name=\"table\">\n          {params => (\n            <TemplateConnector>\n              {({\n                tableHeaderRows: headerRows,\n                tableBodyRows: bodyRows,\n                tableFooterRows: footerRows,\n                tableColumns: columns,\n                getTableCellColSpan,\n              }) => (\n                <TemplatePlaceholder\n                  name=\"tableLayout\"\n                  params={{\n                    ...params,\n                    tableComponent,\n                    headComponent,\n                    bodyComponent,\n                    footerComponent,\n                    containerComponent,\n                    headerRows,\n                    bodyRows,\n                    footerRows,\n                    columns,\n                    rowComponent: RowPlaceholder,\n                    cellComponent: CellPlaceholder,\n                    getCellColSpan: getTableCellColSpan,\n                  }}\n                />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template name=\"tableLayout\">\n          {(params: TableLayoutProps) => (\n            <Layout {...params} />\n          )}\n        </Template>\n        <Template name=\"tableCell\">\n          {(params: TableNS.CellProps) => (\n            <TemplateConnector>\n              {(\n                { tableHeaderRows: headerRows },\n              ) => (isHeaderStubTableCell(params.tableRow, headerRows)\n                ? <StubHeaderCell {...params} />\n                : <StubCell {...params} />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow, tableColumn }: any) => isDataTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableNS.CellProps) => (\n            <TemplateConnector>\n              {({ getCellValue }) => {\n                const columnName = params.tableColumn.column!.name;\n                const value = getCellValue(params.tableRow.row, columnName);\n                return (\n                  <TemplatePlaceholder\n                    name=\"valueFormatter\"\n                    params={{\n                      value,\n                      row: params.tableRow.row,\n                      column: params.tableColumn.column,\n                    }}\n                  >\n                    {content => (\n                      <Cell\n                        {...params}\n                        row={params.tableRow.row}\n                        column={params.tableColumn.column!}\n                        value={value}\n                      >\n                        {content}\n                      </Cell>\n                    )}\n                  </TemplatePlaceholder>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow }: any) => !!isNoDataTableRow(tableRow)}\n        >\n          {(params: TableNS.CellProps) => (\n            <TemplateConnector>\n              {({ tableColumns }) => {\n                if (isNoDataTableCell(params.tableColumn, tableColumns)) {\n                  return (\n                    <NoDataCell\n                      {...params}\n                      getMessage={getMessage}\n                    />\n                  );\n                }\n                return null;\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template name=\"tableRow\">\n          {(params: TableNS.RowProps) => (\n            <StubRow {...params} />\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isDataTableRow(tableRow)}\n        >\n          {(params: TableNS.RowProps) => (\n            <Row\n              {...params}\n              row={params.tableRow.row}\n            />\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isNoDataTableRow(tableRow)}\n        >\n          {(params: TableNS.RowProps) => <NoDataRow {...params} />}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that renders Grid data as a table. This plugin enables you to customize\n * table rows and columns, and contains the Table Row and Table Cell components\n * that can be extended by other plugins\n * */\nexport const Table: React.ComponentType<TableProps> & {\n  /** The data column type's indentifier. */\n  COLUMN_TYPE: symbol;\n  /** The data row type's indentifier. */\n  ROW_TYPE: symbol;\n  /** The nodata row type's indentifier. */\n  NODATA_ROW_TYPE: symbol;\n} = TableBase;\n","import * as React from 'react';\nimport {\n  Getter, Template, Plugin,\n  TemplateConnector,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  TABLE_SELECT_TYPE,\n  tableColumnsWithSelection,\n  isSelectTableCell,\n  isSelectAllTableCell,\n  isDataTableRow,\n  isRowHighlighted,\n} from '@devexpress/dx-grid-core';\nimport { TableSelectionProps, TableCellProps, TableRowProps } from '../types';\n\nclass TableSelectionBase extends React.PureComponent<TableSelectionProps> {\n  static defaultProps = {\n    highlightRow: false,\n    selectByRowClick: false,\n    showSelectAll: false,\n    showSelectionColumn: true,\n  };\n  static components = {\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n    headerCellComponent: 'HeaderCell',\n  };\n  static COLUMN_TYPE = TABLE_SELECT_TYPE;\n\n  render() {\n    const {\n      highlightRow,\n      selectByRowClick,\n      showSelectionColumn,\n      showSelectAll,\n      headerCellComponent: HeaderCell,\n      cellComponent: Cell,\n      rowComponent: Row,\n      selectionColumnWidth,\n    } = this.props;\n\n    const tableColumnsComputed = (\n      { tableColumns }: Getters,\n    ) => tableColumnsWithSelection(tableColumns, selectionColumnWidth, showSelectionColumn);\n\n    return (\n      <Plugin\n        name=\"TableSelection\"\n        dependencies={[\n          { name: 'Table' },\n          { name: 'SelectionState' },\n          { name: 'IntegratedSelection', optional: !showSelectAll },\n        ]}\n      >\n        <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n        {highlightRow && (\n          <Getter name=\"highlightSelectedRow\" value />\n        )}\n\n        {(showSelectionColumn && showSelectAll) && (\n          <Template\n            name=\"tableCell\"\n            predicate={({\n              tableRow, tableColumn,\n            }: any) => isSelectAllTableCell(tableRow, tableColumn)}\n          >\n            {(params: TableCellProps) => (\n              <TemplateConnector>\n                {({ selectAllAvailable, allSelected, someSelected }, { toggleSelectAll }) => (\n                  <HeaderCell\n                    {...params}\n                    disabled={!selectAllAvailable}\n                    allSelected={allSelected}\n                    someSelected={someSelected}\n                    onToggle={select => toggleSelectAll(select)}\n                  />\n                )}\n              </TemplateConnector>\n            )}\n          </Template>\n        )}\n        {showSelectionColumn && (\n          <Template\n            name=\"tableCell\"\n            predicate={({ tableRow, tableColumn }: any) => isSelectTableCell(tableRow, tableColumn)}\n          >\n            {(params: TableCellProps) => (\n              <TemplateConnector>\n                {({ selection }, { toggleSelection }) => (\n                  <Cell\n                    {...params}\n                    row={params.tableRow.row}\n                    selected={selection.indexOf(params.tableRow.rowId) !== -1}\n                    onToggle={() => toggleSelection({ rowIds: [params.tableRow.rowId] })}\n                  />\n                )}\n              </TemplateConnector>\n            )}\n          </Template>\n        )}\n        {(highlightRow || selectByRowClick) && (\n          <Template\n            name=\"tableRow\"\n            predicate={({ tableRow }: any) => !!isDataTableRow(tableRow)}\n          >\n            {(params: TableRowProps) => (\n              <TemplateConnector>\n                {({ selection }, { toggleSelection }) => (\n                  <Row\n                    {...params}\n                    selectByRowClick={selectByRowClick}\n                    highlighted={isRowHighlighted(highlightRow!, selection, params.tableRow)}\n                    onToggle={() => toggleSelection({ rowIds: [params.tableRow.rowId] })}\n                  />\n                )}\n              </TemplateConnector>\n            )}\n          </Template>\n        )}\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that visualizes table rows' selection state by rendering selection checkboxes\n * and highlighting the selected rows.\n * */\nexport const TableSelection: React.ComponentType<TableSelectionProps> & {\n  /** The selection column type's indentifier. */\n  COLUMN_TYPE: symbol;\n} = TableSelectionBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, ActionFn,\n} from '@devexpress/dx-react-core';\nimport { toggleDetailRowExpanded, ToggleRowPayload } from '@devexpress/dx-grid-core';\nimport { RowDetailStateProps, RowDetailStateState } from '../types';\n\n// tslint:disable-next-line: max-line-length\nclass RowDetailStateBase extends React.PureComponent<RowDetailStateProps, RowDetailStateState> {\n  static defaultProps = {\n    defaultExpandedRowIds: [],\n  };\n  toggleDetailRowExpanded: ActionFn<ToggleRowPayload>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      expandedRowIds: props.expandedRowIds || props.defaultExpandedRowIds,\n    };\n\n    const stateHelper = createStateHelper(\n      this,\n      {\n        expandedRowIds: () => {\n          const { onExpandedRowIdsChange } = this.props;\n          return onExpandedRowIdsChange;\n        },\n      },\n    );\n\n    this.toggleDetailRowExpanded = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'expandedRowIds', toggleDetailRowExpanded);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      expandedRowIds = prevState.expandedRowIds,\n    } = nextProps;\n\n    return {\n      expandedRowIds,\n    };\n  }\n\n  render() {\n    const { expandedRowIds } = this.state;\n\n    return (\n      <Plugin\n        name=\"RowDetailState\"\n      >\n        <Getter name=\"expandedDetailRowIds\" value={expandedRowIds} />\n        <Action name=\"toggleDetailRowExpanded\" action={this.toggleDetailRowExpanded} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the expanded state for table row details. */\nexport const RowDetailState: React.ComponentType<RowDetailStateProps> = RowDetailStateBase;\n","import * as React from 'react';\nimport {\n  Getter, Template, Plugin, TemplateConnector, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  tableRowsWithExpandedDetail,\n  tableDetailCellColSpanGetter,\n  isDetailRowExpanded,\n  tableColumnsWithDetail,\n  isDetailToggleTableCell,\n  isDetailTableRow,\n  isDetailTableCell,\n  TABLE_DETAIL_TYPE,\n} from '@devexpress/dx-grid-core';\nimport { TableRowDetailProps, TableCellProps, TableRowProps } from '../types';\n\nconst getCellColSpanComputed = (\n  { getTableCellColSpan }: Getters,\n) => tableDetailCellColSpanGetter(getTableCellColSpan);\n\nconst pluginDependencies = [\n  { name: 'RowDetailState' },\n  { name: 'Table' },\n];\n\nclass TableRowDetailBase extends React.PureComponent<TableRowDetailProps> {\n  static ROW_TYPE = TABLE_DETAIL_TYPE;\n  static COLUMN_TYPE = TABLE_DETAIL_TYPE;\n  static defaultProps = {\n    contentComponent: () => null,\n  };\n  static components = {\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n    toggleCellComponent: 'ToggleCell',\n  };\n\n  render() {\n    const {\n      rowHeight,\n      contentComponent: Content,\n      toggleCellComponent: ToggleCell,\n      cellComponent: Cell,\n      rowComponent: Row,\n      toggleColumnWidth,\n    } = this.props;\n\n    const tableColumnsComputed = (\n      { tableColumns }: Getters,\n    ) => tableColumnsWithDetail(tableColumns, toggleColumnWidth);\n    const tableBodyRowsComputed = (\n      { tableBodyRows, expandedDetailRowIds }: Getters,\n    ) => tableRowsWithExpandedDetail(tableBodyRows, expandedDetailRowIds, rowHeight!);\n\n    return (\n      <Plugin\n        name=\"TableRowDetail\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n        <Getter name=\"tableBodyRows\" computed={tableBodyRowsComputed} />\n        <Getter name=\"getTableCellColSpan\" computed={getCellColSpanComputed} />\n\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isDetailToggleTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({ expandedDetailRowIds }, { toggleDetailRowExpanded }) => (\n                <ToggleCell\n                  {...params}\n                  row={params.tableRow.row}\n                  expanded={isDetailRowExpanded(expandedDetailRowIds, params.tableRow.rowId!)}\n                  onToggle={() => toggleDetailRowExpanded({ rowId: params.tableRow.rowId })}\n                />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow }: any) => !!isDetailTableRow(tableRow)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({ tableColumns }) => {\n                if (isDetailTableCell(params.tableColumn, tableColumns)) {\n                  return (\n                    <Cell\n                      {...params}\n                      row={params.tableRow.row}\n                    >\n                      {Content && <Content row={params.tableRow.row} />}\n                    </Cell>\n                  );\n                }\n                return null;\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isDetailTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => (\n            <Row\n              {...params}\n              row={params.tableRow.row}\n            />\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders detail rows. */\nexport const TableRowDetail: React.ComponentType<TableRowDetailProps> & {\n  /** The detail column type's identifier. */\n  COLUMN_TYPE: symbol;\n  /** The detail row type's indentifier. */\n  ROW_TYPE: symbol;\n} = TableRowDetailBase;\n","export const defaultSummaryMessages = {\n  sum: 'Sum',\n  min: 'Min',\n  max: 'Max',\n  avg: 'Avg',\n  count: 'Count',\n};\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  defaultFormatlessSummaries, ColumnSummary,\n} from '@devexpress/dx-grid-core';\nimport { TemplatePlaceholder } from '@devexpress/dx-react-core';\nimport { TableSummaryContentProps, SummaryItemProps } from '../../types';\nimport { defaultSummaryMessages } from './constants';\n\nexport const TableSummaryContent: React.FunctionComponent<TableSummaryContentProps> = ({\n  column, columnSummaries, formatlessSummaryTypes,\n  itemComponent: Item,\n  messages,\n}) => {\n  const getMessage = getMessagesFormatter({ ...defaultSummaryMessages, ...messages });\n  const SummaryItem: React.FunctionComponent<SummaryItemProps> = ({ summary, children }) => (\n    <Item\n      getMessage={getMessage}\n      type={summary.type}\n      value={summary.value}\n    >\n      {children || String(summary.value)}\n    </Item>\n  );\n  const isFormatlessSummary = (summary: ColumnSummary) => (\n    summary.value === null\n    || formatlessSummaryTypes.includes(summary.type)\n    || defaultFormatlessSummaries.includes(summary.type)\n  );\n\n  return (\n    <React.Fragment>\n      {columnSummaries.map((summary) => {\n        if (isFormatlessSummary(summary)) {\n          return <SummaryItem key={summary.type} summary={summary} />;\n        }\n        return (\n          <TemplatePlaceholder\n            key={summary.type}\n            name=\"valueFormatter\"\n            params={{\n              column,\n              value: summary.value,\n            }}\n          >\n            {content => (\n              <SummaryItem summary={summary}>\n                {content}\n              </SummaryItem>\n            )}\n          </TemplatePlaceholder>\n        );\n      })}\n    </React.Fragment>\n  );\n};\n","import * as React from 'react';\nimport { TemplatePlaceholder } from '@devexpress/dx-react-core';\nimport { getGroupInlineSummaries } from '@devexpress/dx-grid-core';\nimport { GetInlineSummaryComponent, FlattenGroupInlineSummariesFn } from '../../types';\n\nconst getInlineSummaryComponent: GetInlineSummaryComponent = (\n  column, summary, formatlessSummaries,\n) => () => (\n  (summary.value === null || formatlessSummaries.includes(summary.type))\n    ? <>{summary.value}</>\n    : (\n      <TemplatePlaceholder\n        key={summary.type}\n        name=\"valueFormatter\"\n        params={{\n          column,\n          value: summary.value,\n        }}\n      >\n        {content => content || summary.value}\n      </TemplatePlaceholder>\n    )\n);\n\nexport const flattenGroupInlineSummaries: FlattenGroupInlineSummariesFn = (\n  columns, tableRow, groupSummaryItems, groupSummaryValues,\n  formatlessSummaries,\n) => (\n  getGroupInlineSummaries(\n    groupSummaryItems, columns,\n    groupSummaryValues[tableRow.row.compoundKey],\n  )\n    .map(colSummaries => ([\n      ...colSummaries.summaries.map(summary => ({\n        ...summary,\n        columnTitle: colSummaries.column.title,\n        messageKey: `${summary.type}Of`,\n        component: getInlineSummaryComponent(\n          colSummaries.column, summary, formatlessSummaries,\n        ),\n      })),\n    ]))\n    .reduce((acc, summaries) => acc.concat(summaries), [])\n);\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Getter, Template, Plugin, TemplatePlaceholder, TemplateConnector, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  tableRowsWithGrouping,\n  tableGroupCellColSpanGetter,\n  isGroupTableCell,\n  isGroupIndentTableCell,\n  isGroupTableRow,\n  TABLE_GROUP_TYPE,\n  getColumnSummaries,\n  defaultFormatlessSummaries,\n  isPreviousCellContainSummary,\n  isRowSummaryCell,\n  isGroupRowOrdinaryCell,\n  calculateGroupCellIndent,\n  isGroupIndentStubTableCell,\n  GroupSummaryItem,\n  TABLE_FLEX_TYPE,\n} from '@devexpress/dx-grid-core';\nimport { TableColumnsWithGrouping } from './internal';\nimport {\n  TableGroupRowProps, TableCellProps, TableRowProps,\n} from '../types';\nimport { TableSummaryContent } from '../components/summary/table-summary-content';\nimport { flattenGroupInlineSummaries } from '../components/summary/group-summaries';\n\nconst pluginDependencies = [\n  { name: 'GroupingState' },\n  { name: 'Table' },\n  { name: 'DataTypeProvider', optional: true },\n  { name: 'SummaryState', optional: true },\n  { name: 'CustomSummary', optional: true },\n  { name: 'IntegratedSummary', optional: true },\n  { name: 'Table' },\n  { name: 'DataTypeProvider', optional: true },\n  { name: 'TableSelection', optional: true },\n];\nconst side = 'left';\n\n/** @internal */\nexport const defaultMessages = {\n  countOf: 'Count: ',\n  sumOf: 'Sum of {columnTitle} is ',\n  maxOf: 'Max of {columnTitle} is ',\n  minOf: 'Min of {columnTitle} is ',\n  avgOf: 'Avg of {columnTitle} is ',\n};\n\nconst tableBodyRowsComputed = (\n  { tableBodyRows, isGroupRow }: Getters,\n) => tableRowsWithGrouping(tableBodyRows, isGroupRow);\nconst getCellColSpanComputed = (\n  { getTableCellColSpan, groupSummaryItems, viewport }: Getters,\n) => {\n  const firstVisibleColumnIndex = viewport?.columns[0][0];\n  return tableGroupCellColSpanGetter(\n    getTableCellColSpan,\n    groupSummaryItems,\n    firstVisibleColumnIndex,\n  );\n};\n\nclass TableGroupRowBase extends React.PureComponent<TableGroupRowProps> {\n  static ROW_TYPE = TABLE_GROUP_TYPE;\n  static COLUMN_TYPE = TABLE_GROUP_TYPE;\n  static defaultProps = {\n    showColumnsWhenGrouped: false,\n    formatlessSummaryTypes: [],\n  };\n  static components = {\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n    contentComponent: 'Content',\n    iconComponent: 'Icon',\n    containerComponent: 'Container',\n    indentCellComponent: 'IndentCell',\n    inlineSummaryComponent: 'InlineSummary',\n    inlineSummaryItemComponent: 'InlineSummaryItem',\n    summaryCellComponent: 'SummaryCell',\n    summaryItemComponent: 'SummaryItem',\n    stubCellComponent: 'StubCell',\n  };\n\n  render() {\n    const {\n      cellComponent: GroupCell,\n      contentComponent: Content,\n      iconComponent: Icon,\n      rowComponent: GroupRow,\n      containerComponent: Container,\n      indentCellComponent: GroupIndentCell,\n      inlineSummaryComponent: InlineSummary,\n      inlineSummaryItemComponent: InlineSummaryItem,\n      summaryCellComponent: SummaryCell,\n      summaryItemComponent: SummaryItem,\n      stubCellComponent: StubCell,\n      indentColumnWidth,\n      contentCellPadding,\n      showColumnsWhenGrouped,\n      columnExtensions,\n      messages,\n      formatlessSummaryTypes,\n    } = this.props;\n\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    return (\n      <Plugin\n        name=\"TableGroupRow\"\n        dependencies={pluginDependencies}\n      >\n        <TableColumnsWithGrouping\n          columnExtensions={columnExtensions}\n          showColumnsWhenGrouped={showColumnsWhenGrouped}\n          indentColumnWidth={indentColumnWidth}\n        />\n        <Getter name=\"tableBodyRows\" computed={tableBodyRowsComputed} />\n        <Getter name=\"getTableCellColSpan\" computed={getCellColSpanComputed} />\n\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow }: any) => isGroupTableRow(tableRow)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {(\n                {\n                  grouping, expandedGroups, groupSummaryItems, groupSummaryValues, columns,\n                },\n                { toggleGroupExpanded },\n              ) => {\n                if (isGroupTableCell(params.tableRow, params.tableColumn)) {\n                  const formatlessSummaries = defaultFormatlessSummaries\n                    .concat(formatlessSummaryTypes!);\n\n                  const inlineSummaries = groupSummaryItems\n                    ? flattenGroupInlineSummaries(\n                      columns, params.tableRow, groupSummaryItems,\n                      groupSummaryValues, formatlessSummaries,\n                    ) : [];\n                  const cellIndent = calculateGroupCellIndent(\n                    params.tableColumn, grouping, indentColumnWidth,\n                  );\n                  const contentIndent = `calc(${cellIndent}px + ${contentCellPadding})`;\n\n                  return (\n                    <TemplatePlaceholder\n                      name=\"valueFormatter\"\n                      params={{\n                        column: params.tableColumn.column,\n                        value: params.tableRow.row.value,\n                      }}\n                    >\n                      {content => (\n                        <GroupCell\n                          {...params}\n                          contentComponent={Content}\n                          iconComponent={Icon}\n                          containerComponent={Container}\n                          row={params.tableRow.row}\n                          column={params.tableColumn.column!}\n                          expanded={expandedGroups.indexOf(params.tableRow.row.compoundKey) !== -1}\n                          onToggle={\n                            () => toggleGroupExpanded({ groupKey: params.tableRow.row.compoundKey })\n                          }\n                          inlineSummaries={inlineSummaries}\n                          inlineSummaryComponent={InlineSummary}\n                          inlineSummaryItemComponent={InlineSummaryItem}\n                          getMessage={getMessage}\n                          position={contentIndent}\n                          side={side}\n                        >\n                          {content}\n                        </GroupCell>\n                      )}\n                    </TemplatePlaceholder>\n                  );\n                }\n                if (isGroupIndentTableCell(params.tableRow, params.tableColumn, grouping)) {\n                  const fixedProps = {\n                    side,\n                    position: calculateGroupCellIndent(\n                      params.tableColumn, grouping, indentColumnWidth,\n                    ),\n                  };\n                  if (GroupIndentCell) {\n                    return (\n                      <GroupIndentCell\n                        {...params}\n                        {...fixedProps}\n                        row={params.tableRow.row}\n                        column={params.tableColumn.column!}\n                      />\n                    );\n                  }\n                  return <TemplatePlaceholder params={fixedProps} />;\n                }\n                if (isGroupIndentStubTableCell(params.tableRow, params.tableColumn, grouping)) {\n                  return <TemplatePlaceholder params={params} />;\n                }\n                return null;\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({\n            tableRow, tableColumn,\n          }: any) => (isGroupRowOrdinaryCell(tableRow, tableColumn))}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {(\n                {\n                  groupSummaryItems, groupSummaryValues, grouping, tableColumns,\n                },\n                { toggleGroupExpanded },\n              ) => {\n                const { tableColumn, tableRow } = params;\n                const onToggle = () => toggleGroupExpanded({ groupKey: tableRow.row.compoundKey });\n\n                if (isRowSummaryCell(tableRow, tableColumn, grouping, groupSummaryItems)) {\n                  const columnSummaries = getColumnSummaries(\n                    groupSummaryItems,\n                    tableColumn.column!.name,\n                    groupSummaryValues[tableRow.row.compoundKey],\n                    summaryItem => (\n                      !(summaryItem as GroupSummaryItem).showInGroupFooter! &&\n                      (summaryItem as GroupSummaryItem).alignByColumn!\n                    ),\n                  );\n\n                  return (\n                    <SummaryCell\n                      {...params}\n                      row={params.tableRow.row}\n                      column={params.tableColumn.column!}\n                      onToggle={onToggle}\n                    >\n                      <TableSummaryContent\n                        column={tableColumn.column!}\n                        columnSummaries={columnSummaries}\n                        formatlessSummaryTypes={formatlessSummaryTypes!}\n                        itemComponent={SummaryItem}\n                        messages={messages!}\n                      />\n                    </SummaryCell>\n                  );\n                }\n\n                // NOTE: ensure that right-aligned summary will fit into a column\n                if (isPreviousCellContainSummary(\n                  tableRow, tableColumn, tableColumns, grouping, groupSummaryItems,\n                ) || TABLE_FLEX_TYPE === tableColumn.type) {\n                  return <StubCell {...params} onToggle={onToggle} />;\n                }\n\n                return <TemplatePlaceholder />;\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => isGroupTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => (\n            <GroupRow\n              {...params}\n              row={params.tableRow.row}\n            />\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders group rows and enables them to expand and collapse. */\nexport const TableGroupRow: React.ComponentType<TableGroupRowProps> & {\n  /** The group column type's identifier. */\n  COLUMN_TYPE: symbol;\n  /** The group row type's identifier. */\n  ROW_TYPE: symbol;\n} = TableGroupRowBase;\n","import * as React from 'react';\nimport {\n  Getter, Template, Plugin, TemplateConnector, TemplatePlaceholder, Getters,\n} from '@devexpress/dx-react-core';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  getColumnSortingDirection,\n  tableRowsWithHeading,\n  isHeadingTableCell,\n  isHeadingTableRow,\n  getNextColumnName,\n  TABLE_DATA_TYPE,\n  TABLE_HEADING_TYPE,\n} from '@devexpress/dx-grid-core';\nimport { TableHeaderRowProps, TableCellProps, TableRowProps } from '../types';\n\nconst tableHeaderRowsComputed = (\n  { tableHeaderRows }: Getters,\n) => tableRowsWithHeading(tableHeaderRows || []);\n\nclass TableHeaderRowBase extends React.PureComponent<TableHeaderRowProps> {\n  static ROW_TYPE = TABLE_HEADING_TYPE;\n  static defaultProps = {\n    showSortingControls: false,\n    showGroupingControls: false,\n    messages: {},\n  };\n  static components = {\n    cellComponent: 'Cell',\n    rowComponent: 'Row',\n    contentComponent: 'Content',\n    sortLabelComponent: 'SortLabel',\n    titleComponent: 'Title',\n    groupButtonComponent: 'GroupButton',\n  };\n\n  render() {\n    const {\n      showSortingControls,\n      showGroupingControls,\n      cellComponent: HeaderCell,\n      rowComponent: HeaderRow,\n      contentComponent: Content,\n      sortLabelComponent: SortLabel,\n      groupButtonComponent: GroupButton,\n      titleComponent: Title,\n      messages,\n    } = this.props;\n    const getMessage = getMessagesFormatter(messages!);\n\n    return (\n      <Plugin\n        name=\"TableHeaderRow\"\n        dependencies={[\n          { name: 'Table' },\n          { name: 'SortingState', optional: !showSortingControls },\n          { name: 'GroupingState', optional: !showGroupingControls },\n          { name: 'DragDropProvider', optional: true },\n          { name: 'TableColumnResizing', optional: true },\n        ]}\n      >\n        <Getter name=\"tableHeaderRows\" computed={tableHeaderRowsComputed} />\n\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow, tableColumn }: any) => isHeadingTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({\n                sorting, tableColumns, draggingEnabled, tableColumnResizingEnabled,\n                isColumnSortingEnabled, isColumnGroupingEnabled, columnResizingMode,\n              }, {\n                changeColumnSorting, changeColumnGrouping,\n                changeTableColumnWidth, draftTableColumnWidth, cancelTableColumnWidthDraft,\n                storeWidthGetters = () => {},\n              }) => {\n                const { name: columnName, title: columnTitle } = params.tableColumn.column!;\n                const atLeastOneDataColumn = tableColumns\n                  .filter(({ type }) => type === TABLE_DATA_TYPE).length > 1;\n                const sortingEnabled = isColumnSortingEnabled\n                  && isColumnSortingEnabled(columnName);\n                const groupingEnabled = isColumnGroupingEnabled\n                  && isColumnGroupingEnabled(columnName)\n                  && atLeastOneDataColumn;\n                const nextColumnName = getNextColumnName(tableColumns, columnName);\n\n                return (\n                  <HeaderCell\n                    {...params}\n                    column={params.tableColumn.column!}\n                    draggingEnabled={draggingEnabled && atLeastOneDataColumn}\n                    resizingEnabled={\n                      tableColumnResizingEnabled\n                      && (!!nextColumnName || columnResizingMode === 'widget')\n                    }\n                    onWidthChange={({ shift }) => changeTableColumnWidth({\n                      columnName, nextColumnName, shift,\n                    })}\n                    onWidthDraft={({ shift }) => draftTableColumnWidth({\n                      columnName, nextColumnName, shift,\n                    })}\n                    onWidthDraftCancel={() => cancelTableColumnWidthDraft()}\n                    getCellWidth={getter => storeWidthGetters({\n                      tableColumn: params.tableColumn , getter, tableColumns,\n                    })}\n                  >\n                    <TemplatePlaceholder\n                      name=\"tableHeaderCellBefore\"\n                      params={{\n                        column: params.tableColumn.column,\n                      }}\n                    />\n                    <Content\n                      column={params.tableColumn.column!}\n                      align={params.tableColumn.align!}\n                    >\n                      {showSortingControls ? (\n                        <SortLabel\n                          column={params.tableColumn.column!}\n                          align={params.tableColumn.align!}\n                          direction={getColumnSortingDirection(sorting, columnName) || null}\n                          disabled={!sortingEnabled}\n                          onSort={({ direction, keepOther }) => {\n                            changeColumnSorting({ columnName, direction, keepOther });\n                          }}\n                          getMessage={getMessage}\n                        >\n                          <Title>\n                            {columnTitle || columnName}\n                          </Title>\n                        </SortLabel>\n                      ) : (\n                        <Title>\n                          {columnTitle || columnName}\n                        </Title>\n                      )}\n                    </Content>\n                    {showGroupingControls ? (\n                      <GroupButton\n                        disabled={!groupingEnabled}\n                        onGroup={() => changeColumnGrouping({ columnName })}\n                      />\n                    ) : null}\n                  </HeaderCell>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isHeadingTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => <HeaderRow {...params} />}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\nTableHeaderRowBase.components = {\n  cellComponent: 'Cell',\n  rowComponent: 'Row',\n  contentComponent: 'Content',\n  sortLabelComponent: 'SortLabel',\n  titleComponent: 'Title',\n  groupButtonComponent: 'GroupButton',\n};\n\n/***\n * A plugin that renders the table's header row. The Column's `title` field specifies the\n * column's title in the header row.The plugin also allows you to manage a column's sorting\n * and grouping state and initiate column dragging.\n * */\nexport const TableHeaderRow: React.ComponentType<TableHeaderRowProps> & {\n  /** The header row type's identifier. */\n  ROW_TYPE: symbol;\n} = TableHeaderRowBase;\n","import * as React from 'react';\nimport {\n  Getter, Template, Plugin,\n  TemplateConnector, TemplatePlaceholder, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  getBandComponent, tableHeaderColumnChainsWithBands,\n  isBandedTableRow, isBandedOrHeaderRow,\n  tableRowsWithBands, isHeadingTableCell,\n  BAND_GROUP_CELL, BAND_HEADER_CELL,\n  BAND_EMPTY_CELL, BAND_DUPLICATE_RENDER,\n  TABLE_BAND_TYPE,\n  BAND_FILL_LEVEL_CELL,\n  bandLevelsVisibility,\n  columnBandLevels,\n  columnVisibleIntervals,\n} from '@devexpress/dx-grid-core';\nimport { TableBandHeaderProps, TableBandHeader as BandHeaderNS, TableRowProps } from '../types';\n\nconst CellPlaceholder = (props: BandHeaderNS.CellProps) => <TemplatePlaceholder params={props} />;\n\nconst bandLevelsVisibilityComputed = (\n  { columnVisibleIntervals: columnIntervals, tableHeaderColumnChains, bandLevels }: Getters,\n) => bandLevelsVisibility(\n  columnIntervals, tableHeaderColumnChains, bandLevels,\n);\n\nconst columnVisibleIntervalsComputed = (\n  { viewport, tableColumns }: Getters,\n) => columnVisibleIntervals(viewport, tableColumns);\n\nclass TableBandHeaderBase extends React.PureComponent<TableBandHeaderProps> {\n  static ROW_TYPE = TABLE_BAND_TYPE;\n  static components = {\n    cellComponent: 'Cell',\n    rowComponent: 'Row',\n    bandedHeaderCellComponent: 'BandedHeaderCell',\n    invisibleCellComponent: 'InvisibleCell',\n  };\n\n  render() {\n    const {\n      cellComponent: Cell,\n      rowComponent: Row,\n      bandedHeaderCellComponent: HeaderCell,\n      invisibleCellComponent: InvisibleCell,\n      columnBands,\n    } = this.props;\n\n    const tableHeaderRowsComputed = (\n      { tableHeaderRows, tableColumns }: Getters,\n    ) => tableRowsWithBands(\n      tableHeaderRows, columnBands, tableColumns,\n    );\n    const tableHeaderColumnChainsComputed = (\n      { tableHeaderRows, tableColumns }: Getters,\n    ) => tableHeaderColumnChainsWithBands(\n      tableHeaderRows, tableColumns, columnBands,\n    );\n    const bandLevels = columnBandLevels(columnBands);\n\n    return (\n      <Plugin\n        name=\"TableBandHeader\"\n        dependencies={[\n          { name: 'Table' },\n          { name: 'TableHeaderRow' },\n          { name: 'TableSelection', optional: true },\n          { name: 'TableEditColumn', optional: true },\n          { name: 'TableColumnVisibility', optional: true },\n          { name: 'TableGroupRow', optional: true },\n        ]}\n      >\n        <Getter name=\"tableHeaderRows\" computed={tableHeaderRowsComputed} />\n        {/* internal */}\n        <Getter name=\"columnVisibleIntervals\" computed={columnVisibleIntervalsComputed} />\n        <Getter name=\"tableHeaderColumnChains\" computed={tableHeaderColumnChainsComputed} />\n        <Getter name=\"bandLevels\" value={bandLevels} />\n        <Getter name=\"bandLevelsVisibility\" computed={bandLevelsVisibilityComputed} />\n\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow }: any) => isBandedOrHeaderRow(tableRow)}\n        >\n          {(params: BandHeaderNS.CellProps) => (\n            <TemplateConnector>\n              {({\n                tableColumns,\n                tableHeaderRows,\n                tableHeaderColumnChains,\n                columnVisibleIntervals: columnIntervals, bandLevelsVisibility: levelsVisibility,\n              }) => {\n                const bandComponent = getBandComponent(\n                  params,\n                  tableHeaderRows, tableColumns,\n                  columnBands, tableHeaderColumnChains, columnIntervals,\n                  levelsVisibility,\n                );\n                switch (bandComponent.type) {\n                  case BAND_DUPLICATE_RENDER:\n                    return <TemplatePlaceholder params={{ ...params }} />;\n\n                  case BAND_EMPTY_CELL:\n                    return <InvisibleCell />;\n\n                  case BAND_GROUP_CELL: {\n                    const { value, ...payload } = bandComponent.payload!;\n                    return (\n                      <Cell {...params} {...payload}>\n                        {value}\n                      </Cell>\n                    );\n                  }\n\n                  case BAND_HEADER_CELL:\n                    return (\n                      <TemplatePlaceholder\n                        name=\"tableCell\"\n                        params={{ ...params, ...bandComponent.payload }}\n                      />\n                    );\n\n                  case BAND_FILL_LEVEL_CELL:\n                    return (\n                      <Cell\n                        {...params}\n                        {...bandComponent.payload}\n                        style={{ whiteSpace: 'pre' }}\n                      >\n                        {' '}\n                      </Cell>\n                    );\n                  default:\n                    return null;\n                }\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow, tableColumn }: any) => isHeadingTableCell(tableRow, tableColumn)}\n        >\n          {(params: BandHeaderNS.CellProps) => (\n            <HeaderCell component={CellPlaceholder} {...params} />\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => isBandedTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => <Row {...params} />}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\nTableBandHeaderBase.components = {\n  cellComponent: 'Cell',\n  rowComponent: 'Row',\n  bandedHeaderCellComponent: 'BandedHeaderCell',\n  invisibleCellComponent: 'InvisibleCell',\n};\n\n/** A plugin that renders the banded cells. */\nexport const TableBandHeader: React.ComponentType<TableBandHeaderProps> & {\n  /** The band row type's identifier. */\n  ROW_TYPE: symbol;\n} = TableBandHeaderBase;\n","import * as React from 'react';\nimport {\n  Getter, Template, TemplatePlaceholder, TemplateConnector, Plugin, Getters, Actions,\n} from '@devexpress/dx-react-core';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  getColumnFilterConfig,\n  tableHeaderRowsWithFilter,\n  isFilterTableCell,\n  isFilterTableRow,\n  getColumnFilterOperations,\n  isFilterValueEmpty,\n  getSelectedFilterOperation,\n  TABLE_FILTER_TYPE,\n  FilterConfig,\n  TOP_POSITION,\n} from '@devexpress/dx-grid-core';\nimport { TableFilterRowProps, TableFilterRowState, TableCellProps, TableRowProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'FilteringState' },\n  { name: 'Table' },\n  { name: 'DataTypeProvider', optional: true },\n];\n\nconst defaultMessages = {\n  filterPlaceholder: 'Filter...',\n  contains: 'Contains',\n  notContains: 'Does not contain',\n  startsWith: 'Starts with',\n  endsWith: 'Ends with',\n  equal: 'Equals',\n  notEqual: 'Does not equal',\n  greaterThan: 'Greater than',\n  greaterThanOrEqual: 'Greater than or equal to',\n  lessThan: 'Less than',\n  lessThanOrEqual: 'Less than or equal to',\n};\n\nclass TableFilterRowBase extends React.PureComponent<TableFilterRowProps, TableFilterRowState> {\n  static ROW_TYPE = TABLE_FILTER_TYPE;\n  static defaultProps = {\n    showFilterSelector: false,\n    messages: {},\n  };\n  static components = {\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n    filterSelectorComponent: 'FilterSelector',\n    iconComponent: 'Icon',\n    editorComponent: 'Editor',\n    toggleButtonComponent: 'ToggleButton',\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      filterOperations: {},\n    };\n  }\n\n  render() {\n    const {\n      rowHeight,\n      showFilterSelector,\n      cellComponent: FilterCell,\n      rowComponent: FilterRow,\n      filterSelectorComponent: FilterSelector,\n      iconComponent,\n      toggleButtonComponent,\n      editorComponent: EditorComponent,\n      messages,\n    } = this.props;\n\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    const tableHeaderRowsComputed = (\n      { tableHeaderRows }: Getters,\n    ) => tableHeaderRowsWithFilter(tableHeaderRows, rowHeight!);\n\n    return (\n      <Plugin\n        name=\"TableFilterRow\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"tableHeaderRows\" computed={tableHeaderRowsComputed} />\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow, tableColumn }: any) => isFilterTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {(\n                { filters, isColumnFilteringEnabled, getAvailableFilterOperations, isDataRemote },\n                { changeColumnFilter, scrollToRow }: Actions,\n              ) => {\n                const { filterOperations } = this.state;\n                const { name: columnName } = params.tableColumn.column!;\n                const filter = getColumnFilterConfig(filters, columnName)!;\n                const onFilter = (\n                  config: FilterConfig | null,\n                ) => {\n                  if (isDataRemote) {\n                    scrollToRow(TOP_POSITION);\n                  }\n                  changeColumnFilter({ columnName, config });\n                };\n                const columnFilterOperations = getColumnFilterOperations(\n                  getAvailableFilterOperations, columnName,\n                );\n                const selectedFilterOperation = getSelectedFilterOperation(\n                  filterOperations, columnName, filter, columnFilterOperations,\n                );\n                const handleFilterOperationChange = (value: string) => {\n                  this.setState({\n                    filterOperations: {\n                      ...filterOperations,\n                      [columnName]: value,\n                    },\n                  });\n                  if (filter && !isFilterValueEmpty(filter.value)) {\n                    onFilter({ value: filter.value, operation: value });\n                  }\n                };\n                const handleFilterValueChange = (value: any) => onFilter(!isFilterValueEmpty(value)\n                  ? { value, operation: selectedFilterOperation }\n                  : null);\n                const filteringEnabled = isColumnFilteringEnabled(columnName);\n                return (\n                  <TemplatePlaceholder\n                    name=\"valueEditor\"\n                    params={{\n                      column: params.tableColumn.column,\n                      value: filter ? filter.value : undefined,\n                      onValueChange: handleFilterValueChange,\n                      disabled: !filteringEnabled,\n                    }}\n                  >\n                    {content => (\n                      <FilterCell\n                        {...params}\n                        getMessage={getMessage}\n                        column={params.tableColumn.column!}\n                        filter={filter}\n                        filteringEnabled={filteringEnabled}\n                        onFilter={onFilter}\n                      >\n                        {showFilterSelector\n                          ? (\n                            <FilterSelector\n                              toggleButtonComponent={toggleButtonComponent}\n                              iconComponent={iconComponent}\n                              value={selectedFilterOperation}\n                              availableValues={columnFilterOperations as string[]}\n                              onChange={handleFilterOperationChange}\n                              disabled={!filteringEnabled}\n                              getMessage={getMessage}\n                            />\n                          ) : null\n                        }\n                        {content || (\n                          <EditorComponent\n                            value={filter ? filter.value : undefined}\n                            disabled={!filteringEnabled}\n                            getMessage={getMessage}\n                            onChange={handleFilterValueChange}\n                          />\n                        )}\n                      </FilterCell>\n                    )}\n                  </TemplatePlaceholder>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isFilterTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => <FilterRow {...params} />}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders a filter row. */\nexport const TableFilterRow: React.ComponentType<TableFilterRowProps> & {\n  /** The filter row type's identifier. */\n  ROW_TYPE: symbol;\n} = TableFilterRowBase;\n","import * as React from 'react';\nimport {\n  Getter, Template, TemplatePlaceholder, TemplateConnector, Plugin, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  getRowChange,\n  tableRowsWithEditing,\n  isEditTableRow,\n  isAddedTableRow,\n  isEditTableCell,\n  TABLE_EDIT_TYPE,\n  TABLE_ADDED_TYPE,\n} from '@devexpress/dx-grid-core';\nimport { TableEditRowProps, TableCellProps, TableRowProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n  { name: 'Table' },\n  { name: 'DataTypeProvider', optional: true },\n];\n\nclass TableEditRowBase extends React.PureComponent<TableEditRowProps> {\n  static ADDED_ROW_TYPE = TABLE_ADDED_TYPE;\n  static EDIT_ROW_TYPE = TABLE_EDIT_TYPE;\n  static components = {\n    rowComponent: 'Row',\n    cellComponent: 'Cell',\n  };\n\n  render() {\n    const {\n      cellComponent: EditCell,\n      rowComponent: EditRow,\n      rowHeight,\n    } = this.props;\n\n    const tableBodyRowsComputed = (\n      { tableBodyRows, editingRowIds, addedRows }: Getters,\n    ) => tableRowsWithEditing(tableBodyRows, editingRowIds, addedRows, rowHeight);\n\n    return (\n      <Plugin\n        name=\"TableEditRow\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"tableBodyRows\" computed={tableBodyRowsComputed} />\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow, tableColumn }: any) => isEditTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({\n                getCellValue,\n                createRowChange,\n                rowChanges,\n                isColumnEditingEnabled,\n              }, {\n                changeAddedRow,\n                changeRow,\n              }) => {\n                const { rowId, row } = params.tableRow;\n                const { column } = params.tableColumn;\n                const { name: columnName } = column!;\n\n                const isNew = isAddedTableRow(params.tableRow);\n                const changedRow = isNew\n                  ? row\n                  : { ...row, ...getRowChange(rowChanges, rowId!) };\n\n                const value = getCellValue(changedRow, columnName);\n                const onValueChange = (newValue: any) => {\n                  const changeArgs = {\n                    rowId,\n                    change: createRowChange(changedRow, newValue, columnName),\n                  };\n                  if (isNew) {\n                    changeAddedRow(changeArgs);\n                  } else {\n                    changeRow(changeArgs);\n                  }\n                };\n                const editingEnabled = isColumnEditingEnabled(columnName);\n                return (\n                  <TemplatePlaceholder\n                    name=\"valueEditor\"\n                    params={{\n                      column,\n                      row,\n                      value,\n                      onValueChange,\n                      disabled: !editingEnabled,\n                    }}\n                  >\n                    {content => (\n                      <EditCell\n                        {...params}\n                        row={row}\n                        column={column!}\n                        value={value}\n                        editingEnabled={editingEnabled}\n                        onValueChange={onValueChange}\n                      >\n                        {content}\n                      </EditCell>\n                    )}\n                  </TemplatePlaceholder>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={(\n            { tableRow }: any,\n          ) => !!(isEditTableRow(tableRow) || isAddedTableRow(tableRow))}\n        >\n          {(params: TableRowProps) => (\n            <EditRow\n              {...params}\n              row={params.tableRow.row}\n            />\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders a row being edited. */\nexport const TableEditRow: React.ComponentType<TableEditRowProps> & {\n  /** The added row type's identifier. */\n  ADDED_ROW_TYPE: symbol;\n  /** The edit row type's identifier. */\n  EDIT_ROW_TYPE: symbol;\n} = TableEditRowBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Getter, Template, Plugin, TemplateConnector, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  TABLE_EDIT_COMMAND_TYPE,\n  tableColumnsWithEditing,\n  isHeadingEditCommandsTableCell,\n  isEditCommandsTableCell,\n  isAddedTableRow,\n  isEditTableRow,\n} from '@devexpress/dx-grid-core';\nimport { TableEditColumnProps, TableCellProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n  { name: 'Table' },\n];\n\nconst defaultMessages = {\n  addCommand: 'New',\n  editCommand: 'Edit',\n  deleteCommand: 'Delete',\n  commitCommand: 'Save',\n  cancelCommand: 'Cancel',\n};\n\nclass TableEditColumnBase extends React.PureComponent<TableEditColumnProps> {\n  static COLUMN_TYPE = TABLE_EDIT_COMMAND_TYPE;\n  static defaultProps = {\n    showAddCommand: false,\n    showEditCommand: false,\n    showDeleteCommand: false,\n    width: 140,\n    messages: {},\n  };\n  static components = {\n    cellComponent: 'Cell',\n    headerCellComponent: 'HeaderCell',\n    commandComponent: 'Command',\n  };\n\n  render() {\n    const {\n      cellComponent: Cell,\n      headerCellComponent: HeaderCell,\n      commandComponent: Command,\n      showAddCommand,\n      showEditCommand,\n      showDeleteCommand,\n      width,\n      messages,\n    } = this.props;\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n    const tableColumnsComputed = (\n      { tableColumns }: Getters,\n    ) => tableColumnsWithEditing(tableColumns, width!);\n\n    return (\n      <Plugin\n        name=\"TableEditColumn\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isHeadingEditCommandsTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {(getters, actions) => (\n                <HeaderCell {...params}>\n                  {showAddCommand && (\n                    <Command\n                      id=\"add\"\n                      text={getMessage('addCommand')}\n                      onExecute={() => actions.addRow()}\n                    />\n                  )}\n                </HeaderCell>\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isEditCommandsTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {(getters, actions) => {\n                const isEdit = isEditTableRow(params.tableRow);\n                const isNew = isAddedTableRow(params.tableRow);\n                const isEditing = isEdit || isNew;\n                const rowIds = [params.tableRow.rowId];\n                return (\n                  <Cell\n                    {...params}\n                    row={params.tableRow.row}\n                  >\n                    {showEditCommand && !isEditing && (\n                      <Command\n                        id=\"edit\"\n                        text={getMessage('editCommand')}\n                        onExecute={() => actions.startEditRows({ rowIds })}\n                      />\n                    )}\n                    {showDeleteCommand && !isEditing && (\n                      <Command\n                        id=\"delete\"\n                        text={getMessage('deleteCommand')}\n                        onExecute={() => {\n                          actions.deleteRows({ rowIds });\n                          actions.commitDeletedRows({ rowIds });\n                        }}\n                      />\n                    )}\n                    {isEditing && (\n                      <Command\n                        id=\"commit\"\n                        text={getMessage('commitCommand')}\n                        onExecute={() => {\n                          if (isNew) {\n                            actions.commitAddedRows({ rowIds });\n                          } else {\n                            actions.stopEditRows({ rowIds });\n                            actions.commitChangedRows({ rowIds });\n                          }\n                        }}\n                      />\n                    )}\n                    {isEditing && (\n                      <Command\n                        id=\"cancel\"\n                        text={getMessage('cancelCommand')}\n                        onExecute={() => {\n                          if (isNew) {\n                            actions.cancelAddedRows({ rowIds });\n                          } else {\n                            actions.stopEditRows({ rowIds });\n                            actions.cancelChangedRows({ rowIds });\n                          }\n                        }}\n                      />\n                    )}\n                  </Cell>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that renders a command column. This column contains controls used for row editing,\n * creating, or deleting and committing/canceling changes.\n * */\nexport const TableEditColumn: React.ComponentType<TableEditColumnProps> & {\n  /** The edit column type's identifier. */\n  COLUMN_TYPE: symbol;\n} = TableEditColumnBase;\n","import * as React from 'react';\nimport { memoize, MemoizedComputed } from '@devexpress/dx-core';\nimport {\n  Plugin, Getter, Action, createStateHelper, StateHelper, ActionFn, Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  tableColumnsWithWidths,\n  tableColumnsWithDraftWidths,\n  changeTableColumnWidth,\n  draftTableColumnWidth,\n  cancelTableColumnWidthDraft,\n  ColumnWidthPayload,\n  TableColumnWidthInfo,\n  TABLE_DATA_TYPE,\n} from '@devexpress/dx-grid-core';\nimport { TableColumnResizingProps, TableColumnResizingState, CellWidthGetter } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Table' },\n];\n\n// tslint:disable-next-line: max-line-length\nclass TableColumnResizingBase extends React.PureComponent<TableColumnResizingProps, TableColumnResizingState> {\n  static defaultProps = {\n    defaultColumnWidths: [],\n    resizingMode: 'widget',\n  };\n  changeTableColumnWidth: ActionFn<ColumnWidthPayload>;\n  draftTableColumnWidth: ActionFn<ColumnWidthPayload>;\n  cancelTableColumnWidthDraft: ActionFn<any>;\n  storeWidthGetters: ActionFn<object>;\n  storeCache: (payload) => void;\n  clearCache: () => void;\n  tableColumnsComputed: MemoizedComputed<TableColumnWidthInfo[], typeof tableColumnsWithWidths>;\n  // tslint:disable-next-line: max-line-length\n  tableColumnsDraftComputed: MemoizedComputed<TableColumnWidthInfo[], typeof tableColumnsWithDraftWidths>;\n\n  widthGetters: { [colName: string]: CellWidthGetter } = {};\n  cachedWidths: { [colName: string]: number } = {};\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      columnWidths: props.columnWidths || props.defaultColumnWidths,\n      draftColumnWidths: [],\n    };\n\n    const stateHelper: StateHelper = createStateHelper(\n      this,\n      {\n        columnWidths: () => {\n          const { onColumnWidthsChange } = this.props;\n          return onColumnWidthsChange;\n        },\n      },\n    );\n\n    this.tableColumnsComputed = memoize(\n      columnWidths => (\n        { tableColumns }: Getters,\n      ) => tableColumnsWithWidths(tableColumns, columnWidths, this.props.resizingMode!),\n    );\n    this.tableColumnsDraftComputed = memoize(\n      draftColumnWidths => (\n        { tableColumns }: Getters,\n      ) => tableColumnsWithDraftWidths(\n        tableColumns, draftColumnWidths, this.props.resizingMode!,\n      ),\n    );\n\n    this.changeTableColumnWidth = stateHelper.applyReducer.bind(\n      stateHelper, (prevState, payload) => {\n        const cachedWidths = { ...this.cachedWidths };\n        const { minColumnWidth, maxColumnWidth, columnExtensions, resizingMode } = this.props;\n        return changeTableColumnWidth(\n          prevState,\n          { ...payload, cachedWidths, resizingMode,\n            minColumnWidth, maxColumnWidth, columnExtensions },\n        );\n      },\n    );\n    this.draftTableColumnWidth = stateHelper.applyReducer.bind(\n      stateHelper, (prevState, payload) => {\n        this.storeCache(payload);\n        const cachedWidths = this.cachedWidths;\n        const { minColumnWidth, maxColumnWidth, columnExtensions, resizingMode } = this.props;\n        return draftTableColumnWidth(\n          prevState,\n          { ...payload, cachedWidths, resizingMode,\n            minColumnWidth, maxColumnWidth, columnExtensions },\n        );\n      },\n    );\n    this.cancelTableColumnWidthDraft = stateHelper.applyReducer.bind(\n      stateHelper, cancelTableColumnWidthDraft,\n    );\n\n    this.storeCache = ({ columnName, nextColumnName }) => {\n      if (Object.keys(this.cachedWidths).length === 0) {\n        this.cachedWidths[columnName] = this.widthGetters[columnName]();\n        if (nextColumnName) {\n          this.cachedWidths[nextColumnName] = this.widthGetters[nextColumnName]();\n        }\n      }\n    };\n    this.clearCache = () => {\n      Object.keys(this.cachedWidths)\n      .forEach(columnName => delete this.cachedWidths[columnName]);\n    };\n\n    this.storeWidthGetters = memoize(({ tableColumn, getter, tableColumns }) => {\n      if (tableColumn.type === TABLE_DATA_TYPE) {\n        this.widthGetters[tableColumn.column!.name] = getter;\n      }\n      Object.keys(this.widthGetters)\n      .forEach((columnName) => {\n        const columnIndex = tableColumns\n          .findIndex(({ type, column }) => type === TABLE_DATA_TYPE && column!.name === columnName);\n        if (columnIndex === -1) {\n          delete this.widthGetters[columnName];\n        }\n      });\n    });\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      columnWidths = prevState.columnWidths,\n    } = nextProps;\n\n    return {\n      columnWidths,\n    };\n  }\n\n  componentDidUpdate (_, prevState) {\n    const { columnWidths: currentWidths } = this.state;\n    const { columnWidths: prevWidths } = prevState;\n    if (currentWidths !== prevWidths) {\n      this.clearCache();\n    }\n  }\n\n  render() {\n    const { columnWidths, draftColumnWidths } = this.state;\n    const { resizingMode } = this.props;\n    const tableColumnsComputed = this.tableColumnsComputed(columnWidths);\n    const tableColumnsDraftComputed = this.tableColumnsDraftComputed(draftColumnWidths);\n\n    return (\n      <Plugin\n        name=\"TableColumnResizing\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"tableColumnResizingEnabled\" value />\n        <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n        <Getter name=\"tableColumns\" computed={tableColumnsDraftComputed} />\n        <Getter name=\"columnResizingMode\" value={resizingMode} />\n        <Action name=\"changeTableColumnWidth\" action={this.changeTableColumnWidth} />\n        <Action name=\"draftTableColumnWidth\" action={this.draftTableColumnWidth} />\n        <Action name=\"cancelTableColumnWidthDraft\" action={this.cancelTableColumnWidthDraft} />\n        <Action name=\"storeWidthGetters\" action={this.storeWidthGetters} />\n      </Plugin>\n    );\n  }\n}\n\n/* tslint:disable: max-line-length */\n/** A plugin that manages table column widths. */\nexport const TableColumnResizing: React.ComponentType<TableColumnResizingProps> = TableColumnResizingBase;\n/* tslint:enable: max-line-length */\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Template, TemplatePlaceholder, Plugin,\n  TemplateConnector,\n} from '@devexpress/dx-react-core';\nimport { pageCount } from '@devexpress/dx-grid-core';\nimport { PagingPanelProps, TableKeyboardNavigation } from '../types';\n\nconst pluginDependencies = [\n  { name: 'PagingState' },\n];\n\nconst defaultMessages = {\n  showAll: 'All',\n  info: ({ from, to, count }) => `${from}${from < to ? `-${to}` : ''} of ${count}`,\n};\n\nclass PagingPanelBase extends React.PureComponent<PagingPanelProps> {\n  static defaultProps = {\n    pageSizes: [],\n    messages: {},\n  };\n  static components = {\n    containerComponent: 'Container',\n  };\n\n  render() {\n    const {\n      containerComponent: Pager,\n      pageSizes,\n      messages,\n    } = this.props;\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    return (\n      <Plugin\n        name=\"PagingPanel\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"footer\">\n          {(params: TableKeyboardNavigation.ExtraProps) => (\n            <React.Fragment>\n              <TemplatePlaceholder />\n              <TemplateConnector>\n              {({ currentPage, pageSize, totalCount },\n                { setCurrentPage, setPageSize }) => (\n                <Pager\n                  {...params}\n                  currentPage={currentPage}\n                  pageSize={pageSize}\n                  totalCount={totalCount}\n                  totalPages={pageCount(totalCount, pageSize)}\n                  pageSizes={pageSizes!}\n                  getMessage={getMessage}\n                  onCurrentPageChange={setCurrentPage}\n                  onPageSizeChange={setPageSize}\n                />\n              )}\n              </TemplateConnector>\n            </React.Fragment>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the paging panel used for navigation through data pages. */\nexport const PagingPanel: React.ComponentType<PagingPanelProps> = PagingPanelBase;\n","import * as React from 'react';\nimport { DragSource } from '@devexpress/dx-react-core';\nimport { GroupingPanel as GP } from '../../types';\n\nconst defaultProps = {\n  draggingEnabled: false,\n  onDragStart: () => {},\n  onDragEnd: () => {},\n};\ntype GPItemLayoutProps = GP.GroupingItemLayoutProps & typeof defaultProps;\n\n// tslint:disable-next-line: max-line-length\nexport class ItemLayout extends React.PureComponent<GPItemLayoutProps, GP.GroupingItemLayoutState> {\n  static defaultProps = defaultProps;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      dragging: false,\n    };\n  }\n\n  render() {\n    const {\n      item,\n      itemComponent: Item,\n      itemRef,\n      draggingEnabled,\n      onDragStart,\n      onDragEnd,\n    } = this.props;\n    const { dragging } = this.state;\n\n    const itemElement = <Item item={{ ...item, draft: dragging || item.draft }} />;\n\n    return (draggingEnabled ? (\n      <DragSource\n        payload={[{ type: 'column', columnName: item.column.name }]}\n        onStart={() => {\n          this.setState({ dragging: true });\n          onDragStart();\n        }}\n        onEnd={() => {\n          this.setState({ dragging: false });\n          onDragEnd();\n        }}\n        ref={itemRef}\n      >\n        {itemElement}\n      </DragSource>\n    ) : (\n      itemElement\n    ));\n  }\n}\n","import * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { DropTarget } from '@devexpress/dx-react-core';\nimport { getGroupCellTargetIndex } from '@devexpress/dx-grid-core';\nimport { ItemLayout } from './group-panel-layout/item-layout';\nimport { GroupingPanel as GP } from '../types';\n\nconst defaultProps = {\n  onGroup: () => {},\n  draggingEnabled: false,\n  isColumnGroupingEnabled: () => false,\n  onGroupDraft: () => {},\n  onGroupDraftCancel: () => {},\n};\ntype GPLayoutProps = GP.LayoutProps & typeof defaultProps;\n\n// tslint:disable-next-line: max-line-length\nclass GroupPanelLayoutBase extends React.PureComponent<GPLayoutProps, GP.GroupingItemLayoutState> {\n  static defaultProps = defaultProps;\n  handleDragEvent: (...args: any) => void;\n  onEnter: (any) => void;\n  onOver: (any) => void;\n  itemRefs: Element[] = [];\n  draggingColumnName: string | null = null;\n  onLeave: () => void;\n  onDrop: () => void;\n  onDragStart: (columnName: any) => void;\n  onDragEnd: () => void;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      sourceColumnName: null,\n      targetItemIndex: -1,\n    };\n    this.handleDragEvent = (eventHandler, { payload, ...restArgs }) => {\n      const { isColumnGroupingEnabled } = this.props;\n      const { columnName } = payload[0];\n\n      if (isColumnGroupingEnabled(columnName)) {\n        eventHandler({ payload, ...restArgs });\n      }\n    };\n    this.onEnter = ({ payload }) => {\n      flushSync(() => this.setState({\n        sourceColumnName: payload[0].columnName,\n      }));\n    };\n    this.onOver = ({ clientOffset }) => {\n      const { onGroupDraft, items } = this.props;\n      const { sourceColumnName, targetItemIndex: prevTargetItemIndex } = this.state;\n      // eslint-disable-next-line react/no-find-dom-node\n      const itemGeometries = this.itemRefs\n        .map(ref => ref.getBoundingClientRect());\n      const sourceItemIndex = items.findIndex(({ column }) => column.name === sourceColumnName);\n      const targetItemIndex = getGroupCellTargetIndex(\n        itemGeometries,\n        sourceItemIndex,\n        clientOffset,\n      );\n\n      if (prevTargetItemIndex === targetItemIndex) return;\n\n      onGroupDraft({\n        columnName: sourceColumnName,\n        groupIndex: targetItemIndex,\n      });\n      this.setState({ targetItemIndex });\n    };\n    this.onLeave = () => {\n      const { onGroupDraft } = this.props;\n      const { sourceColumnName } = this.state;\n      if (!this.draggingColumnName) {\n        this.resetState();\n        return;\n      }\n      onGroupDraft({\n        columnName: sourceColumnName,\n        groupIndex: -1,\n      });\n      this.setState({\n        targetItemIndex: -1,\n      });\n    };\n    this.onDrop = () => {\n      const { onGroup } = this.props;\n      const { sourceColumnName, targetItemIndex } = this.state;\n      this.resetState();\n      onGroup({\n        columnName: sourceColumnName,\n        groupIndex: targetItemIndex,\n      });\n    };\n    this.onDragStart = (columnName) => {\n      this.draggingColumnName = columnName;\n    };\n    this.onDragEnd = () => {\n      this.draggingColumnName = null;\n      const { sourceColumnName, targetItemIndex } = this.state;\n      const { onGroup } = this.props;\n      if (sourceColumnName && targetItemIndex === -1) {\n        onGroup({\n          columnName: sourceColumnName,\n        });\n      }\n      this.resetState();\n    };\n  }\n\n  resetState() {\n    const { onGroupDraftCancel } = this.props;\n    onGroupDraftCancel();\n    this.setState({\n      sourceColumnName: null,\n      targetItemIndex: -1,\n    });\n  }\n\n  render() {\n    const {\n      items,\n      emptyMessageComponent: EmptyMessage,\n      containerComponent: Container,\n      itemComponent: Item,\n      draggingEnabled,\n      isColumnGroupingEnabled,\n    } = this.props;\n\n    this.itemRefs = [];\n\n    const groupPanel = (items.length ? (\n      <Container>\n        {items.map((item) => {\n          const { name: columnName } = item.column;\n          return (\n            <ItemLayout\n              key={columnName}\n              item={item}\n              itemComponent={Item}\n              itemRef={element => element && this.itemRefs.push(element)}\n              draggingEnabled={draggingEnabled && isColumnGroupingEnabled(columnName)}\n              onDragStart={() => this.onDragStart(columnName)}\n              onDragEnd={this.onDragEnd}\n            />\n          );\n        })}\n      </Container>\n    ) : (\n      <EmptyMessage />\n    ));\n\n    return draggingEnabled\n      ? (\n        <DropTarget\n          onEnter={args => this.handleDragEvent(this.onEnter, args)}\n          onOver={args => this.handleDragEvent(this.onOver, args)}\n          onLeave={args => this.handleDragEvent(this.onLeave, args)}\n          onDrop={args => this.handleDragEvent(this.onDrop, args)}\n        >\n          {groupPanel}\n        </DropTarget>\n      )\n      : groupPanel;\n  }\n}\n\n/** @internal */\nexport const GroupPanelLayout: React.ComponentType<GP.LayoutProps> = GroupPanelLayoutBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Template, TemplatePlaceholder, Plugin, TemplateConnector, withComponents,\n  Getters, Actions,\n} from '@devexpress/dx-react-core';\nimport {\n  groupingPanelItems,\n  getColumnSortingDirection,\n  TOP_POSITION,\n  GroupingPanelItem,\n} from '@devexpress/dx-grid-core';\nimport { GroupPanelLayout as Layout } from '../components/group-panel-layout';\nimport { GroupingPanelProps } from '../types';\n\nconst defaultMessages = {\n  groupByColumn: 'Drag a column header here to group by that column',\n};\n\nconst defaultProps = {\n  showSortingControls: false,\n  showGroupingControls: false,\n  messages: {},\n};\n\nclass GroupingPanelRaw extends React.PureComponent<GroupingPanelProps & typeof defaultProps> {\n  static defaultProps = defaultProps;\n  static components = {\n    layoutComponent: 'Layout',\n    containerComponent: 'Container',\n    itemComponent: 'Item',\n    emptyMessageComponent: 'EmptyMessage',\n  };\n\n  render() {\n    const {\n      layoutComponent: LayoutComponent,\n      containerComponent: Container,\n      itemComponent: Item,\n      emptyMessageComponent: EmptyMessage,\n      showSortingControls,\n      showGroupingControls,\n      messages,\n    } = this.props;\n\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    const EmptyMessagePlaceholder = ({ forwardedRef }: { forwardedRef?: React.Ref<Element> }) => (\n      <EmptyMessage\n        getMessage={getMessage}\n        forwardedRef={forwardedRef}\n      />\n    );\n\n    const ItemPlaceholder = ({\n      item, forwardedRef,\n    }: { item: GroupingPanelItem, forwardedRef?: React.Ref<Element> }) => {\n      const { name: columnName } = item.column;\n\n      return (\n        <TemplateConnector>\n          {(\n            { sorting, isColumnSortingEnabled, isColumnGroupingEnabled },\n            { changeColumnGrouping, changeColumnSorting },\n          ) => {\n            const sortingEnabled = isColumnSortingEnabled && isColumnSortingEnabled(columnName);\n            const groupingEnabled = isColumnGroupingEnabled && isColumnGroupingEnabled(columnName);\n\n            return (\n              <Item\n                forwardedRef={forwardedRef}\n                item={item}\n                sortingEnabled={sortingEnabled}\n                groupingEnabled={groupingEnabled}\n                showSortingControls={showSortingControls}\n                sortingDirection={showSortingControls\n                  ? getColumnSortingDirection(sorting, columnName)! : undefined}\n                showGroupingControls={showGroupingControls}\n                onGroup={() => changeColumnGrouping({ columnName })}\n                onSort={(\n                  { direction, keepOther },\n                ) => changeColumnSorting({ columnName, direction, keepOther })}\n              />\n            );\n          }}\n        </TemplateConnector>\n      );\n    };\n\n    return (\n      <Plugin\n        name=\"GroupingPanel\"\n        dependencies={[\n          { name: 'GroupingState' },\n          { name: 'Toolbar' },\n          { name: 'SortingState', optional: !showSortingControls },\n        ]}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplateConnector>\n            {({\n              columns, grouping, draftGrouping,\n              draggingEnabled, isColumnGroupingEnabled, isDataRemote,\n            }: Getters, {\n              changeColumnGrouping, draftColumnGrouping, cancelColumnGroupingDraft, scrollToRow,\n            }: Actions) => {\n              const onGroup = (config) => {\n                if (isDataRemote) {\n                  scrollToRow(TOP_POSITION);\n                }\n                changeColumnGrouping(config);\n              };\n\n              return <LayoutComponent\n                items={groupingPanelItems(columns, grouping, draftGrouping)}\n                isColumnGroupingEnabled={isColumnGroupingEnabled}\n                draggingEnabled={draggingEnabled}\n                onGroup={onGroup}\n                onGroupDraft={draftColumnGrouping}\n                onGroupDraftCancel={cancelColumnGroupingDraft}\n                itemComponent={ItemPlaceholder}\n                emptyMessageComponent={EmptyMessagePlaceholder}\n                containerComponent={Container}\n              />;\n            }}\n          </TemplateConnector>\n          <TemplatePlaceholder />\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that renders the Grouping Panel in the Grid's header. This panel displays grouped\n * columns and allows a user to modify grouping options.Optionally, the plugin allows an end-user\n * to change grouped columns' sorting order and render sorting indicators.\n * */\nexport const GroupingPanel: React.ComponentType<GroupingPanelProps> = withComponents(\n  { Layout },\n)(GroupingPanelRaw);\n","import * as React from 'react';\nimport { Plugin, Template, Getter, Getters } from '@devexpress/dx-react-core';\nimport { getAvailableFilterOperationsGetter } from '@devexpress/dx-grid-core';\nimport {\n  DataTypeProvider as DataTypeProviderNS, DataTypeProviderProps,\n} from '../types';\n\nclass DataTypeProviderBase extends React.PureComponent<DataTypeProviderProps> {\n  render() {\n    const {\n      for: columnNames,\n      formatterComponent: Formatter,\n      editorComponent: Editor,\n      availableFilterOperations,\n    } = this.props;\n\n    const getAvailableFilterOperationsComputed = (\n      { getAvailableFilterOperations }: Getters,\n    ) => getAvailableFilterOperationsGetter(\n      getAvailableFilterOperations,\n      availableFilterOperations!,\n      columnNames,\n    );\n\n    return (\n      <Plugin name=\"DataTypeProvider\" key={columnNames.join('_')}>\n        <Getter\n          name=\"getAvailableFilterOperations\"\n          computed={getAvailableFilterOperationsComputed}\n        />\n        {Formatter\n          ? (\n            <Template\n              name=\"valueFormatter\"\n              predicate={({ column }: any) => columnNames.includes(column.name)}\n            >\n              {(params: DataTypeProviderNS.ValueFormatterProps) => <Formatter {...params} />}\n            </Template>\n          )\n          : null\n        }\n        {Editor\n          ? (\n            <Template\n              name=\"valueEditor\"\n              predicate={({ column }: any) => columnNames.includes(column.name)}\n            >\n              {(params: DataTypeProviderNS.ValueEditorProps) => <Editor {...params} />}\n            </Template>\n          )\n          : null\n        }\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\n/** A plugin that allows you to customize formatting options and editors depending on the data type. */\nexport const DataTypeProvider: React.ComponentType<DataTypeProviderProps> = DataTypeProviderBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Action,\n  Getter,\n  Plugin,\n  Template,\n  TemplateConnector,\n  TemplatePlaceholder,\n  createStateHelper,\n  ActionFn,\n} from '@devexpress/dx-react-core';\nimport {\n  toggleColumn,\n  tableDataColumnsExist,\n  getColumnExtensionValueGetter,\n} from '@devexpress/dx-grid-core';\nimport { VisibleTableColumns } from './internal/visible-table-columns';\nimport { TableColumnVisibilityProps, TableColumnVisibilityState } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Table' },\n];\n\nconst defaultMessages = {\n  noColumns: 'Nothing to show',\n};\n\nconst columnExtensionValueGetter = (\n  columnExtensions, defaultValue,\n) => getColumnExtensionValueGetter(columnExtensions, 'togglingEnabled', defaultValue);\n\n// tslint:disable-next-line: max-line-length\nclass TableColumnVisibilityBase extends React.PureComponent<TableColumnVisibilityProps, TableColumnVisibilityState> {\n  static defaultProps = {\n    defaultHiddenColumnNames: [],\n    messages: {},\n    columnTogglingEnabled: true,\n  };\n  static components = {\n    emptyMessageComponent: 'EmptyMessage',\n  };\n  toggleColumnVisibility: ActionFn<string[]>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      hiddenColumnNames: props.hiddenColumnNames || props.defaultHiddenColumnNames,\n    };\n    const stateHelper = createStateHelper(\n      this,\n      {\n        hiddenColumnNames: () => {\n          const { onHiddenColumnNamesChange } = this.props;\n          return onHiddenColumnNamesChange;\n        },\n      },\n    );\n\n    this.toggleColumnVisibility = stateHelper.applyFieldReducer.bind(\n      stateHelper, 'hiddenColumnNames', toggleColumn,\n    );\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      hiddenColumnNames = prevState.hiddenColumnNames,\n    } = nextProps;\n\n    return {\n      hiddenColumnNames,\n    };\n  }\n\n  render() {\n    const {\n      emptyMessageComponent: EmptyMessage,\n      messages,\n    } = this.props;\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n    const { hiddenColumnNames } = this.state;\n    const { columnExtensions, columnTogglingEnabled } = this.props;\n\n    return (\n      <Plugin\n        name=\"TableColumnVisibility\"\n        dependencies={pluginDependencies}\n      >\n        <VisibleTableColumns hiddenColumnNames={hiddenColumnNames} />\n\n        <Getter\n          name=\"isColumnTogglingEnabled\"\n          value={columnExtensionValueGetter(columnExtensions, columnTogglingEnabled)}\n        />\n        <Action\n          name=\"toggleColumnVisibility\"\n          action={this.toggleColumnVisibility}\n        />\n\n        <Template name=\"table\">\n          {params => (\n            <TemplateConnector>\n              {({ tableColumns }) => (tableDataColumnsExist(tableColumns)\n                ? <TemplatePlaceholder />\n                : (\n                  <EmptyMessage\n                    getMessage={getMessage}\n                    {...params}\n                  />\n                )\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\nTableColumnVisibilityBase.components = {\n  emptyMessageComponent: 'EmptyMessage',\n};\n\n/* tslint:disable: max-line-length */\n/** A plugin that manages Grid columns' visibility. */\nexport const TableColumnVisibility: React.ComponentType<TableColumnVisibilityProps> = TableColumnVisibilityBase;\n/* tslint:enable: max-line-length */\n","import * as React from 'react';\n\nimport {\n  Template,\n  Plugin,\n  TemplatePlaceholder,\n} from '@devexpress/dx-react-core';\nimport { ToolbarProps, TableKeyboardNavigation } from '../types';\n\nclass ToolbarBase extends React.PureComponent<ToolbarProps> {\n  static components = {\n    rootComponent: 'Root',\n    flexibleSpaceComponent: 'FlexibleSpace',\n  };\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        {(params: TableKeyboardNavigation.ExtraProps) => (\n          <React.Fragment>\n            <Root {...params}>\n              <TemplatePlaceholder name=\"toolbarContent\" />\n            </Root>\n            <TemplatePlaceholder />\n          </React.Fragment>\n        )}\n        </Template>\n        <Template name=\"toolbarContent\">\n          <FlexibleSpaceComponent />\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the Grid toolbar. */\nexport const Toolbar: React.ComponentType<ToolbarProps> = ToolbarBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, ActionFn,\n} from '@devexpress/dx-react-core';\nimport { toggleRowExpanded, ToggleRowPayload } from '@devexpress/dx-grid-core';\nimport { TreeDataStateProps, TreeDataStateState } from '../types';\n\nclass TreeDataStateBase extends React.PureComponent<TreeDataStateProps, TreeDataStateState> {\n  static defaultProps = {\n    defaultExpandedRowIds: [],\n  };\n  toggleRowExpanded: ActionFn<ToggleRowPayload>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      expandedRowIds: props.expandedRowIds || props.defaultExpandedRowIds,\n    };\n\n    const stateHelper = createStateHelper(\n      this,\n      {\n        expandedRowIds: () => {\n          const { onExpandedRowIdsChange } = this.props;\n          return onExpandedRowIdsChange;\n        },\n      },\n    );\n\n    this.toggleRowExpanded = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'expandedRowIds', toggleRowExpanded);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      expandedRowIds = prevState.expandedRowIds,\n    } = nextProps;\n\n    return {\n      expandedRowIds,\n    };\n  }\n\n  render() {\n    const { expandedRowIds } = this.state;\n\n    return (\n      <Plugin\n        name=\"TreeDataState\"\n      >\n        <Getter name=\"expandedRowIds\" value={expandedRowIds} />\n        {' '}\n        {/* collision =( */}\n        <Action name=\"toggleRowExpanded\" action={this.toggleRowExpanded} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the expanded state for tree rows. */\nexport const TreeDataState: React.ComponentType<TreeDataStateProps> = TreeDataStateBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport {\n  customTreeRowLevelKeyGetter,\n  customTreeRowIdGetter,\n  customTreeRowsWithMeta,\n  expandedTreeRows,\n  collapsedTreeRowsGetter,\n  isTreeRowLeafGetter,\n  getTreeRowLevelGetter,\n  unwrappedCustomTreeRows,\n} from '@devexpress/dx-grid-core';\nimport { CustomTreeDataProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'TreeDataState' },\n];\n\nconst expandedTreeRowsComputed = (\n  { rows, getRowId, expandedRowIds }: Getters,\n) => expandedTreeRows(rows, getRowId, expandedRowIds);\nconst getRowIdComputed = (\n  { getRowId, rows }: Getters,\n) => customTreeRowIdGetter(getRowId, rows);\nconst getRowLevelKeyComputed = (\n  { getRowLevelKey, rows }: Getters,\n) => customTreeRowLevelKeyGetter(getRowLevelKey, rows);\nconst isTreeRowLeafComputed = ({ rows }: Getters) => isTreeRowLeafGetter(rows);\nconst getTreeRowLevelComputed = ({ rows }: Getters) => getTreeRowLevelGetter(rows);\nconst collapsedTreeRowsGetterComputed = (\n  { rows, getCollapsedRows }: Getters,\n) => collapsedTreeRowsGetter(getCollapsedRows, rows);\nconst unwrappedTreeRowsComputed = ({ rows }: Getters) => unwrappedCustomTreeRows(rows);\n\nclass CustomTreeDataBase extends React.PureComponent<CustomTreeDataProps> {\n  render() {\n    const {\n      getChildRows,\n    } = this.props;\n    const treeRowsComputed = ({ rows }: Getters) => customTreeRowsWithMeta(rows, getChildRows);\n\n    return (\n      <Plugin\n        name=\"CustomTreeData\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"rows\" computed={treeRowsComputed} />\n        <Getter name=\"getRowId\" computed={getRowIdComputed} />\n        <Getter name=\"getRowLevelKey\" computed={getRowLevelKeyComputed} />\n        <Getter name=\"isTreeRowLeaf\" computed={isTreeRowLeafComputed} />\n        <Getter name=\"getTreeRowLevel\" computed={getTreeRowLevelComputed} />\n        <Getter name=\"rows\" computed={expandedTreeRowsComputed} />\n        <Getter name=\"getCollapsedRows\" computed={collapsedTreeRowsGetterComputed} />\n        <Getter name=\"rows\" computed={unwrappedTreeRowsComputed} />\n      </Plugin>\n    );\n  }\n}\n\n/***\n * A plugin that converts custom formatted tree data to a supported format and performs\n * local row expanding/collapsing.\n * */\nexport const CustomTreeData: React.ComponentType<CustomTreeDataProps> = CustomTreeDataBase;\n","import * as React from 'react';\nimport {\n  Template, Getter, Plugin, TemplateConnector, TemplatePlaceholder,\n} from '@devexpress/dx-react-core';\nimport { isTreeTableCell } from '@devexpress/dx-grid-core';\nimport { TableTreeColumnProps, TableCellProps } from '../types';\n\nclass TableTreeColumnBase extends React.PureComponent<TableTreeColumnProps> {\n  static defaultProps = {\n    showSelectionControls: false,\n    showSelectAll: false,\n  };\n  static components = {\n    cellComponent: 'Cell',\n    contentComponent: 'Content',\n    indentComponent: 'Indent',\n    expandButtonComponent: 'ExpandButton',\n    checkboxComponent: 'Checkbox',\n  };\n\n  render() {\n    const {\n      for: forColumnName,\n      showSelectionControls,\n      showSelectAll,\n      indentComponent: Indent,\n      expandButtonComponent: ExpandButton,\n      checkboxComponent: Checkbox,\n      contentComponent: Content,\n      cellComponent: Cell,\n    } = this.props;\n    return (\n      <Plugin\n        name=\"TableTreeColumn\"\n        dependencies={[\n          { name: 'DataTypeProvider', optional: true },\n          { name: 'TreeDataState' },\n          { name: 'SelectionState', optional: !showSelectionControls },\n          { name: 'IntegratedSelection', optional: !showSelectAll },\n          { name: 'Table' },\n          { name: 'TableHeaderRow', optional: true },\n        ]}\n        key={forColumnName}\n      >\n        <Getter name=\"tableTreeColumnName\" value={forColumnName} />\n        <Template\n          name=\"tableHeaderCellBefore\"\n          predicate={({ column }: any) => column.name === forColumnName}\n        >\n          <ExpandButton\n            visible={false}\n            expanded={false}\n            onToggle={() => {}}\n          />\n          {showSelectionControls && showSelectAll && (\n            <TemplateConnector>\n              {({ selectAllAvailable, allSelected, someSelected }, { toggleSelectAll }) => (\n                <Checkbox\n                  disabled={!selectAllAvailable}\n                  checked={allSelected}\n                  indeterminate={someSelected}\n                  onChange={toggleSelectAll}\n                />\n              )}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isTreeTableCell(tableRow, tableColumn, forColumnName)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({\n                getCollapsedRows, expandedRowIds, selection, isTreeRowLeaf, getTreeRowLevel,\n                getCellValue,\n              }, {\n                toggleRowExpanded, toggleSelection,\n              }) => {\n                const { row, rowId } = params.tableRow;\n                const columnName = params.tableColumn.column!.name;\n                const value = getCellValue(row, columnName);\n                const collapsedRows = getCollapsedRows(row);\n                return (\n                  <TemplatePlaceholder\n                    name=\"valueFormatter\"\n                    params={{\n                      value,\n                      row,\n                      column: params.tableColumn.column,\n                    }}\n                  >\n                    {content => (\n                      <Cell\n                        {...params}\n                        row={row}\n                        column={params.tableColumn.column!}\n                        value={value}\n                      >\n                        <Indent\n                          level={getTreeRowLevel(row)}\n                        />\n                        <ExpandButton\n                          visible={collapsedRows ? !!collapsedRows.length : !isTreeRowLeaf(row)}\n                          expanded={expandedRowIds.indexOf(rowId) > -1}\n                          onToggle={() => toggleRowExpanded({ rowId })}\n                        />\n                        {showSelectionControls && (\n                          <Checkbox\n                            disabled={false}\n                            checked={selection.indexOf(rowId) > -1}\n                            indeterminate={false}\n                            onChange={() => toggleSelection({ rowIds: [rowId] })}\n                          />\n                        )}\n                        <Content>\n                          {content || value}\n                        </Content>\n                      </Cell>\n                    )}\n                  </TemplatePlaceholder>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders a table column with a toggle button and sorting indicators. */\nexport const TableTreeColumn: React.ComponentType<TableTreeColumnProps> = TableTreeColumnBase;\n","import * as React from 'react';\nimport {\n  Getter, Action, Plugin, createStateHelper, ActionFn, Getters,\n} from '@devexpress/dx-react-core';\nimport { changeSearchValue, searchFilterExpression } from '@devexpress/dx-grid-core';\nimport { SearchStateProps, SearchStateState } from '../types';\n\nclass SearchStateBase extends React.PureComponent<SearchStateProps, SearchStateState> {\n  static defaultProps = {\n    defaultValue: '',\n  };\n  changeValue: ActionFn<string>;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      value: props.value || props.defaultValue,\n    };\n    const stateHelper = createStateHelper(this, {\n      value: () => {\n        const { onValueChange } = this.props;\n        return onValueChange;\n      },\n    });\n\n    this.changeValue = stateHelper.applyFieldReducer\n      .bind(stateHelper, 'value', changeSearchValue);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      value = prevState.value,\n    } = nextProps;\n\n    return {\n      value,\n    };\n  }\n\n  render() {\n    const { value } = this.state;\n    const filterExpressionComputed = (\n      { filterExpression, columns }: Getters,\n    ) => searchFilterExpression(value, columns, filterExpression);\n\n    return (\n      <Plugin\n        name=\"SearchState\"\n      >\n        <Getter name=\"filterExpression\" computed={filterExpressionComputed} />\n        <Getter name=\"searchValue\" value={value} />\n        <Action name=\"changeSearchValue\" action={this.changeValue} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that manages the search state. */\nexport const SearchState: React.ComponentType<SearchStateProps> = SearchStateBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Template,\n  TemplatePlaceholder,\n  Plugin,\n  TemplateConnector,\n} from '@devexpress/dx-react-core';\nimport {\n  TOP_POSITION,\n} from '@devexpress/dx-grid-core';\nimport { SearchPanelProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'Toolbar' },\n  { name: 'SearchState' },\n];\n\nconst defaultMessages = {\n  searchPlaceholder: 'Search...',\n};\n\nclass SearchPanelBase extends React.PureComponent<SearchPanelProps> {\n  static defaultProps = {\n    messages: {},\n  };\n  static components = {\n    inputComponent: 'Input',\n  };\n  ref: React.RefObject<HTMLElement> = React.createRef();\n\n  render() {\n    const { inputComponent: Input, messages } = this.props;\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    return (\n      <Plugin\n        name=\"SearchPanel\"\n        dependencies={pluginDependencies}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {({ searchValue, isDataRemote },\n            { changeSearchValue, scrollToRow, setSearchPanelRef }) => {\n              const onValueChange = (value) => {\n                if (isDataRemote) {\n                  scrollToRow(TOP_POSITION);\n                }\n                changeSearchValue(value);\n              };\n              if (setSearchPanelRef) {\n                setSearchPanelRef(this.ref);\n              }\n\n              return <Input\n                value={searchValue}\n                inputRef={this.ref}\n                onValueChange={onValueChange}\n                getMessage={getMessage}\n              />;\n            }}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders the Search Panel. */\nexport const SearchPanel: React.ComponentType<SearchPanelProps> = SearchPanelBase;\n","import * as React from 'react';\nimport {\n  Getter,\n  Template,\n  Plugin,\n  TemplatePlaceholder,\n  TemplateConnector,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  isFixedTableRow,\n  tableColumnsWithFixed,\n  tableHeaderRowsWithFixed,\n  tableHeaderColumnChainsWithFixed,\n  calculateFixedColumnProps,\n  isRowHighlighted,\n} from '@devexpress/dx-grid-core';\nimport {\n  TableCellProps, TableRowProps, TableFixedColumnsProps, TableFixedColumnsState,\n} from '../types';\n\nconst tableHeaderRowsComputed = (\n  { tableHeaderRows }: Getters,\n) => tableHeaderRowsWithFixed(tableHeaderRows);\nconst tableHeaderColumnChainsComputed = (\n  { tableColumns, tableHeaderRows, tableHeaderColumnChains }: Getters,\n) => tableHeaderColumnChainsWithFixed(tableHeaderColumnChains, tableHeaderRows, tableColumns);\n\nconst CellPlaceholder = props => <TemplatePlaceholder params={props} />;\n\nconst pluginDependencies = [\n  { name: 'Table' },\n  { name: 'TableBandHeader', optional: true },\n  { name: 'TableColumnReordering', optional: true },\n  { name: 'TableEditColumn', optional: true },\n  { name: 'TableEditRow', optional: true },\n  { name: 'TableFilterRow', optional: true },\n  { name: 'TableGroupRow', optional: true },\n  { name: 'TableHeaderRow', optional: true },\n  { name: 'TableRowDetail', optional: true },\n  { name: 'TableSelection', optional: true },\n  { name: 'TableSummaryRow', optional: true },\n  { name: 'TableTreeColumn', optional: true },\n];\n\n// tslint:disable-next-line: max-line-length\nclass TableFixedColumnsBase extends React.PureComponent<TableFixedColumnsProps, TableFixedColumnsState> {\n  static components = {\n    cellComponent: 'Cell',\n    listenerRowComponent: 'ListenerRow',\n    listenerCellComponent: 'ListenerCell',\n  };\n  static defaultProps = {\n    leftColumns: [],\n    rightColumns: [],\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      tableColumnDimensions: {},\n    };\n  }\n\n  handleListenerSizeChange(key, width) {\n    const { tableColumnDimensions } = this.state;\n    if (tableColumnDimensions[key] !== width) {\n      this.setState(state => ({\n        tableColumnDimensions: {\n          ...state.tableColumnDimensions,\n          [key]: width,\n        },\n      }));\n    }\n  }\n\n  render() {\n    const {\n      cellComponent: Cell,\n      listenerRowComponent: ListenerRow,\n      listenerCellComponent: ListenerCell,\n    } = this.props;\n    const leftColumns = this.props.leftColumns!;\n    const rightColumns = this.props.rightColumns!;\n\n    const tableColumnsComputed = ({ tableColumns }: Getters) => tableColumnsWithFixed(\n      tableColumns,\n      leftColumns,\n      rightColumns,\n    );\n\n    return (\n      <Plugin\n        name=\"TableFixedColumns\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"tableHeaderRows\" computed={tableHeaderRowsComputed} />\n        <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n        <Getter name=\"tableHeaderColumnChains\" computed={tableHeaderColumnChainsComputed} />\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableColumn }: any) => !!tableColumn.fixed}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({\n                tableColumns, tableHeaderColumnChains, selection, focused, highlightSelectedRow,\n              }) => {\n                const selected = isRowHighlighted(highlightSelectedRow, selection,\n                  params.tableRow, focused);\n                const { tableColumnDimensions } = this.state;\n                const fixedColumnProps = calculateFixedColumnProps(\n                  params,\n                  { leftColumns, rightColumns },\n                  tableColumns,\n                  tableColumnDimensions,\n                  tableHeaderColumnChains,\n                );\n\n                return (\n                  <Cell\n                    {...params}\n                    {...fixedColumnProps}\n                    component={CellPlaceholder}\n                    selected={selected}\n                  />\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isFixedTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => (\n            <ListenerRow {...params} />\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={({ tableRow }: any) => !!isFixedTableRow(tableRow)}\n        >\n          {(params: TableCellProps) => (\n            <ListenerCell\n              {...params}\n              listen={!!params.tableColumn.fixed}\n              onSizeChange={({\n                width,\n              }) => this.handleListenerSizeChange(params.tableColumn.key, width)}\n            />\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that enables you to fix columns to the left and right sides of the grid. */\nexport const TableFixedColumns: React.ComponentType<TableFixedColumnsProps> = TableFixedColumnsBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport { prepareGroupSummaryItems } from '@devexpress/dx-grid-core';\nimport { SummaryStateProps } from '../types';\n\nconst groupSummaryItemsComputed = (\n  { groupSummaryItems }: Getters,\n) => prepareGroupSummaryItems(groupSummaryItems);\n\nclass SummaryStateBase extends React.PureComponent<SummaryStateProps> {\n  static defaultProps = {\n    totalItems: [],\n    groupItems: [],\n    treeItems: [],\n  };\n\n  render() {\n    const { totalItems, groupItems, treeItems } = this.props;\n\n    return (\n      <Plugin\n        name=\"SummaryState\"\n      >\n        <Getter name=\"totalSummaryItems\" value={totalItems} />\n        <Getter name=\"groupSummaryItems\" value={groupItems} />\n        <Getter name=\"groupSummaryItems\" computed={groupSummaryItemsComputed} />\n        <Getter name=\"treeSummaryItems\" value={treeItems} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that provides items for total, group, and tree summaries. */\nexport const SummaryState: React.ComponentType<SummaryStateProps> = SummaryStateBase;\n","import * as React from 'react';\nimport { Getter, Plugin, Getters } from '@devexpress/dx-react-core';\nimport {\n  defaultSummaryCalculator,\n  totalSummaryValues,\n  groupSummaryValues,\n  treeSummaryValues,\n  SummaryCalculator,\n} from '@devexpress/dx-grid-core';\nimport { IntegratedSummaryProps, SummaryType } from '../types';\n\nconst pluginDependencies = [\n  { name: 'SummaryState' },\n  { name: 'IntegratedGrouping', optional: true },\n];\n\nclass IntegratedSummaryBase extends React.PureComponent<IntegratedSummaryProps> {\n  static defaultCalculator: SummaryCalculator = defaultSummaryCalculator;\n\n  render() {\n    const { calculator } = this.props;\n\n    const totalSummaryValuesComputed = ({\n      rows,\n      totalSummaryItems,\n      getCellValue,\n      getRowLevelKey,\n      isGroupRow,\n      getCollapsedRows,\n    }: Getters) => totalSummaryValues(\n      rows,\n      totalSummaryItems,\n      getCellValue,\n      getRowLevelKey,\n      isGroupRow,\n      getCollapsedRows,\n      calculator,\n    );\n\n    const groupSummaryValuesComputed = ({\n      rows,\n      groupSummaryItems,\n      getCellValue,\n      getRowLevelKey,\n      isGroupRow,\n      getCollapsedRows,\n    }: Getters) => groupSummaryValues(\n      rows,\n      groupSummaryItems,\n      getCellValue,\n      getRowLevelKey,\n      isGroupRow,\n      getCollapsedRows,\n      calculator,\n    );\n\n    const treeSummaryValuesComputed = ({\n      rows,\n      treeSummaryItems,\n      getCellValue,\n      getRowLevelKey,\n      isGroupRow,\n      getRowId,\n    }: Getters) => treeSummaryValues(\n      rows,\n      treeSummaryItems,\n      getCellValue,\n      getRowLevelKey,\n      isGroupRow,\n      getRowId,\n      calculator,\n    );\n\n    return (\n      <Plugin\n        name=\"IntegratedSummary\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"totalSummaryValues\" computed={totalSummaryValuesComputed} />\n        <Getter name=\"groupSummaryValues\" computed={groupSummaryValuesComputed} />\n        <Getter name=\"treeSummaryValues\" computed={treeSummaryValuesComputed} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that performs a built-in data summary calculation. */\nexport const IntegratedSummary: React.ComponentType<IntegratedSummaryProps> & {\n  /** The built-in summary calculator. */\n  defaultCalculator: (type: SummaryType, rows: Array<any>, getValue: (row: any) => any) => any;\n} = IntegratedSummaryBase;\n","import * as React from 'react';\nimport { Getter, Plugin } from '@devexpress/dx-react-core';\nimport { CustomSummaryProps } from '../types/summary/custom-summary.types';\n\nconst pluginDependencies = [\n  { name: 'SummaryState' },\n];\n\nclass CustomSummaryBase extends React.PureComponent<CustomSummaryProps> {\n  render() {\n    const { totalValues, groupValues, treeValues } = this.props;\n\n    return (\n      <Plugin\n        name=\"CustomSummary\"\n        dependencies={pluginDependencies}\n      >\n        <Getter name=\"totalSummaryValues\" value={totalValues} />\n        <Getter name=\"groupSummaryValues\" value={groupValues} />\n        <Getter name=\"treeSummaryValues\" value={treeValues} />\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that allows you to calculate a custom summary. */\nexport const CustomSummary: React.ComponentType<CustomSummaryProps> = CustomSummaryBase;\n","import * as React from 'react';\nimport {\n  Getter,\n  Template,\n  Plugin,\n  TemplateConnector,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  tableRowsWithSummaries,\n  tableRowsWithTotalSummaries,\n  isTotalSummaryTableCell,\n  isGroupSummaryTableCell,\n  isTreeSummaryTableCell,\n  isTotalSummaryTableRow,\n  isGroupSummaryTableRow,\n  isTreeSummaryTableRow,\n  getColumnSummaries,\n  TABLE_TREE_SUMMARY_TYPE,\n  TABLE_GROUP_SUMMARY_TYPE,\n  TABLE_TOTAL_SUMMARY_TYPE,\n  isFooterSummary,\n} from '@devexpress/dx-grid-core';\nimport { TableCellProps, TableRowProps, TableSummaryRowProps } from '../types';\nimport { TableSummaryContent } from '../components/summary/table-summary-content';\n\nconst dependencies = [\n  { name: 'DataTypeProvider', optional: true },\n  { name: 'SummaryState' },\n  { name: 'CustomSummary', optional: true },\n  { name: 'IntegratedSummary', optional: true },\n  { name: 'Table' },\n  { name: 'TableTreeColumn', optional: true },\n];\n\nconst tableBodyRowsComputed = ({\n  tableBodyRows,\n  getRowLevelKey,\n  isGroupRow,\n  getRowId,\n  groupSummaryItems,\n  treeSummaryItems,\n}: Getters) => tableRowsWithSummaries(\n  tableBodyRows, groupSummaryItems, treeSummaryItems, getRowLevelKey, isGroupRow, getRowId,\n);\nconst tableFooterRowsComputed = ({\n  tableFooterRows, totalSummaryItems,\n}: Getters) => totalSummaryItems.length\n  ? tableRowsWithTotalSummaries(tableFooterRows)\n  : tableFooterRows;\n\nexport class TableSummaryRowBase extends React.PureComponent<TableSummaryRowProps> {\n  static TREE_ROW_TYPE = TABLE_TREE_SUMMARY_TYPE;\n  static GROUP_ROW_TYPE = TABLE_GROUP_SUMMARY_TYPE;\n  static TOTAL_ROW_TYPE = TABLE_TOTAL_SUMMARY_TYPE;\n  static defaultProps = {\n    formatlessSummaryTypes: [],\n    messages: {},\n  };\n  static components = {\n    totalRowComponent: 'TotalRow',\n    groupRowComponent: 'GroupRow',\n    treeRowComponent: 'TreeRow',\n    totalCellComponent: 'TotalCell',\n    groupCellComponent: 'GroupCell',\n    treeCellComponent: 'TreeCell',\n    treeColumnCellComponent: 'TableTreeCell',\n    treeColumnContentComponent: 'TableTreeContent',\n    treeColumnIndentComponent: 'TableTreeIndent',\n    itemComponent: 'Item',\n  };\n\n  renderContent(column, columnSummaries) {\n    const {\n      formatlessSummaryTypes,\n      itemComponent: Item,\n      messages,\n    } = this.props;\n\n    return (\n      <TableSummaryContent\n        column={column}\n        columnSummaries={columnSummaries}\n        formatlessSummaryTypes={formatlessSummaryTypes}\n        itemComponent={Item}\n        messages={messages!}\n      />\n    );\n  }\n\n  render() {\n    const {\n      totalRowComponent: TotalRow,\n      groupRowComponent: GroupRow,\n      treeRowComponent: TreeRow,\n      totalCellComponent: TotalCell,\n      groupCellComponent: GroupCell,\n      treeCellComponent: TreeCell,\n      treeColumnCellComponent: TreeColumnCell,\n      treeColumnContentComponent: TreeColumnContent,\n      treeColumnIndentComponent: TreeColumnIndent,\n    } = this.props;\n\n    return (\n      <Plugin\n        name=\"TableSummaryRow\"\n        dependencies={dependencies}\n      >\n        <Getter name=\"tableBodyRows\" computed={tableBodyRowsComputed} />\n        <Getter name=\"tableFooterRows\" computed={tableFooterRowsComputed} />\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isTotalSummaryTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({ totalSummaryItems, totalSummaryValues }) => {\n                const columnSummaries = getColumnSummaries(\n                  totalSummaryItems,\n                  params.tableColumn.column!.name,\n                  totalSummaryValues,\n                );\n                return (\n                  <TotalCell\n                    {...params}\n                    column={params.tableColumn.column!}\n                  >\n                    {this.renderContent(params.tableColumn.column, columnSummaries)}\n                  </TotalCell>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isGroupSummaryTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({ groupSummaryItems, groupSummaryValues }) => {\n                const columnSummaries = getColumnSummaries(\n                  groupSummaryItems,\n                  params.tableColumn.column!.name,\n                  groupSummaryValues[params.tableRow.row.compoundKey],\n                  summaryItem => isFooterSummary(summaryItem),\n                );\n                return (\n                  <GroupCell\n                    {...params}\n                    column={params.tableColumn.column!}\n                  >\n                    {this.renderContent(params.tableColumn.column, columnSummaries)}\n                  </GroupCell>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableCell\"\n          predicate={(\n            { tableRow, tableColumn }: any,\n          ) => isTreeSummaryTableCell(tableRow, tableColumn)}\n        >\n          {(params: TableCellProps) => (\n            <TemplateConnector>\n              {({\n                treeSummaryItems,\n                treeSummaryValues,\n                tableTreeColumnName,\n                getRowId,\n                getTreeRowLevel,\n              }) => {\n                const columnSummaries = getColumnSummaries(\n                  treeSummaryItems,\n                  params.tableColumn.column!.name,\n                  treeSummaryValues[getRowId(params.tableRow.row)],\n                );\n                if (tableTreeColumnName === params.tableColumn.column!.name) {\n                  return (\n                    <TreeColumnCell\n                      {...params}\n                      column={params.tableColumn.column!}\n                    >\n                      <TreeColumnIndent\n                        level={getTreeRowLevel(params.tableRow.row)}\n                      />\n                      <TreeColumnContent>\n                        {this.renderContent(params.tableColumn.column, columnSummaries)}\n                      </TreeColumnContent>\n                    </TreeColumnCell>\n                  );\n                }\n                return (\n                  <TreeCell\n                    {...params}\n                    column={params.tableColumn.column!}\n                  >\n                    {this.renderContent(params.tableColumn.column, columnSummaries)}\n                  </TreeCell>\n                );\n              }}\n            </TemplateConnector>\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isTotalSummaryTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => (\n            <TotalRow\n              {...params}\n            />\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isGroupSummaryTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => (\n            <GroupRow\n              {...params}\n            />\n          )}\n        </Template>\n        <Template\n          name=\"tableRow\"\n          predicate={({ tableRow }: any) => !!isTreeSummaryTableRow(tableRow)}\n        >\n          {(params: TableRowProps) => (\n            <TreeRow\n              {...params}\n            />\n          )}\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\n/** A plugin that renders table rows that display a total, group, and tree summary. */\nexport const TableSummaryRow: React.ComponentType<TableSummaryRowProps> & {\n  /** The tree summary row type's indentifier. */\n  TREE_ROW_TYPE: symbol;\n  /** The group summary row type's indentifier. */\n  GROUP_ROW_TYPE: symbol;\n  /** The total row type's indentifier. */\n  TOTAL_ROW_TYPE: symbol;\n} = TableSummaryRowBase;\n","import * as React from 'react';\nimport { Getter, Action, Plugin, Getters, Actions } from '@devexpress/dx-react-core';\nimport {\n  virtualRowsWithCache, trimRowsToInterval, emptyVirtualRows, plainRows, loadedRowsStart,\n  VirtualRows, Interval, getAvailableRowCount, needFetchMorePages, getReferenceIndex,\n  shouldSendRequest, getRequestMeta,\n} from '@devexpress/dx-grid-core';\nimport { VirtualTableStateProps, VirtualTableStateState } from '../../types';\n\nconst virtualRowsComputed = (\n  { skip, rows, virtualRowsCache }: Getters,\n) => virtualRowsWithCache(skip, rows, virtualRowsCache);\n\nconst rowsComputed = (\n  { virtualRows, availableRowCount }: Getters,\n) => plainRows(virtualRows, availableRowCount);\n\nconst loadedRowsStartComputed = ({ virtualRows }: Getters) => loadedRowsStart(virtualRows);\n\n// tslint:disable-next-line: max-line-length\nclass VirtualTableStateBase extends React.PureComponent<VirtualTableStateProps, VirtualTableStateState> {\n  static defaultProps = {\n    pageSize: 100,\n  };\n  requestTimer: number = 0;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      virtualRowsCache: emptyVirtualRows,\n      requestedStartIndex: 0,\n      availableRowCount: props.totalRowCount || 0,\n      requestedEndIndex: 2 * props.pageSize,\n    };\n  }\n\n  setViewport = (\n    viewport,\n    { virtualRows }: Getters,\n    { requestNextPage }: Actions,\n  ) => {\n    const { pageSize } = this.props;\n    const referenceIndex = getReferenceIndex(viewport);\n\n    if (needFetchMorePages(virtualRows, referenceIndex, pageSize!)) {\n      requestNextPage({ referenceIndex });\n    }\n  }\n\n  requestNextPageAction = (\n    { referenceIndex, forceReload },\n    { virtualRows }: Getters,\n  ) => {\n    const { pageSize, totalRowCount, infiniteScrolling } = this.props;\n    const { requestedStartIndex, requestedEndIndex } = this.state;\n    const actualVirtualRows = forceReload ? emptyVirtualRows : virtualRows;\n    const { requestedRange, actualBounds } = getRequestMeta(\n      referenceIndex, virtualRows, pageSize!, totalRowCount, forceReload, infiniteScrolling,\n    );\n\n    if (forceReload || shouldSendRequest(requestedRange, requestedStartIndex, requestedEndIndex)) {\n      this.requestNextPage(requestedRange, actualVirtualRows, actualBounds);\n    }\n  }\n\n  requestNextPage(\n    requestedRange: Interval, virtualRows: VirtualRows, actualBounds: Interval,\n  ) {\n    const { getRows, infiniteScrolling, totalRowCount } = this.props;\n    const { availableRowCount: stateAvailableCount } = this.state;\n\n    if (this.requestTimer !== 0) {\n      clearTimeout(this.requestTimer);\n    }\n    this.requestTimer = window.setTimeout(() => {\n      const { start: requestedStartIndex, end } = requestedRange;\n      const loadCount = end - requestedStartIndex;\n      const virtualRowsCache = trimRowsToInterval(virtualRows, actualBounds);\n      const availableRowCount = getAvailableRowCount(\n        infiniteScrolling,\n        actualBounds.end,\n        stateAvailableCount,\n        totalRowCount,\n      );\n\n      getRows(requestedStartIndex, loadCount);\n\n      this.setState({\n        virtualRowsCache,\n        availableRowCount,\n        requestedStartIndex,\n        requestedEndIndex: end,\n      });\n    }, 50);\n  }\n\n  requestFirstPage() {\n    const { getRows, pageSize } = this.props;\n    const startIndex = 0;\n    const endIndex = 2 * pageSize!;\n\n    if (this.requestTimer !== 0) {\n      clearTimeout(this.requestTimer);\n    }\n    this.requestTimer = window.setTimeout(() => {\n      getRows(startIndex, endIndex);\n\n      this.setState({\n        virtualRowsCache: emptyVirtualRows,\n        requestedStartIndex: startIndex,\n        requestedEndIndex: endIndex,\n      });\n    }, 50);\n  }\n\n  clearRowsCacheAction = (\n    _: any,\n    __: Getters,\n    { requestNextPage }: Actions,\n  ) => {\n    this.setState({\n      virtualRowsCache: emptyVirtualRows,\n    });\n    requestNextPage({ forceReload: true });\n  }\n\n  resetVirtualTablePosition = () => this.requestFirstPage();\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const {\n      availableRowCount: prevAvailableRowCount = prevState.availableRowCount,\n      totalRowCount,\n      pageSize,\n      infiniteScrolling,\n    } = nextProps;\n    const {\n      requestedStartIndex: prevRequestedStartIndex,\n      virtualRowsCache: prevVirtualRowCache,\n    } = prevState;\n\n    const availableRowCount = getAvailableRowCount(\n      infiniteScrolling,\n      pageSize * 2,\n      prevAvailableRowCount,\n      totalRowCount,\n    );\n    const requestedStartIndex = Math.max(\n      Math.min(prevRequestedStartIndex, availableRowCount - pageSize),\n      0,\n    );\n    const virtualRowsCache =\n      prevRequestedStartIndex === requestedStartIndex\n        ? prevVirtualRowCache\n        : emptyVirtualRows;\n\n    return {\n      availableRowCount,\n      requestedStartIndex,\n      virtualRowsCache,\n    };\n  }\n\n  componentDidMount() {\n    const { getRows, pageSize, infiniteScrolling, totalRowCount } = this.props;\n    getRows(0, 2 * pageSize!);\n\n    const newRowCount = infiniteScrolling ? 2 * pageSize! : totalRowCount;\n    this.setState({\n      availableRowCount: newRowCount,\n    });\n  }\n\n  componentWillUnmount() {\n    if (this.requestTimer !== 0) {\n      window.clearTimeout(this.requestTimer);\n    }\n  }\n\n  render() {\n    const { virtualRowsCache, availableRowCount } = this.state;\n    const { skip, pageSize, loading, infiniteScrolling } = this.props;\n\n    return (\n      <Plugin\n        name=\"VirtualTableState\"\n      >\n        <Getter name=\"isDataRemote\" value />\n        <Getter name=\"isDataLoading\" value={loading} />\n        <Getter name=\"isScrollingInfinite\" value={infiniteScrolling} />\n        <Getter name=\"skip\" value={skip} />\n        <Getter name=\"virtualRowsCache\" value={virtualRowsCache} />\n        <Getter name=\"pageSize\" value={pageSize} />\n        <Getter name=\"availableRowCount\" value={availableRowCount} />\n\n        <Getter name=\"virtualRows\" computed={virtualRowsComputed} />\n        <Getter name=\"rows\" computed={rowsComputed} />\n        <Getter name=\"loadedRowsStart\" computed={loadedRowsStartComputed} />\n\n        <Action name=\"requestNextPage\" action={this.requestNextPageAction} />\n        <Action name=\"setViewport\" action={this.setViewport} />\n        <Action name=\"clearRowCache\" action={this.clearRowsCacheAction} />\n        <Action name=\"changeColumnSorting\" action={this.clearRowsCacheAction} />\n        <Action name=\"changeColumnFilter\" action={this.resetVirtualTablePosition} />\n        <Action name=\"changeSearchValue\" action={this.resetVirtualTablePosition} />\n        <Action name=\"changeColumnGrouping\" action={this.resetVirtualTablePosition} />\n      </Plugin>\n    );\n  }\n}\n\nexport const VirtualTableState: React.ComponentType<VirtualTableStateProps> = VirtualTableStateBase;\n","import * as React from 'react';\nimport {\n  Template,\n  TemplatePlaceholder,\n  TemplateConnector,\n  Plugin,\n  Getter,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  getRowChange,\n  TABLE_DATA_TYPE,\n  rowsWithEditingCells,\n  columnsWithEditingCells,\n} from '@devexpress/dx-grid-core';\nimport { TableInlineCellEditingProps, TableCellProps } from '../types';\n\nconst pluginDependencies = [\n  { name: 'EditingState' },\n  { name: 'Table' },\n  { name: 'DataTypeProvider', optional: true },\n];\n\nconst rowsWithEditingCellsComputed = (\n  { tableBodyRows, editingCells }: Getters,\n) => rowsWithEditingCells(tableBodyRows, editingCells);\nconst columnsWithEditingCellsComputed = (\n  { tableColumns, editingCells }: Getters,\n) => columnsWithEditingCells(tableColumns, editingCells);\n\n/* tslint:disable-next-line max-line-length*/\nconst INLINE_CELL_EDITING_ERROR = 'The startEditAction property of the InlineCellEditing plugin is given an invalid value.';\n\n// tslint:disable-next-line: max-line-length\nconst TableInlineCellEditingBase: React.FunctionComponent<TableInlineCellEditingProps> & {components: {cellComponent: string}} = (props) => {\n  const { cellComponent: EditCell, startEditAction, selectTextOnEditStart } = props;\n\n  return (\n    <Plugin name=\"TableInlineCellEditing\" dependencies={pluginDependencies}>\n      <Getter name=\"tableBodyRows\" computed={rowsWithEditingCellsComputed} />\n      <Getter name=\"tableColumns\" computed={columnsWithEditingCellsComputed} />\n      <Template\n        name=\"tableCell\"\n        predicate={({ tableRow, tableColumn }: any) =>\n          tableRow.type === TABLE_DATA_TYPE &&\n          tableColumn.type === TABLE_DATA_TYPE\n        }\n      >\n        {(params: TableCellProps) => (\n          <TemplateConnector>\n            {({}, { startEditCells }) => {\n              const { tableRow : { rowId }, tableColumn: { column } } = params;\n              const { name: columnName } = column!;\n\n              if (startEditAction !== 'click' && startEditAction !== 'doubleClick') {\n                throw new Error(INLINE_CELL_EDITING_ERROR);\n              }\n\n              const startEditCellCallback = () =>\n                startEditCells({\n                  editingCells: [{ rowId, columnName }],\n                });\n              const eventName = startEditAction === 'click' ? 'onClick' : 'onDoubleClick';\n              const newParams = { ...params, [eventName]: startEditCellCallback };\n\n              return <TemplatePlaceholder params={newParams} />;\n            }}\n          </TemplateConnector>\n        )}\n      </Template>\n      <Template\n        name=\"tableCell\"\n        predicate={({ tableRow, tableColumn }: any) =>\n          tableRow.hasEditCell && tableColumn.hasEditCell\n        }\n      >\n        {(params: TableCellProps) => (\n          <TemplateConnector>\n            {(\n              { getCellValue, createRowChange, rowChanges, isColumnEditingEnabled },\n              { changeRow, stopEditCells, commitChangedRows, cancelChangedRows },\n            ) => {\n              const { tableRow : { rowId, row }, tableColumn: { column } } = params;\n              const { name: columnName } = column!;\n\n              const changedRow = {\n                ...row,\n                ...getRowChange(rowChanges, rowId!),\n              };\n\n              const value = getCellValue(changedRow, columnName);\n              const onValueChange = (newValue: any) => {\n                const changeArgs = {\n                  rowId,\n                  change: createRowChange(changedRow, newValue, columnName),\n                };\n                changeRow(changeArgs);\n              };\n              const onKeyDown = ({ key }) => {\n                if (key === 'Enter') {\n                  commitChangedRows({ rowIds: [rowId] });\n                  stopEditCells({ editingCells: [{ rowId, columnName }] });\n                } else if (key === 'Escape') {\n                  cancelChangedRows({ rowIds: [rowId] });\n                  stopEditCells({ editingCells: [{ rowId, columnName }] });\n                }\n              };\n              const onBlur = () => {\n                commitChangedRows({ rowIds: [rowId] });\n                stopEditCells({ editingCells: [{ rowId, columnName }] });\n              };\n              const onFocus = selectTextOnEditStart ? e => e.target.select() : () => {};\n              const editingEnabled = isColumnEditingEnabled(columnName);\n\n              return (\n                <TemplatePlaceholder\n                  name=\"valueEditor\"\n                  params={{\n                    column,\n                    row,\n                    value,\n                    onValueChange,\n                    disabled: !editingEnabled,\n                  }}\n                >\n                  {content => (\n                    <EditCell\n                      {...params}\n                      row={row}\n                      column={column!}\n                      value={value}\n                      editingEnabled={editingEnabled}\n                      onValueChange={onValueChange}\n                      autoFocus\n                      onKeyDown={onKeyDown}\n                      onBlur={onBlur}\n                      onFocus={onFocus}\n                    >\n                      {content}\n                    </EditCell>\n                  )}\n                </TemplatePlaceholder>\n              );\n            }}\n          </TemplateConnector>\n        )}\n      </Template>\n    </Plugin>\n  );\n};\n\nTableInlineCellEditingBase.components = {\n  cellComponent: 'Cell',\n};\n\nTableInlineCellEditingBase.defaultProps = {\n  startEditAction: 'click',\n  selectTextOnEditStart: false,\n};\n\n// tslint:disable-next-line: max-line-length\nexport const TableInlineCellEditing: React.ComponentType<TableInlineCellEditingProps> = TableInlineCellEditingBase;\n","import * as React from 'react';\nimport { getMessagesFormatter } from '@devexpress/dx-core';\nimport {\n  Template, TemplatePlaceholder, Plugin, TemplateConnector,\n} from '@devexpress/dx-react-core';\nimport { ExportPanelProps, ExportPanelState } from '../types';\n\nconst defaultMessages = {\n  showExportMenu: 'Export',\n  exportAll: 'Export all data',\n  exportSelected: 'Export selected rows',\n};\n\nclass ExportPanelBase extends React.PureComponent<ExportPanelProps, ExportPanelState> {\n  static components = {\n    toggleButtonComponent: 'ToggleButton',\n    menuComponent: 'Menu',\n    menuItemComponent: 'MenuItem',\n  };\n  button!: React.ReactInstance;\n  state = { visible: false };\n\n  setButtonRef = button => this.button = button;\n\n  handleToggle = () => {\n    const { visible } = this.state;\n    this.setState({ visible: !visible });\n  }\n\n  handleHide = () => this.setState({ visible: false });\n\n  render() {\n    const {\n      toggleButtonComponent: ToggleButton,\n      menuComponent: Menu,\n      menuItemComponent: MenuItem,\n      messages,\n      startExport,\n    } = this.props;\n    const {\n      visible,\n    } = this.state;\n\n    const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n    return (\n      <Plugin\n        name=\"ExportPanel\"\n        dependencies={[\n          { name: 'SelectionState', optional: true },\n          { name: 'Toolbar' },\n        ]}\n      >\n        <Template name=\"toolbarContent\">\n          <TemplatePlaceholder />\n          <TemplateConnector>\n            {({ selection }) => (\n              <>\n                <ToggleButton\n                  buttonRef={this.setButtonRef}\n                  onToggle={this.handleToggle}\n                  getMessage={getMessage}\n                />\n                <Menu\n                  visible={visible}\n                  onHide={this.handleHide}\n                  target={this.button}\n                >\n                  <MenuItem\n                    key=\"exportAll\"\n                    text={getMessage('exportAll')}\n                    onClick={() => {\n                      this.handleHide();\n                      startExport();\n                    }}\n                  />\n                  {selection?.length ? (\n                    <MenuItem\n                      key=\"exportSelected\"\n                      text={getMessage('exportSelected')}\n                      onClick={() => {\n                        this.handleHide();\n                        startExport({ selectedOnly: true });\n                      }}\n                    />\n                  ) : null}\n                </Menu>\n              </>\n            )}\n          </TemplateConnector>\n        </Template>\n      </Plugin>\n    );\n  }\n}\n\nexport const ExportPanel: React.ComponentType<any> = ExportPanelBase;\n","import * as React from 'react';\nimport {\n Plugin, TemplateConnector, Action, Template, TemplatePlaceholder, Getter,\n} from '@devexpress/dx-react-core';\nimport {\n  TABLE_ADDED_TYPE, TABLE_DATA_TYPE, TABLE_FLEX_TYPE,\n  getNextFocusedCell,  getPart, getIndexToFocus,\n  isCellExist, focus, isTabArrowUpDown,\n  filterHeaderRows, Elements, isDataTableRow, isRowFocused, getClosestCellByRow,\n  isCellFocused, getFocusing, RIGHT_POSITION, LEFT_POSITION,\n} from '@devexpress/dx-grid-core';\nimport {\n  TableKeyboardNavigationProps, TableKeyboardNavigationCoreProps, TableKeyboardNavigationCoreState,\n  TableCellProps, TableRowProps,\n} from '../types';\n\nconst CellPlaceholder = (props: TableCellProps) => <TemplatePlaceholder params={props} />;\nconst RowPlaceholder = (props: TableRowProps) => <TemplatePlaceholder params={props} />;\n\nclass TableKeyboardNavigationCore extends React.PureComponent<TableKeyboardNavigationCoreProps,\nTableKeyboardNavigationCoreState> {\n  elements: Elements = {};\n  searchPanelRef: React.RefObject<HTMLElement> | undefined;\n\n  constructor(props) {\n    super(props);\n\n    const focusedCell = props.focusedCell || props.defaultFocusedCell;\n\n    this.state = {\n      focusedElement: focusedCell ?\n      { part: TABLE_DATA_TYPE.toString(), ...focusedCell } : focusedCell,\n    };\n    this.handleKeyDownOnWidget = this.handleKeyDownOnWidget.bind(this);\n    this.updateRef = this.updateRef.bind(this);\n    this.setFocusedElement = this.setFocusedElement.bind(this);\n    this.setSearchPanelRef = this.setSearchPanelRef.bind(this);\n  }\n\n  static getDerivedStateFromProps(\n    props: TableKeyboardNavigationCoreProps, state: TableKeyboardNavigationCoreState,\n  ): TableKeyboardNavigationCoreState {\n    const focusedCell = props.focusedCell !== undefined ? props.focusedCell : state.focusedElement;\n    return {\n      focusedElement: focusedCell ? {\n        part: TABLE_DATA_TYPE.toString(),\n        ...focusedCell,\n      } : undefined,\n    };\n  }\n\n  componentDidMount() {\n    this.props.rootRef.current!.addEventListener('keydown', this.handleKeyDownOnWidget);\n  }\n\n  componentWillUnmount() {\n    this.props.rootRef.current!.removeEventListener('keydown', this.handleKeyDownOnWidget);\n  }\n\n  pushRef(ref, key1, key2) {\n    const { focusedElement } = this.state;\n    const { tableColumns } = this.props;\n    if (!this.elements[key1]) {\n      this.elements[key1] = [];\n    }\n    if (!this.elements[key1][key2]) {\n      this.elements[key1][key2] = [];\n    }\n\n    this.elements[key1][key2].push(ref);\n\n    if (focusedElement?.rowKey === key1 && focusedElement?.columnKey === key2) {\n      focus(this.elements, focusedElement, undefined, this.props.onFocusedCellChange);\n    }\n\n    if (key1.toString().includes(TABLE_ADDED_TYPE.toString()) &&\n    key2 === tableColumns[0].key) {\n      this.changeFocusedElement({\n        part: TABLE_DATA_TYPE.toString(),\n        columnKey: key2,\n        rowKey: key1,\n      }, focusedElement);\n    }\n  }\n\n  setSearchPanelRef(ref) {\n    this.searchPanelRef = ref;\n  }\n\n  removeRef(key1, key2) {\n    delete this.elements[key1][key2];\n    if (Object.keys(this.elements[key1]).length === 0) {\n      delete this.elements[key1];\n    }\n  }\n\n  updateRef({ ref, key1, key2, action }) {\n    if (action === 'add') {\n      this.pushRef(ref, key1, key2);\n    } else {\n      this.removeRef(key1, key2);\n    }\n  }\n\n  changeFocusedElement(focusedCell, prevFocusedCell) {\n    const { onFocusedCellChange } = this.props;\n    this.setState({\n      focusedElement: focusedCell,\n    });\n    focus(this.elements, focusedCell, prevFocusedCell, onFocusedCellChange);\n  }\n\n  handleKeyDownOnWidget(event) {\n    const { focusedElement } = this.state;\n    const {\n      tableColumns, tableBodyRows, tableHeaderRows, expandedRowIds, scrollToColumn, inlineEditing,\n    } = this.props;\n\n    if (event.key === 'f' && (event.ctrlKey || event.metaKey)) {\n      if (this.searchPanelRef) {\n        event.preventDefault();\n        this.searchPanelRef.current?.click();\n      }\n      if (focusedElement) {\n        this.changeFocusedElement(undefined, focusedElement);\n      }\n      return;\n    }\n\n    if (focusedElement && !isCellExist(this.elements, focusedElement) && event.key === 'Tab') {\n      const focusedCell = getClosestCellByRow(tableBodyRows, focusedElement, this.elements);\n      event.preventDefault();\n      this.changeFocusedElement(focusedCell, focusedElement);\n      return;\n    }\n\n    if (focusedElement || isTabArrowUpDown(event)) {\n      const { element, scrolling } = getNextFocusedCell(tableColumns, tableBodyRows,\n        tableHeaderRows, expandedRowIds, this.elements, event, inlineEditing,\n        focusedElement, scrollToColumn);\n\n      if (element) {\n        if (scrolling) {\n          scrollToColumn(scrolling === 'left' ? LEFT_POSITION : RIGHT_POSITION);\n        }\n        event.preventDefault();\n        this.changeFocusedElement(element, focusedElement);\n      } else if (isTabArrowUpDown(event) && focusedElement) {\n        this.changeFocusedElement(undefined, focusedElement);\n      }\n    }\n  }\n\n  setFocusedElement({ key1, key2, event }) {\n    const { focusedElement } = this.state;\n    const { inlineEditing } = this.props;\n    if (key1 === 'paging' || key1 === 'toolbar') {\n      this.changeFocusedElement(undefined, focusedElement);\n    } else if (key2.includes(TABLE_FLEX_TYPE.toString())) {\n      const columnKey = this.props.tableColumns[0].key;\n      this.changeFocusedElement({\n        rowKey: key1,\n        columnKey,\n        index: -1,\n        part: getPart(key1),\n      }, focusedElement);\n    } else {\n      const part = getPart(key1);\n      this.changeFocusedElement({\n        rowKey: key1,\n        columnKey: key2,\n        index: getIndexToFocus(key1, key2, this.elements, event, inlineEditing, part),\n        part,\n      }, focusedElement);\n    }\n  }\n\n  render() {\n    const {\n      cellComponent: Cell,\n      rowComponent: Row,\n      focusedRowEnabled,\n      tableBodyRows,\n    } = this.props;\n    const { focusedElement } = this.state;\n    const getFocusedGetter = () => getFocusing(tableBodyRows, focusedElement);\n    return (\n      <Plugin\n        name=\"TableKeyboardNavigationCore\"\n      >\n        <Action name=\"setSearchPanelRef\" action={this.setSearchPanelRef} />\n        {focusedRowEnabled &&\n          <Getter name=\"highlightSelectedRow\" value />\n        }\n        {focusedRowEnabled &&\n          <Getter name=\"focused\" computed={getFocusedGetter} />\n        }\n        <Template name=\"tableCell\">\n          {(params: TableCellProps) => (\n            <Cell\n              {...params}\n              component={CellPlaceholder}\n              tabIndex={0}\n              updateRefForKeyboardNavigation={this.updateRef}\n              setFocusedElement={this.setFocusedElement}\n              focused={isCellFocused(params.tableRow, params.tableColumn, focusedElement)}\n            />\n          )}\n        </Template>\n        <Template name=\"header\">\n          <TemplatePlaceholder\n            params={{\n              updateRefForKeyboardNavigation: this.updateRef,\n              setFocusedElement: this.setFocusedElement,\n            }}\n          />\n        </Template>\n        <Template name=\"footer\">\n          <TemplatePlaceholder\n            params={{\n              updateRefForKeyboardNavigation: this.updateRef,\n              setFocusedElement: this.setFocusedElement,\n            }}\n          />\n        </Template>\n        {(focusedRowEnabled) && (\n          <Template\n            name=\"tableRow\"\n            predicate={({ tableRow }: any) => !!isDataTableRow(tableRow)}\n          >\n            {(params: TableRowProps) => (\n              <Row\n                {...params}\n                component={RowPlaceholder}\n                focused={isRowFocused(params.tableRow, focusedElement?.rowKey)}\n              />\n            )}\n          </Template>\n        )}\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable-next-line:max-classes-per-file\nclass TableKeyboardNavigationBase extends React.PureComponent<TableKeyboardNavigationProps> {\n  static components = {\n    cellComponent: 'Cell',\n    rowComponent: 'Row',\n  };\n  render() {\n    return (\n      <Plugin\n        name=\"TableKeyboardNavigation\"\n        dependencies={[\n          { name: 'Table' },\n        ]}\n      >\n        <TemplateConnector>\n        {(\n          { tableColumns, tableBodyRows, rootRef, tableHeaderRows, expandedRowIds },\n          { scrollToColumn, stopEditCells, commitChangedRows, cancelChangedRows, startEditCells },\n        ) => {\n          return rootRef.current ? (\n            <TableKeyboardNavigationCore\n              tableColumns={tableColumns}\n              tableBodyRows={tableBodyRows}\n              rootRef={rootRef}\n              tableHeaderRows={filterHeaderRows(tableHeaderRows)}\n              expandedRowIds={expandedRowIds}\n              scrollToColumn={scrollToColumn}\n              inlineEditing={{\n                stopEditCells,\n                commitChangedRows,\n                cancelChangedRows,\n                startEditCells,\n              }}\n              {...this.props}\n            />\n          ) : null;\n        }}\n        </TemplateConnector>\n      </Plugin>\n    );\n  }\n}\n\n// tslint:disable-next-line: max-line-length\nexport const TableKeyboardNavigation: React.ComponentType<TableKeyboardNavigationProps> = TableKeyboardNavigationBase;\n","export const getRowStyle = ({ row }) => (row.height !== undefined\n  ? ({ height: `${row.height}px` })\n  : undefined);\n\nexport const isNumber = (value: string | number) =>\n  typeof value === 'number' || !Number.isNaN(Number(value));\n","/* globals requestAnimationFrame cancelAnimationFrame */\n\nimport * as React from 'react';\nimport {\n  getAnimations,\n  filterActiveAnimations,\n  evalAnimations,\n  TABLE_FLEX_TYPE,\n  ColumnAnimationMap,\n} from '@devexpress/dx-grid-core';\nimport { shallowEqual } from '@devexpress/dx-core';\nimport { TableLayoutCoreProps, TableLayoutCoreState } from '../types';\nimport { isNumber } from '../utils/helpers';\n\nclass TableLayoutBase extends React.PureComponent<TableLayoutCoreProps, TableLayoutCoreState> {\n  animations: ColumnAnimationMap;\n  savedScrollWidth: { [key: number]: number };\n  savedOffsetWidth = -1;\n  tableRef: React.RefObject<HTMLTableElement>;\n  raf = -1;\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      animationState: new Map(),\n    };\n\n    this.animations = new Map();\n    this.savedScrollWidth = {};\n    this.tableRef = React.createRef();\n  }\n\n  componentDidMount() {\n    if (this.tableRef.current) {\n      const { forwardedRef } = this.props;\n      if (typeof forwardedRef === 'function') {\n        forwardedRef(this.tableRef.current);\n      } else if (forwardedRef) {\n        forwardedRef.current = this.tableRef.current;\n      }\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    const { columns } = this.props;\n    const { columns: prevColumns } = prevProps;\n    const { animationState } = this.state;\n\n    const activeAnimationExists = !shallowEqual(columns, prevColumns)\n      || !!animationState.size || !!this.animations.size;\n\n    // NOTE: animation should be recomputed only when columns are changed or\n    // an active animation is in progress. Otherwise it will be recalculated on\n    // each scroll event.\n    if (activeAnimationExists) {\n      this.processAnimation(prevColumns);\n    }\n  }\n\n  processAnimation(prevColumns) {\n    const { columns } = this.props;\n    const tableWidth = this.getTableWidth(prevColumns, columns);\n\n    this.animations = getAnimations(prevColumns, columns, tableWidth, this.animations);\n\n    cancelAnimationFrame(this.raf);\n    this.raf = requestAnimationFrame(this.processAnimationFrame.bind(this));\n  }\n\n  getTableWidth(prevColumns, columns) {\n    const { offsetWidth, scrollWidth } = this.tableRef.current!;\n    const { animationState } = this.state;\n\n    const widthChanged = this.savedOffsetWidth !== offsetWidth\n      || !this.savedScrollWidth[columns.length];\n    const columnCountChanged = columns.length !== prevColumns.length;\n\n    if (columnCountChanged || (widthChanged && !animationState.size)) {\n      this.savedScrollWidth = {};\n      this.savedScrollWidth[columns.length] = scrollWidth;\n      this.savedOffsetWidth = offsetWidth;\n    }\n\n    return this.savedScrollWidth[columns.length];\n  }\n\n  getColumns() {\n    const { columns } = this.props;\n    const { animationState } = this.state;\n\n    let result = columns;\n\n    const isFixedWidth = columns\n      .filter(column => column.width === undefined || column.width === 'auto')\n      .length === 0;\n    if (isFixedWidth) {\n      // presumably a flex column added here instead of in a getter in the Table plugin\n      // to make sure that all manipulations on taleColumns have already done earlier\n      result = [...result, { key: TABLE_FLEX_TYPE.toString(), type: TABLE_FLEX_TYPE }];\n    }\n\n    if (animationState.size) {\n      result = result\n        .map(column => (animationState.has(column.key)\n          ? { ...column, animationState: animationState.get(column.key) }\n          : column));\n    }\n\n    return result;\n  }\n\n  processAnimationFrame() {\n    const { animationState: animationComponentState } = this.state;\n    this.animations = filterActiveAnimations(this.animations);\n\n    if (!this.animations.size) {\n      if (animationComponentState.size) {\n        this.setState({ animationState: new Map() });\n      }\n      return;\n    }\n\n    const animationState = evalAnimations(this.animations);\n    this.setState({ animationState });\n  }\n\n  render() {\n    const {\n      layoutComponent: Layout,\n      minColumnWidth,\n      forwardedRef,\n      ...restProps\n    } = this.props;\n    const columns = this.getColumns();\n    const minWidth = columns\n      .map(column => column.width || (column.type === TABLE_FLEX_TYPE ? 0 : minColumnWidth))\n      .filter(value => value !== 'auto' && value !== 0)\n      .map(value => isNumber(value) ? `${value}px` : value)\n      .join(' + ');\n\n    return (\n      <Layout\n        {...restProps}\n        tableRef={this.tableRef}\n        columns={columns}\n        minWidth={minWidth}\n        minColumnWidth={minColumnWidth}\n      />\n    );\n  }\n}\n\n/** @internal */\nexport const TableLayout: React.ComponentType<TableLayoutCoreProps> = TableLayoutBase;\n","import * as React from 'react';\nimport { VirtualRowLayoutProps } from '../../types';\nimport { getRowStyle } from '../../utils/helpers';\n\nconst shouldUpdateRow = (prevProps, nextProps) => {\n  const { cells: prevCells, row: prevRow } = prevProps;\n  const { cells: nextCells, row: nextRow } = nextProps;\n\n  if (prevRow !== nextRow || prevCells.length !== nextCells.length) {\n    return false;\n  }\n\n  return !nextCells.some((nextCell, i) => {\n    const prevCell = prevCells[i];\n    return prevCell.column !== nextCell.column || prevCell.colSpan !== nextCell.colSpan;\n  });\n};\n\nexport const VirtualRowLayout = React.memo<VirtualRowLayoutProps>(({\n  row, cells, rowComponent: Row, cellComponent: Cell, forwardedRef,\n}) => {\n  return (\n    <Row\n      forwardedRef={forwardedRef}\n      tableRow={row}\n      style={getRowStyle({ row })}\n    >\n      {cells.map(({ column, colSpan }) => {\n        return (\n          <Cell\n            key={column.key}\n            tableRow={row}\n            tableColumn={column}\n            colSpan={colSpan}\n          />\n        );\n      })}\n    </Row>\n  );\n}, shouldUpdateRow);\n","import * as React from 'react';\nimport { VirtualTableLayoutBlockProps } from '../../types';\nimport { VirtualRowLayout } from './virtual-row-layout';\n\n// tslint:disable-next-line: max-line-length\nexport class VirtualTableLayoutBlock extends React.PureComponent<VirtualTableLayoutBlockProps, any> {\n  render() {\n    const {\n      collapsedGrid,\n      rowRefsHandler,\n      bodyComponent: Body,\n      cellComponent,\n      rowComponent,\n      isFixed,\n    } = this.props;\n\n    return (\n      <Body isFixed={isFixed}>\n        {collapsedGrid.rows.map((visibleRow) => {\n          const { row, cells = [] } = visibleRow;\n\n          return (\n            <VirtualRowLayout\n              key={row.key}\n              row={row}\n              cells={cells}\n              forwardedRef={ref => rowRefsHandler(row, ref)}\n              rowComponent={rowComponent}\n              cellComponent={cellComponent}\n            />\n          );\n        })}\n        </Body>\n    );\n  }\n\n}\n","import * as React from 'react';\nimport { TableColumn } from '@devexpress/dx-grid-core';\n\n/** @internal */\nexport class ColumnGroup extends React.PureComponent<{ columns: TableColumn[] }> {\n  render() {\n    const { columns } = this.props;\n\n    return (\n      <colgroup>\n        {columns.map(({ key, width }) => {\n          const styleWidth = typeof width === 'number' ? `${width}px` : width;\n          return (\n            <col\n              key={key}\n              style={width !== undefined\n                ? { width: styleWidth }\n                : undefined}\n            />\n          );\n        })}\n      </colgroup>\n    );\n  }\n}\n","import * as React from 'react';\nimport { MemoizedFunction, memoize } from '@devexpress/dx-core';\nimport {\n  TableColumn, GetColumnWidthFn, getCollapsedGrids,\n  getColumnWidthGetter, TABLE_STUB_TYPE, getViewport, GridViewport, getScrollLeft,\n  isColumnsWidthDifferent,\n} from '@devexpress/dx-grid-core';\nimport { VirtualTableLayoutState, VirtualTableLayoutProps } from '../../types';\nimport { VirtualTableLayoutBlock } from './virtual-table-layout-block';\nimport { Sizer } from '@devexpress/dx-react-core';\nimport { ColumnGroup } from './column-group';\n\nconst AUTO_HEIGHT = 'auto';\nconst MAX_WINDOW_HEIGHT = 10000000;\nconst FACTOR = 3;\n\nconst defaultProps = {\n  headerRows: [],\n  footerRows: [],\n  headComponent: () => null,\n  footerComponent: () => null,\n  tableComponent: () => null,\n  containerComponent: React.forwardRef(() => null),\n};\ntype PropsType = VirtualTableLayoutProps & typeof defaultProps;\n\n/** @internal */\n// tslint:disable-next-line: max-line-length\nexport class VirtualTableLayout extends React.PureComponent<PropsType, VirtualTableLayoutState> {\n  static defaultProps = defaultProps;\n  getColumnWidthGetter: MemoizedFunction<[TableColumn[], number, number], GetColumnWidthFn>;\n  rowRefs = new Map<any, HTMLElement>();\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      rowHeights: new Map<any, number>(),\n      viewportTop: 0,\n      skipItems: [0, 0],\n      containerHeight: 600,\n      containerWidth: 800,\n      viewportLeft: 0,\n    };\n\n    this.getColumnWidthGetter = memoize(\n      (tableColumns, tableWidth, minColumnWidth) => (\n        getColumnWidthGetter(tableColumns, tableWidth, minColumnWidth)\n      ),\n    );\n  }\n\n  getCountSkipRows() {\n    const containerHeight = this.props.totalRowCount * this.props.estimatedRowHeight;\n    if (containerHeight > MAX_WINDOW_HEIGHT) {\n      return Math.round(this.props.totalRowCount - MAX_WINDOW_HEIGHT /\n        this.props.estimatedRowHeight);\n    }\n    return 0;\n  }\n\n  registerRowRef = (row, ref) => {\n    if (row.type === TABLE_STUB_TYPE) {\n      return;\n    }\n    if (ref === null) {\n      this.rowRefs.delete(row);\n    } else {\n      this.rowRefs.set(row, ref);\n    }\n  }\n\n  componentDidMount() {\n    this.storeRowHeights();\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    setTimeout(this.storeRowHeights.bind(this));\n\n    const { bodyRows, columns } = this.props;\n    // NOTE: the boundaries depend not only on scroll position and container dimensions\n    // but on body rows too. This boundaries update is especially important when\n    // lazy loading is used because by the time that all involved events are handled\n    // no rows are loaded yet.\n    const bodyRowsChanged = prevProps.bodyRows !== bodyRows;\n    // Also it's the only place where we can respond to the column count change\n    const columnCountChanged = prevProps.columns.length !== columns.length;\n\n    const { viewportTop, viewportLeft, containerWidth, containerHeight } = this.state;\n    const viewportTopChanged = prevState.viewportTop !== viewportTop;\n    const viewportLeftChanged = prevState.viewportLeft !== viewportLeft;\n    const containerWidthChanged = prevState.containerWidth !== containerWidth;\n    const containerHeightChanged = prevState.containerHeight !== containerHeight;\n\n    if (prevProps.totalRowCount !== this.props.totalRowCount) {\n      const countSkipRows = this.getCountSkipRows();\n      const { skipItems } = this.state;\n      if (countSkipRows !== 0 && skipItems[0] === 0 && skipItems[1] === 0) {\n        this.setState({\n          skipItems: [0, countSkipRows],\n        });\n      }\n    }\n\n    if (bodyRowsChanged || columnCountChanged || columns[0].width !== undefined &&\n      isColumnsWidthDifferent(prevProps.columns, columns) || viewportTopChanged ||\n      viewportLeftChanged || containerWidthChanged || containerHeightChanged\n      ) {\n      this.updateViewport();\n    }\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    const { rowHeights: prevRowHeight } = prevState;\n    const rowHeights = [...nextProps.headerRows, ...nextProps.bodyRows, ...nextProps.footerRows]\n      .reduce(\n        (acc, row) => {\n          const rowHeight = prevRowHeight.get(row.key);\n          if (rowHeight !== undefined) {\n            acc.set(row.key, rowHeight);\n          }\n          return acc;\n        },\n        new Map(),\n      );\n    return { rowHeights };\n  }\n\n  getRowHeight = (row) => {\n    const { rowHeights } = this.state;\n    const { estimatedRowHeight } = this.props;\n    if (row) {\n      const storedHeight = rowHeights.get(row.key);\n      if (storedHeight !== undefined) return storedHeight;\n      if (row.height) return row.height;\n    }\n    return estimatedRowHeight;\n  }\n\n  storeRowHeights() {\n    const rowsWithChangedHeights = Array.from(this.rowRefs.entries())\n      .map(([row, ref]) => [row, ref])\n      .filter(([, node]) => !!node)\n      .map(([row, node]) => [row, node.getBoundingClientRect().height])\n      .filter(([row, height]) => row.type !== TABLE_STUB_TYPE && height !== this.getRowHeight(row));\n\n    if (rowsWithChangedHeights.length) {\n      const { rowHeights } = this.state;\n      rowsWithChangedHeights\n        .forEach(([row, height]) => rowHeights.set(row.key, height));\n\n      this.setState({\n        rowHeights,\n      });\n    }\n  }\n\n  onScroll = (e) => {\n    const node = e.target;\n\n    if (this.shouldSkipScrollEvent(e)) {\n      return;\n    }\n\n    const { scrollTop: viewportTop, scrollLeft: viewportLeft } = node;\n    const {\n      containerHeight,\n      skipItems,\n      viewportTop: prevViewPort,\n    } = this.state;\n\n    const countSkipRows = this.getCountSkipRows();\n    const dif = viewportTop - prevViewPort;\n    const pxInPercent = viewportTop / MAX_WINDOW_HEIGHT;\n    // on scrolling with touchpad or mouse viewport difference less then FACTOR * container height\n    // and skipItems must not recalculated\n    const isDif = Math.abs(dif) < FACTOR * containerHeight;\n    const top = Math.min(Math.round(pxInPercent * countSkipRows), countSkipRows);\n\n    this.setState({\n      viewportTop,\n      viewportLeft,\n      skipItems: isDif ? skipItems : [top, countSkipRows - top],\n    });\n  }\n\n  handleContainerSizeChange = ({ width, height }) => {\n    this.setState({\n      containerHeight: height,\n      containerWidth: width,\n    });\n  }\n\n  shouldSkipScrollEvent(e) {\n    const node = e.target;\n\n    // NOTE: prevent nested scroll to update viewport\n    if (node !== e.currentTarget) {\n      return true;\n    }\n    // NOTE: normalize position:\n    // in Firefox and Chrome (zoom > 100%) when scrolled to the bottom\n    // in Edge when scrolled to the right edge\n    const correction = 1;\n    const nodeHorizontalOffset = parseInt(node.scrollLeft + node.clientWidth, 10) - correction;\n    const nodeVerticalOffset = parseInt(node.scrollTop + node.clientHeight, 10) - correction;\n    // NOTE: prevent iOS to flicker in bounces and correct rendering on high dpi screens\n    if (node.scrollTop < 0\n      || node.scrollLeft < 0\n      || nodeHorizontalOffset > Math.max(node.scrollWidth, node.clientWidth)\n      || nodeVerticalOffset > Math.max(node.scrollHeight, node.clientHeight)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  updateViewport() {\n    const { viewport, setViewport } = this.props;\n    const newViewport = this.calculateViewport();\n\n    if (viewport !== newViewport) {\n      setViewport(newViewport);\n    }\n  }\n\n  calculateViewport() {\n    const { viewportTop, skipItems, viewportLeft, containerHeight, containerWidth } = this.state;\n    const {\n      loadedRowsStart,\n      bodyRows,\n      headerRows,\n      footerRows,\n      columns,\n      minColumnWidth,\n      isDataRemote,\n      viewport,\n    } = this.props;\n    const getColumnWidth = this.getColumnWidthGetter(columns, containerWidth, minColumnWidth!);\n\n    return getViewport(\n      { viewportTop, skipItems, viewportLeft, containerHeight, containerWidth },\n      { loadedRowsStart, columns, bodyRows, headerRows, footerRows, isDataRemote, viewport },\n      this.getRowHeight, getColumnWidth,\n    );\n  }\n\n  getCollapsedGrids(viewport: GridViewport) {\n    const { containerWidth, viewportLeft, skipItems } = this.state;\n    const {\n      headerRows, bodyRows, footerRows,\n      columns, loadedRowsStart, totalRowCount,\n      getCellColSpan, minColumnWidth,\n    } = this.props;\n    const getColumnWidth = this.getColumnWidthGetter(columns, containerWidth, minColumnWidth!);\n\n    return getCollapsedGrids({\n      headerRows,\n      bodyRows,\n      footerRows,\n      columns,\n      loadedRowsStart,\n      totalRowCount,\n      getCellColSpan,\n      viewportLeft,\n      containerWidth,\n      viewport,\n      skipItems,\n      getRowHeight: this.getRowHeight,\n      getColumnWidth,\n    });\n  }\n\n  render() {\n    const {\n      containerComponent: Container,\n      tableComponent: Table,\n      headComponent: Head,\n      bodyComponent: Body,\n      footerComponent: Footer,\n      tableRef,\n      height,\n      headerRows,\n      footerRows,\n      minColumnWidth,\n      minWidth,\n      cellComponent,\n      rowComponent,\n      viewport,\n      scrollTop,\n      columns,\n      nextColumnId,\n    } = this.props;\n\n    const scrollLeft = getScrollLeft(columns.length, minColumnWidth!, nextColumnId);\n    const collapsedGrids = this.getCollapsedGrids(viewport);\n    const commonProps = {\n      cellComponent,\n      rowComponent,\n      minColumnWidth,\n      minWidth,\n      rowRefsHandler: this.registerRowRef,\n    };\n    const sizerHeight = height === AUTO_HEIGHT ? null : height;\n\n    return (\n      <Sizer\n        onSizeChange={this.handleContainerSizeChange}\n        containerComponent={Container}\n        style={{ height: sizerHeight }}\n        onScroll={this.onScroll}\n        scrollTop={scrollTop}\n        scrollLeft={scrollLeft}\n      >\n        <Table\n          forwardedRef={tableRef}\n          style={{\n            minWidth: `${minWidth}px`,\n          }}\n        >\n          <ColumnGroup\n            columns={collapsedGrids.bodyGrid.columns as TableColumn[]}\n          />\n          {\n            (!!headerRows.length) && (\n              <VirtualTableLayoutBlock\n                {...commonProps}\n                name=\"header\"\n                isFixed={true}\n                collapsedGrid={collapsedGrids.headerGrid}\n                bodyComponent={Head}\n              />\n            )\n          }\n          <VirtualTableLayoutBlock\n            {...commonProps}\n            name=\"body\"\n            collapsedGrid={collapsedGrids.bodyGrid}\n            bodyComponent={Body}\n          />\n          {\n            (!!footerRows.length) && (\n              <VirtualTableLayoutBlock\n                {...commonProps}\n                name=\"footer\"\n                isFixed={true}\n                collapsedGrid={collapsedGrids.footerGrid}\n                bodyComponent={Footer}\n              />\n            )\n          }\n        </Table>\n      </Sizer>\n    );\n  }\n}\n","import * as React from 'react';\nimport { RowLayoutProps } from '../../types';\nimport { getRowStyle } from '../../utils/helpers';\n\nconst getColumnStyle = ({ column }) => column.animationState;\n\n/** @internal */\nexport const RowLayout: React.FunctionComponent<RowLayoutProps> = React.memo((props) => {\n  const {\n    row,\n    columns,\n    rowComponent: Row,\n    cellComponent: Cell,\n    getCellColSpan,\n  } = props;\n\n  const getColSpan = React.useCallback(\n    (tableRow, tableColumn) => getCellColSpan!({ tableRow, tableColumn, tableColumns: columns }),\n    [columns, getCellColSpan],\n  );\n\n  return (\n    <Row\n      tableRow={row}\n      style={getRowStyle({ row })}\n    >\n      {\n        columns\n          .map(column => (\n            <Cell\n              key={column.key}\n              tableRow={row}\n              tableColumn={column}\n              style={getColumnStyle({ column })}\n              colSpan={getColSpan(row, column)}\n            />\n          ))\n      }\n    </Row>\n  );\n});\n","import * as React from 'react';\nimport { RowLayout } from './row-layout';\nimport { RowsBlockLayoutProps } from '../../types';\n\n/** @internal */\nexport class RowsBlockLayout extends React.PureComponent<RowsBlockLayoutProps> {\n  render() {\n    const {\n      rows,\n      columns,\n      blockComponent: Block,\n      rowComponent,\n      cellComponent,\n      getCellColSpan,\n    } = this.props;\n\n    return (\n      <Block>\n        {\n          rows\n            .map(row => (\n              <RowLayout\n                key={row.key}\n                row={row}\n                columns={columns}\n                rowComponent={rowComponent}\n                cellComponent={cellComponent}\n                getCellColSpan={getCellColSpan}\n              />\n            ))\n        }\n      </Block>\n    );\n  }\n}\n","import * as React from 'react';\nimport { ColumnGroup } from './column-group';\nimport { RowsBlockLayout } from './rows-block-layout';\nimport { TableLayoutProps } from '../../types';\n\nconst defaultProps = {\n  headerRows: [],\n  footerRows: [],\n  headComponent: () => null,\n  footerComponent: () => null,\n};\n\n/** @internal */\nexport class StaticTableLayout extends React.PureComponent<TableLayoutProps & typeof defaultProps> {\n  static defaultProps = defaultProps;\n\n  render() {\n    const {\n      headerRows,\n      bodyRows,\n      footerRows,\n      columns,\n      minWidth,\n      containerComponent: Container,\n      tableComponent: Table,\n      headComponent,\n      bodyComponent,\n      footerComponent,\n      rowComponent,\n      cellComponent,\n      getCellColSpan,\n      tableRef,\n    } = this.props;\n\n    const commonProps = {\n      columns,\n      rowComponent,\n      cellComponent,\n      getCellColSpan,\n    };\n\n    return (\n      <Container>\n        <Table\n          forwardedRef={tableRef}\n          style={{ minWidth: `calc(${minWidth})` }}\n        >\n          <ColumnGroup columns={columns} />\n          {!!headerRows.length && (\n            <RowsBlockLayout\n              rows={headerRows}\n              blockComponent={headComponent}\n              {...commonProps}\n            />\n          )}\n          <RowsBlockLayout\n            rows={bodyRows}\n            blockComponent={bodyComponent}\n            {...commonProps}\n          />\n          {!!footerRows.length && (\n            <RowsBlockLayout\n              rows={footerRows}\n              blockComponent={footerComponent}\n              {...commonProps}\n            />\n          )}\n        </Table>\n      </Container>\n    );\n  }\n}\n","import * as React from 'react';\nimport {\n  Plugin, Template, Action,\n  PluginComponents,\n  TemplateConnector,\n  TemplatePlaceholder,\n  Getter,\n  Getters,\n} from '@devexpress/dx-react-core';\nimport {\n  isStubTableCell, checkColumnWidths, getScrollTop,\n  TOP_POSITION, BOTTOM_POSITION, getTopRowId,\n} from '@devexpress/dx-grid-core';\nimport {\n  VirtualTableProps,\n  Table as TableNS,\n  TableLayoutProps,\n  VirtualTablePluginState,\n} from '../../types';\n\n/** @internal */\nexport const emptyViewport = {\n  columns: [[0, 0]],\n  rows: [0, 0],\n  headerRows: [0, 0],\n  footerRows: [0, 0],\n  top: 0,\n  left: 0,\n  width: 800,\n  height: 600,\n};\n\nconst tableColumnsComputed = (\n  { tableColumns }: Getters,\n) => {\n  return checkColumnWidths(tableColumns);\n};\n\n/** @internal */\nexport const makeVirtualTable: (...args: any) => any = (Table, {\n  VirtualLayout,\n  FixedHeader,\n  FixedFooter,\n  SkeletonCell,\n  defaultEstimatedRowHeight,\n  defaultHeight,\n}) => {\n  class VirtualTable extends React.PureComponent<VirtualTableProps, VirtualTablePluginState> {\n    static defaultProps = {\n      estimatedRowHeight: defaultEstimatedRowHeight,\n      height: defaultHeight,\n      skeletonCellComponent: SkeletonCell,\n      onTopRowChange: () => {},\n    };\n    static FixedHeader: React.ComponentType;\n    static FixedFooter: React.ComponentType;\n    static SkeletonCell: React.ComponentType;\n    static TOP_POSITION = TOP_POSITION;\n    static BOTTOM_POSITION = BOTTOM_POSITION;\n\n    scrollToRow: (prop: number | string | symbol) => void;\n    scrollToColumn: (prop: symbol) => void;\n\n    constructor(props) {\n      super(props);\n\n      this.state = {\n        viewport: emptyViewport,\n        nextRowId: undefined,\n        nextColumnId: undefined,\n      };\n      this.scrollToRow = nextRowId => this.setState({ nextRowId });\n      this.scrollToColumn = nextColumnId => this.setState({ nextColumnId });\n    }\n\n    setViewport = (viewport) => {\n      this.setState({ viewport });\n    }\n\n    componentDidUpdate(_, prevState) {\n      const { nextRowId: prevId, nextColumnId: prevColumnId } = prevState;\n      const { nextRowId: currentId, nextColumnId: currentColumnId } = this.state;\n\n      if (currentId !== undefined && currentId === prevId) {\n        this.setState({ nextRowId: undefined });\n      }\n      if (currentColumnId !== undefined && prevColumnId === currentColumnId) {\n        this.setState({ nextColumnId: undefined });\n      }\n    }\n\n    render() {\n      const {\n        height,\n        estimatedRowHeight,\n        skeletonCellComponent: SkeletonStubCell,\n        children,\n        ...restProps\n      } = this.props;\n      const {\n        viewport: stateViewport,\n        nextRowId: nextId,\n        nextColumnId,\n      } = this.state;\n\n      return (\n        <Plugin name=\"VirtualTable\">\n          <Table layoutComponent={VirtualLayout} {...restProps} />\n\n          {/* prevents breaking change */}\n          <Action name=\"setViewport\" action={this.setViewport} />\n          <Action name=\"scrollToRow\" action={this.scrollToRow} />\n          <Action name=\"scrollToColumn\" action={this.scrollToColumn} />\n          <Getter name=\"viewport\" value={stateViewport} />\n          <Getter name=\"tableColumns\" computed={tableColumnsComputed} />\n\n          <Template name=\"tableLayout\">\n            {(params: TableLayoutProps) => (\n              <TemplateConnector>\n                {(\n                  { availableRowCount, loadedRowsStart, tableBodyRows, isDataRemote, viewport },\n                  { setViewport },\n                ) => {\n\n                  const { onTopRowChange } = this.props;\n                  const rowId = getTopRowId(viewport, tableBodyRows, isDataRemote);\n\n                  onTopRowChange(rowId);\n\n                  const totalRowCount = availableRowCount || tableBodyRows.length;\n                  const scrollTop = getScrollTop(\n                    tableBodyRows,\n                    totalRowCount,\n                    nextId,\n                    estimatedRowHeight,\n                    isDataRemote,\n                  );\n\n                  return (\n                    <TemplatePlaceholder\n                      params={{\n                        ...params,\n                        totalRowCount,\n                        loadedRowsStart,\n                        isDataRemote,\n                        height,\n                        estimatedRowHeight,\n                        setViewport,\n                        viewport,\n                        scrollTop,\n                        nextColumnId,\n                      }}\n                    />\n                  );\n                }}\n              </TemplateConnector>\n            )}\n          </Template>\n\n          <Template\n            name=\"tableCell\"\n            predicate={({ tableRow }: any) => !!isStubTableCell(tableRow)}\n          >\n            {(params: TableNS.CellProps) => (\n              <TemplateConnector>\n                {({ isDataRemote }) => (\n                  isDataRemote ? <SkeletonStubCell {...params} /> : <TemplatePlaceholder />\n                )}\n              </TemplateConnector>\n            )}\n          </Template>\n        </Plugin>\n      );\n    }\n  }\n\n  Object.values(Table.components as PluginComponents).forEach((name) => {\n    VirtualTable[name] = Table[name];\n  });\n\n  VirtualTable.FixedHeader = FixedHeader;\n  VirtualTable.FixedFooter = FixedFooter;\n  VirtualTable.SkeletonCell = SkeletonCell;\n\n  return VirtualTable;\n};\n","import { RowCache } from '../types';\n\nclass Node {\n  start: number;\n  rows: ReadonlyArray<any>;\n  prev: Node | null = null;\n  next: Node | null = null;\n\n  constructor(start: number, rows: ReadonlyArray<any>) {\n    this.start = start;\n    this.rows = rows;\n  }\n}\n\n// tslint:disable-next-line:max-classes-per-file\nclass LRUCache {\n  pageSize: number;\n  capacity: number;\n  head!: Node;\n  tail!: Node;\n  pages = new Map<number, Node>();\n\n  constructor(pageSize: number, capacity = Number.POSITIVE_INFINITY) {\n    this.pageSize = pageSize;\n    this.capacity = capacity;\n    this.initList();\n  }\n\n  initList() {\n    this.head = new Node(-1, []);\n    this.tail = new Node(-1, []);\n    this.head.next = this.tail;\n    this.tail.prev = this.head;\n  }\n\n  addPage(pageStart: number, rows: ReadonlyArray<any>) {\n    if (this.pages.has(pageStart)) {\n      this.removePage(pageStart);\n    }\n\n    const node = new Node(pageStart, rows);\n    const last = this.tail.prev!;\n    last.next = node;\n    node.next = this.tail;\n    node.prev = last;\n    this.tail.prev = node;\n    this.pages.set(pageStart, node);\n\n    if (this.pages.size > this.capacity) {\n      this.removePage(this.head.next!.start);\n    }\n  }\n\n  removePage(start: number) {\n    const node = this.pages.get(start)!;\n    node.prev!.next = node.next;\n    node.next!.prev = node.prev;\n\n    this.pages.delete(start);\n  }\n\n  getPage(pageStart: number) {\n    if (!this.pages.has(pageStart)) {\n      return null;\n    }\n\n    const { rows } = this.pages.get(pageStart)!;\n    this.removePage(pageStart);\n    this.addPage(pageStart, rows);\n\n    return rows;\n  }\n\n  clear() {\n    this.pages.clear();\n    this.initList();\n  }\n}\n\nexport const createRowCache = (pageSize = 100, capacity = Number.POSITIVE_INFINITY): RowCache => {\n  const cache = new LRUCache(pageSize, capacity / pageSize);\n\n  return {\n    getRows: (skip: number, take: number) => {\n      let result: any[] = [];\n      const pageCount = Math.ceil(take / pageSize);\n      for (let i = 0; i < pageCount; i += 1) {\n        const pageStart = skip + i * pageSize;\n        const chunk = cache.getPage(pageStart);\n\n        if (chunk !== null) {\n          result = result.concat(chunk);\n        }\n\n        // yield if last page is incomplete\n        if (chunk === null || (i !== pageCount - 1 && chunk.length !== pageSize)) {\n          return result;\n        }\n      }\n      return result;\n    },\n    setRows: (skip: number, rows: ReadonlyArray<any>) => {\n      const pageCount = Math.ceil(rows.length / pageSize);\n      for (let i = 0; i < pageCount; i += 1) {\n        const pageStart = i * pageSize;\n        const rowsChunk = rows.slice(pageStart, pageStart + pageSize);\n\n        // put incomplete page only if it is last one\n        if (rowsChunk.length === pageSize || i === pageCount - 1) {\n          cache.addPage(pageStart + skip, rowsChunk);\n        }\n      }\n    },\n    invalidate: () => cache.clear(),\n  };\n};\n","import * as React from 'react';\nimport { KeyboardNavigationComponent, Table } from '../types';\n\nexport const withKeyboardNavigation =\n<T extends KeyboardNavigationComponent>(key1?: string, key2?: string) =>\n(Component: React.ComponentType<Table.CellProps>): React.ComponentType<T> => {\n  class ComponentWithNavigation extends React.PureComponent<T> {\n    ref: React.RefObject<T>;\n    constructor(props) {\n      super(props);\n      this.ref = { current: null };\n      this.handleClick = this.handleClick.bind(this);\n      this.setForwardedRef = this.setForwardedRef.bind(this);\n    }\n\n    setForwardedRef(node) {\n      (this.ref.current as any)?.removeEventListener('mouseup', this.handleClick);\n      (this.ref.current as any) = node;\n      (this.ref.current as any)?.addEventListener('mouseup', this.handleClick);\n    }\n\n    componentDidMount() {\n      const { updateRefForKeyboardNavigation, tableRow, tableColumn } = this.props;\n      if (this.ref.current && updateRefForKeyboardNavigation) {\n        updateRefForKeyboardNavigation({\n          ref: this.ref,\n          key1: key1 || tableRow.key,\n          key2: key2 || tableColumn.key,\n          action: 'add',\n        });\n      }\n    }\n\n    componentWillUnmount() {\n      const { updateRefForKeyboardNavigation, tableRow, tableColumn } = this.props;\n      if (this.ref.current && updateRefForKeyboardNavigation) {\n        updateRefForKeyboardNavigation({\n          ref: this.ref,\n          key1: key1 || tableRow.key,\n          key2: key2 || tableColumn.key,\n          action: 'remove',\n        });\n        (this.ref.current as any).removeEventListener('mouseup', this.handleClick);\n      }\n    }\n\n    handleClick(event) {\n      const { tableRow, tableColumn, setFocusedElement } = this.props;\n      if (setFocusedElement) {\n        setFocusedElement({ key1: key1 || tableRow.key, key2: key2 || tableColumn.key, event });\n      }\n    }\n\n    render() {\n      const { setFocusedElement, updateRefForKeyboardNavigation, ...restProps } = this.props;\n      return <Component forwardedRef={this.setForwardedRef} {...restProps} />;\n    }\n  }\n  return ComponentWithNavigation;\n};\n","import * as React from 'react';\nimport { TableGroupRow } from '../../types';\n\nexport const InlineSummaryItem: React.FunctionComponent<\n  TableGroupRow.InlineSummaryItemProps\n> = React.memo(({\n  summary: { messageKey, columnTitle, component: SummaryComponent },\n  getMessage,\n}) => (\n  <React.Fragment>\n    {getMessage(messageKey, { columnTitle })}\n    <SummaryComponent />\n  </React.Fragment>\n));\n"],"names":["React.memo","tableColumnsWithGrouping","React.createElement","Plugin","Getter","rowIdGetter","cellValueGetter","React.useCallback","tableColumnsWithDataRows","checkTableColumnExtensions","visibleTableColumns","orderedColumns","React.createRef","Template","TemplatePlaceholder","React.PureComponent","PluginHost","getMessagesFormatter","TemplateConnector","React.Fragment","columnChooserItems","getColumnExtensionValueGetter","filterExpression","createStateHelper","changeColumnFilter","Action","pluginDependencies","filteredCollapsedRowsGetter","unwrappedFilteredRows","getColumnExtension","filteredRows","defaultFilterPredicate","columnExtensionValueGetter","startEditRows","stopEditRows","startEditCells","stopEditCells","changeRow","cancelChanges","changedRowsByIds","addRow","changeAddedRow","cancelAddedRows","addedRowsByIds","deleteRows","cancelDeletedRows","createRowChangeGetter","setCurrentPage","setPageSize","rowsWithPageHeaders","rowCount","paginatedRows","currentPage","toggleExpandedGroups","draftColumnGrouping","cancelColumnGroupingDraft","adjustSortIndex","changeColumnGrouping","getCollapsedRowsComputed","groupCollapsedRowsGetter","expandedGroupRows","groupedRows","groupRowChecker","groupRowLevelKeyGetter","expandedGroupedRowsComputed","customGroupingRowIdGetter","customGroupedRows","toggleSelection","rowsWithAvailableToSelect","allSelected","someSelected","unwrapSelectedRows","getPersistentSortedColumns","calculateKeepOther","changeColumnSorting","sortedRows","DragDropProviderCore","createPortal","tableHeaderRowsWithReordering","draftOrderComputed","TABLE_DATA_TYPE","getTableTargetColumnIndex","changeColumnOrder","PlaceholderWithRef","TABLE_REORDERING_TYPE","DropTarget","withComponents","React.forwardRef","tableRowsWithDataRows","tableCellColSpanGetter","isHeaderStubTableCell","isDataTableCell","isNoDataTableRow","isNoDataTableCell","isDataTableRow","TABLE_NODATA_TYPE","tableColumnsWithSelection","isSelectAllTableCell","isSelectTableCell","isRowHighlighted","TABLE_SELECT_TYPE","toggleDetailRowExpanded","tableDetailCellColSpanGetter","tableColumnsWithDetail","tableRowsWithExpandedDetail","isDetailToggleTableCell","isDetailRowExpanded","isDetailTableRow","isDetailTableCell","TABLE_DETAIL_TYPE","defaultFormatlessSummaries","getGroupInlineSummaries","defaultMessages","tableBodyRowsComputed","tableRowsWithGrouping","getCellColSpanComputed","tableGroupCellColSpanGetter","isGroupTableRow","isGroupTableCell","calculateGroupCellIndent","isGroupIndentTableCell","isGroupIndentStubTableCell","isGroupRowOrdinaryCell","isRowSummaryCell","getColumnSummaries","isPreviousCellContainSummary","TABLE_FLEX_TYPE","TABLE_GROUP_TYPE","tableHeaderRowsComputed","tableRowsWithHeading","isHeadingTableCell","getNextColumnName","getColumnSortingDirection","isHeadingTableRow","TABLE_HEADING_TYPE","CellPlaceholder","bandLevelsVisibility","columnVisibleIntervals","tableRowsWithBands","tableHeaderColumnChainsWithBands","columnBandLevels","isBandedOrHeaderRow","getBandComponent","BAND_DUPLICATE_RENDER","BAND_EMPTY_CELL","BAND_GROUP_CELL","BAND_HEADER_CELL","BAND_FILL_LEVEL_CELL","isBandedTableRow","TABLE_BAND_TYPE","tableHeaderRowsWithFilter","isFilterTableCell","getColumnFilterConfig","TOP_POSITION","getColumnFilterOperations","getSelectedFilterOperation","isFilterValueEmpty","isFilterTableRow","TABLE_FILTER_TYPE","tableRowsWithEditing","isEditTableCell","isAddedTableRow","getRowChange","isEditTableRow","TABLE_ADDED_TYPE","TABLE_EDIT_TYPE","tableColumnsWithEditing","isHeadingEditCommandsTableCell","isEditCommandsTableCell","TABLE_EDIT_COMMAND_TYPE","memoize","tableColumnsWithWidths","tableColumnsWithDraftWidths","changeTableColumnWidth","draftTableColumnWidth","cancelTableColumnWidthDraft","pageCount","DragSource","defaultProps","flushSync","getGroupCellTargetIndex","groupingPanelItems","getAvailableFilterOperationsGetter","toggleColumn","tableDataColumnsExist","toggleRowExpanded","expandedTreeRows","getRowIdComputed","customTreeRowIdGetter","customTreeRowLevelKeyGetter","isTreeRowLeafGetter","getTreeRowLevelGetter","collapsedTreeRowsGetter","unwrappedCustomTreeRows","customTreeRowsWithMeta","isTreeTableCell","changeSearchValue","searchFilterExpression","tableHeaderRowsWithFixed","tableHeaderColumnChainsWithFixed","tableColumnsWithFixed","calculateFixedColumnProps","isFixedTableRow","prepareGroupSummaryItems","totalSummaryValues","groupSummaryValues","treeSummaryValues","defaultSummaryCalculator","dependencies","tableRowsWithSummaries","tableRowsWithTotalSummaries","isTotalSummaryTableCell","isGroupSummaryTableCell","isFooterSummary","isTreeSummaryTableCell","isTotalSummaryTableRow","isGroupSummaryTableRow","isTreeSummaryTableRow","TABLE_TREE_SUMMARY_TYPE","TABLE_GROUP_SUMMARY_TYPE","TABLE_TOTAL_SUMMARY_TYPE","virtualRowsWithCache","plainRows","loadedRowsStart","getReferenceIndex","needFetchMorePages","emptyVirtualRows","getRequestMeta","shouldSendRequest","trimRowsToInterval","getAvailableRowCount","rowsWithEditingCells","columnsWithEditingCells","RowPlaceholder","focus","isCellExist","getClosestCellByRow","isTabArrowUpDown","getNextFocusedCell","LEFT_POSITION","RIGHT_POSITION","getPart","getIndexToFocus","getFocusing","isCellFocused","isRowFocused","filterHeaderRows","shallowEqual","getAnimations","filterActiveAnimations","evalAnimations","TABLE_STUB_TYPE","getColumnWidthGetter","isColumnsWidthDifferent","getViewport","getCollapsedGrids","getScrollLeft","Sizer","checkColumnWidths","getTopRowId","getScrollTop","isStubTableCell","BOTTOM_POSITION"],"mappings":"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"}