{"version":3,"sources":["../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../src/plugin-based/contexts.ts","../../src/plugin-based/plugin-indexer.tsx","../../src/plugin-based/constants.ts","../../src/utils/with-props-from-context.tsx","../../src/plugin-based/plugin.tsx","../../src/plugin-based/template-placeholder.tsx","../../src/plugin-based/plugin-host.tsx","../../src/plugin-based/helpers.ts","../../src/plugin-based/action.tsx","../../src/plugin-based/getter.tsx","../../src/plugin-based/template.tsx","../../src/plugin-based/template-connector.tsx","../../src/draggable/gesture-cover.ts","../../src/draggable/shared-events.ts","../../src/draggable/touch-strategy.ts","../../src/draggable/selection-utils.ts","../../src/draggable/mouse-strategy.ts","../../src/draggable.tsx","../../src/drag-drop/context.ts","../../src/drag-drop/provider.tsx","../../src/drag-drop/source.tsx","../../src/drag-drop/target.tsx","../../src/ref-holder.tsx","../../src/sizer.tsx","../../src/utils/connect-props.tsx","../../src/utils/state-helper.ts","../../src/utils/with-components.tsx","../../src/utils/ref-type.ts","../../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/integrated-paging.tsx","../../src/plugins/paging-state.tsx","../../src/plugins/custom-paging.tsx","../../src/plugins/grouping-state.tsx","../../src/plugins/integrated-grouping.tsx","../../src/plugins/custom-grouping.tsx","../../src/plugins/integrated-selection.tsx","../../src/plugins/selection-state.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/table-row-detail.tsx","../../src/plugins/row-detail-state.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/custom-tree-data.tsx","../../src/plugins/tree-data-state.tsx","../../src/plugins/table-tree-column.tsx","../../src/plugins/search-panel.tsx","../../src/plugins/search-state.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/utils/helpers.ts","../../src/components/table-layout.tsx","../../src/components/table-layout/column-group.tsx","../../src/components/table-layout/virtual-row-layout.tsx","../../src/components/table-layout/virtual-table-layout-block.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/components/summary/inline-summary-item.tsx","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@date-io/date-fns/build/index.esm.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../src/utils.ts","../../src/plugin-host.ts","../../src/event-emitter.ts","../../src/shallow-equal.ts","../../src/memoize.ts","../../src/easings.ts","../../src/messages-formatter.ts","../../src/templates/layout.jsx","../../src/grid.jsx","../../src/templates/column-chooser/overlay.jsx","../../src/templates/column-chooser/toggle-button.jsx","../../src/templates/column-chooser/item.jsx","../../src/utils/with-patched-props.jsx","../../src/plugins/column-chooser.jsx","../../src/templates/column-chooser/container.jsx","../../src/templates/drag-drop.jsx","../../src/plugins/drag-drop-provider.jsx","../../src/templates/paging-panel/page-size-selector.jsx","../../src/templates/constants.js","../../src/templates/paging-panel/pagination.jsx","../../src/templates/paging-panel/pager.jsx","../../src/plugins/paging-panel.jsx","../../src/templates/group-panel-container.jsx","../../src/templates/group-panel-item.jsx","../../src/templates/group-panel-empty-message.jsx","../../src/plugins/grouping-panel.jsx","../../src/templates/table-detail-toggle-cell.jsx","../../src/templates/table-detail-cell.jsx","../../src/templates/table-row.jsx","../../src/plugins/table-row-detail.jsx","../../src/templates/table-group-cell/cell.jsx","../../src/templates/table-group-cell/content.jsx","../../src/templates/utils.jsx","../../src/templates/table-group-cell/container.jsx","../../src/templates/table-group-cell/indent-cell.jsx","../../src/templates/table-group-cell/icon.jsx","../../src/templates/table-group-cell/row.jsx","../../src/templates/table-group-cell/inline-summary.jsx","../../src/templates/table-cell.jsx","../../src/templates/table-group-cell/summary-cell.jsx","../../src/templates/table-summary-item.jsx","../../src/plugins/table-group-row.jsx","../../src/templates/table-select-all-cell.jsx","../../src/templates/table-select-cell.jsx","../../src/utils/get-selection-color.jsx","../../src/templates/table-select-row.jsx","../../src/plugins/table-selection.jsx","../../src/templates/table.jsx","../../src/templates/table-stub-cell.jsx","../../src/templates/table-no-data-cell.jsx","../../src/templates/table-container.jsx","../../src/templates/table-stub-row.jsx","../../src/plugins/table.jsx","../../src/templates/table-layout.jsx","../../src/templates/table-skeleton-cell.jsx","../../src/plugins/virtual-table.jsx","../../src/templates/virtual-table-layout.jsx","../../src/templates/table-filter-cell.jsx","../../src/templates/filter-row/editor.jsx","../../src/templates/filter-row/filter-selector.jsx","../../src/templates/filter-row/filter-selector/toggle-button.jsx","../../src/templates/filter-row/icon.jsx","../../src/plugins/table-filter-row.jsx","../../src/templates/table-header-cell/resizing-control.jsx","../../src/templates/table-header-cell.jsx","../../src/templates/table-header-cell/sort-label.jsx","../../src/templates/table-header-cell/group-button.jsx","../../src/templates/table-header-cell/title.jsx","../../src/templates/table-header-cell/content.jsx","../../src/plugins/table-header-row.jsx","../../src/templates/table-band-header/cell.jsx","../../src/templates/table-band-header/banded-header-cell.jsx","../../src/templates/table-band-header/invisible-cell.jsx","../../src/templates/table-band-header/row.jsx","../../src/plugins/table-band-header.jsx","../../src/templates/table-edit-cell.jsx","../../src/plugins/table-edit-row.jsx","../../src/templates/table-edit-command-cell.jsx","../../src/plugins/table-edit-column.jsx","../../src/templates/empty-message.jsx","../../src/plugins/table-column-visibility.jsx","../../src/templates/table-reordering-cell.jsx","../../src/templates/table-invisible-row.jsx","../../src/plugins/table-column-reordering.jsx","../../src/plugins/table-column-resizing.jsx","../../src/templates/toolbar/toolbar.jsx","../../src/plugins/toolbar.jsx","../../src/templates/toolbar/flexible-space.jsx","../../src/templates/table-tree-expand-button.jsx","../../src/templates/table-tree-checkbox.jsx","../../src/templates/table-tree-indent.jsx","../../src/templates/table-tree-content.jsx","../../src/templates/table-tree-cell.jsx","../../src/plugins/table-tree-column.jsx","../../src/templates/search-panel-input.jsx","../../src/plugins/search-panel.jsx","../../src/templates/table-fixed-cell.jsx","../../src/templates/table-listener-cell.jsx","../../src/plugins/table-summary-row.jsx","../../src/plugins/table-fixed-columns.jsx","../../src/plugins/table-inline-cell-editing.jsx","../../src/templates/export-panel/menu.jsx","../../src/templates/export-panel/menu-item.jsx","../../src/plugins/export-panel.jsx","../../src/templates/export-panel/toggle-button.jsx","../../src/plugins/integrated-grouping/constants.ts","../../src/plugins/grid-core/computeds.ts","../../src/plugins/sorting-state/reducers.ts","../../src/plugins/sorting-state/helpers.ts","../../src/utils/merge-sort.ts","../../src/utils/hierarchical-data.ts","../../src/plugins/integrated-sorting/computeds.ts","../../src/plugins/filtering-state/reducers.ts","../../src/plugins/filtering-state/helpers.ts","../../src/plugins/filtering-state/computeds.ts","../../src/plugins/integrated-filtering/computeds.ts","../../src/plugins/grouping-state/reducers.ts","../../src/plugins/grouping-state/constants.ts","../../src/plugins/grouping-state/helpers.ts","../../src/plugins/integrated-grouping/helpers.ts","../../src/plugins/integrated-grouping/computeds.ts","../../src/plugins/custom-grouping/computeds.ts","../../src/plugins/custom-grouping/helpers.ts","../../src/plugins/grouping-panel/helpers.ts","../../src/plugins/paging-state/reducers.ts","../../src/plugins/integrated-paging/computeds.ts","../../src/plugins/integrated-paging/helpers.ts","../../src/plugins/paging-panel/helpers.ts","../../src/utils/common-reducers.ts","../../src/plugins/selection-state/reducers.ts","../../src/plugins/integrated-selection/computeds.ts","../../src/plugins/editing-state/reducers.ts","../../src/plugins/editing-state/computeds.ts","../../src/plugins/editing-state/helpers.ts","../../src/plugins/table-column-reordering/constants.ts","../../src/plugins/table-column-reordering/reducers.ts","../../src/plugins/table/constants.ts","../../src/plugins/table-column-reordering/computeds.ts","../../src/plugins/table-column-resizing/helpers.ts","../../src/plugins/table-column-resizing/computeds.ts","../../src/plugins/table-column-resizing/reducers.ts","../../src/plugins/table-edit-column/constants.ts","../../src/plugins/table-edit-row/constants.ts","../../src/plugins/table-header-row/constants.ts","../../src/plugins/table-edit-column/helpers.ts","../../src/plugins/table-edit-column/computeds.ts","../../src/plugins/table-edit-row/helpers.ts","../../src/plugins/table-edit-row/computeds.ts","../../src/plugins/table-inline-cell-editing/computeds.ts","../../src/plugins/table-filter-row/constants.ts","../../src/plugins/table-filter-row/helpers.ts","../../src/plugins/table-filter-row/computeds.ts","../../src/plugins/table-group-row/constants.ts","../../src/utils/virtual-table.ts","../../src/plugins/table-group-row/helpers.ts","../../src/plugins/table-group-row/computeds.ts","../../src/plugins/table-header-row/helpers.ts","../../src/plugins/table-header-row/computeds.ts","../../src/plugins/table-band-header/constants.ts","../../src/plugins/table-band-header/helpers.ts","../../src/plugins/virtual-table-state/helpers.ts","../../src/plugins/virtual-table-state/utils.ts","../../src/plugins/table-band-header/computeds.ts","../../src/plugins/row-detail-state/reducers.ts","../../src/plugins/table-row-detail/constants.ts","../../src/plugins/table-row-detail/helpers.ts","../../src/plugins/table-row-detail/computeds.ts","../../src/plugins/table-selection/constants.ts","../../src/plugins/table-selection/helpers.ts","../../src/plugins/table-selection/computeds.ts","../../src/plugins/table/helpers.ts","../../src/utils/column-extension.ts","../../src/plugins/table/computeds.ts","../../src/plugins/table-column-visibility/computeds.ts","../../src/plugins/table-column-visibility/helpers.ts","../../src/plugins/column-chooser/computeds.ts","../../src/plugins/column-chooser/reducers.ts","../../src/plugins/tree-data-state/reducers.ts","../../src/plugins/custom-tree-data/constants.ts","../../src/plugins/custom-tree-data/computeds.ts","../../src/plugins/table-tree-column/helpers.ts","../../src/plugins/search-state/reducers.ts","../../src/plugins/search-state/computeds.ts","../../src/plugins/data-type-provider/computeds.ts","../../src/plugins/table-fixed-columns/constants.ts","../../src/plugins/table-fixed-columns/helpers.ts","../../src/plugins/table-fixed-columns/computeds.ts","../../src/plugins/integrated-summary/computeds.ts","../../src/plugins/table-summary-row/constants.ts","../../src/plugins/table-summary-row/helpers.ts","../../src/plugins/table-summary-row/computeds.ts","../../src/plugins/summary-state/helpers.ts","../../src/utils/column-geometries.ts","../../src/utils/table.ts","../../src/utils/group-panel.ts","../../src/plugins/virtual-table/utils.ts","../../src/plugins/virtual-table/constants.ts","../../src/plugins/virtual-table/helpers.ts","../../src/plugins/virtual-table-state/computeds.ts","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"],"names":["_objectWithoutProperties","source","excluded","key","i","target","Object","getOwnPropertySymbols","sourceSymbolKeys","length","indexOf","prototype","propertyIsEnumerable","call","_objectWithoutPropertiesLoose","sourceKeys","keys","module","exports","obj","__esModule","_typeof","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","defineProperty","getOwnPropertyDescriptor","hasOwnProperty","desc","set","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_toConsumableArray","arr","Array","isArray","arrayLikeToArray","iterableToArray","unsupportedIterableToArray","TypeError","_possibleConstructorReturn","_inherits","subClass","superClass","create","constructor","value","writable","configurable","Symbol","iterator","_defineProperty","enumerable","PluginHostContext","React.createContext","PositionContext","TemplateHostContext","indexes","memoize","index","positionContext","fn","React.PureComponent","render","children","this","props","React.createElement","Consumer","React.Children","map","child","type","childPosition","Provider","String","PLUGIN_HOST_CONTEXT","POSITION_CONTEXT","TEMPLATE_HOST_CONTEXT","RERENDER_TEMPLATE_EVENT","RERENDER_TEMPLATE_SCOPE_EVENT","UPDATE_CONNECTION_EVENT","withContext","Context","name","Component","context","withHostAndPosition","componentDidMount","pluginHost","position","dependencies","plugin","container","registerPlugin","ensureDependencies","componentDidUpdate","componentWillUnmount","unregisterPlugin","PluginIndexer","Plugin","PluginBase","getRenderingData","params","templates","collect","filter","template","predicate","reverse","templateHost","subscription","id","forceUpdate","React.Component","registerSubscription","shouldComponentUpdate","nextProps","unregisterSubscription","restTemplates","slice","content","templateContent","templatePlaceholder","TemplatePlaceholder","TemplatePlaceholderBase","PluginHost","host","PluginHostCore","getAvailableGetters","getGetterValue","getterName","trackedDependencies","getters","Proxy","prop","result","undefined","ownKeys","knownKeys","reduce","acc","isTrackedDependenciesChanged","prevTrackedDependencies","assign","getAvailableActions","getAction","actionName","Action","action","nextParams","newParams","nextAction","Getter","lastComputed","lastResult","lastTrackedDependencies","original","computed","actions","broadcast","globalTemplateId","Template","updateConnection","TemplateConnectorBase","contextType","gestureCover","eventEmitter","TemplateConnector","delegate","touchStartTimeout","dragging","isDragging","isWaiting","cancelWaiting","clearTimeout","start","e","touches","x","y","setTimeout","onStart","move","clientX","clientY","preventDefault","onMove","end","changedTouches","onEnd","mouseInitialOffset","toggleGestureCover","toggle","cursor","style","pointerEvents","top","right","left","bottom","opacity","zIndex","document","createElement","body","appendChild","forEach","clear","selection","window","getSelection","empty","removeAllRanges","clamp","min","max","Math","dragStarted","initialX","initialY","isBoundExceeded","element","elementFromPoint","getComputedStyle","getSharedEventEmitter","addEventListener","emit","passive","draggingHandled","onUpdate","mouseStrategy","MouseStrategy","touchStrategy","TouchStrategy","mouseDownListener","bind","touchStartListener","globalListener","subscribe","setupNodeSubscription","unsubscribe","node","removeEventListener","DragDropContext","payload","dragEmitter","clientOffset","update","defaultProps","onChange","dragDropProvider","DragDropProviderCore","Draggable","DragSource","onEnter","args","onOver","onLeave","onDrop","isOver","handleDrag","getBoundingClientRect","only","DropTarget","styles","root","triggersRoot","height","width","overflow","visibility","expandTrigger","contractTrigger","minHeight","minWidth","contractNotifier","getSize","rootNode","clientHeight","clientWidth","setupListeners","rootRef","React.createRef","createListeners","scrollTop","size","scrollLeft","expandNotifier","onSizeChange","current","Container","restProps","RefHolder","ref","containerComponent","connectProps","WrappedComponent","getAdditionalProps","storedAdditionalProps","components","Set","add","delete","RenderComponent","from","values","component","createStateHelper","controlledStateProperties","lastStateUpdater","initialState","lastInitialState","newState","shouldNotify","applyReducer","callback","stateUpdater","prevState","stateChange","state","setState","nextState","propertyName","changeEvent","applyFieldReducer","field","withComponents","Target","exposed","targetComponents","entries","fieldName","componentName","makeBoundComponent","PropTypes.shape","PropTypes.instanceOf","Element","TableColumnsWithGrouping","React.memo","indentColumnWidth","showColumnsWhenGrouped","columnExtensions","columns","tableColumns","grouping","draftGrouping","columnExtension","columnName","showWhenGrouped","showColumnWhenGroupedGetter","GridCoreGetters","rows","getRowId","getCellValue","TableColumnsWithDataRowsGetter","tableColumnsComputed","React.useCallback","visibleTableColumnsComputed","hiddenColumnNames","VisibleTableColumns","OrderedTableColumns","order","Root","Grid","rootComponent","GridCore","pluginDependencies","ColumnChooser","visible","handleToggle","handleHide","setButtonRef","button","Overlay","Item","ToggleButton","messages","getMessage","isColumnTogglingEnabled","toggleColumnVisibility","React.Fragment","buttonRef","onToggle","active","onHide","item","column","togglingEnabled","disabled","overlayComponent","itemComponent","toggleButtonComponent","columnExtensionValueGetter","defaultValue","filterExpressionComputed","filters","filterExpressionValue","FilteringState","defaultFilters","stateHelper","changeColumnFilter","getDerivedStateFromProps","columnFilteringEnabled","optional","getCollapsedRowsComputed","unwrappedRowsComputed","getColumnPredicate","filterExpression","getRowLevelKey","getCollapsedRows","IntegratedFilteringBase","defaultPredicate","IntegratedFiltering","EditingState","rowChanges","defaultRowChanges","addedRows","defaultAddedRows","editingRowIds","defaultEditingRowIds","deletedRowIds","defaultDeletedRowIds","editingCells","defaultEditingCells","startEditRows","stopEditRows","startEditCells","stopEditCells","changeRow","cancelChangedRows","commitChangedRows","rowIds","onCommitChanges","changed","addRow","changeAddedRow","cancelAddedRows","commitAddedRows","added","deleteRows","cancelDeletedRows","commitDeletedRows","deleted","createRowChange","columnEditingEnabled","currentPage","defaultCurrentPage","pageSize","defaultPageSize","setCurrentPage","setPageSize","rowsWithHeadersComputed","totalCountComputed","paginatedRowsComputed","page","currentPageComputed","totalCount","GroupingState","defaultGrouping","expandedGroups","defaultExpandedGroups","changeColumnGrouping","toggleGroupExpanded","draftColumnGrouping","cancelColumnGroupingDraft","changeColumnSorting","sorting","keepOther","restParams","groupingIndex","findIndex","columnGrouping","sortIndex","groupIndex","prevGrouping","columnSortingIndex","columnSorting","prevGroupingIndex","columnGroupingEnabled","expandedGroupedRowsComputed","isExporting","getColumnCriteria","criteria","IntegratedGrouping","IntegratedGroupingBase","getRowIdComputed","rowsWithAvailableToSelectComputed","getChildGroups","appliedGrouping","appliedExpandedGroups","defaultSelection","toggleSelection","isGroupRow","allSelectedComputed","someSelectedComputed","selectAllAvailableComputed","toggleSelectAll","availableToSelect","unwrapRowsComputed","SortingState","defaultSorting","persistentSortedColumns","columnSortingEnabled","getColumnCompare","compare","IntegratedSorting","IntegratedSortingBase","DragDropProvider","change","bodyRef","Column","find","getTargetColumns","columnComponent","tableHeaderRowsComputed","tableHeaderRows","cellDimensionGetters","cellDimensions","defaultOrder","sourceColumnIndex","targetColumnIndex","handleOver","handleLeave","handleDrop","getState","orderState","getDraftOrder","draftOrderComputed","getAvailableColumns","cacheCellDimensions","resetCellDimensions","ensureCellDimensionGetters","storeCellDimensionsGetter","tableColumn","getter","sourceColumnName","availableColumns","relativeTargetIndex","prevSourceColumnIndex","prevTargetColumnIndex","draftOrder","onOrderChange","nextOrder","targetColumnName","Row","Cell","draggingEnabled","getCellDimensions","tableContainerComponent","rowComponent","cellComponent","TableColumnReordering","TableContainer","TableColumnReorderingRaw","RowPlaceholder","CellPlaceholder","tableBodyRowsComputed","isDataLoading","tableFooterRows","defaultMessages","noData","Layout","NoDataRow","NoDataCell","StubRow","StubCell","StubHeaderCell","tableComponent","headComponent","bodyComponent","footerComponent","headerRows","bodyRows","footerRows","getTableCellColSpan","getCellColSpan","tableRow","row","COLUMN_TYPE","ROW_TYPE","NODATA_ROW_TYPE","layoutComponent","noDataRowComponent","noDataCellComponent","stubRowComponent","stubCellComponent","stubHeaderCellComponent","Table","TableBase","highlightRow","selectByRowClick","showSelectionColumn","showSelectAll","HeaderCell","selectionColumnWidth","selectAllAvailable","allSelected","someSelected","select","selected","rowId","highlighted","headerCellComponent","TableSelection","TableSelectionBase","getCellColSpanComputed","expandedRowIds","defaultExpandedRowIds","toggleDetailRowExpanded","rowHeight","Content","ToggleCell","toggleColumnWidth","tableBodyRows","expandedDetailRowIds","expanded","contentComponent","toggleCellComponent","TableRowDetail","TableRowDetailBase","defaultSummaryMessages","sum","avg","count","TableSummaryContent","columnSummaries","formatlessSummaryTypes","SummaryItem","summary","includes","isFormatlessSummary","getInlineSummaryComponent","formatlessSummaries","side","countOf","sumOf","maxOf","minOf","avgOf","groupSummaryItems","viewport","firstVisibleColumnIndex","GroupCell","Icon","GroupRow","GroupIndentCell","InlineSummary","InlineSummaryItem","SummaryCell","contentCellPadding","groupSummaryValues","concat","compoundKey","colSummaries","summaries","columnTitle","title","messageKey","flattenGroupInlineSummaries","iconComponent","groupKey","inlineSummaries","inlineSummaryComponent","inlineSummaryItemComponent","fixedProps","summaryItem","showInGroupFooter","alignByColumn","indentCellComponent","summaryCellComponent","summaryItemComponent","TableGroupRow","TableGroupRowBase","showSortingControls","showGroupingControls","HeaderRow","SortLabel","GroupButton","Title","tableColumnResizingEnabled","isColumnSortingEnabled","isColumnGroupingEnabled","columnResizingMode","changeTableColumnWidth","draftTableColumnWidth","cancelTableColumnWidthDraft","storeWidthGetters","atLeastOneDataColumn","sortingEnabled","groupingEnabled","nextColumnName","resizingEnabled","onWidthChange","shift","onWidthDraft","onWidthDraftCancel","getCellWidth","align","direction","onSort","onGroup","sortLabelComponent","titleComponent","groupButtonComponent","TableHeaderRowBase","TableHeaderRow","bandLevelsVisibilityComputed","columnIntervals","tableHeaderColumnChains","bandLevels","columnVisibleIntervalsComputed","InvisibleCell","columnBands","levelsVisibility","bandComponent","whiteSpace","bandedHeaderCellComponent","invisibleCellComponent","TableBandHeaderBase","TableBandHeader","filterPlaceholder","contains","notContains","startsWith","endsWith","equal","notEqual","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","filterOperations","showFilterSelector","FilterCell","FilterRow","FilterSelector","EditorComponent","isColumnFilteringEnabled","getAvailableFilterOperations","isDataRemote","scrollToRow","onFilter","config","columnFilterOperations","selectedFilterOperation","handleFilterOperationChange","operation","handleFilterValueChange","filteringEnabled","onValueChange","availableValues","filterSelectorComponent","editorComponent","TableFilterRow","TableFilterRowBase","EditCell","EditRow","isColumnEditingEnabled","isNew","changedRow","newValue","changeArgs","editingEnabled","ADDED_ROW_TYPE","EDIT_ROW_TYPE","TableEditRow","TableEditRowBase","addCommand","editCommand","deleteCommand","commitCommand","cancelCommand","Command","showAddCommand","showEditCommand","showDeleteCommand","text","onExecute","isEdit","isEditing","commandComponent","TableEditColumn","TableEditColumnBase","widthGetters","cachedWidths","columnWidths","defaultColumnWidths","draftColumnWidths","resizingMode","tableColumnsDraftComputed","minColumnWidth","maxColumnWidth","storeCache","clearCache","columnIndex","_","TableColumnResizing","TableColumnResizingBase","showAll","info","to","Pager","pageSizes","totalPages","onCurrentPageChange","onPageSizeChange","PagingPanel","PagingPanelBase","onDragStart","onDragEnd","itemElement","draft","onGroupDraft","onGroupDraftCancel","GroupPanelLayout","itemRefs","draggingColumnName","targetItemIndex","handleDragEvent","eventHandler","restArgs","items","prevTargetItemIndex","itemGeometries","sourceItemIndex","resetState","EmptyMessage","groupPanel","ItemLayout","push","groupByColumn","LayoutComponent","EmptyMessagePlaceholder","ItemPlaceholder","sortingDirection","emptyMessageComponent","GroupingPanel","GroupingPanelRaw","columnNames","Formatter","Editor","availableFilterOperations","join","DataTypeProvider","DataTypeProviderBase","noColumns","defaultHiddenColumnNames","columnTogglingEnabled","TableColumnVisibilityBase","TableColumnVisibility","FlexibleSpaceComponent","flexibleSpaceComponent","Toolbar","ToolbarBase","toggleRowExpanded","expandedTreeRowsComputed","getRowLevelKeyComputed","isTreeRowLeafComputed","getTreeRowLevelComputed","collapsedTreeRowsGetterComputed","unwrappedTreeRowsComputed","getChildRows","forColumnName","showSelectionControls","Indent","ExpandButton","Checkbox","checked","indeterminate","isTreeRowLeaf","getTreeRowLevel","collapsedRows","level","indentComponent","expandButtonComponent","checkboxComponent","TableTreeColumn","TableTreeColumnBase","changeValue","searchPlaceholder","Input","searchValue","changeSearchValue","inputComponent","SearchPanel","SearchPanelBase","tableHeaderColumnChainsComputed","TableFixedColumns","tableColumnDimensions","handleListenerSizeChange","ListenerRow","ListenerCell","leftColumns","rightColumns","fixed","highlightSelectedRow","fixedColumnProps","listen","listenerRowComponent","listenerCellComponent","groupSummaryItemsComputed","totalItems","groupItems","treeItems","calculator","totalSummaryItems","treeSummaryItems","defaultCalculator","totalValues","groupValues","treeValues","tableFooterRowsComputed","renderContent","TotalRow","TreeRow","TotalCell","TreeCell","TreeColumnCell","TreeColumnContent","TreeColumnIndent","totalSummaryValues","treeSummaryValues","tableTreeColumnName","TREE_ROW_TYPE","GROUP_ROW_TYPE","TOTAL_ROW_TYPE","totalRowComponent","groupRowComponent","treeRowComponent","totalCellComponent","groupCellComponent","treeCellComponent","treeColumnCellComponent","treeColumnContentComponent","treeColumnIndentComponent","TableSummaryRow","TableSummaryRowBase","virtualRowsComputed","skip","virtualRowsCache","rowsComputed","virtualRows","availableRowCount","loadedRowsStartComputed","requestTimer","setViewport","requestNextPage","referenceIndex","requestNextPageAction","forceReload","totalRowCount","infiniteScrolling","requestedStartIndex","actualVirtualRows","requestedRange","actualBounds","clearRowsCacheAction","__","resetVirtualTablePosition","requestFirstPage","getRows","stateAvailableCount","loadCount","prevAvailableRowCount","prevRequestedStartIndex","prevVirtualRowCache","newRowCount","loading","rowsWithEditingCellsComputed","columnsWithEditingCellsComputed","TableInlineCellEditingBase","startEditAction","selectTextOnEditStart","Error","eventName","hasEditCell","onKeyDown","onBlur","onFocus","autoFocus","TableInlineCellEditing","showExportMenu","exportAll","exportSelected","Menu","MenuItem","startExport","onClick","selectedOnly","menuComponent","menuItemComponent","ExportPanel","ExportPanelBase","getRowStyle","TableLayout","savedOffsetWidth","raf","animationState","Map","animations","savedScrollWidth","tableRef","prevProps","prevColumns","processAnimation","tableWidth","getTableWidth","cancelAnimationFrame","requestAnimationFrame","processAnimationFrame","offsetWidth","scrollWidth","widthChanged","getColumns","toString","animationComponentState","Number","isNaN","isNumber","styleWidth","prevCells","prevRow","nextCells","some","nextCell","prevCell","colSpan","cells","collapsedGrid","blockRefsHandler","rowRefsHandler","Body","marginBottom","ColumnGroup","visibleRow","VirtualRowLayout","headTableComponent","footerTableComponent","rowRefs","blockRefs","viewportTop","containerHeight","containerWidth","viewportLeft","getRowHeight","rowHeights","estimatedRowHeight","storedHeight","registerRowRef","registerBlockRef","onScroll","shouldSkipScrollEvent","updateViewport","handleContainerSizeChange","headerHeight","bodyHeight","footerHeight","visibleRowBoundaries","getColumnWidthGetter","storeRowHeights","storeBlockHeights","bodyRowsChanged","columnCountChanged","prevRowHeight","rowsWithChangedHeights","getBlockHeight","blockName","prevHeaderHeight","prevBodyHeight","prevFooterHeight","currentTarget","nodeHorizontalOffset","parseInt","nodeVerticalOffset","scrollHeight","newViewport","calculateViewport","loadedRowsStart","getColumnWidth","getCollapsedGrids","HeadTable","FootTable","Head","Footer","collapsedGrids","commonProps","sizerHeight","VirtualTableLayoutBlock","headerGrid","bodyGrid","footerGrid","RowLayout","getColSpan","Block","RowsBlockLayout","blockComponent","emptyViewport","makeVirtualTable","VirtualLayout","FixedHeader","FixedFooter","SkeletonCell","defaultEstimatedRowHeight","defaultHeight","nextRowId","layoutRenderComponent","prevId","currentId","areIdsEqual","SkeletonStubCell","stateViewport","nextId","onTopRowChange","skeletonCellComponent","TOP_POSITION","BOTTOM_POSITION","VirtualTable","prev","next","capacity","POSITIVE_INFINITY","pages","initList","head","Node","tail","addPage","pageStart","removePage","last","getPage","SummaryComponent","_slicedToArray","arrayWithHoles","_i","_s","_e","_arr","_n","_d","done","err","nonIterableRest","_arrayLikeToArray","len","arr2","_extends","arguments","apply","DateFnsUtils","_a","locale","yearFormat","yearMonthFormat","dateTime12hFormat","dateTime24hFormat","time12hFormat","time24hFormat","dateFormat","addDays","isValid","date","getDiff","comparing","differenceInMilliseconds","isAfter","isBefore","startOfDay","endOfDay","getHours","setHours","setMinutes","getSeconds","setSeconds","isSameDay","isSameMonth","isSameYear","isSameHour","startOfMonth","endOfMonth","getYear","setYear","Date","parse","formatString","dateFnsParse","format","isEqual","isNull","isAfterDay","isBeforeDay","isBeforeYear","startOfYear","isAfterYear","endOfYear","formatNumber","numberToFormat","getMinutes","getMonth","setMonth","getMeridiemText","ampm","getNextMonth","addMonths","getPreviousMonth","getMonthArray","monthArray","prevMonth","mergeDateAndTime","time","getWeekdays","_this","now","eachDayOfInterval","startOfWeek","endOfWeek","day","getWeekArray","nestedWeeks","weekNumber","floor","getYearRange","startDate","endDate","years","addYears","getCalendarHeaderText","getYearText","getDatePickerHeaderText","getDateTimePickerHeaderText","getMonthText","getDayText","getHourText","getMinuteText","getSecondText","_unsupportedIterableToArray","minLen","n","test","_setPrototypeOf","p","object","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_iterableToArray","iter","_arrayWithHoles","_nonIterableRest","a","b","aPosition","bPosition","getDependencyError","pluginName","dependencyName","gettersCache","knownKeysCache","validationRequired","plugins","subscriptions","defined","knownOptionals","dependency","array","newItem","nextItemIndex","targetIndex","alreadyExists","splice","insertPlugin","cleanPluginsCache","itemIndex","removePlugin","postfix","replace","upTo","res","indexCache","upToIndex","upToIndexKey","upToRes","event","message","handlers","handler","shallowEqual","objA","objB","keysA","keysB","hasOwn","argumentsShallowEqual","func","lastArgs","easeOutCubic","t","getMessagesFormatter","pattern","msg","processPattern","RootBase","classes","className","classNames","withStyles","display","flexDirection","open","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","placement","enterDelay","ItemBase","hidden","tabIndex","disableRipple","checkbox","primary","theme","padding","itemText","paddingLeft","withPatchedProps","patchProps","Patched","showColumnChooser","ColumnChooserWithMessages","PropTypes","ColumnChooserBase","dense","paddingRight","float","ContainerBase","transform","msTransform","ColumnBase","label","PageSizeSelector","pageSizeSelector","alignItems","pageSizeTitle","marginRight","inputRoot","fontSize","textAlign","selectIcon","selectMenu","icon","MenuProps","input","disableUnderline","PageButton","isActive","isDisabled","buttonClasses","Pagination","pagination","margin","rowsLabel","activeButton","fontWeight","arrowButton","marginLeft","firstRowOnPage","lastRowOnPage","pageButtons","startPage","endPage","totalPageCount","calculateStartPage","renderPageButtons","PagerBase","pager","flex","justifyContent","rowsPerPage","PagingPanelWithMessages","GroupPanelContainerBase","GroupPanelContainer","panel","flexWrap","marginTop","hovered","hideSortIcon","GroupPanelItemBase","React","setHovered","chipClassNames","onDelete","isActionKeyDown","isMouseClick","cancelSortingRelatedKey","onMouseEnter","onMouseLeave","GroupPanelItem","withoutIcon","draftCell","GroupPanelEmptyMessageBase","GroupPanelEmptyMessage","groupInfo","color","fontFamily","TableDetailToggleCellBase","TableDetailToggleCell","toggleCell","textOverflow","paddingTop","paddingBottom","toggleCellButton","verticalAlign","TableDetailCellBase","TableDetailCell","backgroundColor","default","TableRow","TableRowDetailWithWidth","CellBase","cell","cellNoWrap","ContentBase","getBorder","lighten","fade","darken","getStickyCellStyle","backgroundClip","wrapper","maxWidth","overflowX","IndentCellBase","IndentCell","indentCell","borderBottom","IconBase","groupButton","RowBase","InlineSummaryBase","s","inlineSummary","TableCellBase","footer","TableCell","cellRightAlign","cellCenterAlign","TableSummaryItemBase","TableSummaryItem","TableGroupRowWithIndent","TableSelectAllCellBase","rowSpan","cellClasses","TableSelectAllCell","alignWithRowSpan","pointer","TableSelectCellBase","TableSelectCell","TableSelectRowBase","TableSelectRow","getSelectionColor","TableSelectionWithWidth","use","table","tableLayout","borderCollapse","stickyTable","background","fallbacks","headTable","footTable","borderTop","TableStubCellBase","TableStubCell","TableNoDataCellBase","textContainer","TableNoDataCell","TableContainerBase","flexGrow","WebkitOverflowScrolling","TableStubRow","TableHead","TableBody","TableFooter","TableSkeletonCellBase","TableSkeletonCell","backgroundImage","backgroundRepeat","backgroundOrigin","TableFilterCellBase","flexContainer","TableFilterCell","spacing","EditorBase","fullWidth","placeholder","FilterSelectorBase","opened","MenuListProps","valueItem","iconItem","AVAILABLE_PATHS","path","viewBox","d","ResizingControlBase","resizing","resizeStartingX","resizeHandleOpacityClass","resizeLastHandleClass","onResizeEnd","ResizingControl","resizeHandle","userSelect","MozUserSelect","WebkitUserSelect","resizeHandleLine","transition","resizeHandleFirstLine","resizeHandleSecondLine","resizeHandleLineActive","resizeHandleActive","TableHeaderCellBase","tableCellClasses","cellLayout","cellRef","TableHeaderCell","plainTitle","lineHeight","outline","cellNoUserSelect","cellDraggable","cellDimmed","cellRight","cellCenter","SortLabelBase","tooltip","tooltipRoot","sortLabelActive","sortLabelRoot","sortLabelRight","GroupButtonBase","TitelBase","alignCenter","alignRight","sortingHint","TableHeaderRowWithMessages","beforeBorder","borderRight","borderLeft","BandedHeaderCellBase","HeaderCellComponent","BandedHeaderCell","headerCellBorder","emptyCell","EditCellBase","inputClasses","patchedChildren","readOnly","disabledInput","borderBottomColor","inputRight","inputCenter","withEditColumnStyles","headingCell","CommandButtonBase","CommandButton","EditCommandHeadingCellBase","EditCommandHeadingCell","EditCommandCellBase","EditCommandCell","TableEditColumnWithWidth","emptyMessage","TableReorderingCell","getCellGeometries","TableInvisibleRowBase","TableInvisibleRow","Infinity","toolbar","FlexibleSpace","TableTreeExpandButtonBase","TableTreeExpandButton","TableTreeCheckboxBase","TableTreeCheckbox","TableTreeIndentBase","indent","isRequired","TableTreeIndent","TableTreeContentBase","TableTreeContent","TableTreeCellBase","TableTreeCell","SearchPanelInputBase","startAdornment","SearchPanelInput","FixedCellBase","showLeftDivider","showRightDivider","FixedCell","dividerRight","dividerLeft","fixedCell","TableBorderlessStubCellBase","TableBorderlessStubCell","border","keepMounted","GRID_GROUP_TYPE","GRID_GROUP_CHECK","GRID_GROUP_LEVEL_KEY","GRID_GROUP_COLLAPSED_ROWS","rowIdGetter","rowIndex","console","warn","warnIfRowIdUndefined","defaultGetCellValue","cellValueGetter","useFastAccessor","nextSorting","newColumnSorting","newIndexFallback","newIndex","unique","getColumnSortingDirection","getPersistentSortedColumns","sortItem","calculateKeepOther","merge","auxiliary","lo","mid","hi","j","k","sortArrayToAuxiliary","sortAuxiliaryToArray","NODE_CHECK","rowsToTree","levels","levelKey","levelIndex","treeToRows","tree","defaultCompare","createCompare","getComparableValue","reduceRight","prevCompare","inverse","columnCompare","aRow","bRow","sortTree","sortedTree","mergeSort","sortHierarchicalRows","sortedRows","groupedBy","filterIndex","f","getColumnFilterConfig","expression","selfFilterExpr","operator","operators","or","predicates","and","toLowerCase","operationPredicates","defaultFilterPredicate","filterTree","filteredChildren","filterHierarchicalRows","collapsedRowsMeta","filteredTree","isNode","filteredCollapsedRows","buildPredicate","initialFilterExpression","getOperatorPredicate","build","getPredicate","getSimplePredicate","filteredRows","filteredCollapsedRowsGetter","unwrappedFilteredRows","applyColumnGrouping","nextGrouping","g","ungroupedColumnIndex","group","filteredExpandedGroups","split","toggleExpandedGroups","groupKeyIndex","adjustSortIndex","defaultColumnCriteria","getGroupRows","groupsGetter","keyPrefixes","prefix","resultRows","compoundKeys","pop","keyPrefix","currentRows","currentCompoundKey","groupRows","childRows","groupRowChecker","groupRowLevelKeyGetter","groupedRows","currentGrouping","groupCriteria","groups","rawValue","sameKeyItems","groupingValue","getIntegratedGroups","expandedGroupRows","groupingColumnNames","expandedGroupsSet","currentGroupExpanded","currentGroupLevel","groupLevel","groupCollapsedRowsGetter","customGroupedRows","rootRows","getCustomGroups","customGroupingRowIdGetter","firstRow","groupingPanelItems","c","prevPage","prevPageSize","paginatedRows","rowsWithPageHeaders","currentIndex","headerIndex","headerRow","indexInPage","rowCount","pageCount","ceil","adjustedCurrentPage","maxButtonCount","itemsSet","sourceState","rowsWithAvailableToSelect","dataRows","selectionSet","elem","unwrapSelectedRows","prevEditingRowIds","rowIdSet","prevEditingCells","currentRowId","currentColumnName","indexSet","prevRowChanges","prevChange","cancelChanges","changedRowsByIds","changes","addedRowsByIds","defaultCreateRowChange","createRowChangeGetter","getRowChange","TABLE_REORDERING_TYPE","changeColumnOrder","newOrder","TABLE_DATA_TYPE","TABLE_NODATA_TYPE","TABLE_FLEX_TYPE","orderedColumns","tableHeaderRowsWithReordering","sourceColumn","extension","getColumnSizes","nextWidth","nextSize","isValidValue","validUnits","numb","unit","substr","sizeIsAuto","sizeIsValid","validUnit","convertWidth","VALID_UNITS","NOT_FOR_WIDGET_UNITS","specifyWidths","widths","onError","el","tableColumnsWithWidths","throwError","tableColumnsWithDraftWidths","nextColumnWidth","nextIndex","TABLE_EDIT_COMMAND_TYPE","TABLE_ADDED_TYPE","TABLE_EDIT_TYPE","TABLE_HEADING_TYPE","isHeadingEditCommandsTableCell","isEditCommandsTableCell","tableColumnsWithEditing","isEditTableCell","isAddedTableRow","isEditTableRow","tableRowsWithEditing","tableRows","editedTableRows","addedTableRows","rowsWithEditingCells","columnsWithEditingCells","TABLE_FILTER_TYPE","DEFAULT_FILTER_OPERATIONS","isFilterTableCell","isFilterTableRow","getColumnFilterOperations","isFilterValueEmpty","getSelectedFilterOperation","columnFilter","tableHeaderRowsWithFilter","TABLE_GROUP_TYPE","TABLE_STUB_TYPE","getVisibleBoundary","viewportStart","viewportSize","getItemSize","offset","itemSize","beforePosition","viewportEnd","afterPosition","isVisible","getRenderBoundary","itemsCount","visibleBoundary","overscan","getRowsVisibleBoundary","boundaries","noVisibleRowsLoaded","topIndex","round","getColumnsRenderBoundary","columnCount","getSpanBoundary","visibleBoundaries","getItemSpan","endIndex","span","collapseBoundaries","spanBoundaries","breakpoints","rowBoundaries","boundary","every","bound","point","bp","sort","bounds","getColumnsSize","startIndex","getColumnSize","getCollapsedColumns","collapsedColumns","getCells","getCollapsedGrid","rowsVisibleBoundary","columnsVisibleBoundary","rowSpanBoundaries","columnBoundaries","collapsedCells","spanBoundary","colSpanEnd","colSpanBoundary","getCollapsedCells","colsHavingWidth","col","autoWidth","autoColWidth","getCollapsedGridBlock","getRenderRowBounds","adjustedRenderRowBounds","visibleBounds","renderRowBoundaries","adjustedInterval","intervalUtil","intersect","getGroupIndexByColumn","isIndentCell","rowGroupIndex","isGroupTableCell","isGroupIndentTableCell","isGroupIndentStubTableCell","isGroupTableRow","isGroupRowOrdinaryCell","isRowSummaryCell","columnHasGroupRowSummary","isPreviousCellContainSummary","calculateGroupCellIndent","indentWidth","tableColumnsWithGrouping","showColumnWhenGrouped","groupedColumn","columnGroupingExists","columnDraftGroupingExists","tableColumnsWithDraftGrouping","tableRowsWithGrouping","groupSummaryChains","captionStarted","groupColumns","dataColumns","flexColumns","otherColumns","firstGroupIndex","sortAndSpliceColumns","colName","isStartOfGroupCaption","isIndentColumn","isRowLevelSummary","tableGroupCellColSpanGetter","chain","ch","isHeadingTableCell","isHeadingTableRow","findChainByColumnIndex","chains","splitHeaderColumnChains","tableColumnChains","shouldSplitChain","extendChainProps","currentChain","generateSimpleChains","getNextColumnName","tableRowsWithHeading","TABLE_BAND_TYPE","BAND_GROUP_CELL","BAND_HEADER_CELL","BAND_EMPTY_CELL","BAND_DUPLICATE_RENDER","BAND_FILL_LEVEL_CELL","isBandedTableRow","isBandedOrHeaderRow","getColumnMeta","bands","tableRowLevel","band","rowLevelPassed","bandTitle","bandKey","getBandComponent","columnVisibleIntervals","bandLevelsVisibility","currentTableColumn","maxLevel","currentRowLevel","currentColumnMeta","currentColumnIndex","levelsCount","visibleLevelsCount","Boolean","previousTableColumn","isStubColumn","isColumnVisible","visibleBound","headerChain","currentColumnChain","columnVisibleBoundary","bandStart","bandEnd","emptyVirtualRows","pluckSubarray","sourceStart","recalculateBounds","middleIndex","currentPageIndex","rowToPageIndex","prevPageIndex","nextPageIndex","trimRowsToInterval","targetInterval","rowsInterval","getRowsInterval","intersection","getAvailableRowCount","isInfiniteScroll","lastRowCount","getRequestMeta","intervalEnd","getForceReloadInterval","newRange","loadedInterval","abs","calculatedRange","difference","correctRequestedRange","calculateRequestedRange","needFetchMorePages","topTriggerIndex","bottomTriggerIndex","getReferenceIndex","shouldSendRequest","requestedPageIndex","NEGATIVE_INFINITY","r","getLength","tableRowsWithBands","tableDataColumns","tableBandHeaders","getMaxNestedLevel","isDataColumn","dataColumn","tableHeaderColumnChainsWithBands","maxBandRowIndex","rawBandChains","currentBand","getBandLevels","columnsBands","columnBandLevels","rowsWithBands","visibleIntervals","getVisibleBandsByLevel","interval","isBandChainVisible","prevExpanded","TABLE_DETAIL_TYPE","isDetailRowExpanded","isDetailToggleTableCell","isDetailTableRow","isDetailTableCell","tableRowsWithExpandedDetail","expandedRowId","insertIndex","tableColumnsWithDetail","tableDetailCellColSpanGetter","TABLE_SELECT_TYPE","isSelectTableCell","isSelectAllTableCell","isRowHighlighted","tableColumnsWithSelection","isDataTableCell","isHeaderStubTableCell","isDataTableRow","isNoDataTableRow","isNoDataTableCell","isStubTableCell","checkTableColumnExtensions","getColumnExtension","getColumnExtensionValueGetter","extensionName","extensionValue","tableColumnsWithDataRows","wordWrapEnabled","tableRowsWithDataRows","isRemoteRowsLoading","dataIndex","tableCellColSpanGetter","visibleTableColumns","tableDataColumnsExist","columnChooserItems","toggleColumn","hiddenColumn","GRID_TREE_NODE_TYPE","customTreeRowsWithMeta","rowsToProcess","treeRows","currentRow","nestedRows","childRow","leaf","treeMeta","customTreeRowIdGetter","firstNestedRowIndex","customTreeRowLevelKeyGetter","rowMeta","expandedTreeRows","expandedRowIdsSet","currentExpanded","currentLevel","lastRow","collapsedItems","collapsedTreeRowsGetter","isTreeRowLeafGetter","getTreeRowLevelGetter","unwrappedCustomTreeRows","isTreeTableCell","prevSearchValue","searchFilterExpression","selfFilterExpression","getAvailableFilterOperationsGetter","FIXED_COLUMN_LEFT_SIDE","TABLE_FIXED_TYPE","getFixedColumnKeys","fixedNames","isFixedTableRow","calculateFixedColumnProps","targetArray","fixedIndex","columnChain","calculatePosition","tableColumnsWithFixed","tableHeaderRowsWithFixed","tableHeaderColumnChainsWithFixed","currentGroup","defaultSummaryCalculators","getValue","defaultSummaryCalculator","summaryCalculator","rowsSummary","summaryItems","expandRows","includeGroupRow","shouldIncludeRow","plainRows","getLevelIndex","anyRowLevelSummaryExist","rowsToAppend","TABLE_TOTAL_SUMMARY_TYPE","TABLE_GROUP_SUMMARY_TYPE","TABLE_TREE_SUMMARY_TYPE","defaultFormatlessSummaries","isTotalSummaryTableCell","isGroupSummaryTableCell","isTreeSummaryTableCell","isTotalSummaryTableRow","isGroupSummaryTableRow","isTreeSummaryTableRow","getColumnSummaries","summaryValues","isFooterSummary","isInlineGroupCaptionSummary","getGroupInlineSummaries","tableRowsWithTotalSummaries","tableRowsWithSummaries","hasGroupFooterSummary","groupFooterSummaryExists","closeLevel","prepareGroupSummaryItems","styleLeft","styleRight","calculatedLeft","isFixed","tableContainer","nodeName","parentNode","calculatedRight","getTableColumnGeometries","freeSpacePortion","accum","lastRightPosition","getTableTargetColumnIndex","columnGeometries","getAnimationProgress","animation","getTime","startTime","getAnimations","nextColumns","prevAnimations","prevColumnGeometries","geometry","progress","nextColumnGeometries","takePrevColumnIntoAccount","filterActiveAnimations","evalAnimations","isOnTheSameLine","rectToObject","getGroupCellTargetIndex","geometries","sourceIndex","targetGeometries","sourceWidth","getWidthDifference","leftBorder","rightBorder","getTargetColumnGeometries","collapseGapsBetweenItems","inVerticalBounds","inHorizontalBounds","shouldGoFirst","shouldGoOnLineBreak","arraysEqual","arrA","arrB","comparator","getViewport","getColumnBoundaries","checkColumnWidths","getScrollTop","rowsCount","calculateScrollHeight","getTopRowId","hasViewportRows","hasBodyRows","virtualRowsWithCache","cacheInterval","cacheRows","rowsStart","cacheStart","chunk","mergeRows","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","instance","_inheritsLoose"],"mappings":"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","file":"static/js/34.b4c80aa5.chunk.js","sourcesContent":["import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import * as React from 'react';\nimport { PluginHost, PluginPositionFn } from '@devexpress/dx-core';\n\n/** @internal */\nexport interface TemplateHostInterface {\n params(...args): any;\n templates(...args): any;\n}\n\n/** @internal */\nexport const PluginHostContext = React.createContext(null);\n/** @internal */\nexport const PositionContext = React.createContext(() => []);\n/** @internal */\nexport const TemplateHostContext = React.createContext(null);\n","import * as React from 'react';\nimport { PluginPositionFn } from '@devexpress/dx-core';\nimport { PositionContext } from './contexts';\n\ntype MemoizedPluginPositionFn =\n (index: number, positionContext: PluginPositionFn) => PluginPositionFn;\n\ntype PluginIndexerProps = {\n children: React.ReactNode;\n};\n\n/** @internal */\nexport class PluginIndexer extends React.PureComponent {\n indexes: { [index: number]: PluginPositionFn } = {};\n memoize: MemoizedPluginPositionFn = (index, positionContext) => {\n if (this.indexes[index]) return this.indexes[index];\n\n const fn: PluginPositionFn = () => {\n const calculatedPosition = positionContext();\n return [...calculatedPosition, index];\n };\n this.indexes[index] = fn;\n\n return fn;\n }\n render() {\n const { children } = this.props;\n return (\n \n {positionContext => (\n React.Children.map(children, (child: any, index: number) => {\n if (!child || !child.type) return child;\n const childPosition = this.memoize(index, positionContext);\n\n return (\n \n {child}\n \n );\n })\n )}\n \n );\n }\n}\n","/** @internal */\nexport const PLUGIN_HOST_CONTEXT = 'dxcore_pluginHost_context';\n/** @internal */\nexport const POSITION_CONTEXT = 'dxcore_position_context';\n/** @internal */\nexport const TEMPLATE_HOST_CONTEXT = 'dxcore_templateHost_context';\n\n/** @internal */\nexport const RERENDER_TEMPLATE_EVENT = Symbol('rerenderTemplate');\n/** @internal */\nexport const RERENDER_TEMPLATE_SCOPE_EVENT = Symbol('rerenderTemplateScope');\n/** @internal */\nexport const UPDATE_CONNECTION_EVENT = Symbol('updateConnection');\n","import * as React from 'react';\nimport { PluginHostContext, PositionContext } from '../plugin-based/contexts';\nimport { PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from '../plugin-based/constants';\n\n/** @internal */\nexport const withContext = (Context, name) => Component => props => (\n \n {context => (\n \n )}\n \n);\n\n/** @internal */\nexport const withHostAndPosition = Component => withContext(\n PluginHostContext,\n PLUGIN_HOST_CONTEXT,\n)(withContext(PositionContext, POSITION_CONTEXT)(Component));\n","import * as React from 'react';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport { PluginIndexer } from './plugin-indexer';\nimport { PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { IDependency } from '../types';\n\nexport interface PluginProps {\n /** React elements that expose the plugin's state and actions and render the plugin's UI. */\n children: React.ReactNode;\n name?: string;\n dependencies?: IDependency[];\n}\n\n/** @internal */\nexport class PluginBase extends React.PureComponent {\n plugin!: InnerPlugin;\n\n componentDidMount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: position } = this.props;\n const { name, dependencies } = this.props;\n this.plugin = {\n position,\n name,\n dependencies,\n container: true,\n };\n pluginHost.registerPlugin(this.plugin);\n pluginHost.ensureDependencies();\n }\n\n componentDidUpdate() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n pluginHost.ensureDependencies();\n }\n\n componentWillUnmount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n pluginHost.unregisterPlugin(this.plugin);\n }\n\n render() {\n const { children } = this.props;\n return (\n \n {children}\n \n );\n }\n}\n\nexport const Plugin: React.ComponentType = withHostAndPosition(PluginBase);\n","import * as React from 'react';\nimport { shallowEqual } from '@devexpress/dx-core';\nimport {\n PLUGIN_HOST_CONTEXT, RERENDER_TEMPLATE_EVENT,\n TEMPLATE_HOST_CONTEXT, RERENDER_TEMPLATE_SCOPE_EVENT,\n} from './constants';\nimport { withContext } from '../utils/with-props-from-context';\nimport { PluginHostContext, TemplateHostContext, TemplateHostInterface } from './contexts';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { TemplateBase } from './template';\n\nexport interface TemplatePlaceholderProps {\n /** The name of a template to be rendered. */\n name?: string;\n /** An object passed to the related template. */\n params?: object;\n children?: (content) => any;\n}\ninterface TemplateHostContextProps {\n [TEMPLATE_HOST_CONTEXT: string]: TemplateHostInterface;\n}\n\ntype Props = TemplatePlaceholderProps & PluginContextProps & TemplateHostContextProps;\n\nconst getRenderingData = (props: Props): { params?: object, templates: TemplateBase[] } => {\n const { name, params } = props;\n if (name) {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = props;\n return {\n params,\n templates: pluginHost.collect(`${name}Template`)\n .filter(template => template.predicate(params))\n .reverse(),\n };\n }\n const { [TEMPLATE_HOST_CONTEXT]: templateHost } = props;\n return {\n params: params || templateHost.params(),\n templates: templateHost.templates(),\n };\n};\n\nclass TemplatePlaceholderBase extends React.Component {\n subscription = {\n [RERENDER_TEMPLATE_EVENT]: (id: number) => {\n if (this.template && this.template.id === id) {\n this.forceUpdate();\n }\n },\n [RERENDER_TEMPLATE_SCOPE_EVENT]: (name: string) => {\n const { name: propsName } = this.props;\n if (propsName === name) {\n this.forceUpdate();\n }\n },\n };\n template: TemplateBase | null = null;\n params?: object = {};\n\n componentDidMount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n pluginHost.registerSubscription(this.subscription);\n }\n\n shouldComponentUpdate(nextProps: Props) {\n const { params, templates } = getRenderingData(nextProps);\n const { children } = this.props;\n const [template] = templates;\n return children !== nextProps.children || this.template !== template\n || !shallowEqual(this.params, params);\n }\n\n componentWillUnmount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n pluginHost.unregisterSubscription(this.subscription);\n }\n\n render() {\n const { params, templates } = getRenderingData(this.props);\n\n this.params = params;\n [this.template] = templates;\n const restTemplates = templates.slice(1);\n\n let content: ((...args) => any) | null = null;\n if (this.template) {\n const { children: templateContent } = this.template;\n\n content = templateContent() || null;\n if (content && typeof content === 'function') {\n content = content(params);\n }\n }\n\n const { children: templatePlaceholder } = this.props;\n return (\n restTemplates,\n params: () => this.params,\n }}\n >\n {templatePlaceholder ? templatePlaceholder(content) : content}\n \n );\n }\n}\n\n/** A React component to which a related Template is rendered. */\nexport const TemplatePlaceholder: React.ComponentType = withContext(\n PluginHostContext, PLUGIN_HOST_CONTEXT,\n)(\n withContext(TemplateHostContext, TEMPLATE_HOST_CONTEXT)(TemplatePlaceholderBase),\n);\n","import * as React from 'react';\nimport { PluginHost as PluginHostCore } from '@devexpress/dx-core';\nimport { PluginIndexer } from './plugin-indexer';\nimport { TemplatePlaceholder } from './template-placeholder';\nimport { PluginHostContext } from './contexts';\n\nexport interface PluginHostProps {\n /** Plugin React elements. */\n children: React.ReactNode;\n}\n\n/** @internal */\nclass PluginHostBase extends React.PureComponent {\n host: PluginHostCore;\n\n constructor(props: PluginHostProps) {\n super(props);\n\n this.host = new PluginHostCore();\n }\n\n render() {\n const { children } = this.props;\n\n return (\n \n \n {children}\n \n \n \n );\n }\n}\n\nexport const PluginHost: React.ComponentType = PluginHostBase;\n","import { shallowEqual } from '@devexpress/dx-core';\n\n/** @internal */\nexport const getAvailableGetters = (\n pluginHost,\n getGetterValue = getterName => pluginHost.get(`${getterName}Getter`),\n) => {\n const trackedDependencies = {};\n\n let getters;\n if (typeof Proxy !== 'undefined') {\n getters = new Proxy({}, {\n get(target, prop) {\n if (typeof prop !== 'string') return undefined;\n const result = getGetterValue(prop);\n trackedDependencies[prop] = result;\n return result;\n },\n getOwnPropertyDescriptor(target, prop) {\n return {\n configurable: true,\n enumerable: true,\n value: this.get!(target as any, prop, undefined),\n };\n },\n ownKeys() {\n return pluginHost.knownKeys('Getter');\n },\n });\n } else {\n getters = pluginHost.knownKeys('Getter')\n .reduce((acc, getterName) => {\n Object.defineProperty(acc, getterName, {\n get: () => {\n const result = getGetterValue(getterName);\n trackedDependencies[getterName] = result;\n return result;\n },\n });\n return acc;\n }, {});\n }\n\n return { getters, trackedDependencies };\n};\n\n/** @internal */\nexport const isTrackedDependenciesChanged = (\n pluginHost,\n prevTrackedDependencies,\n getGetterValue = getterName => pluginHost.get(`${getterName}Getter`),\n) => {\n const trackedDependencies = Object.keys(prevTrackedDependencies)\n // tslint:disable-next-line: prefer-object-spread\n .reduce((acc, getterName) => Object.assign(acc, {\n [getterName]: getGetterValue(getterName),\n }), {});\n\n return !shallowEqual(prevTrackedDependencies, trackedDependencies);\n};\n\n/** @internal */\nexport const getAvailableActions = (\n pluginHost,\n getAction = actionName => pluginHost.collect(`${actionName}Action`).slice().reverse()[0],\n) => {\n let actions;\n if (typeof Proxy !== 'undefined') {\n actions = new Proxy({}, {\n get(target, prop) {\n if (typeof prop !== 'string') return undefined;\n return getAction(prop);\n },\n getOwnPropertyDescriptor(target, prop) {\n return {\n configurable: true,\n enumerable: true,\n value: this.get!(target as any, prop, undefined),\n };\n },\n ownKeys() {\n return pluginHost.knownKeys('Action');\n },\n });\n } else {\n actions = pluginHost.knownKeys('Action')\n .reduce((acc, actionName) => {\n Object.defineProperty(acc, actionName, {\n get: () => getAction(actionName),\n });\n return acc;\n }, {});\n }\n return actions;\n};\n","import * as React from 'react';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport {\n getAvailableGetters,\n getAvailableActions,\n} from './helpers';\nimport { PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { Getters, Actions } from '../types';\n\nexport interface ActionProps {\n /** The action name. */\n name: string;\n /** A function that is called when the action is executed. */\n action: (payload: any, getters: Getters, actions: Actions) => void;\n}\n\nclass ActionBase extends React.PureComponent {\n plugin: InnerPlugin;\n\n constructor(props) {\n super(props);\n\n const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: positionContext } = props;\n const { name } = props;\n\n this.plugin = {\n position: () => positionContext(),\n [`${name}Action`]: (params) => {\n const { action } = this.props;\n const { getters } = getAvailableGetters(\n pluginHost,\n getterName => pluginHost.get(`${getterName}Getter`, this.plugin),\n );\n let nextParams = params;\n const actions = getAvailableActions(\n pluginHost,\n actionName => (actionName === name\n ? (newParams) => { nextParams = newParams; }\n : pluginHost.collect(`${actionName}Action`, this.plugin).slice().reverse()[0]),\n );\n action(params, getters, actions);\n const nextAction = pluginHost.collect(`${name}Action`, this.plugin).slice().reverse()[0];\n if (nextAction) {\n nextAction(nextParams);\n }\n },\n };\n\n pluginHost.registerPlugin(this.plugin);\n }\n\n componentWillUnmount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n pluginHost.unregisterPlugin(this.plugin);\n }\n\n render() {\n return null;\n }\n}\n\nexport const Action: React.ComponentType = withHostAndPosition(ActionBase);\n","import * as React from 'react';\nimport {\n isTrackedDependenciesChanged,\n getAvailableGetters,\n getAvailableActions,\n} from './helpers';\nimport { UPDATE_CONNECTION_EVENT, PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { ComputedFn } from '../types';\n\nexport interface GetterProps {\n /** The Getter's name. */\n name: string;\n /** The shared value. */\n value?: any;\n /*** A function that calculates a value depending on the values other Getters expose.\n * The value is computed each time a related Getter's value changes.\n * Applies only if `value` is not defined.\n */\n computed?: ComputedFn;\n}\n\nclass GetterBase extends React.PureComponent {\n plugin: InnerPlugin;\n\n constructor(props) {\n super(props);\n\n const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: positionContext } = props;\n const { name } = props;\n\n let lastComputed;\n let lastTrackedDependencies = {};\n let lastResult;\n\n this.plugin = {\n position: () => positionContext(),\n [`${name}Getter`]: (original) => {\n const { value, computed } = this.props;\n if (computed === undefined) return value;\n\n const getGetterValue = getterName => ((getterName === name)\n ? original\n : pluginHost.get(`${getterName}Getter`, this.plugin));\n\n if (computed === lastComputed\n && !isTrackedDependenciesChanged(pluginHost, lastTrackedDependencies, getGetterValue)) {\n return lastResult;\n }\n\n const { getters, trackedDependencies } = getAvailableGetters(pluginHost, getGetterValue);\n const actions = getAvailableActions(pluginHost);\n\n lastComputed = computed;\n lastTrackedDependencies = trackedDependencies;\n lastResult = computed(getters, actions);\n return lastResult;\n },\n };\n\n pluginHost.registerPlugin(this.plugin);\n }\n\n componentDidUpdate() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n pluginHost.broadcast(UPDATE_CONNECTION_EVENT);\n }\n\n componentWillUnmount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n pluginHost.unregisterPlugin(this.plugin);\n }\n\n render() {\n return null;\n }\n}\n\nexport const Getter: React.ComponentType = withHostAndPosition(GetterBase);\n","import * as React from 'react';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport {\n PLUGIN_HOST_CONTEXT, POSITION_CONTEXT,\n RERENDER_TEMPLATE_EVENT, RERENDER_TEMPLATE_SCOPE_EVENT,\n} from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { PluginContextProps } from './plugin-context-prop-types';\n\nexport interface TemplateProps {\n // tslint:disable-next-line:max-line-length\n /** The template name. The `root` name is reserved. A template called `root` is rendered as the plugin based component's root. */\n name: string;\n // tslint:disable-next-line:max-line-length\n /** A predicate function that returns a Boolean value that specifies whether the template should be rendered. */\n predicate?: (params: object) => boolean;\n /** A markup or function that returns a markup based on the specified parameters. */\n children: React.ReactNode | ((params: object) => React.ReactNode);\n}\n\nlet globalTemplateId = 0;\n/** @internal */\nexport class TemplateBase extends React.PureComponent {\n id: number;\n plugin: InnerPlugin;\n children: () => any;\n\n constructor(props) {\n super(props);\n\n this.children = () => void 0;\n\n globalTemplateId += 1;\n this.id = globalTemplateId;\n\n const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: positionContext } = props;\n const { name, predicate } = props;\n\n this.plugin = {\n position: () => positionContext(),\n [`${name}Template`]: {\n id: this.id,\n predicate: params => (predicate ? predicate(params) : true),\n children: () => {\n const { children } = this.props;\n return children;\n },\n },\n };\n pluginHost.registerPlugin(this.plugin);\n pluginHost.broadcast(RERENDER_TEMPLATE_SCOPE_EVENT, name);\n }\n\n componentDidUpdate() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n pluginHost.broadcast(RERENDER_TEMPLATE_EVENT, this.id);\n }\n\n componentWillUnmount() {\n const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n const { name } = this.props;\n pluginHost.unregisterPlugin(this.plugin);\n pluginHost.broadcast(RERENDER_TEMPLATE_SCOPE_EVENT, name);\n }\n\n render() {\n return null;\n }\n}\n\n/*** A React component that defines a markup that is rendered\n * as the corresponding TemplatePlaceholder.\n */\nexport const Template: React.ComponentType = withHostAndPosition(TemplateBase);\n","import * as React from 'react';\nimport { UPDATE_CONNECTION_EVENT } from './constants';\nimport {\n isTrackedDependenciesChanged,\n getAvailableGetters,\n getAvailableActions,\n} from './helpers';\nimport { PluginHostContext } from './contexts';\nimport { Getters, Actions } from '../types';\n\nexport interface TemplateConnectorProps {\n /** A function that renders a markup using Getters and Actions passed as arguments. */\n children: (\n getters: Getters,\n actions: Actions,\n ) => React.ReactNode;\n}\n\n/** @internal */\nclass TemplateConnectorBase extends React.Component {\n trackedDependencies: { [key: string]: { get: (args) => any }};\n subscription: { [UPDATE_CONNECTION_EVENT: string]: (args) => void };\n\n constructor(props, context) {\n super(props, context);\n\n this.trackedDependencies = {};\n this.subscription = {\n [UPDATE_CONNECTION_EVENT]: () => this.updateConnection(),\n };\n }\n\n componentDidMount() {\n const pluginHost = this.context;\n pluginHost.registerSubscription(this.subscription);\n }\n\n componentWillUnmount() {\n const pluginHost = this.context;\n pluginHost.unregisterSubscription(this.subscription);\n }\n\n updateConnection() {\n const pluginHost = this.context;\n\n if (isTrackedDependenciesChanged(pluginHost, this.trackedDependencies)) {\n this.forceUpdate();\n }\n }\n\n render() {\n const pluginHost = this.context;\n const { children } = this.props;\n\n const { getters, trackedDependencies } = getAvailableGetters(pluginHost);\n this.trackedDependencies = trackedDependencies;\n const actions = getAvailableActions(pluginHost);\n\n return children(getters, actions);\n }\n}\n\nTemplateConnectorBase.contextType = PluginHostContext;\n\n/** A React component that provides access to Getters and Actions within a Template. */\nexport const TemplateConnector: React.ComponentType = TemplateConnectorBase;\n","/* globals document:true */\n\nlet gestureCover: HTMLElement;\n/** @internal */\nexport const toggleGestureCover = (toggle, cursor?) => {\n let style: React.CSSProperties = {\n pointerEvents: toggle ? 'all' : 'none',\n };\n if (toggle && cursor) {\n style = {\n ...style,\n cursor,\n };\n }\n if (!gestureCover) {\n style = {\n ...style,\n position: 'fixed',\n top: 0,\n right: 0,\n left: 0,\n bottom: 0,\n opacity: 0,\n zIndex: 2147483647,\n };\n\n gestureCover = document.createElement('div');\n document.body.appendChild(gestureCover);\n }\n Object.keys(style).forEach((key) => { gestureCover.style[key] = style[key]; });\n};\n","/* globals window:true */\n\nimport { EventEmitter } from '@devexpress/dx-core';\n\nlet eventEmitter;\n/** @internal */\nexport const getSharedEventEmitter = () => {\n if (!eventEmitter) {\n eventEmitter = new EventEmitter();\n\n ['mousemove', 'mouseup', 'touchmove', 'touchend', 'touchcancel']\n .forEach(name => window.addEventListener(\n name, e => eventEmitter.emit([name, e]), { passive: false },\n ));\n }\n return eventEmitter;\n};\n","const TIMEOUT = 180;\n\n/** @internal */\nexport class TouchStrategy {\n delegate: any;\n touchStartTimeout: any;\n dragging: boolean;\n mouseInitialOffset: null;\n\n constructor(delegate) {\n this.delegate = delegate;\n this.touchStartTimeout = null;\n this.dragging = false;\n }\n\n isDragging() {\n return this.dragging;\n }\n\n isWaiting() {\n return !!this.touchStartTimeout;\n }\n\n cancelWaiting() {\n clearTimeout(this.touchStartTimeout);\n this.touchStartTimeout = undefined;\n }\n\n start(e) {\n const { clientX: x, clientY: y } = e.touches[0];\n this.touchStartTimeout = setTimeout(() => {\n this.delegate.onStart({ x, y });\n this.dragging = true;\n }, TIMEOUT);\n }\n\n move(e) {\n this.cancelWaiting();\n if (this.dragging) {\n const { clientX, clientY } = e.touches[0];\n e.preventDefault();\n this.delegate.onMove({ x: clientX, y: clientY });\n }\n }\n\n end(e) {\n this.cancelWaiting();\n if (this.dragging) {\n const { clientX, clientY } = e.changedTouches[0];\n this.delegate.onEnd({ x: clientX, y: clientY });\n }\n this.mouseInitialOffset = null;\n this.dragging = false;\n }\n}\n","/* globals document:true window:true */\n\n/** @internal */\nexport const clear = () => {\n const selection = window.getSelection && window.getSelection();\n\n if (selection) {\n if (selection.empty) {\n selection.empty();\n } else if (selection.removeAllRanges) {\n selection.removeAllRanges();\n }\n }\n};\n","/* globals window:true document:true */\n\nimport { toggleGestureCover } from './gesture-cover';\nimport { clear } from './selection-utils';\n\nconst BOUNDARY = 10;\nconst clamp = (value, min, max) => Math.max(Math.min(value, max), min);\nconst isBoundExceeded = (\n { x: initialX, y: initialY }, { x, y },\n) => clamp(x, initialX - BOUNDARY, initialX + BOUNDARY) !== x\n || clamp(y, initialY - BOUNDARY, initialY + BOUNDARY) !== y;\n\n/** @internal */\nexport class MouseStrategy {\n delegate: any;\n mouseInitialOffset: any;\n dragging: boolean;\n e: any;\n\n constructor(delegate) {\n this.delegate = delegate;\n this.mouseInitialOffset = null;\n this.dragging = false;\n }\n\n isDragging() {\n return this.dragging;\n }\n\n start(e) {\n const { clientX: x, clientY: y } = e;\n this.e = e;\n this.mouseInitialOffset = { x, y };\n }\n\n move(e) {\n const { clientX: x, clientY: y } = e;\n let dragStarted = false;\n if (!this.dragging && this.mouseInitialOffset) {\n if (isBoundExceeded(this.mouseInitialOffset, { x, y })) {\n this.delegate.onStart(this.mouseInitialOffset);\n clear();\n dragStarted = true;\n this.dragging = true;\n }\n }\n if (this.dragging) {\n e.preventDefault();\n this.delegate.onMove({ x, y });\n }\n if (dragStarted) {\n const element = document.elementFromPoint(x, y);\n const cursor = element ? window.getComputedStyle(element).cursor : null;\n toggleGestureCover(true, cursor);\n }\n }\n\n end(e) {\n if (this.dragging) {\n const { clientX: x, clientY: y } = e;\n toggleGestureCover(false);\n this.delegate.onEnd({ x, y });\n }\n this.mouseInitialOffset = null;\n this.dragging = false;\n }\n}\n","import * as React from 'react';\nimport { unstable_batchedUpdates, findDOMNode } from 'react-dom';\nimport { TouchStrategy } from './draggable/touch-strategy';\nimport { MouseStrategy } from './draggable/mouse-strategy';\nimport { getSharedEventEmitter } from './draggable/shared-events';\nimport { clear } from './draggable/selection-utils';\n\nconst draggingHandled = Symbol('draggingHandled');\n\ntype DraggableProps = {\n onStart?: (args) => void;\n onUpdate?: (args) => void;\n onEnd?: (args) => void;\n};\n\n/** @internal */\nexport class Draggable extends React.Component {\n mouseStrategy: MouseStrategy;\n touchStrategy: TouchStrategy;\n\n constructor(props, context) {\n super(props, context);\n const delegate = {\n onStart: ({ x, y }) => {\n const { onStart } = this.props;\n if (!onStart) return;\n unstable_batchedUpdates(() => {\n onStart({ x, y });\n });\n },\n onMove: ({ x, y }) => {\n const { onUpdate } = this.props;\n if (!onUpdate) return;\n unstable_batchedUpdates(() => {\n onUpdate({ x, y });\n });\n },\n onEnd: ({ x, y }) => {\n const { onEnd } = this.props;\n if (!onEnd) return;\n unstable_batchedUpdates(() => {\n onEnd({ x, y });\n });\n },\n };\n\n this.mouseStrategy = new MouseStrategy(delegate);\n this.touchStrategy = new TouchStrategy(delegate);\n\n this.mouseDownListener = this.mouseDownListener.bind(this);\n this.touchStartListener = this.touchStartListener.bind(this);\n this.globalListener = this.globalListener.bind(this);\n }\n\n componentDidMount() {\n getSharedEventEmitter().subscribe(this.globalListener);\n this.setupNodeSubscription();\n }\n\n shouldComponentUpdate(nextProps) {\n const { children } = this.props;\n return nextProps.children !== children;\n }\n\n componentDidUpdate() {\n this.setupNodeSubscription();\n }\n\n componentWillUnmount() {\n getSharedEventEmitter().unsubscribe(this.globalListener);\n }\n\n setupNodeSubscription() {\n const node = findDOMNode(this) as Element;\n if (!node) return;\n node.removeEventListener('mousedown', this.mouseDownListener);\n node.removeEventListener('touchstart', this.touchStartListener);\n node.addEventListener('mousedown', this.mouseDownListener);\n node.addEventListener('touchstart', this.touchStartListener, { passive: true });\n }\n\n mouseDownListener(e) {\n if (this.touchStrategy.isWaiting() || e[draggingHandled]) return;\n e.preventDefault();\n this.mouseStrategy.start(e);\n e[draggingHandled] = true;\n }\n\n touchStartListener(e) {\n if (e[draggingHandled]) return;\n this.touchStrategy.start(e);\n e[draggingHandled] = true;\n }\n\n globalListener([name, e]) {\n switch (name) {\n case 'mousemove':\n this.mouseStrategy.move(e);\n break;\n case 'mouseup':\n this.mouseStrategy.end(e);\n break;\n case 'touchmove': {\n this.touchStrategy.move(e);\n break;\n }\n case 'touchend':\n case 'touchcancel': {\n this.touchStrategy.end(e);\n break;\n }\n default:\n break;\n }\n if (this.mouseStrategy.isDragging() || this.touchStrategy.isDragging()) {\n clear();\n }\n }\n\n render() {\n const { children } = this.props;\n return children;\n }\n}\n","import * as React from 'react';\nimport { DragDropProviderCore } from './provider';\n\n/** @internal */\nexport const DragDropContext = React.createContext(null);\n","import * as React from 'react';\n\nimport { EventEmitter } from '@devexpress/dx-core';\nimport { DragDropContext } from './context';\n\n/** @internal */\nexport class DragDropProviderCore {\n payload: null;\n dragEmitter: EventEmitter;\n\n constructor() {\n this.payload = null;\n this.dragEmitter = new EventEmitter();\n }\n\n start(payload, clientOffset) {\n this.payload = payload;\n this.dragEmitter.emit({ clientOffset, payload: this.payload });\n }\n\n update(clientOffset) {\n this.dragEmitter.emit({ clientOffset, payload: this.payload });\n }\n\n end(clientOffset) {\n this.dragEmitter.emit({ clientOffset, payload: this.payload, end: true });\n this.payload = null;\n }\n}\n\nconst defaultProps = {\n onChange: ({ payload, clientOffset }) => {},\n};\ntype DragDropProviderDefaultProps = Readonly;\ntype DragDropProviderProps = Partial;\n\n/** @internal */\n// tslint:disable-next-line: max-classes-per-file\nexport class DragDropProvider extends React.Component<\n DragDropProviderProps & DragDropProviderDefaultProps\n> {\n static defaultProps = defaultProps;\n dragDropProvider: DragDropProviderCore;\n\n constructor(props) {\n super(props);\n const { onChange } = this.props;\n\n this.dragDropProvider = new DragDropProviderCore();\n\n this.dragDropProvider.dragEmitter.subscribe(({ payload, clientOffset, end }) => {\n onChange({\n payload: end ? null : payload,\n clientOffset: end ? null : clientOffset,\n });\n });\n }\n\n shouldComponentUpdate(nextProps) {\n const { children } = this.props;\n return nextProps.children !== children;\n }\n\n render() {\n const { children } = this.props;\n return (\n \n {children}\n \n );\n }\n}\n","import * as React from 'react';\nimport { DragDropContext } from './context';\nimport { Draggable } from '../draggable';\n\nconst defaultProps = {\n onStart: ({ clientOffset }) => {},\n onUpdate: ({ clientOffset }) => {},\n onEnd: ({ clientOffset }) => {},\n};\ntype DragSourceDefaultProps = Readonly;\ntype DragSourceProps = {\n payload: any;\n} & Partial;\n\n/** @internal */\nexport class DragSource extends React.Component {\n static defaultProps = defaultProps;\n\n shouldComponentUpdate(nextProps) {\n const { children } = this.props;\n return nextProps.children !== children;\n }\n\n render() {\n const dragDropProvider = this.context;\n const {\n onStart, onUpdate, onEnd, payload, children,\n } = this.props;\n return (\n {\n dragDropProvider.start(payload, { x, y });\n onStart({ clientOffset: { x, y } });\n }}\n onUpdate={({ x, y }) => {\n dragDropProvider.update({ x, y });\n onUpdate({ clientOffset: { x, y } });\n }}\n onEnd={({ x, y }) => {\n dragDropProvider.end({ x, y });\n onEnd({ clientOffset: { x, y } });\n }}\n >\n {children}\n \n );\n }\n}\nDragSource.contextType = DragDropContext;\n","import * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport { DragDropContext } from './context';\n\nconst clamp = (value, min, max) => Math.max(Math.min(value, max), min);\n\nconst defaultProps = {\n onEnter: (args) => {},\n onOver: (args) => {},\n onLeave: (args) => {},\n onDrop: (args) => {},\n};\ntype DropTargetDefaultProps = Readonly;\n\n/** @internal */\nexport class DropTarget extends React.Component {\n static defaultProps = defaultProps;\n isOver: boolean;\n\n constructor(props) {\n super(props);\n\n this.isOver = false;\n\n this.handleDrag = this.handleDrag.bind(this);\n }\n\n componentDidMount() {\n const { dragEmitter } = this.context;\n dragEmitter.subscribe(this.handleDrag);\n }\n\n shouldComponentUpdate(nextProps) {\n const { children } = this.props;\n return nextProps.children !== children;\n }\n\n componentWillUnmount() {\n const { dragEmitter } = this.context;\n dragEmitter.unsubscribe(this.handleDrag);\n }\n\n handleDrag({ payload, clientOffset, end }) {\n const {\n left,\n top,\n right,\n bottom,\n } = (findDOMNode(this) as Element).getBoundingClientRect();\n const {\n onDrop, onEnter, onLeave, onOver,\n } = this.props;\n const isOver = clientOffset\n && clamp(clientOffset.x, left, right) === clientOffset.x\n && clamp(clientOffset.y, top, bottom) === clientOffset.y;\n\n if (!this.isOver && isOver) onEnter({ payload, clientOffset });\n if (this.isOver && isOver) onOver({ payload, clientOffset });\n if (this.isOver && !isOver) onLeave({ payload, clientOffset });\n if (isOver && end) onDrop({ payload, clientOffset });\n\n this.isOver = isOver && !end;\n }\n\n render() {\n const { children } = this.props;\n return React.Children.only(children);\n }\n}\n\nDropTarget.contextType = DragDropContext;\n","import * as React from 'react';\n\n/** @internal */\nexport class RefHolder extends React.PureComponent {\n render() {\n const { children } = this.props;\n return children;\n }\n}\n","/* globals document:true */\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport { RefHolder } from './ref-holder';\nimport { SizerProps, Size } from './types';\n\nconst styles = {\n root: {\n position: 'relative',\n },\n triggersRoot: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n zIndex: -1,\n visibility: 'hidden',\n opacity: 0,\n },\n expandTrigger: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n overflow: 'auto',\n },\n contractTrigger: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n overflow: 'auto',\n minHeight: '1px',\n minWidth: '1px',\n },\n contractNotifier: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '200%',\n height: '200%',\n minHeight: '2px',\n minWidth: '2px',\n },\n};\n\n/** @internal */\nexport class Sizer extends React.PureComponent {\n static defaultProps = {\n containerComponent: 'div',\n };\n\n rootRef: React.RefObject;\n // Though there properties cannot be assigned in constructor\n // they will be assigned when component is mount.\n rootNode!: HTMLElement;\n triggersRoot!: HTMLDivElement;\n expandTrigger!: HTMLDivElement;\n expandNotifier!: HTMLDivElement;\n contractTrigger!: HTMLDivElement;\n contractNotifier!: HTMLDivElement;\n\n constructor(props) {\n super(props);\n\n this.setupListeners = this.setupListeners.bind(this);\n this.rootRef = React.createRef();\n }\n\n componentDidMount() {\n this.createListeners();\n this.setupListeners();\n }\n\n componentDidUpdate() {\n // We can scroll the VirtualTable manually only by changing\n // containter's (rootNode) scrollTop property.\n // Viewport changes its own properties automatically.\n const { scrollTop } = this.props;\n if (scrollTop! > -1) {\n this.rootNode.scrollTop = scrollTop!;\n }\n }\n\n // There is no need to remove listeners as divs are removed from DOM when component is unmount.\n // But there is a little chance that component unmounting and 'scroll' event happen roughly\n // at the same time so that `setupListeners` is called after component is unmount.\n componentWillUnmount() {\n this.expandTrigger.removeEventListener('scroll', this.setupListeners);\n this.contractTrigger.removeEventListener('scroll', this.setupListeners);\n }\n\n getSize = (): Size => ({ height: this.rootNode.clientHeight, width: this.rootNode.clientWidth });\n\n setupListeners() {\n const size = this.getSize();\n const { width, height } = size;\n\n this.contractTrigger.scrollTop = height;\n this.contractTrigger.scrollLeft = width;\n\n const scrollOffset = 2;\n this.expandNotifier.style.width = `${width + scrollOffset}px`;\n this.expandNotifier.style.height = `${height + scrollOffset}px`;\n this.expandTrigger.scrollTop = scrollOffset;\n this.expandTrigger.scrollLeft = scrollOffset;\n\n const { onSizeChange } = this.props;\n onSizeChange(size);\n }\n\n createListeners() {\n this.rootNode = findDOMNode(this.rootRef.current!) as HTMLElement;\n\n this.triggersRoot = document.createElement('div');\n Object.assign(this.triggersRoot.style, styles.triggersRoot);\n this.rootNode.appendChild(this.triggersRoot);\n\n this.expandTrigger = document.createElement('div');\n Object.assign(this.expandTrigger.style, styles.expandTrigger);\n this.expandTrigger.addEventListener('scroll', this.setupListeners);\n this.triggersRoot.appendChild(this.expandTrigger);\n\n this.expandNotifier = document.createElement('div');\n this.expandTrigger.appendChild(this.expandNotifier);\n\n this.contractTrigger = document.createElement('div');\n Object.assign(this.contractTrigger.style, styles.contractTrigger);\n this.contractTrigger.addEventListener('scroll', this.setupListeners);\n this.triggersRoot.appendChild(this.contractTrigger);\n\n this.contractNotifier = document.createElement('div');\n Object.assign(this.contractNotifier.style, styles.contractNotifier);\n this.contractTrigger.appendChild(this.contractNotifier);\n }\n\n render() {\n const {\n onSizeChange,\n containerComponent: Container,\n style,\n scrollTop,\n ...restProps\n } = this.props;\n\n return (\n \n \n \n );\n }\n}\n","import * as React from 'react';\n\ntype RenderComponentProps = {\n update: () => void;\n};\n\n/*** A function that creates a new component that allows you to pass additional properties\n * to the wrapped component.\n */\nexport const connectProps = (\n WrappedComponent: React.ComponentType, getAdditionalProps: () => object,\n): React.ComponentType & { update(): void } => {\n let storedAdditionalProps = getAdditionalProps();\n const components = new Set();\n class RenderComponent extends React.PureComponent {\n static update: () => void;\n\n componentDidMount() {\n components.add(this);\n }\n\n componentWillUnmount() {\n components.delete(this);\n }\n\n render() {\n return ;\n }\n }\n RenderComponent.update = () => {\n storedAdditionalProps = getAdditionalProps();\n Array.from(components.values()).forEach(component => component.forceUpdate());\n };\n return RenderComponent;\n};\n","import { CreateStateHelperFn } from '../types';\n\n/** @internal */\nexport const createStateHelper: CreateStateHelperFn = (\n component, controlledStateProperties = {},\n) => {\n const notifyStateChange = (nextState, state) => {\n Object.keys(controlledStateProperties).forEach((propertyName) => {\n const changeEvent = controlledStateProperties[propertyName]();\n if (changeEvent && nextState[propertyName] !== state[propertyName]) {\n changeEvent(nextState[propertyName]);\n }\n });\n };\n\n let lastStateUpdater: (state) => void;\n let initialState = null;\n let lastInitialState = null;\n let newState = null;\n let shouldNotify = false;\n\n const applyReducer = (reduce, payload?, callback?) => {\n const stateUpdater = (prevState) => {\n if (initialState === null) {\n initialState = prevState;\n }\n const stateChange = reduce({ ...prevState }, payload);\n const state = { ...prevState, ...stateChange };\n\n if (typeof callback === 'function') {\n callback(state, prevState);\n }\n if (stateUpdater === lastStateUpdater) {\n if (lastInitialState !== initialState) {\n newState = state;\n if (!shouldNotify) {\n lastInitialState = initialState;\n shouldNotify = true;\n }\n }\n initialState = null;\n }\n\n return stateChange;\n };\n lastStateUpdater = stateUpdater;\n\n component.setState(stateUpdater, () => {\n if (shouldNotify) {\n notifyStateChange(newState, lastInitialState);\n shouldNotify = false;\n }\n });\n };\n const applyFieldReducer = (field, reduce, payload) => {\n applyReducer(state => ({\n [field]: reduce(state[field], payload),\n }));\n };\n\n return {\n applyReducer,\n applyFieldReducer,\n };\n};\n","import * as React from 'react';\n\nconst makeBoundComponent = (Target, components, exposed: object) => {\n class Component extends React.PureComponent {\n static components: PluginComponents;\n\n render() {\n return ;\n }\n }\n Component.components = Target.components;\n Object.assign(Component, exposed);\n return Component;\n};\n\nexport type PluginComponents = { [key: string]: string };\nexport interface ITargetComponent {\n components: PluginComponents;\n}\n// type ITargetComponentStatic = new() => ITargetComponent;\n\n/** @internal */\nexport const withComponents = components => (Target) => {\n const props = {};\n const exposed = {};\n const targetComponents = (Target as ITargetComponent).components;\n\n Object.entries(targetComponents).forEach(([fieldName, componentName]: [string, string]) => {\n const component = components[componentName];\n if (component && component !== Target[componentName]) {\n props[fieldName] = component;\n }\n exposed[componentName] = component || Target[componentName];\n });\n\n return Object.keys(props).length > 0\n ? makeBoundComponent(Target, props, exposed) : Target;\n};\n","/* globals Element */\nimport * as PropTypes from 'prop-types';\n\n/** @internal */\nexport const RefType = PropTypes.shape({\n current: PropTypes.instanceOf((typeof Element !== 'undefined') ? Element : Object),\n});\n","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 \n \n \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 = React.memo(({\n rows,\n columns,\n getRowId,\n getCellValue,\n}) => (\n \n \n \n \n \n \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 \n \n \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 \n \n \n \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 \n \n \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 {\n render() {\n const {\n rootComponent: Root,\n ...restProps\n } = this.props;\n\n return (\n \n \n \n \n\n \n \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.SFC = ({\n rows,\n columns,\n getRowId,\n getCellValue,\n rootComponent,\n children,\n}) => (\n \n \n {children}\n \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 = 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 {\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 \n \n \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 = 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 {\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 \n \n \n \n \n \n );\n }\n}\n\n/** A plugin that manages the filtering state. */\nexport const FilteringState: React.ComponentType = 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 {\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 \n \n \n \n \n );\n }\n}\n\nIntegratedFilteringBase.defaultPredicate = defaultFilterPredicate;\n\nexport const IntegratedFiltering: React.ComponentType & {\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 {\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 \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \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 = EditingStateBase;\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 {\n render() {\n return (\n \n \n \n \n \n \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 = IntegratedPagingBase;\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 {\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 \n \n \n \n \n \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 = PagingStateBase;\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 {\n static defaultProps = {\n totalCount: 0,\n };\n\n render() {\n const { totalCount } = this.props;\n\n return (\n \n \n \n );\n }\n}\n\n/** A plugin that allows implementing a custom totalCount calculation logic. */\nexport const CustomPaging: React.ComponentType = 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 {\n static defaultProps = {\n defaultGrouping: [],\n defaultExpandedGroups: [],\n columnGroupingEnabled: true,\n };\n stateHelper: StateHelper;\n draftColumnGrouping: ActionFn;\n toggleGroupExpanded: ActionFn;\n cancelColumnGroupingDraft: ActionFn;\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 \n \n \n \n \n \n \n\n \n \n\n \n \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 = 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 {\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 \n \n \n \n \n \n \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 = 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 {\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 \n {appliedGrouping && (\n \n )}\n {appliedExpandedGroups && (\n \n )}\n \n \n \n \n \n \n \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 = CustomGroupingBase;\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 {\n render() {\n return (\n \n \n \n \n \n \n \n \n );\n }\n}\n\n/* tslint:disable: max-line-length */\n/** A plugin that performs built-in selection. */\nexport const IntegratedSelection: React.ComponentType = 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 { toggleSelection } from '@devexpress/dx-grid-core';\nimport { SelectionStateProps, SelectionStateState } from '../types';\n\nclass SelectionStateBase extends React.PureComponent {\n static defaultProps = {\n defaultSelection: [],\n };\n toggleSelection: ActionFn;\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 \n \n \n \n );\n }\n}\n\n/** A plugin that manages the selection state. */\nexport const SelectionState: React.ComponentType = SelectionStateBase;\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 {\n static defaultProps = {\n defaultSorting: [],\n columnSortingEnabled: true,\n };\n changeColumnSorting: ActionFn;\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 \n \n \n \n \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 = 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 {\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 \n \n \n );\n }\n}\n\n/** A plugin that performs built-in data sorting. */\nexport const IntegratedSorting: React.ComponentType = 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 {\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 \n \n \n \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 = DragDropProviderBase;\n","import * as React from 'react';\nimport {\n Getter,\n Plugin,\n Template,\n TemplatePlaceholder,\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 {\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 && this.cellDimensions.length)\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) {\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, getter: CellDimensionsGetter, tableColumns: ReadonlyArray) {\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 \n \n\n \n \n tableRow.type === TABLE_REORDERING_TYPE}\n >\n {params => (\n \n )}\n \n tableRow.type === TABLE_REORDERING_TYPE}\n >\n {(params: TableNS.CellProps) => (\n \n {({ tableColumns }: Getters) => (\n this.storeCellDimensionsGetter(\n params.tableColumn, getter, tableColumns,\n )}\n />\n )}\n \n )}\n \n \n );\n }\n}\n\nconst TableContainer = ({\n onOver, onLeave, onDrop, children, draggingEnabled,\n}) => (\n draggingEnabled ? (\n \n {children}\n \n ) : children\n);\n\n/** A plugin that manages the displayed columns' order. */\nexport const TableColumnReordering: React.ComponentType\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 = props => ;\nconst CellPlaceholder = 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 {\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 \n \n \n \n \n \n\n \n \n \n \n isDataTableCell(tableRow, tableColumn)}\n >\n {(params: TableNS.CellProps) => (\n \n {({ getCellValue }) => {\n const columnName = params.tableColumn.column!.name;\n const value = getCellValue(params.tableRow.row, columnName);\n return (\n \n {content => (\n \n {content}\n \n )}\n \n );\n }}\n \n )}\n \n !!isNoDataTableRow(tableRow)}\n >\n {(params: TableNS.CellProps) => (\n \n {({ tableColumns }) => {\n if (isNoDataTableCell(params.tableColumn, tableColumns)) {\n return (\n \n );\n }\n return null;\n }}\n \n )}\n \n \n !!isDataTableRow(tableRow)}\n >\n {(params: TableNS.RowProps) => (\n \n )}\n \n !!isNoDataTableRow(tableRow)}\n >\n {(params: TableNS.RowProps) => }\n \n \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 & {\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 {\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);\n\n return (\n \n {showSelectionColumn && (\n \n )}\n {highlightRow && (\n \n )}\n\n {(showSelectionColumn && showSelectAll) && (\n isSelectAllTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \n {({ selectAllAvailable, allSelected, someSelected }, { toggleSelectAll }) => (\n toggleSelectAll(select)}\n />\n )}\n \n )}\n \n )}\n {showSelectionColumn && (\n isSelectTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \n {({ selection }, { toggleSelection }) => (\n toggleSelection({ rowIds: [params.tableRow.rowId] })}\n />\n )}\n \n )}\n \n )}\n {(highlightRow || selectByRowClick) && (\n !!isDataTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n {({ selection }, { toggleSelection }) => (\n toggleSelection({ rowIds: [params.tableRow.rowId] })}\n />\n )}\n \n )}\n \n )}\n \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 & {\n /** The selection column type's indentifier. */\n COLUMN_TYPE: symbol;\n} = TableSelectionBase;\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 {\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 \n \n \n \n\n isDetailToggleTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \n {({ expandedDetailRowIds }, { toggleDetailRowExpanded }) => (\n toggleDetailRowExpanded({ rowId: params.tableRow.rowId })}\n />\n )}\n \n )}\n \n !!isDetailTableRow(tableRow)}\n >\n {(params: TableCellProps) => (\n \n {({ tableColumns }) => {\n if (isDetailTableCell(params.tableColumn, tableColumns)) {\n return (\n \n {Content && }\n \n );\n }\n return null;\n }}\n \n )}\n \n !!isDetailTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n )}\n \n \n );\n }\n}\n\n/** A plugin that renders detail rows. */\nexport const TableRowDetail: React.ComponentType & {\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","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 {\n static defaultProps = {\n defaultExpandedRowIds: [],\n };\n toggleDetailRowExpanded: ActionFn;\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 \n \n \n \n );\n }\n}\n\n/** A plugin that manages the expanded state for table row details. */\nexport const RowDetailState: React.ComponentType = RowDetailStateBase;\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.SFC = ({\n column, columnSummaries, formatlessSummaryTypes,\n itemComponent: Item,\n messages,\n}) => {\n const getMessage = getMessagesFormatter({ ...defaultSummaryMessages, ...messages });\n const SummaryItem: React.SFC = ({ summary, children }) => (\n \n {children || String(summary.value)}\n \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 \n {columnSummaries.map((summary) => {\n if (isFormatlessSummary(summary)) {\n return ;\n }\n return (\n \n {content => (\n \n {content}\n \n )}\n \n );\n })}\n \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 \n {content => content || summary.value}\n \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 {\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 \n \n \n \n\n isGroupTableRow(tableRow)}\n >\n {(params: TableCellProps) => (\n \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 \n {content => (\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 \n )}\n \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 \n );\n }\n return ;\n }\n if (isGroupIndentStubTableCell(params.tableRow, params.tableColumn, grouping)) {\n return ;\n }\n return null;\n }}\n \n )}\n \n (isGroupRowOrdinaryCell(tableRow, tableColumn))}\n >\n {(params: TableCellProps) => (\n \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 \n \n \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 ;\n }\n\n return ;\n }}\n \n )}\n \n isGroupTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n )}\n \n \n );\n }\n}\n\n/** A plugin that renders group rows and enables them to expand and collapse. */\nexport const TableGroupRow: React.ComponentType & {\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 {\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 \n \n\n isHeadingTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \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 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 \n \n {showSortingControls ? (\n {\n changeColumnSorting({ columnName, direction, keepOther });\n }}\n getMessage={getMessage}\n >\n \n {columnTitle || columnName}\n \n \n ) : (\n \n {columnTitle || columnName}\n \n )}\n \n {showGroupingControls ? (\n changeColumnGrouping({ columnName })}\n />\n ) : null}\n \n );\n }}\n \n )}\n \n !!isHeadingTableRow(tableRow)}\n >\n {(params: TableRowProps) => }\n \n \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 & {\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) => ;\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 {\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 \n \n {/* internal */}\n \n \n \n \n\n !!isBandedOrHeaderRow(tableRow)}\n >\n {(params: BandHeaderNS.CellProps) => (\n \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 ;\n\n case BAND_EMPTY_CELL:\n return ;\n\n case BAND_GROUP_CELL: {\n const { value, ...payload } = bandComponent.payload!;\n return (\n \n {value}\n \n );\n }\n\n case BAND_HEADER_CELL:\n return (\n \n );\n\n case BAND_FILL_LEVEL_CELL:\n return (\n \n {' '}\n \n );\n default:\n return null;\n }\n }}\n \n )}\n \n isHeadingTableCell(tableRow, tableColumn)}\n >\n {(params: BandHeaderNS.CellProps) => (\n \n )}\n \n !!isBandedTableRow(tableRow)}\n >\n {(params: TableRowProps) => }\n \n \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 & {\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 {\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 \n \n isFilterTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \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 \n {content => (\n \n {showFilterSelector\n ? (\n \n ) : null\n }\n {content || (\n \n )}\n \n )}\n \n );\n }}\n \n )}\n \n !!isFilterTableRow(tableRow)}\n >\n {(params: TableRowProps) => }\n \n \n );\n }\n}\n\n/** A plugin that renders a filter row. */\nexport const TableFilterRow: React.ComponentType & {\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 {\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 \n \n isEditTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \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 \n {content => (\n \n {content}\n \n )}\n \n );\n }}\n \n )}\n \n !!(isEditTableRow(tableRow) || isAddedTableRow(tableRow))}\n >\n {(params: TableRowProps) => (\n \n )}\n \n \n );\n }\n}\n\n/** A plugin that renders a row being edited. */\nexport const TableEditRow: React.ComponentType & {\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 {\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 \n \n\n isHeadingEditCommandsTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \n {(getters, actions) => (\n \n {showAddCommand && (\n actions.addRow()}\n />\n )}\n \n )}\n \n )}\n \n isEditCommandsTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \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 \n {showEditCommand && !isEditing && (\n actions.startEditRows({ rowIds })}\n />\n )}\n {showDeleteCommand && !isEditing && (\n {\n actions.deleteRows({ rowIds });\n actions.commitDeletedRows({ rowIds });\n }}\n />\n )}\n {isEditing && (\n {\n if (isNew) {\n actions.commitAddedRows({ rowIds });\n } else {\n actions.stopEditRows({ rowIds });\n actions.commitChangedRows({ rowIds });\n }\n }}\n />\n )}\n {isEditing && (\n {\n if (isNew) {\n actions.cancelAddedRows({ rowIds });\n } else {\n actions.stopEditRows({ rowIds });\n actions.cancelChangedRows({ rowIds });\n }\n }}\n />\n )}\n \n );\n }}\n \n )}\n \n \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 & {\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 {\n static defaultProps = {\n defaultColumnWidths: [],\n resizingMode: 'widget',\n };\n changeTableColumnWidth: ActionFn;\n draftTableColumnWidth: ActionFn;\n cancelTableColumnWidthDraft: ActionFn;\n storeWidthGetters: ActionFn;\n storeCache: (payload) => void;\n clearCache: () => void;\n tableColumnsComputed: MemoizedComputed;\n // tslint:disable-next-line: max-line-length\n tableColumnsDraftComputed: MemoizedComputed;\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 \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\n/* tslint:disable: max-line-length */\n/** A plugin that manages table column widths. */\nexport const TableColumnResizing: React.ComponentType = 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 } 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 {\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 \n \n \n );\n }\n}\n\n/** A plugin that renders the paging panel used for navigation through data pages. */\nexport const PagingPanel: React.ComponentType = 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 {\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 draggingEnabled,\n onDragStart,\n onDragEnd,\n } = this.props;\n const { dragging } = this.state;\n\n const itemElement = ;\n\n return (draggingEnabled ? (\n {\n this.setState({ dragging: true });\n onDragStart();\n }}\n onEnd={() => {\n this.setState({ dragging: false });\n onDragEnd();\n }}\n >\n {itemElement}\n \n ) : (\n itemElement\n ));\n }\n}\n","import * as React from 'react';\nimport { findDOMNode } 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 {\n static defaultProps = defaultProps;\n handleDragEvent: (...args: any) => void;\n onEnter: (any) => void;\n onOver: (any) => void;\n itemRefs: ItemLayout[] = [];\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 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 => (findDOMNode(ref) as HTMLElement).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 \n {items.map((item) => {\n const { name: columnName } = item.column;\n return (\n element && this.itemRefs.push(element)}\n item={item}\n itemComponent={Item}\n draggingEnabled={draggingEnabled && isColumnGroupingEnabled(columnName)}\n onDragStart={() => this.onDragStart(columnName)}\n onDragEnd={this.onDragEnd}\n />\n );\n })}\n \n ) : (\n \n ));\n\n return draggingEnabled\n ? (\n 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 \n )\n : groupPanel;\n }\n}\n\n/** @internal */\nexport const GroupPanelLayout: React.ComponentType = 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} 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 {\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 = () => (\n \n );\n\n const ItemPlaceholder = ({ item }) => {\n const { name: columnName } = item.column;\n\n return (\n \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 changeColumnGrouping({ columnName })}\n onSort={(\n { direction, keepOther },\n ) => changeColumnSorting({ columnName, direction, keepOther })}\n />\n );\n }}\n \n );\n };\n\n return (\n \n \n \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 = 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 {\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 \n \n {Formatter\n ? (\n columnNames.includes(column.name)}\n >\n {(params: DataTypeProviderNS.ValueFormatterProps) => }\n \n )\n : null\n }\n {Editor\n ? (\n columnNames.includes(column.name)}\n >\n {(params: DataTypeProviderNS.ValueEditorProps) => }\n \n )\n : null\n }\n \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 = 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 {\n static defaultProps = {\n defaultHiddenColumnNames: [],\n messages: {},\n columnTogglingEnabled: true,\n };\n static components = {\n emptyMessageComponent: 'EmptyMessage',\n };\n toggleColumnVisibility: ActionFn;\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 \n \n\n \n \n\n \n \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 = 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 } from '../types';\n\nclass ToolbarBase extends React.PureComponent {\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 \n \n \n \n );\n }\n}\n\n/** A plugin that renders the Grid toolbar. */\nexport const Toolbar: React.ComponentType = ToolbarBase;\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 {\n render() {\n const {\n getChildRows,\n } = this.props;\n const treeRowsComputed = ({ rows }: Getters) => customTreeRowsWithMeta(rows, getChildRows);\n\n return (\n \n \n \n \n \n \n \n \n \n \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 = CustomTreeDataBase;\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 {\n static defaultProps = {\n defaultExpandedRowIds: [],\n };\n toggleRowExpanded: ActionFn;\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 \n \n {' '}\n {/* collision =( */}\n \n \n );\n }\n}\n\n/** A plugin that manages the expanded state for tree rows. */\nexport const TreeDataState: React.ComponentType = TreeDataStateBase;\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 {\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 \n \n column.name === forColumnName}\n >\n {}}\n />\n {showSelectionControls && showSelectAll && (\n \n {({ selectAllAvailable, allSelected, someSelected }, { toggleSelectAll }) => (\n \n )}\n \n )}\n \n isTreeTableCell(tableRow, tableColumn, forColumnName)}\n >\n {(params: TableCellProps) => (\n \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 \n {content => (\n \n \n -1}\n onToggle={() => toggleRowExpanded({ rowId })}\n />\n {showSelectionControls && (\n -1}\n indeterminate={false}\n onChange={() => toggleSelection({ rowIds: [rowId] })}\n />\n )}\n \n {content || value}\n \n \n )}\n \n );\n }}\n \n )}\n \n \n );\n }\n}\n\n/** A plugin that renders a table column with a toggle button and sorting indicators. */\nexport const TableTreeColumn: React.ComponentType = TableTreeColumnBase;\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 {\n static defaultProps = {\n messages: {},\n };\n static components = {\n inputComponent: 'Input',\n };\n\n render() {\n const { inputComponent: Input, messages } = this.props;\n const getMessage = getMessagesFormatter({ ...defaultMessages, ...messages });\n\n return (\n \n \n \n );\n }\n}\n\n/** A plugin that renders the Search Panel. */\nexport const SearchPanel: React.ComponentType = SearchPanelBase;\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 {\n static defaultProps = {\n defaultValue: '',\n };\n changeValue: ActionFn;\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 \n \n \n \n \n );\n }\n}\n\n/** A plugin that manages the search state. */\nexport const SearchState: React.ComponentType = SearchStateBase;\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 => ;\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 {\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 \n \n \n \n !!tableColumn.fixed}\n >\n {(params: TableCellProps) => (\n \n {({ tableColumns, tableHeaderColumnChains, selection, highlightSelectedRow }) => {\n const selected = isRowHighlighted(highlightSelectedRow, selection, params.tableRow);\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 \n );\n }}\n \n )}\n \n !!isFixedTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n )}\n \n !!isFixedTableRow(tableRow)}\n >\n {(params: TableCellProps) => (\n this.handleListenerSizeChange(params.tableColumn.key, width)}\n />\n )}\n \n \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 = 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 {\n static defaultProps = {\n totalItems: [],\n groupItems: [],\n treeItems: [],\n };\n\n render() {\n const { totalItems, groupItems, treeItems } = this.props;\n\n return (\n \n \n \n \n \n \n );\n }\n}\n\n/** A plugin that provides items for total, group, and tree summaries. */\nexport const SummaryState: React.ComponentType = 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 {\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 \n \n \n \n \n );\n }\n}\n\n/** A plugin that performs a built-in data summary calculation. */\nexport const IntegratedSummary: React.ComponentType & {\n /** The built-in summary calculator. */\n defaultCalculator: (type: SummaryType, rows: Array, 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 {\n render() {\n const { totalValues, groupValues, treeValues } = this.props;\n\n return (\n \n \n \n \n \n );\n }\n}\n\n/** A plugin that allows you to calculate a custom summary. */\nexport const CustomSummary: React.ComponentType = 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 {\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 \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 \n \n \n isTotalSummaryTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \n {({ totalSummaryItems, totalSummaryValues }) => {\n const columnSummaries = getColumnSummaries(\n totalSummaryItems,\n params.tableColumn.column!.name,\n totalSummaryValues,\n );\n return (\n \n {this.renderContent(params.tableColumn.column, columnSummaries)}\n \n );\n }}\n \n )}\n \n isGroupSummaryTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \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 \n {this.renderContent(params.tableColumn.column, columnSummaries)}\n \n );\n }}\n \n )}\n \n isTreeSummaryTableCell(tableRow, tableColumn)}\n >\n {(params: TableCellProps) => (\n \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 \n \n \n {this.renderContent(params.tableColumn.column, columnSummaries)}\n \n \n );\n }\n return (\n \n {this.renderContent(params.tableColumn.column, columnSummaries)}\n \n );\n }}\n \n )}\n \n !!isTotalSummaryTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n )}\n \n !!isGroupSummaryTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n )}\n \n !!isTreeSummaryTableRow(tableRow)}\n >\n {(params: TableRowProps) => (\n \n )}\n \n \n );\n }\n}\n\n/** A plugin that renders table rows that display a total, group, and tree summary. */\nexport const TableSummaryRow: React.ComponentType & {\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 {\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: -1,\n availableRowCount: props.totalRowCount || 0,\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 } = 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)) {\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 });\n }, 50);\n }\n\n requestFirstPage() {\n const { getRows, pageSize } = this.props;\n\n if (this.requestTimer !== 0) {\n clearTimeout(this.requestTimer);\n }\n this.requestTimer = window.setTimeout(() => {\n getRows(0, 2 * pageSize!);\n\n this.setState({\n virtualRowsCache: emptyVirtualRows,\n requestedStartIndex: 0,\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 \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport const VirtualTableState: React.ComponentType = 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.SFC & {components: {cellComponent: string}} = (props) => {\n const { cellComponent: EditCell, startEditAction, selectTextOnEditStart } = props;\n\n return (\n \n \n \n \n tableRow.type === TABLE_DATA_TYPE &&\n tableColumn.type === TABLE_DATA_TYPE\n }\n >\n {(params: TableCellProps) => (\n \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 ;\n }}\n \n )}\n \n \n tableRow.hasEditCell && tableColumn.hasEditCell\n }\n >\n {(params: TableCellProps) => (\n \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 \n {content => (\n \n {content}\n \n )}\n \n );\n }}\n \n )}\n \n \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 = 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 {\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 \n \n \n );\n }\n}\n\nexport const ExportPanel: React.ComponentType = ExportPanelBase;\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 {\n animations: ColumnAnimationMap;\n savedScrollWidth: { [key: number]: number };\n savedOffsetWidth = -1;\n tableRef: React.RefObject;\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 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 ...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 \n );\n }\n}\n\n/** @internal */\nexport const TableLayout: React.ComponentType = TableLayoutBase;\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 \n {columns.map(({ key, width }) => {\n const styleWidth = typeof width === 'number' ? `${width}px` : width;\n return (\n \n );\n })}\n \n );\n }\n}\n","import * as React from 'react';\nimport { VirtualRowLayoutProps } from '../../types';\nimport { getRowStyle } from '../../utils/helpers';\n\nexport class VirtualRowLayout extends React.Component {\n shouldComponentUpdate(nextProps) {\n const { cells: prevCells, row: prevRow } = this.props;\n const { cells: nextCells, row: nextRow } = nextProps;\n\n if (prevRow !== nextRow || prevCells.length !== nextCells.length) {\n return true;\n }\n\n const propsAreNotEqual = nextCells.some((nextCell, i) => {\n const prevCell = prevCells[i];\n return prevCell.column !== nextCell.column || prevCell.colSpan !== nextCell.colSpan;\n });\n\n return propsAreNotEqual;\n }\n\n render() {\n const { row, cells, rowComponent: Row, cellComponent: Cell } = this.props;\n return (\n \n {cells.map(({ column, colSpan }) => {\n return (\n \n );\n })}\n \n );\n }\n}\n","import * as React from 'react';\nimport { RefHolder } from '@devexpress/dx-react-core';\nimport { ColumnGroup } from './column-group';\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 {\n static defaultProps = {\n blockRefsHandler: () => {},\n rowRefsHandler: () => {},\n tableRef: React.createRef(),\n };\n\n render() {\n const {\n name,\n tableRef,\n collapsedGrid,\n minWidth,\n blockRefsHandler,\n rowRefsHandler,\n tableComponent: Table,\n bodyComponent: Body,\n cellComponent,\n rowComponent,\n marginBottom,\n } = this.props;\n\n return (\n blockRefsHandler(name, ref)}\n >\n \n \n \n {collapsedGrid.rows.map((visibleRow) => {\n const { row, cells = [] } = visibleRow;\n\n return (\n rowRefsHandler(row, ref)}\n >\n \n \n );\n })}\n \n \n \n );\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,\n} from '@devexpress/dx-grid-core';\nimport { VirtualTableLayoutState, VirtualTableLayoutProps } from '../../types';\nimport { findDOMNode } from 'react-dom';\nimport { VirtualTableLayoutBlock } from './virtual-table-layout-block';\nimport { Sizer } from '@devexpress/dx-react-core';\n\nconst AUTO_HEIGHT = 'auto';\n\nconst defaultProps = {\n headerRows: [],\n footerRows: [],\n headComponent: () => null,\n headTableComponent: () => null,\n footerComponent: () => null,\n footerTableComponent: () => null,\n};\ntype PropsType = VirtualTableLayoutProps & typeof defaultProps;\n\n/** @internal */\n// tslint:disable-next-line: max-line-length\nexport class VirtualTableLayout extends React.PureComponent {\n static defaultProps = defaultProps;\n getColumnWidthGetter: MemoizedFunction<[TableColumn[], number, number], GetColumnWidthFn>;\n rowRefs = new Map();\n blockRefs = new Map();\n viewportTop = 0;\n containerHeight = 600;\n containerWidth = 800;\n viewportLeft = 0;\n\n constructor(props) {\n super(props);\n\n this.state = {\n rowHeights: new Map(),\n height: 0,\n headerHeight: 0,\n bodyHeight: 0,\n footerHeight: 0,\n visibleRowBoundaries: {},\n };\n\n const headerHeight = props.headerRows\n .reduce((acc, row) => acc + this.getRowHeight(row), 0);\n const footerHeight = props.footerRows\n .reduce((acc, row) => acc + this.getRowHeight(row), 0);\n\n this.state = {\n ...this.state,\n headerHeight,\n footerHeight,\n };\n\n this.getColumnWidthGetter = memoize(\n (tableColumns, tableWidth, minColumnWidth) => (\n getColumnWidthGetter(tableColumns, tableWidth, minColumnWidth)\n ),\n );\n }\n\n componentDidMount() {\n this.storeRowHeights();\n this.storeBlockHeights();\n }\n\n componentDidUpdate(prevProps) {\n this.storeRowHeights();\n this.storeBlockHeights();\n\n const { bodyRows, columns } = this.props;\n\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 if (bodyRowsChanged || columnCountChanged) {\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 registerRowRef = (row, ref) => {\n if (ref === null) {\n this.rowRefs.delete(row);\n } else {\n this.rowRefs.set(row, ref);\n }\n }\n\n registerBlockRef = (name, ref) => {\n if (ref === null) {\n this.blockRefs.delete(name);\n } else {\n this.blockRefs.set(name, ref);\n }\n }\n\n storeRowHeights() {\n const rowsWithChangedHeights = Array.from(this.rowRefs.entries())\n .map(([row, ref]) => [row, findDOMNode(ref)])\n .filter(([, node]) => !!node)\n .map(([row, node]) => [row, node.getBoundingClientRect().height])\n .filter(([row]) => row.type !== TABLE_STUB_TYPE)\n .filter(([row, height]) => 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 storeBlockHeights() {\n const getBlockHeight = blockName => (this.blockRefs.get(blockName)\n ? (findDOMNode(this.blockRefs.get(blockName)) as HTMLElement).getBoundingClientRect().height\n : 0\n );\n const headerHeight = getBlockHeight('header');\n const bodyHeight = getBlockHeight('body');\n const footerHeight = getBlockHeight('footer');\n\n const {\n headerHeight: prevHeaderHeight,\n bodyHeight: prevBodyHeight,\n footerHeight: prevFooterHeight,\n } = this.state;\n\n if (prevHeaderHeight !== headerHeight\n || prevBodyHeight !== bodyHeight\n || prevFooterHeight !== footerHeight) {\n this.setState({\n headerHeight,\n bodyHeight,\n footerHeight,\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\n this.viewportTop = viewportTop;\n this.viewportLeft = viewportLeft;\n\n this.updateViewport();\n }\n\n handleContainerSizeChange = ({ width, height }) => {\n this.containerHeight = height;\n this.containerWidth = width;\n\n this.updateViewport();\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 { state, viewportTop, viewportLeft, containerHeight, containerWidth } = this;\n const {\n loadedRowsStart,\n bodyRows,\n headerRows,\n footerRows,\n estimatedRowHeight,\n columns,\n minColumnWidth,\n isDataRemote,\n viewport,\n } = this.props;\n const getColumnWidth = this.getColumnWidthGetter(columns, containerWidth, minColumnWidth!);\n\n return getViewport(\n { ...state, viewportTop, viewportLeft, containerHeight, containerWidth },\n { loadedRowsStart, columns, bodyRows, headerRows, footerRows, isDataRemote, viewport },\n estimatedRowHeight, this.getRowHeight, getColumnWidth,\n );\n }\n\n getCollapsedGrids(viewport: GridViewport) {\n const { containerWidth, viewportLeft } = this;\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 getRowHeight: this.getRowHeight,\n getColumnWidth,\n });\n }\n\n render() {\n const {\n containerComponent: Container,\n headTableComponent: HeadTable,\n footerTableComponent: FootTable,\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 } = this.props;\n const {\n headerHeight,\n bodyHeight,\n footerHeight,\n } = this.state;\n const { containerHeight } = this;\n\n const collapsedGrids = this.getCollapsedGrids(viewport);\n const commonProps = {\n cellComponent,\n rowComponent,\n minColumnWidth,\n minWidth,\n blockRefsHandler: this.registerBlockRef,\n rowRefsHandler: this.registerRowRef,\n };\n const sizerHeight = height === AUTO_HEIGHT ? null : height;\n\n return (\n \n {\n (!!headerRows.length) && (\n \n )\n }\n \n {\n (!!footerRows.length) && (\n \n )\n }\n \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.SFC = 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 \n {\n columns\n .map(column => (\n \n ))\n }\n \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 {\n render() {\n const {\n rows,\n columns,\n blockComponent: Block,\n rowComponent,\n cellComponent,\n getCellColSpan,\n } = this.props;\n\n return (\n \n {\n rows\n .map(row => (\n \n ))\n }\n \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 {\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 \n \n \n {!!headerRows.length && (\n \n )}\n \n {!!footerRows.length && (\n \n )}\n \n \n );\n }\n}\n","import * as React from 'react';\nimport {\n connectProps, 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, VirtualTableLayoutProps,\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 {\n static defaultProps = {\n estimatedRowHeight: defaultEstimatedRowHeight,\n height: defaultHeight,\n headTableComponent: FixedHeader,\n footerTableComponent: FixedFooter,\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 layoutRenderComponent: React.ComponentType & { update(): void; };\n scrollToRow: (prop: number | string | symbol) => void;\n\n constructor(props) {\n super(props);\n\n this.state = {\n viewport: emptyViewport,\n nextRowId: undefined,\n };\n\n this.layoutRenderComponent = connectProps(VirtualLayout, () => {\n const {\n headTableComponent,\n footerTableComponent,\n } = this.props;\n\n return {\n headTableComponent,\n footerTableComponent,\n };\n });\n this.scrollToRow = nextRowId => this.setState({ nextRowId });\n }\n\n setViewport = (viewport) => {\n this.setState({ viewport });\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { nextRowId: prevId } = prevState;\n const { nextRowId: currentId } = this.state;\n const areIdsEqual = currentId !== undefined && currentId === prevId;\n\n this.layoutRenderComponent.update();\n if (areIdsEqual) {\n this.setState({ nextRowId: 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 } = this.state;\n\n return (\n \n \n\n {/* prevents breaking change */}\n \n \n \n \n\n \n\n !!isStubTableCell(tableRow)}\n >\n {(params: TableNS.CellProps) => (\n \n {({ isDataRemote }) => (\n isDataRemote ? : \n )}\n \n )}\n \n \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;\n prev: Node | null = null;\n next: Node | null = null;\n\n constructor(start: number, rows: ReadonlyArray) {\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();\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) {\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) => {\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 { TableGroupRow } from '../../types';\n\nexport const InlineSummaryItem: React.SFC = React.memo(({\n summary: { messageKey, columnTitle, component: SummaryComponent },\n getMessage,\n}) => (\n \n {getMessage(messageKey, { columnTitle })}\n \n \n));\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import addDays from 'date-fns/addDays';\nimport addMonths from 'date-fns/addMonths';\nimport addYears from 'date-fns/addYears';\nimport differenceInMilliseconds from 'date-fns/differenceInMilliseconds';\nimport eachDayOfInterval from 'date-fns/eachDayOfInterval';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfWeek from 'date-fns/endOfWeek';\nimport endOfYear from 'date-fns/endOfYear';\nimport format from 'date-fns/format';\nimport getHours from 'date-fns/getHours';\nimport getSeconds from 'date-fns/getSeconds';\nimport getYear from 'date-fns/getYear';\nimport isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\nimport isEqual from 'date-fns/isEqual';\nimport isSameDay from 'date-fns/isSameDay';\nimport isSameYear from 'date-fns/isSameYear';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport isSameHour from 'date-fns/isSameHour';\nimport isValid from 'date-fns/isValid';\nimport dateFnsParse from 'date-fns/parse';\nimport setHours from 'date-fns/setHours';\nimport setMinutes from 'date-fns/setMinutes';\nimport setMonth from 'date-fns/setMonth';\nimport setSeconds from 'date-fns/setSeconds';\nimport setYear from 'date-fns/setYear';\nimport startOfDay from 'date-fns/startOfDay';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport startOfYear from 'date-fns/startOfYear';\n\nvar DateFnsUtils = /** @class */ (function () {\n function DateFnsUtils(_a) {\n var locale = (_a === void 0 ? {} : _a).locale;\n this.yearFormat = \"yyyy\";\n this.yearMonthFormat = \"MMMM yyyy\";\n this.dateTime12hFormat = \"MMMM do hh:mm aaaa\";\n this.dateTime24hFormat = \"MMMM do HH:mm\";\n this.time12hFormat = \"hh:mm a\";\n this.time24hFormat = \"HH:mm\";\n this.dateFormat = \"MMMM do\";\n this.locale = locale;\n }\n // Note: date-fns input types are more lenient than this adapter, so we need to expose our more\n // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.\n DateFnsUtils.prototype.addDays = function (value, count) {\n return addDays(value, count);\n };\n DateFnsUtils.prototype.isValid = function (value) {\n return isValid(this.date(value));\n };\n DateFnsUtils.prototype.getDiff = function (value, comparing) {\n return differenceInMilliseconds(value, this.date(comparing));\n };\n DateFnsUtils.prototype.isAfter = function (value, comparing) {\n return isAfter(value, comparing);\n };\n DateFnsUtils.prototype.isBefore = function (value, comparing) {\n return isBefore(value, comparing);\n };\n DateFnsUtils.prototype.startOfDay = function (value) {\n return startOfDay(value);\n };\n DateFnsUtils.prototype.endOfDay = function (value) {\n return endOfDay(value);\n };\n DateFnsUtils.prototype.getHours = function (value) {\n return getHours(value);\n };\n DateFnsUtils.prototype.setHours = function (value, count) {\n return setHours(value, count);\n };\n DateFnsUtils.prototype.setMinutes = function (value, count) {\n return setMinutes(value, count);\n };\n DateFnsUtils.prototype.getSeconds = function (value) {\n return getSeconds(value);\n };\n DateFnsUtils.prototype.setSeconds = function (value, count) {\n return setSeconds(value, count);\n };\n DateFnsUtils.prototype.isSameDay = function (value, comparing) {\n return isSameDay(value, comparing);\n };\n DateFnsUtils.prototype.isSameMonth = function (value, comparing) {\n return isSameMonth(value, comparing);\n };\n DateFnsUtils.prototype.isSameYear = function (value, comparing) {\n return isSameYear(value, comparing);\n };\n DateFnsUtils.prototype.isSameHour = function (value, comparing) {\n return isSameHour(value, comparing);\n };\n DateFnsUtils.prototype.startOfMonth = function (value) {\n return startOfMonth(value);\n };\n DateFnsUtils.prototype.endOfMonth = function (value) {\n return endOfMonth(value);\n };\n DateFnsUtils.prototype.getYear = function (value) {\n return getYear(value);\n };\n DateFnsUtils.prototype.setYear = function (value, count) {\n return setYear(value, count);\n };\n DateFnsUtils.prototype.date = function (value) {\n if (typeof value === \"undefined\") {\n return new Date();\n }\n if (value === null) {\n return null;\n }\n return new Date(value);\n };\n DateFnsUtils.prototype.parse = function (value, formatString) {\n if (value === \"\") {\n return null;\n }\n return dateFnsParse(value, formatString, new Date(), { locale: this.locale });\n };\n DateFnsUtils.prototype.format = function (date, formatString) {\n return format(date, formatString, { locale: this.locale });\n };\n DateFnsUtils.prototype.isEqual = function (date, comparing) {\n if (date === null && comparing === null) {\n return true;\n }\n return isEqual(date, comparing);\n };\n DateFnsUtils.prototype.isNull = function (date) {\n return date === null;\n };\n DateFnsUtils.prototype.isAfterDay = function (date, value) {\n return isAfter(date, endOfDay(value));\n };\n DateFnsUtils.prototype.isBeforeDay = function (date, value) {\n return isBefore(date, startOfDay(value));\n };\n DateFnsUtils.prototype.isBeforeYear = function (date, value) {\n return isBefore(date, startOfYear(value));\n };\n DateFnsUtils.prototype.isAfterYear = function (date, value) {\n return isAfter(date, endOfYear(value));\n };\n DateFnsUtils.prototype.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n DateFnsUtils.prototype.getMinutes = function (date) {\n return date.getMinutes();\n };\n DateFnsUtils.prototype.getMonth = function (date) {\n return date.getMonth();\n };\n DateFnsUtils.prototype.setMonth = function (date, count) {\n return setMonth(date, count);\n };\n DateFnsUtils.prototype.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n DateFnsUtils.prototype.getNextMonth = function (date) {\n return addMonths(date, 1);\n };\n DateFnsUtils.prototype.getPreviousMonth = function (date) {\n return addMonths(date, -1);\n };\n DateFnsUtils.prototype.getMonthArray = function (date) {\n var firstMonth = startOfYear(date);\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n DateFnsUtils.prototype.mergeDateAndTime = function (date, time) {\n return this.setMinutes(this.setHours(date, this.getHours(time)), this.getMinutes(time));\n };\n DateFnsUtils.prototype.getWeekdays = function () {\n var _this = this;\n var now = new Date();\n return eachDayOfInterval({\n start: startOfWeek(now, { locale: this.locale }),\n end: endOfWeek(now, { locale: this.locale })\n }).map(function (day) { return _this.format(day, \"EEEEEE\"); });\n };\n DateFnsUtils.prototype.getWeekArray = function (date) {\n var start = startOfWeek(startOfMonth(date), { locale: this.locale });\n var end = endOfWeek(endOfMonth(date), { locale: this.locale });\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n while (isBefore(current, end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = addDays(current, 1);\n count += 1;\n }\n return nestedWeeks;\n };\n DateFnsUtils.prototype.getYearRange = function (start, end) {\n var startDate = startOfYear(start);\n var endDate = endOfYear(end);\n var years = [];\n var current = startDate;\n while (isBefore(current, endDate)) {\n years.push(current);\n current = addYears(current, 1);\n }\n return years;\n };\n // displaying methpds\n DateFnsUtils.prototype.getCalendarHeaderText = function (date) {\n return this.format(date, this.yearMonthFormat);\n };\n DateFnsUtils.prototype.getYearText = function (date) {\n return this.format(date, \"yyyy\");\n };\n DateFnsUtils.prototype.getDatePickerHeaderText = function (date) {\n return this.format(date, \"EEE, MMM d\");\n };\n DateFnsUtils.prototype.getDateTimePickerHeaderText = function (date) {\n return this.format(date, \"MMM d\");\n };\n DateFnsUtils.prototype.getMonthText = function (date) {\n return this.format(date, \"MMMM\");\n };\n DateFnsUtils.prototype.getDayText = function (date) {\n return this.format(date, \"d\");\n };\n DateFnsUtils.prototype.getHourText = function (date, ampm) {\n return this.format(date, ampm ? \"hh\" : \"HH\");\n };\n DateFnsUtils.prototype.getMinuteText = function (date) {\n return this.format(date, \"mm\");\n };\n DateFnsUtils.prototype.getSecondText = function (date) {\n return this.format(date, \"ss\");\n };\n return DateFnsUtils;\n}());\n\nexport default DateFnsUtils;\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","const DELAY = 200;\n\nconst compare = (a, b) => {\n const aPosition = a.position();\n const bPosition = b.position();\n for (let i = 0; i < Math.min(aPosition.length, bPosition.length); i += 1) {\n if (aPosition[i] < bPosition[i]) return -1;\n if (aPosition[i] > bPosition[i]) return 1;\n }\n return aPosition.length - bPosition.length;\n};\n\n/** @internal */\nexport const insertPlugin = (array, newItem) => {\n const result = array.slice();\n const nextItemIndex = array.findIndex(item => compare(newItem, item) <= 0);\n const targetIndex = nextItemIndex < 0 ? array.length : nextItemIndex;\n const alreadyExists = (targetIndex >= 0 && targetIndex < array.length)\n && compare(newItem, array[targetIndex]) === 0;\n result.splice(targetIndex, alreadyExists ? 1 : 0, newItem);\n return result;\n};\n\n/** @internal */\nexport const removePlugin = (array, item) => {\n const itemIndex = array.indexOf(item);\n return itemIndex >= 0 ? [...array.slice(0, itemIndex), ...array.slice(itemIndex + 1)] : array;\n};\n\n/** @internal */\nexport const createClickHandlers = (click?, dblClick?) => {\n let timeoutId;\n const events: any = {};\n if (click) {\n events.onClick = (e) => {\n if (!timeoutId) {\n timeoutId = setTimeout(() => {\n clearTimeout(timeoutId);\n click(e);\n }, DELAY);\n }\n };\n }\n if (dblClick) {\n events.onDoubleClick = (e) => {\n clearTimeout(timeoutId);\n dblClick(e);\n };\n }\n return events;\n};\n\n/** @internal */\nexport const slice = arr => Array.prototype.slice.call(arr); // slice can be renamed to copy as well\n\n/** @internal */\nexport const hasWindow = () => typeof window !== 'undefined';\n","import { insertPlugin, removePlugin } from './utils';\nimport { Getters } from '@devexpress/dx-react-core';\n\nconst getDependencyError = (\n pluginName, dependencyName,\n ) => new Error(\n `The '${pluginName}' plugin requires '${dependencyName}' to be defined before it.`,\n );\n\n/** @internal */\nexport type PluginPositionFn = () => number[];\n\nexport interface IDependency { name: string; optional?: boolean; }\n\n/** @internal */\nexport type InnerPlugin = {\n position: PluginPositionFn;\n name?: string;\n dependencies?: IDependency[];\n} & Getters;\n\n/** @internal */\nexport class PluginHost {\n private plugins: InnerPlugin[];\n private subscriptions: Set;\n private gettersCache: object = {};\n private knownKeysCache: object = {};\n private validationRequired: boolean = true;\n\n constructor() {\n this.plugins = [];\n this.subscriptions = new Set();\n }\n\n ensureDependencies() {\n const defined: Set = new Set();\n const knownOptionals: Map = new Map();\n this.plugins\n .filter(plugin => plugin.container)\n .forEach((plugin) => {\n const pluginName = plugin.name || '';\n if (knownOptionals.has(pluginName)) {\n throw (getDependencyError(knownOptionals.get(pluginName), pluginName));\n }\n\n (plugin.dependencies || [])\n .forEach((dependency) => {\n if (defined.has(dependency.name)) return;\n if (dependency.optional) {\n if (!knownOptionals.has(dependency.name)) {\n knownOptionals.set(dependency.name, pluginName);\n }\n return;\n }\n throw (getDependencyError(pluginName, dependency.name));\n });\n\n defined.add(pluginName);\n });\n }\n\n registerPlugin(plugin) {\n this.plugins = insertPlugin(this.plugins, plugin);\n this.cleanPluginsCache();\n }\n\n unregisterPlugin(plugin) {\n this.plugins = removePlugin(this.plugins, plugin);\n this.cleanPluginsCache();\n }\n\n knownKeys(postfix) {\n if (!this.knownKeysCache[postfix]) {\n this.knownKeysCache[postfix] = Array.from(this.plugins\n .map(plugin => Object.keys(plugin))\n .map(keys => keys.filter(key => key.endsWith(postfix))[0])\n .filter(key => !!key)\n .reduce((acc, key) => acc.add(key), new Set()))\n .map(key => key.replace(postfix, ''));\n }\n return this.knownKeysCache[postfix];\n }\n\n collect(key, upTo?) {\n if (this.validationRequired) {\n this.ensureDependencies();\n this.validationRequired = false;\n }\n\n let res = this.gettersCache[key];\n if (!res) {\n // Add cache for original plugin indexes\n const indexCache = this.plugins\n .map((plugin, index) => ({ key: plugin[key], index }))\n .filter(plugin => !!plugin.key);\n this.gettersCache[`${key}_i`] = indexCache;\n res = indexCache.map(item => item.key);\n this.gettersCache[key] = res;\n }\n\n if (!upTo) return res;\n\n const upToIndex = this.plugins.indexOf(upTo);\n\n // Try to get a result from upToIndex cache first.\n const upToIndexKey = key + upToIndex;\n let upToRes = this.gettersCache[upToIndexKey];\n\n if (!upToRes) {\n const indexCache = this.gettersCache[`${key}_i`];\n upToRes = this.gettersCache[key]\n .filter((getter, index) => indexCache[index].index < upToIndex);\n this.gettersCache[upToIndexKey] = upToRes;\n }\n\n return upToRes;\n }\n\n get(key, upTo) {\n const plugins = this.collect(key, upTo);\n\n if (!plugins.length) return undefined;\n\n let result;\n // slice creates shallow copy, when do it many times, it costs about 5%\n plugins.forEach((plugin) => {\n result = plugin(result);\n });\n return result;\n }\n\n registerSubscription(subscription) {\n this.subscriptions.add(subscription);\n }\n\n unregisterSubscription(subscription) {\n this.subscriptions.delete(subscription);\n }\n\n broadcast(event, message?: any) {\n this.subscriptions.forEach(subscription => subscription[event] && subscription[event](message));\n }\n\n private cleanPluginsCache() {\n this.validationRequired = true;\n this.gettersCache = {};\n this.knownKeysCache = {};\n }\n}\n","type Handler = (e: object) => void;\n\n/** @internal */\nexport class EventEmitter {\n private handlers: Handler[];\n\n constructor() {\n this.handlers = [];\n }\n\n emit(e) {\n this.handlers.forEach(handler => handler(e));\n }\n\n subscribe(handler) {\n this.handlers.push(handler);\n }\n\n unsubscribe(handler) {\n this.handlers.splice(this.handlers.indexOf(handler), 1);\n }\n}\n","/** @internal */\nexport const shallowEqual = (objA, objB) => {\n if (objA === objB) {\n return true;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n const hasOwn = Object.prototype.hasOwnProperty;\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < keysA.length; i += 1) {\n if (!hasOwn.call(objB, keysA[i])\n || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n\n const valA = objA[keysA[i]];\n const valB = objB[keysA[i]];\n\n if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n};\n\n/** @internal */\nexport const argumentsShallowEqual = (prev, next) => {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n for (let i = 0; i < prev.length; i += 1) {\n if (prev[i] !== next[i]) {\n return false;\n }\n }\n\n return true;\n};\n","import { argumentsShallowEqual } from './shallow-equal';\n\n/** @internal */\nexport const memoize = (func) => {\n let lastArgs: any = null;\n let lastResult: ReturnType = null;\n return (...args) => {\n if (lastArgs === null || !argumentsShallowEqual(lastArgs, args)) {\n lastResult = func(...args);\n }\n lastArgs = args;\n return lastResult;\n };\n};\n","/** @internal */\nexport const easeInQuad = t => t * t;\n/** @internal */\nexport const easeOutQuad = t => t * (2 - t);\n/** @internal */\nexport const easeInOutQuad = t => (t < 0.5\n ? 2 * t * t\n : -1 + ((4 - (2 * t)) * t));\n\n/** @internal */\nexport const easeInCubic = t => t * t * t;\n/** @internal */\nexport const easeOutCubic = t => ((t - 1) * (t - 1) * (t - 1)) + 1;\n/** @internal */\nexport const easeInOutCubic = t => (t < 0.5\n ? 4 * t * t * t\n : ((t - 1) * ((2 * t) - 2) * ((2 * t) - 2)) + 1);\n\n/** @internal */\nexport const easeInQuart = t => t * t * t * t;\n/** @internal */\nexport const easeOutQuart = t => 1 - ((t - 1) * (t - 1) * (t - 1) * (t - 1));\n/** @internal */\nexport const easeInOutQuart = t => (t < 0.5\n ? 8 * t * t * t * t\n : 1 - (8 * (t - 1) * (t - 1) * (t - 1) * (t - 1)));\n\n/** @internal */\nexport const easeInQuint = t => t * t * t * t * t;\n/** @internal */\nexport const easeOutQuint = t => 1 + ((t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1));\n/** @internal */\nexport const easeInOutQuint = t => (t < 0.5\n ? 16 * t * t * t * t * t\n : 1 + (16 * (t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1)));\n","import { GetMessagesFormatterFn } from './types';\n\nconst processPattern = (pattern, params) => Object.keys(params).reduce(\n (msg, key) => msg.replace(`{${key}}`, params[key]),\n pattern,\n);\n\n/** @internal */\nexport const getMessagesFormatter: GetMessagesFormatterFn = messages => (key, params?) => {\n const message = messages[key];\n\n if (typeof message === 'function') {\n return message(params);\n }\n if (params) {\n return processPattern(message, params);\n }\n return message ?? '';\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n};\n\nconst RootBase = ({\n children, classes, className, ...restProps\n}) => (\n \n {children}\n \n);\n\nRootBase.propTypes = {\n children: PropTypes.node.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nRootBase.defaultProps = {\n className: undefined,\n};\n\nexport const Root = withStyles(styles)(RootBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Grid as GridBase } from '@devexpress/dx-react-grid';\nimport { Root } from './templates/layout';\n\nexport const Grid = ({ children, ...props }) => (\n \n {children}\n \n);\n\nGrid.Root = Root;\n\nGrid.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport Popover from '@material-ui/core/Popover';\n\nexport const Overlay = ({\n visible, onHide, children, target, ...restProps\n}) => (\n \n {children}\n \n);\n\nOverlay.propTypes = {\n onHide: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n visible: PropTypes.bool,\n target: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n ]),\n};\n\nOverlay.defaultProps = {\n visible: false,\n target: null,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\n\nexport const ToggleButton = ({\n onToggle, getMessage,\n buttonRef, active,\n ...restProps\n}) => (\n \n \n \n \n \n);\n\nToggleButton.propTypes = {\n onToggle: PropTypes.func.isRequired,\n getMessage: PropTypes.func.isRequired,\n buttonRef: PropTypes.func.isRequired,\n active: PropTypes.bool,\n};\n\nToggleButton.defaultProps = {\n active: false,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n checkbox: {\n padding: 0,\n },\n itemText: {\n paddingLeft: theme.spacing(1),\n },\n});\n\nconst ItemBase = ({\n item: { column, hidden },\n disabled, onToggle,\n classes,\n ...restProps\n}) => (\n \n \n \n \n);\n\nItemBase.propTypes = {\n item: PropTypes.shape({\n column: PropTypes.shape({\n name: PropTypes.string,\n title: PropTypes.string,\n }),\n hidden: PropTypes.bool,\n }).isRequired,\n disabled: PropTypes.bool,\n onToggle: PropTypes.func,\n classes: PropTypes.object.isRequired,\n};\n\nItemBase.defaultProps = {\n onToggle: () => { },\n disabled: false,\n};\n\nexport const Item = withStyles(styles, { name: 'Item' })(ItemBase);\n","import * as React from 'react';\n\nexport const withPatchedProps = patchProps => (Target) => {\n class Patched extends React.PureComponent {\n render() {\n return ;\n }\n }\n return Patched;\n};\n","import * as PropTypes from 'prop-types';\nimport { withComponents } from '@devexpress/dx-react-core';\nimport { ColumnChooser as ColumnChooserBase } from '@devexpress/dx-react-grid';\nimport { Overlay } from '../templates/column-chooser/overlay';\nimport { Container } from '../templates/column-chooser/container';\nimport { ToggleButton } from '../templates/column-chooser/toggle-button';\nimport { Item } from '../templates/column-chooser/item';\nimport { withPatchedProps } from '../utils/with-patched-props';\n\nconst defaultMessages = {\n showColumnChooser: 'Show Column Chooser',\n};\n\nconst ColumnChooserWithMessages = withPatchedProps(({ messages, ...restProps }) => ({\n messages: { ...defaultMessages, ...messages },\n ...restProps,\n}))(ColumnChooserBase);\n\nColumnChooserWithMessages.propTypes = {\n messages: PropTypes.shape({\n hiddenColumnNames: PropTypes.string,\n }),\n};\n\nColumnChooserWithMessages.defaultProps = {\n messages: {},\n};\n\nColumnChooserWithMessages.components = ColumnChooserBase.components;\n\nexport const ColumnChooser = withComponents({\n Container, Item, Overlay, ToggleButton,\n})(ColumnChooserWithMessages);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport List from '@material-ui/core/List';\n\nexport const Container = ({ children, ...restProps }) => (\n \n {children}\n \n);\n\nContainer.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport Chip from '@material-ui/core/Chip';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n container: {\n position: 'fixed',\n zIndex: 1000,\n left: 0,\n top: 0,\n display: 'inline-block',\n },\n column: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n float: 'right',\n cursor: 'move',\n },\n});\n\nconst ContainerBase = ({\n clientOffset, classes, style, className, children,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nContainerBase.propTypes = {\n clientOffset: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n }).isRequired,\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n style: PropTypes.object,\n className: PropTypes.string,\n};\n\nContainerBase.defaultProps = {\n style: null,\n className: undefined,\n children: undefined,\n};\n\nexport const Container = withStyles(styles, { name: 'DragDrop' })(ContainerBase);\n\nconst ColumnBase = React.memo(({\n column,\n classes,\n className,\n ...restProps\n}) => (\n \n));\n\nColumnBase.propTypes = {\n column: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nColumnBase.defaultProps = {\n className: undefined,\n};\n\nexport const Column = withStyles(styles, { name: 'DragDrop' })(ColumnBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { DragDropProvider as DragDropProviderBase } from '@devexpress/dx-react-grid';\nimport { Container, Column } from '../templates/drag-drop';\n\nexport const DragDropProvider = withComponents({ Container, Column })(DragDropProviderBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport Input from '@material-ui/core/Input';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { withStyles } from '@material-ui/core/styles';\nimport { IS_LEGACY_EDGE_MEDIA_QUERY } from '../constants';\n\nconst styles = theme => ({\n pageSizeSelector: {\n ...theme.typography.caption,\n paddingRight: theme.spacing(5),\n // NOTE: fixes vertical alignment in FF\n display: 'flex',\n alignItems: 'center',\n },\n label: {\n paddingRight: theme.spacing(3),\n },\n pageSizeTitle: {\n width: 'auto',\n marginRight: theme.spacing(2),\n },\n inputRoot: {\n fontSize: theme.spacing(1.75),\n textAlign: 'right',\n },\n selectIcon: {\n top: 2,\n },\n selectMenu: {\n // NOTE: fix position for non-chromium Edge (issues 2234, 2788)\n [`${IS_LEGACY_EDGE_MEDIA_QUERY}`]: {\n position: 'absolute !important',\n },\n },\n '@media (max-width: 768px)': {\n label: {\n display: 'none',\n },\n pageSizeSelector: {\n paddingRight: theme.spacing(2),\n },\n },\n});\n\nconst PageSizeSelectorBase = ({\n pageSize,\n onPageSizeChange,\n pageSizes,\n getMessage,\n classes,\n}) => {\n const showAll = getMessage('showAll');\n return (\n
\n \n {getMessage('rowsPerPage')}\n \n onPageSizeChange(event.target.value)}\n classes={{\n icon: classes.selectIcon,\n }}\n MenuProps={{\n className: classes.selectMenu,\n }}\n input={(\n \n )}\n >\n {pageSizes.map(item => (\n \n {item !== 0 ? item : showAll }\n \n ))}\n \n
\n );\n};\n\nPageSizeSelectorBase.propTypes = {\n pageSize: PropTypes.number.isRequired,\n onPageSizeChange: PropTypes.func.isRequired,\n pageSizes: PropTypes.arrayOf(PropTypes.number).isRequired,\n classes: PropTypes.object.isRequired,\n getMessage: PropTypes.func.isRequired,\n};\n\nexport const PageSizeSelector = withStyles(styles, { name: 'PageSizeSelector' })(PageSizeSelectorBase);\n","export const IS_LEGACY_EDGE_MEDIA_QUERY = '@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)';\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/core/styles';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport { firstRowOnPage, lastRowOnPage, calculateStartPage } from '@devexpress/dx-grid-core';\n\nconst styles = theme => ({\n pagination: {\n margin: 0,\n },\n rowsLabel: {\n ...theme.typography.caption,\n paddingRight: theme.spacing(5),\n },\n button: {\n minWidth: theme.spacing(2),\n },\n activeButton: {\n fontWeight: 'bold',\n cursor: 'default',\n },\n arrowButton: {\n display: 'inline-block',\n transform: theme.direction === 'rtl' ? 'rotate(180deg)' : null,\n msTransform: theme.direction === 'rtl' ? 'rotate(180deg)' : null,\n },\n prev: {\n marginRight: 0,\n },\n next: {\n marginLeft: 0,\n },\n '@media(max-width: 768px)': {\n button: {\n display: 'none',\n },\n prev: {\n marginRight: theme.spacing(1),\n },\n next: {\n marginLeft: theme.spacing(1),\n },\n rowsLabel: {\n paddingRight: theme.spacing(2),\n },\n },\n});\n\nconst PageButton = ({\n text, isActive, isDisabled, classes, onClick,\n}) => {\n const buttonClasses = classNames({\n [classes.button]: true,\n [classes.activeButton]: isActive,\n });\n\n return (\n \n {text}\n \n );\n};\n\nPageButton.propTypes = {\n text: PropTypes.string.isRequired,\n isActive: PropTypes.bool,\n isDisabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n};\n\nPageButton.defaultProps = {\n onClick: () => {},\n isDisabled: false,\n isActive: false,\n};\n\nconst ellipsisSymbol = '\\u2026';\n\nconst renderPageButtons = (\n currentPage,\n totalPageCount,\n classes,\n onCurrentPageChange,\n) => {\n const pageButtons = [];\n const maxButtonCount = 3;\n let startPage = 1;\n let endPage = totalPageCount || 1;\n\n // NOTE: take into account last button and ellipsis (T1004797)\n if (maxButtonCount < totalPageCount - 2) {\n startPage = calculateStartPage(currentPage + 1, maxButtonCount, totalPageCount);\n endPage = (startPage + maxButtonCount) - 1;\n }\n if (startPage > 1) {\n pageButtons.push((\n onCurrentPageChange(0)}\n />\n ));\n\n if (startPage > 2) {\n pageButtons.push((\n \n ));\n }\n }\n\n for (let page = startPage; page <= endPage; page += 1) {\n pageButtons.push((\n onCurrentPageChange(page - 1)}\n isDisabled={startPage === endPage}\n />\n ));\n }\n\n if (endPage < totalPageCount) {\n if (endPage < totalPageCount - 1) {\n pageButtons.push((\n \n ));\n }\n\n pageButtons.push((\n onCurrentPageChange(totalPageCount - 1)}\n />\n ));\n }\n\n return pageButtons;\n};\n\nconst PaginationBase = ({\n totalPages,\n totalCount,\n pageSize,\n currentPage,\n onCurrentPageChange,\n getMessage,\n classes,\n}) => {\n const from = firstRowOnPage(currentPage, pageSize, totalCount);\n const to = lastRowOnPage(currentPage, pageSize, totalCount);\n\n return (\n
\n \n {getMessage('info', { from, to, count: totalCount })}\n \n (currentPage > 0) && onCurrentPageChange(currentPage - 1)}\n aria-label=\"Previous\"\n >\n \n \n {renderPageButtons(currentPage, totalPages, classes, onCurrentPageChange)}\n currentPage < totalPages - 1 && onCurrentPageChange(currentPage + 1)}\n aria-label=\"Next\"\n >\n \n \n
\n );\n};\n\nPaginationBase.propTypes = {\n totalPages: PropTypes.number.isRequired,\n currentPage: PropTypes.number.isRequired,\n onCurrentPageChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n totalCount: PropTypes.number.isRequired,\n pageSize: PropTypes.number.isRequired,\n getMessage: PropTypes.func.isRequired,\n};\n\nexport const Pagination = withStyles(styles, { name: 'Pagination' })(PaginationBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport { PageSizeSelector } from './page-size-selector';\nimport { Pagination } from './pagination';\n\nconst styles = theme => ({\n pager: {\n overflow: 'hidden',\n padding: theme.spacing(1.5),\n display: 'flex',\n flex: 'none',\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n});\n\nconst PagerBase = ({\n currentPage,\n pageSizes,\n totalPages,\n pageSize,\n classes,\n onCurrentPageChange,\n onPageSizeChange,\n totalCount,\n getMessage,\n className,\n ...restProps\n}) => (\n \n {!!pageSizes.length && (\n \n )}\n onCurrentPageChange(page)}\n pageSize={pageSize}\n getMessage={getMessage}\n />\n \n);\n\nPagerBase.propTypes = {\n currentPage: PropTypes.number.isRequired,\n totalPages: PropTypes.number.isRequired,\n pageSizes: PropTypes.arrayOf(PropTypes.number).isRequired,\n pageSize: PropTypes.number.isRequired,\n classes: PropTypes.object.isRequired,\n onCurrentPageChange: PropTypes.func.isRequired,\n onPageSizeChange: PropTypes.func.isRequired,\n totalCount: PropTypes.number.isRequired,\n getMessage: PropTypes.func.isRequired,\n className: PropTypes.string,\n};\n\nPagerBase.defaultProps = {\n className: undefined,\n};\n\nexport const Pager = withStyles(styles, { name: 'Pager' })(PagerBase);\n","import * as PropTypes from 'prop-types';\nimport { withComponents } from '@devexpress/dx-react-core';\nimport { PagingPanel as PagingPanelBase } from '@devexpress/dx-react-grid';\nimport { Pager as Container } from '../templates/paging-panel/pager';\nimport { withPatchedProps } from '../utils/with-patched-props';\n\nconst defaultMessages = {\n rowsPerPage: 'Rows per page:',\n};\n\nconst PagingPanelWithMessages = withPatchedProps(({ messages, ...restProps }) => ({\n messages: { ...defaultMessages, ...messages },\n ...restProps,\n}))(PagingPanelBase);\n\nPagingPanelWithMessages.propTypes = {\n messages: PropTypes.shape({\n showAll: PropTypes.string,\n rowsPerPage: PropTypes.string,\n info: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n ]),\n }),\n};\n\nPagingPanelWithMessages.defaultProps = {\n messages: {},\n};\n\nPagingPanelWithMessages.components = PagingPanelBase.components;\n\nexport const PagingPanel = withComponents({ Container })(PagingPanelWithMessages);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n panel: {\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: theme.spacing(1.5),\n },\n});\n\nconst GroupPanelContainerBase = ({\n classes,\n children,\n className,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nGroupPanelContainerBase.propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nGroupPanelContainerBase.defaultProps = {\n children: undefined,\n className: undefined,\n};\n\nexport const GroupPanelContainer = withStyles(styles, { name: 'GroupPanelContainer' })(GroupPanelContainerBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Chip from '@material-ui/core/Chip';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst ENTER_KEY_CODE = 13;\nconst SPACE_KEY_CODE = 32;\n\nconst styles = theme => ({\n button: {\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(1.5),\n },\n withoutIcon: {\n paddingRight: '13px',\n paddingLeft: '13px',\n },\n draftCell: {\n opacity: 0.3,\n },\n});\n\nconst label = (showSortingControls, sortingEnabled, sortingDirection, column, hovered) => {\n const title = column.title || column.name;\n return showSortingControls\n ? (\n \n {title}\n \n )\n : title;\n};\n\nconst GroupPanelItemBase = ({\n item: { column, draft },\n onGroup, showGroupingControls,\n showSortingControls, sortingDirection, onSort,\n sortingEnabled, groupingEnabled,\n classes, className,\n ...restProps\n}) => {\n const [hovered, setHovered] = React.useState(false);\n const chipClassNames = classNames({\n [classes.button]: true,\n [classes.withoutIcon]: !showSortingControls || (!hovered && sortingDirection === null),\n [classes.draftCell]: draft,\n }, className);\n const onClick = (e) => {\n const isActionKeyDown = e.keyCode === ENTER_KEY_CODE || e.keyCode === SPACE_KEY_CODE;\n const isMouseClick = e.keyCode === undefined;\n const cancelSortingRelatedKey = e.metaKey || e.ctrlKey;\n const direction = (isMouseClick || isActionKeyDown) && cancelSortingRelatedKey\n ? null\n : undefined;\n\n onSort({\n direction,\n keepOther: cancelSortingRelatedKey,\n });\n };\n\n return (\n setHovered(true),\n onMouseLeave: () => setHovered(false),\n }\n : null}\n {...restProps}\n />\n );\n};\n\nGroupPanelItemBase.propTypes = {\n item: PropTypes.shape({\n column: PropTypes.shape({\n title: PropTypes.string,\n name: PropTypes.string,\n }).isRequired,\n draft: PropTypes.bool,\n }).isRequired,\n showSortingControls: PropTypes.bool,\n sortingDirection: PropTypes.oneOf(['asc', 'desc', null]),\n onSort: PropTypes.func,\n onGroup: PropTypes.func,\n showGroupingControls: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n sortingEnabled: PropTypes.bool,\n groupingEnabled: PropTypes.bool,\n};\n\nGroupPanelItemBase.defaultProps = {\n showSortingControls: false,\n sortingEnabled: false,\n sortingDirection: undefined,\n onSort: undefined,\n onGroup: undefined,\n showGroupingControls: false,\n groupingEnabled: false,\n className: undefined,\n};\n\nexport const GroupPanelItem = withStyles(styles, { name: 'GroupPanelItem' })(GroupPanelItemBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n groupInfo: {\n color: theme.typography.caption.color,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.fontSize,\n },\n});\n\nconst GroupPanelEmptyMessageBase = ({\n getMessage,\n classes,\n className,\n ...restProps\n}) => (\n \n {getMessage('groupByColumn')}\n \n);\n\nGroupPanelEmptyMessageBase.propTypes = {\n getMessage: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nGroupPanelEmptyMessageBase.defaultProps = {\n className: undefined,\n};\n\nexport const GroupPanelEmptyMessage = withStyles(styles, { name: 'GroupPanelEmptyMessage' })(GroupPanelEmptyMessageBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { GroupingPanel as GroupingPanelBase } from '@devexpress/dx-react-grid';\nimport { GroupPanelContainer as Container } from '../templates/group-panel-container';\nimport { GroupPanelItem as Item } from '../templates/group-panel-item';\nimport { GroupPanelEmptyMessage as EmptyMessage } from '../templates/group-panel-empty-message';\n\nexport const GroupingPanel = withComponents({ Container, Item, EmptyMessage })(GroupingPanelBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport IconButton from '@material-ui/core/IconButton';\n\nconst styles = theme => ({\n toggleCell: {\n textAlign: 'center',\n textOverflow: 'initial',\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: theme.spacing(1),\n },\n toggleCellButton: {\n verticalAlign: 'middle',\n display: 'inline-block',\n padding: theme.spacing(1),\n },\n});\n\nconst TableDetailToggleCellBase = ({\n style, expanded, classes, onToggle,\n tableColumn, tableRow, row,\n className,\n ...restProps\n}) => {\n const handleClick = (e) => {\n e.stopPropagation();\n onToggle();\n };\n return (\n \n \n {\n expanded\n ? \n : \n }\n \n \n );\n};\n\nTableDetailToggleCellBase.propTypes = {\n style: PropTypes.object,\n expanded: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n onToggle: PropTypes.func,\n className: PropTypes.string,\n tableColumn: PropTypes.object,\n tableRow: PropTypes.object,\n row: PropTypes.any,\n};\n\nTableDetailToggleCellBase.defaultProps = {\n style: null,\n expanded: false,\n onToggle: () => {},\n className: undefined,\n tableColumn: undefined,\n tableRow: undefined,\n row: undefined,\n};\n\nexport const TableDetailToggleCell = withStyles(styles, { name: 'TableDetailToggleCell' })(TableDetailToggleCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n active: {\n backgroundColor: theme.palette.background.default,\n },\n});\n\nconst TableDetailCellBase = ({\n colSpan, style, children, classes,\n className,\n tableColumn, tableRow, row,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nTableDetailCellBase.propTypes = {\n style: PropTypes.object,\n colSpan: PropTypes.number,\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableColumn: PropTypes.object,\n tableRow: PropTypes.object,\n row: PropTypes.any,\n};\n\nTableDetailCellBase.defaultProps = {\n style: null,\n colSpan: 1,\n className: undefined,\n tableColumn: undefined,\n tableRow: undefined,\n row: undefined,\n children: undefined,\n};\n\nexport const TableDetailCell = withStyles(styles, { name: 'TableDetailCell' })(TableDetailCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TableRowMUI from '@material-ui/core/TableRow';\n\nexport const TableRow = ({\n children,\n row, tableRow,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nTableRow.propTypes = {\n children: PropTypes.node,\n row: PropTypes.any,\n tableRow: PropTypes.object,\n};\n\nTableRow.defaultProps = {\n children: undefined,\n row: undefined,\n tableRow: undefined,\n};\n","import * as React from 'react';\nimport { withComponents } from '@devexpress/dx-react-core';\nimport { TableRowDetail as TableRowDetailBase } from '@devexpress/dx-react-grid';\nimport { TableDetailToggleCell as ToggleCell } from '../templates/table-detail-toggle-cell';\nimport { TableDetailCell as Cell } from '../templates/table-detail-cell';\nimport { TableRow as Row } from '../templates/table-row';\n\nconst TableRowDetailWithWidth = props => ;\nTableRowDetailWithWidth.components = TableRowDetailBase.components;\n\nexport const TableRowDetail = withComponents({ Row, Cell, ToggleCell })(TableRowDetailWithWidth);\n\nTableRowDetail.COLUMN_TYPE = TableRowDetailBase.COLUMN_TYPE;\nTableRowDetail.ROW_TYPE = TableRowDetailBase.ROW_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n cell: {\n cursor: 'pointer',\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n },\n cellNoWrap: {\n whiteSpace: 'nowrap',\n },\n});\n\nconst CellBase = ({\n contentComponent: Content,\n iconComponent: Icon,\n containerComponent: Container,\n inlineSummaryComponent: InlineSummary,\n inlineSummaryItemComponent: InlineSummaryItem,\n inlineSummaries, getMessage,\n style, colSpan, row,\n column, expanded,\n onToggle,\n classes, children,\n className, tableRow,\n tableColumn, side, position,\n ...restProps\n}) => {\n const handleClick = () => onToggle();\n\n return (\n \n \n \n \n {children}\n \n {\n inlineSummaries.length ? (\n \n ) : null\n }\n \n \n );\n};\n\nCellBase.propTypes = {\n // oneOfType is a workaround because withStyles returns react object\n contentComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n iconComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n containerComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n inlineSummaryComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n inlineSummaryItemComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n style: PropTypes.object,\n colSpan: PropTypes.number,\n row: PropTypes.any,\n column: PropTypes.object,\n expanded: PropTypes.bool,\n onToggle: PropTypes.func,\n classes: PropTypes.object.isRequired,\n getMessage: PropTypes.func.isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n inlineSummaries: PropTypes.array,\n side: PropTypes.string,\n position: PropTypes.string,\n};\n\nCellBase.defaultProps = {\n style: null,\n colSpan: 1,\n row: {},\n column: {},\n expanded: false,\n inlineSummaries: [],\n onToggle: () => {},\n children: undefined,\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n side: 'left',\n position: '',\n};\n\nexport const Cell = withStyles(styles, { name: 'TableGroupCell' })(CellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = () => ({\n columnTitle: {\n verticalAlign: 'middle',\n },\n});\n\nconst ContentBase = ({\n column, row, classes, className, children, ...restProps\n}) => (\n \n \n {column.title || column.name}\n :\n {' '}\n \n {children || String(row.value)}\n \n);\n\nContentBase.propTypes = {\n row: PropTypes.any,\n column: PropTypes.object,\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nContentBase.defaultProps = {\n row: {},\n column: {},\n children: undefined,\n className: undefined,\n};\n\nexport const Content = withStyles(styles)(ContentBase);\n","import { darken, fade, lighten } from '@material-ui/core/styles/colorManipulator';\n\nexport const getBorder = theme => (`1px solid ${\n theme.palette.type === 'light'\n ? lighten(fade(theme.palette.divider, 1), 0.88)\n : darken(fade(theme.palette.divider, 1), 0.68)\n}`);\n\nexport const getStickyCellStyle = theme => ({\n backgroundColor: theme.palette.background.paper,\n position: 'sticky',\n zIndex: 300,\n backgroundClip: 'padding-box',\n});\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getStickyCellStyle } from '../utils';\n\nconst styles = theme => ({\n wrapper: {\n ...getStickyCellStyle(theme),\n float: 'left',\n maxWidth: '100%',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n});\n\nconst ContainerBase = ({\n children, style, classes, className, side, position, ...restProps\n}) => (\n \n {children}\n \n);\n\nContainerBase.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n side: PropTypes.string,\n position: PropTypes.string,\n};\n\nContainerBase.defaultProps = {\n children: undefined,\n className: undefined,\n style: null,\n side: 'left',\n position: '',\n};\n\nexport const Container = withStyles(styles)(ContainerBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getStickyCellStyle, getBorder } from '../utils';\n\nconst styles = theme => ({\n indentCell: {\n ...getStickyCellStyle(theme),\n borderBottom: getBorder(theme),\n },\n});\n\nconst IndentCellBase = ({\n tableRow,\n tableColumn,\n row, column,\n style, className, classes,\n position, side,\n ...restProps\n}) => (\n \n);\n\nIndentCellBase.propTypes = {\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n row: PropTypes.any,\n column: PropTypes.object,\n style: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n side: PropTypes.string,\n position: PropTypes.number,\n};\n\nIndentCellBase.defaultProps = {\n tableRow: undefined,\n tableColumn: undefined,\n row: {},\n column: {},\n style: null,\n className: undefined,\n side: 'left',\n position: undefined,\n};\n\nexport const IndentCell = withStyles(styles)(IndentCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport IconButton from '@material-ui/core/IconButton';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n groupButton: {\n verticalAlign: 'middle',\n display: 'inline-block',\n padding: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n});\n\nconst IconBase = React.memo(({\n expanded,\n classes,\n className,\n ...restProps\n}) => (\n \n {\n expanded\n ? \n : \n }\n \n));\n\nIconBase.propTypes = {\n expanded: PropTypes.bool.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nIconBase.defaultProps = {\n className: undefined,\n};\n\nexport const Icon = withStyles(styles)(IconBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport { TableRow } from '../table-row';\n\nconst styles = () => ({\n row: {\n cursor: 'pointer',\n },\n});\n\nconst RowBase = ({\n children, classes, className, ...restProps\n}) => (\n \n {children}\n \n);\n\nRowBase.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nRowBase.defaultProps = {\n children: null,\n className: undefined,\n};\n\nexport const Row = withStyles(styles)(RowBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n inlineSummary: {\n marginLeft: theme.spacing(1),\n verticalAlign: 'middle',\n },\n});\n\nconst InlineSummaryBase = ({\n inlineSummaries, getMessage,\n inlineSummaryItemComponent: InlineSummaryItem,\n classes, className, ...restProps\n}) => (\n \n {'('}\n {inlineSummaries.map(s => (\n \n ))\n .reduce((acc, summary) => acc.concat(summary, ', '), [])\n .slice(0, -1)}\n {')'}\n \n);\n\nInlineSummaryBase.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n getMessage: PropTypes.func.isRequired,\n inlineSummaries: PropTypes.array,\n inlineSummaryItemComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n};\n\nInlineSummaryBase.defaultProps = {\n className: undefined,\n inlineSummaries: [],\n};\n\nexport const InlineSummary = withStyles(styles)(InlineSummaryBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCellMUI from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getBorder } from './utils';\n\nconst styles = theme => ({\n cell: {\n paddingRight: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n '&:first-child': {\n paddingLeft: theme.spacing(3),\n },\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n footer: {\n borderBottom: getBorder(theme),\n },\n cellRightAlign: {\n textAlign: 'right',\n },\n cellCenterAlign: {\n textAlign: 'center',\n },\n cellNoWrap: {\n whiteSpace: 'nowrap',\n },\n});\n\nconst TableCellBase = ({\n column, value, children, classes,\n tableRow, tableColumn, row,\n className,\n ...restProps\n}) => (\n \n {children || value}\n \n);\n\nTableCellBase.propTypes = {\n value: PropTypes.any,\n column: PropTypes.object,\n row: PropTypes.any,\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n className: PropTypes.string,\n};\n\nTableCellBase.defaultProps = {\n value: undefined,\n column: undefined,\n row: undefined,\n children: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n className: undefined,\n};\n\nexport const TableCell = withStyles(styles, { name: 'TableCell' })(TableCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { TableCell } from '../table-cell';\n\nexport const SummaryCell = ({ onToggle, ...restProps }) => (\n \n);\n\nSummaryCell.propTypes = {\n onToggle: PropTypes.func,\n};\n\nSummaryCell.defaultProps = {\n onToggle: () => {},\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n item: {\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.primary,\n fontSize: theme.typography.pxToRem(13),\n },\n});\n\nconst TableSummaryItemBase = ({\n children,\n type,\n value,\n getMessage,\n classes,\n className,\n ...restProps\n}) => (\n \n {\n \n {getMessage(type)}\n :  \n {children}\n \n }\n \n);\n\nTableSummaryItemBase.propTypes = {\n value: PropTypes.number,\n type: PropTypes.string.isRequired,\n getMessage: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nTableSummaryItemBase.defaultProps = {\n value: null,\n children: undefined,\n className: undefined,\n};\n\nexport const TableSummaryItem = withStyles(styles)(TableSummaryItemBase);\n","import * as React from 'react';\nimport { withComponents } from '@devexpress/dx-react-core';\nimport { TableGroupRow as TableGroupRowBase, InlineSummaryItem } from '@devexpress/dx-react-grid';\nimport { Cell } from '../templates/table-group-cell/cell';\nimport { Content } from '../templates/table-group-cell/content';\nimport { Container } from '../templates/table-group-cell/container';\nimport { IndentCell } from '../templates/table-group-cell/indent-cell';\nimport { Icon } from '../templates/table-group-cell/icon';\nimport { Row } from '../templates/table-group-cell/row';\nimport { InlineSummary } from '../templates/table-group-cell/inline-summary';\nimport { SummaryCell } from '../templates/table-group-cell/summary-cell';\nimport { TableSummaryItem as SummaryItem } from '../templates/table-summary-item';\n\nconst TableGroupRowWithIndent = props => (\n \n);\nTableGroupRowWithIndent.components = TableGroupRowBase.components;\n\nconst StubCell = SummaryCell;\n\nexport const TableGroupRow = withComponents({\n Row,\n Cell,\n IndentCell,\n Container,\n Content,\n Icon,\n InlineSummary,\n InlineSummaryItem,\n SummaryCell,\n SummaryItem,\n StubCell,\n})(TableGroupRowWithIndent);\n\nTableGroupRow.COLUMN_TYPE = TableGroupRowBase.COLUMN_TYPE;\nTableGroupRow.ROW_TYPE = TableGroupRowBase.ROW_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n cell: {\n overflow: 'visible',\n paddingRight: 0,\n paddingLeft: theme.spacing(1),\n textAlign: 'center',\n },\n checkbox: {\n padding: theme.spacing(1),\n },\n alignWithRowSpan: {\n verticalAlign: 'bottom',\n paddingBottom: theme.spacing(0.5),\n },\n pointer: {\n cursor: 'pointer',\n },\n});\n\nconst TableSelectAllCellBase = ({\n allSelected, someSelected, disabled, onToggle, classes,\n className, tableRow, tableColumn, rowSpan,\n ...restProps\n}) => {\n const cellClasses = classNames({\n [classes.cell]: true,\n [classes.pointer]: !disabled,\n [classes.alignWithRowSpan]: rowSpan > 1,\n }, className);\n\n return (\n \n {\n if (disabled) return;\n\n e.stopPropagation();\n onToggle();\n }}\n />\n \n );\n};\n\nTableSelectAllCellBase.propTypes = {\n allSelected: PropTypes.bool,\n someSelected: PropTypes.bool,\n disabled: PropTypes.bool,\n onToggle: PropTypes.func,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n rowSpan: PropTypes.number,\n};\n\nTableSelectAllCellBase.defaultProps = {\n allSelected: false,\n someSelected: false,\n disabled: false,\n onToggle: () => {},\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n rowSpan: undefined,\n};\n\nexport const TableSelectAllCell = withStyles(styles, { name: 'TableSelectAllCell' })(TableSelectAllCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n cell: {\n overflow: 'visible',\n paddingRight: 0,\n paddingLeft: theme.spacing(1),\n textAlign: 'center',\n },\n checkbox: {\n marginTop: '-1px',\n marginBottom: '-1px',\n padding: theme.spacing(1),\n },\n});\n\nexport const TableSelectCellBase = ({\n style, selected, onToggle, classes,\n className, row, tableRow, tableColumn,\n ...restProps\n}) => (\n \n {\n e.stopPropagation();\n onToggle();\n }}\n />\n \n);\n\nTableSelectCellBase.propTypes = {\n style: PropTypes.object,\n selected: PropTypes.bool,\n onToggle: PropTypes.func,\n classes: PropTypes.object.isRequired,\n row: PropTypes.any,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n className: PropTypes.string,\n};\n\nTableSelectCellBase.defaultProps = {\n style: null,\n selected: false,\n onToggle: () => {},\n row: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n className: undefined,\n};\n\nexport const TableSelectCell = withStyles(styles, { name: 'TableSelectCell' })(TableSelectCellBase);\n","import { darken, fade, lighten } from '@material-ui/core/styles/colorManipulator';\n\nexport default theme => (\n theme.palette.type === 'light'\n ? lighten(fade(theme.palette.action.selected, 1), 0.96)\n : darken(fade(theme.palette.action.selected, 1), 0.68)\n);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableRow from '@material-ui/core/TableRow';\nimport { withStyles } from '@material-ui/core/styles';\nimport getSelectionColor from '../utils/get-selection-color';\n\nconst styles = theme => ({\n selected: {\n backgroundColor: getSelectionColor(theme),\n },\n});\n\nconst TableSelectRowBase = ({\n children,\n classes,\n className,\n onToggle,\n row,\n selectByRowClick,\n highlighted,\n tableColumn,\n tableRow,\n ...restProps\n}) => (\n {\n if (!selectByRowClick) return;\n e.stopPropagation();\n onToggle();\n }}\n {...restProps}\n >\n {children}\n \n);\n\nTableSelectRowBase.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onToggle: PropTypes.func,\n row: PropTypes.any,\n selectByRowClick: PropTypes.bool,\n highlighted: PropTypes.bool,\n tableColumn: PropTypes.object,\n tableRow: PropTypes.object,\n};\n\nTableSelectRowBase.defaultProps = {\n children: undefined,\n className: undefined,\n onToggle: () => {},\n row: undefined,\n selectByRowClick: false,\n highlighted: false,\n tableColumn: undefined,\n tableRow: undefined,\n};\n\nexport const TableSelectRow = withStyles(styles, { name: 'TableSelectRow' })(TableSelectRowBase);\n","import * as React from 'react';\nimport { withComponents } from '@devexpress/dx-react-core';\nimport { TableSelection as TableSelectionBase } from '@devexpress/dx-react-grid';\nimport { TableSelectAllCell as HeaderCell } from '../templates/table-select-all-cell';\nimport { TableSelectCell as Cell } from '../templates/table-select-cell';\nimport { TableSelectRow as Row } from '../templates/table-select-row';\n\nconst TableSelectionWithWidth = props => (\n \n);\nTableSelectionWithWidth.components = TableSelectionBase.components;\n\nexport const TableSelection = withComponents({ Row, Cell, HeaderCell })(TableSelectionWithWidth);\nTableSelection.COLUMN_TYPE = TableSelectionBase.COLUMN_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableMUI from '@material-ui/core/Table';\nimport { withStyles } from '@material-ui/core/styles';\nimport { RefType } from '@devexpress/dx-react-core';\nimport { getBorder } from './utils';\n\nconst styles = theme => ({\n table: {\n tableLayout: 'fixed',\n borderCollapse: 'separate',\n },\n stickyTable: {\n position: 'sticky',\n zIndex: 500,\n overflow: 'visible',\n background: theme.palette.background.paper,\n fallbacks: {\n position: '-webkit-sticky',\n },\n },\n headTable: {\n top: 0,\n },\n footTable: {\n borderTop: getBorder(theme),\n bottom: 0,\n },\n});\n\nconst TableBase = ({\n children, classes, className, use, tableRef,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nTableBase.propTypes = {\n use: PropTypes.oneOf(['head', 'foot']),\n children: PropTypes.node.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRef: RefType.isRequired,\n};\n\nTableBase.defaultProps = {\n use: undefined,\n className: undefined,\n};\n\nexport const Table = withStyles(styles, { name: 'Table' })(TableBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getBorder } from './utils';\n\nconst styles = theme => ({\n cell: {\n padding: 0,\n },\n footer: {\n borderBottom: getBorder(theme),\n },\n});\n\nconst TableStubCellBase = ({\n classes,\n className,\n tableRow,\n tableColumn,\n ...restProps\n}) => (\n \n);\n\nTableStubCellBase.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n};\n\nTableStubCellBase.defaultProps = {\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n};\n\nexport const TableStubCell = withStyles(styles, { name: 'TableStubCell' })(TableStubCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n cell: {\n padding: theme.spacing(6, 0),\n position: 'static !important',\n },\n textContainer: {\n display: 'inline-block',\n position: 'sticky',\n left: '50%',\n },\n text: {\n transform: 'translateX(-50%)',\n msTransform: 'translateX(-50%)',\n display: 'inline-block',\n },\n});\n\nexport const TableNoDataCellBase = ({\n style,\n colSpan,\n getMessage,\n classes,\n className,\n tableRow,\n tableColumn,\n ...restProps\n}) => (\n \n
\n \n {getMessage('noData')}\n \n
\n \n);\n\nTableNoDataCellBase.propTypes = {\n style: PropTypes.object,\n colSpan: PropTypes.number,\n getMessage: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n};\n\nTableNoDataCellBase.defaultProps = {\n style: null,\n colSpan: 1,\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n};\n\nexport const TableNoDataCell = withStyles(styles, { name: 'TableNoDataCell' })(TableNoDataCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n root: {\n flexGrow: 1,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n // NOTE: fix sticky positioning in Safari\n width: '100%',\n },\n};\n\nconst TableContainerBase = ({\n children, classes, className, ...restProps\n}) => (\n \n
\n {children}\n
\n \n);\n\nTableContainerBase.propTypes = {\n children: PropTypes.node.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nTableContainerBase.defaultProps = {\n className: undefined,\n};\n\nexport const TableContainer = withStyles(styles, { name: 'TableContainer' })(TableContainerBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TableRowMUI from '@material-ui/core/TableRow';\n\nexport const TableStubRow = ({\n children,\n tableRow,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nTableStubRow.propTypes = {\n children: PropTypes.node,\n tableRow: PropTypes.object,\n};\n\nTableStubRow.defaultProps = {\n children: undefined,\n tableRow: undefined,\n};\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { Table as TableBase } from '@devexpress/dx-react-grid';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableFooter from '@material-ui/core/TableFooter';\nimport { Table as TableComponent } from '../templates/table';\nimport { TableRow as Row } from '../templates/table-row';\nimport { TableLayout as Layout } from '../templates/table-layout';\nimport { TableCell as Cell } from '../templates/table-cell';\nimport { TableStubCell as StubCell } from '../templates/table-stub-cell';\nimport { TableNoDataCell as NoDataCell } from '../templates/table-no-data-cell';\nimport { TableContainer as Container } from '../templates/table-container';\nimport { TableStubRow as StubRow } from '../templates/table-stub-row';\n\nexport const Table = withComponents({\n Table: TableComponent,\n TableHead,\n TableBody,\n TableFooter,\n Container,\n Layout,\n Row,\n Cell,\n NoDataRow: Row,\n NoDataCell,\n StubRow,\n StubCell,\n StubHeaderCell: StubCell,\n})(TableBase);\n\nTable.components = TableBase.components;\n\nTable.COLUMN_TYPE = TableBase.COLUMN_TYPE;\nTable.ROW_TYPE = TableBase.ROW_TYPE;\nTable.NODATA_ROW_TYPE = TableBase.NODATA_ROW_TYPE;\n","import * as React from 'react';\nimport {\n TableLayout as TableLayoutCore,\n StaticTableLayout,\n} from '@devexpress/dx-react-grid';\n\nconst MINIMAL_COLUMN_WIDTH = 120;\n\nexport const TableLayout = props => (\n \n);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport TableCell from '@material-ui/core/TableCell';\n\nconst styles = theme => ({\n cell: {\n padding: theme.spacing(1),\n backgroundImage: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAACqCAYAAABbAOqQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA39pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjYWQ2ODE5MS00ZDMxLWRjNGYtOTU0NC1jNjJkMTIxMjY2M2IiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjY1RUVFQzAzRDYzMTFFODlFNThCOUJBQjU4Q0EzRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjY1RUVFQkYzRDYzMTFFODlFNThCOUJBQjU4Q0EzRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjVlMjM1Y2U0LTc5ZWUtNGI0NC05ZjlkLTk2NTZmZGFjNjhhNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk1OTQ2MjBiLTUyMTQtYTM0Yy04Nzc5LTEwMmEyMTY4MTlhOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvLbJKYAAADrSURBVHja7N3BDYBACABBsQn7L48q0BoMD5SZxAZuc74gF1V1MMfpCARBEEEQRBAEEQRBdovnuxxDq3RD/LIQRBAEQRBBEEQQBBEEQQQBAAAAAAAAABhi8gZVbgxi6kQQBBEEQQRBEEEQRBAEQRBBAAAAAAAAAAAabX2Daux2lqkTQRBEEAQRBEEEQRBBEARBBAEAAAAAAAAAaLR1g2osUyeCIIggCCIIggiCIIIgCIIIAgAAAAAAAADQ6KsbVPnXIKZOBEEQQRBEEAQRBEEEQRAEEYRXoqqcghuCIIIgiCAIIgiCCMIUtwADALYCCr92l++TAAAAAElFTkSuQmCC)',\n backgroundRepeat: 'no-repeat repeat',\n backgroundOrigin: 'content-box',\n },\n});\n\nconst TableSkeletonCellBase = ({\n classes,\n className,\n tableRow,\n tableColumn,\n ...restProps\n}) => (\n \n);\n\nTableSkeletonCellBase.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n};\n\nTableSkeletonCellBase.defaultProps = {\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n};\n\nexport const TableSkeletonCell = withStyles(styles, { name: 'TableSkeletonCell' })(TableSkeletonCellBase);\n","import * as React from 'react';\nimport { makeVirtualTable } from '@devexpress/dx-react-grid';\nimport { Table } from './table';\nimport { Table as TableComponent } from '../templates/table';\nimport { TableSkeletonCell as SkeletonCell } from '../templates/table-skeleton-cell';\nimport { VirtualTableLayout as VirtualLayout } from '../templates/virtual-table-layout';\n\nconst FixedHeader = props => ;\nconst FixedFooter = props => ;\n\nexport const VirtualTable = makeVirtualTable(Table, {\n VirtualLayout,\n FixedHeader,\n FixedFooter,\n SkeletonCell,\n defaultEstimatedRowHeight: 53,\n defaultHeight: 530,\n});\n\nVirtualTable.COLUMN_TYPE = Table.COLUMN_TYPE;\nVirtualTable.ROW_TYPE = Table.ROW_TYPE;\nVirtualTable.NODATA_ROW_TYPE = Table.NODATA_ROW_TYPE;\n","import * as React from 'react';\nimport {\n TableLayout,\n VirtualTableLayout as VirtualTableLayoutCore,\n} from '@devexpress/dx-react-grid';\n\nconst MINIMAL_COLUMN_WIDTH = 120;\n\nexport const VirtualTableLayout = props => (\n \n);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = ({ spacing }) => ({\n cell: {\n padding: 0,\n '&:first-child': {\n paddingLeft: spacing(3),\n },\n },\n flexContainer: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nconst TableFilterCellBase = ({\n filter, getMessage, onFilter,\n classes, children, className,\n tableRow, tableColumn, column, filteringEnabled,\n ...restProps\n}) => (\n \n
\n {children}\n
\n \n);\n\nTableFilterCellBase.propTypes = {\n filter: PropTypes.object,\n onFilter: PropTypes.func,\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n getMessage: PropTypes.func.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n column: PropTypes.object,\n filteringEnabled: PropTypes.bool,\n};\n\nTableFilterCellBase.defaultProps = {\n filter: null,\n onFilter: () => {},\n children: undefined,\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n column: undefined,\n filteringEnabled: true,\n};\n\nexport const TableFilterCell = withStyles(styles, { name: 'TableFilterCell' })(TableFilterCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport Input from '@material-ui/core/Input';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n input: {\n width: '100%',\n fontSize: '14px',\n },\n root: {\n margin: theme.spacing(1),\n },\n});\n\nconst EditorBase = ({\n value, disabled, getMessage, onChange, classes,\n ...restProps\n}) => (\n onChange(event.target.value)}\n placeholder={getMessage('filterPlaceholder')}\n {...restProps}\n />\n);\n\nEditorBase.propTypes = {\n classes: PropTypes.object.isRequired,\n value: PropTypes.any,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n getMessage: PropTypes.func.isRequired,\n};\n\nEditorBase.defaultProps = {\n value: '',\n disabled: false,\n onChange: () => {},\n};\n\nexport const Editor = withStyles(styles, { name: 'Editor' })(EditorBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = ({ spacing }) => ({\n icon: {\n marginRight: spacing(1),\n },\n iconItem: {\n minWidth: spacing(2),\n },\n selectMenu: {\n position: 'absolute !important',\n },\n});\n\nclass FilterSelectorBase extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n opened: false,\n };\n\n this.setButtonRef = (buttonRef) => {\n this.buttonRef = buttonRef;\n };\n this.handleButtonClick = () => {\n this.setState(prevState => ({ opened: !prevState.opened }));\n };\n this.handleMenuClose = () => {\n this.setState({ opened: false });\n };\n this.handleMenuItemClick = (nextValue) => {\n const { onChange } = this.props;\n this.setState({ opened: false });\n onChange(nextValue);\n };\n }\n\n render() {\n const {\n value, availableValues, disabled, getMessage,\n iconComponent: Icon, toggleButtonComponent: ToggleButton, classes,\n } = this.props;\n const { opened } = this.state;\n return availableValues.length ? (\n \n \n \n \n \n {availableValues.map(valueItem => (\n this.handleMenuItemClick(valueItem)}\n >\n \n \n \n \n {getMessage(valueItem)}\n \n \n ))}\n \n \n ) : null;\n }\n}\n\nFilterSelectorBase.propTypes = {\n value: PropTypes.string,\n availableValues: PropTypes.arrayOf(PropTypes.string),\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n // oneOfType is a workaround because React.memo returns react object\n iconComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n // oneOfType is a workaround because withStyles returns react object\n toggleButtonComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n getMessage: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n};\n\nFilterSelectorBase.defaultProps = {\n value: undefined,\n availableValues: [],\n onChange: () => {},\n disabled: false,\n};\n\nexport const FilterSelector = withStyles(styles, { name: 'FilterSelector' })(FilterSelectorBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\n\nexport const ToggleButton = ({\n buttonRef, onToggle, disabled, children, ...restProps\n}) => (\n \n {children}\n \n);\n\nToggleButton.propTypes = {\n buttonRef: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n children: PropTypes.node,\n disabled: PropTypes.bool,\n};\n\nToggleButton.defaultProps = {\n children: undefined,\n disabled: false,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nimport SearchIcon from '@material-ui/icons/Search';\n\nconst AVAILABLE_PATHS = {\n contains: 'M6.094 19.563l-2.031 0.281c-0.646 0.094-1.13 0.266-1.453 0.516-0.302 0.24-0.453 0.646-0.453 1.219 0 0.438 0.138 0.799 0.414 1.086s0.664 0.419 1.164 0.398c0.708 0 1.281-0.24 1.719-0.719 0.427-0.49 0.641-1.125 0.641-1.906v-0.875zM8.234 24.641h-2.172v-1.641c-0.677 1.24-1.661 1.859-2.953 1.859-0.927 0-1.682-0.276-2.266-0.828-0.552-0.552-0.828-1.292-0.828-2.219 0-1.927 1.068-3.052 3.203-3.375l2.875-0.438c0-1.469-0.656-2.203-1.969-2.203-1.177 0-2.224 0.427-3.141 1.281v-2.078c1.010-0.656 2.198-0.984 3.563-0.984 2.458 0 3.687 1.302 3.687 3.906v6.719zM14.734 16.797c0.521-0.583 1.167-0.875 1.938-0.875 0.74 0 1.323 0.281 1.75 0.844 0.448 0.583 0.672 1.38 0.672 2.391 0 1.188-0.24 2.13-0.719 2.828-0.49 0.677-1.13 1.016-1.922 1.016-0.719 0-1.302-0.271-1.75-0.813-0.427-0.51-0.641-1.141-0.641-1.891v-1.266c-0.021-0.906 0.203-1.651 0.672-2.234zM16.969 24.859c1.375 0 2.443-0.521 3.203-1.562 0.781-1.042 1.172-2.427 1.172-4.156 0-1.542-0.354-2.771-1.063-3.688-0.688-0.958-1.651-1.438-2.891-1.438-1.427 0-2.531 0.693-3.313 2.078v-6.781h-2.156v15.328h2.172v-1.5c0.677 1.146 1.635 1.719 2.875 1.719zM22.266 6.125c0.135 0 0.245 0.063 0.328 0.188 0.104 0.073 0.156 0.182 0.156 0.328v22.953c0 0.125-0.052 0.24-0.156 0.344-0.083 0.115-0.193 0.172-0.328 0.172h-12.281c-0.146 0-0.266-0.057-0.359-0.172-0.115-0.115-0.172-0.229-0.172-0.344v-22.953c0-0.135 0.057-0.245 0.172-0.328 0.094-0.125 0.214-0.188 0.359-0.188h12.281zM31.531 24.141c-0.76 0.479-1.693 0.719-2.797 0.719-1.427 0-2.589-0.479-3.484-1.438-0.865-0.958-1.286-2.198-1.266-3.719 0-1.688 0.448-3.052 1.344-4.094 0.917-1.042 2.208-1.573 3.875-1.594 0.854 0 1.63 0.177 2.328 0.531v2.156c-0.677-0.531-1.391-0.792-2.141-0.781-0.938 0-1.714 0.339-2.328 1.016-0.594 0.677-0.891 1.552-0.891 2.625 0 1.042 0.297 1.88 0.891 2.516 0.521 0.615 1.25 0.922 2.188 0.922 0.813 0 1.573-0.297 2.281-0.891v2.031z',\n notContains: 'M5.828 20.469v0.328c0 0.385-0.057 0.667-0.172 0.844-0.052 0.083-0.117 0.177-0.195 0.281s-0.174 0.224-0.289 0.359c-0.458 0.521-1.031 0.771-1.719 0.75-0.521 0-0.927-0.141-1.219-0.422-0.292-0.292-0.438-0.661-0.438-1.109 0-0.156 0.010-0.273 0.031-0.352s0.052-0.141 0.094-0.188 0.094-0.086 0.156-0.117 0.141-0.078 0.234-0.141c0.031-0.031 0.078-0.070 0.141-0.117s0.146-0.086 0.25-0.117h3.125zM14.016 18.328c0.010-0.406 0.070-0.729 0.18-0.969s0.289-0.49 0.539-0.75c0.479-0.604 1.13-0.906 1.953-0.906 0.75 0 1.344 0.292 1.781 0.875 0.198 0.25 0.349 0.495 0.453 0.734s0.172 0.578 0.203 1.016h-5.109zM19.078 20.469c-0.063 0.427-0.146 0.708-0.25 0.844-0.052 0.073-0.109 0.159-0.172 0.258l-0.219 0.352c-0.469 0.688-1.135 1.031-2 1.031-0.708 0-1.297-0.271-1.766-0.813l-0.305-0.359c-0.089-0.104-0.159-0.198-0.211-0.281-0.104-0.167-0.156-0.448-0.156-0.844v-0.188h5.078zM33.344 18.328l-6.875 0c0.031-0.198 0.070-0.372 0.117-0.523s0.107-0.284 0.18-0.398 0.154-0.224 0.242-0.328l0.305-0.344c0.604-0.688 1.391-1.031 2.359-1.031 0.771 0 1.51 0.266 2.219 0.797v-2.234c-0.75-0.333-1.552-0.5-2.406-0.5-1.667 0-2.974 0.531-3.922 1.594-0.396 0.427-0.708 0.859-0.938 1.297s-0.385 0.995-0.469 1.672h-2.719c-0.021-0.719-0.117-1.31-0.289-1.773s-0.424-0.914-0.758-1.352c-0.729-0.938-1.719-1.417-2.969-1.438-1.479 0-2.615 0.708-3.406 2.125v-6.953h-2.266v9.391h-3.75v-0.594c0-2.646-1.25-3.969-3.75-3.969-1.365 0-2.583 0.328-3.656 0.984v2.125c0.99-0.865 2.063-1.297 3.219-1.297 1.344 0 2.016 0.75 2.016 2.25l-2.953 0.125c-0.25 0.021-0.487 0.070-0.711 0.148l-0.633 0.227h-3.328v2.141h1.828l-0.281 0.594c-0.073 0.135-0.109 0.37-0.109 0.703 0 0.938 0.276 1.682 0.828 2.234 0.542 0.573 1.313 0.859 2.313 0.859 1.281 0 2.297-0.635 3.047-1.906v1.656h2.172v-4.141h3.75v4.141h2.297v-1.516c0.677 1.188 1.661 1.776 2.953 1.766 1.385 0 2.464-0.531 3.234-1.594 0.302-0.385 0.557-0.792 0.766-1.219 0.198-0.385 0.339-0.911 0.422-1.578h2.703c0.021 0.708 0.141 1.25 0.359 1.625 0.115 0.198 0.253 0.401 0.414 0.609s0.346 0.427 0.555 0.656c0.906 1 2.099 1.5 3.578 1.5 1.104 0 2.057-0.245 2.859-0.734v-2.109c-0.75 0.604-1.526 0.917-2.328 0.938-0.979 0-1.74-0.318-2.281-0.953l-0.328-0.328c-0.094-0.094-0.177-0.195-0.25-0.305s-0.13-0.234-0.172-0.375-0.073-0.315-0.094-0.523h6.906v-2.141zM33.297 5.688c0.146 0 0.266 0.047 0.359 0.141 0.104 0.104 0.156 0.229 0.156 0.375v23.484c0 0.135-0.052 0.255-0.156 0.359-0.094 0.115-0.214 0.172-0.359 0.172h-35.078c-0.135 0-0.26-0.057-0.375-0.172-0.094-0.115-0.135-0.234-0.125-0.359v-23.484c0-0.104 0.042-0.229 0.125-0.375 0.104-0.094 0.229-0.141 0.375-0.141h35.078z',\n startsWith: 'M6.109 20.688c0 0.813-0.219 1.474-0.656 1.984-0.448 0.531-1.010 0.786-1.688 0.766-0.51 0-0.896-0.141-1.156-0.422-0.302-0.292-0.443-0.667-0.422-1.125 0-0.615 0.151-1.042 0.453-1.281 0.177-0.135 0.378-0.245 0.602-0.328s0.497-0.146 0.82-0.188l2.047-0.313v0.906zM8.203 18.063c0-2.688-1.219-4.031-3.656-4.031-1.333 0-2.51 0.339-3.531 1.016v2.141c0.917-0.885 1.948-1.328 3.094-1.328 1.333 0 2 0.766 2 2.297l-2.891 0.453c-2.115 0.333-3.161 1.516-3.141 3.547 0 0.958 0.266 1.724 0.797 2.297 0.542 0.573 1.292 0.859 2.25 0.859 1.292 0 2.26-0.641 2.906-1.922v1.688h2.172v-7.016zM14.703 16.906c0.479-0.604 1.109-0.906 1.891-0.906 0.76 0 1.344 0.297 1.75 0.891 0.438 0.615 0.656 1.443 0.656 2.484 0 1.219-0.229 2.198-0.688 2.938-0.469 0.719-1.109 1.078-1.922 1.078-0.719 0-1.286-0.281-1.703-0.844-0.448-0.542-0.672-1.208-0.672-2v-1.313c-0.010-0.938 0.219-1.714 0.688-2.328zM16.906 25.313c1.365 0 2.422-0.542 3.172-1.625 0.771-1.115 1.156-2.563 1.156-4.344 0-1.604-0.339-2.885-1.016-3.844-0.698-0.979-1.661-1.469-2.891-1.469-1.438 0-2.531 0.719-3.281 2.156v-7.078h-2.188v15.969h2.172v-1.563c0.667 1.198 1.625 1.797 2.875 1.797zM31.375 24.563c-0.75 0.5-1.672 0.75-2.766 0.75-1.427 0-2.583-0.505-3.469-1.516-0.885-0.969-1.318-2.26-1.297-3.875 0-1.74 0.464-3.161 1.391-4.266 0.927-1.063 2.198-1.604 3.813-1.625 0.844 0 1.62 0.172 2.328 0.516v2.25c-0.688-0.563-1.406-0.828-2.156-0.797-0.927 0-1.688 0.349-2.281 1.047-0.583 0.698-0.875 1.609-0.875 2.734 0 1.094 0.281 1.969 0.844 2.625 0.542 0.656 1.286 0.984 2.234 0.984 0.781 0 1.526-0.323 2.234-0.969v2.141zM22.172 5.844c0.115 0 0.224 0.052 0.328 0.156 0.094 0.125 0.141 0.25 0.141 0.375v23.844c0 0.156-0.047 0.286-0.141 0.391-0.115 0.094-0.224 0.141-0.328 0.141h-23.469c-0.125 0-0.24-0.047-0.344-0.141-0.094-0.104-0.141-0.234-0.141-0.391v-23.844c0-0.125 0.047-0.25 0.141-0.375 0.104-0.104 0.219-0.156 0.344-0.156h23.469z',\n endsWith: 'M6.234 19.344l-2.047 0.313c-0.625 0.083-1.104 0.26-1.438 0.531-0.302 0.24-0.453 0.651-0.453 1.234 0 0.469 0.141 0.852 0.422 1.148s0.672 0.435 1.172 0.414c0.677 0 1.234-0.25 1.672-0.75 0.448-0.51 0.672-1.167 0.672-1.969v-0.922zM8.359 24.578h-2.141v-1.656c-0.667 1.26-1.656 1.891-2.969 1.891-0.938 0-1.698-0.276-2.281-0.828-0.542-0.573-0.813-1.328-0.813-2.266 0-2.021 1.063-3.188 3.188-3.5l2.891-0.484c0-1.51-0.661-2.266-1.984-2.266-1.167 0-2.214 0.443-3.141 1.328v-2.125c1.042-0.677 2.224-1.016 3.547-1.016 2.469 0 3.703 1.333 3.703 4v6.922zM14.906 16.516c0.49-0.615 1.13-0.922 1.922-0.922 0.76 0 1.339 0.297 1.734 0.891 0.438 0.615 0.656 1.438 0.656 2.469 0 1.208-0.229 2.182-0.688 2.922-0.469 0.698-1.115 1.047-1.938 1.047-0.708 0-1.276-0.276-1.703-0.828-0.458-0.552-0.688-1.214-0.688-1.984v-1.281c-0.010-0.948 0.224-1.719 0.703-2.313zM17.125 24.813c1.354 0 2.417-0.531 3.188-1.594 0.781-1.073 1.172-2.505 1.172-4.297 0-1.604-0.349-2.87-1.047-3.797-0.698-0.979-1.661-1.469-2.891-1.469-1.438 0-2.542 0.714-3.313 2.141v-7h-2.203v15.781h2.188v-1.531c0.677 1.177 1.646 1.766 2.906 1.766zM31.688 21.969c-0.698 0.635-1.453 0.953-2.266 0.953-0.958 0-1.703-0.323-2.234-0.969-0.563-0.667-0.849-1.536-0.859-2.609 0-1.115 0.297-2.016 0.891-2.703 0.594-0.698 1.359-1.047 2.297-1.047 0.76 0 1.484 0.266 2.172 0.797v-2.219c-0.708-0.344-1.49-0.516-2.344-0.516-1.625 0-2.906 0.536-3.844 1.609-0.938 1.083-1.406 2.495-1.406 4.234 0 1.594 0.438 2.875 1.313 3.844 0.885 0.979 2.052 1.469 3.5 1.469 1.083 0 2.010-0.245 2.781-0.734v-2.109zM33.188 5.563c0.104 0 0.219 0.047 0.344 0.141 0.094 0.146 0.141 0.276 0.141 0.391v23.578c0 0.146-0.047 0.281-0.141 0.406-0.125 0.094-0.24 0.141-0.344 0.141h-23.625c-0.125 0-0.24-0.047-0.344-0.141-0.094-0.135-0.135-0.271-0.125-0.406v-23.578c0-0.115 0.042-0.245 0.125-0.391 0.094-0.094 0.208-0.141 0.344-0.141h23.625z',\n equal: 'M29.438 11.797v2.75h-26.922v-2.75h26.922zM29.438 17.406v2.75h-26.922v-2.75h26.922z',\n notEqual: 'M16.906 11.797l3.016-6.547 2.094 1-2.547 5.547h9.969v2.75h-11.234l-1.328 2.859h12.563v2.75h-13.828l-2.875 6.281-2.094-0.984 2.438-5.297h-10.563v-2.75h11.828l1.297-2.859h-13.125v-2.75h14.391z',\n greaterThan: 'M24.125 16.047l-14.906 8.625-1.375-2.375 10.781-6.25-10.781-6.234 1.375-2.375z',\n greaterThanOrEqual: 'M23.031 14.328l-14.906 8.625-1.375-2.375 10.797-6.25-10.797-6.234 1.375-2.375zM23.828 15.641l1.375 2.391-14.938 8.609-1.375-2.375z',\n lessThan: 'M22.75 7.438l1.375 2.375-10.781 6.234 10.781 6.25-1.375 2.375-14.906-8.609z',\n lessThanOrEqual: 'M23.828 5.719l1.375 2.375-10.813 6.234 10.813 6.25-1.375 2.375-14.922-8.609zM23.047 24.266l-1.375 2.375-14.922-8.609 1.375-2.391z',\n};\n\nexport const Icon = React.memo(({ type, ...restProps }) => {\n const path = AVAILABLE_PATHS[type];\n return path\n ? (\n \n \n \n )\n : ;\n});\n\nIcon.propTypes = {\n type: PropTypes.string,\n};\n\nIcon.defaultProps = {\n type: undefined,\n};\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableFilterRow as TableFilterRowBase } from '@devexpress/dx-react-grid';\nimport { TableFilterCell as Cell } from '../templates/table-filter-cell';\nimport { TableRow as Row } from '../templates/table-row';\nimport { Editor } from '../templates/filter-row/editor';\nimport { FilterSelector } from '../templates/filter-row/filter-selector';\nimport { ToggleButton } from '../templates/filter-row/filter-selector/toggle-button';\nimport { Icon } from '../templates/filter-row/icon';\n\nexport const TableFilterRow = withComponents({\n Row, Cell, Editor, FilterSelector, Icon, ToggleButton,\n})(TableFilterRowBase);\n\nTableFilterRow.ROW_TYPE = TableFilterRowBase.ROW_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { Draggable } from '@devexpress/dx-react-core';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n resizeHandle: {\n position: 'absolute',\n userSelect: 'none',\n MozUserSelect: 'none',\n WebkitUserSelect: 'none',\n width: theme.spacing(2),\n top: 0,\n right: -theme.spacing(1),\n height: '100%',\n cursor: 'col-resize',\n zIndex: 100,\n },\n resizeHandleLine: {\n position: 'absolute',\n backgroundColor: theme.palette.primary.light,\n height: '50%',\n width: '1px',\n top: '25%',\n transition: 'all linear 100ms',\n },\n resizeHandleFirstLine: {\n left: `${theme.spacing(1) - 1}px`,\n },\n resizeHandleSecondLine: {\n left: `${theme.spacing(1) + 1}px`,\n },\n resizeHandleLineActive: {\n left: theme.spacing(1),\n },\n resizeHandleActive: {\n '& $resizeHandleLine': {\n opacity: '1',\n backgroundColor: theme.palette.primary.light,\n height: 'calc(100% - 4px)',\n top: '2px',\n },\n },\n});\n\nexport class ResizingControlBase extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n resizing: false,\n };\n\n this.onResizeStart = ({ x }) => {\n this.resizeStartingX = x;\n this.setState({ resizing: true });\n };\n this.onResizeUpdate = ({ x }) => {\n const { onWidthDraft } = this.props;\n onWidthDraft({ shift: x - this.resizeStartingX });\n };\n this.onResizeEnd = ({ x }) => {\n const { onWidthChange, onWidthDraftCancel } = this.props;\n onWidthDraftCancel();\n onWidthChange({ shift: x - this.resizeStartingX });\n this.setState({ resizing: false });\n };\n }\n\n render() {\n const { classes, resizeHandleOpacityClass, resizeLastHandleClass } = this.props;\n const { resizing } = this.state;\n\n return (\n \n \n \n \n \n \n );\n }\n}\n\nResizingControlBase.propTypes = {\n onWidthChange: PropTypes.func.isRequired,\n onWidthDraft: PropTypes.func.isRequired,\n onWidthDraftCancel: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n resizeLastHandleClass: PropTypes.string.isRequired,\n resizeHandleOpacityClass: PropTypes.string.isRequired,\n};\n\nexport const ResizingControl = withStyles(styles, { name: 'ResizingControl' })(ResizingControlBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\n\nimport { DragSource } from '@devexpress/dx-react-core';\n\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { ResizingControl } from './table-header-cell/resizing-control';\n\nconst styles = theme => ({\n plainTitle: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: theme.spacing(3),\n },\n cell: {\n outline: 'none',\n position: 'relative',\n overflow: 'visible',\n paddingRight: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n '&:first-child': {\n paddingLeft: theme.spacing(3),\n },\n '&:hover $resizeHandleLine': {\n opacity: 1,\n },\n '&:nth-last-child(2) $resizeHandle': {\n width: theme.spacing(1),\n right: '1px',\n },\n },\n resizeHandle: {},\n resizeHandleLine: {\n opacity: 0,\n },\n '@media (pointer: fine)': {\n resizeHandleLine: {\n opacity: 0,\n },\n resizeHandleActive: {\n '& $resizeHandleLine': {\n opacity: 1,\n },\n },\n resizeHandle: {\n '&:hover $resizeHandleLine': {\n opacity: 1,\n },\n },\n },\n cellNoUserSelect: {\n userSelect: 'none',\n MozUserSelect: 'none',\n WebkitUserSelect: 'none',\n },\n cellDraggable: {\n cursor: 'pointer',\n },\n cellDimmed: {\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: theme.palette.background.paper,\n opacity: 0.7,\n pointerEvents: 'none',\n zIndex: 400,\n },\n },\n cellRight: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n textAlign: 'right',\n },\n cellCenter: {\n textAlign: 'center',\n },\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n cellNoWrap: {\n whiteSpace: 'nowrap',\n },\n});\n\nclass TableHeaderCellBase extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n dragging: false,\n };\n this.dragRef = React.createRef();\n this.cellRef = React.createRef();\n this.getWidthGetter = () => {\n const { getCellWidth } = this.props;\n const node = this.cellRef.current;\n return node && getCellWidth(() => {\n const { width } = node.getBoundingClientRect();\n return width;\n });\n };\n\n this.onDragStart = () => {\n this.setState({ dragging: true });\n };\n this.onDragEnd = () => {\n if (this.dragRef.current) {\n this.setState({ dragging: false });\n }\n };\n }\n\n componentDidMount() {\n this.getWidthGetter();\n }\n\n render() {\n const {\n style, column, tableColumn,\n draggingEnabled, resizingEnabled,\n onWidthChange, onWidthDraft, onWidthDraftCancel, getCellWidth,\n classes, tableRow, className, children,\n ...restProps\n } = this.props;\n\n const { dragging } = this.state;\n const align = (tableColumn && tableColumn.align) || 'left';\n\n const tableCellClasses = classNames({\n [classes.cell]: true,\n [classes.cellRight]: align === 'right',\n [classes.cellCenter]: align === 'center',\n [classes.cellNoUserSelect]: draggingEnabled,\n [classes.cellDraggable]: draggingEnabled,\n [classes.cellDimmed]: dragging || (tableColumn && tableColumn.draft),\n [classes.cellNoWrap]: !(tableColumn && tableColumn.wordWrapEnabled),\n }, className);\n const cellLayout = (\n \n
\n {children}\n
\n {resizingEnabled && (\n \n )}\n \n );\n\n return draggingEnabled ? (\n \n {cellLayout}\n \n ) : cellLayout;\n }\n}\n\nTableHeaderCellBase.propTypes = {\n tableColumn: PropTypes.object,\n tableRow: PropTypes.object,\n column: PropTypes.object,\n style: PropTypes.object,\n draggingEnabled: PropTypes.bool,\n resizingEnabled: PropTypes.bool,\n onWidthChange: PropTypes.func,\n onWidthDraft: PropTypes.func,\n onWidthDraftCancel: PropTypes.func,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n children: PropTypes.node,\n getCellWidth: PropTypes.func,\n};\n\nTableHeaderCellBase.defaultProps = {\n column: undefined,\n tableColumn: undefined,\n tableRow: undefined,\n style: null,\n draggingEnabled: false,\n resizingEnabled: false,\n onWidthChange: undefined,\n onWidthDraft: undefined,\n onWidthDraftCancel: undefined,\n className: undefined,\n children: undefined,\n getCellWidth: () => {},\n};\n\nexport const TableHeaderCell = withStyles(styles, { name: 'TableHeaderCell' })(TableHeaderCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'clsx';\n\nconst ENTER_KEY_CODE = 13;\nconst SPACE_KEY_CODE = 32;\n\nconst styles = () => ({\n root: {\n width: '100%',\n userSelect: 'none',\n MozUserSelect: 'none',\n WebkitUserSelect: 'none',\n },\n tooltipRoot: {\n display: 'block',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n sortLabelRoot: {\n maxWidth: '100%',\n },\n sortLabelRight: {\n flexDirection: 'row-reverse',\n },\n sortLabelActive: {\n color: 'inherit',\n },\n});\n\nconst onClick = (e, onSort) => {\n const isActionKeyDown = e.keyCode === ENTER_KEY_CODE || e.keyCode === SPACE_KEY_CODE;\n const isMouseClick = e.keyCode === undefined;\n\n const cancelSortingRelatedKey = e.metaKey || e.ctrlKey;\n const direction = (isMouseClick || isActionKeyDown) && cancelSortingRelatedKey\n ? null\n : undefined;\n const keepOther = e.shiftKey || cancelSortingRelatedKey;\n\n e.preventDefault();\n onSort({ direction, keepOther });\n};\n\nconst SortLabelBase = ({\n column, align, direction, children, onSort,\n classes, getMessage, disabled, className, ...restProps\n}) => (\n \n \n onClick(e, onSort)}\n disabled={disabled}\n classes={{\n root: classNames({\n [classes.sortLabelRoot]: true,\n [classes.sortLabelRight]: align === 'right',\n }),\n active: classes.sortLabelActive,\n }}\n >\n {children}\n \n \n \n);\n\nSortLabelBase.propTypes = {\n column: PropTypes.object,\n align: PropTypes.string,\n direction: PropTypes.oneOf(['asc', 'desc', null]),\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n onSort: PropTypes.func.isRequired,\n getMessage: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n};\n\nSortLabelBase.defaultProps = {\n column: undefined,\n direction: undefined,\n disabled: false,\n align: 'left',\n className: null,\n children: undefined,\n};\n\nexport const SortLabel = withStyles(styles, { name: 'SortLabel' })(SortLabelBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport List from '@material-ui/icons/List';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n root: {\n paddingLeft: 0,\n height: theme.spacing(3),\n cursor: 'pointer',\n },\n disabled: {\n cursor: 'default',\n opacity: 0.3,\n },\n});\n\nconst GroupButtonBase = ({\n disabled, onGroup, classes, className, ...restProps\n}) => (\n {\n if (disabled) return;\n e.stopPropagation();\n onGroup(e);\n }}\n className={classNames({\n [classes.root]: true,\n [classes.disabled]: disabled,\n }, className)}\n {...restProps}\n >\n \n \n);\n\nGroupButtonBase.propTypes = {\n onGroup: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n};\n\nGroupButtonBase.defaultProps = {\n disabled: false,\n className: undefined,\n};\n\nexport const GroupButton = withStyles(styles, { name: 'GroupButton' })(GroupButtonBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'clsx';\n\nconst styles = {\n title: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n};\n\nconst TitelBase = ({\n children, classes, className, ...restProps\n}) => (\n \n {children}\n \n);\n\nTitelBase.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nTitelBase.defaultProps = {\n className: null,\n children: undefined,\n};\n\nexport const Title = withStyles(styles, { name: 'Title' })(TitelBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'clsx';\n\nconst styles = {\n content: {\n width: '100%',\n minWidth: 0,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n alignCenter: {\n justifyContent: 'center',\n },\n alignRight: {\n justifyContent: 'flex-end',\n },\n};\n\nconst ContentBase = ({\n column, align, children, classes, className, ...restProps\n}) => (\n \n {children}\n \n);\n\nContentBase.propTypes = {\n column: PropTypes.object,\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nContentBase.defaultProps = {\n column: undefined,\n align: 'left',\n className: null,\n children: undefined,\n};\n\nexport const Content = withStyles(styles, { name: 'Content' })(ContentBase);\n","import * as PropTypes from 'prop-types';\nimport { withComponents } from '@devexpress/dx-react-core';\nimport { TableHeaderRow as TableHeaderRowBase } from '@devexpress/dx-react-grid';\nimport { TableHeaderCell as Cell } from '../templates/table-header-cell';\nimport { TableRow as Row } from '../templates/table-row';\nimport { SortLabel } from '../templates/table-header-cell/sort-label';\nimport { GroupButton } from '../templates/table-header-cell/group-button';\nimport { Title } from '../templates/table-header-cell/title';\nimport { Content } from '../templates/table-header-cell/content';\nimport { withPatchedProps } from '../utils/with-patched-props';\n\nconst defaultMessages = {\n sortingHint: 'Sort',\n};\n\nconst TableHeaderRowWithMessages = withPatchedProps(({ messages, ...restProps }) => ({\n messages: { ...defaultMessages, ...messages },\n ...restProps,\n}))(TableHeaderRowBase);\n\nTableHeaderRowWithMessages.propTypes = {\n messages: PropTypes.shape({\n sortingHint: PropTypes.string,\n }),\n};\n\nTableHeaderRowWithMessages.defaultProps = {\n messages: {},\n};\n\nTableHeaderRowWithMessages.components = TableHeaderRowBase.components;\n\nexport const TableHeaderRow = withComponents({\n Cell, Row, Content, SortLabel, Title, GroupButton,\n})(TableHeaderRowWithMessages);\n\nTableHeaderRow.ROW_TYPE = TableHeaderRowBase.ROW_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getBorder } from '../utils';\n\nconst styles = theme => ({\n cell: {\n paddingRight: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n '&:first-child': {\n paddingLeft: theme.spacing(3),\n },\n '&:last-child': {\n paddingRight: theme.spacing(3),\n borderRight: 0,\n },\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n borderBottom: getBorder(theme),\n borderRight: getBorder(theme),\n },\n beforeBorder: {\n borderLeft: getBorder(theme),\n },\n});\n\nconst CellBase = ({\n column, value, children, classes, tableRow, tableColumn, row, className, beforeBorder,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nCellBase.propTypes = {\n value: PropTypes.any,\n column: PropTypes.object,\n row: PropTypes.any,\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n className: PropTypes.string,\n beforeBorder: PropTypes.bool,\n};\n\nCellBase.defaultProps = {\n value: undefined,\n column: undefined,\n row: undefined,\n children: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n className: undefined,\n beforeBorder: false,\n};\n\nexport const Cell = withStyles(styles, { name: 'Cell' })(CellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getBorder } from '../utils';\n\nconst styles = theme => ({\n headerCellBorder: {\n borderRight: getBorder(theme),\n borderTop: 'none',\n '&:last-child': {\n borderRight: 0,\n },\n verticalAlign: 'bottom',\n paddingBottom: theme.spacing(2),\n },\n beforeBorder: {\n borderLeft: getBorder(theme),\n },\n});\n\nexport const BandedHeaderCellBase = ({\n component: HeaderCellComponent, className, classes, beforeBorder, ...restProps\n}) => (\n \n);\n\nBandedHeaderCellBase.propTypes = {\n component: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n beforeBorder: PropTypes.bool,\n};\n\nBandedHeaderCellBase.defaultProps = {\n className: undefined,\n beforeBorder: false,\n};\n\nexport const BandedHeaderCell = withStyles(styles, { name: 'BandedHeaderCell' })(BandedHeaderCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n emptyCell: {\n display: 'none',\n },\n};\n\nconst InvisibleCellBase = ({ classes }) => (\n \n);\n\nInvisibleCellBase.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport const InvisibleCell = withStyles(styles, { name: 'InvisibleCell' })(InvisibleCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport TableRow from '@material-ui/core/TableRow';\n\nconst styles = {\n row: {\n height: 'auto',\n },\n};\n\nexport const RowBase = ({\n children, classes, className, row, tableRow, tableColumn, ...restProps\n}) => (\n \n {children}\n \n);\n\nRowBase.propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n row: PropTypes.any,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n className: PropTypes.string,\n};\n\nRowBase.defaultProps = {\n children: undefined,\n row: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n className: undefined,\n};\n\nexport const Row = withStyles(styles, { name: 'Row' })(RowBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableBandHeader as TableBandHeaderBase } from '@devexpress/dx-react-grid';\nimport { Cell } from '../templates/table-band-header/cell';\nimport { BandedHeaderCell } from '../templates/table-band-header/banded-header-cell';\nimport { InvisibleCell } from '../templates/table-band-header/invisible-cell';\nimport { Row } from '../templates/table-band-header/row';\n\nexport const TableBandHeader = withComponents({\n Cell, Row, BandedHeaderCell, InvisibleCell,\n})(TableBandHeaderBase);\n\nTableBandHeader.ROW_TYPE = TableBandHeaderBase.ROW_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport Input from '@material-ui/core/Input';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n cell: {\n padding: theme.spacing(1),\n // NOTE: without the TableEditColumn first EditCell changes size\n // (because first TableCell and EditCell have different paddings)\n '&:first-child': {\n paddingLeft: theme.spacing(3),\n },\n },\n inputRoot: {\n width: '100%',\n },\n disabledInput: {\n color: theme.palette.action.disabled,\n '&:before': {\n borderBottom: '1px dotted',\n borderBottomColor: theme.palette.action.disabled,\n },\n '&&:hover:before': {\n borderBottom: '1px dotted',\n borderBottomColor: theme.palette.action.disabled,\n },\n '&:after': {\n borderBottom: '0px',\n },\n },\n inputRight: {\n textAlign: 'right',\n },\n inputCenter: {\n textAlign: 'center',\n },\n});\n\nconst EditCellBase = ({\n column, value, onValueChange, style, classes, children,\n row, tableRow, tableColumn, editingEnabled, className,\n autoFocus, onBlur, onFocus, onKeyDown, ...restProps\n}) => {\n const inputClasses = classNames({\n [classes.inputRight]: tableColumn && tableColumn.align === 'right',\n [classes.inputCenter]: tableColumn && tableColumn.align === 'center',\n });\n const patchedChildren = children\n ? React.cloneElement(children, {\n autoFocus,\n onBlur,\n onFocus,\n onKeyDown,\n })\n : children;\n\n return (\n \n {patchedChildren || (\n onValueChange(e.target.value)}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n />\n )}\n \n );\n};\n\nEditCellBase.propTypes = {\n column: PropTypes.object,\n row: PropTypes.any,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n value: PropTypes.any,\n onValueChange: PropTypes.func,\n style: PropTypes.object,\n classes: PropTypes.object.isRequired,\n editingEnabled: PropTypes.bool,\n children: PropTypes.node,\n className: PropTypes.string,\n autoFocus: PropTypes.bool,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n onKeyDown: PropTypes.func,\n};\n\nEditCellBase.defaultProps = {\n column: undefined,\n row: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n value: '',\n style: null,\n children: undefined,\n className: undefined,\n editingEnabled: true,\n autoFocus: false,\n onValueChange: () => {},\n onBlur: () => {},\n onFocus: () => {},\n onKeyDown: () => {},\n};\n\nexport const EditCell = withStyles(styles, { name: 'EditCell' })(EditCellBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableEditRow as TableEditRowBase } from '@devexpress/dx-react-grid';\nimport { EditCell as Cell } from '../templates/table-edit-cell';\nimport { TableRow as Row } from '../templates/table-row';\n\nexport const TableEditRow = withComponents({ Row, Cell })(TableEditRowBase);\n\nTableEditRow.ADDED_ROW_TYPE = TableEditRowBase.ADDED_ROW_TYPE;\nTableEditRow.EDIT_ROW_TYPE = TableEditRowBase.EDIT_ROW_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport Button from '@material-ui/core/Button';\nimport TableCell from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n button: {\n padding: theme.spacing(1),\n minWidth: 40,\n },\n headingCell: {\n whiteSpace: 'nowrap',\n textAlign: 'center',\n padding: theme.spacing(0, 2, 0, 3),\n },\n cell: {\n whiteSpace: 'nowrap',\n textAlign: 'center',\n padding: theme.spacing(0, 2, 0, 3),\n },\n alignWithRowSpan: {\n verticalAlign: 'bottom',\n paddingBottom: theme.spacing(1.25),\n },\n});\n\nconst withEditColumnStyles = withStyles(styles, { name: 'EditColumn' });\n\nconst CommandButtonBase = ({\n onExecute,\n text,\n classes,\n className,\n ...restProps\n}) => (\n {\n e.stopPropagation();\n onExecute();\n }}\n {...restProps}\n >\n {text}\n \n);\nCommandButtonBase.propTypes = {\n onExecute: PropTypes.func.isRequired,\n text: PropTypes.string.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nCommandButtonBase.defaultProps = {\n className: undefined,\n};\n\nexport const CommandButton = withEditColumnStyles(CommandButtonBase);\n\nconst EditCommandHeadingCellBase = ({\n children,\n classes,\n className,\n tableRow, tableColumn,\n rowSpan,\n ...restProps\n}) => (\n 1,\n }, className)}\n rowSpan={rowSpan}\n {...restProps}\n >\n {children}\n \n);\n\nEditCommandHeadingCellBase.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n rowSpan: PropTypes.number,\n};\n\nEditCommandHeadingCellBase.defaultProps = {\n children: undefined,\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n rowSpan: undefined,\n};\n\nexport const EditCommandHeadingCell = withEditColumnStyles(EditCommandHeadingCellBase);\n\nconst EditCommandCellBase = ({\n tableRow, tableColumn, row, children,\n classes, className,\n ...restProps\n}) => (\n \n {children}\n \n);\n\nEditCommandCellBase.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n row: PropTypes.any,\n};\n\nEditCommandCellBase.defaultProps = {\n children: undefined,\n className: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n row: undefined,\n};\n\nexport const EditCommandCell = withEditColumnStyles(EditCommandCellBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableEditColumn as TableEditColumnBase } from '@devexpress/dx-react-grid';\nimport {\n EditCommandHeadingCell as HeaderCell,\n EditCommandCell as Cell,\n CommandButton as Command,\n} from '../templates/table-edit-command-cell';\nimport { withPatchedProps } from '../utils/with-patched-props';\n\nconst TableEditColumnWithWidth = withPatchedProps(props => ({\n width: 150,\n ...props,\n}))(TableEditColumnBase);\n\nTableEditColumnWithWidth.components = TableEditColumnBase.components;\n\nexport const TableEditColumn = withComponents({\n Cell, HeaderCell, Command,\n})(TableEditColumnWithWidth);\n\nTableEditColumn.COLUMN_TYPE = TableEditColumnBase.COLUMN_TYPE;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n emptyMessage: {\n margin: '0 auto',\n padding: theme.spacing(5, 0),\n fontFamily: theme.typography.fontFamily,\n color: theme.typography.subtitle1.color,\n fontSize: theme.typography.subtitle1.fontSize,\n },\n});\n\nexport const EmptyMessageBase = ({\n getMessage,\n classes,\n ...restProps\n}) => (\n \n \n {getMessage('noColumns')}\n \n \n);\n\nEmptyMessageBase.propTypes = {\n getMessage: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n};\n\nexport const EmptyMessage = withStyles(styles, { name: 'EmptyMessage' })(EmptyMessageBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableColumnVisibility as TableColumnVisibilityBase } from '@devexpress/dx-react-grid';\nimport { EmptyMessage } from '../templates/empty-message';\n\nexport const TableColumnVisibility = withComponents({ EmptyMessage })(TableColumnVisibilityBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { getCellGeometries } from '@devexpress/dx-grid-core';\n\nexport const TableReorderingCell = ({ style, getCellDimensions }) => {\n const refHandler = node => node && getCellDimensions(() => getCellGeometries(node));\n return (\n \n );\n};\n\nTableReorderingCell.propTypes = {\n getCellDimensions: PropTypes.func.isRequired,\n style: PropTypes.object,\n};\n\nTableReorderingCell.defaultProps = {\n style: null,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport { TableRow } from './table-row';\n\nconst styles = () => ({\n row: {\n visibility: 'hidden',\n },\n});\n\nconst TableInvisibleRowBase = ({ className, classes, ...restParams }) => (\n \n);\n\nTableInvisibleRowBase.propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n};\n\nTableInvisibleRowBase.defaultProps = {\n className: undefined,\n};\n\nexport const TableInvisibleRow = withStyles(styles, { name: 'TableInvisibleRow' })(TableInvisibleRowBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableColumnReordering as TableColumnReorderingBase } from '@devexpress/dx-react-grid';\nimport { TableReorderingCell as Cell } from '../templates/table-reordering-cell';\nimport { TableInvisibleRow as Row } from '../templates/table-invisible-row';\n\nexport const TableColumnReordering = withComponents({ Row, Cell })(TableColumnReorderingBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { TableColumnResizing as TableColumnResizingBase } from '@devexpress/dx-react-grid';\n\nexport class TableColumnResizing extends React.PureComponent {\n render() {\n const { minColumnWidth, maxColumnWidth, ...restProps } = this.props;\n return (\n \n );\n }\n}\n\nTableColumnResizing.propTypes = {\n minColumnWidth: PropTypes.number,\n maxColumnWidth: PropTypes.number,\n};\n\nTableColumnResizing.defaultProps = {\n minColumnWidth: 40,\n maxColumnWidth: Infinity,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport ToolbarMUI from '@material-ui/core/Toolbar';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getBorder } from '../utils';\n\nconst styles = theme => ({\n toolbar: {\n borderBottom: getBorder(theme),\n flex: 'none',\n },\n});\n\nconst ToolbarBase = ({\n children, classes, className, style, ...restProps\n}) => (\n \n {children}\n \n);\n\nToolbarBase.propTypes = {\n children: PropTypes.node.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n};\n\nToolbarBase.defaultProps = {\n className: undefined,\n style: null,\n};\n\nexport const Toolbar = withStyles(styles, { name: 'Toolbar' })(ToolbarBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { Toolbar as ToolbarBase } from '@devexpress/dx-react-grid';\nimport { Toolbar as Root } from '../templates/toolbar/toolbar';\nimport { FlexibleSpace } from '../templates/toolbar/flexible-space';\n\nexport const Toolbar = withComponents({ Root, FlexibleSpace })(ToolbarBase);\n","import * as React from 'react';\n\nexport const FlexibleSpace = () =>
;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport IconButton from '@material-ui/core/IconButton';\n\nconst styles = theme => ({\n button: {\n marginTop: '-1px',\n marginBottom: '-1px',\n marginLeft: -theme.spacing(1),\n marginRight: theme.spacing(2),\n padding: theme.spacing(1),\n },\n hidden: {\n cursor: 'default',\n opacity: 0,\n },\n});\n\nconst TableTreeExpandButtonBase = ({\n visible, expanded, classes, onToggle,\n className,\n ...restProps\n}) => (\n {\n if (!visible) return;\n e.stopPropagation();\n onToggle();\n }}\n tabIndex={visible ? 0 : -1}\n {...restProps}\n >\n {expanded\n ? \n : }\n \n);\n\nTableTreeExpandButtonBase.propTypes = {\n visible: PropTypes.bool,\n expanded: PropTypes.bool,\n onToggle: PropTypes.func,\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n};\n\nTableTreeExpandButtonBase.defaultProps = {\n visible: false,\n expanded: false,\n onToggle: () => {},\n className: undefined,\n};\n\nexport const TableTreeExpandButton = withStyles(styles)(TableTreeExpandButtonBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport CheckboxMUI from '@material-ui/core/Checkbox';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n checkbox: {\n marginTop: '-1px',\n marginBottom: '-1px',\n marginRight: theme.spacing(2),\n marginLeft: -theme.spacing(2),\n padding: theme.spacing(1),\n },\n});\n\nexport const TableTreeCheckboxBase = ({\n disabled, checked, indeterminate, onChange, classes, className, ...restProps\n}) => (\n {\n if (disabled) return;\n e.stopPropagation();\n onChange();\n }}\n {...restProps}\n />\n);\n\nTableTreeCheckboxBase.propTypes = {\n disabled: PropTypes.bool,\n checked: PropTypes.bool,\n indeterminate: PropTypes.bool,\n onChange: PropTypes.func,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nTableTreeCheckboxBase.defaultProps = {\n disabled: false,\n checked: false,\n indeterminate: false,\n onChange: () => {},\n className: undefined,\n};\n\nexport const TableTreeCheckbox = withStyles(styles)(TableTreeCheckboxBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n indent: {\n marginLeft: theme.spacing(3),\n },\n});\n\nexport const TableTreeIndentBase = React.memo(({ level, classes }) => Array.from({ length: level })\n .map((value, currentLevel) => (\n \n )));\n\nTableTreeIndentBase.propTypes = {\n level: PropTypes.number,\n classes: PropTypes.object.isRequired,\n};\n\nTableTreeIndentBase.defaultProps = {\n level: 0,\n};\n\nexport const TableTreeIndent = withStyles(styles)(TableTreeIndentBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = () => ({\n content: {\n width: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n});\n\nconst TableTreeContentBase = ({\n children, classes, className, ...restProps\n}) => (\n \n {children}\n
\n);\n\nTableTreeContentBase.propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nTableTreeContentBase.defaultProps = {\n children: undefined,\n className: undefined,\n};\n\nexport const TableTreeContent = withStyles(styles)(TableTreeContentBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport TableCellMUI from '@material-ui/core/TableCell';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n cell: {\n padding: theme.spacing(0.5, 1),\n '&:first-child': {\n paddingLeft: theme.spacing(3),\n },\n },\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n cellNoWrap: {\n whiteSpace: 'nowrap',\n },\n cellRightAlign: {\n textAlign: 'right',\n },\n cellCenterAlign: {\n textAlign: 'center',\n },\n});\n\nconst TableTreeCellBase = ({\n column, value, children, classes,\n tableRow, tableColumn, row,\n className,\n ...restProps\n}) => (\n \n
\n {children}\n
\n \n);\n\nTableTreeCellBase.propTypes = {\n value: PropTypes.any,\n column: PropTypes.object,\n row: PropTypes.any,\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n tableRow: PropTypes.object,\n tableColumn: PropTypes.object,\n className: PropTypes.string,\n};\n\nTableTreeCellBase.defaultProps = {\n value: undefined,\n column: undefined,\n row: undefined,\n children: undefined,\n tableRow: undefined,\n tableColumn: undefined,\n className: undefined,\n};\n\nexport const TableTreeCell = withStyles(styles)(TableTreeCellBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableTreeColumn as TableTreeColumnBase } from '@devexpress/dx-react-grid';\nimport { TableTreeExpandButton as ExpandButton } from '../templates/table-tree-expand-button';\nimport { TableTreeCheckbox as Checkbox } from '../templates/table-tree-checkbox';\nimport { TableTreeIndent as Indent } from '../templates/table-tree-indent';\nimport { TableTreeContent as Content } from '../templates/table-tree-content';\nimport { TableTreeCell as Cell } from '../templates/table-tree-cell';\n\nexport const TableTreeColumn = withComponents({\n Cell, Content, Indent, ExpandButton, Checkbox,\n})(TableTreeColumnBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Input from '@material-ui/core/Input';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Search from '@material-ui/icons/Search';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.action.active,\n },\n});\n\nconst SearchPanelInputBase = ({\n onValueChange, value, getMessage, ...restProps\n}) => (\n onValueChange(e.target.value)}\n value={value}\n type=\"text\"\n placeholder={getMessage('searchPlaceholder')}\n {...restProps}\n startAdornment={(\n \n \n \n)}\n />\n);\n\nSearchPanelInputBase.propTypes = {\n onValueChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n getMessage: PropTypes.func.isRequired,\n};\nSearchPanelInputBase.defaultProps = {\n value: '',\n};\n\nexport const SearchPanelInput = withStyles(styles)(SearchPanelInputBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { SearchPanel as SearchPanelBase } from '@devexpress/dx-react-grid';\nimport { SearchPanelInput as Input } from '../templates/search-panel-input';\n\nexport const SearchPanel = withComponents({ Input })(SearchPanelBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport { getStickyCellStyle, getBorder } from './utils';\n\nconst styles = theme => ({\n dividerRight: {\n borderRight: getBorder(theme),\n },\n dividerLeft: {\n borderLeft: getBorder(theme),\n },\n fixedCell: getStickyCellStyle(theme),\n selected: {\n backgroundColor: 'inherit',\n },\n});\n\nclass FixedCellBase extends React.PureComponent {\n render() {\n const {\n className,\n classes,\n component: CellPlaceholder,\n position,\n selected,\n showLeftDivider,\n showRightDivider,\n side,\n style,\n ...restProps\n } = this.props;\n\n return (\n \n );\n }\n}\n\nFixedCellBase.propTypes = {\n component: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n position: PropTypes.number,\n selected: PropTypes.bool,\n showLeftDivider: PropTypes.bool,\n showRightDivider: PropTypes.bool,\n side: PropTypes.string.isRequired,\n style: PropTypes.object,\n};\n\nFixedCellBase.defaultProps = {\n className: undefined,\n position: undefined,\n selected: false,\n showLeftDivider: false,\n showRightDivider: false,\n style: null,\n};\n\nexport const FixedCell = withStyles(styles, { name: 'TableFixedCell' })(FixedCellBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'clsx';\nimport { Sizer } from '@devexpress/dx-react-core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { TableStubCell } from './table-stub-cell';\n\nconst styles = () => ({\n cell: {\n border: 0,\n },\n});\n\nconst TableBorderlessStubCellBase = ({\n className,\n classes,\n ...restProps\n}) => (\n \n);\n\nTableBorderlessStubCellBase.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nTableBorderlessStubCellBase.defaultProps = {\n className: undefined,\n};\n\nconst TableBorderlessStubCell = withStyles(styles, { name: 'TableBorderlessStubCell' })(TableBorderlessStubCellBase);\n\nexport const TableListenerCell = ({ listen, onSizeChange, ...restProps }) => (listen ? (\n \n) : (\n \n));\n\nTableListenerCell.propTypes = {\n listen: PropTypes.bool.isRequired,\n onSizeChange: PropTypes.func.isRequired,\n};\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableSummaryRow as TableSummaryRowBase } from '@devexpress/dx-react-grid';\nimport { TableSummaryItem } from '../templates/table-summary-item';\nimport { TableCell } from '../templates/table-cell';\nimport { TableRow } from '../templates/table-row';\nimport { TableTreeIndent } from '../templates/table-tree-indent';\nimport { TableTreeContent } from '../templates/table-tree-content';\nimport { TableTreeCell } from '../templates/table-tree-cell';\n\nexport const TableSummaryRow = withComponents({\n TotalRow: TableRow,\n GroupRow: TableRow,\n TreeRow: TableRow,\n TotalCell: TableCell,\n GroupCell: TableCell,\n TreeCell: TableCell,\n TableTreeCell,\n TableTreeContent,\n TableTreeIndent,\n Item: TableSummaryItem,\n})(TableSummaryRowBase);\n\nTableSummaryRow.TREE_ROW_TYPE = TableSummaryRowBase.TREE_ROW_TYPE;\nTableSummaryRow.GROUP_ROW_TYPE = TableSummaryRowBase.GROUP_ROW_TYPE;\nTableSummaryRow.TOTAL_ROW_TYPE = TableSummaryRowBase.TOTAL_ROW_TYPE;\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableFixedColumns as TableFixedColumnsBase } from '@devexpress/dx-react-grid';\nimport { FixedCell as Cell } from '../templates/table-fixed-cell';\nimport { TableInvisibleRow as ListenerRow } from '../templates/table-invisible-row';\nimport { TableListenerCell as ListenerCell } from '../templates/table-listener-cell';\n\nexport const TableFixedColumns = withComponents({\n Cell, ListenerRow, ListenerCell,\n})(TableFixedColumnsBase);\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { TableInlineCellEditing as TableInlineCellEditingBase } from '@devexpress/dx-react-grid';\nimport { EditCell as Cell } from '../templates/table-edit-cell';\n\nexport const TableInlineCellEditing = withComponents({ Cell })(TableInlineCellEditingBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport MenuMUI from '@material-ui/core/Menu';\n\nexport const Menu = ({\n visible, target, onHide, children, ...restProps\n}) => (\n \n {children}\n \n);\n\nMenu.propTypes = {\n onHide: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n visible: PropTypes.bool,\n target: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n ]),\n};\n\nMenu.defaultProps = {\n visible: false,\n target: null,\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport MenuItemMUI from '@material-ui/core/MenuItem';\n\nexport const MenuItem = React.forwardRef(({\n text, onClick, ...restProps\n}, ref) => (\n \n {text}\n \n));\n\nMenuItem.propTypes = {\n text: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n};\n\nMenuItem.defaultProps = {\n onClick: () => {},\n};\n","import { withComponents } from '@devexpress/dx-react-core';\nimport { ExportPanel as ExportPanelBase } from '@devexpress/dx-react-grid';\nimport { ToggleButton } from '../templates/export-panel/toggle-button';\nimport { Menu } from '../templates/export-panel/menu';\nimport { MenuItem } from '../templates/export-panel/menu-item';\n\nexport const ExportPanel = withComponents({\n ToggleButton, Menu, MenuItem,\n})(ExportPanelBase);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Save from '@material-ui/icons/Save';\n\nexport const ToggleButton = ({\n onToggle, getMessage, buttonRef,\n ...restProps\n}) => (\n \n \n \n \n \n);\n\nToggleButton.propTypes = {\n onToggle: PropTypes.func.isRequired,\n getMessage: PropTypes.func.isRequired,\n buttonRef: PropTypes.func.isRequired,\n};\n","export const GRID_GROUP_TYPE = Symbol('group');\nexport const GRID_GROUP_CHECK = Symbol(`${GRID_GROUP_TYPE.toString()}_check`);\nexport const GRID_GROUP_LEVEL_KEY = Symbol(`${GRID_GROUP_TYPE.toString()}_levelKey`);\nexport const GRID_GROUP_COLLAPSED_ROWS = Symbol(`${GRID_GROUP_TYPE.toString()}_collapsedRows`);\n","import { GRID_GROUP_CHECK } from '../integrated-grouping/constants';\nimport { GetRowIdFn, Row, RowId, GetCellValueFn, Column } from '../../types';\nimport { PureComputed } from '@devexpress/dx-core';\n\nconst warnIfRowIdUndefined: PureComputed<[GetRowIdFn]> = getRowId => (row) => {\n const result = getRowId(row);\n if (!row[GRID_GROUP_CHECK] && result === undefined) {\n // tslint:disable-next-line: no-console\n console.warn('The row id is undefined. Check the getRowId function. The row is', row);\n }\n return result;\n};\n\nexport const rowIdGetter: PureComputed<[GetRowIdFn, Row[]]> = (getRowId, rows) => {\n if (!getRowId) {\n const map = new Map(rows.map((row, rowIndex) => [row, rowIndex]) as [any, number]);\n return (row: Row) => map.get(row) as RowId;\n }\n return warnIfRowIdUndefined(getRowId);\n};\n\nconst defaultGetCellValue: GetCellValueFn = (row, columnName) => row[columnName];\n\nexport const cellValueGetter: PureComputed<[GetCellValueFn, Column[]]> = (\n getCellValue = defaultGetCellValue, columns,\n) => {\n let useFastAccessor = true;\n const map = columns.reduce((acc, column) => {\n if (column.getCellValue) {\n useFastAccessor = false;\n acc[column.name] = column.getCellValue;\n }\n return acc;\n }, {});\n\n if (useFastAccessor) {\n return getCellValue;\n }\n\n return (row, columnName) => (map[columnName]\n ? map[columnName](row, columnName)\n : getCellValue(row, columnName));\n};\n","import { ColumnSortingState, ChangeSortingPayload, Sorting } from '../../types';\nimport { PureReducer, slice } from '@devexpress/dx-core';\n\nexport const changeColumnSorting: PureReducer = (\n state, {\n columnName, direction, keepOther, sortIndex,\n}) => {\n const { sorting } = state;\n\n let nextSorting: any[] = [];\n if (keepOther === true) {\n nextSorting = sorting as Sorting[];\n }\n if (Array.isArray(keepOther)) {\n nextSorting = slice(sorting)\n .filter(s =>\n keepOther.indexOf(s.columnName) > -1);\n }\n\n const columnSortingIndex = sorting.findIndex(s => s.columnName === columnName);\n const columnSorting = sorting[columnSortingIndex];\n const newColumnSorting = {\n columnName,\n direction: direction\n || (!columnSorting || columnSorting.direction === 'desc' ? 'asc' : 'desc'),\n };\n\n if (columnSortingIndex > -1) {\n nextSorting = slice(nextSorting);\n nextSorting.splice(columnSortingIndex, 1);\n }\n\n if (direction !== null) {\n const newIndexFallback = columnSortingIndex > -1 ? columnSortingIndex : nextSorting.length;\n const newIndex = sortIndex !== undefined ? sortIndex : newIndexFallback;\n nextSorting = slice(nextSorting);\n nextSorting.splice(newIndex, 0, newColumnSorting);\n }\n\n return {\n sorting: nextSorting,\n };\n};\n","import {\n KeepOtherSorting, GetColumnSortingDirectionFn, GetPersistentSortedColumnsFn,\n CalculateKeepOtherFn,\n} from '../../types';\n\nconst unique = (arr: any[]) => [...Array.from(new Set(arr))];\n\nexport const getColumnSortingDirection: GetColumnSortingDirectionFn = (\n sorting, columnName,\n) => {\n const columnSorting = sorting.filter(s => s.columnName === columnName)[0];\n return columnSorting ? columnSorting.direction : null;\n};\n\nexport const getPersistentSortedColumns: GetPersistentSortedColumnsFn = (\n sorting, columnExtensions = [],\n) => columnExtensions.reduce((acc, { columnName, sortingEnabled }) => {\n if (sortingEnabled === false) {\n if (sorting.findIndex(sortItem => sortItem.columnName === columnName) > -1) {\n acc.push(columnName);\n }\n }\n return acc;\n}, [] as string[]);\n\nexport const calculateKeepOther: CalculateKeepOtherFn = (\n sorting, keepOther, persistentSortedColumns = [],\n) => {\n if (!persistentSortedColumns.length) return keepOther as KeepOtherSorting;\n if (!keepOther) return persistentSortedColumns as KeepOtherSorting;\n\n return Array.isArray(keepOther)\n ? unique([...keepOther, ...persistentSortedColumns])\n : unique([...sorting.map(item => item.columnName), ...persistentSortedColumns]);\n};\n","import { slice } from '@devexpress/dx-core';\nimport { MergeFn, SortArrayToAuxiliaryFn, CompareFn } from '../types';\n\n/* eslint-disable no-plusplus, no-param-reassign, no-use-before-define, no-constant-condition */\n/* tslint:disable no-increment-decrement */\n\nconst merge: MergeFn = (array, auxiliary, lo, mid, hi, compare) => {\n let i = lo;\n let j = mid + 1;\n let k = lo;\n while (true) {\n const cmp = compare(array[i], array[j]);\n if (cmp <= 0) {\n auxiliary[k++] = array[i++];\n if (i > mid) {\n do {\n auxiliary[k++] = array[j++];\n } while (j <= hi);\n break;\n }\n } else {\n auxiliary[k++] = array[j++];\n if (j > hi) {\n do {\n auxiliary[k++] = array[i++];\n } while (i <= mid);\n break;\n }\n }\n }\n};\n\nconst sortArrayToAuxiliary: SortArrayToAuxiliaryFn = (array, auxiliary, lo, hi, compare) => {\n if (hi < lo) return;\n if (hi === lo) {\n auxiliary[lo] = array[lo];\n return;\n }\n const mid = Math.floor(lo + ((hi - lo) / 2));\n sortAuxiliaryToArray(array, auxiliary, lo, mid, compare);\n sortAuxiliaryToArray(array, auxiliary, mid + 1, hi, compare);\n merge(array, auxiliary, lo, mid, hi, compare);\n};\n\nconst sortAuxiliaryToArray: SortArrayToAuxiliaryFn = (array, auxiliary, lo, hi, compare) => {\n if (hi <= lo) return;\n const mid = Math.floor(lo + ((hi - lo) / 2));\n sortArrayToAuxiliary(array, auxiliary, lo, mid, compare);\n sortArrayToAuxiliary(array, auxiliary, mid + 1, hi, compare);\n merge(auxiliary, array, lo, mid, hi, compare);\n};\n\nexport default (\n array: any[] | ReadonlyArray,\n compare: CompareFn = (a, b): number => {\n if (a < b) return -1;\n if (a > b) return 1;\n return 0;\n },\n) => {\n const result = slice(array);\n const auxiliary = slice(array);\n sortAuxiliaryToArray(result, auxiliary, 0, result.length - 1, compare);\n return result;\n};\n","import { RowsToTreeFn, TreeToRowsFn, TreeNode } from '../types';\n\nexport const NODE_CHECK = Symbol('node');\n\nexport const rowsToTree: RowsToTreeFn = (rows, getRowLevelKey) => {\n if (!rows.length) return rows;\n\n const levels: any[] = [{ children: [] }];\n\n rows.forEach((row) => {\n const levelKey = getRowLevelKey(row);\n if (levelKey) {\n const levelIndex = levels.slice(1)\n .findIndex(level => getRowLevelKey(level.root) === levelKey) + 1;\n if (levelIndex > 0) {\n levels.splice(levelIndex, levels.length - levelIndex);\n }\n const node = { [NODE_CHECK]: true, root: row, children: [] };\n levels[levels.length - 1].children.push(node);\n levels.push(node);\n } else {\n levels[levels.length - 1].children.push(row);\n }\n });\n\n return levels[0].children;\n};\n\nexport const treeToRows: TreeToRowsFn = (tree, rows = []) => {\n if (!tree.length) return tree;\n return tree.reduce(\n (acc, node) => {\n if (node[NODE_CHECK]) {\n acc.push(node.root);\n treeToRows(node.children, rows);\n } else {\n acc.push(node);\n }\n return acc;\n },\n rows as TreeNode[],\n );\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport mergeSort from '../../utils/merge-sort';\nimport { NODE_CHECK, rowsToTree, treeToRows } from '../../utils/hierarchical-data';\nimport {\n Row, GetRowLevelKeyFn, CompareFn, CreateCompareFn, SortedRowsFn, TreeNode,\n} from '../../types';\n\nconst defaultCompare = (a: any, b: any) => {\n if (a === b) return 0;\n\n if (a === null) {\n return b === undefined ? -1 : 1;\n }\n if (a === undefined) {\n return 1;\n }\n if (b === null || b === undefined) {\n return -1;\n }\n return a < b ? -1 : 1;\n};\n\nconst createCompare: CreateCompareFn = (\n sorting, getColumnCompare, getComparableValue,\n) => sorting.reduceRight((prevCompare, columnSorting) => {\n const { columnName } = columnSorting;\n const inverse = columnSorting.direction === 'desc';\n const columnCompare = (getColumnCompare && getColumnCompare(columnName)) || defaultCompare;\n\n return (aRow: Row, bRow: Row) => {\n const a = getComparableValue(aRow, columnName);\n const b = getComparableValue(bRow, columnName);\n const result = columnCompare(a, b);\n\n if (result !== 0) {\n return inverse ? -result : result;\n }\n return prevCompare(aRow, bRow);\n };\n}, (...args: any[]) => 0);\n\nconst sortTree: PureComputed<[TreeNode[], CompareFn]> = (tree, compare) => {\n const sortedTree = tree.map((node) => {\n if (node[NODE_CHECK]) {\n return {\n ...node,\n children: sortTree(node.children, compare),\n };\n }\n return node;\n });\n\n return mergeSort(\n sortedTree, (a, b) => compare(a[NODE_CHECK] ? a.root : a, b[NODE_CHECK] ? b.root : b),\n );\n};\n\nconst sortHierarchicalRows: PureComputed<[Row[], CompareFn, GetRowLevelKeyFn]> = (\n rows, compare, getRowLevelKey,\n) => {\n const tree = rowsToTree(rows, getRowLevelKey);\n\n const sortedTree = sortTree(tree, compare);\n\n return treeToRows(sortedTree);\n};\n\nexport const sortedRows: SortedRowsFn = (\n rows, sorting, getCellValue, getColumnCompare, isGroupRow, getRowLevelKey,\n) => {\n if (!sorting.length || !rows.length) return rows;\n\n let compare;\n if (!getRowLevelKey) {\n compare = createCompare(sorting, getColumnCompare, getCellValue);\n return mergeSort(rows.slice(), compare);\n }\n\n compare = createCompare(sorting, getColumnCompare, (row, columnName) => {\n if (isGroupRow && isGroupRow(row)) {\n if (row.groupedBy === columnName) {\n return row.value;\n }\n return undefined;\n }\n return getCellValue(row, columnName);\n });\n return sortHierarchicalRows(\n rows,\n compare,\n getRowLevelKey,\n );\n};\n","import { Filter, ChangeFilterPayload } from '../../types';\nimport { PureReducer, slice } from '@devexpress/dx-core';\n\nexport const changeColumnFilter: PureReducer = (\n filters, { columnName, config },\n) => {\n const filterIndex = filters.findIndex(f => f.columnName === columnName);\n const nextState = slice(filters);\n\n if (config) {\n const filter = { columnName, ...config };\n if (filterIndex > -1) {\n nextState.splice(filterIndex, 1, filter);\n } else {\n nextState.push(filter);\n }\n } else if (filterIndex > -1) {\n nextState.splice(filterIndex, 1);\n }\n\n return nextState;\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { Filter } from '../../types';\n\nexport const getColumnFilterConfig: PureComputed<\n [Filter[], string], Filter | null\n> = (filters, columnName) => (\n filters.length && filters.filter(s => s.columnName === columnName)[0] || null\n);\n","import { FilterExpression, Filter } from '../../types';\nimport { PureComputed } from '@devexpress/dx-core';\n\nexport const filterExpression: PureComputed<\n [Filter[], FilterExpression?], FilterExpression\n> = (filters, expression) => {\n // tslint:disable-next-line: no-object-literal-type-assertion\n const selfFilterExpr = { filters, operator: 'and' as 'and' } as FilterExpression;\n if (!expression) {\n return selfFilterExpr;\n }\n return {\n operator: 'and' as 'and',\n filters: [expression, selfFilterExpr] as FilterExpression[],\n };\n};\n","import { NODE_CHECK, rowsToTree, treeToRows } from '../../utils/hierarchical-data';\nimport { PureComputed } from '@devexpress/dx-core';\nimport {\n Row, Filter, FilterPredicate,\n FilterExpression, GetCellValueFn, RowsWithCollapsedRowsMetaMap,\n UnwrapRowsComputed, FilteredRowsFn, FilterHierarchicalRowsFn,\n CompiledPredicate, GetColumnPredicateFn, FilteredCollapsedRowsGetterFn, TreeNode,\n} from '../../types';\n\nconst operators = {\n or: (predicates: CompiledPredicate[]) => (row: Row) => (\n predicates.reduce((acc, predicate) => acc || predicate(row), false)\n ),\n and: (predicates: CompiledPredicate[]) => (row: Row) => (\n predicates.reduce((acc, predicate) => acc && predicate(row), true)\n ),\n};\n\nconst toLowerCase = (value: any) => String(value).toLowerCase();\n\nconst operationPredicates: { [key: string]: FilterPredicate } = {\n contains: (value, filter) => toLowerCase(value)\n .indexOf(toLowerCase(filter.value)) > -1,\n\n notContains: (value, filter) => toLowerCase(value)\n .indexOf(toLowerCase(filter.value)) === -1,\n\n startsWith: (value, filter) => toLowerCase(value)\n .startsWith(toLowerCase(filter.value)),\n\n endsWith: (value, filter) => toLowerCase(value)\n .endsWith(toLowerCase(filter.value)),\n\n equal: (value, filter) => String(value) === String(filter.value),\n notEqual: (value, filter) => String(value) !== String(filter.value),\n\n greaterThan: (value, filter) => value > filter.value!,\n greaterThanOrEqual: (value, filter) => value >= filter.value!,\n lessThan: (value, filter) => value < filter.value!,\n lessThanOrEqual: (value, filter) => value <= filter.value!,\n};\n\nexport const defaultFilterPredicate: FilterPredicate = (value, filter) => {\n const operation = filter.operation || 'contains';\n return operationPredicates[operation](value, filter);\n};\n\nconst filterTree: PureComputed<[TreeNode[], CompiledPredicate]> = (tree, predicate) => tree.reduce(\n (acc, node) => {\n if (node[NODE_CHECK]) {\n const filteredChildren = filterTree(node.children, predicate) as TreeNode[];\n if (filteredChildren.length > 0) {\n acc.push({\n ...node,\n children: filteredChildren,\n });\n return acc;\n }\n if (predicate(node.root, true)) {\n acc.push(node.root);\n return acc;\n }\n return acc;\n }\n\n if (predicate(node)) {\n acc.push(node);\n return acc;\n }\n\n return acc;\n },\n [] as TreeNode[],\n);\n\nconst filterHierarchicalRows: FilterHierarchicalRowsFn = (\n rows, predicate, getRowLevelKey, getCollapsedRows,\n) => {\n const tree = rowsToTree(rows, getRowLevelKey);\n const collapsedRowsMeta: any[] = [];\n\n const filteredTree = filterTree(tree, (row, isNode) => {\n if (isNode) {\n const collapsedRows = getCollapsedRows && getCollapsedRows(row);\n if (collapsedRows && collapsedRows.length) {\n const filteredCollapsedRows = collapsedRows.filter(predicate);\n collapsedRowsMeta.push([row, filteredCollapsedRows]);\n return !!filteredCollapsedRows.length || predicate(row);\n }\n if (predicate(row)) {\n collapsedRowsMeta.push([row, []]);\n return true;\n }\n return false;\n }\n return predicate(row);\n });\n\n return { rows: treeToRows(filteredTree), collapsedRowsMeta: new Map(collapsedRowsMeta) };\n};\n\nconst buildPredicate: PureComputed<\n [FilterExpression, GetCellValueFn, GetColumnPredicateFn],\n CompiledPredicate\n> = (\n initialFilterExpression, getCellValue, getColumnPredicate,\n) => {\n const getSimplePredicate = (filter: Filter) => {\n const { columnName } = filter;\n const customPredicate = getColumnPredicate && getColumnPredicate(columnName);\n const predicate = customPredicate || defaultFilterPredicate;\n return (row: Row) => predicate(getCellValue(row, columnName), filter, row);\n };\n\n const getOperatorPredicate: any = (filterExpression: FilterExpression) => {\n const build = operators[toLowerCase(filterExpression.operator)];\n return build && build(filterExpression.filters.map(getPredicate));\n };\n\n const getPredicate = (filterExpression: any) => (\n getOperatorPredicate(filterExpression)\n || getSimplePredicate(filterExpression)\n );\n\n return getPredicate(initialFilterExpression);\n};\n\nexport const filteredRows: FilteredRowsFn = (\n rows, filterExpression, getCellValue, getColumnPredicate, getRowLevelKey, getCollapsedRows,\n) => {\n if (!(filterExpression && Object.keys(filterExpression).length && rows.length)) {\n // tslint:disable-next-line:no-object-literal-type-assertion\n return { rows } as Partial;\n }\n\n const predicate = buildPredicate(\n filterExpression,\n getCellValue,\n getColumnPredicate,\n );\n\n return getRowLevelKey\n ? filterHierarchicalRows(rows, predicate, getRowLevelKey, getCollapsedRows)\n : { rows: rows.filter(predicate) };\n};\n\nexport const filteredCollapsedRowsGetter: FilteredCollapsedRowsGetterFn = (\n { collapsedRowsMeta },\n) => row => collapsedRowsMeta && collapsedRowsMeta.get(row);\n\nexport const unwrappedFilteredRows: UnwrapRowsComputed = ({ rows }) => rows;\n","import { PureReducer, slice } from '@devexpress/dx-core';\nimport { Getters } from '@devexpress/dx-react-core';\nimport { GROUP_KEY_SEPARATOR } from './constants';\nimport {\n Grouping, ColumnGroupingState, ChangeGroupingPayload, ToggleGroupPayload, DraftGroupingState,\n} from '../../types';\n\nconst applyColumnGrouping: PureReducer = (\n grouping, { columnName, groupIndex },\n) => {\n let nextGrouping = grouping;\n const groupingIndex = nextGrouping.findIndex(g => g.columnName === columnName);\n let targetIndex = groupIndex;\n\n if (groupingIndex > -1) {\n nextGrouping = slice(grouping);\n (nextGrouping as Grouping[]).splice(groupingIndex, 1);\n } else if (groupIndex === undefined) {\n targetIndex = nextGrouping.length;\n }\n\n if (targetIndex > -1) {\n nextGrouping = slice(nextGrouping);\n (nextGrouping as Grouping[]).splice(targetIndex, 0, {\n columnName,\n });\n }\n\n return nextGrouping;\n};\n\nexport const changeColumnGrouping: PureReducer = (\n { grouping, expandedGroups }, { columnName, groupIndex },\n) => {\n const nextGrouping = applyColumnGrouping(grouping!, { columnName, groupIndex });\n\n const ungroupedColumnIndex = grouping!.findIndex(\n (group, index) => !nextGrouping[index] || group.columnName !== nextGrouping[index].columnName,\n );\n if (ungroupedColumnIndex === -1) {\n return {\n grouping: nextGrouping,\n };\n }\n\n const filteredExpandedGroups = expandedGroups!.filter(\n group => group.split(GROUP_KEY_SEPARATOR).length <= ungroupedColumnIndex,\n );\n if (filteredExpandedGroups.length === expandedGroups!.length) {\n return {\n grouping: nextGrouping,\n };\n }\n\n return {\n grouping: nextGrouping,\n expandedGroups: filteredExpandedGroups,\n };\n};\n\nexport const toggleExpandedGroups: PureReducer = (\n state, { groupKey },\n) => {\n const expandedGroups = slice(state.expandedGroups);\n const groupKeyIndex = expandedGroups.indexOf(groupKey);\n\n if (groupKeyIndex > -1) {\n expandedGroups.splice(groupKeyIndex, 1);\n } else {\n expandedGroups.push(groupKey);\n }\n\n return {\n expandedGroups,\n };\n};\n\nexport const draftColumnGrouping: PureReducer<\n Getters, ChangeGroupingPayload, DraftGroupingState\n> = (\n { grouping, draftGrouping },\n { columnName, groupIndex },\n) => ({\n draftGrouping: applyColumnGrouping(draftGrouping || grouping, { columnName, groupIndex }),\n});\n\nexport const cancelColumnGroupingDraft = () => ({\n draftGrouping: null,\n});\n","export const GROUP_KEY_SEPARATOR = '|';\n","import { PureComputed } from '@devexpress/dx-core';\nimport { Grouping, Sorting, GroupIndex } from '../../types';\n\nexport const adjustSortIndex: PureComputed<[GroupIndex, Grouping[], Sorting[]]> = (\n groupingIndex, grouping, sorting,\n) => Math.max(\n grouping.slice(0, groupingIndex).reduce(\n (acc, columnGrouping) => {\n const columnSortingIndex = sorting.findIndex(\n columnSorting => columnSorting.columnName === columnGrouping.columnName,\n );\n return (columnSortingIndex === -1 ? acc - 1 : acc);\n },\n groupingIndex,\n ),\n 0,\n);\n","import { GetIntegratedGroupsFn, GetGroupRowsFn, Row } from '../../types';\nimport { GROUP_KEY_SEPARATOR } from '../grouping-state/constants';\nimport { GRID_GROUP_CHECK, GRID_GROUP_LEVEL_KEY, GRID_GROUP_TYPE } from './constants';\n\nconst defaultColumnCriteria = (value: any) => ({\n value,\n key: String(value),\n});\n\nexport const getGroupRows: GetGroupRowsFn = (\n rows, grouping, groupsGetter,\n) => {\n if (grouping.length === 0) {\n return rows;\n }\n\n const keyPrefixes = [{ prefix: '', level: 0, rows }];\n const resultRows = [] as Row[];\n const compoundKeys = {};\n\n while (keyPrefixes.length) {\n const { prefix: keyPrefix, level, rows: currentRows } = keyPrefixes.pop()!;\n\n const currentCompoundKey = keyPrefix.slice(0, keyPrefix.length - 1);\n const groupIndex = compoundKeys[currentCompoundKey] ?? -1;\n\n const groupRows: readonly Row[] = grouping[level] && currentRows.length\n ? groupsGetter(currentRows, grouping[level], keyPrefix)\n .map(({ childRows, ...params }: any, rowIndex) => {\n const { compoundKey } = params;\n\n compoundKeys[compoundKey] = groupIndex + rowIndex + 1;\n keyPrefixes.push({\n prefix: `${compoundKey}${GROUP_KEY_SEPARATOR}`,\n level: level + 1,\n rows: childRows || [],\n });\n\n return params;\n })\n : currentRows;\n\n if (groupIndex > -1) {\n resultRows.splice(groupIndex + 1, 0, ...groupRows);\n } else {\n groupRows.forEach(row => resultRows.push(row));\n }\n }\n\n return resultRows;\n};\n\nexport const getIntegratedGroups: GetIntegratedGroupsFn = (\n rows,\n grouping,\n keyPrefix,\n getCellValue,\n getColumnCriteria,\n) => {\n const { columnName } = grouping;\n const groupCriteria = (getColumnCriteria && getColumnCriteria(columnName))\n || defaultColumnCriteria;\n\n const groups = new Map();\n rows.forEach((row) => {\n const rawValue = getCellValue(row, columnName);\n const { key, value } = groupCriteria(rawValue, row);\n const sameKeyItems = groups.get(key);\n\n if (!sameKeyItems) {\n const groupingValue = value === rawValue ? value : value || key;\n groups.set(key, [groupingValue, key, [row]]);\n } else {\n sameKeyItems[2].push(row);\n }\n });\n\n const groupedBy = columnName;\n return [...groups.values()]\n .map(([value, key, childRows]) => ({\n groupedBy,\n compoundKey: `${keyPrefix}${key}`,\n key,\n value,\n [GRID_GROUP_CHECK]: true,\n [GRID_GROUP_LEVEL_KEY]: `${GRID_GROUP_TYPE.toString()}_${groupedBy}`,\n childRows,\n }));\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n GRID_GROUP_CHECK,\n GRID_GROUP_LEVEL_KEY,\n GRID_GROUP_COLLAPSED_ROWS,\n} from './constants';\nimport {\n Grouping,\n GroupKey,\n Row,\n GetCollapsedRowsFn,\n IsSpecificRowFn,\n GroupedRowsFn,\n GroupsGetterFn,\n} from '../../types';\nimport { getGroupRows, getIntegratedGroups } from './helpers';\n\nexport const groupRowChecker: IsSpecificRowFn = row => row[GRID_GROUP_CHECK];\n\nexport const groupRowLevelKeyGetter = (row: Row) => (row ? row[GRID_GROUP_LEVEL_KEY] : undefined);\n\nexport const groupedRows: GroupedRowsFn = (\n rows, grouping, getCellValue, getColumnCriteria,\n) => {\n const groupsGetter: GroupsGetterFn = (currentRows, currentGrouping, prefix) =>\n getIntegratedGroups(\n currentRows,\n currentGrouping,\n prefix,\n getCellValue,\n getColumnCriteria,\n );\n return getGroupRows(rows, grouping, groupsGetter);\n};\n\nexport const expandedGroupRows: PureComputed<[Row[], Grouping[], GroupKey[], boolean]> = (\n rows,\n grouping,\n expandedGroups,\n isExporting,\n) => {\n if (!grouping.length) return rows;\n\n const groupingColumnNames = grouping.map(columnGrouping => columnGrouping.columnName);\n const expandedGroupsSet = new Set(expandedGroups);\n let currentGroupExpanded = true;\n let currentGroupLevel = 0;\n\n return rows.reduce((acc, row) => {\n if (!row[GRID_GROUP_CHECK]) {\n if (currentGroupExpanded) {\n acc.push(row);\n } else {\n acc[acc.length - 1][GRID_GROUP_COLLAPSED_ROWS].push(row);\n }\n return acc;\n }\n\n const groupLevel = groupingColumnNames.indexOf(row.groupedBy);\n if (groupLevel > currentGroupLevel && !currentGroupExpanded) {\n return acc;\n }\n\n currentGroupExpanded = expandedGroupsSet.has(row.compoundKey) || isExporting;\n currentGroupLevel = groupLevel;\n\n if (currentGroupExpanded) {\n acc.push(row);\n } else {\n acc.push({\n ...row,\n [GRID_GROUP_COLLAPSED_ROWS]: [],\n });\n }\n\n return acc;\n }, []);\n};\n\nexport const groupCollapsedRowsGetter: PureComputed<[GetCollapsedRowsFn]> =\n getCollapsedRows => row => (\n row[GRID_GROUP_COLLAPSED_ROWS] || (getCollapsedRows && getCollapsedRows(row))\n);\n","import { PureComputed } from '@devexpress/dx-core';\nimport { GRID_GROUP_CHECK } from '../integrated-grouping/constants';\nimport { GetRowIdFn, Row, RowId, CustomGroupedRowsFn, GroupsGetterFn } from '../../types';\nimport { getCustomGroups } from './helpers';\nimport { getGroupRows } from '../integrated-grouping/helpers';\n\nexport const customGroupedRows: CustomGroupedRowsFn = (\n rows, grouping, getChildGroups, rootRows = rows,\n) => {\n const groupsGetter: GroupsGetterFn = (currentRows, currentGrouping, prefix) =>\n getCustomGroups(\n currentRows,\n currentGrouping,\n prefix,\n getChildGroups,\n rootRows,\n );\n return getGroupRows(rows, grouping, groupsGetter);\n};\n\nexport const customGroupingRowIdGetter: PureComputed<[GetRowIdFn, Row[]]> = (getRowId, rows) => {\n const firstRow = rows.find(row => !row[GRID_GROUP_CHECK]);\n if (!firstRow || getRowId(firstRow) !== undefined) {\n return getRowId;\n }\n\n const map = new Map(rows\n .filter(row => !row[GRID_GROUP_CHECK])\n .map((row, rowIndex) => [row, rowIndex]) as [Row, RowId]);\n\n return row => map.get(row)!;\n};\n","import { GetCustomGroupsFn } from '../../types';\nimport {\n GRID_GROUP_CHECK,\n GRID_GROUP_LEVEL_KEY,\n GRID_GROUP_TYPE,\n} from '../integrated-grouping/constants';\n\nexport const getCustomGroups: GetCustomGroupsFn = (\n rows,\n grouping,\n keyPrefix,\n getChildGroups,\n rootRows,\n) => {\n const groupedBy = grouping.columnName;\n return getChildGroups(rows as any[], grouping, rootRows as any[])\n .map(({ key, value = key, childRows }) => ({\n groupedBy,\n compoundKey: `${keyPrefix}${key}`,\n key,\n value,\n [GRID_GROUP_CHECK]: true,\n [GRID_GROUP_LEVEL_KEY]: `${GRID_GROUP_TYPE.toString()}_${groupedBy}`,\n childRows,\n }));\n};\n","import { GroupingPanelItemsFn } from '../../types/';\n\nexport const groupingPanelItems: GroupingPanelItemsFn = (\n columns, grouping, draftGrouping,\n) => {\n const items = draftGrouping.map(({ columnName }) => ({\n column: columns.find(c => c.name === columnName)!,\n draft: !grouping.some(columnGrouping => columnGrouping.columnName === columnName),\n }));\n\n grouping.forEach(({ columnName }, index) => {\n if (draftGrouping.some(columnGrouping => columnGrouping.columnName === columnName)) return;\n items.splice(index, 0, {\n column: columns.find(c => c.name === columnName)!,\n draft: true,\n });\n });\n\n return items;\n};\n","export const setCurrentPage = (prevPage: number, page: number) => page;\nexport const setPageSize = (prevPageSize: number, size: number) => size;\n","import { clamp } from './helpers';\nimport { Row, GetRowLevelKeyFn, CurrentPageFn } from '../../types';\nimport { PureComputed } from '@devexpress/dx-core';\n\n// tslint:disable-next-line:max-line-length\nconst PAGE_HEADERS_OVERFLOW_ERROR = 'Max row level exceeds the page size. Consider increasing the page size.';\n\nexport const paginatedRows: PureComputed<[Row[], number, number]> = (rows, pageSize, page) => (\n pageSize\n ? rows.slice(pageSize * page, pageSize * (page + 1))\n : rows as Row[]\n);\n\nexport const rowsWithPageHeaders: PureComputed<[Row[], number, GetRowLevelKeyFn]> = (\n rows, pageSize, getRowLevelKey,\n) => {\n if (!pageSize || !getRowLevelKey) return rows as Row[];\n\n let result = rows.slice();\n\n let headerRows: any[] = [];\n let currentIndex = 0;\n while (result.length > currentIndex) {\n const row = result[currentIndex];\n const levelKey = getRowLevelKey(row);\n if (levelKey) {\n const headerIndex = headerRows.findIndex(headerRow => getRowLevelKey(headerRow) === levelKey);\n // tslint:disable-next-line:prefer-conditional-expression\n if (headerIndex === -1) {\n headerRows = [...headerRows, row];\n } else {\n headerRows = [...headerRows.slice(0, headerIndex), row];\n }\n if (headerRows.length >= pageSize) {\n throw new Error(PAGE_HEADERS_OVERFLOW_ERROR);\n }\n }\n const indexInPage = currentIndex % pageSize;\n if (indexInPage < headerRows.length && row !== headerRows[indexInPage]) {\n result = [\n ...result.slice(0, currentIndex),\n headerRows[indexInPage],\n ...result.slice(currentIndex),\n ];\n }\n currentIndex += 1;\n }\n\n return result;\n};\n\nexport const rowCount = (rows: Row[]) => rows.length;\n\nexport const pageCount: PureComputed<[number, number]> = (count, pageSize) => (\n pageSize ? Math.ceil(count / pageSize) : 1\n);\n\nexport const currentPage: CurrentPageFn = (\n page, totalCount, pageSize, setCurrentPage,\n) => {\n const totalPages = pageCount(totalCount, pageSize);\n const adjustedCurrentPage = clamp(page, totalPages - 1);\n if (page !== adjustedCurrentPage) {\n setTimeout(() => setCurrentPage(adjustedCurrentPage));\n }\n return adjustedCurrentPage;\n};\n","import { PureComputed } from '@devexpress/dx-core';\n\nexport const clamp: PureComputed<[number, number]> = (value, max) => (\n Math.max(Math.min(value, max), 0)\n);\n","import { PureComputed } from '@devexpress/dx-core';\nimport { NthRowOnPageFn } from '../../types';\n\nexport const firstRowOnPage: NthRowOnPageFn = (currentPage, pageSize, totalCount) => {\n if (totalCount === 0) {\n return 0;\n }\n return pageSize ? (currentPage * pageSize) + 1 : 1;\n};\n\nexport const lastRowOnPage: NthRowOnPageFn = (currentPage, pageSize, totalRowCount) => {\n let result = totalRowCount;\n if (pageSize) {\n const index = (currentPage + 1) * pageSize;\n result = index > totalRowCount ? totalRowCount : index;\n }\n\n return result;\n};\n\nexport const calculateStartPage: PureComputed<[number, number, number]> = (\n currentPage, maxButtonCount, totalPageCount,\n) => (\n Math.max(\n Math.min(\n currentPage - Math.floor(maxButtonCount / 2),\n (totalPageCount - maxButtonCount) + 1,\n ),\n 1,\n )\n);\n","import { PureComputed } from '@devexpress/dx-core';\nimport { RowId } from '../types';\n\nexport const toggle: PureComputed<[RowId[], RowId[], boolean?]> = (\n source, items, state?,\n) => {\n const itemsSet = new Set(items);\n\n let sourceState: any = state;\n if (sourceState === undefined) {\n const availableSelection = source.filter(item => itemsSet.has(item));\n sourceState = availableSelection.length !== itemsSet.size;\n }\n\n if (sourceState) {\n const sourceSet = new Set(source);\n return [\n ...source,\n ...items.filter(item => !sourceSet.has(item)),\n ];\n }\n\n return source.filter(item => !itemsSet.has(item));\n};\n","import { toggle } from '../../utils/common-reducers';\nimport { ToggleRowsFieldReducer } from '../../types';\n\nexport const toggleSelection: ToggleRowsFieldReducer = (\n selection, { rowIds, state },\n) => toggle(selection, rowIds, state);\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n RowsWithSelection, UnwrapRowsComputed, RowId, RowsWithAvailableToSelectFn,\n} from '../../types';\n\ntype RowsSelectedFn = PureComputed<[RowsWithSelection, RowId[]], boolean>;\n\nexport const rowsWithAvailableToSelect: RowsWithAvailableToSelectFn = (\n rows, getRowId, isGroupRow,\n) => {\n let dataRows = rows;\n if (isGroupRow) {\n dataRows = dataRows.filter(row => !isGroupRow(row));\n }\n return { rows, availableToSelect: dataRows.map(row => getRowId(row)) };\n};\n\nexport const someSelected: RowsSelectedFn = ({ availableToSelect }, selection) => {\n const selectionSet = new Set(selection);\n\n return availableToSelect.length !== 0 && selectionSet.size !== 0\n && availableToSelect.some(elem => selectionSet.has(elem))\n && availableToSelect.some(elem => !selectionSet.has(elem));\n};\n\nexport const allSelected: RowsSelectedFn = ({ availableToSelect }, selection) => {\n const selectionSet = new Set(selection);\n\n return selectionSet.size !== 0 && availableToSelect.length !== 0\n && !availableToSelect.some(elem => !selectionSet.has(elem));\n};\n\nexport const unwrapSelectedRows: UnwrapRowsComputed = ({ rows }) => rows;\n","import { PureReducer } from '@devexpress/dx-core';\nimport { RowId, Row, RowIdsPayload, RowPayload, RowChangePayload,\n RowChanges, EditingCell, EditingCellsPayload,\n} from '../../types';\n\nexport const startEditRows: PureReducer = (\n prevEditingRowIds, { rowIds },\n) => [...prevEditingRowIds, ...rowIds];\n\nexport const stopEditRows: PureReducer = (\n prevEditingRowIds, { rowIds },\n) => {\n const rowIdSet = new Set(rowIds);\n return prevEditingRowIds.filter(id => !rowIdSet.has(id));\n};\n\nexport const startEditCells: PureReducer = (\n prevEditingCells, { editingCells },\n) => [...prevEditingCells, ...editingCells];\n\nexport const stopEditCells: PureReducer = (\n prevEditingCells, { editingCells },\n) => {\n return prevEditingCells.filter(({ rowId, columnName }) => (\n !editingCells.some(({ rowId: currentRowId, columnName: currentColumnName }) => (\n currentRowId === rowId && currentColumnName === columnName\n ))\n ));\n};\n\nexport const addRow: PureReducer = (\n addedRows, { row } = { row: {} },\n) => [...addedRows, row];\n\nexport const changeAddedRow: PureReducer = (\n addedRows, { rowId, change },\n) => {\n const result = addedRows.slice();\n result[rowId] = { ...result[rowId], ...change };\n return result;\n};\n\nexport const cancelAddedRows: PureReducer = (addedRows, { rowIds }) => {\n const result: Row[] = [];\n const indexSet = new Set(rowIds);\n addedRows.forEach((row, index) => {\n if (!indexSet.has(index)) {\n result.push(row);\n }\n });\n return result;\n};\n\nexport const changeRow: PureReducer = (\n prevRowChanges, { rowId, change },\n) => {\n const prevChange = prevRowChanges[rowId] || {};\n return {\n ...prevRowChanges,\n [rowId]: {\n ...prevChange,\n ...change,\n },\n };\n};\n\nexport const cancelChanges: PureReducer = (\n prevRowChanges, { rowIds },\n) => {\n const result = { ...prevRowChanges };\n rowIds.forEach((rowId) => {\n delete result[rowId];\n });\n return result;\n};\n\nexport const deleteRows: PureReducer = (deletedRowIds, { rowIds }) => [\n ...deletedRowIds, ...rowIds,\n];\n\nexport const cancelDeletedRows: PureReducer = (\n deletedRowIds, { rowIds },\n) => {\n const rowIdSet = new Set(rowIds);\n return deletedRowIds.filter(rowId => !rowIdSet.has(rowId));\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n EditingColumnExtension, CreateRowChangeFn, Row, RowId, RowChanges,\n} from '../../types';\n\nexport const changedRowsByIds: PureComputed<\n [any, RowId[]], RowChanges\n> = (changes, rowIds) => {\n const result = {};\n rowIds.forEach((rowId) => {\n result[rowId] = changes[rowId];\n });\n return result;\n};\n\nexport const addedRowsByIds: PureComputed<[Row[], RowId[]]> = (addedRows, rowIds) => {\n const rowIdSet = new Set(rowIds);\n const result: Row[] = [];\n addedRows.forEach((row, index) => {\n if (rowIdSet.has(index)) {\n result.push(row);\n }\n });\n return result;\n};\n\nconst defaultCreateRowChange: CreateRowChangeFn = (row, value, columnName) => (\n { [columnName]: value }\n);\nexport const createRowChangeGetter: PureComputed<\n [CreateRowChangeFn?, EditingColumnExtension[]?], CreateRowChangeFn\n> = (\n createRowChange = defaultCreateRowChange,\n columnExtensions = [],\n) => {\n const map = columnExtensions.reduce((acc, columnExtension) => {\n if (columnExtension.createRowChange) {\n acc[columnExtension.columnName] = columnExtension.createRowChange;\n }\n return acc;\n }, {});\n\n return (row, value, columnName) => {\n if (map[columnName]) {\n return map[columnName](row, value, columnName);\n }\n return createRowChange(row, value, columnName);\n };\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { RowId, RowChanges } from '../../types';\n\nexport const getRowChange: PureComputed<[RowChanges, RowId], any> = (\n rowChanges, rowId,\n) => rowChanges[rowId] || {};\n","export const TABLE_REORDERING_TYPE = Symbol('reordering');\n","import { PureReducer, slice } from '@devexpress/dx-core';\nimport { ColumnOrder, ChangeColumnOrderPayload } from '../../types';\n\nexport const changeColumnOrder: PureReducer = (\n order, { sourceColumnName, targetColumnName },\n) => {\n const sourceColumnIndex = order.indexOf(sourceColumnName);\n const targetColumnIndex = order.indexOf(targetColumnName);\n const newOrder = slice(order);\n\n newOrder.splice(sourceColumnIndex, 1);\n newOrder.splice(targetColumnIndex, 0, sourceColumnName);\n return newOrder;\n};\n","export const TABLE_DATA_TYPE = Symbol('data');\nexport const TABLE_NODATA_TYPE = Symbol('nodata');\nexport const TABLE_FLEX_TYPE = Symbol('flex');\n","import { PureComputed, slice } from '@devexpress/dx-core';\nimport mergeSort from '../../utils/merge-sort';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { TABLE_REORDERING_TYPE } from './constants';\nimport { OrderedColumnsComputed, DraftOrderComputed, TableRow } from '../../types';\n\nexport const orderedColumns: OrderedColumnsComputed = (\n tableColumns = [], order,\n) => mergeSort(tableColumns, (a, b) => {\n if (a.type !== TABLE_DATA_TYPE || b.type !== TABLE_DATA_TYPE) return 0;\n\n const aPos = order.indexOf(a.column.name);\n const bPos = order.indexOf(b.column.name);\n return aPos - bPos;\n});\n\nexport const tableHeaderRowsWithReordering: PureComputed<[TableRow[]]> = tableHeaderRows => [\n ...tableHeaderRows,\n {\n key: TABLE_REORDERING_TYPE.toString(),\n type: TABLE_REORDERING_TYPE,\n height: 0,\n },\n];\n\nexport const draftOrder: DraftOrderComputed = (order, sourceColumnIndex, targetColumnIndex) => {\n if (sourceColumnIndex === -1\n || targetColumnIndex === -1\n || sourceColumnIndex === targetColumnIndex) {\n return order;\n }\n\n const result = slice(order);\n const sourceColumn = order[sourceColumnIndex];\n result.splice(sourceColumnIndex, 1);\n result.splice(targetColumnIndex, 0, sourceColumn);\n\n return result;\n};\n","import { ColumnSizesFn, ValidValueFn, ConvertWidthFn, ColumnWidthFn } from '../../types';\n\nconst getColumnWidth: ColumnWidthFn = (\n columnWidths, name, {\n columnName, cachedWidths, shift, minColumnWidth, maxColumnWidth, columnExtensions = [],\n}) => {\n const change = name === columnName ? shift : -shift;\n const column = columnWidths.find(elem => elem.columnName === name)!;\n const extension = columnExtensions.find(elem => elem.columnName === name);\n const width = typeof column.width === 'number'\n ? column.width\n : cachedWidths[name];\n const minWidth = extension && extension.minWidth! >= 0\n ? extension.minWidth\n : minColumnWidth;\n const maxWidth = extension && extension.maxWidth! >= 0\n ? extension.maxWidth\n : maxColumnWidth;\n const size = Math.max(\n minWidth!,\n Math.min(width + change, maxWidth!),\n );\n\n return ({ width, size });\n};\n\nexport const getColumnSizes: ColumnSizesFn = (\n columnWidths, payload) => {\n const { columnName, nextColumnName, resizingMode, shift } = payload;\n const { width, size } = getColumnWidth(columnWidths, columnName, payload);\n\n if (resizingMode === 'nextColumn') {\n const { width: nextWidth, size: nextSize } = getColumnWidth(\n columnWidths, nextColumnName, payload,\n );\n\n if (size + nextSize !== width + nextWidth) {\n const moreThanLimit = size + nextSize > width + nextWidth;\n const columnExpand = shift > 0;\n if (moreThanLimit !== columnExpand) {\n return { size, nextSize: width + nextWidth - size };\n }\n return { size: width + nextWidth - nextSize, nextSize };\n }\n return { size, nextSize };\n }\n\n return { size };\n};\n\nexport const isValidValue: ValidValueFn = (value, validUnits) => {\n const numb = parseInt(value, 10);\n const unit = numb ? value.substr(numb.toString().length) : value;\n const sizeIsAuto = isNaN(numb) && unit === 'auto';\n const sizeIsValid = numb >= 0 && validUnits.some(validUnit => validUnit === unit);\n return sizeIsAuto || sizeIsValid;\n};\n\nexport const convertWidth: ConvertWidthFn = (value) => {\n if (typeof value === 'string') {\n const numb = parseInt(value, 10);\n if (value.substr(numb.toString().length).length > 0) {\n return value;\n }\n return numb;\n }\n return value;\n};\n","import { TABLE_DATA_TYPE } from '../table/constants';\nimport { TableColumn, SpecifyWidthsFn, TableColumnsWithWidthFn, ErrorFn } from '../../types';\nimport { isValidValue, convertWidth } from './helpers';\n\nconst VALID_UNITS = ['px', '%', 'em', 'rem', 'vm', 'vh', 'vmin', 'vmax', ''];\nconst NOT_FOR_WIDGET_UNITS = ['%'];\n/* tslint:disable max-line-length */\nconst COLUMN_RESIZING_ERROR = 'The columnWidths property of the TableColumnResizing plugin is given an invalid value.';\n\nconst specifyWidths: SpecifyWidthsFn = (tableColumns, widths, resizingMode, onError) => {\n if (resizingMode !== 'widget' && resizingMode !== 'nextColumn') {\n onError();\n }\n if (!widths.length) return tableColumns;\n return tableColumns\n .reduce((acc, tableColumn) => {\n if (tableColumn.type === TABLE_DATA_TYPE) {\n const columnName = tableColumn.column!.name;\n const column = widths.find(el => el.columnName === columnName);\n const width = column && column.width;\n if (typeof width !== 'number') {\n if (width === undefined) {\n onError();\n } else if (!isValidValue(width, VALID_UNITS)) {\n onError();\n } else if (resizingMode === 'widget' && isValidValue(width, NOT_FOR_WIDGET_UNITS)) {\n onError();\n }\n } else if (width < 0) {\n onError();\n }\n if (width === undefined) {\n acc.push(tableColumn);\n } else {\n acc.push({ ...tableColumn, width: convertWidth(width) });\n }\n } else {\n acc.push(tableColumn);\n }\n return acc;\n }, [] as TableColumn[]);\n};\n\nexport const tableColumnsWithWidths: TableColumnsWithWidthFn = (\n tableColumns, columnWidths, resizingMode,\n) => specifyWidths(tableColumns, columnWidths, resizingMode, throwError);\n\nexport const tableColumnsWithDraftWidths: TableColumnsWithWidthFn = (\n tableColumns, draftColumnWidths, resizingMode,\n) => specifyWidths(tableColumns, draftColumnWidths, resizingMode, () => {});\n\nconst throwError: ErrorFn = () => {\n throw new Error(COLUMN_RESIZING_ERROR);\n};\n","import { slice } from '@devexpress/dx-core';\nimport { ColumnWidthReducer } from '../../types';\nimport { getColumnSizes } from './helpers';\n\nexport const changeTableColumnWidth: ColumnWidthReducer = (state, payload) => {\n const { columnWidths } = state;\n const { columnName, nextColumnName, resizingMode } = payload;\n const nextColumnWidth = slice(columnWidths);\n const index = nextColumnWidth.findIndex(elem => elem.columnName === columnName);\n const nextIndex = nextColumnWidth.findIndex(elem => elem.columnName === nextColumnName);\n const { size, nextSize } = getColumnSizes(columnWidths, payload);\n\n nextColumnWidth.splice(index, 1, { columnName, width: size });\n if (resizingMode === 'nextColumn') {\n nextColumnWidth.splice(nextIndex, 1, { columnName: nextColumnName, width: nextSize });\n }\n return {\n columnWidths: nextColumnWidth,\n };\n};\n\nexport const draftTableColumnWidth: ColumnWidthReducer = (state, payload) => {\n const { columnWidths } = state;\n const { columnName, nextColumnName, resizingMode } = payload;\n const { size, nextSize } = getColumnSizes(columnWidths, payload);\n\n if (resizingMode === 'nextColumn') {\n return { draftColumnWidths: [\n { columnName, width: size }, { columnName: nextColumnName, width: nextSize! },\n ] };\n }\n return { draftColumnWidths: [{ columnName, width: size }] };\n};\n\nexport const cancelTableColumnWidthDraft = () => ({\n draftColumnWidths: [],\n});\n","export const TABLE_EDIT_COMMAND_TYPE = Symbol('editCommand');\n","export const TABLE_ADDED_TYPE = Symbol('added');\nexport const TABLE_EDIT_TYPE = Symbol('edit');\n","export const TABLE_HEADING_TYPE = Symbol('heading');\n","import { TABLE_ADDED_TYPE, TABLE_EDIT_TYPE } from '../table-edit-row/constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { TABLE_HEADING_TYPE } from '../table-header-row/constants';\nimport { TABLE_EDIT_COMMAND_TYPE } from './constants';\nimport { IsSpecificCellFn } from '../../types';\n\nexport const isHeadingEditCommandsTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_HEADING_TYPE && tableColumn.type === TABLE_EDIT_COMMAND_TYPE;\nexport const isEditCommandsTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => (tableRow.type === TABLE_DATA_TYPE || tableRow.type === TABLE_ADDED_TYPE\n || tableRow.type === TABLE_EDIT_TYPE) && tableColumn.type === TABLE_EDIT_COMMAND_TYPE;\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_EDIT_COMMAND_TYPE } from './constants';\nimport { TableColumn } from '../../types';\nimport { convertWidth } from '../table-column-resizing/helpers';\n\nexport const tableColumnsWithEditing: PureComputed<[TableColumn[], number | string]> = (\n tableColumns, width,\n) => [\n { width: convertWidth(width),\n key: TABLE_EDIT_COMMAND_TYPE.toString(), type: TABLE_EDIT_COMMAND_TYPE },\n ...tableColumns];\n","import { TABLE_ADDED_TYPE, TABLE_EDIT_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { IsSpecificRowFn, IsSpecificCellFn } from '../../types';\n\nexport const isEditTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => (tableRow.type === TABLE_ADDED_TYPE || tableRow.type === TABLE_EDIT_TYPE)\n && tableColumn.type === TABLE_DATA_TYPE;\nexport const isAddedTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_ADDED_TYPE;\nexport const isEditTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_EDIT_TYPE;\n","import { slice } from '@devexpress/dx-core';\nimport { TABLE_ADDED_TYPE, TABLE_EDIT_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { TableRowsWithEditingFn } from '../../types';\n\nexport const tableRowsWithEditing: TableRowsWithEditingFn = (\n tableRows, editingRowIds, addedRows, rowHeight,\n) => {\n const rowIds = new Set(editingRowIds);\n const editedTableRows = tableRows\n .map(tableRow => (\n tableRow.type === TABLE_DATA_TYPE && rowIds.has(tableRow.rowId!)\n ? {\n ...tableRow,\n type: TABLE_EDIT_TYPE,\n height: rowHeight,\n }\n : tableRow\n ));\n\n const addedTableRows = addedRows\n .map((row, rowIndex) => ({\n row,\n key: `${TABLE_ADDED_TYPE.toString()}_${rowIndex}`,\n type: TABLE_ADDED_TYPE,\n rowId: rowIndex,\n height: rowHeight,\n }));\n\n return [\n ...slice(addedTableRows).reverse(),\n ...editedTableRows,\n ];\n};\n","import { TableRowsWithEditingCellsFn, TableColumnsWithEditingCellsFn } from '../../types';\nimport { TABLE_DATA_TYPE } from '../table/constants';\n\nexport const rowsWithEditingCells: TableRowsWithEditingCellsFn = (\n tableBodyRows, editingCells,\n) => tableBodyRows.map((row) => {\n const { rowId, type } = row;\n if (\n rowId !== undefined &&\n type === TABLE_DATA_TYPE &&\n editingCells.some(elem => elem.rowId === rowId)\n ) {\n return {\n ...row,\n hasEditCell: true,\n };\n }\n return row;\n});\n\nexport const columnsWithEditingCells: TableColumnsWithEditingCellsFn = (\n tableColumns, editingCells,\n) => tableColumns.map((tableColumn) => {\n const columnName = tableColumn.column ? tableColumn.column.name : undefined;\n if (columnName !== undefined && editingCells.some(elem => elem.columnName === columnName)) {\n return {\n ...tableColumn,\n hasEditCell: true,\n };\n }\n return tableColumn;\n});\n","export const TABLE_FILTER_TYPE = Symbol('filter');\nexport const DEFAULT_FILTER_OPERATIONS = [\n 'contains',\n 'notContains',\n 'startsWith',\n 'endsWith',\n 'equal',\n 'notEqual',\n];\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_FILTER_TYPE, DEFAULT_FILTER_OPERATIONS } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport {\n IsSpecificCellFn, IsSpecificRowFn, FilterOperation, GetAvailableFilterOperationsFn,\n GetSelectedFilterOperationFn,\n} from '../../types';\n\nexport const isFilterTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_FILTER_TYPE && tableColumn.type === TABLE_DATA_TYPE;\n\nexport const isFilterTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_FILTER_TYPE;\n\nexport const getColumnFilterOperations: PureComputed<\n [GetAvailableFilterOperationsFn, string],\n FilterOperation[]\n> = (\n getAvailableFilterOperations, columnName,\n) => (getAvailableFilterOperations && getAvailableFilterOperations(columnName))\n || DEFAULT_FILTER_OPERATIONS;\n\nexport const isFilterValueEmpty = (value: any) => value === undefined || !String(value).length;\n\nexport const getSelectedFilterOperation: GetSelectedFilterOperationFn = (\n filterOperations, columnName, columnFilter, columnFilterOperations,\n) => {\n if (columnFilter && columnFilter.operation) {\n return columnFilter.operation;\n }\n if (filterOperations[columnName]) {\n return filterOperations[columnName];\n }\n return columnFilterOperations[0];\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_FILTER_TYPE } from './constants';\nimport { TableRow } from '../../types';\n\nexport const tableHeaderRowsWithFilter: PureComputed<[TableRow[], number]> = (\n headerRows, rowHeight,\n) => [\n ...headerRows,\n { key: TABLE_FILTER_TYPE.toString(), type: TABLE_FILTER_TYPE, height: rowHeight }];\n","export const TABLE_GROUP_TYPE = Symbol('group');\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n GetVisibleBoundaryWithFixedFn, VisibleBoundary, GetVisibleBoundaryFn, GetSpanBoundaryFn,\n CollapseBoundariesFn, GetColumnsSizeFn, GetCollapsedColumnsFn, CollapsedColumn,\n GetCollapsedAndStubRowsFn, GetCollapsedCellsFn, GetCollapsedGridFn, GetColumnWidthFn,\n TableColumn,\n CollapsedCell,\n GetColumnWidthGetterFn,\n GetCollapsedGridsFn,\n CollapsedGrid,\n GetSpecificRenderBoundaryFn,\n GetRenderBoundaryFn,\n GetRowsVisibleBoundaryFn,\n} from '../types';\nimport { TABLE_FLEX_TYPE, intervalUtil } from '..';\n\nexport const TABLE_STUB_TYPE = Symbol('stub');\n\nexport const getVisibleBoundaryWithFixed: GetVisibleBoundaryWithFixedFn = (\n visibleBoundary, items,\n) => items.reduce((acc, item, index) => {\n if (item.fixed && (index < visibleBoundary[0] || index > visibleBoundary[1])) {\n acc.push([index, index]);\n }\n return acc;\n}, [visibleBoundary] as [VisibleBoundary]);\n\nexport const getVisibleBoundary: GetVisibleBoundaryFn = (\n items, viewportStart, viewportSize, getItemSize, offset = 0, itemSize = 0,\n) => {\n let start: number | null = null;\n let end: number | null = null;\n let index = 0;\n let beforePosition = offset * itemSize;\n\n const viewportEnd = viewportStart + viewportSize;\n while (end === null && index < items.length) {\n const item = items[index];\n const afterPosition = beforePosition + getItemSize(item)!;\n const isVisible = (beforePosition >= viewportStart && beforePosition < viewportEnd)\n || (afterPosition > viewportStart && afterPosition <= viewportEnd)\n || (beforePosition < viewportStart && afterPosition > viewportEnd);\n if (isVisible && start === null) {\n start = index;\n }\n if (!isVisible && start !== null) {\n end = index - 1;\n break;\n }\n index += 1;\n beforePosition = afterPosition;\n }\n if (start !== null && end === null) {\n end = index - 1;\n }\n\n start = start === null ? 0 : start;\n end = end === null ? 0 : end;\n\n return [start + offset, end + offset];\n};\n\nexport const getRenderBoundary: GetRenderBoundaryFn = (itemsCount, visibleBoundary, overscan) => {\n let [start, end] = visibleBoundary;\n start = Math.max(0, start - overscan);\n end = Math.min(itemsCount - 1, end + overscan);\n\n return [start, end];\n};\n\nexport const getColumnBoundaries: PureComputed<\n [TableColumn[], number, number, GetColumnWidthFn], VisibleBoundary[]\n> = (columns, left, width, getColumnWidth) => (\n getVisibleBoundaryWithFixed(\n getColumnsRenderBoundary(\n columns.length,\n getVisibleBoundary(columns, left, width, getColumnWidth, 0),\n ),\n columns,\n )\n);\nexport const getRowsVisibleBoundary: GetRowsVisibleBoundaryFn = (\n rows, top, height, getRowHeight, offset, rowHeight, isDataRemote,\n) => {\n const beforePosition = offset * rowHeight;\n const noVisibleRowsLoaded = rowHeight > 0 &&\n beforePosition + rows.length * rowHeight < top ||\n top < beforePosition;\n\n let boundaries;\n if (isDataRemote && noVisibleRowsLoaded) {\n const topIndex = Math.round(top / rowHeight);\n boundaries = [topIndex, topIndex];\n } else {\n boundaries = getVisibleBoundary(rows, top, height, getRowHeight, offset, rowHeight);\n }\n\n return boundaries;\n};\n\nexport const getColumnsRenderBoundary: GetSpecificRenderBoundaryFn = (\n columnCount, visibleBoundary,\n) => getRenderBoundary(columnCount, visibleBoundary, 1);\n\nexport const getRowsRenderBoundary: GetSpecificRenderBoundaryFn = (\n rowsCount, visibleBoundary,\n) => getRenderBoundary(rowsCount, visibleBoundary, 3);\n\nexport const getSpanBoundary: GetSpanBoundaryFn = (\n items, visibleBoundaries, getItemSpan,\n) => visibleBoundaries\n .map((visibleBoundary) => {\n const endIndex = Math.min(visibleBoundary[1], items.length - 1);\n let end = endIndex;\n let start = visibleBoundary[0] <= end ? visibleBoundary[0] : 0;\n\n for (let index = 0; index <= endIndex; index += 1) {\n const span = getItemSpan(items[index]);\n if (index < visibleBoundary[0] && index + span > visibleBoundary[0]) {\n start = index;\n }\n if (index + (span - 1) > visibleBoundary[1]) {\n end = index + (span - 1);\n }\n }\n return [start, end] as VisibleBoundary;\n });\n\nexport const collapseBoundaries: CollapseBoundariesFn = (\n itemsCount, visibleBoundaries, spanBoundaries,\n) => {\n const breakpoints = new Set([0, itemsCount]);\n spanBoundaries.forEach(rowBoundaries => rowBoundaries\n .forEach((boundary) => {\n breakpoints.add(boundary[0]);\n // next interval starts after span end point\n breakpoints.add(Math.min(boundary[1] + 1, itemsCount));\n }));\n\n visibleBoundaries\n .filter(boundary => boundary.every(bound => 0 <= bound && bound < itemsCount))\n .forEach((boundary) => {\n for (let point = boundary[0]; point <= boundary[1]; point += 1) {\n breakpoints.add(point);\n }\n if (boundary[1] + 1 < itemsCount) {\n // close last visible point\n breakpoints.add(boundary[1] + 1);\n }\n });\n\n const bp = [...breakpoints].sort((a, b) => a - b);\n const bounds: any[] = [];\n for (let i = 0; i < bp.length - 1; i += 1) {\n bounds.push([\n bp[i],\n bp[i + 1] - 1,\n ]);\n }\n\n return bounds;\n};\n\nconst getColumnsSize: GetColumnsSizeFn = (columns, startIndex, endIndex, getColumnSize) => {\n let size = 0;\n for (let i = startIndex; i <= endIndex; i += 1) {\n size += getColumnSize(columns[i], 0) || 0;\n }\n return size;\n};\n\nexport const getCollapsedColumns: GetCollapsedColumnsFn = (\n columns, visibleBoundaries, boundaries, getColumnWidth,\n) => {\n const collapsedColumns: CollapsedColumn[] = [];\n boundaries.forEach((boundary) => {\n const isVisible = visibleBoundaries.reduce((acc, visibleBoundary) => (\n acc || (visibleBoundary[0] <= boundary[0] && boundary[1] <= visibleBoundary[1])\n ), false);\n\n if (isVisible) {\n const column = columns[boundary[0]];\n collapsedColumns.push({\n ...column,\n width: getColumnWidth(column) as number,\n });\n } else {\n collapsedColumns.push({\n key: `${TABLE_STUB_TYPE.toString()}_${boundary[0]}_${boundary[1]}`,\n type: TABLE_STUB_TYPE,\n width: getColumnsSize(columns, boundary[0], boundary[1], getColumnWidth),\n });\n }\n });\n return collapsedColumns;\n};\n\nexport const getCollapsedRows: GetCollapsedAndStubRowsFn = (\n rows, visibleBoundary, boundaries, getRowHeight, getCells, offset,\n) => {\n const collapsedRows: any[] = [];\n boundaries.forEach((boundary) => {\n const isVisible = visibleBoundary[0] <= boundary[0] && boundary[1] <= visibleBoundary[1];\n if (isVisible) {\n const row = rows[boundary[0] - offset];\n collapsedRows.push({\n row,\n cells: getCells(row),\n });\n } else {\n const row = {} as any;\n collapsedRows.push({\n row: {\n key: `${TABLE_STUB_TYPE.toString()}_${boundary[0]}_${boundary[1]}`,\n type: TABLE_STUB_TYPE,\n height: getColumnsSize(rows, boundary[0], boundary[1], getRowHeight),\n },\n cells: getCells(row),\n });\n }\n });\n return collapsedRows;\n};\n\nexport const getCollapsedCells: GetCollapsedCellsFn = (\n columns, spanBoundaries, boundaries, getColSpan,\n) => {\n const collapsedCells: CollapsedCell[] = [];\n let index = 0;\n while (index < boundaries.length) {\n const boundary = boundaries[index];\n const isSpan = spanBoundaries.reduce((acc, spanBoundary) => (\n acc || (spanBoundary[0] <= boundary[0] && boundary[1] <= spanBoundary[1])), false);\n if (isSpan) {\n const column = columns[boundary[0]];\n const realColSpan = getColSpan(column);\n const realColSpanEnd = (realColSpan + boundary[0]) - 1;\n const colSpanEnd = boundaries.findIndex(\n colSpanBoundary => colSpanBoundary[0]\n <= realColSpanEnd && realColSpanEnd\n <= colSpanBoundary[1],\n );\n collapsedCells.push({\n column,\n colSpan: (colSpanEnd - index) + 1,\n });\n index += 1;\n } else {\n collapsedCells.push({\n column: {\n key: `${TABLE_STUB_TYPE.toString()}_${boundary[0]}_${boundary[1]}`,\n type: TABLE_STUB_TYPE,\n },\n colSpan: 1,\n });\n index += 1;\n }\n }\n return collapsedCells;\n};\n\nexport const getCollapsedGrid: GetCollapsedGridFn = ({\n rows,\n columns,\n rowsVisibleBoundary,\n columnsVisibleBoundary,\n getColumnWidth = (column: any) => column.width,\n getRowHeight = (row: any) => row.height,\n getColSpan = () => 1,\n totalRowCount,\n offset,\n}) => {\n if (!columns.length) {\n return {\n columns: [],\n rows: [],\n };\n }\n\n const boundaries = rowsVisibleBoundary || [0, rows.length - 1 || 1];\n\n const rowSpanBoundaries = rows\n .slice(boundaries[0], boundaries[1])\n .map(row => getSpanBoundary(\n columns,\n columnsVisibleBoundary,\n column => getColSpan(row, column),\n ));\n const columnBoundaries = collapseBoundaries(\n columns.length,\n columnsVisibleBoundary,\n rowSpanBoundaries,\n );\n\n const rowBoundaries = collapseBoundaries(totalRowCount!, [boundaries], []);\n\n return {\n columns: getCollapsedColumns(\n columns,\n columnsVisibleBoundary,\n columnBoundaries,\n getColumnWidth,\n ),\n rows: getCollapsedRows(\n rows,\n boundaries,\n rowBoundaries,\n getRowHeight,\n row => getCollapsedCells(\n columns,\n getSpanBoundary(\n columns,\n columnsVisibleBoundary,\n column => getColSpan(row, column),\n ),\n columnBoundaries,\n column => getColSpan(row, column),\n ),\n offset,\n ),\n };\n};\n\nexport const getColumnWidthGetter: GetColumnWidthGetterFn = (\n tableColumns, tableWidth, minColumnWidth,\n) => {\n const colsHavingWidth = tableColumns.filter(col => typeof col.width === 'number');\n const columnsWidth = colsHavingWidth.reduce((acc, col) => (acc + (col.width as number)!), 0);\n const autoWidth = (tableWidth - columnsWidth) / (tableColumns.length - colsHavingWidth.length);\n const autoColWidth = Math.max(autoWidth, minColumnWidth!);\n\n return column => (column.type === TABLE_FLEX_TYPE\n ? null\n : typeof column.width === 'number' ? column.width : autoColWidth);\n};\n\nexport const getCollapsedGrids: GetCollapsedGridsFn = ({\n headerRows = [],\n bodyRows = [],\n footerRows = [],\n columns,\n loadedRowsStart,\n totalRowCount,\n getCellColSpan,\n viewport,\n getRowHeight,\n getColumnWidth,\n },\n) => {\n const getColSpan = (\n tableRow: any, tableColumn: any,\n ) => getCellColSpan!({ tableRow, tableColumn, tableColumns: columns });\n\n const getCollapsedGridBlock: PureComputed<\n [any[], any[]?, number?, number?], CollapsedGrid\n > = (\n rows, rowsVisibleBoundary, rowCount = rows.length, offset = 0,\n ) => getCollapsedGrid({\n rows,\n columns,\n rowsVisibleBoundary,\n columnsVisibleBoundary: viewport.columns,\n getColumnWidth,\n getRowHeight,\n getColSpan,\n totalRowCount: rowCount,\n offset,\n });\n\n const headerGrid = getCollapsedGridBlock(\n headerRows, getRenderRowBounds(viewport.headerRows, headerRows.length),\n );\n const bodyGrid = getCollapsedGridBlock(\n bodyRows,\n adjustedRenderRowBounds(\n viewport.rows, bodyRows.length, loadedRowsStart,\n ),\n totalRowCount || 1,\n loadedRowsStart,\n );\n const footerGrid = getCollapsedGridBlock(\n footerRows, getRenderRowBounds(viewport.footerRows, footerRows.length),\n );\n\n return {\n headerGrid,\n bodyGrid,\n footerGrid,\n };\n};\n\nconst getRenderRowBounds: PureComputed<[VisibleBoundary, number], number[]> = (\n visibleBounds, rowCount,\n) => getRowsRenderBoundary(\n rowCount,\n visibleBounds,\n);\n\nconst adjustedRenderRowBounds: PureComputed<[VisibleBoundary, number, number], number[]> = (\n visibleBounds, rowCount, loadedRowsStart,\n) => {\n const renderRowBoundaries = getRenderRowBounds(\n visibleBounds, loadedRowsStart + rowCount,\n );\n const adjustedInterval = intervalUtil.intersect(\n { start: renderRowBoundaries[0], end: renderRowBoundaries[1] },\n { start: loadedRowsStart, end: loadedRowsStart + rowCount },\n );\n return [adjustedInterval.start, adjustedInterval.end];\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_GROUP_TYPE } from './constants';\nimport { TableRow, TableColumn, IsSpecificCellFn, Grouping, GroupSummaryItem } from '../../types';\nimport { TABLE_STUB_TYPE } from '../../utils/virtual-table';\nimport { TABLE_DATA_TYPE, TABLE_FLEX_TYPE } from '../table/constants';\n\ntype IsGroupIndentCellFn = PureComputed<[TableRow, TableColumn, Grouping[]], boolean>;\n\nconst getGroupIndexByColumn: PureComputed<[Grouping[], TableColumn], number> = (\n grouping, tableColumn,\n) => grouping.findIndex(\n columnGrouping => !!tableColumn.column && columnGrouping.columnName === tableColumn.column.name,\n);\n\nconst isIndentCell: IsGroupIndentCellFn = (\n tableRow,\n tableColumn,\n grouping,\n ) => {\n if (tableColumn.column && tableRow.row.groupedBy === tableColumn.column.name) return false;\n const rowGroupIndex = grouping.findIndex(\n columnGrouping => columnGrouping.columnName === tableRow.row.groupedBy,\n );\n const columnGroupIndex = getGroupIndexByColumn(grouping, tableColumn);\n\n return columnGroupIndex < rowGroupIndex;\n};\n\nexport const isGroupTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => !!(tableRow.type === TABLE_GROUP_TYPE && tableColumn.type === TABLE_GROUP_TYPE\n && tableColumn.column\n && tableColumn.column.name === tableRow.row.groupedBy);\n\nexport const isGroupIndentTableCell: IsGroupIndentCellFn = (\n tableRow, tableColumn, grouping,\n) => (\n tableRow.type === TABLE_GROUP_TYPE && tableColumn.type === TABLE_GROUP_TYPE &&\n isIndentCell(tableRow, tableColumn, grouping)\n);\n\nexport const isGroupIndentStubTableCell: IsGroupIndentCellFn = (\n tableRow, tableColumn, grouping,\n) => (\n (tableRow.type === TABLE_GROUP_TYPE && tableColumn.type === TABLE_STUB_TYPE &&\n isIndentCell(tableRow, tableColumn, grouping))\n);\n\nexport const isGroupTableRow = (tableRow: TableRow) => tableRow.type === TABLE_GROUP_TYPE;\n\nexport const isGroupRowOrdinaryCell: IsSpecificCellFn = (tableRow, tableColumn) => (\n isGroupTableRow(tableRow) && !isGroupTableCell(tableRow, tableColumn)\n);\n\nconst columnHasGroupRowSummary: PureComputed<[TableColumn, GroupSummaryItem[]], boolean> = (\n tableColumn, groupSummaryItems,\n) => (\n !!(groupSummaryItems && groupSummaryItems\n .some(item => (\n (!item.showInGroupFooter && item.alignByColumn)\n && item.columnName === (tableColumn.column && tableColumn.column.name)\n )))\n);\n\nexport const isRowSummaryCell: PureComputed<\n [TableRow, TableColumn, Grouping[], GroupSummaryItem[]], boolean\n> = (\n tableRow, tableColumn, grouping, groupSummaryItems,\n) => (\n columnHasGroupRowSummary(tableColumn, groupSummaryItems)\n && !isGroupIndentTableCell(tableRow, tableColumn, grouping)\n);\n\nexport const isPreviousCellContainSummary: PureComputed<\n [TableRow, TableColumn, TableColumn[], Grouping[], GroupSummaryItem[]], boolean\n> = (\n tableRow, tableColumn, tableColumns, grouping, groupSummaryItems,\n) => {\n const columnIndex = tableColumns.indexOf(tableColumn);\n return columnIndex > 0 && isRowSummaryCell(\n tableRow, tableColumns[columnIndex - 1], grouping, groupSummaryItems,\n );\n};\n\nexport const calculateGroupCellIndent: PureComputed<[TableColumn, Grouping[], number], number> = (\n tableColumn, grouping, indentWidth,\n) => (\n indentWidth * getGroupIndexByColumn(grouping, tableColumn)\n);\n\nexport const sortAndSpliceColumns: PureComputed<[TableColumn[], number]> = (\n tableColumns, firstVisibleColumnIndex,\n) => {\n const groupColumns = tableColumns.filter(col => col.type === TABLE_GROUP_TYPE);\n const dataColumns = tableColumns.filter(col => col.type === TABLE_DATA_TYPE);\n const flexColumns = tableColumns.filter(col => col.type === TABLE_FLEX_TYPE);\n const otherColumns = tableColumns.filter(\n col =>\n col.type !== TABLE_DATA_TYPE &&\n col.type !== TABLE_GROUP_TYPE &&\n col.type !== TABLE_FLEX_TYPE,\n );\n\n if (firstVisibleColumnIndex) {\n const firstGroupIndex = tableColumns.indexOf(groupColumns[0]);\n otherColumns.splice(0, Math.min(firstVisibleColumnIndex, firstGroupIndex));\n }\n\n return [...groupColumns, ...otherColumns, ...dataColumns, ...flexColumns];\n};\n","import { TABLE_DATA_TYPE } from '../table/constants';\nimport { TABLE_GROUP_TYPE } from './constants';\nimport { PureComputed } from '@devexpress/dx-core';\nimport {\n TableColumn, TableRow, IsSpecificRowFn,\n TableColumnsWithDraftGroupingFn,\n TableColumnsWithGroupingFn,\n GroupCellColSpanGetter,\n GroupSummaryChainsFn,\n SummaryItem,\n} from '../../types';\nimport { sortAndSpliceColumns } from './helpers';\n\nconst tableColumnsWithDraftGrouping: TableColumnsWithDraftGroupingFn = (\n tableColumns, grouping, draftGrouping, showColumnWhenGrouped,\n) => tableColumns\n .reduce((acc, tableColumn) => {\n if (tableColumn.type !== TABLE_DATA_TYPE) {\n acc.push(tableColumn);\n return acc;\n }\n\n const columnName = tableColumn.column && tableColumn.column.name || '';\n const columnGroupingExists = grouping\n .some(columnGrouping => columnGrouping.columnName === columnName);\n const columnDraftGroupingExists = draftGrouping\n .some(columnGrouping => columnGrouping.columnName === columnName);\n\n if ((!columnGroupingExists && !columnDraftGroupingExists)\n || showColumnWhenGrouped(columnName)) {\n acc.push(tableColumn);\n } else if ((!columnGroupingExists && columnDraftGroupingExists)\n || (columnGroupingExists && !columnDraftGroupingExists)) {\n acc.push({\n ...tableColumn,\n draft: true,\n });\n }\n return acc;\n // tslint:disable-next-line: prefer-array-literal\n }, [] as Array);\n\nexport const tableColumnsWithGrouping: TableColumnsWithGroupingFn = (\n columns, tableColumns, grouping, draftGrouping, indentColumnWidth, showColumnWhenGrouped,\n) => [\n ...grouping.map((columnGrouping) => {\n const groupedColumn = columns.find(column => column.name === columnGrouping.columnName);\n return {\n key: `${TABLE_GROUP_TYPE.toString()}_${groupedColumn!.name}`,\n type: TABLE_GROUP_TYPE,\n column: groupedColumn,\n width: indentColumnWidth,\n };\n }),\n ...tableColumnsWithDraftGrouping(tableColumns, grouping, draftGrouping, showColumnWhenGrouped),\n];\n\nexport const tableRowsWithGrouping: PureComputed<[TableRow[], IsSpecificRowFn]> = (\n tableRows, isGroupRow,\n) => tableRows.map((tableRow) => {\n if (tableRow.type !== TABLE_DATA_TYPE || !isGroupRow(tableRow.row)) {\n return tableRow;\n }\n return {\n ...tableRow,\n key: `${TABLE_GROUP_TYPE.toString()}_${tableRow.row.compoundKey}`,\n type: TABLE_GROUP_TYPE,\n };\n});\n\nconst isRowLevelSummary: PureComputed<[SummaryItem[], string], boolean> = (\n groupSummaryItems, colName,\n) => (\n groupSummaryItems.some((item: any) => (\n !item.showInGroupFooter && item.alignByColumn && item.columnName === colName),\n )\n);\n\nconst groupSummaryChains: GroupSummaryChainsFn = (\n tableRow,\n tableColumns,\n groupSummaryItems,\n firstVisibleColumnIndex,\n) => {\n let captionStarted = false;\n return sortAndSpliceColumns(tableColumns, firstVisibleColumnIndex)\n .reduce((acc, col) => {\n const colName = (col.column && col.column.name) as string;\n const isStartOfGroupCaption = col.type === TABLE_GROUP_TYPE\n && tableRow.row.groupedBy === colName;\n const isIndentColumn = col.type === TABLE_GROUP_TYPE\n && tableRow.row.groupedBy !== colName && !captionStarted;\n\n if (isStartOfGroupCaption) {\n captionStarted = true;\n }\n\n if (isStartOfGroupCaption || isIndentColumn) {\n acc.push([colName]);\n } else if (groupSummaryItems && isRowLevelSummary(groupSummaryItems, colName)) {\n acc.push([colName]);\n acc.push([]);\n } else {\n acc[acc.length - 1].push(colName);\n }\n return acc;\n }, [[]] as string[][]);\n};\n\nexport const tableGroupCellColSpanGetter: GroupCellColSpanGetter = (\n getTableCellColSpan, groupSummaryItems, firstVisibleColumnIndex,\n) => (params) => {\n const { tableRow, tableColumns, tableColumn } = params;\n\n if (tableRow.type === TABLE_GROUP_TYPE) {\n const colName = tableColumn.column?.name;\n const dataColumnGroupedBy =\n tableRow.row.groupedBy === colName && tableColumn.type !== TABLE_GROUP_TYPE;\n const chains = groupSummaryChains(\n tableRow, tableColumns, groupSummaryItems, firstVisibleColumnIndex,\n );\n const chain = chains.find(ch => !dataColumnGroupedBy && ch[0] === colName);\n\n if (chain) {\n return chain.length;\n }\n }\n return getTableCellColSpan(params);\n};\n","import { TABLE_HEADING_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport {\n IsSpecificCellFn, IsSpecificRowFn, HeaderColumnChain,\n SplitHeaderColumnChainsFn, FindChainByColumnIndexFn,\n GenerateChainsFn,\n NextColumnNameFn,\n GetNextColumnNameFn,\n} from '../../types';\n\nexport const isHeadingTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_HEADING_TYPE && tableColumn.type === TABLE_DATA_TYPE;\n\nexport const isHeadingTableRow: IsSpecificRowFn = tableRow => (\n tableRow.type === TABLE_HEADING_TYPE\n);\n\nexport const findChainByColumnIndex: FindChainByColumnIndexFn = (chains, columnIndex) => (\n chains.find(chain => (\n chain.start <= columnIndex && columnIndex < chain.start + chain.columns.length\n ))!\n);\n\nexport const splitHeaderColumnChains: SplitHeaderColumnChainsFn = (\n tableColumnChains, tableColumns, shouldSplitChain, extendChainProps,\n) => (\n tableColumnChains.map((row, rowIndex) => row\n .reduce((acc, chain) => {\n let currentChain: any = null;\n chain.columns.forEach((col) => {\n const column = tableColumns.find(c => c.key === col.key);\n const isNewGroup = shouldSplitChain(currentChain, column!, rowIndex);\n\n if (isNewGroup) {\n const start = currentChain\n ? (currentChain.start + currentChain.columns.length)\n : chain.start;\n\n acc.push({\n ...chain,\n ...extendChainProps(column!),\n start,\n columns: [],\n });\n currentChain = acc[acc.length - 1];\n }\n\n currentChain.columns.push(column);\n });\n\n return acc;\n }, [] as HeaderColumnChain[]))\n);\n\nexport const generateSimpleChains: GenerateChainsFn = (rows, columns) => (\n rows.map(() => ([{\n columns,\n start: 0,\n }]))\n);\n\nconst nextColumnName: NextColumnNameFn = (tableColumns , index) => {\n const isNextColumnHasName = index < tableColumns.length - 1 && tableColumns[index + 1].column;\n return isNextColumnHasName\n ? tableColumns[index + 1].column!.name\n : undefined;\n};\n\nexport const getNextColumnName: GetNextColumnNameFn = (tableColumns, columnName) => {\n const index = tableColumns.findIndex(elem =>\n elem.column && elem.column.name === columnName,\n );\n return index >= 0\n ? nextColumnName(tableColumns, index)\n : undefined;\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_HEADING_TYPE } from './constants';\nimport { TableRow } from '../../types';\n\nexport const tableRowsWithHeading: PureComputed<[TableRow[]]> = headerRows => [\n { key: TABLE_HEADING_TYPE.toString(), type: TABLE_HEADING_TYPE },\n ...headerRows];\n","export const TABLE_BAND_TYPE = Symbol('band');\nexport const BAND_GROUP_CELL = 'bandGroupCell';\nexport const BAND_HEADER_CELL = 'bandHeaderCell';\nexport const BAND_EMPTY_CELL = 'bandEmptyCell';\nexport const BAND_DUPLICATE_RENDER = 'bandDuplicateRender';\nexport const BAND_FILL_LEVEL_CELL = 'bandFillLevelCell';\n","import {\n TABLE_BAND_TYPE, BAND_GROUP_CELL, BAND_HEADER_CELL, BAND_EMPTY_CELL,\n BAND_DUPLICATE_RENDER, BAND_FILL_LEVEL_CELL,\n} from './constants';\nimport { TABLE_HEADING_TYPE } from '../table-header-row/constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { findChainByColumnIndex } from '../table-header-row/helpers';\nimport {\n IsSpecificRowFn, GetColumnBandMetaFn, GetBandComponentFn, CalculateBandFn,\n} from '../../types';\nimport { TABLE_STUB_TYPE } from '../../utils/virtual-table';\n\nexport const isBandedTableRow: IsSpecificRowFn = tableRow => (tableRow.type === TABLE_BAND_TYPE);\nexport const isBandedOrHeaderRow: IsSpecificRowFn = tableRow => isBandedTableRow(tableRow)\n || tableRow.type === TABLE_HEADING_TYPE;\nexport const isNoDataColumn = (columnType: symbol) => columnType !== TABLE_DATA_TYPE;\n\nexport const getColumnMeta: GetColumnBandMetaFn = (\n columnName, bands, tableRowLevel, key = '',\n level = 0, title = null, result = null,\n) => bands.reduce((acc, band) => {\n if (band.columnName === columnName) {\n return { ...acc, title, level, key };\n }\n if (band.children !== undefined) {\n const rowLevelPassed = level > tableRowLevel;\n const bandTitle = rowLevelPassed ? title : band.title;\n const bandKey = rowLevelPassed ? key : `${key}_${bandTitle}`;\n\n return getColumnMeta(\n columnName,\n band.children,\n tableRowLevel,\n bandKey,\n level + 1,\n bandTitle,\n acc,\n );\n }\n return acc;\n}, result || { level, title, key: title });\n\nexport const calculateBand: CalculateBandFn = (visibleBound, headerChain) => {\n if (visibleBound) {\n const bandStart = Math.max(visibleBound[0], headerChain.start);\n\n const bandEnd = Math.min(\n visibleBound[1] + 1,\n headerChain.start + headerChain.columns.length,\n );\n\n return [bandStart, bandEnd];\n }\n\n return [headerChain.start, headerChain.start + headerChain.columns.length];\n};\n\nexport const getBandComponent: GetBandComponentFn = (\n { tableColumn: currentTableColumn, tableRow, rowSpan },\n tableHeaderRows, tableColumns, columnBands, tableHeaderColumnChains,\n columnVisibleIntervals, bandLevelsVisibility,\n) => {\n if (rowSpan) return { type: BAND_DUPLICATE_RENDER, payload: null };\n\n const maxLevel = tableHeaderRows.filter(column => column.type === TABLE_BAND_TYPE).length + 1;\n const { level } = tableRow;\n const currentRowLevel = level === undefined\n ? maxLevel - 1 : level;\n const currentColumnMeta = currentTableColumn.type === TABLE_DATA_TYPE\n ? getColumnMeta(currentTableColumn.column!.name, columnBands, currentRowLevel)\n : { level: 0, title: '' };\n\n const currentColumnIndex = tableColumns\n .findIndex(column => column.key === currentTableColumn.key);\n\n const levelsCount = bandLevelsVisibility.length;\n const visibleLevelsCount = bandLevelsVisibility.filter(Boolean).length;\n\n if (currentColumnMeta.level < currentRowLevel) {\n const shouldFillLevel = currentRowLevel > 0 && visibleLevelsCount < levelsCount\n && !bandLevelsVisibility[currentRowLevel] && currentTableColumn.type === TABLE_STUB_TYPE;\n\n if (shouldFillLevel) {\n return { type: BAND_FILL_LEVEL_CELL, payload: null };\n }\n return { type: BAND_EMPTY_CELL, payload: null };\n }\n\n const previousTableColumn = tableColumns[currentColumnIndex - 1];\n let beforeBorder = false;\n if (currentColumnIndex > 0 && currentTableColumn.type === TABLE_DATA_TYPE\n && isNoDataColumn(previousTableColumn.type)) {\n beforeBorder = true;\n }\n\n const isStubColumn = currentTableColumn.type === TABLE_STUB_TYPE;\n const isColumnVisible = currentColumnIndex >= 0;\n\n if (currentColumnMeta.level === currentRowLevel) {\n if (isStubColumn) {\n const cellRowSpan = visibleLevelsCount < levelsCount\n ? visibleLevelsCount || 1\n : maxLevel;\n\n return {\n type: BAND_FILL_LEVEL_CELL,\n payload: {\n rowSpan: cellRowSpan,\n },\n };\n }\n\n if (isColumnVisible) {\n return {\n type: BAND_HEADER_CELL,\n payload: {\n tableRow: tableHeaderRows.find(row => row.type === TABLE_HEADING_TYPE),\n rowSpan: maxLevel - currentRowLevel,\n ...beforeBorder && { beforeBorder },\n },\n };\n }\n }\n\n if (!isColumnVisible) return { type: BAND_EMPTY_CELL, payload: null };\n\n const currentColumnChain = findChainByColumnIndex(\n tableHeaderColumnChains[currentRowLevel],\n currentColumnIndex,\n );\n const columnVisibleBoundary = columnVisibleIntervals.find(([start, end]) => (\n start <= currentColumnIndex && currentColumnIndex <= end\n ));\n\n const [bandStart, bandEnd] = calculateBand(columnVisibleBoundary, currentColumnChain);\n\n if (bandStart < currentColumnIndex) {\n return { type: null, payload: null };\n }\n\n return {\n type: BAND_GROUP_CELL,\n payload: {\n colSpan: bandEnd - bandStart,\n value: currentColumnMeta.title!,\n column: currentColumnMeta,\n ...beforeBorder && { beforeBorder },\n },\n };\n};\n","import { intervalUtil } from './utils';\nimport {\n VirtualRows, Row, MergeRowsFn, CalculateRequestedRangeFn,\n Interval, GridViewport, GetRequestMeta, CorrectRangeFn,\n} from '../../types';\nimport { PureComputed } from '@devexpress/dx-core';\n\nexport const emptyVirtualRows: VirtualRows = {\n skip: Number.POSITIVE_INFINITY,\n rows: [],\n};\n\nconst pluckSubarray: PureComputed<[Row[], ...number[]]> = (source, sourceStart, left, right) => (\n source.slice(left - sourceStart, right - sourceStart)\n);\n\nexport const mergeRows: MergeRowsFn = (\n rowsInterval, cacheInterval, rows, cacheRows, rowsStart, cacheStart,\n) => {\n const breakpoints = [\n rowsInterval.start, rowsInterval.end,\n cacheInterval.start, cacheInterval.end,\n ]\n .filter(i => 0 <= i && i < Number.POSITIVE_INFINITY)\n .sort((a, b) => a - b);\n\n let result: Row[] = [];\n if (breakpoints.length > 1) {\n for (let i = 0; i < breakpoints.length - 1; i += 1) {\n const left = breakpoints[i];\n const right = breakpoints[i + 1];\n const chunk = rowsInterval.start <= left && right <= rowsInterval.end\n ? pluckSubarray(rows, rowsStart, left, right) // rows have higher priority\n : pluckSubarray(cacheRows, cacheStart, left, right);\n\n result = result.concat(chunk);\n }\n }\n\n return {\n skip: breakpoints[0],\n rows: result,\n };\n};\n\nconst correctRequestedRange: CorrectRangeFn = (calculatedRange, referenceIndex, pageSize) => {\n const { start, end } = calculatedRange;\n\n if (start - referenceIndex > pageSize / 2) {\n return { start: start - pageSize, end: start };\n }\n return { start, end };\n};\n\nexport const calculateRequestedRange: CalculateRequestedRangeFn = (\n virtualRows, newRange, pageSize, referenceIndex, isInfiniteScroll,\n) => {\n const loadedInterval = intervalUtil.getRowsInterval(virtualRows);\n const isAdjacentPage = Math.abs(loadedInterval.start - newRange.start) < 2 * pageSize;\n if (isAdjacentPage) {\n const calculatedRange = intervalUtil.difference(newRange, loadedInterval);\n if (isInfiniteScroll && calculatedRange !== intervalUtil.empty) {\n return correctRequestedRange(calculatedRange, referenceIndex, pageSize);\n }\n return calculatedRange;\n }\n\n // load 3 pages at once because a missing page will be loaded anyway\n return newRange;\n};\n\nexport const rowToPageIndex: PureComputed<[number, number]> = (\n rowIndex, pageSize,\n) => Math.floor(rowIndex / pageSize);\n\nexport const recalculateBounds: PureComputed<[number, number, number], Interval> = (\n middleIndex, pageSize, totalCount,\n) => {\n const currentPageIndex = rowToPageIndex(middleIndex, pageSize);\n\n const prevPageIndex = currentPageIndex - 1;\n const nextPageIndex = currentPageIndex + 2;\n const start = Math.max(0, prevPageIndex * pageSize);\n const end = Math.min(nextPageIndex * pageSize, totalCount);\n\n return {\n start,\n end,\n };\n};\n\nexport const trimRowsToInterval: PureComputed<[VirtualRows, Interval]> = (\n virtualRows, targetInterval,\n) => {\n const rowsInterval = intervalUtil.getRowsInterval(virtualRows);\n const intersection = intervalUtil.intersect(rowsInterval, targetInterval);\n if (intervalUtil.empty === intersection) {\n return emptyVirtualRows;\n }\n\n const rows = pluckSubarray(\n virtualRows.rows, virtualRows.skip, intersection.start, intersection.end,\n );\n\n return {\n rows,\n skip: intersection.start,\n };\n};\n\nexport const getAvailableRowCount: PureComputed<[boolean, number, number, number], number> = (\n isInfiniteScroll, newRowCount, lastRowCount, totalRowCount,\n) => {\n return (isInfiniteScroll\n ? Math.min(\n Math.max(newRowCount, lastRowCount),\n totalRowCount)\n : totalRowCount\n );\n};\n\nexport const getForceReloadInterval: PureComputed<[VirtualRows, number, number], Interval> = (\n virtualRows, pageSize, totalRowCount,\n) => {\n const { start, end: intervalEnd } = intervalUtil.getRowsInterval(virtualRows);\n const end = Math.min(\n Math.max(start + pageSize * 2, intervalEnd),\n Math.max(start + pageSize * 2, totalRowCount),\n );\n return {\n start,\n end,\n };\n};\n\nexport const getRequestMeta: GetRequestMeta = (\n referenceIndex, virtualRows, pageSize, totalRowCount, forceReload, isInfiniteScroll,\n) => {\n const actualBounds = forceReload\n ? getForceReloadInterval(virtualRows, pageSize!, totalRowCount)\n : recalculateBounds(referenceIndex, pageSize!, totalRowCount);\n const requestedRange = forceReload\n ? actualBounds\n : calculateRequestedRange(\n virtualRows, actualBounds, pageSize!, referenceIndex, isInfiniteScroll,\n );\n\n return { requestedRange, actualBounds };\n};\n\nexport const needFetchMorePages: PureComputed<[VirtualRows, number, number], boolean> = (\n virtualRows, referenceIndex, pageSize,\n) => {\n const { start, end } = intervalUtil.getRowsInterval(virtualRows);\n const loadCount = end - start;\n const topTriggerIndex = start > 0 ? start + pageSize! : 0;\n const bottomTriggerIndex = Math.max(topTriggerIndex + pageSize, end - pageSize! * 1.5);\n\n if (loadCount <= 0) {\n return false;\n }\n\n return (referenceIndex < topTriggerIndex || bottomTriggerIndex < referenceIndex);\n};\n\nexport const getReferenceIndex: PureComputed<[GridViewport], number> = (\n { rows: [top, bottom] },\n) => (\n (top + bottom) / 2\n);\n\nexport const shouldSendRequest: PureComputed<[Interval, number], boolean> = (\n { start, end }, requestedPageIndex,\n) => {\n const newPageIndex = start;\n const loadCount = (end - start);\n return newPageIndex !== requestedPageIndex && loadCount > 0;\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { emptyVirtualRows } from './helpers';\nimport { Interval, VirtualRows } from '../../types';\n\nconst empty: Interval = {\n start: Number.POSITIVE_INFINITY,\n end: Number.NEGATIVE_INFINITY,\n};\n\nconst getRowsInterval: PureComputed<[VirtualRows], Interval> = r => (\n r === emptyVirtualRows\n ? empty\n : {\n start: r.skip,\n end: r.skip + r.rows.length,\n }\n);\n\nconst getLength = (a: Interval) => a.end - a.start;\n\nconst intersect = (a: Interval, b: Interval) => {\n if (a.end < b.start || b.end < a.start) {\n return empty;\n }\n\n return {\n start: Math.max(a.start, b.start),\n end: Math.min(a.end, b.end),\n };\n};\n\nconst difference = (a: Interval, b: Interval) => {\n if (empty === intervalUtil.intersect(a, b)) {\n return a;\n }\n\n if (b.end < a.end) {\n return {\n start: b.end,\n end: a.end,\n };\n }\n if (a.start < b.start) {\n return {\n start: a.start,\n end: b.start,\n };\n }\n return empty;\n};\n\nexport const intervalUtil = {\n empty,\n\n getRowsInterval,\n getLength,\n\n intersect,\n difference,\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_BAND_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { getColumnMeta } from './helpers';\nimport { splitHeaderColumnChains, generateSimpleChains } from '../table-header-row/helpers';\nimport {\n ColumnBands, GetHeaderColumnChainsFn, ShouldSplitChainFn,\n GetMaxNestedLevelFn, TableRow, TableColumn, HeaderColumnChainRows,\n BandLevels, BandColumnChainExtension, HeaderColumnChain, VisibleBoundary, GridViewport,\n} from '../../types';\nimport { intervalUtil } from '../virtual-table-state/utils';\n\nexport const tableRowsWithBands: PureComputed<\n [TableRow[], ColumnBands[], TableColumn[]]\n> = (\n tableHeaderRows, columnBands, tableColumns,\n) => {\n const tableDataColumns = tableColumns.filter(column => column.type === TABLE_DATA_TYPE);\n const getMaxNestedLevel: GetMaxNestedLevelFn = (bands, level = 0, result = null) => (\n bands.reduce((acc, column) => {\n if (column.children !== undefined) {\n return getMaxNestedLevel(column.children, level + 1, acc);\n }\n const isDataColumn = tableDataColumns.findIndex(\n dataColumn => !!dataColumn.column && dataColumn.column.name === column.columnName,\n ) > -1;\n if (level > acc.level && isDataColumn) {\n return { ...acc, level };\n }\n return acc;\n }, result || { level: 0 })\n );\n\n const tableBandHeaders = Array.from({\n length: getMaxNestedLevel(columnBands as ColumnBands[], 0).level,\n })\n .map((row, index) => ({\n key: `${TABLE_BAND_TYPE.toString()}_${index}`,\n type: TABLE_BAND_TYPE,\n level: index,\n }));\n return [...tableBandHeaders, ...tableHeaderRows];\n};\n\nexport const tableHeaderColumnChainsWithBands: GetHeaderColumnChainsFn<\n TableRow[], TableColumn[], ColumnBands[]\n> = (\n tableHeaderRows, tableColumns, bands,\n) => {\n const chains = generateSimpleChains(tableHeaderRows, tableColumns);\n const maxBandRowIndex = tableHeaderRows\n .filter(row => row.type === TABLE_BAND_TYPE)\n .length;\n const rawBandChains = chains.slice(0, maxBandRowIndex);\n\n let currentBand: any = null;\n const shouldSplitChain: ShouldSplitChainFn = (chain, column, rowIndex) => {\n if (rowIndex > maxBandRowIndex) return false;\n\n const columnName = column.column && column.column.name || '';\n currentBand = getColumnMeta(columnName, bands, rowIndex);\n return !chain\n || (chain as any).key !== currentBand.key;\n };\n const extendChainProps = () => ({\n bandTitle: currentBand?.title,\n key: currentBand?.key,\n });\n\n const bandChains = splitHeaderColumnChains(\n rawBandChains,\n tableColumns,\n shouldSplitChain,\n extendChainProps,\n );\n\n return [...bandChains, ...chains.slice(maxBandRowIndex)];\n};\n\nconst getBandLevel: PureComputed<[ColumnBands[], string, number?], number> = (\n bands, bandTitle, level = 0,\n) => {\n for (const band of bands) {\n if (band.title === bandTitle) {\n return level;\n }\n if (band.children !== undefined) {\n const result = getBandLevel(band.children, bandTitle, level + 1);\n if (result >= 0) return result;\n }\n }\n return -1;\n};\n\nconst getBandLevels = (columnsBands: readonly ColumnBands[], levels = {}, level = 0) => {\n columnsBands.forEach((band) => {\n if (band.title) {\n levels[band.title] = level;\n }\n if (band.children) {\n getBandLevels(band.children, levels, level + 1);\n }\n });\n return levels;\n};\n\nexport const columnBandLevels: PureComputed<[ColumnBands[]], BandLevels> = columnsBands => (\n getBandLevels(columnsBands)\n);\n\nexport const bandLevelsVisibility: PureComputed<\n [VisibleBoundary[], HeaderColumnChainRows, BandLevels],\n boolean[]\n> = (columnIntervals, tableHeaderColumnChains, bandLevels) => {\n const rowsWithBands = tableHeaderColumnChains\n .filter(r => r.filter(ch => !!ch.bandTitle).length);\n\n const visibleIntervals = columnIntervals.map(([start, end]) => ({ start, end }));\n\n const isBandChainVisible = (chain: HeaderColumnChain) => (\n visibleIntervals.some(interval => (\n intervalUtil.intersect(\n interval,\n { start: chain.start, end: chain.start + chain.columns.length - 1 },\n ) !== intervalUtil.empty\n ),\n ));\n\n const getVisibleBandsByLevel = (level: number) => (\n // Note: a visible band level always matches with it's row\n rowsWithBands[level]\n ? rowsWithBands[level].filter(chain => (\n bandLevels[chain.bandTitle] === level && isBandChainVisible(chain)\n ))\n : []\n );\n\n return rowsWithBands.reduce((acc, _, index) => {\n const rowBands = getVisibleBandsByLevel(index);\n return [...acc, !!rowBands.length];\n }, [] as boolean[]);\n};\n\nexport const columnVisibleIntervals: PureComputed<\n [GridViewport, TableColumn[]],\n VisibleBoundary[]\n> = (\n viewport, tableColumns,\n) => (\n viewport ? viewport.columns : [[0, tableColumns.length]]\n);\n","import { toggle } from '../../utils/common-reducers';\nimport { ToggleRowFieldReducer } from '../../types';\n\nexport const toggleDetailRowExpanded: ToggleRowFieldReducer = (\n prevExpanded, { rowId, state },\n) => toggle(prevExpanded, [rowId], state);\n","export const TABLE_DETAIL_TYPE = Symbol('detail');\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_DETAIL_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { IsSpecificCellFn, IsSpecificRowFn, TableColumn, RowId } from '../../types';\n\nexport const isDetailRowExpanded: PureComputed<[RowId[], RowId], boolean> = (\n expandedDetailRowIds, rowId,\n) => expandedDetailRowIds.indexOf(rowId) > -1;\n\nexport const isDetailToggleTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableColumn.type === TABLE_DETAIL_TYPE && tableRow.type === TABLE_DATA_TYPE;\n\nexport const isDetailTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_DETAIL_TYPE;\n\nexport const isDetailTableCell: PureComputed<[TableColumn, TableColumn[]], boolean> = (\n tableColumn, tableColumns,\n) => tableColumns.indexOf(tableColumn) === 0;\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_DETAIL_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { TableRow, TableColumn, CellColSpanGetter } from '../../types';\n\nexport const tableRowsWithExpandedDetail: PureComputed<[TableRow[], number[], number]> = (\n tableRows, expandedDetailRowIds, rowHeight,\n) => {\n let result = tableRows;\n expandedDetailRowIds\n .forEach((expandedRowId) => {\n const rowIndex = result.findIndex(\n tableRow => tableRow.type === TABLE_DATA_TYPE && tableRow.rowId === expandedRowId,\n );\n if (rowIndex === -1) return;\n const insertIndex = rowIndex + 1;\n const { row, rowId } = result[rowIndex];\n result = [\n ...result.slice(0, insertIndex),\n {\n rowId,\n row,\n key: `${TABLE_DETAIL_TYPE.toString()}_${rowId}`,\n type: TABLE_DETAIL_TYPE,\n height: rowHeight,\n },\n ...result.slice(insertIndex),\n ];\n });\n return result;\n};\n\nexport const tableColumnsWithDetail: PureComputed<[TableColumn[], number]> = (\n tableColumns, toggleColumnWidth,\n) => [\n { key: TABLE_DETAIL_TYPE.toString(), type: TABLE_DETAIL_TYPE, width: toggleColumnWidth },\n ...tableColumns,\n];\n\nexport const tableDetailCellColSpanGetter: CellColSpanGetter = getTableCellColSpan => (params) => {\n const { tableRow, tableColumns, tableColumn } = params;\n if (tableRow.type === TABLE_DETAIL_TYPE && tableColumns.indexOf(tableColumn) === 0) {\n return tableColumns.length;\n }\n return getTableCellColSpan(params);\n};\n","export const TABLE_SELECT_TYPE = Symbol('select');\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_SELECT_TYPE } from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { TABLE_HEADING_TYPE } from '../table-header-row/constants';\nimport { IsSpecificCellFn, TableRow } from '../../types';\n\nexport const isSelectTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableColumn.type === TABLE_SELECT_TYPE && tableRow.type === TABLE_DATA_TYPE;\nexport const isSelectAllTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableColumn.type === TABLE_SELECT_TYPE && tableRow.type === TABLE_HEADING_TYPE;\n\nexport const isRowHighlighted: PureComputed<[boolean, any[], TableRow], boolean> = (\n highlightRow, selection, tableRow,\n) => (\n highlightRow && selection && selection.includes(tableRow.rowId)\n);\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_SELECT_TYPE } from './constants';\nimport { TableColumn } from '../../types';\n\nexport const tableColumnsWithSelection: PureComputed<[TableColumn[], number]> = (\n tableColumns, selectionColumnWidth,\n) => [\n { key: TABLE_SELECT_TYPE.toString(), type: TABLE_SELECT_TYPE, width: selectionColumnWidth },\n ...tableColumns,\n];\n","import { TABLE_DATA_TYPE, TABLE_NODATA_TYPE } from './constants';\nimport {\n IsSpecificCellFn, IsSpecificRowFn, TableRow, TableColumn, CheckColumnExtensionsFn,\n} from '../../types';\nimport { TABLE_STUB_TYPE } from '../../utils/virtual-table';\nimport { isValidValue } from '../table-column-resizing/helpers';\n\nconst VALID_UNITS = ['px', '%', 'em', 'rem', 'vm', 'vh', 'vmin', 'vmax', ''];\nconst TABLE_ERROR = 'The columnExtension property of the Table plugin is given an invalid value.';\n\nexport const isDataTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_DATA_TYPE && tableColumn.type === TABLE_DATA_TYPE;\nexport const isHeaderStubTableCell: IsSpecificCellFn = (\n tableRow, headerRows,\n) => headerRows.indexOf(tableRow) > -1;\nexport const isDataTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_DATA_TYPE;\nexport const isNoDataTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_NODATA_TYPE;\nexport const isNoDataTableCell: IsSpecificCellFn = (\n tableColumn, tableColumns,\n) => tableColumns.indexOf(tableColumn as any) === 0;\nexport const isStubTableCell: IsSpecificRowFn = tableRow => (\n tableRow.type === TABLE_STUB_TYPE\n);\n\nexport const checkTableColumnExtensions: CheckColumnExtensionsFn = (columnExtensions) => {\n if (columnExtensions) {\n columnExtensions.map((column) => {\n const { width } = column;\n if (typeof width === 'string') {\n if (!isValidValue(width, VALID_UNITS)) {\n throw new Error(TABLE_ERROR);\n }\n }\n });\n }\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n GridColumnExtension, GetColumnExtensionValueGetterFn,\n} from '../types';\n\nexport const getColumnExtension: PureComputed<\n [GridColumnExtension[] | undefined, string], GridColumnExtension\n> = (columnExtensions, columnName) => {\n if (!columnExtensions) {\n // tslint:disable-next-line:no-object-literal-type-assertion\n return {} as GridColumnExtension;\n }\n const columnExtension = columnExtensions.find(extension => extension.columnName === columnName);\n if (!columnExtension) {\n // tslint:disable-next-line:no-object-literal-type-assertion\n return {} as GridColumnExtension;\n }\n return columnExtension;\n};\n\nexport const getColumnExtensionValueGetter: GetColumnExtensionValueGetterFn = (\n columnExtensions, extensionName, defaultValue,\n) => (columnName) => {\n if (columnExtensions) {\n const columnExtension = getColumnExtension(columnExtensions, columnName);\n const extensionValue = columnExtension[extensionName];\n return extensionValue !== undefined ? extensionValue : defaultValue;\n }\n return defaultValue;\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_DATA_TYPE, TABLE_NODATA_TYPE } from './constants';\nimport { getColumnExtension } from '../../utils/column-extension';\nimport { GridColumnExtension, GetCellColSpanFn } from './../../types/table.types';\nimport { Row, GetRowIdFn } from '../../types';\nimport { convertWidth } from '../table-column-resizing/helpers';\n\nexport const tableColumnsWithDataRows: PureComputed<[any[], GridColumnExtension[]]> = (\n columns, columnExtensions,\n) => columns.map((column) => {\n const { name } = column;\n const columnExtension = getColumnExtension(columnExtensions as GridColumnExtension[], name);\n const width = convertWidth(columnExtension.width!);\n return {\n column,\n key: `${TABLE_DATA_TYPE.toString()}_${name}`,\n type: TABLE_DATA_TYPE,\n width,\n align: columnExtension.align,\n wordWrapEnabled: columnExtension.wordWrapEnabled,\n };\n});\n\nexport const tableRowsWithDataRows: PureComputed<[Row[], GetRowIdFn, number]> = (\n rows, getRowId, isRemoteRowsLoading,\n) => (\n !rows.length && !isRemoteRowsLoading\n ? [{ key: TABLE_NODATA_TYPE.toString(), type: TABLE_NODATA_TYPE }]\n : rows.map((row, dataIndex) => {\n const rowId = getRowId(row);\n return {\n row,\n // dataIndex,\n rowId,\n type: TABLE_DATA_TYPE,\n key: `${TABLE_DATA_TYPE.toString()}_${rowId}`,\n };\n }));\n\nexport const tableCellColSpanGetter: GetCellColSpanFn = (params) => {\n const { tableRow, tableColumns, tableColumn } = params;\n if (tableRow.type === TABLE_NODATA_TYPE && tableColumns.indexOf(tableColumn) === 0) {\n return tableColumns.length;\n }\n return 1;\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { TableColumn } from '../../types';\n\nexport const visibleTableColumns: PureComputed<[TableColumn[], string[]]> = (\n tableColumns = [], hiddenColumnNames,\n) => tableColumns.filter(tableColumn => tableColumn.type !== TABLE_DATA_TYPE\n || hiddenColumnNames.indexOf(tableColumn.column!.name) === -1);\n","import { TABLE_DATA_TYPE } from '../table/constants';\nimport { TableColumn } from '../../types';\n\nexport const tableDataColumnsExist = (tableColumns: TableColumn[]) => tableColumns.some(\n column => column.type === TABLE_DATA_TYPE,\n);\n","import { PureComputed } from '@devexpress/dx-core';\nimport { Column } from '../../types/grid-core.types';\nimport { ColumnChooserItem } from '../../types';\n\nexport const columnChooserItems: PureComputed<[Column[], string[]], ColumnChooserItem[]> = (\n columns, hiddenColumnNames,\n) => columns.map(column => ({\n column,\n hidden: hiddenColumnNames.indexOf(column.name) !== -1,\n}));\n","import { PureReducer } from '@devexpress/dx-core';\n\nexport const toggleColumn: PureReducer = (\n hiddenColumnNames, columnName,\n) => (\n hiddenColumnNames.indexOf(columnName) === -1\n ? [...hiddenColumnNames, columnName]\n : hiddenColumnNames.filter(hiddenColumn => hiddenColumn !== columnName)\n);\n","import { toggle } from '../../utils/common-reducers';\nimport { ToggleRowFieldReducer } from '../../types';\n\nexport const toggleRowExpanded: ToggleRowFieldReducer = (\n prevExpanded, { rowId, state },\n) => toggle(prevExpanded, [rowId], state);\n","export const GRID_TREE_NODE_TYPE = Symbol('treeNode');\n","import { PureComputed } from '@devexpress/dx-core';\nimport { GRID_TREE_NODE_TYPE } from './constants';\nimport {\n RowsWithTreeMetaMap, RowsWithCollapsedRowsMetaMap, IsSpecificTreeRowGetter, GetRowIdFn,\n GetRowLevelKeyFn, GetCollapsedRowsFn, CustomTreeRowsWithMetaComputed,\n UnwrapRowsComputed, GetTreeRowLevelGetter, ExpandedTreeRowsFn, Row,\n} from '../../types';\n\nexport const customTreeRowsWithMeta: CustomTreeRowsWithMetaComputed = (\n rows, getChildRows,\n) => {\n const rowsToProcess = [{ row: null, level: -1 }] as Row[];\n const treeRows = [] as { row: Row, level: number, leaf: boolean }[];\n\n while (rowsToProcess?.length) {\n const { row: currentRow, level } = rowsToProcess.shift()!;\n const rowIndex = treeRows.findIndex(({ row }) => row === currentRow);\n const nestedRows = getChildRows(currentRow, rows as Row[])?.map(\n (childRow: Row) => ({\n row: childRow,\n level: level + 1,\n leaf: !getChildRows(childRow, rows as Row[]),\n }),\n );\n\n if (nestedRows) {\n if (rowIndex > -1) {\n treeRows.splice(rowIndex + 1, 0, ...nestedRows);\n } else {\n treeRows.push(...nestedRows);\n }\n rowsToProcess.push(...nestedRows);\n }\n }\n\n const result = treeRows.reduce((acc, { row, level, leaf }) => {\n acc.rows.push(row);\n acc.treeMeta.push([row, { level, leaf }]);\n\n return acc;\n }, { rows: [] as Row[], treeMeta: [] as any[] });\n\n return {\n rows: result.rows,\n treeMeta: new Map(result.treeMeta),\n };\n};\n\nexport const customTreeRowIdGetter: PureComputed<[GetRowIdFn, RowsWithTreeMetaMap]> = (\n getRowId, { rows, treeMeta },\n) => {\n const firstNestedRowIndex = rows.findIndex(row => treeMeta.get(row)!.level > 0);\n if (firstNestedRowIndex === -1 || getRowId(rows[firstNestedRowIndex]) !== undefined) {\n return getRowId;\n }\n const map = new Map(rows\n .map((row, rowIndex) => [row, rowIndex] as [any, any]));\n return row => map.get(row);\n};\n\nexport const customTreeRowLevelKeyGetter: PureComputed<\n [GetRowLevelKeyFn, RowsWithTreeMetaMap]\n> = (\n getRowLevelKey, { treeMeta },\n) => (row) => {\n const rowMeta = treeMeta.get(row);\n if (rowMeta !== undefined) {\n return `${GRID_TREE_NODE_TYPE.toString()}_${rowMeta.level}`;\n }\n return getRowLevelKey && getRowLevelKey();\n};\n\nexport const expandedTreeRows: ExpandedTreeRowsFn = (\n { rows, treeMeta }, getRowId, expandedRowIds,\n) => {\n const expandedRowIdsSet = new Set(expandedRowIds);\n\n let currentExpanded = true;\n let currentLevel = 0;\n\n const collapsedRowsMeta = new Map();\n const resultRows: object[] = [];\n\n rows.forEach((row) => {\n const rowMeta = treeMeta.get(row);\n const level = rowMeta && rowMeta.level;\n if (level === undefined && currentExpanded) {\n resultRows.push(row);\n } else if (!currentExpanded && (level === undefined || level > currentLevel)) {\n const lastRow = resultRows[resultRows.length - 1];\n let collapsedItems = collapsedRowsMeta.get(lastRow);\n if (!collapsedItems) {\n collapsedItems = [];\n collapsedRowsMeta.set(lastRow, collapsedItems);\n }\n collapsedItems.push(row);\n } else {\n currentExpanded = expandedRowIdsSet.has(getRowId(row));\n currentLevel = level!;\n\n resultRows.push(row);\n }\n });\n\n return {\n treeMeta,\n collapsedRowsMeta,\n rows: resultRows,\n };\n};\n\nexport const collapsedTreeRowsGetter: PureComputed<\n [GetCollapsedRowsFn, RowsWithCollapsedRowsMetaMap]\n> = (\n getCollapsedRows, { collapsedRowsMeta },\n) => row => collapsedRowsMeta.get(row) || (getCollapsedRows && getCollapsedRows(row));\n\nexport const isTreeRowLeafGetter: IsSpecificTreeRowGetter = ({ treeMeta }) => (row) => {\n const rowMeta = treeMeta.get(row);\n return rowMeta && rowMeta.leaf;\n};\n\nexport const getTreeRowLevelGetter: GetTreeRowLevelGetter = ({ treeMeta }) => (row) => {\n const rowMeta = treeMeta.get(row);\n return (rowMeta && rowMeta.level) as number;\n};\n\nexport const unwrappedCustomTreeRows: UnwrapRowsComputed = ({ rows }) => rows;\n","import { TABLE_DATA_TYPE } from '../table/constants';\nimport { IsSpecificCellFn, TableRow, TableColumn } from '../../types';\n\nexport const isTreeTableCell: IsSpecificCellFn = (\n tableRow, tableColumn, forColumnName,\n) => tableRow.type === TABLE_DATA_TYPE && tableColumn.type === TABLE_DATA_TYPE\n && tableColumn.column!.name === forColumnName;\n","export const changeSearchValue = (\n prevSearchValue: string, searchValue: string,\n) => searchValue;\n","import { SearchFilterExpressionFn, FilterExpression } from '../../types';\n\nexport const searchFilterExpression: SearchFilterExpressionFn = (\n searchValue, columns, filterExpression,\n) => {\n const filters = columns.map(({ name }) => ({ columnName: name, value: searchValue }));\n const selfFilterExpression: FilterExpression = { filters, operator: 'or' };\n if (!filterExpression) {\n return selfFilterExpression;\n }\n return {\n operator: 'and',\n filters: [filterExpression as FilterExpression, selfFilterExpression],\n };\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { GetAvailableFilterOperationsFn, FilterOperation } from '../../types';\n\nexport const getAvailableFilterOperationsGetter: PureComputed<\n [GetAvailableFilterOperationsFn, FilterOperation[], string[]]\n> = (\n getAvailableFilterOperations,\n availableFilterOperations,\n columnNames,\n) => columnName => (columnNames.indexOf(columnName) > -1 && availableFilterOperations)\n// tslint:disable-next-line: max-line-length\n || (typeof getAvailableFilterOperations === 'function' && getAvailableFilterOperations(columnName))\n || undefined;\n","export const FIXED_COLUMN_LEFT_SIDE = 'left';\nexport const FIXED_COLUMN_RIGHT_SIDE = 'right';\nexport const TABLE_FIXED_TYPE = Symbol('fixed');\n","import { slice } from '@devexpress/dx-core';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport {\n FIXED_COLUMN_LEFT_SIDE, TABLE_FIXED_TYPE,\n} from './constants';\nimport { findChainByColumnIndex } from '../table-header-row/helpers';\nimport {\n GetFixedColumnKeysFn, IsSpecificRowFn, CalculatePositionFn, CalculateFixedColumnPropsFn,\n} from '../../types';\n\nexport const getFixedColumnKeys: GetFixedColumnKeysFn = (tableColumns, fixedNames) => tableColumns\n .filter(tableColumn => (\n (tableColumn.type === TABLE_DATA_TYPE && fixedNames.indexOf(tableColumn.column!.name) !== -1)\n || fixedNames.indexOf(tableColumn.type) !== -1\n ))\n .map(({ key }) => key);\n\nexport const isFixedTableRow: IsSpecificRowFn = tableRow => tableRow.type === TABLE_FIXED_TYPE;\n\nconst calculatePosition: CalculatePositionFn = (array, index, tableColumnDimensions) => (\n index === 0\n ? 0\n : array\n .slice(0, index)\n .reduce((acc, target) => acc + tableColumnDimensions[target] || 0, 0)\n);\n\nexport const calculateFixedColumnProps: CalculateFixedColumnPropsFn = (\n { tableColumn },\n { leftColumns, rightColumns },\n tableColumns,\n tableColumnDimensions,\n tableHeaderColumnChains,\n) => {\n const side = tableColumn.fixed!;\n const targetArray = side === FIXED_COLUMN_LEFT_SIDE\n ? getFixedColumnKeys(tableColumns, leftColumns)\n : slice(getFixedColumnKeys(tableColumns, rightColumns)).reverse();\n\n const index = tableColumns.findIndex(({ key }) => key === tableColumn.key);\n const fixedIndex = targetArray.indexOf(tableColumn.key);\n const columnChain = findChainByColumnIndex(tableHeaderColumnChains[0], index)!;\n\n const showLeftDivider = columnChain.start === index && index !== 0;\n const showRightDivider = columnChain.start + columnChain.columns.length - 1 === index\n && index < tableColumns.length - 1;\n\n const position = calculatePosition(targetArray, fixedIndex, tableColumnDimensions);\n\n return {\n showRightDivider,\n showLeftDivider,\n position,\n side,\n };\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport { FIXED_COLUMN_LEFT_SIDE, FIXED_COLUMN_RIGHT_SIDE, TABLE_FIXED_TYPE } from './constants';\nimport { splitHeaderColumnChains, generateSimpleChains } from '../table-header-row/helpers';\nimport {\n FixedColumnName, TableColumn, FixedColumnSide, TableRow, HeaderColumnChainRows,\n ShouldSplitChainFn,\n} from '../../types';\n\nexport const tableColumnsWithFixed: PureComputed<\n [TableColumn[], FixedColumnName[], FixedColumnName[]]\n> = (\n tableColumns, leftColumns, rightColumns,\n) => tableColumns\n .map((tableColumn) => {\n let fixed!: FixedColumnSide;\n if ((tableColumn.type === TABLE_DATA_TYPE\n && leftColumns.indexOf(tableColumn.column!.name) !== -1)\n || leftColumns.indexOf(tableColumn.type) !== -1) {\n fixed = FIXED_COLUMN_LEFT_SIDE;\n }\n if ((tableColumn.type === TABLE_DATA_TYPE\n && rightColumns.indexOf(tableColumn.column!.name) !== -1)\n || rightColumns.indexOf(tableColumn.type) !== -1) {\n fixed = FIXED_COLUMN_RIGHT_SIDE;\n }\n return fixed ? { ...tableColumn, fixed } : tableColumn;\n });\n\nexport const tableHeaderRowsWithFixed: PureComputed<[TableRow[]]> = tableHeaderRows => [\n ...tableHeaderRows,\n { key: TABLE_FIXED_TYPE.toString(), type: TABLE_FIXED_TYPE, height: 0 },\n];\n\nexport const tableHeaderColumnChainsWithFixed: PureComputed<\n [HeaderColumnChainRows, TableRow[], TableColumn[]]\n> = (\n tableHeaderColumnChains, tableHeaderRows, tableColumns,\n) => {\n const chains = tableHeaderColumnChains\n || generateSimpleChains(tableHeaderRows, tableColumns);\n\n const shouldSplitChain: ShouldSplitChainFn = (currentGroup, column) => (\n !currentGroup || (currentGroup as any).fixed !== column.fixed\n );\n const extendChainProps = (column: TableColumn) => ({\n fixed: column.fixed,\n });\n return splitHeaderColumnChains(\n chains,\n tableColumns,\n shouldSplitChain,\n extendChainProps,\n );\n};\n","import {\n SummaryValue, SummaryCalculator,\n DefaultSummaryCalculators,\n Row,\n TotalSummaryValuesFn,\n GroupSummaryValuesFn,\n TreeSummaryValuesFn,\n RowsSummaryValuesFn,\n ExpandRowsFn,\n TableRow,\n GroupLevel,\n} from '../../types';\n\nconst defaultSummaryCalculators: DefaultSummaryCalculators = {\n count: rows => rows.length,\n sum: (rows, getValue) => rows.reduce((acc, row) => acc + getValue(row), 0),\n max: (rows, getValue) => (rows.length\n ? rows.reduce((acc, row) => Math.max(acc, getValue(row)), -Infinity)\n : null),\n min: (rows, getValue) => (rows.length\n ? rows.reduce((acc, row) => Math.min(acc, getValue(row)), Infinity)\n : null),\n avg: (rows, getValue) => (rows.length\n ? rows.reduce((acc, row) => acc + getValue(row), 0) / rows.length\n : null),\n};\n\nexport const defaultSummaryCalculator: SummaryCalculator = (type, rows, getValue) => {\n const summaryCalculator = defaultSummaryCalculators[type];\n if (!summaryCalculator) {\n throw new Error(`The summary type '${type}' is not defined`);\n }\n return summaryCalculator(rows, getValue);\n};\n\nconst rowsSummary: RowsSummaryValuesFn = (\n rows, summaryItems, getCellValue, calculator,\n) => summaryItems\n .reduce((acc, { type, columnName }) => {\n const getValue = (row: Row) => getCellValue(row, columnName);\n acc.push(calculator(type, rows as any[], getValue));\n return acc;\n }, [] as SummaryValue[]);\n\nconst expandRows: ExpandRowsFn = (\n rows, getRowLevelKey, getCollapsedRows, isGroupRow, includeGroupRow = false,\n) => {\n const shouldIncludeRow = includeGroupRow || !isGroupRow\n ? () => true\n : (row: TableRow) => !isGroupRow(row);\n\n return rows\n .reduce((acc, row) => {\n if (getRowLevelKey && getRowLevelKey(row)) {\n if (shouldIncludeRow(row)) {\n acc.push(row);\n }\n const collapsedRows = getCollapsedRows && getCollapsedRows(row);\n if (collapsedRows) {\n acc.push(...collapsedRows);\n }\n return acc;\n }\n acc.push(row);\n return acc;\n }, [] as TableRow[]);\n};\n\nexport const totalSummaryValues: TotalSummaryValuesFn = (\n rows,\n summaryItems,\n getCellValue,\n getRowLevelKey,\n isGroupRow,\n getCollapsedRows,\n calculator = defaultSummaryCalculator,\n) => {\n const plainRows = expandRows(rows, getRowLevelKey, getCollapsedRows, isGroupRow);\n return rowsSummary(plainRows, summaryItems, getCellValue, calculator);\n};\n\nexport const groupSummaryValues: GroupSummaryValuesFn = (\n rows,\n summaryItems,\n getCellValue,\n getRowLevelKey,\n isGroupRow,\n getCollapsedRows,\n calculator = defaultSummaryCalculator,\n) => {\n let levels: GroupLevel[] = [];\n const getLevelIndex = (levelKey: string) => (\n levels.findIndex(level => level.levelKey === levelKey)\n );\n const summaries = {};\n\n const anyRowLevelSummaryExist = summaryItems.some(item => (\n !(item as any).showInGroupFooter\n ));\n const expandedRows = anyRowLevelSummaryExist\n ? expandRows(rows, getRowLevelKey, getCollapsedRows, isGroupRow, true)\n : rows;\n\n expandedRows.forEach((row) => {\n const levelKey = getRowLevelKey(row);\n const collapsedRows = getCollapsedRows && getCollapsedRows(row);\n let levelIndex = getLevelIndex(levelKey);\n if (levelIndex > -1) {\n levels.forEach((level) => {\n summaries[level.row.compoundKey] = rowsSummary(\n level.rows, summaryItems, getCellValue, calculator,\n );\n });\n levels = levels.slice(0, levelIndex);\n }\n if (isGroupRow!(row)) {\n levels.push({\n levelKey,\n row,\n rows: [],\n });\n levelIndex = getLevelIndex(levelKey);\n }\n // when row level summary exists, these rows had already been expanded earlier\n const isCollapsedNestedGroupRow = collapsedRows && levelIndex > 0 && !anyRowLevelSummaryExist;\n const rowsToAppend = !levelKey ? [row] : collapsedRows;\n if (!levelKey || isCollapsedNestedGroupRow) {\n levels.forEach((level) => {\n level.rows.push(...rowsToAppend);\n });\n }\n }, {});\n levels.forEach((level) => {\n summaries[level.row.compoundKey] = rowsSummary(\n level.rows, summaryItems, getCellValue, calculator,\n );\n });\n return summaries;\n};\n\nexport const treeSummaryValues: TreeSummaryValuesFn = (\n rows,\n summaryItems,\n getCellValue,\n getRowLevelKey,\n isGroupRow,\n getRowId,\n calculator = defaultSummaryCalculator,\n) => {\n let levels: any[] = [];\n const summaries = {};\n rows.forEach((row) => {\n const levelKey = getRowLevelKey(row);\n if (!levelKey) {\n levels[levels.length - 1].rows.push(row);\n return;\n }\n const levelIndex = levels.findIndex(level => level.levelKey === levelKey);\n if (levelIndex > -1) {\n levels.slice(levelIndex).forEach((level) => {\n if (level.rows.length) {\n summaries[getRowId(level.row)] = rowsSummary(\n level.rows, summaryItems, getCellValue, calculator,\n );\n }\n });\n levels = levels.slice(0, levelIndex);\n }\n if (!isGroupRow || !isGroupRow(row)) {\n if (levels.length) {\n levels[levels.length - 1].rows.push(row);\n }\n levels.push({\n levelKey,\n row,\n rows: [],\n });\n }\n }, {});\n levels.forEach((level) => {\n if (level.rows.length) {\n summaries[getRowId(level.row)] = rowsSummary(\n level.rows, summaryItems, getCellValue, calculator,\n );\n }\n });\n return summaries;\n};\n","export const TABLE_TOTAL_SUMMARY_TYPE = Symbol('totalSummary');\nexport const TABLE_GROUP_SUMMARY_TYPE = Symbol('groupSummary');\nexport const TABLE_TREE_SUMMARY_TYPE = Symbol('treeSummary');\n\nexport const defaultFormatlessSummaries = ['count'];\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n TABLE_TOTAL_SUMMARY_TYPE, TABLE_GROUP_SUMMARY_TYPE, TABLE_TREE_SUMMARY_TYPE,\n} from './constants';\nimport { TABLE_DATA_TYPE } from '../table/constants';\nimport {\n GetColumnSummariesFn, IsSpecificCellFn, IsSpecificRowFn, SummaryItem,\n GetGroupInlineSummariesFn, ColumnInlineSummaries, GroupSummaryItem,\n} from '../../types';\n\nexport const isTotalSummaryTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_TOTAL_SUMMARY_TYPE && tableColumn.type === TABLE_DATA_TYPE;\nexport const isGroupSummaryTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_GROUP_SUMMARY_TYPE && tableColumn.type === TABLE_DATA_TYPE;\nexport const isTreeSummaryTableCell: IsSpecificCellFn = (\n tableRow, tableColumn,\n) => tableRow.type === TABLE_TREE_SUMMARY_TYPE && tableColumn.type === TABLE_DATA_TYPE;\nexport const isTotalSummaryTableRow: IsSpecificRowFn = tableRow => (\n tableRow.type === TABLE_TOTAL_SUMMARY_TYPE\n);\nexport const isGroupSummaryTableRow: IsSpecificRowFn = tableRow => (\n tableRow.type === TABLE_GROUP_SUMMARY_TYPE\n);\nexport const isTreeSummaryTableRow: IsSpecificRowFn = tableRow => (\n tableRow.type === TABLE_TREE_SUMMARY_TYPE\n);\n\nexport const getColumnSummaries: GetColumnSummariesFn = (\n summaryItems, columnName, summaryValues, predicate = () => true,\n) => summaryItems\n .map((item, index) => [item, index] as [SummaryItem, number])\n .filter(([item]) => item.columnName === columnName && predicate(item))\n .map(([item, index]) => ({\n type: item.type,\n value: summaryValues[index],\n }));\n\nexport const isFooterSummary: PureComputed<[SummaryItem], boolean> = summaryItem => (\n (summaryItem as GroupSummaryItem).showInGroupFooter!\n);\nexport const isInlineGroupCaptionSummary: PureComputed<[SummaryItem], boolean> = summaryItem => (\n !((summaryItem as GroupSummaryItem).showInGroupFooter ||\n (summaryItem as GroupSummaryItem).alignByColumn)\n);\nexport const groupFooterSummaryExists: PureComputed<[GroupSummaryItem[]], boolean> =\n groupSummaryItems => groupSummaryItems?.some(isFooterSummary);\n\nexport const getGroupInlineSummaries: GetGroupInlineSummariesFn = (\n summaryItems, columns, summaryValues,\n) => {\n if (!summaryItems.some(isInlineGroupCaptionSummary)) {\n return [];\n }\n\n return columns.reduce((acc, column) => {\n const colName = column.name;\n const summaries = getColumnSummaries(\n summaryItems, colName, summaryValues, isInlineGroupCaptionSummary,\n );\n if (summaries.length) {\n acc.push({\n column,\n summaries,\n });\n }\n\n return acc;\n }, [] as ColumnInlineSummaries[]);\n};\n","import { PureComputed } from '@devexpress/dx-core';\nimport {\n TABLE_TOTAL_SUMMARY_TYPE,\n TABLE_GROUP_SUMMARY_TYPE,\n TABLE_TREE_SUMMARY_TYPE,\n} from './constants';\nimport {\n TableRow, RowLevel, TableRowsWithSummariesFn,\n} from '../../types';\nimport { groupFooterSummaryExists } from './helpers';\n\nexport const tableRowsWithTotalSummaries: PureComputed<[TableRow[]]> = footerRows => [\n { key: TABLE_TOTAL_SUMMARY_TYPE.toString(), type: TABLE_TOTAL_SUMMARY_TYPE },\n ...footerRows,\n];\n\nexport const tableRowsWithSummaries: TableRowsWithSummariesFn = (\n tableRows, groupSummaryItems, treeSummaryItems, getRowLevelKey, isGroupRow, getRowId,\n) => {\n const hasGroupFooterSummary = groupFooterSummaryExists(groupSummaryItems);\n if (!getRowLevelKey || !(hasGroupFooterSummary || treeSummaryItems.length)) return tableRows;\n\n const result: TableRow[] = [];\n const closeLevel = (level: RowLevel) => {\n if (!level.opened) return;\n if (hasGroupFooterSummary && isGroupRow && isGroupRow(level.row)) {\n const { compoundKey } = level.row;\n result.push({\n key: `${TABLE_GROUP_SUMMARY_TYPE.toString()}_${compoundKey}`,\n type: TABLE_GROUP_SUMMARY_TYPE,\n row: level.row,\n });\n } else if (treeSummaryItems.length) {\n const rowId = getRowId(level.row);\n result.push({\n key: `${TABLE_TREE_SUMMARY_TYPE.toString()}_${rowId}`,\n type: TABLE_TREE_SUMMARY_TYPE,\n row: level.row,\n });\n }\n };\n\n let levels: RowLevel[] = [];\n tableRows.forEach((tableRow) => {\n const { row } = tableRow;\n const levelKey = getRowLevelKey(row);\n if (levelKey) {\n const levelIndex = levels.findIndex(level => level.levelKey === levelKey);\n if (levelIndex > -1) {\n levels.slice(levelIndex).reverse().forEach(closeLevel);\n levels = levels.slice(0, levelIndex);\n }\n if (!isGroupRow || !isGroupRow(row)) {\n levels = levels.map(level => ({\n ...level,\n opened: true,\n }));\n }\n levels.push({\n levelKey,\n row,\n opened: false,\n });\n } else {\n levels = levels.map(level => ({\n ...level,\n opened: true,\n }));\n }\n result.push(tableRow);\n });\n levels.slice().reverse().forEach(closeLevel);\n\n return result;\n};\n","import { GroupSummaryItem } from '../../types';\n\nexport const prepareGroupSummaryItems = (items: GroupSummaryItem[]) => (\n !!items\n ? items.map(item => ({\n ...item,\n showInGroupFooter: (\n item.showInGroupFooter === undefined && !item.alignByColumn\n )\n ? true\n : item.showInGroupFooter,\n }))\n : items\n);\n","import { GetTargetColumnGeometriesFn, GetNodeGeometriesFn } from '../types';\n\nexport const getTargetColumnGeometries: GetTargetColumnGeometriesFn = (\n columnGeometries, sourceIndex,\n) => {\n const sourceWidth = columnGeometries[sourceIndex].right - columnGeometries[sourceIndex].left;\n const getWidthDifference = (index: number) => columnGeometries[index].right\n - columnGeometries[index].left\n - sourceWidth;\n\n return columnGeometries\n .map(({\n top, right, bottom, left,\n }, targetIndex) => {\n let leftBorder = left;\n if (targetIndex > 0 && targetIndex <= sourceIndex) {\n leftBorder = Math.min(leftBorder, leftBorder - getWidthDifference(targetIndex - 1));\n }\n if (targetIndex > sourceIndex) {\n leftBorder = Math.max(leftBorder, leftBorder + getWidthDifference(targetIndex));\n }\n let rightBorder = right;\n if (targetIndex < columnGeometries.length - 1 && targetIndex >= sourceIndex) {\n rightBorder = Math.max(rightBorder, rightBorder + getWidthDifference(targetIndex + 1));\n }\n if (targetIndex < sourceIndex) {\n rightBorder = Math.min(rightBorder, rightBorder - getWidthDifference(targetIndex));\n }\n\n return {\n top,\n bottom,\n right: rightBorder,\n left: leftBorder,\n };\n });\n};\n\nexport const getCellGeometries: GetNodeGeometriesFn = (node) => {\n const { left, right, width } = node.getBoundingClientRect();\n const styleLeft = parseInt(node.style.left?.toString().replace('px', ''), 10);\n const styleRight = parseInt(node.style.right?.toString().replace('px', ''), 10);\n\n if (!isNaN(styleLeft)) {\n const calculatedLeft = Math.max(styleLeft, left);\n return {\n left: calculatedLeft,\n right: calculatedLeft + width,\n isFixed: true,\n };\n }\n\n if (!isNaN(styleRight)) {\n // NOTE: get tableContainer (parent of first DIV element) to calculate 'right' value\n let tableContainer = node as HTMLElement | null;\n while (tableContainer && tableContainer.nodeName !== 'DIV') {\n tableContainer = tableContainer.parentNode as HTMLElement;\n }\n tableContainer = tableContainer?.parentNode as HTMLElement;\n\n if (tableContainer) {\n const { width: tableWidth } = tableContainer.getBoundingClientRect();\n const calculatedRight = Math.min(tableWidth - styleRight, right);\n return {\n left: calculatedRight - width,\n right: calculatedRight,\n isFixed: true,\n };\n }\n }\n\n return { left, right };\n};\n","import { easeOutCubic } from '@devexpress/dx-core';\nimport {\n GetTableColumnGeometriesFn, GetTableTargetColumnIndexFn, ColumnAnimation,\n GetColumnAnimationsFn, ColumnGeometry, FilterActiveAnimationsFn, EvalAnimationsFn,\n} from '../types';\n\nexport const getTableColumnGeometries: GetTableColumnGeometriesFn = (columns, tableWidth) => {\n const columnWidths = columns\n .map(column => column.width);\n\n const freeSpace = tableWidth;\n const restrictedSpace = columnWidths\n .reduce(\n (accum, width) => (accum as number)! + (typeof width === 'number' ? width : 0), 0) as number;\n const freeSpacePortions = columnWidths\n .reduce(\n (accum, width) => (accum as number)! + (typeof width !== 'number' ? 1 : 0), 0) as number;\n const freeSpacePortion = (freeSpace - restrictedSpace!) / freeSpacePortions!;\n\n let lastRightPosition = 0;\n return columnWidths\n .map(width => (typeof width !== 'number' ? freeSpacePortion : width))\n .map((width) => {\n lastRightPosition += width;\n return {\n left: lastRightPosition - width,\n right: lastRightPosition,\n };\n });\n};\n\nexport const getTableTargetColumnIndex: GetTableTargetColumnIndexFn = (\n columnGeometries, offset,\n) => {\n const indexes = columnGeometries.reduce((acc, { left, right }, index) => {\n if (offset > left && offset < right) {\n acc.push(index);\n }\n return acc;\n }, [] as number[]);\n\n if (indexes.length === 2) {\n return indexes.find(index => columnGeometries[index].isFixed)!;\n }\n if (indexes.length === 1) {\n return indexes[0];\n }\n return -1;\n};\n\nconst ANIMATION_DURATION = 200;\n\nconst getAnimationProgress = (animation: ColumnAnimation) => (\n new Date().getTime() - animation.startTime) / ANIMATION_DURATION;\n\nexport const getAnimations: GetColumnAnimationsFn = (\n prevColumns,\n nextColumns,\n tableWidth,\n prevAnimations,\n) => {\n const resizing = prevColumns.map(column => column.key).join()\n === nextColumns.map(column => column.key).join();\n\n const prevColumnGeometries = new Map(\n getTableColumnGeometries(prevColumns, tableWidth)\n .map((geometry, index) => [prevColumns[index].key, geometry] as [string, ColumnGeometry])\n .map(([key, geometry]) => {\n const animation = prevAnimations.get(key);\n if (!animation) return [key, geometry];\n const progress = easeOutCubic(getAnimationProgress(animation));\n const { to, from } = animation.left!;\n const left = ((to - from) * progress) + from;\n return [key, {\n left,\n right: geometry.right - (geometry.left - left),\n }];\n // tslint:disable-next-line:array-type\n }) as [string, ColumnGeometry][],\n );\n\n const nextColumnGeometries = new Map(\n getTableColumnGeometries(nextColumns, tableWidth)\n // tslint:disable-next-line:array-type\n .map((geometry, index) => [nextColumns[index].key, geometry]) as [string, ColumnGeometry][],\n );\n\n return new Map([...nextColumnGeometries.keys()]\n .map((key) => {\n const prev: any = prevColumnGeometries.get(key);\n const next: any = nextColumnGeometries.get(key);\n\n const result: ColumnAnimation = { startTime: new Date().getTime(), style: {} };\n const takePrevColumnIntoAccount = !!prevAnimations.get(key) || (prev && !resizing);\n if (Math.abs((takePrevColumnIntoAccount ? prev!.left : next!.left) - next!.left) > 1) {\n result.left = { from: prev.left, to: next.left };\n }\n return [key, result] as [string, ColumnAnimation];\n })\n .filter((animation: [string, ColumnAnimation]) => animation[1].left));\n};\n\nexport const filterActiveAnimations: FilterActiveAnimationsFn = animations => new Map(\n [...animations.entries()]\n .filter(([, animation]) => getAnimationProgress(animation) < 1),\n);\n\nexport const evalAnimations: EvalAnimationsFn = animations => new Map([...animations.entries()]\n .map(([key, animation]): [string, object] => {\n const progress = easeOutCubic(getAnimationProgress(animation));\n const result = { ...animation.style };\n if (animation.left) {\n const offset = (animation.left.to - animation.left.from) * (progress - 1);\n (result as any).transform = `translateX(${offset}px)`;\n }\n return [key, result];\n }));\n","import { getTargetColumnGeometries } from './column-geometries';\nimport { TargetColumnGeometry, GetGroupCellTargetIndexFn } from '../types';\nimport { PureComputed } from '@devexpress/dx-core';\n\nconst isOnTheSameLine: PureComputed<[TargetColumnGeometry, number], boolean> = (geometry, y) => (\n y >= geometry.top && y <= geometry.bottom\n);\n\nconst rectToObject = ({\n top, right, bottom, left,\n}: TargetColumnGeometry) => ({\n top, right, bottom, left,\n});\n\nconst collapseGapsBetweenItems: PureComputed<[TargetColumnGeometry[]]> = geometries => (\n geometries.map((geometry, index) => {\n if (index !== geometries.length - 1 && geometry.top === geometries[index + 1].top) {\n return {\n ...geometry,\n right: geometries[index + 1].left,\n };\n }\n return geometry;\n }));\n\nexport const getGroupCellTargetIndex: GetGroupCellTargetIndexFn = (\n geometries, sourceIndex, { x, y },\n) => {\n if (geometries.length === 0) return 0;\n\n const targetGeometries = sourceIndex !== -1\n ? getTargetColumnGeometries(geometries, sourceIndex)\n : geometries.map(rectToObject);\n\n const targetIndex = collapseGapsBetweenItems(targetGeometries)\n .findIndex((geometry, index) => {\n const inVerticalBounds = isOnTheSameLine(geometry, y);\n const inHorizontalBounds = x >= geometry.left && x <= geometry.right;\n const shouldGoFirst = index === 0 && x < geometry.left;\n const shouldGoOnLineBreak = !inVerticalBounds\n && !!geometries[index - 1]\n && isOnTheSameLine(geometries[index - 1], y);\n\n return (inVerticalBounds && inHorizontalBounds)\n || shouldGoFirst\n || shouldGoOnLineBreak;\n });\n\n return targetIndex === -1 ? geometries.length : targetIndex;\n};\n","import { PureComputed } from '@devexpress/dx-core';\n\ntype CompareFn = (...args: [any, any]) => boolean;\n/** @internal */\nexport const arraysEqual: PureComputed<[any[], any[], CompareFn?], boolean> = (\n arrA, arrB, comparator = (a, b) => a === b,\n) => {\n if (arrA.length !== arrB.length) {\n return false;\n }\n for (let i = 0; i < arrA.length; i += 1) {\n if (!comparator(arrA[i], arrB[i])) {\n return false;\n }\n }\n return true;\n};\n","import { GridViewport } from '../../types';\n\n/** @internal */\nexport const emptyViewport: GridViewport = {\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\nexport const TOP_POSITION = Symbol('top');\nexport const BOTTOM_POSITION = Symbol('bottom');\n","import {\n getRowsVisibleBoundary, getColumnBoundaries,\n} from '../../utils/virtual-table';\nimport {\n GetViewportFn,\n CheckTableColumnWidths,\n TableColumn,\n GetScrollHeightByIndex,\n GetScrollPosition,\n GetTopRowId,\n} from '../../types';\nimport { arraysEqual } from './utils';\nimport { TOP_POSITION, BOTTOM_POSITION } from './constants';\n\nconst VALID_UNITS = ['px', ''];\n/* tslint:disable max-line-length */\nconst VIRTUAL_TABLE_ERROR = 'The columnExtension property of the VirtualTable plugin is given an invalid value.';\n\nexport const getViewport: GetViewportFn = (\n state, getters, estimatedRowHeight, getRowHeight, getColumnWidth,\n) => {\n const {\n viewportTop, viewportLeft, containerWidth, containerHeight, headerHeight, footerHeight,\n } = state;\n const {\n loadedRowsStart,\n bodyRows: tableBodyRows,\n columns: tableColumns,\n headerRows: tableHeaderRows = [],\n footerRows: tableFooterRows = [],\n isDataRemote,\n viewport,\n } = getters;\n\n const rows = getRowsVisibleBoundary(\n tableBodyRows, viewportTop, containerHeight - headerHeight - footerHeight,\n getRowHeight, loadedRowsStart, estimatedRowHeight, isDataRemote,\n );\n const headerRows = getRowsVisibleBoundary(\n tableHeaderRows, 0, headerHeight,\n getRowHeight, 0, estimatedRowHeight, false,\n );\n const footerRows = getRowsVisibleBoundary(\n tableFooterRows, 0, footerHeight,\n getRowHeight, 0, estimatedRowHeight, false,\n );\n const columns = getColumnBoundaries(\n tableColumns, viewportLeft, containerWidth, getColumnWidth,\n );\n\n // NOTE: prevent unnecessary updates\n // e.g. when rows changed but bounds remain the same.\n let result = viewport;\n if (viewportTop !== viewport.top) {\n result = { ...result, top: viewportTop };\n }\n if (viewportLeft !== viewport.left) {\n result = { ...result, left: viewportLeft };\n }\n if (containerWidth !== viewport.width) {\n result = { ...result, width: containerWidth };\n }\n if (containerHeight !== viewport.height) {\n result = { ...result, height: containerHeight };\n }\n if (!arraysEqual(rows, viewport.rows)) {\n result = { ...result, rows };\n }\n if (!arraysEqual(headerRows, viewport.headerRows)) {\n result = { ...result, headerRows };\n }\n if (!arraysEqual(footerRows, viewport.footerRows)) {\n result = { ...result, footerRows };\n }\n if (!arraysEqual(columns, viewport.columns, arraysEqual)) {\n result = { ...result, columns };\n }\n\n return result;\n};\n\nexport const checkColumnWidths: CheckTableColumnWidths = (tableColumns) => {\n return tableColumns.reduce((acc, tableColumn) => {\n const { width } = tableColumn;\n if (typeof width === 'string') {\n const numb = parseInt(width, 10);\n const unit = numb ? width.substr(numb.toString().length) : width;\n const isValidUnit = VALID_UNITS.some(validUnit => validUnit === unit);\n if (!isValidUnit) {\n throw new Error(VIRTUAL_TABLE_ERROR);\n }\n acc.push({ ...tableColumn, width: numb });\n } else {\n acc.push(tableColumn);\n }\n return acc;\n }, [] as TableColumn[]);\n};\n\nexport const calculateScrollHeight: GetScrollHeightByIndex = (rowHeight, index) =>\n index > -1 ? rowHeight * index : undefined;\n\nexport const getScrollTop: GetScrollPosition = (rows, rowsCount, rowId, rowHeight, isDataRemote) => {\n if (rowId === TOP_POSITION) {\n return 0;\n }\n if (rowId === BOTTOM_POSITION) {\n return rowsCount * rowHeight;\n }\n\n const searchIndexRequired = !isDataRemote && rowId !== undefined;\n const indexById = searchIndexRequired\n ? rows.findIndex(row => row.rowId === rowId)\n : undefined;\n\n return calculateScrollHeight(\n rowHeight,\n indexById!,\n );\n};\n\nexport const getTopRowId: GetTopRowId = (viewport, tableBodyRows, isDataRemote) => {\n const hasViewportRows = viewport && viewport.rows;\n const hasBodyRows = tableBodyRows && tableBodyRows.length;\n if (hasViewportRows && hasBodyRows && !isDataRemote) {\n const index = viewport.rows[0];\n\n return index < tableBodyRows.length ? tableBodyRows[index].rowId : undefined;\n }\n\n return undefined;\n};\n","import { mergeRows } from './helpers';\nimport { intervalUtil } from './utils';\nimport { VirtualRowsWithCacheFn, PlainRowsFn, LoadedRowsStartFn } from '../../types';\n\nexport const virtualRowsWithCache: VirtualRowsWithCacheFn = (skip, rows, cache) => {\n const rowsInterval = intervalUtil.getRowsInterval({ skip, rows });\n const cacheInterval = intervalUtil.getRowsInterval(cache);\n\n return mergeRows(rowsInterval, cacheInterval, rows, cache.rows, skip, cache.skip);\n};\n\nexport const plainRows: PlainRowsFn = (virtualRows, availableRowCount) => {\n return virtualRows.rows.length > availableRowCount\n ? virtualRows.rows.slice(0, availableRowCount)\n : virtualRows.rows;\n};\n\nexport const loadedRowsStart: LoadedRowsStartFn = virtualRows => virtualRows.skip;\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}"],"sourceRoot":""}