{"version":3,"sources":["webpack:///./node_modules/@devexpress/dx-react-grid/dist/dx-react-grid.es.js"],"names":["_extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","_assign","assign","t","s","i","n","arguments","length","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__read","o","m","Symbol","iterator","r","ar","next","done","push","value","error","__spread","concat","TableColumnsWithGrouping","_a","indentColumnWidth","showColumnsWhenGrouped","columnExtensions","name","computed","columns","tableColumns","grouping","draftGrouping","map","reduce","acc","columnExtension","columnName","showWhenGrouped","showColumnWhenGroupedGetter","defaultProps","GridCoreGetters","rows","getRowId","getCellValue","TableColumnsWithDataRowsGetter","tableColumnsComputed","visibleTableColumnsComputed","hiddenColumnNames","VisibleTableColumns","OrderedTableColumns","order","GridCore","_super","render","props","Root","rootComponent","restProps","Grid","children","pluginDependencies","ColumnChooser","ColumnChooserBase","_this","state","visible","handleToggle","bind","handleHide","setButtonRef","button","setState","Overlay","overlayComponent","Container","containerComponent","Item","itemComponent","ToggleButton","toggleButtonComponent","messages","getMessage","dependencies","_b","isColumnTogglingEnabled","toggleColumnVisibility","buttonRef","onToggle","active","target","onHide","item","column","togglingEnabled","key","disabled","components","columnExtensionValueGetter","defaultValue","filterExpressionComputed","filters","filterExpressionValue","filterExpression","FilteringState","FilteringStateBase","defaultFilters","stateHelper","onFiltersChange","changeColumnFilter","applyFieldReducer","getDerivedStateFromProps","nextProps","prevState","columnFilteringEnabled","action","pluginDependencies$1","optional","getCollapsedRowsComputed","unwrappedRowsComputed","IntegratedFilteringBase","getColumnPredicate","predicate","getRowLevelKey","getCollapsedRows","defaultPredicate","IntegratedFiltering","columnExtensionValueGetter$1","pluginDependencies$2","rowsWithHeadersComputed","pageSize","totalCountComputed","paginatedRowsComputed","page","currentPage","currentPageComputed","totalCount","setCurrentPage","pluginDependencies$3","columnExtensionValueGetter$2","GroupingState","GroupingStateBase","defaultGrouping","expandedGroups","defaultExpandedGroups","onGroupingChange","onExpandedGroupsChange","changeColumnGrouping","toggleGroupExpanded","applyReducer","draftColumnGrouping","cancelColumnGroupingDraft","changeColumnSorting","_c","sorting","keepOther","restParams","groupingIndex","findIndex","columnGrouping","sortIndex","getters","actions","groupIndex","nextState","prevGrouping","columnSortingIndex","columnSorting","prevGroupingIndex","columnGroupingEnabled","pluginDependencies$4","getCollapsedRowsComputed$1","expandedGroupedRowsComputed","isExporting","IntegratedGrouping","IntegratedGroupingBase","getColumnCriteria","criteria","pluginDependencies$5","getCollapsedRowsComputed$2","expandedGroupedRowsComputed$1","getRowIdComputed","SelectionState","SelectionStateBase","selection","defaultSelection","onSelectionChange","toggleSelection","rowsWithAvailableToSelectComputed","isGroupRow","allSelectedComputed","someSelectedComputed","selectAllAvailableComputed","availableToSelect","toggleSelectAll","rowIds","unwrapRowsComputed","pluginDependencies$6","IntegratedSelection","IntegratedSelectionBase","columnExtensionValueGetter$3","SortingState","SortingStateBase","defaultSorting","onSortingChange","payload","persistentSortedColumns","columnSortingEnabled","pluginDependencies$7","DragDropProvider","DragDropProviderBase","clientOffset","change","componentDidMount","bodyRef","document","body","Column","columnComponent","onChange","filter","type","find","getTargetColumns","pluginDependencies$8","tableHeaderRowsComputed","tableHeaderRows","TableColumnReorderingRaw","cellDimensionGetters","cellDimensions","defaultOrder","sourceColumnIndex","targetColumnIndex","onOver","handleOver","onLeave","handleLeave","onDrop","handleDrop","getState","orderState","getDraftOrder","getAvailableColumns","cacheCellDimensions","resetCellDimensions","ensureCellDimensionGetters","keys","forEach","storeCellDimensionsGetter","tableColumn","getter","x","sourceColumnName","availableColumns","relativeTargetIndex","prevSourceColumnIndex","prevTargetColumnIndex","draftOrder","onOrderChange","nextOrder","targetColumnName","tableContainerComponent","Row","rowComponent","Cell","cellComponent","params","draggingEnabled","tableRow","getCellDimensions","TableColumnReordering","TableContainer","RowPlaceholder","CellPlaceholder","tableBodyRowsComputed","isDataLoading","tableFooterRows","defaultMessages","noData","Table","TableBase","Layout","layoutComponent","NoDataRow","noDataRowComponent","NoDataCell","noDataCellComponent","StubRow","stubRowComponent","StubCell","stubCellComponent","StubHeaderCell","stubHeaderCellComponent","tableComponent","headComponent","bodyComponent","footerComponent","headerRows","bodyRows","tableBodyRows","footerRows","getTableCellColSpan","getCellColSpan","row","content","COLUMN_TYPE","ROW_TYPE","NODATA_ROW_TYPE","TableSelection","TableSelectionBase","highlightRow","selectByRowClick","showSelectionColumn","showSelectAll","HeaderCell","headerCellComponent","selectionColumnWidth","selectAllAvailable","allSelected","someSelected","select","selected","rowId","highlighted","getCellColSpanComputed","pluginDependencies$9","TableRowDetail","TableRowDetailBase","rowHeight","Content","contentComponent","ToggleCell","toggleCellComponent","toggleColumnWidth","expandedDetailRowIds","toggleDetailRowExpanded","expanded","defaultSummaryMessages","sum","min","max","avg","count","TableSummaryContent","columnSummaries","formatlessSummaryTypes","SummaryItem","summary","String","includes","isFormatlessSummary","getInlineSummaryComponent","formatlessSummaries","pluginDependencies$a","defaultMessages$1","countOf","sumOf","maxOf","minOf","avgOf","tableBodyRowsComputed$1","getCellColSpanComputed$1","groupSummaryItems","viewport","firstVisibleColumnIndex","TableGroupRow","TableGroupRowBase","GroupCell","Icon","iconComponent","GroupRow","GroupIndentCell","indentCellComponent","InlineSummary","inlineSummaryComponent","InlineSummaryItem","inlineSummaryItemComponent","SummaryCell","summaryCellComponent","summaryItemComponent","contentCellPadding","groupSummaryValues","inlineSummaries_1","compoundKey","colSummaries","summaries","columnTitle","title","messageKey","component","flattenGroupInlineSummaries","contentIndent_1","groupKey","inlineSummaries","position","side","fixedProps","summaryItem","showInGroupFooter","alignByColumn","tableHeaderRowsComputed$1","TableHeaderRowBase","showSortingControls","showGroupingControls","HeaderRow","SortLabel","sortLabelComponent","GroupButton","groupButtonComponent","Title","titleComponent","tableColumnResizingEnabled","isColumnSortingEnabled","isColumnGroupingEnabled","columnResizingMode","changeTableColumnWidth","draftTableColumnWidth","cancelTableColumnWidthDraft","storeWidthGetters","_d","atLeastOneDataColumn","sortingEnabled","groupingEnabled","nextColumnName","resizingEnabled","onWidthChange","shift","onWidthDraft","onWidthDraftCancel","getCellWidth","align","direction","onSort","onGroup","TableHeaderRow","CellPlaceholder$1","bandLevelsVisibilityComputed","columnIntervals","columnVisibleIntervals","tableHeaderColumnChains","bandLevels","columnVisibleIntervalsComputed","TableBandHeaderBase","bandedHeaderCellComponent","InvisibleCell","invisibleCellComponent","columnBands","levelsVisibility","bandLevelsVisibility","bandComponent","style","whiteSpace","TableBandHeader","pluginDependencies$b","defaultMessages$2","filterPlaceholder","contains","notContains","startsWith","endsWith","equal","notEqual","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","TableFilterRow","TableFilterRowBase","filterOperations","showFilterSelector","FilterCell","FilterRow","FilterSelector","filterSelectorComponent","EditorComponent","editorComponent","isColumnFilteringEnabled","getAvailableFilterOperations","isDataRemote","scrollToRow","onFilter","config","columnFilterOperations","selectedFilterOperation","handleFilterOperationChange","operation","handleFilterValueChange","filteringEnabled","undefined","onValueChange","availableValues","pluginDependencies$c","TableEditRow","TableEditRowBase","EditCell","EditRow","editingRowIds","addedRows","createRowChange","rowChanges","isColumnEditingEnabled","changeAddedRow","changeRow","isNew","changedRow","newValue","changeArgs","editingEnabled","ADDED_ROW_TYPE","EDIT_ROW_TYPE","pluginDependencies$d","defaultMessages$3","addCommand","editCommand","deleteCommand","commitCommand","cancelCommand","TableEditColumn","TableEditColumnBase","Command","commandComponent","showAddCommand","showEditCommand","showDeleteCommand","width","id","text","onExecute","addRow","isEdit","isEditing","startEditRows","deleteRows","commitDeletedRows","commitAddedRows","stopEditRows","commitChangedRows","cancelAddedRows","cancelChangedRows","pluginDependencies$e","TableColumnResizing","TableColumnResizingBase","widthGetters","cachedWidths","columnWidths","defaultColumnWidths","draftColumnWidths","onColumnWidthsChange","resizingMode","tableColumnsDraftComputed","minColumnWidth","maxColumnWidth","storeCache","clearCache","componentDidUpdate","_","pluginDependencies$f","defaultMessages$4","showAll","info","from","to","PagingPanel","PagingPanelBase","Pager","pageSizes","setPageSize","totalPages","onCurrentPageChange","onPageSizeChange","onDragStart","onDragEnd","ItemLayout","dragging","itemElement","draft","onStart","onEnd","defaultProps$1","onGroupDraft","onGroupDraftCancel","GroupPanelLayout","GroupPanelLayoutBase","itemRefs","draggingColumnName","targetItemIndex","handleDragEvent","eventHandler","restArgs","onEnter","items","prevTargetItemIndex","itemGeometries","ref","getBoundingClientRect","sourceItemIndex","resetState","EmptyMessage","emptyMessageComponent","groupPanel","element","args","defaultMessages$5","groupByColumn","defaultProps$2","GroupingPanelRaw","LayoutComponent","EmptyMessagePlaceholder","ItemPlaceholder","sortingDirection","GroupingPanel","pluginDependencies$g","defaultMessages$6","noColumns","columnExtensionValueGetter$4","TableColumnVisibilityBase","defaultHiddenColumnNames","onHiddenColumnNamesChange","columnTogglingEnabled","TableColumnVisibility","Toolbar","ToolbarBase","FlexibleSpaceComponent","flexibleSpaceComponent","pluginDependencies$h","expandedTreeRowsComputed","expandedRowIds","getRowIdComputed$1","getRowLevelKeyComputed","isTreeRowLeafComputed","getTreeRowLevelComputed","collapsedTreeRowsGetterComputed","unwrappedTreeRowsComputed","TableTreeColumn","TableTreeColumnBase","forColumnName","for","showSelectionControls","Indent","indentComponent","ExpandButton","expandButtonComponent","Checkbox","checkboxComponent","checked","indeterminate","isTreeRowLeaf","getTreeRowLevel","toggleRowExpanded","collapsedRows","level","pluginDependencies$i","defaultMessages$7","searchPlaceholder","SearchPanel","SearchPanelBase","Input","inputComponent","searchValue","changeSearchValue","tableHeaderRowsComputed$2","tableHeaderColumnChainsComputed","CellPlaceholder$2","pluginDependencies$j","TableFixedColumns","TableFixedColumnsBase","tableColumnDimensions","handleListenerSizeChange","ListenerRow","listenerRowComponent","ListenerCell","listenerCellComponent","leftColumns","rightColumns","fixed","highlightSelectedRow","fixedColumnProps","listen","onSizeChange","groupSummaryItemsComputed","pluginDependencies$k","pluginDependencies$l","dependencies$1","tableBodyRowsComputed$2","treeSummaryItems","tableFooterRowsComputed","totalSummaryItems","TableSummaryRow","TableSummaryRowBase","renderContent","TotalRow","totalRowComponent","groupRowComponent","TreeRow","treeRowComponent","TotalCell","totalCellComponent","groupCellComponent","TreeCell","treeCellComponent","TreeColumnCell","treeColumnCellComponent","TreeColumnContent","treeColumnContentComponent","TreeColumnIndent","treeColumnIndentComponent","totalSummaryValues","treeSummaryValues","tableTreeColumnName","TREE_ROW_TYPE","GROUP_ROW_TYPE","TOTAL_ROW_TYPE","virtualRowsComputed","skip","virtualRowsCache","rowsComputed","virtualRows","availableRowCount","loadedRowsStartComputed","pluginDependencies$m","rowsWithEditingCellsComputed","editingCells","columnsWithEditingCellsComputed","TableInlineCellEditingBase","startEditAction","selectTextOnEditStart","startEditCells","Error","eventName","newParams","hasEditCell","stopEditCells","onKeyDown","onBlur","onFocus","autoFocus","TableInlineCellEditing","defaultMessages$8","showExportMenu","exportAll","exportSelected","ExportPanel","ExportPanelBase","Menu","menuComponent","MenuItem","menuItemComponent","startExport","onClick","selectedOnly","getRowStyle","height","TableLayout","TableLayoutBase","savedOffsetWidth","raf","animationState","Map","animations","savedScrollWidth","tableRef","prevProps","prevColumns","size","processAnimation","tableWidth","getTableWidth","cancelAnimationFrame","requestAnimationFrame","processAnimationFrame","current","offsetWidth","scrollWidth","widthChanged","getColumns","result","toString","has","get","animationComponentState","minWidth","Number","isNaN","isNumber","join","ColumnGroup","styleWidth","VirtualRowLayout","shouldComponentUpdate","prevCells","cells","prevRow","nextCells","some","nextCell","prevCell","colSpan","VirtualTableLayoutBlock","collapsedGrid","blockRefsHandler","rowRefsHandler","Body","marginBottom","_ref","visibleRow","_ref2","defaultProps$3","headTableComponent","footerTableComponent","VirtualTableLayout","rowRefs","blockRefs","viewportTop","containerHeight","containerWidth","viewportLeft","getRowHeight","rowHeights","estimatedRowHeight","storedHeight","registerRowRef","delete","set","registerBlockRef","onScroll","node","shouldSkipScrollEvent","scrollTop","scrollLeft","updateViewport","handleContainerSizeChange","headerHeight","bodyHeight","footerHeight","visibleRowBoundaries","getColumnWidthGetter","storeRowHeights","storeBlockHeights","bodyRowsChanged","columnCountChanged","prevRowHeight","rowsWithChangedHeights","entries","rowHeights_1","getBlockHeight","blockName","prevHeaderHeight","prevBodyHeight","prevFooterHeight","currentTarget","nodeHorizontalOffset","parseInt","clientWidth","nodeVerticalOffset","clientHeight","Math","scrollHeight","setViewport","newViewport","calculateViewport","loadedRowsStart","getColumnWidth","getCollapsedGrids","totalRowCount","HeadTable","FootTable","Head","Footer","collapsedGrids","commonProps","sizerHeight","headerGrid","bodyGrid","footerGrid","RowLayout","getColSpan","RowsBlockLayout","Block","blockComponent","defaultProps$4","StaticTableLayout","emptyViewport","top","left","makeVirtualTable","VirtualLayout","FixedHeader","FixedFooter","SkeletonCell","defaultEstimatedRowHeight","defaultHeight","VirtualTable","nextRowId","layoutRenderComponent","prevId","currentId","areIdsEqual","update","SkeletonStubCell","skeletonCellComponent","stateViewport","nextId","onTopRowChange","TOP_POSITION","BOTTOM_POSITION","values","SummaryComponent"],"mappings":"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","file":"93fe9d73-490b943b6f5b1d9b4e1a.js","sourcesContent":["import \"core-js/modules/es.array.reduce.js\";\n\n/**\n * Bundle of @devexpress/dx-react-grid\n * Generated: 2020-12-24\n * Version: 2.7.4\n * License: https://js.devexpress.com/Licensing\n */\nimport { memo, createElement, useCallback, PureComponent, Fragment, createRef, Component } from 'react';\nimport { Plugin, Getter, Template, TemplatePlaceholder, PluginHost, TemplateConnector, createStateHelper, Action, DragDropProvider as DragDropProvider$1, withComponents, DropTarget, DragSource, RefHolder, Sizer, connectProps } from '@devexpress/dx-react-core';\nimport { tableColumnsWithGrouping, rowIdGetter, cellValueGetter, tableColumnsWithDataRows, checkTableColumnExtensions, visibleTableColumns, orderedColumns, columnChooserItems, changeColumnFilter, getColumnExtensionValueGetter, filterExpression, defaultFilterPredicate, filteredCollapsedRowsGetter, unwrappedFilteredRows, filteredRows, getColumnExtension, startEditRows, stopEditRows, startEditCells, stopEditCells, changeRow, cancelChanges, changedRowsByIds, addRow, changeAddedRow, cancelAddedRows, addedRowsByIds, deleteRows, cancelDeletedRows, createRowChangeGetter, setCurrentPage, setPageSize, rowsWithPageHeaders, rowCount, paginatedRows, currentPage, toggleExpandedGroups, draftColumnGrouping, cancelColumnGroupingDraft, adjustSortIndex, changeColumnGrouping, groupRowChecker, groupRowLevelKeyGetter, groupCollapsedRowsGetter, expandedGroupRows, groupedRows, customGroupingRowIdGetter, customGroupedRows, toggleSelection, rowsWithAvailableToSelect, allSelected, someSelected, unwrapSelectedRows, getPersistentSortedColumns, calculateKeepOther, changeColumnSorting, sortedRows, draftOrder, TABLE_DATA_TYPE, getTableTargetColumnIndex, changeColumnOrder, TABLE_REORDERING_TYPE, tableHeaderRowsWithReordering, tableCellColSpanGetter, isHeaderStubTableCell, isDataTableCell, isNoDataTableRow, isNoDataTableCell, isDataTableRow, TABLE_NODATA_TYPE, tableRowsWithDataRows, isSelectAllTableCell, isSelectTableCell, isRowHighlighted, TABLE_SELECT_TYPE, tableColumnsWithSelection, toggleDetailRowExpanded, isDetailToggleTableCell, isDetailRowExpanded, isDetailTableRow, isDetailTableCell, TABLE_DETAIL_TYPE, tableDetailCellColSpanGetter, tableColumnsWithDetail, tableRowsWithExpandedDetail, defaultFormatlessSummaries, getGroupInlineSummaries, isGroupTableRow, isGroupTableCell, calculateGroupCellIndent, isGroupIndentTableCell, isGroupIndentStubTableCell, isGroupRowOrdinaryCell, isRowSummaryCell, getColumnSummaries, isPreviousCellContainSummary, TABLE_FLEX_TYPE, TABLE_GROUP_TYPE, tableRowsWithGrouping, tableGroupCellColSpanGetter, isHeadingTableCell, getNextColumnName, getColumnSortingDirection, isHeadingTableRow, TABLE_HEADING_TYPE, tableRowsWithHeading, columnBandLevels, isBandedOrHeaderRow, getBandComponent, BAND_FILL_LEVEL_CELL, BAND_HEADER_CELL, BAND_GROUP_CELL, BAND_EMPTY_CELL, BAND_DUPLICATE_RENDER, isBandedTableRow, TABLE_BAND_TYPE, bandLevelsVisibility, columnVisibleIntervals, tableRowsWithBands, tableHeaderColumnChainsWithBands, isFilterTableCell, getColumnFilterConfig, getColumnFilterOperations, getSelectedFilterOperation, isFilterTableRow, TABLE_FILTER_TYPE, tableHeaderRowsWithFilter, TOP_POSITION, isFilterValueEmpty, isEditTableCell, isAddedTableRow, getRowChange, isEditTableRow, TABLE_ADDED_TYPE, TABLE_EDIT_TYPE, tableRowsWithEditing, isHeadingEditCommandsTableCell, isEditCommandsTableCell, TABLE_EDIT_COMMAND_TYPE, tableColumnsWithEditing, tableColumnsWithWidths, tableColumnsWithDraftWidths, changeTableColumnWidth, draftTableColumnWidth, cancelTableColumnWidthDraft, pageCount, getGroupCellTargetIndex, groupingPanelItems, getAvailableFilterOperationsGetter, toggleColumn, tableDataColumnsExist, toggleRowExpanded, expandedTreeRows, customTreeRowIdGetter, customTreeRowLevelKeyGetter, isTreeRowLeafGetter, getTreeRowLevelGetter, collapsedTreeRowsGetter, unwrappedCustomTreeRows, customTreeRowsWithMeta, isTreeTableCell, changeSearchValue, searchFilterExpression, calculateFixedColumnProps, isFixedTableRow, tableHeaderRowsWithFixed, tableHeaderColumnChainsWithFixed, tableColumnsWithFixed, prepareGroupSummaryItems, defaultSummaryCalculator, totalSummaryValues, groupSummaryValues, treeSummaryValues, isTotalSummaryTableCell, isGroupSummaryTableCell, isFooterSummary, isTreeSummaryTableCell, isTotalSummaryTableRow, isGroupSummaryTableRow, isTreeSummaryTableRow, TABLE_TREE_SUMMARY_TYPE, TABLE_GROUP_SUMMARY_TYPE, TABLE_TOTAL_SUMMARY_TYPE, tableRowsWithSummaries, tableRowsWithTotalSummaries, getReferenceIndex, needFetchMorePages, getRequestMeta, shouldSendRequest, emptyVirtualRows, trimRowsToInterval, getAvailableRowCount, virtualRowsWithCache, plainRows, loadedRowsStart, rowsWithEditingCells, columnsWithEditingCells, getAnimations, filterActiveAnimations, evalAnimations, TABLE_STUB_TYPE, getViewport, getCollapsedGrids, getColumnWidthGetter, getTopRowId, getScrollTop, isStubTableCell, BOTTOM_POSITION, checkColumnWidths } from '@devexpress/dx-grid-core';\nimport { getMessagesFormatter, memoize, shallowEqual } from '@devexpress/dx-core';\nimport { createPortal, findDOMNode } from 'react-dom';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n\nvar showColumnWhenGroupedGetter = function showColumnWhenGroupedGetter(showColumnsWhenGrouped, columnExtensions) {\n if (columnExtensions === void 0) {\n columnExtensions = [];\n }\n\n var map = columnExtensions.reduce(function (acc, columnExtension) {\n acc[columnExtension.columnName] = columnExtension.showWhenGrouped;\n return acc;\n }, {});\n return function (columnName) {\n return map[columnName] || showColumnsWhenGrouped;\n };\n};\n/** @internal */\n\n\nvar TableColumnsWithGrouping = memo(function (_a) {\n var indentColumnWidth = _a.indentColumnWidth,\n showColumnsWhenGrouped = _a.showColumnsWhenGrouped,\n columnExtensions = _a.columnExtensions;\n\n var tableColumnsComputed = function tableColumnsComputed(_a) {\n var columns = _a.columns,\n tableColumns = _a.tableColumns,\n grouping = _a.grouping,\n draftGrouping = _a.draftGrouping;\n return tableColumnsWithGrouping(columns, tableColumns, grouping, draftGrouping, indentColumnWidth, showColumnWhenGroupedGetter(showColumnsWhenGrouped, columnExtensions));\n };\n\n return createElement(Plugin, null, createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }));\n});\nTableColumnsWithGrouping.defaultProps = {\n indentColumnWidth: 0\n};\nvar GridCoreGetters = memo(function (_a) {\n var rows = _a.rows,\n columns = _a.columns,\n getRowId = _a.getRowId,\n getCellValue = _a.getCellValue;\n return createElement(Plugin, null, createElement(Getter, {\n name: \"rows\",\n value: rows\n }), createElement(Getter, {\n name: \"getRowId\",\n value: rowIdGetter(getRowId, rows)\n }), createElement(Getter, {\n name: \"columns\",\n value: columns\n }), createElement(Getter, {\n name: \"getCellValue\",\n value: cellValueGetter(getCellValue, columns)\n }));\n});\nvar TableColumnsWithDataRowsGetter = memo(function (_a) {\n var columnExtensions = _a.columnExtensions;\n var tableColumnsComputed = useCallback(function (_a) {\n var columns = _a.columns;\n return tableColumnsWithDataRows(columns, columnExtensions);\n }, [columnExtensions]);\n checkTableColumnExtensions(columnExtensions);\n return createElement(Plugin, null, createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }));\n});\n\nvar visibleTableColumnsComputed = function visibleTableColumnsComputed(_a) {\n var tableColumns = _a.tableColumns,\n hiddenColumnNames = _a.hiddenColumnNames;\n return visibleTableColumns(tableColumns, hiddenColumnNames);\n};\n/** @internal */\n\n\nvar VisibleTableColumns = memo(function (_a) {\n var hiddenColumnNames = _a.hiddenColumnNames;\n return createElement(Plugin, null, createElement(Getter, {\n name: \"hiddenColumnNames\",\n value: hiddenColumnNames\n }), createElement(Getter, {\n name: \"tableColumns\",\n computed: visibleTableColumnsComputed\n }));\n});\nVisibleTableColumns.defaultProps = {\n hiddenColumnNames: []\n};\n/** @internal */\n\nvar OrderedTableColumns = function OrderedTableColumns(_a) {\n var order = _a.order;\n\n var columnsComputed = function columnsComputed(_a) {\n var tableColumns = _a.tableColumns;\n return orderedColumns(tableColumns, order);\n };\n\n return createElement(Plugin, null, createElement(Getter, {\n name: \"tableColumns\",\n computed: columnsComputed\n }));\n};\n\nOrderedTableColumns.defaultProps = {\n order: []\n};\n\nvar GridCore = /*#__PURE__*/function (_super) {\n __extends(GridCore, _super);\n\n function GridCore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GridCore.prototype.render = function () {\n var _a = this.props,\n Root = _a.rootComponent,\n restProps = __rest(_a, [\"rootComponent\"]);\n\n return createElement(Plugin, null, createElement(Getter, {\n name: \"skip\",\n value: 0\n }), createElement(Getter, {\n name: \"loadedRowsStart\",\n value: 0\n }), createElement(GridCoreGetters, _assign({}, restProps)), createElement(Template, {\n name: \"root\"\n }, createElement(Root, null, createElement(TemplatePlaceholder, {\n name: \"header\"\n }), createElement(TemplatePlaceholder, {\n name: \"body\"\n }), createElement(TemplatePlaceholder, {\n name: \"footer\"\n }))));\n };\n\n return GridCore;\n}(PureComponent);\n\nvar GridBase = function GridBase(_a) {\n var rows = _a.rows,\n columns = _a.columns,\n getRowId = _a.getRowId,\n getCellValue = _a.getCellValue,\n rootComponent = _a.rootComponent,\n children = _a.children;\n return createElement(PluginHost, null, createElement(GridCore, {\n rows: rows,\n columns: columns,\n getRowId: getRowId,\n getCellValue: getCellValue,\n rootComponent: rootComponent\n }), children);\n};\n/***\r\n * The Grid is a root container component designed to process and display data specified via\r\n * the `rows` property. You can configure columns using the `columns` property. The Grid's\r\n * functionality is implemented in several plugins specified as child components.\r\n * See the plugins concept for details.\r\n * */\n\n\nvar Grid = GridBase;\nvar pluginDependencies = [{\n name: 'TableColumnVisibility'\n}, {\n name: 'Toolbar'\n}];\n\nvar ColumnChooserBase = /*#__PURE__*/function (_super) {\n __extends(ColumnChooserBase, _super);\n\n function ColumnChooserBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n visible: false\n };\n _this.handleToggle = _this.handleToggle.bind(_this);\n _this.handleHide = _this.handleHide.bind(_this);\n _this.setButtonRef = _this.setButtonRef.bind(_this);\n return _this;\n }\n\n ColumnChooserBase.prototype.setButtonRef = function (button) {\n this.button = button;\n };\n\n ColumnChooserBase.prototype.handleToggle = function () {\n var visible = this.state.visible;\n this.setState({\n visible: !visible\n });\n };\n\n ColumnChooserBase.prototype.handleHide = function () {\n this.setState({\n visible: false\n });\n };\n\n ColumnChooserBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n Overlay = _a.overlayComponent,\n Container = _a.containerComponent,\n Item = _a.itemComponent,\n ToggleButton = _a.toggleButtonComponent,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(messages);\n var visible = this.state.visible;\n return createElement(Plugin, {\n name: \"ColumnChooser\",\n dependencies: pluginDependencies\n }, createElement(Template, {\n name: \"toolbarContent\"\n }, createElement(TemplatePlaceholder, null), createElement(TemplateConnector, null, function (_a, _b) {\n var columns = _a.columns,\n hiddenColumnNames = _a.hiddenColumnNames,\n isColumnTogglingEnabled = _a.isColumnTogglingEnabled;\n var toggleColumnVisibility = _b.toggleColumnVisibility;\n return createElement(Fragment, null, createElement(ToggleButton, {\n buttonRef: _this.setButtonRef,\n onToggle: _this.handleToggle,\n getMessage: getMessage,\n active: visible\n }), createElement(Overlay, {\n visible: visible,\n target: _this.button,\n onHide: _this.handleHide\n }, createElement(Container, null, columnChooserItems(columns, hiddenColumnNames).map(function (item) {\n var columnName = item.column.name;\n var togglingEnabled = isColumnTogglingEnabled(columnName);\n return createElement(Item, {\n key: columnName,\n item: item,\n disabled: !togglingEnabled,\n onToggle: function onToggle() {\n return toggleColumnVisibility(columnName);\n }\n });\n }))));\n })));\n };\n\n ColumnChooserBase.defaultProps = {\n messages: {}\n };\n ColumnChooserBase.components = {\n overlayComponent: 'Overlay',\n containerComponent: 'Container',\n itemComponent: 'Item',\n toggleButtonComponent: 'ToggleButton'\n };\n return ColumnChooserBase;\n}(PureComponent);\n/***\r\n * The ColumnChooser plugin allows a user to toggle grid columns' visibility at runtime.\r\n * The column chooser lists columns with checkboxes that control a corresponding\r\n * column's visibility.\r\n * */\n\n\nvar ColumnChooser = ColumnChooserBase;\n\nvar columnExtensionValueGetter = function columnExtensionValueGetter(columnExtensions, defaultValue) {\n return getColumnExtensionValueGetter(columnExtensions, 'filteringEnabled', defaultValue);\n};\n\nvar filterExpressionComputed = function filterExpressionComputed(_a) {\n var filters = _a.filters,\n filterExpressionValue = _a.filterExpression;\n return filterExpression(filters, filterExpressionValue);\n};\n\nvar FilteringStateBase = /*#__PURE__*/function (_super) {\n __extends(FilteringStateBase, _super);\n\n function FilteringStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n filters: props.filters || props.defaultFilters\n };\n var stateHelper = createStateHelper(_this, {\n filters: function filters() {\n var onFiltersChange = _this.props.onFiltersChange;\n return onFiltersChange;\n }\n });\n _this.changeColumnFilter = stateHelper.applyFieldReducer.bind(stateHelper, 'filters', changeColumnFilter);\n return _this;\n } // tslint:disable-next-line:member-ordering\n\n\n FilteringStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.filters,\n filters = _a === void 0 ? prevState.filters : _a;\n return {\n filters: filters\n };\n };\n\n FilteringStateBase.prototype.render = function () {\n var filters = this.state.filters;\n var _a = this.props,\n columnExtensions = _a.columnExtensions,\n columnFilteringEnabled = _a.columnFilteringEnabled;\n return createElement(Plugin, {\n name: \"FilteringState\"\n }, createElement(Getter, {\n name: \"filters\",\n value: filters\n }), createElement(Getter, {\n name: \"filterExpression\",\n computed: filterExpressionComputed\n }), createElement(Getter, {\n name: \"isColumnFilteringEnabled\",\n value: columnExtensionValueGetter(columnExtensions, columnFilteringEnabled)\n }), createElement(Action, {\n name: \"changeColumnFilter\",\n action: this.changeColumnFilter\n }));\n };\n\n FilteringStateBase.defaultProps = {\n defaultFilters: [],\n columnFilteringEnabled: true\n };\n return FilteringStateBase;\n}(PureComponent);\n/** A plugin that manages the filtering state. */\n\n\nvar FilteringState = FilteringStateBase;\nvar pluginDependencies$1 = [{\n name: 'FilteringState',\n optional: true\n}, {\n name: 'SearchState',\n optional: true\n}];\n\nvar getCollapsedRowsComputed = function getCollapsedRowsComputed(_a) {\n var rows = _a.rows;\n return filteredCollapsedRowsGetter(rows);\n};\n\nvar unwrappedRowsComputed = function unwrappedRowsComputed(_a) {\n var rows = _a.rows;\n return unwrappedFilteredRows(rows);\n};\n\nvar IntegratedFilteringBase = /*#__PURE__*/function (_super) {\n __extends(IntegratedFilteringBase, _super);\n\n function IntegratedFilteringBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n IntegratedFilteringBase.prototype.render = function () {\n var columnExtensions = this.props.columnExtensions;\n\n var getColumnPredicate = function getColumnPredicate(columnName) {\n return getColumnExtension(columnExtensions, columnName).predicate;\n };\n\n var rowsComputed = function rowsComputed(_a) {\n var rows = _a.rows,\n filterExpression = _a.filterExpression,\n getCellValue = _a.getCellValue,\n getRowLevelKey = _a.getRowLevelKey,\n getCollapsedRows = _a.getCollapsedRows;\n return filteredRows(rows, filterExpression, getCellValue, getColumnPredicate, getRowLevelKey, getCollapsedRows);\n };\n\n return createElement(Plugin, {\n name: \"IntegratedFiltering\",\n dependencies: pluginDependencies$1\n }, createElement(Getter, {\n name: \"rows\",\n computed: rowsComputed\n }), createElement(Getter, {\n name: \"getCollapsedRows\",\n computed: getCollapsedRowsComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: unwrappedRowsComputed\n }));\n };\n\n return IntegratedFilteringBase;\n}(PureComponent);\n\nIntegratedFilteringBase.defaultPredicate = defaultFilterPredicate;\nvar IntegratedFiltering = IntegratedFilteringBase;\n\nvar columnExtensionValueGetter$1 = function columnExtensionValueGetter$1(columnExtensions, defaultValue) {\n return getColumnExtensionValueGetter(columnExtensions, 'editingEnabled', defaultValue);\n};\n\nvar EditingStateBase = /*#__PURE__*/function (_super) {\n __extends(EditingStateBase, _super);\n\n function EditingStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n var rowChanges = props.rowChanges || props.defaultRowChanges;\n var addedRows = props.addedRows || props.defaultAddedRows;\n\n var getRowChanges = function getRowChanges() {\n var stateRowChanges = _this.state.rowChanges;\n return stateRowChanges;\n };\n\n var getAddedRows = function getAddedRows() {\n var stateAddedRows = _this.state.addedRows;\n return stateAddedRows;\n };\n\n _this.state = {\n addedRows: addedRows,\n rowChanges: rowChanges,\n editingRowIds: props.editingRowIds || props.defaultEditingRowIds,\n deletedRowIds: props.deletedRowIds || props.defaultDeletedRowIds,\n editingCells: props.editingCells || props.defaultEditingCells\n };\n var stateHelper = createStateHelper(_this, {\n editingRowIds: function editingRowIds() {\n var onEditingRowIdsChange = _this.props.onEditingRowIdsChange;\n return onEditingRowIdsChange;\n },\n editingCells: function editingCells() {\n var onEditingCellsChange = _this.props.onEditingCellsChange;\n return onEditingCellsChange;\n },\n addedRows: function addedRows() {\n var onAddedRowsChange = _this.props.onAddedRowsChange;\n return onAddedRowsChange;\n },\n rowChanges: function rowChanges() {\n var onRowChangesChange = _this.props.onRowChangesChange;\n return onRowChangesChange;\n },\n deletedRowIds: function deletedRowIds() {\n var onDeletedRowIdsChange = _this.props.onDeletedRowIdsChange;\n return onDeletedRowIdsChange;\n }\n });\n _this.startEditRows = stateHelper.applyFieldReducer.bind(stateHelper, 'editingRowIds', startEditRows);\n _this.stopEditRows = stateHelper.applyFieldReducer.bind(stateHelper, 'editingRowIds', stopEditRows);\n _this.startEditCells = stateHelper.applyFieldReducer.bind(stateHelper, 'editingCells', startEditCells);\n _this.stopEditCells = stateHelper.applyFieldReducer.bind(stateHelper, 'editingCells', stopEditCells);\n _this.changeRow = stateHelper.applyFieldReducer.bind(stateHelper, 'rowChanges', changeRow);\n _this.cancelChangedRows = stateHelper.applyFieldReducer.bind(stateHelper, 'rowChanges', cancelChanges);\n\n _this.commitChangedRows = function (_a) {\n var rowIds = _a.rowIds;\n var onCommitChanges = _this.props.onCommitChanges;\n onCommitChanges({\n changed: changedRowsByIds(getRowChanges(), rowIds)\n });\n\n _this.cancelChangedRows({\n rowIds: rowIds\n });\n };\n\n _this.addRow = stateHelper.applyFieldReducer.bind(stateHelper, 'addedRows', addRow);\n _this.changeAddedRow = stateHelper.applyFieldReducer.bind(stateHelper, 'addedRows', changeAddedRow);\n _this.cancelAddedRows = stateHelper.applyFieldReducer.bind(stateHelper, 'addedRows', cancelAddedRows);\n\n _this.commitAddedRows = function (_a) {\n var rowIds = _a.rowIds;\n var onCommitChanges = _this.props.onCommitChanges;\n onCommitChanges({\n added: addedRowsByIds(getAddedRows(), rowIds)\n });\n\n _this.cancelAddedRows({\n rowIds: rowIds\n });\n };\n\n _this.deleteRows = stateHelper.applyFieldReducer.bind(stateHelper, 'deletedRowIds', deleteRows);\n _this.cancelDeletedRows = stateHelper.applyFieldReducer.bind(stateHelper, 'deletedRowIds', cancelDeletedRows);\n\n _this.commitDeletedRows = function (_a) {\n var rowIds = _a.rowIds;\n var onCommitChanges = _this.props.onCommitChanges;\n onCommitChanges({\n deleted: rowIds\n });\n\n _this.cancelDeletedRows({\n rowIds: rowIds\n });\n };\n\n return _this;\n }\n\n EditingStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.editingRowIds,\n editingRowIds = _a === void 0 ? prevState.editingRowIds : _a,\n _b = nextProps.editingCells,\n editingCells = _b === void 0 ? prevState.editingCells : _b,\n _c = nextProps.rowChanges,\n rowChanges = _c === void 0 ? prevState.rowChanges : _c,\n _d = nextProps.addedRows,\n addedRows = _d === void 0 ? prevState.addedRows : _d,\n _e = nextProps.deletedRowIds,\n deletedRowIds = _e === void 0 ? prevState.deletedRowIds : _e;\n return {\n editingRowIds: editingRowIds,\n editingCells: editingCells,\n rowChanges: rowChanges,\n addedRows: addedRows,\n deletedRowIds: deletedRowIds\n };\n };\n\n EditingStateBase.prototype.render = function () {\n var _a = this.props,\n createRowChange = _a.createRowChange,\n columnExtensions = _a.columnExtensions,\n columnEditingEnabled = _a.columnEditingEnabled;\n var _b = this.state,\n editingRowIds = _b.editingRowIds,\n editingCells = _b.editingCells,\n rowChanges = _b.rowChanges,\n addedRows = _b.addedRows,\n deletedRowIds = _b.deletedRowIds;\n return createElement(Plugin, {\n name: \"EditingState\"\n }, createElement(Getter, {\n name: \"createRowChange\",\n value: createRowChangeGetter(createRowChange, columnExtensions)\n }), createElement(Getter, {\n name: \"editingRowIds\",\n value: editingRowIds\n }), createElement(Action, {\n name: \"startEditRows\",\n action: this.startEditRows\n }), createElement(Action, {\n name: \"stopEditRows\",\n action: this.stopEditRows\n }), createElement(Getter, {\n name: \"editingCells\",\n value: editingCells\n }), createElement(Action, {\n name: \"startEditCells\",\n action: this.startEditCells\n }), createElement(Action, {\n name: \"stopEditCells\",\n action: this.stopEditCells\n }), createElement(Getter, {\n name: \"rowChanges\",\n value: rowChanges\n }), createElement(Action, {\n name: \"changeRow\",\n action: this.changeRow\n }), createElement(Action, {\n name: \"cancelChangedRows\",\n action: this.cancelChangedRows\n }), createElement(Action, {\n name: \"commitChangedRows\",\n action: this.commitChangedRows\n }), createElement(Getter, {\n name: \"addedRows\",\n value: addedRows\n }), createElement(Action, {\n name: \"addRow\",\n action: this.addRow\n }), createElement(Action, {\n name: \"changeAddedRow\",\n action: this.changeAddedRow\n }), createElement(Action, {\n name: \"cancelAddedRows\",\n action: this.cancelAddedRows\n }), createElement(Action, {\n name: \"commitAddedRows\",\n action: this.commitAddedRows\n }), createElement(Getter, {\n name: \"deletedRowIds\",\n value: deletedRowIds\n }), createElement(Action, {\n name: \"deleteRows\",\n action: this.deleteRows\n }), createElement(Action, {\n name: \"cancelDeletedRows\",\n action: this.cancelDeletedRows\n }), createElement(Action, {\n name: \"commitDeletedRows\",\n action: this.commitDeletedRows\n }), createElement(Getter, {\n name: \"isColumnEditingEnabled\",\n value: columnExtensionValueGetter$1(columnExtensions, columnEditingEnabled)\n }));\n };\n\n EditingStateBase.defaultProps = {\n columnEditingEnabled: true,\n defaultEditingRowIds: [],\n defaultEditingCells: [],\n defaultRowChanges: {},\n defaultAddedRows: [],\n defaultDeletedRowIds: []\n };\n return EditingStateBase;\n}(PureComponent);\n/***\r\n * A plugin that manages grid rows' editing state. It arranges grid rows\r\n * by different lists depending on a row's state.\r\n * */\n\n\nvar EditingState = EditingStateBase;\n\nvar PagingStateBase = /*#__PURE__*/function (_super) {\n __extends(PagingStateBase, _super);\n\n function PagingStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n currentPage: props.currentPage || props.defaultCurrentPage,\n pageSize: props.pageSize !== undefined ? props.pageSize : props.defaultPageSize\n };\n var stateHelper = createStateHelper(_this, {\n currentPage: function currentPage() {\n var onCurrentPageChange = _this.props.onCurrentPageChange;\n return onCurrentPageChange;\n },\n pageSize: function pageSize() {\n var onPageSizeChange = _this.props.onPageSizeChange;\n return onPageSizeChange;\n }\n });\n _this.setCurrentPage = stateHelper.applyFieldReducer.bind(stateHelper, 'currentPage', setCurrentPage);\n _this.setPageSize = stateHelper.applyFieldReducer.bind(stateHelper, 'pageSize', setPageSize);\n return _this;\n }\n\n PagingStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.currentPage,\n currentPage = _a === void 0 ? prevState.currentPage : _a,\n _b = nextProps.pageSize,\n pageSize = _b === void 0 ? prevState.pageSize : _b;\n return {\n currentPage: currentPage,\n pageSize: pageSize\n };\n };\n\n PagingStateBase.prototype.render = function () {\n var _a = this.state,\n pageSize = _a.pageSize,\n currentPage = _a.currentPage;\n return createElement(Plugin, {\n name: \"PagingState\"\n }, createElement(Getter, {\n name: \"currentPage\",\n value: currentPage\n }), createElement(Getter, {\n name: \"pageSize\",\n value: pageSize\n }), createElement(Action, {\n name: \"setCurrentPage\",\n action: this.setCurrentPage\n }), createElement(Action, {\n name: \"setPageSize\",\n action: this.setPageSize\n }));\n };\n\n PagingStateBase.defaultProps = {\n defaultPageSize: 10,\n defaultCurrentPage: 0\n };\n return PagingStateBase;\n}(PureComponent);\n/***\r\n * A plugin that manages the paging state. It controls the total page count depending on the\r\n * total row count and the specified page size, controls the currently selected page number\r\n * and changes it in response to the corresponding actions.\r\n * */\n\n\nvar PagingState = PagingStateBase;\nvar pluginDependencies$2 = [{\n name: 'PagingState'\n}];\n\nvar rowsWithHeadersComputed = function rowsWithHeadersComputed(_a) {\n var rows = _a.rows,\n pageSize = _a.pageSize,\n getRowLevelKey = _a.getRowLevelKey;\n return rowsWithPageHeaders(rows, pageSize, getRowLevelKey);\n};\n\nvar totalCountComputed = function totalCountComputed(_a) {\n var rows = _a.rows;\n return rowCount(rows);\n};\n\nvar paginatedRowsComputed = function paginatedRowsComputed(_a) {\n var rows = _a.rows,\n pageSize = _a.pageSize,\n page = _a.currentPage;\n return paginatedRows(rows, pageSize, page);\n};\n\nvar currentPageComputed = function currentPageComputed(_a, _b) {\n var page = _a.currentPage,\n totalCount = _a.totalCount,\n pageSize = _a.pageSize;\n var setCurrentPage = _b.setCurrentPage;\n return currentPage(page, totalCount, pageSize, setCurrentPage);\n}; // eslint-disable-next-line react/prefer-stateless-function\n\n\nvar IntegratedPagingBase = /*#__PURE__*/function (_super) {\n __extends(IntegratedPagingBase, _super);\n\n function IntegratedPagingBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n IntegratedPagingBase.prototype.render = function () {\n return createElement(Plugin, {\n name: \"IntegratedPaging\",\n dependencies: pluginDependencies$2\n }, createElement(Getter, {\n name: \"rows\",\n computed: rowsWithHeadersComputed\n }), createElement(Getter, {\n name: \"totalCount\",\n computed: totalCountComputed\n }), createElement(Getter, {\n name: \"currentPage\",\n computed: currentPageComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: paginatedRowsComputed\n }));\n };\n\n return IntegratedPagingBase;\n}(PureComponent);\n/***\r\n * A plugin that performs built-in data paging. It also changes the current page if the provided\r\n * one cannot be applied due to fewer available pages.\r\n * */\n\n\nvar IntegratedPaging = IntegratedPagingBase;\nvar pluginDependencies$3 = [{\n name: 'PagingState'\n}];\n\nvar CustomPagingBase = /*#__PURE__*/function (_super) {\n __extends(CustomPagingBase, _super);\n\n function CustomPagingBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CustomPagingBase.prototype.render = function () {\n var totalCount = this.props.totalCount;\n return createElement(Plugin, {\n name: \"CustomPaging\",\n dependencies: pluginDependencies$3\n }, createElement(Getter, {\n name: \"totalCount\",\n value: totalCount\n }));\n };\n\n CustomPagingBase.defaultProps = {\n totalCount: 0\n };\n return CustomPagingBase;\n}(PureComponent);\n/** A plugin that allows implementing a custom totalCount calculation logic. */\n\n\nvar CustomPaging = CustomPagingBase;\nvar dependencies = [{\n name: 'SortingState',\n optional: true\n}];\n\nvar columnExtensionValueGetter$2 = function columnExtensionValueGetter$2(columnExtensions, defaultValue) {\n return getColumnExtensionValueGetter(columnExtensions, 'groupingEnabled', defaultValue);\n};\n\nvar GroupingStateBase = /*#__PURE__*/function (_super) {\n __extends(GroupingStateBase, _super);\n\n function GroupingStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n grouping: props.grouping || props.defaultGrouping,\n draftGrouping: null,\n expandedGroups: props.expandedGroups || props.defaultExpandedGroups\n };\n _this.stateHelper = createStateHelper(_this, {\n grouping: function grouping() {\n var onGroupingChange = _this.props.onGroupingChange;\n return onGroupingChange;\n },\n expandedGroups: function expandedGroups() {\n var onExpandedGroupsChange = _this.props.onExpandedGroupsChange;\n return onExpandedGroupsChange;\n }\n });\n _this.changeColumnGrouping = _this.changeColumnGrouping.bind(_this);\n _this.toggleGroupExpanded = _this.stateHelper.applyReducer.bind(_this.stateHelper, toggleExpandedGroups);\n _this.draftColumnGrouping = _this.stateHelper.applyReducer.bind(_this.stateHelper, draftColumnGrouping);\n _this.cancelColumnGroupingDraft = _this.stateHelper.applyReducer.bind(_this.stateHelper, cancelColumnGroupingDraft);\n _this.changeColumnSorting = _this.changeColumnSorting.bind(_this);\n return _this;\n }\n\n GroupingStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.grouping,\n grouping = _a === void 0 ? prevState.grouping : _a,\n _b = nextProps.expandedGroups,\n expandedGroups = _b === void 0 ? prevState.expandedGroups : _b;\n return {\n grouping: grouping,\n expandedGroups: expandedGroups\n };\n };\n\n GroupingStateBase.prototype.changeColumnSorting = function (_a, _b, _c) {\n var sorting = _b.sorting;\n var changeColumnSorting = _c.changeColumnSorting;\n\n var columnName = _a.columnName,\n keepOther = _a.keepOther,\n restParams = __rest(_a, [\"columnName\", \"keepOther\"]);\n\n var grouping = this.state.grouping;\n var groupingIndex = grouping.findIndex(function (columnGrouping) {\n return columnGrouping.columnName === columnName;\n });\n\n if (groupingIndex === -1) {\n changeColumnSorting(_assign({\n columnName: columnName,\n keepOther: keepOther || grouping.map(function (columnGrouping) {\n return columnGrouping.columnName;\n })\n }, restParams));\n return false;\n }\n\n var sortIndex = adjustSortIndex(groupingIndex, grouping, sorting);\n changeColumnSorting(_assign({\n columnName: columnName,\n sortIndex: sortIndex,\n keepOther: true\n }, restParams));\n return false;\n };\n\n GroupingStateBase.prototype.changeColumnGrouping = function (_a, getters, actions) {\n var columnName = _a.columnName,\n groupIndex = _a.groupIndex;\n this.stateHelper.applyReducer(changeColumnGrouping, {\n columnName: columnName,\n groupIndex: groupIndex\n }, function (nextState, state) {\n var grouping = nextState.grouping;\n var prevGrouping = state.grouping;\n var sorting = getters.sorting;\n var changeColumnSorting = actions.changeColumnSorting;\n if (!sorting) return;\n var columnSortingIndex = sorting.findIndex(function (columnSorting) {\n return columnSorting.columnName === columnName;\n });\n var prevGroupingIndex = prevGrouping.findIndex(function (columnGrouping) {\n return columnGrouping.columnName === columnName;\n });\n var groupingIndex = grouping.findIndex(function (columnGrouping) {\n return columnGrouping.columnName === columnName;\n });\n if (columnSortingIndex === -1 || prevGroupingIndex === prevGrouping.length - 1 && groupingIndex === -1) return;\n var sortIndex = adjustSortIndex(groupingIndex === -1 ? grouping.length : groupingIndex, grouping, sorting);\n if (columnSortingIndex === sortIndex) return;\n changeColumnSorting(_assign({\n sortIndex: sortIndex,\n keepOther: true\n }, sorting[columnSortingIndex]));\n });\n };\n\n GroupingStateBase.prototype.render = function () {\n var _a = this.state,\n grouping = _a.grouping,\n draftGrouping = _a.draftGrouping,\n expandedGroups = _a.expandedGroups;\n var _b = this.props,\n columnExtensions = _b.columnExtensions,\n columnGroupingEnabled = _b.columnGroupingEnabled;\n return createElement(Plugin, {\n name: \"GroupingState\",\n dependencies: dependencies\n }, createElement(Getter, {\n name: \"grouping\",\n value: grouping\n }), createElement(Getter, {\n name: \"draftGrouping\",\n value: draftGrouping || grouping\n }), createElement(Getter, {\n name: \"isColumnGroupingEnabled\",\n value: columnExtensionValueGetter$2(columnExtensions, columnGroupingEnabled)\n }), createElement(Action, {\n name: \"changeColumnGrouping\",\n action: this.changeColumnGrouping\n }), createElement(Action, {\n name: \"draftColumnGrouping\",\n action: this.draftColumnGrouping\n }), createElement(Action, {\n name: \"cancelColumnGroupingDraft\",\n action: this.cancelColumnGroupingDraft\n }), createElement(Getter, {\n name: \"expandedGroups\",\n value: expandedGroups\n }), createElement(Action, {\n name: \"toggleGroupExpanded\",\n action: this.toggleGroupExpanded\n }), createElement(Action, {\n name: \"changeColumnSorting\",\n action: this.changeColumnSorting\n }));\n };\n\n GroupingStateBase.defaultProps = {\n defaultGrouping: [],\n defaultExpandedGroups: [],\n columnGroupingEnabled: true\n };\n return GroupingStateBase;\n}(PureComponent);\n/***\r\n * A plugin that manages the grouping state. It lists columns used for grouping and stores\r\n * information about expanded/collapsed groups.\r\n * */\n\n\nvar GroupingState = GroupingStateBase;\nvar pluginDependencies$4 = [{\n name: 'GroupingState'\n}];\n\nvar getCollapsedRowsComputed$1 = function getCollapsedRowsComputed$1(_a) {\n var getCollapsedRows = _a.getCollapsedRows;\n return groupCollapsedRowsGetter(getCollapsedRows);\n};\n\nvar expandedGroupedRowsComputed = function expandedGroupedRowsComputed(_a) {\n var rows = _a.rows,\n grouping = _a.grouping,\n expandedGroups = _a.expandedGroups,\n isExporting = _a.isExporting;\n return expandedGroupRows(rows, grouping, expandedGroups, isExporting);\n};\n\nvar IntegratedGroupingBase = /*#__PURE__*/function (_super) {\n __extends(IntegratedGroupingBase, _super);\n\n function IntegratedGroupingBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n IntegratedGroupingBase.prototype.render = function () {\n var columnExtensions = this.props.columnExtensions;\n\n var getColumnCriteria = function getColumnCriteria(columnName) {\n return getColumnExtension(columnExtensions, columnName).criteria;\n };\n\n var groupedRowsComputed = function groupedRowsComputed(_a) {\n var rows = _a.rows,\n grouping = _a.grouping,\n getCellValue = _a.getCellValue;\n return groupedRows(rows, grouping, getCellValue, getColumnCriteria);\n };\n\n return createElement(Plugin, {\n name: \"IntegratedGrouping\",\n dependencies: pluginDependencies$4\n }, createElement(Getter, {\n name: \"isGroupRow\",\n value: groupRowChecker\n }), createElement(Getter, {\n name: \"getRowLevelKey\",\n value: groupRowLevelKeyGetter\n }), createElement(Getter, {\n name: \"getCollapsedRows\",\n computed: getCollapsedRowsComputed$1\n }), createElement(Getter, {\n name: \"rows\",\n computed: groupedRowsComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: expandedGroupedRowsComputed\n }));\n };\n\n return IntegratedGroupingBase;\n}(PureComponent);\n/* tslint:disable: max-line-length */\n\n/** A plugin that performs built-in grouping and group expanding/collapsing. */\n\n\nvar IntegratedGrouping = IntegratedGroupingBase;\n/* tslint:enable: max-line-length */\n\nvar pluginDependencies$5 = [{\n name: 'GroupingState'\n}];\n\nvar getCollapsedRowsComputed$2 = function getCollapsedRowsComputed$2(_a) {\n var getCollapsedRows = _a.getCollapsedRows;\n return groupCollapsedRowsGetter(getCollapsedRows);\n};\n\nvar expandedGroupedRowsComputed$1 = function expandedGroupedRowsComputed$1(_a) {\n var rows = _a.rows,\n grouping = _a.grouping,\n expandedGroups = _a.expandedGroups,\n isExporting = _a.isExporting;\n return expandedGroupRows(rows, grouping, expandedGroups, isExporting);\n};\n\nvar getRowIdComputed = function getRowIdComputed(_a) {\n var getRowId = _a.getRowId,\n rows = _a.rows;\n return customGroupingRowIdGetter(getRowId, rows);\n};\n\nvar CustomGroupingBase = /*#__PURE__*/function (_super) {\n __extends(CustomGroupingBase, _super);\n\n function CustomGroupingBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CustomGroupingBase.prototype.render = function () {\n var _a = this.props,\n getChildGroups = _a.getChildGroups,\n appliedGrouping = _a.grouping,\n appliedExpandedGroups = _a.expandedGroups;\n\n var groupedRowsComputed = function groupedRowsComputed(_a) {\n var rows = _a.rows,\n grouping = _a.grouping;\n return customGroupedRows(rows, grouping, getChildGroups);\n };\n\n return createElement(Plugin, {\n name: \"CustomGrouping\",\n dependencies: pluginDependencies$5\n }, appliedGrouping && createElement(Getter, {\n name: \"grouping\",\n value: appliedGrouping\n }), appliedExpandedGroups && createElement(Getter, {\n name: \"expandedGroups\",\n value: appliedExpandedGroups\n }), createElement(Getter, {\n name: \"isGroupRow\",\n value: groupRowChecker\n }), createElement(Getter, {\n name: \"getRowLevelKey\",\n value: groupRowLevelKeyGetter\n }), createElement(Getter, {\n name: \"getCollapsedRows\",\n computed: getCollapsedRowsComputed$2\n }), createElement(Getter, {\n name: \"rows\",\n computed: groupedRowsComputed\n }), createElement(Getter, {\n name: \"getRowId\",\n computed: getRowIdComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: expandedGroupedRowsComputed$1\n }));\n };\n\n return CustomGroupingBase;\n}(PureComponent); // tslint:disable-next-line: max-line-length\n\n/** A plugin that converts custom formatted grouped data to a supported format and performs local group expanding/collapsing. */\n\n\nvar CustomGrouping = CustomGroupingBase;\n\nvar SelectionStateBase = /*#__PURE__*/function (_super) {\n __extends(SelectionStateBase, _super);\n\n function SelectionStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n selection: props.selection || props.defaultSelection\n };\n var stateHelper = createStateHelper(_this, {\n selection: function selection() {\n var onSelectionChange = _this.props.onSelectionChange;\n return onSelectionChange;\n }\n });\n _this.toggleSelection = stateHelper.applyFieldReducer.bind(stateHelper, 'selection', toggleSelection);\n return _this;\n }\n\n SelectionStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.selection,\n selection = _a === void 0 ? prevState.selection : _a;\n return {\n selection: selection\n };\n };\n\n SelectionStateBase.prototype.render = function () {\n var selection = this.state.selection;\n return createElement(Plugin, {\n name: \"SelectionState\"\n }, createElement(Getter, {\n name: \"selection\",\n value: selection\n }), createElement(Action, {\n name: \"toggleSelection\",\n action: this.toggleSelection\n }));\n };\n\n SelectionStateBase.defaultProps = {\n defaultSelection: []\n };\n return SelectionStateBase;\n}(PureComponent);\n/** A plugin that manages the selection state. */\n\n\nvar SelectionState = SelectionStateBase;\n\nvar rowsWithAvailableToSelectComputed = function rowsWithAvailableToSelectComputed(_a) {\n var rows = _a.rows,\n getRowId = _a.getRowId,\n isGroupRow = _a.isGroupRow;\n return rowsWithAvailableToSelect(rows, getRowId, isGroupRow);\n};\n\nvar allSelectedComputed = function allSelectedComputed(_a) {\n var rows = _a.rows,\n selection = _a.selection;\n return allSelected(rows, selection);\n};\n\nvar someSelectedComputed = function someSelectedComputed(_a) {\n var rows = _a.rows,\n selection = _a.selection;\n return someSelected(rows, selection);\n};\n\nvar selectAllAvailableComputed = function selectAllAvailableComputed(_a) {\n var availableToSelect = _a.rows.availableToSelect;\n return !!availableToSelect.length;\n};\n\nvar toggleSelectAll = function toggleSelectAll(state, _a, _b) {\n var availableToSelect = _a.rows.availableToSelect;\n var toggleSelection = _b.toggleSelection;\n toggleSelection({\n state: state,\n rowIds: availableToSelect\n });\n};\n\nvar unwrapRowsComputed = function unwrapRowsComputed(_a) {\n var rows = _a.rows;\n return unwrapSelectedRows(rows);\n};\n\nvar pluginDependencies$6 = [{\n name: 'SelectionState'\n}]; // eslint-disable-next-line react/prefer-stateless-function\n\nvar IntegratedSelectionBase = /*#__PURE__*/function (_super) {\n __extends(IntegratedSelectionBase, _super);\n\n function IntegratedSelectionBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n IntegratedSelectionBase.prototype.render = function () {\n return createElement(Plugin, {\n name: \"IntegratedSelection\",\n dependencies: pluginDependencies$6\n }, createElement(Getter, {\n name: \"rows\",\n computed: rowsWithAvailableToSelectComputed\n }), createElement(Getter, {\n name: \"allSelected\",\n computed: allSelectedComputed\n }), createElement(Getter, {\n name: \"someSelected\",\n computed: someSelectedComputed\n }), createElement(Getter, {\n name: \"selectAllAvailable\",\n computed: selectAllAvailableComputed\n }), createElement(Action, {\n name: \"toggleSelectAll\",\n action: toggleSelectAll\n }), createElement(Getter, {\n name: \"rows\",\n computed: unwrapRowsComputed\n }));\n };\n\n return IntegratedSelectionBase;\n}(PureComponent);\n/* tslint:disable: max-line-length */\n\n/** A plugin that performs built-in selection. */\n\n\nvar IntegratedSelection = IntegratedSelectionBase;\n/* tslint:enable: max-line-length */\n\nvar columnExtensionValueGetter$3 = function columnExtensionValueGetter$3(columnExtensions, defaultValue) {\n return getColumnExtensionValueGetter(columnExtensions, 'sortingEnabled', defaultValue);\n};\n\nvar SortingStateBase = /*#__PURE__*/function (_super) {\n __extends(SortingStateBase, _super);\n\n function SortingStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n sorting: props.sorting || props.defaultSorting\n };\n var stateHelper = createStateHelper(_this, {\n sorting: function sorting() {\n var onSortingChange = _this.props.onSortingChange;\n return onSortingChange;\n }\n });\n _this.changeColumnSorting = stateHelper.applyReducer.bind(stateHelper, function (prevState, payload) {\n var _a = _this.props.sorting,\n sorting = _a === void 0 ? prevState.sorting : _a;\n var persistentSortedColumns = getPersistentSortedColumns(sorting, props.columnExtensions);\n var keepOther = calculateKeepOther(prevState.sorting, payload.keepOther, persistentSortedColumns);\n return changeColumnSorting(prevState, _assign(_assign({}, payload), {\n keepOther: keepOther\n }));\n });\n return _this;\n }\n\n SortingStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.sorting,\n sorting = _a === void 0 ? prevState.sorting : _a;\n return {\n sorting: sorting\n };\n };\n\n SortingStateBase.prototype.render = function () {\n var sorting = this.state.sorting;\n var _a = this.props,\n columnExtensions = _a.columnExtensions,\n columnSortingEnabled = _a.columnSortingEnabled;\n return createElement(Plugin, {\n name: \"SortingState\"\n }, createElement(Getter, {\n name: \"sorting\",\n value: sorting\n }), createElement(Getter, {\n name: \"isColumnSortingEnabled\",\n value: columnExtensionValueGetter$3(columnExtensions, columnSortingEnabled)\n }), createElement(Action, {\n name: \"changeColumnSorting\",\n action: this.changeColumnSorting\n }));\n };\n\n SortingStateBase.defaultProps = {\n defaultSorting: [],\n columnSortingEnabled: true\n };\n return SortingStateBase;\n}(PureComponent); // tslint:disable-next-line: max-line-length\n\n/** A plugin that manages the sorting state. It controls the list of columns that participate in sorting. */\n\n\nvar SortingState = SortingStateBase;\nvar pluginDependencies$7 = [{\n name: 'SortingState'\n}];\n\nvar IntegratedSortingBase = /*#__PURE__*/function (_super) {\n __extends(IntegratedSortingBase, _super);\n\n function IntegratedSortingBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n IntegratedSortingBase.prototype.render = function () {\n var columnExtensions = this.props.columnExtensions;\n\n var getColumnCompare = function getColumnCompare(columnName) {\n return getColumnExtension(columnExtensions, columnName).compare;\n };\n\n var rowsComputed = function rowsComputed(_a) {\n var rows = _a.rows,\n sorting = _a.sorting,\n getCellValue = _a.getCellValue,\n isGroupRow = _a.isGroupRow,\n getRowLevelKey = _a.getRowLevelKey;\n return sortedRows(rows, sorting, getCellValue, getColumnCompare, isGroupRow, getRowLevelKey);\n };\n\n return createElement(Plugin, {\n name: \"IntegratedSorting\",\n dependencies: pluginDependencies$7\n }, createElement(Getter, {\n name: \"rows\",\n computed: rowsComputed\n }));\n };\n\n return IntegratedSortingBase;\n}(PureComponent);\n/** A plugin that performs built-in data sorting. */\n\n\nvar IntegratedSorting = IntegratedSortingBase;\n\nvar getTargetColumns = function getTargetColumns(payload, columns) {\n return payload.filter(function (item) {\n return item.type === 'column';\n }).map(function (item) {\n return columns.find(function (column) {\n return column.name === item.columnName;\n });\n });\n}; // tslint:disable-next-line: max-line-length\n\n\nvar DragDropProviderBase = /*#__PURE__*/function (_super) {\n __extends(DragDropProviderBase, _super);\n\n function DragDropProviderBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n payload: null,\n clientOffset: null\n };\n\n _this.change = function (_a) {\n var payload = _a.payload,\n clientOffset = _a.clientOffset;\n return _this.setState({\n payload: payload,\n clientOffset: clientOffset\n });\n };\n\n return _this;\n }\n\n DragDropProviderBase.prototype.componentDidMount = function () {\n this.bodyRef = document.body;\n };\n\n DragDropProviderBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n Container = _a.containerComponent,\n Column = _a.columnComponent;\n var _b = this.state,\n payload = _b.payload,\n clientOffset = _b.clientOffset;\n return createElement(Plugin, {\n name: \"DragDropProvider\"\n }, createElement(Getter, {\n name: \"draggingEnabled\",\n value: true\n }), createElement(Template, {\n name: \"root\"\n }, createElement(DragDropProvider$1, {\n onChange: this.change\n }, createElement(TemplatePlaceholder, null)), payload && createElement(TemplateConnector, null, function (_a) {\n var columns = _a.columns;\n return createPortal(createElement(Container, {\n clientOffset: clientOffset\n }, getTargetColumns(payload, columns).map(function (column) {\n return createElement(Column, {\n key: column.name,\n column: column\n });\n })), _this.bodyRef);\n })));\n };\n\n DragDropProviderBase.components = {\n containerComponent: 'Container',\n columnComponent: 'Column'\n };\n return DragDropProviderBase;\n}(PureComponent); // tslint:disable-next-line: max-line-length\n\n/** A plugin that implements the drag-and-drop functionality and visualizes columns that are being dragged. */\n\n\nvar DragDropProvider = DragDropProviderBase;\nvar pluginDependencies$8 = [{\n name: 'Table'\n}, {\n name: 'DragDropProvider',\n optional: true\n}];\n\nvar tableHeaderRowsComputed = function tableHeaderRowsComputed(_a) {\n var tableHeaderRows = _a.tableHeaderRows;\n return tableHeaderRowsWithReordering(tableHeaderRows);\n}; // tslint:disable-next-line: max-line-length\n\n\nvar TableColumnReorderingRaw = /*#__PURE__*/function (_super) {\n __extends(TableColumnReorderingRaw, _super);\n\n function TableColumnReorderingRaw(props) {\n var _this = _super.call(this, props) || this;\n\n _this.cellDimensionGetters = {};\n _this.cellDimensions = [];\n _this.state = {\n order: props.defaultOrder,\n sourceColumnIndex: -1,\n targetColumnIndex: -1\n };\n _this.onOver = _this.handleOver.bind(_this);\n _this.onLeave = _this.handleLeave.bind(_this);\n _this.onDrop = _this.handleDrop.bind(_this);\n return _this;\n }\n\n TableColumnReorderingRaw.prototype.getState = function () {\n var orderState = this.state.order;\n var _a = this.props.order,\n order = _a === void 0 ? orderState : _a;\n return _assign(_assign({}, this.state), {\n order: order\n });\n };\n\n TableColumnReorderingRaw.prototype.getDraftOrder = function () {\n var _a = this.getState(),\n order = _a.order,\n sourceColumnIndex = _a.sourceColumnIndex,\n targetColumnIndex = _a.targetColumnIndex;\n\n return draftOrder(order, sourceColumnIndex, targetColumnIndex);\n };\n\n TableColumnReorderingRaw.prototype.getAvailableColumns = function () {\n var _this = this;\n\n return this.getDraftOrder().filter(function (columnName) {\n return !!_this.cellDimensionGetters[columnName];\n });\n };\n\n TableColumnReorderingRaw.prototype.cacheCellDimensions = function () {\n var _this = this;\n\n this.cellDimensions = this.cellDimensions && this.cellDimensions.length ? this.cellDimensions : this.getAvailableColumns().map(function (columnName) {\n return _this.cellDimensionGetters[columnName]();\n });\n };\n\n TableColumnReorderingRaw.prototype.resetCellDimensions = function () {\n this.cellDimensions = [];\n };\n\n TableColumnReorderingRaw.prototype.ensureCellDimensionGetters = function (tableColumns) {\n var _this = this;\n\n Object.keys(this.cellDimensionGetters).forEach(function (columnName) {\n var columnIndex = tableColumns.findIndex(function (_a) {\n var type = _a.type,\n column = _a.column;\n return type === TABLE_DATA_TYPE && column.name === columnName;\n });\n\n if (columnIndex === -1) {\n delete _this.cellDimensionGetters[columnName];\n }\n });\n }; // tslint:disable-next-line: max-line-length\n\n\n TableColumnReorderingRaw.prototype.storeCellDimensionsGetter = function (tableColumn, getter, tableColumns) {\n if (tableColumn.type === TABLE_DATA_TYPE) {\n this.cellDimensionGetters[tableColumn.column.name] = getter;\n }\n\n this.ensureCellDimensionGetters(tableColumns);\n };\n\n TableColumnReorderingRaw.prototype.handleOver = function (_a) {\n var payload = _a.payload,\n x = _a.clientOffset.x;\n var sourceColumnName = payload[0].columnName;\n var availableColumns = this.getAvailableColumns();\n var relativeSourceColumnIndex = availableColumns.indexOf(sourceColumnName);\n if (relativeSourceColumnIndex === -1) return;\n this.cacheCellDimensions();\n var cellDimensions = this.cellDimensions;\n var relativeTargetIndex = getTableTargetColumnIndex(cellDimensions, x);\n if (relativeTargetIndex === -1) return;\n\n var _b = this.getState(),\n prevSourceColumnIndex = _b.sourceColumnIndex,\n prevTargetColumnIndex = _b.targetColumnIndex;\n\n var draftOrder = this.getDraftOrder();\n var targetColumnIndex = draftOrder.indexOf(availableColumns[relativeTargetIndex]);\n if (targetColumnIndex === prevTargetColumnIndex) return;\n var sourceColumnIndex = prevSourceColumnIndex === -1 ? draftOrder.indexOf(sourceColumnName) : prevSourceColumnIndex;\n this.setState({\n sourceColumnIndex: sourceColumnIndex,\n targetColumnIndex: targetColumnIndex\n });\n };\n\n TableColumnReorderingRaw.prototype.handleLeave = function () {\n this.setState({\n sourceColumnIndex: -1,\n targetColumnIndex: -1\n });\n this.resetCellDimensions();\n };\n\n TableColumnReorderingRaw.prototype.handleDrop = function () {\n var _a = this.getState(),\n sourceColumnIndex = _a.sourceColumnIndex,\n targetColumnIndex = _a.targetColumnIndex,\n order = _a.order;\n\n var onOrderChange = this.props.onOrderChange;\n if (sourceColumnIndex === -1 && targetColumnIndex === -1) return;\n var nextOrder = changeColumnOrder(order, {\n sourceColumnName: order[sourceColumnIndex],\n targetColumnName: order[targetColumnIndex]\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 TableColumnReorderingRaw.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n Container = _a.tableContainerComponent,\n Row = _a.rowComponent,\n Cell = _a.cellComponent;\n this.cellDimensionGetters = {};\n return createElement(Plugin, {\n name: \"TableColumnReordering\",\n dependencies: pluginDependencies$8\n }, createElement(OrderedTableColumns, {\n order: this.getDraftOrder()\n }), createElement(Getter, {\n name: \"tableHeaderRows\",\n computed: tableHeaderRowsComputed\n }), createElement(Template, {\n name: \"table\"\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var draggingEnabled = _a.draggingEnabled;\n return createElement(Container, _assign({}, params, {\n onOver: _this.onOver,\n onLeave: _this.onLeave,\n onDrop: _this.onDrop,\n draggingEnabled: draggingEnabled\n }), createElement(TemplatePlaceholder, null));\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return tableRow.type === TABLE_REORDERING_TYPE;\n }\n }, function (params) {\n return createElement(Row, _assign({}, params));\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return tableRow.type === TABLE_REORDERING_TYPE;\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var tableColumns = _a.tableColumns;\n return createElement(Cell, _assign({}, params, {\n getCellDimensions: function getCellDimensions(getter) {\n return _this.storeCellDimensionsGetter(params.tableColumn, getter, tableColumns);\n }\n }));\n });\n }));\n };\n\n TableColumnReorderingRaw.defaultProps = {\n defaultOrder: []\n };\n TableColumnReorderingRaw.components = {\n tableContainerComponent: 'TableContainer',\n rowComponent: 'Row',\n cellComponent: 'Cell'\n };\n return TableColumnReorderingRaw;\n}(PureComponent);\n\nvar TableContainer = function TableContainer(_a) {\n var onOver = _a.onOver,\n onLeave = _a.onLeave,\n onDrop = _a.onDrop,\n children = _a.children,\n draggingEnabled = _a.draggingEnabled;\n return draggingEnabled ? createElement(DropTarget, {\n onOver: onOver,\n onLeave: onLeave,\n onDrop: onDrop\n }, children) : children;\n};\n/** A plugin that manages the displayed columns' order. */\n\n\nvar TableColumnReordering = withComponents({\n TableContainer: TableContainer\n})(TableColumnReorderingRaw);\n\nvar RowPlaceholder = function RowPlaceholder(props) {\n return createElement(TemplatePlaceholder, {\n name: \"tableRow\",\n params: props\n });\n};\n\nvar CellPlaceholder = function CellPlaceholder(props) {\n return createElement(TemplatePlaceholder, {\n name: \"tableCell\",\n params: props\n });\n};\n\nvar tableHeaderRows = [];\n\nvar tableBodyRowsComputed = function tableBodyRowsComputed(_a) {\n var rows = _a.rows,\n getRowId = _a.getRowId,\n isDataLoading = _a.isDataLoading;\n return tableRowsWithDataRows(rows, getRowId, isDataLoading);\n};\n\nvar tableFooterRows = [];\nvar defaultMessages = {\n noData: 'No data'\n};\n\nvar TableBase = /*#__PURE__*/function (_super) {\n __extends(TableBase, _super);\n\n function TableBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableBase.prototype.render = function () {\n var _a = this.props,\n Layout = _a.layoutComponent,\n Cell = _a.cellComponent,\n Row = _a.rowComponent,\n NoDataRow = _a.noDataRowComponent,\n NoDataCell = _a.noDataCellComponent,\n StubRow = _a.stubRowComponent,\n StubCell = _a.stubCellComponent,\n StubHeaderCell = _a.stubHeaderCellComponent,\n columnExtensions = _a.columnExtensions,\n messages = _a.messages,\n containerComponent = _a.containerComponent,\n tableComponent = _a.tableComponent,\n headComponent = _a.headComponent,\n bodyComponent = _a.bodyComponent,\n footerComponent = _a.footerComponent;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages), messages));\n return createElement(Plugin, {\n name: \"Table\"\n }, createElement(Getter, {\n name: \"tableHeaderRows\",\n value: tableHeaderRows\n }), createElement(Getter, {\n name: \"tableBodyRows\",\n computed: tableBodyRowsComputed\n }), createElement(Getter, {\n name: \"tableFooterRows\",\n value: tableFooterRows\n }), createElement(TableColumnsWithDataRowsGetter, {\n columnExtensions: columnExtensions\n }), createElement(Getter, {\n name: \"getTableCellColSpan\",\n value: tableCellColSpanGetter\n }), createElement(Template, {\n name: \"body\"\n }, createElement(TemplatePlaceholder, {\n name: \"table\"\n })), createElement(Template, {\n name: \"table\"\n }, createElement(TemplateConnector, null, function (_a) {\n var headerRows = _a.tableHeaderRows,\n bodyRows = _a.tableBodyRows,\n footerRows = _a.tableFooterRows,\n columns = _a.tableColumns,\n getTableCellColSpan = _a.getTableCellColSpan;\n return createElement(TemplatePlaceholder, {\n name: \"tableLayout\",\n params: {\n tableComponent: tableComponent,\n headComponent: headComponent,\n bodyComponent: bodyComponent,\n footerComponent: footerComponent,\n containerComponent: containerComponent,\n headerRows: headerRows,\n bodyRows: bodyRows,\n footerRows: footerRows,\n columns: columns,\n rowComponent: RowPlaceholder,\n cellComponent: CellPlaceholder,\n getCellColSpan: getTableCellColSpan\n }\n });\n })), createElement(Template, {\n name: \"tableLayout\"\n }, function (params) {\n return createElement(Layout, _assign({}, params));\n }), createElement(Template, {\n name: \"tableCell\"\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var headerRows = _a.tableHeaderRows;\n return isHeaderStubTableCell(params.tableRow, headerRows) ? createElement(StubHeaderCell, _assign({}, params)) : createElement(StubCell, _assign({}, params));\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isDataTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var getCellValue = _a.getCellValue;\n var columnName = params.tableColumn.column.name;\n var value = getCellValue(params.tableRow.row, columnName);\n return createElement(TemplatePlaceholder, {\n name: \"valueFormatter\",\n params: {\n value: value,\n row: params.tableRow.row,\n column: params.tableColumn.column\n }\n }, function (content) {\n return createElement(Cell, _assign({}, params, {\n row: params.tableRow.row,\n column: params.tableColumn.column,\n value: value\n }), content);\n });\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isNoDataTableRow(tableRow);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var tableColumns = _a.tableColumns;\n\n if (isNoDataTableCell(params.tableColumn, tableColumns)) {\n return createElement(NoDataCell, _assign({}, params, {\n getMessage: getMessage\n }));\n }\n\n return null;\n });\n }), createElement(Template, {\n name: \"tableRow\"\n }, function (params) {\n return createElement(StubRow, _assign({}, params));\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isDataTableRow(tableRow);\n }\n }, function (params) {\n return createElement(Row, _assign({}, params, {\n row: params.tableRow.row\n }));\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isNoDataTableRow(tableRow);\n }\n }, function (params) {\n return createElement(NoDataRow, _assign({}, params));\n }));\n };\n\n TableBase.COLUMN_TYPE = TABLE_DATA_TYPE;\n TableBase.ROW_TYPE = TABLE_DATA_TYPE;\n TableBase.NODATA_ROW_TYPE = TABLE_NODATA_TYPE;\n TableBase.defaultProps = {\n messages: {}\n };\n TableBase.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 return TableBase;\n}(PureComponent);\n/***\r\n * A plugin that renders Grid data as a table. This plugin enables you to customize\r\n * table rows and columns, and contains the Table Row and Table Cell components\r\n * that can be extended by other plugins\r\n * */\n\n\nvar Table = TableBase;\n\nvar TableSelectionBase = /*#__PURE__*/function (_super) {\n __extends(TableSelectionBase, _super);\n\n function TableSelectionBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableSelectionBase.prototype.render = function () {\n var _a = this.props,\n highlightRow = _a.highlightRow,\n selectByRowClick = _a.selectByRowClick,\n showSelectionColumn = _a.showSelectionColumn,\n showSelectAll = _a.showSelectAll,\n HeaderCell = _a.headerCellComponent,\n Cell = _a.cellComponent,\n Row = _a.rowComponent,\n selectionColumnWidth = _a.selectionColumnWidth;\n\n var tableColumnsComputed = function tableColumnsComputed(_a) {\n var tableColumns = _a.tableColumns;\n return tableColumnsWithSelection(tableColumns, selectionColumnWidth);\n };\n\n return createElement(Plugin, {\n name: \"TableSelection\",\n dependencies: [{\n name: 'Table'\n }, {\n name: 'SelectionState'\n }, {\n name: 'IntegratedSelection',\n optional: !showSelectAll\n }]\n }, showSelectionColumn && createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }), highlightRow && createElement(Getter, {\n name: \"highlightSelectedRow\",\n value: true\n }), showSelectionColumn && showSelectAll && createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isSelectAllTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var selectAllAvailable = _a.selectAllAvailable,\n allSelected = _a.allSelected,\n someSelected = _a.someSelected;\n var toggleSelectAll = _b.toggleSelectAll;\n return createElement(HeaderCell, _assign({}, params, {\n disabled: !selectAllAvailable,\n allSelected: allSelected,\n someSelected: someSelected,\n onToggle: function onToggle(select) {\n return toggleSelectAll(select);\n }\n }));\n });\n }), showSelectionColumn && createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isSelectTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var selection = _a.selection;\n var toggleSelection = _b.toggleSelection;\n return createElement(Cell, _assign({}, params, {\n row: params.tableRow.row,\n selected: selection.indexOf(params.tableRow.rowId) !== -1,\n onToggle: function onToggle() {\n return toggleSelection({\n rowIds: [params.tableRow.rowId]\n });\n }\n }));\n });\n }), (highlightRow || selectByRowClick) && createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isDataTableRow(tableRow);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var selection = _a.selection;\n var toggleSelection = _b.toggleSelection;\n return createElement(Row, _assign({}, params, {\n selectByRowClick: selectByRowClick,\n highlighted: isRowHighlighted(highlightRow, selection, params.tableRow),\n onToggle: function onToggle() {\n return toggleSelection({\n rowIds: [params.tableRow.rowId]\n });\n }\n }));\n });\n }));\n };\n\n TableSelectionBase.defaultProps = {\n highlightRow: false,\n selectByRowClick: false,\n showSelectAll: false,\n showSelectionColumn: true\n };\n TableSelectionBase.components = {\n rowComponent: 'Row',\n cellComponent: 'Cell',\n headerCellComponent: 'HeaderCell'\n };\n TableSelectionBase.COLUMN_TYPE = TABLE_SELECT_TYPE;\n return TableSelectionBase;\n}(PureComponent);\n/***\r\n * A plugin that visualizes table rows' selection state by rendering selection checkboxes\r\n * and highlighting the selected rows.\r\n * */\n\n\nvar TableSelection = TableSelectionBase; // tslint:disable-next-line: max-line-length\n\nvar RowDetailStateBase = /*#__PURE__*/function (_super) {\n __extends(RowDetailStateBase, _super);\n\n function RowDetailStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n expandedRowIds: props.expandedRowIds || props.defaultExpandedRowIds\n };\n var stateHelper = createStateHelper(_this, {\n expandedRowIds: function expandedRowIds() {\n var onExpandedRowIdsChange = _this.props.onExpandedRowIdsChange;\n return onExpandedRowIdsChange;\n }\n });\n _this.toggleDetailRowExpanded = stateHelper.applyFieldReducer.bind(stateHelper, 'expandedRowIds', toggleDetailRowExpanded);\n return _this;\n }\n\n RowDetailStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.expandedRowIds,\n expandedRowIds = _a === void 0 ? prevState.expandedRowIds : _a;\n return {\n expandedRowIds: expandedRowIds\n };\n };\n\n RowDetailStateBase.prototype.render = function () {\n var expandedRowIds = this.state.expandedRowIds;\n return createElement(Plugin, {\n name: \"RowDetailState\"\n }, createElement(Getter, {\n name: \"expandedDetailRowIds\",\n value: expandedRowIds\n }), createElement(Action, {\n name: \"toggleDetailRowExpanded\",\n action: this.toggleDetailRowExpanded\n }));\n };\n\n RowDetailStateBase.defaultProps = {\n defaultExpandedRowIds: []\n };\n return RowDetailStateBase;\n}(PureComponent);\n/** A plugin that manages the expanded state for table row details. */\n\n\nvar RowDetailState = RowDetailStateBase;\n\nvar getCellColSpanComputed = function getCellColSpanComputed(_a) {\n var getTableCellColSpan = _a.getTableCellColSpan;\n return tableDetailCellColSpanGetter(getTableCellColSpan);\n};\n\nvar pluginDependencies$9 = [{\n name: 'RowDetailState'\n}, {\n name: 'Table'\n}];\n\nvar TableRowDetailBase = /*#__PURE__*/function (_super) {\n __extends(TableRowDetailBase, _super);\n\n function TableRowDetailBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableRowDetailBase.prototype.render = function () {\n var _a = this.props,\n rowHeight = _a.rowHeight,\n Content = _a.contentComponent,\n ToggleCell = _a.toggleCellComponent,\n Cell = _a.cellComponent,\n Row = _a.rowComponent,\n toggleColumnWidth = _a.toggleColumnWidth;\n\n var tableColumnsComputed = function tableColumnsComputed(_a) {\n var tableColumns = _a.tableColumns;\n return tableColumnsWithDetail(tableColumns, toggleColumnWidth);\n };\n\n var tableBodyRowsComputed = function tableBodyRowsComputed(_a) {\n var tableBodyRows = _a.tableBodyRows,\n expandedDetailRowIds = _a.expandedDetailRowIds;\n return tableRowsWithExpandedDetail(tableBodyRows, expandedDetailRowIds, rowHeight);\n };\n\n return createElement(Plugin, {\n name: \"TableRowDetail\",\n dependencies: pluginDependencies$9\n }, createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }), createElement(Getter, {\n name: \"tableBodyRows\",\n computed: tableBodyRowsComputed\n }), createElement(Getter, {\n name: \"getTableCellColSpan\",\n computed: getCellColSpanComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isDetailToggleTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var expandedDetailRowIds = _a.expandedDetailRowIds;\n var toggleDetailRowExpanded = _b.toggleDetailRowExpanded;\n return createElement(ToggleCell, _assign({}, params, {\n row: params.tableRow.row,\n expanded: isDetailRowExpanded(expandedDetailRowIds, params.tableRow.rowId),\n onToggle: function onToggle() {\n return toggleDetailRowExpanded({\n rowId: params.tableRow.rowId\n });\n }\n }));\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isDetailTableRow(tableRow);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var tableColumns = _a.tableColumns;\n\n if (isDetailTableCell(params.tableColumn, tableColumns)) {\n return createElement(Cell, _assign({}, params, {\n row: params.tableRow.row\n }), Content && createElement(Content, {\n row: params.tableRow.row\n }));\n }\n\n return null;\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isDetailTableRow(tableRow);\n }\n }, function (params) {\n return createElement(Row, _assign({}, params, {\n row: params.tableRow.row\n }));\n }));\n };\n\n TableRowDetailBase.ROW_TYPE = TABLE_DETAIL_TYPE;\n TableRowDetailBase.COLUMN_TYPE = TABLE_DETAIL_TYPE;\n TableRowDetailBase.defaultProps = {\n contentComponent: function contentComponent() {\n return null;\n }\n };\n TableRowDetailBase.components = {\n rowComponent: 'Row',\n cellComponent: 'Cell',\n toggleCellComponent: 'ToggleCell'\n };\n return TableRowDetailBase;\n}(PureComponent);\n/** A plugin that renders detail rows. */\n\n\nvar TableRowDetail = TableRowDetailBase;\nvar defaultSummaryMessages = {\n sum: 'Sum',\n min: 'Min',\n max: 'Max',\n avg: 'Avg',\n count: 'Count'\n};\n\nvar TableSummaryContent = function TableSummaryContent(_a) {\n var column = _a.column,\n columnSummaries = _a.columnSummaries,\n formatlessSummaryTypes = _a.formatlessSummaryTypes,\n Item = _a.itemComponent,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultSummaryMessages), messages));\n\n var SummaryItem = function SummaryItem(_a) {\n var summary = _a.summary,\n children = _a.children;\n return createElement(Item, {\n getMessage: getMessage,\n type: summary.type,\n value: summary.value\n }, children || String(summary.value));\n };\n\n var isFormatlessSummary = function isFormatlessSummary(summary) {\n return summary.value === null || formatlessSummaryTypes.includes(summary.type) || defaultFormatlessSummaries.includes(summary.type);\n };\n\n return createElement(Fragment, null, columnSummaries.map(function (summary) {\n if (isFormatlessSummary(summary)) {\n return createElement(SummaryItem, {\n key: summary.type,\n summary: summary\n });\n }\n\n return createElement(TemplatePlaceholder, {\n key: summary.type,\n name: \"valueFormatter\",\n params: {\n column: column,\n value: summary.value\n }\n }, function (content) {\n return createElement(SummaryItem, {\n summary: summary\n }, content);\n });\n }));\n};\n\nvar getInlineSummaryComponent = function getInlineSummaryComponent(column, summary, formatlessSummaries) {\n return function () {\n return summary.value === null || formatlessSummaries.includes(summary.type) ? createElement(Fragment, null, summary.value) : createElement(TemplatePlaceholder, {\n key: summary.type,\n name: \"valueFormatter\",\n params: {\n column: column,\n value: summary.value\n }\n }, function (content) {\n return content || summary.value;\n });\n };\n};\n\nvar flattenGroupInlineSummaries = function flattenGroupInlineSummaries(columns, tableRow, groupSummaryItems, groupSummaryValues, formatlessSummaries) {\n return getGroupInlineSummaries(groupSummaryItems, columns, groupSummaryValues[tableRow.row.compoundKey]).map(function (colSummaries) {\n return __spread(colSummaries.summaries.map(function (summary) {\n return _assign(_assign({}, summary), {\n columnTitle: colSummaries.column.title,\n messageKey: summary.type + \"Of\",\n component: getInlineSummaryComponent(colSummaries.column, summary, formatlessSummaries)\n });\n }));\n }).reduce(function (acc, summaries) {\n return acc.concat(summaries);\n }, []);\n};\n\nvar pluginDependencies$a = [{\n name: 'GroupingState'\n}, {\n name: 'Table'\n}, {\n name: 'DataTypeProvider',\n optional: true\n}, {\n name: 'SummaryState',\n optional: true\n}, {\n name: 'CustomSummary',\n optional: true\n}, {\n name: 'IntegratedSummary',\n optional: true\n}, {\n name: 'Table'\n}, {\n name: 'DataTypeProvider',\n optional: true\n}, {\n name: 'TableSelection',\n optional: true\n}];\nvar side = 'left';\n/** @internal */\n\nvar defaultMessages$1 = {\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\nvar tableBodyRowsComputed$1 = function tableBodyRowsComputed$1(_a) {\n var tableBodyRows = _a.tableBodyRows,\n isGroupRow = _a.isGroupRow;\n return tableRowsWithGrouping(tableBodyRows, isGroupRow);\n};\n\nvar getCellColSpanComputed$1 = function getCellColSpanComputed$1(_a) {\n var getTableCellColSpan = _a.getTableCellColSpan,\n groupSummaryItems = _a.groupSummaryItems,\n viewport = _a.viewport;\n var firstVisibleColumnIndex = viewport === null || viewport === void 0 ? void 0 : viewport.columns[0][0];\n return tableGroupCellColSpanGetter(getTableCellColSpan, groupSummaryItems, firstVisibleColumnIndex);\n};\n\nvar TableGroupRowBase = /*#__PURE__*/function (_super) {\n __extends(TableGroupRowBase, _super);\n\n function TableGroupRowBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableGroupRowBase.prototype.render = function () {\n var _a = this.props,\n GroupCell = _a.cellComponent,\n Content = _a.contentComponent,\n Icon = _a.iconComponent,\n GroupRow = _a.rowComponent,\n Container = _a.containerComponent,\n GroupIndentCell = _a.indentCellComponent,\n InlineSummary = _a.inlineSummaryComponent,\n InlineSummaryItem = _a.inlineSummaryItemComponent,\n SummaryCell = _a.summaryCellComponent,\n SummaryItem = _a.summaryItemComponent,\n StubCell = _a.stubCellComponent,\n indentColumnWidth = _a.indentColumnWidth,\n contentCellPadding = _a.contentCellPadding,\n showColumnsWhenGrouped = _a.showColumnsWhenGrouped,\n columnExtensions = _a.columnExtensions,\n messages = _a.messages,\n formatlessSummaryTypes = _a.formatlessSummaryTypes;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$1), messages));\n return createElement(Plugin, {\n name: \"TableGroupRow\",\n dependencies: pluginDependencies$a\n }, createElement(TableColumnsWithGrouping, {\n columnExtensions: columnExtensions,\n showColumnsWhenGrouped: showColumnsWhenGrouped,\n indentColumnWidth: indentColumnWidth\n }), createElement(Getter, {\n name: \"tableBodyRows\",\n computed: tableBodyRowsComputed$1\n }), createElement(Getter, {\n name: \"getTableCellColSpan\",\n computed: getCellColSpanComputed$1\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return isGroupTableRow(tableRow);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var grouping = _a.grouping,\n expandedGroups = _a.expandedGroups,\n groupSummaryItems = _a.groupSummaryItems,\n groupSummaryValues = _a.groupSummaryValues,\n columns = _a.columns;\n var toggleGroupExpanded = _b.toggleGroupExpanded;\n\n if (isGroupTableCell(params.tableRow, params.tableColumn)) {\n var formatlessSummaries = defaultFormatlessSummaries.concat(formatlessSummaryTypes);\n var inlineSummaries_1 = groupSummaryItems ? flattenGroupInlineSummaries(columns, params.tableRow, groupSummaryItems, groupSummaryValues, formatlessSummaries) : [];\n var cellIndent = calculateGroupCellIndent(params.tableColumn, grouping, indentColumnWidth);\n var contentIndent_1 = \"calc(\" + cellIndent + \"px + \" + contentCellPadding + \")\";\n return createElement(TemplatePlaceholder, {\n name: \"valueFormatter\",\n params: {\n column: params.tableColumn.column,\n value: params.tableRow.row.value\n }\n }, function (content) {\n return createElement(GroupCell, _assign({}, params, {\n contentComponent: Content,\n iconComponent: Icon,\n containerComponent: Container,\n row: params.tableRow.row,\n column: params.tableColumn.column,\n expanded: expandedGroups.indexOf(params.tableRow.row.compoundKey) !== -1,\n onToggle: function onToggle() {\n return toggleGroupExpanded({\n groupKey: params.tableRow.row.compoundKey\n });\n },\n inlineSummaries: inlineSummaries_1,\n inlineSummaryComponent: InlineSummary,\n inlineSummaryItemComponent: InlineSummaryItem,\n getMessage: getMessage,\n position: contentIndent_1,\n side: side\n }), content);\n });\n }\n\n if (isGroupIndentTableCell(params.tableRow, params.tableColumn, grouping)) {\n var fixedProps = {\n side: side,\n position: calculateGroupCellIndent(params.tableColumn, grouping, indentColumnWidth)\n };\n\n if (GroupIndentCell) {\n return createElement(GroupIndentCell, _assign({}, params, fixedProps, {\n row: params.tableRow.row,\n column: params.tableColumn.column\n }));\n }\n\n return createElement(TemplatePlaceholder, {\n params: fixedProps\n });\n }\n\n if (isGroupIndentStubTableCell(params.tableRow, params.tableColumn, grouping)) {\n return createElement(TemplatePlaceholder, {\n params: params\n });\n }\n\n return null;\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isGroupRowOrdinaryCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var groupSummaryItems = _a.groupSummaryItems,\n groupSummaryValues = _a.groupSummaryValues,\n grouping = _a.grouping,\n tableColumns = _a.tableColumns;\n var toggleGroupExpanded = _b.toggleGroupExpanded;\n var tableColumn = params.tableColumn,\n tableRow = params.tableRow;\n\n var onToggle = function onToggle() {\n return toggleGroupExpanded({\n groupKey: tableRow.row.compoundKey\n });\n };\n\n if (isRowSummaryCell(tableRow, tableColumn, grouping, groupSummaryItems)) {\n var columnSummaries = getColumnSummaries(groupSummaryItems, tableColumn.column.name, groupSummaryValues[tableRow.row.compoundKey], function (summaryItem) {\n return !summaryItem.showInGroupFooter && summaryItem.alignByColumn;\n });\n return createElement(SummaryCell, _assign({}, params, {\n row: params.tableRow.row,\n column: params.tableColumn.column,\n onToggle: onToggle\n }), createElement(TableSummaryContent, {\n column: tableColumn.column,\n columnSummaries: columnSummaries,\n formatlessSummaryTypes: formatlessSummaryTypes,\n itemComponent: SummaryItem,\n messages: messages\n }));\n } // NOTE: ensure that right-aligned summary will fit into a column\n\n\n if (isPreviousCellContainSummary(tableRow, tableColumn, tableColumns, grouping, groupSummaryItems) || TABLE_FLEX_TYPE === tableColumn.type) {\n return createElement(StubCell, _assign({}, params, {\n onToggle: onToggle\n }));\n }\n\n return createElement(TemplatePlaceholder, null);\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return isGroupTableRow(tableRow);\n }\n }, function (params) {\n return createElement(GroupRow, _assign({}, params, {\n row: params.tableRow.row\n }));\n }));\n };\n\n TableGroupRowBase.ROW_TYPE = TABLE_GROUP_TYPE;\n TableGroupRowBase.COLUMN_TYPE = TABLE_GROUP_TYPE;\n TableGroupRowBase.defaultProps = {\n showColumnsWhenGrouped: false,\n formatlessSummaryTypes: []\n };\n TableGroupRowBase.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 return TableGroupRowBase;\n}(PureComponent);\n/** A plugin that renders group rows and enables them to expand and collapse. */\n\n\nvar TableGroupRow = TableGroupRowBase;\n\nvar tableHeaderRowsComputed$1 = function tableHeaderRowsComputed$1(_a) {\n var tableHeaderRows = _a.tableHeaderRows;\n return tableRowsWithHeading(tableHeaderRows || []);\n};\n\nvar TableHeaderRowBase = /*#__PURE__*/function (_super) {\n __extends(TableHeaderRowBase, _super);\n\n function TableHeaderRowBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableHeaderRowBase.prototype.render = function () {\n var _a = this.props,\n showSortingControls = _a.showSortingControls,\n showGroupingControls = _a.showGroupingControls,\n HeaderCell = _a.cellComponent,\n HeaderRow = _a.rowComponent,\n Content = _a.contentComponent,\n SortLabel = _a.sortLabelComponent,\n GroupButton = _a.groupButtonComponent,\n Title = _a.titleComponent,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(messages);\n return createElement(Plugin, {\n name: \"TableHeaderRow\",\n dependencies: [{\n name: 'Table'\n }, {\n name: 'SortingState',\n optional: !showSortingControls\n }, {\n name: 'GroupingState',\n optional: !showGroupingControls\n }, {\n name: 'DragDropProvider',\n optional: true\n }, {\n name: 'TableColumnResizing',\n optional: true\n }]\n }, createElement(Getter, {\n name: \"tableHeaderRows\",\n computed: tableHeaderRowsComputed$1\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isHeadingTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var sorting = _a.sorting,\n tableColumns = _a.tableColumns,\n draggingEnabled = _a.draggingEnabled,\n tableColumnResizingEnabled = _a.tableColumnResizingEnabled,\n isColumnSortingEnabled = _a.isColumnSortingEnabled,\n isColumnGroupingEnabled = _a.isColumnGroupingEnabled,\n columnResizingMode = _a.columnResizingMode;\n var changeColumnSorting = _b.changeColumnSorting,\n changeColumnGrouping = _b.changeColumnGrouping,\n changeTableColumnWidth = _b.changeTableColumnWidth,\n draftTableColumnWidth = _b.draftTableColumnWidth,\n cancelTableColumnWidthDraft = _b.cancelTableColumnWidthDraft,\n _c = _b.storeWidthGetters,\n storeWidthGetters = _c === void 0 ? function () {} : _c;\n var _d = params.tableColumn.column,\n columnName = _d.name,\n columnTitle = _d.title;\n var atLeastOneDataColumn = tableColumns.filter(function (_a) {\n var type = _a.type;\n return type === TABLE_DATA_TYPE;\n }).length > 1;\n var sortingEnabled = isColumnSortingEnabled && isColumnSortingEnabled(columnName);\n var groupingEnabled = isColumnGroupingEnabled && isColumnGroupingEnabled(columnName) && atLeastOneDataColumn;\n var nextColumnName = getNextColumnName(tableColumns, columnName);\n return createElement(HeaderCell, _assign({}, params, {\n column: params.tableColumn.column,\n draggingEnabled: draggingEnabled && atLeastOneDataColumn,\n resizingEnabled: tableColumnResizingEnabled && (!!nextColumnName || columnResizingMode === 'widget'),\n onWidthChange: function onWidthChange(_a) {\n var shift = _a.shift;\n return changeTableColumnWidth({\n columnName: columnName,\n nextColumnName: nextColumnName,\n shift: shift\n });\n },\n onWidthDraft: function onWidthDraft(_a) {\n var shift = _a.shift;\n return draftTableColumnWidth({\n columnName: columnName,\n nextColumnName: nextColumnName,\n shift: shift\n });\n },\n onWidthDraftCancel: function onWidthDraftCancel() {\n return cancelTableColumnWidthDraft();\n },\n getCellWidth: function getCellWidth(getter) {\n return storeWidthGetters({\n tableColumn: params.tableColumn,\n getter: getter,\n tableColumns: tableColumns\n });\n }\n }), createElement(TemplatePlaceholder, {\n name: \"tableHeaderCellBefore\",\n params: {\n column: params.tableColumn.column\n }\n }), createElement(Content, {\n column: params.tableColumn.column,\n align: params.tableColumn.align\n }, showSortingControls ? createElement(SortLabel, {\n column: params.tableColumn.column,\n align: params.tableColumn.align,\n direction: getColumnSortingDirection(sorting, columnName) || null,\n disabled: !sortingEnabled,\n onSort: function onSort(_a) {\n var direction = _a.direction,\n keepOther = _a.keepOther;\n changeColumnSorting({\n columnName: columnName,\n direction: direction,\n keepOther: keepOther\n });\n },\n getMessage: getMessage\n }, createElement(Title, null, columnTitle || columnName)) : createElement(Title, null, columnTitle || columnName)), showGroupingControls ? createElement(GroupButton, {\n disabled: !groupingEnabled,\n onGroup: function onGroup() {\n return changeColumnGrouping({\n columnName: columnName\n });\n }\n }) : null);\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isHeadingTableRow(tableRow);\n }\n }, function (params) {\n return createElement(HeaderRow, _assign({}, params));\n }));\n };\n\n TableHeaderRowBase.ROW_TYPE = TABLE_HEADING_TYPE;\n TableHeaderRowBase.defaultProps = {\n showSortingControls: false,\n showGroupingControls: false,\n messages: {}\n };\n TableHeaderRowBase.components = {\n cellComponent: 'Cell',\n rowComponent: 'Row',\n contentComponent: 'Content',\n sortLabelComponent: 'SortLabel',\n titleComponent: 'Title',\n groupButtonComponent: 'GroupButton'\n };\n return TableHeaderRowBase;\n}(PureComponent);\n\nTableHeaderRowBase.components = {\n cellComponent: 'Cell',\n rowComponent: 'Row',\n contentComponent: 'Content',\n sortLabelComponent: 'SortLabel',\n titleComponent: 'Title',\n groupButtonComponent: 'GroupButton'\n};\n/***\r\n * A plugin that renders the table's header row. The Column's `title` field specifies the\r\n * column's title in the header row.The plugin also allows you to manage a column's sorting\r\n * and grouping state and initiate column dragging.\r\n * */\n\nvar TableHeaderRow = TableHeaderRowBase;\n\nvar CellPlaceholder$1 = function CellPlaceholder$1(props) {\n return createElement(TemplatePlaceholder, {\n params: props\n });\n};\n\nvar bandLevelsVisibilityComputed = function bandLevelsVisibilityComputed(_a) {\n var columnIntervals = _a.columnVisibleIntervals,\n tableHeaderColumnChains = _a.tableHeaderColumnChains,\n bandLevels = _a.bandLevels;\n return bandLevelsVisibility(columnIntervals, tableHeaderColumnChains, bandLevels);\n};\n\nvar columnVisibleIntervalsComputed = function columnVisibleIntervalsComputed(_a) {\n var viewport = _a.viewport,\n tableColumns = _a.tableColumns;\n return columnVisibleIntervals(viewport, tableColumns);\n};\n\nvar TableBandHeaderBase = /*#__PURE__*/function (_super) {\n __extends(TableBandHeaderBase, _super);\n\n function TableBandHeaderBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableBandHeaderBase.prototype.render = function () {\n var _a = this.props,\n Cell = _a.cellComponent,\n Row = _a.rowComponent,\n HeaderCell = _a.bandedHeaderCellComponent,\n InvisibleCell = _a.invisibleCellComponent,\n columnBands = _a.columnBands;\n\n var tableHeaderRowsComputed = function tableHeaderRowsComputed(_a) {\n var tableHeaderRows = _a.tableHeaderRows,\n tableColumns = _a.tableColumns;\n return tableRowsWithBands(tableHeaderRows, columnBands, tableColumns);\n };\n\n var tableHeaderColumnChainsComputed = function tableHeaderColumnChainsComputed(_a) {\n var tableHeaderRows = _a.tableHeaderRows,\n tableColumns = _a.tableColumns;\n return tableHeaderColumnChainsWithBands(tableHeaderRows, tableColumns, columnBands);\n };\n\n var bandLevels = columnBandLevels(columnBands);\n return createElement(Plugin, {\n name: \"TableBandHeader\",\n dependencies: [{\n name: 'Table'\n }, {\n name: 'TableHeaderRow'\n }, {\n name: 'TableSelection',\n optional: true\n }, {\n name: 'TableEditColumn',\n optional: true\n }]\n }, createElement(Getter, {\n name: \"tableHeaderRows\",\n computed: tableHeaderRowsComputed\n }), createElement(Getter, {\n name: \"columnVisibleIntervals\",\n computed: columnVisibleIntervalsComputed\n }), createElement(Getter, {\n name: \"tableHeaderColumnChains\",\n computed: tableHeaderColumnChainsComputed\n }), createElement(Getter, {\n name: \"bandLevels\",\n value: bandLevels\n }), createElement(Getter, {\n name: \"bandLevelsVisibility\",\n computed: bandLevelsVisibilityComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isBandedOrHeaderRow(tableRow);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var tableColumns = _a.tableColumns,\n tableHeaderRows = _a.tableHeaderRows,\n tableHeaderColumnChains = _a.tableHeaderColumnChains,\n columnIntervals = _a.columnVisibleIntervals,\n levelsVisibility = _a.bandLevelsVisibility;\n var bandComponent = getBandComponent(params, tableHeaderRows, tableColumns, columnBands, tableHeaderColumnChains, columnIntervals, levelsVisibility);\n\n switch (bandComponent.type) {\n case BAND_DUPLICATE_RENDER:\n return createElement(TemplatePlaceholder, {\n params: _assign({}, params)\n });\n\n case BAND_EMPTY_CELL:\n return createElement(InvisibleCell, null);\n\n case BAND_GROUP_CELL:\n {\n var _b = bandComponent.payload,\n value = _b.value,\n payload = __rest(_b, [\"value\"]);\n\n return createElement(Cell, _assign({}, params, payload), value);\n }\n\n case BAND_HEADER_CELL:\n return createElement(TemplatePlaceholder, {\n name: \"tableCell\",\n params: _assign(_assign({}, params), bandComponent.payload)\n });\n\n case BAND_FILL_LEVEL_CELL:\n return createElement(Cell, _assign({}, params, bandComponent.payload, {\n style: {\n whiteSpace: 'pre'\n }\n }), ' ');\n\n default:\n return null;\n }\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isHeadingTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(HeaderCell, _assign({\n component: CellPlaceholder$1\n }, params));\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isBandedTableRow(tableRow);\n }\n }, function (params) {\n return createElement(Row, _assign({}, params));\n }));\n };\n\n TableBandHeaderBase.ROW_TYPE = TABLE_BAND_TYPE;\n TableBandHeaderBase.components = {\n cellComponent: 'Cell',\n rowComponent: 'Row',\n bandedHeaderCellComponent: 'BandedHeaderCell',\n invisibleCellComponent: 'InvisibleCell'\n };\n return TableBandHeaderBase;\n}(PureComponent);\n\nTableBandHeaderBase.components = {\n cellComponent: 'Cell',\n rowComponent: 'Row',\n bandedHeaderCellComponent: 'BandedHeaderCell',\n invisibleCellComponent: 'InvisibleCell'\n};\n/** A plugin that renders the banded cells. */\n\nvar TableBandHeader = TableBandHeaderBase;\nvar pluginDependencies$b = [{\n name: 'FilteringState'\n}, {\n name: 'Table'\n}, {\n name: 'DataTypeProvider',\n optional: true\n}];\nvar defaultMessages$2 = {\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\nvar TableFilterRowBase = /*#__PURE__*/function (_super) {\n __extends(TableFilterRowBase, _super);\n\n function TableFilterRowBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n filterOperations: {}\n };\n return _this;\n }\n\n TableFilterRowBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n rowHeight = _a.rowHeight,\n showFilterSelector = _a.showFilterSelector,\n FilterCell = _a.cellComponent,\n FilterRow = _a.rowComponent,\n FilterSelector = _a.filterSelectorComponent,\n iconComponent = _a.iconComponent,\n toggleButtonComponent = _a.toggleButtonComponent,\n EditorComponent = _a.editorComponent,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$2), messages));\n\n var tableHeaderRowsComputed = function tableHeaderRowsComputed(_a) {\n var tableHeaderRows = _a.tableHeaderRows;\n return tableHeaderRowsWithFilter(tableHeaderRows, rowHeight);\n };\n\n return createElement(Plugin, {\n name: \"TableFilterRow\",\n dependencies: pluginDependencies$b\n }, createElement(Getter, {\n name: \"tableHeaderRows\",\n computed: tableHeaderRowsComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isFilterTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var filters = _a.filters,\n isColumnFilteringEnabled = _a.isColumnFilteringEnabled,\n getAvailableFilterOperations = _a.getAvailableFilterOperations,\n isDataRemote = _a.isDataRemote;\n var changeColumnFilter = _b.changeColumnFilter,\n scrollToRow = _b.scrollToRow;\n var filterOperations = _this.state.filterOperations;\n var columnName = params.tableColumn.column.name;\n var filter = getColumnFilterConfig(filters, columnName);\n\n var onFilter = function onFilter(config) {\n if (isDataRemote) {\n scrollToRow(TOP_POSITION);\n }\n\n changeColumnFilter({\n columnName: columnName,\n config: config\n });\n };\n\n var columnFilterOperations = getColumnFilterOperations(getAvailableFilterOperations, columnName);\n var selectedFilterOperation = getSelectedFilterOperation(filterOperations, columnName, filter, columnFilterOperations);\n\n var handleFilterOperationChange = function handleFilterOperationChange(value) {\n var _a;\n\n _this.setState({\n filterOperations: _assign(_assign({}, filterOperations), (_a = {}, _a[columnName] = value, _a))\n });\n\n if (filter && !isFilterValueEmpty(filter.value)) {\n onFilter({\n value: filter.value,\n operation: value\n });\n }\n };\n\n var handleFilterValueChange = function handleFilterValueChange(value) {\n return onFilter(!isFilterValueEmpty(value) ? {\n value: value,\n operation: selectedFilterOperation\n } : null);\n };\n\n var filteringEnabled = isColumnFilteringEnabled(columnName);\n return createElement(TemplatePlaceholder, {\n name: \"valueEditor\",\n params: {\n column: params.tableColumn.column,\n value: filter ? filter.value : undefined,\n onValueChange: handleFilterValueChange,\n disabled: !filteringEnabled\n }\n }, function (content) {\n return createElement(FilterCell, _assign({}, params, {\n getMessage: getMessage,\n column: params.tableColumn.column,\n filter: filter,\n filteringEnabled: filteringEnabled,\n onFilter: onFilter\n }), showFilterSelector ? createElement(FilterSelector, {\n toggleButtonComponent: toggleButtonComponent,\n iconComponent: iconComponent,\n value: selectedFilterOperation,\n availableValues: columnFilterOperations,\n onChange: handleFilterOperationChange,\n disabled: !filteringEnabled,\n getMessage: getMessage\n }) : null, content || createElement(EditorComponent, {\n value: filter ? filter.value : undefined,\n disabled: !filteringEnabled,\n getMessage: getMessage,\n onChange: handleFilterValueChange\n }));\n });\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isFilterTableRow(tableRow);\n }\n }, function (params) {\n return createElement(FilterRow, _assign({}, params));\n }));\n };\n\n TableFilterRowBase.ROW_TYPE = TABLE_FILTER_TYPE;\n TableFilterRowBase.defaultProps = {\n showFilterSelector: false,\n messages: {}\n };\n TableFilterRowBase.components = {\n rowComponent: 'Row',\n cellComponent: 'Cell',\n filterSelectorComponent: 'FilterSelector',\n iconComponent: 'Icon',\n editorComponent: 'Editor',\n toggleButtonComponent: 'ToggleButton'\n };\n return TableFilterRowBase;\n}(PureComponent);\n/** A plugin that renders a filter row. */\n\n\nvar TableFilterRow = TableFilterRowBase;\nvar pluginDependencies$c = [{\n name: 'EditingState'\n}, {\n name: 'Table'\n}, {\n name: 'DataTypeProvider',\n optional: true\n}];\n\nvar TableEditRowBase = /*#__PURE__*/function (_super) {\n __extends(TableEditRowBase, _super);\n\n function TableEditRowBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableEditRowBase.prototype.render = function () {\n var _a = this.props,\n EditCell = _a.cellComponent,\n EditRow = _a.rowComponent,\n rowHeight = _a.rowHeight;\n\n var tableBodyRowsComputed = function tableBodyRowsComputed(_a) {\n var tableBodyRows = _a.tableBodyRows,\n editingRowIds = _a.editingRowIds,\n addedRows = _a.addedRows;\n return tableRowsWithEditing(tableBodyRows, editingRowIds, addedRows, rowHeight);\n };\n\n return createElement(Plugin, {\n name: \"TableEditRow\",\n dependencies: pluginDependencies$c\n }, createElement(Getter, {\n name: \"tableBodyRows\",\n computed: tableBodyRowsComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isEditTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var getCellValue = _a.getCellValue,\n createRowChange = _a.createRowChange,\n rowChanges = _a.rowChanges,\n isColumnEditingEnabled = _a.isColumnEditingEnabled;\n var changeAddedRow = _b.changeAddedRow,\n changeRow = _b.changeRow;\n var _c = params.tableRow,\n rowId = _c.rowId,\n row = _c.row;\n var column = params.tableColumn.column;\n var columnName = column.name;\n var isNew = isAddedTableRow(params.tableRow);\n var changedRow = isNew ? row : _assign(_assign({}, row), getRowChange(rowChanges, rowId));\n var value = getCellValue(changedRow, columnName);\n\n var onValueChange = function onValueChange(newValue) {\n var changeArgs = {\n rowId: rowId,\n change: createRowChange(changedRow, newValue, columnName)\n };\n\n if (isNew) {\n changeAddedRow(changeArgs);\n } else {\n changeRow(changeArgs);\n }\n };\n\n var editingEnabled = isColumnEditingEnabled(columnName);\n return createElement(TemplatePlaceholder, {\n name: \"valueEditor\",\n params: {\n column: column,\n row: row,\n value: value,\n onValueChange: onValueChange,\n disabled: !editingEnabled\n }\n }, function (content) {\n return createElement(EditCell, _assign({}, params, {\n row: row,\n column: column,\n value: value,\n editingEnabled: editingEnabled,\n onValueChange: onValueChange\n }), content);\n });\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!(isEditTableRow(tableRow) || isAddedTableRow(tableRow));\n }\n }, function (params) {\n return createElement(EditRow, _assign({}, params, {\n row: params.tableRow.row\n }));\n }));\n };\n\n TableEditRowBase.ADDED_ROW_TYPE = TABLE_ADDED_TYPE;\n TableEditRowBase.EDIT_ROW_TYPE = TABLE_EDIT_TYPE;\n TableEditRowBase.components = {\n rowComponent: 'Row',\n cellComponent: 'Cell'\n };\n return TableEditRowBase;\n}(PureComponent);\n/** A plugin that renders a row being edited. */\n\n\nvar TableEditRow = TableEditRowBase;\nvar pluginDependencies$d = [{\n name: 'EditingState'\n}, {\n name: 'Table'\n}];\nvar defaultMessages$3 = {\n addCommand: 'New',\n editCommand: 'Edit',\n deleteCommand: 'Delete',\n commitCommand: 'Save',\n cancelCommand: 'Cancel'\n};\n\nvar TableEditColumnBase = /*#__PURE__*/function (_super) {\n __extends(TableEditColumnBase, _super);\n\n function TableEditColumnBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableEditColumnBase.prototype.render = function () {\n var _a = this.props,\n Cell = _a.cellComponent,\n HeaderCell = _a.headerCellComponent,\n Command = _a.commandComponent,\n showAddCommand = _a.showAddCommand,\n showEditCommand = _a.showEditCommand,\n showDeleteCommand = _a.showDeleteCommand,\n width = _a.width,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$3), messages));\n\n var tableColumnsComputed = function tableColumnsComputed(_a) {\n var tableColumns = _a.tableColumns;\n return tableColumnsWithEditing(tableColumns, width);\n };\n\n return createElement(Plugin, {\n name: \"TableEditColumn\",\n dependencies: pluginDependencies$d\n }, createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isHeadingEditCommandsTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (getters, actions) {\n return createElement(HeaderCell, _assign({}, params), showAddCommand && createElement(Command, {\n id: \"add\",\n text: getMessage('addCommand'),\n onExecute: function onExecute() {\n return actions.addRow();\n }\n }));\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isEditCommandsTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (getters, actions) {\n var isEdit = isEditTableRow(params.tableRow);\n var isNew = isAddedTableRow(params.tableRow);\n var isEditing = isEdit || isNew;\n var rowIds = [params.tableRow.rowId];\n return createElement(Cell, _assign({}, params, {\n row: params.tableRow.row\n }), showEditCommand && !isEditing && createElement(Command, {\n id: \"edit\",\n text: getMessage('editCommand'),\n onExecute: function onExecute() {\n return actions.startEditRows({\n rowIds: rowIds\n });\n }\n }), showDeleteCommand && !isEditing && createElement(Command, {\n id: \"delete\",\n text: getMessage('deleteCommand'),\n onExecute: function onExecute() {\n actions.deleteRows({\n rowIds: rowIds\n });\n actions.commitDeletedRows({\n rowIds: rowIds\n });\n }\n }), isEditing && createElement(Command, {\n id: \"commit\",\n text: getMessage('commitCommand'),\n onExecute: function onExecute() {\n if (isNew) {\n actions.commitAddedRows({\n rowIds: rowIds\n });\n } else {\n actions.stopEditRows({\n rowIds: rowIds\n });\n actions.commitChangedRows({\n rowIds: rowIds\n });\n }\n }\n }), isEditing && createElement(Command, {\n id: \"cancel\",\n text: getMessage('cancelCommand'),\n onExecute: function onExecute() {\n if (isNew) {\n actions.cancelAddedRows({\n rowIds: rowIds\n });\n } else {\n actions.stopEditRows({\n rowIds: rowIds\n });\n actions.cancelChangedRows({\n rowIds: rowIds\n });\n }\n }\n }));\n });\n }));\n };\n\n TableEditColumnBase.COLUMN_TYPE = TABLE_EDIT_COMMAND_TYPE;\n TableEditColumnBase.defaultProps = {\n showAddCommand: false,\n showEditCommand: false,\n showDeleteCommand: false,\n width: 140,\n messages: {}\n };\n TableEditColumnBase.components = {\n cellComponent: 'Cell',\n headerCellComponent: 'HeaderCell',\n commandComponent: 'Command'\n };\n return TableEditColumnBase;\n}(PureComponent);\n/***\r\n * A plugin that renders a command column. This column contains controls used for row editing,\r\n * creating, or deleting and committing/canceling changes.\r\n * */\n\n\nvar TableEditColumn = TableEditColumnBase;\nvar pluginDependencies$e = [{\n name: 'Table'\n}]; // tslint:disable-next-line: max-line-length\n\nvar TableColumnResizingBase = /*#__PURE__*/function (_super) {\n __extends(TableColumnResizingBase, _super);\n\n function TableColumnResizingBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.widthGetters = {};\n _this.cachedWidths = {};\n _this.state = {\n columnWidths: props.columnWidths || props.defaultColumnWidths,\n draftColumnWidths: []\n };\n var stateHelper = createStateHelper(_this, {\n columnWidths: function columnWidths() {\n var onColumnWidthsChange = _this.props.onColumnWidthsChange;\n return onColumnWidthsChange;\n }\n });\n _this.tableColumnsComputed = memoize(function (columnWidths) {\n return function (_a) {\n var tableColumns = _a.tableColumns;\n return tableColumnsWithWidths(tableColumns, columnWidths, _this.props.resizingMode);\n };\n });\n _this.tableColumnsDraftComputed = memoize(function (draftColumnWidths) {\n return function (_a) {\n var tableColumns = _a.tableColumns;\n return tableColumnsWithDraftWidths(tableColumns, draftColumnWidths, _this.props.resizingMode);\n };\n });\n _this.changeTableColumnWidth = stateHelper.applyReducer.bind(stateHelper, function (prevState, payload) {\n var cachedWidths = _assign({}, _this.cachedWidths);\n\n var _a = _this.props,\n minColumnWidth = _a.minColumnWidth,\n maxColumnWidth = _a.maxColumnWidth,\n columnExtensions = _a.columnExtensions,\n resizingMode = _a.resizingMode;\n return changeTableColumnWidth(prevState, _assign(_assign({}, payload), {\n cachedWidths: cachedWidths,\n resizingMode: resizingMode,\n minColumnWidth: minColumnWidth,\n maxColumnWidth: maxColumnWidth,\n columnExtensions: columnExtensions\n }));\n });\n _this.draftTableColumnWidth = stateHelper.applyReducer.bind(stateHelper, function (prevState, payload) {\n _this.storeCache(payload);\n\n var cachedWidths = _this.cachedWidths;\n var _a = _this.props,\n minColumnWidth = _a.minColumnWidth,\n maxColumnWidth = _a.maxColumnWidth,\n columnExtensions = _a.columnExtensions,\n resizingMode = _a.resizingMode;\n return draftTableColumnWidth(prevState, _assign(_assign({}, payload), {\n cachedWidths: cachedWidths,\n resizingMode: resizingMode,\n minColumnWidth: minColumnWidth,\n maxColumnWidth: maxColumnWidth,\n columnExtensions: columnExtensions\n }));\n });\n _this.cancelTableColumnWidthDraft = stateHelper.applyReducer.bind(stateHelper, cancelTableColumnWidthDraft);\n\n _this.storeCache = function (_a) {\n var columnName = _a.columnName,\n nextColumnName = _a.nextColumnName;\n\n if (Object.keys(_this.cachedWidths).length === 0) {\n _this.cachedWidths[columnName] = _this.widthGetters[columnName]();\n\n if (nextColumnName) {\n _this.cachedWidths[nextColumnName] = _this.widthGetters[nextColumnName]();\n }\n }\n };\n\n _this.clearCache = function () {\n Object.keys(_this.cachedWidths).forEach(function (columnName) {\n return delete _this.cachedWidths[columnName];\n });\n };\n\n _this.storeWidthGetters = memoize(function (_a) {\n var tableColumn = _a.tableColumn,\n getter = _a.getter,\n tableColumns = _a.tableColumns;\n\n if (tableColumn.type === TABLE_DATA_TYPE) {\n _this.widthGetters[tableColumn.column.name] = getter;\n }\n\n Object.keys(_this.widthGetters).forEach(function (columnName) {\n var columnIndex = tableColumns.findIndex(function (_a) {\n var type = _a.type,\n column = _a.column;\n return type === TABLE_DATA_TYPE && column.name === columnName;\n });\n\n if (columnIndex === -1) {\n delete _this.widthGetters[columnName];\n }\n });\n });\n return _this;\n }\n\n TableColumnResizingBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.columnWidths,\n columnWidths = _a === void 0 ? prevState.columnWidths : _a;\n return {\n columnWidths: columnWidths\n };\n };\n\n TableColumnResizingBase.prototype.componentDidUpdate = function (_, prevState) {\n var currentWidths = this.state.columnWidths;\n var prevWidths = prevState.columnWidths;\n\n if (currentWidths !== prevWidths) {\n this.clearCache();\n }\n };\n\n TableColumnResizingBase.prototype.render = function () {\n var _a = this.state,\n columnWidths = _a.columnWidths,\n draftColumnWidths = _a.draftColumnWidths;\n var resizingMode = this.props.resizingMode;\n var tableColumnsComputed = this.tableColumnsComputed(columnWidths);\n var tableColumnsDraftComputed = this.tableColumnsDraftComputed(draftColumnWidths);\n return createElement(Plugin, {\n name: \"TableColumnResizing\",\n dependencies: pluginDependencies$e\n }, createElement(Getter, {\n name: \"tableColumnResizingEnabled\",\n value: true\n }), createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }), createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsDraftComputed\n }), createElement(Getter, {\n name: \"columnResizingMode\",\n value: resizingMode\n }), createElement(Action, {\n name: \"changeTableColumnWidth\",\n action: this.changeTableColumnWidth\n }), createElement(Action, {\n name: \"draftTableColumnWidth\",\n action: this.draftTableColumnWidth\n }), createElement(Action, {\n name: \"cancelTableColumnWidthDraft\",\n action: this.cancelTableColumnWidthDraft\n }), createElement(Action, {\n name: \"storeWidthGetters\",\n action: this.storeWidthGetters\n }));\n };\n\n TableColumnResizingBase.defaultProps = {\n defaultColumnWidths: [],\n resizingMode: 'widget'\n };\n return TableColumnResizingBase;\n}(PureComponent);\n/* tslint:disable: max-line-length */\n\n/** A plugin that manages table column widths. */\n\n\nvar TableColumnResizing = TableColumnResizingBase;\n/* tslint:enable: max-line-length */\n\nvar pluginDependencies$f = [{\n name: 'PagingState'\n}];\nvar defaultMessages$4 = {\n showAll: 'All',\n info: function info(_a) {\n var from = _a.from,\n to = _a.to,\n count = _a.count;\n return \"\" + from + (from < to ? \"-\" + to : '') + \" of \" + count;\n }\n};\n\nvar PagingPanelBase = /*#__PURE__*/function (_super) {\n __extends(PagingPanelBase, _super);\n\n function PagingPanelBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n PagingPanelBase.prototype.render = function () {\n var _a = this.props,\n Pager = _a.containerComponent,\n pageSizes = _a.pageSizes,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$4), messages));\n return createElement(Plugin, {\n name: \"PagingPanel\",\n dependencies: pluginDependencies$f\n }, createElement(Template, {\n name: \"footer\"\n }, createElement(TemplatePlaceholder, null), createElement(TemplateConnector, null, function (_a, _b) {\n var currentPage = _a.currentPage,\n pageSize = _a.pageSize,\n totalCount = _a.totalCount;\n var setCurrentPage = _b.setCurrentPage,\n setPageSize = _b.setPageSize;\n return createElement(Pager, {\n currentPage: currentPage,\n pageSize: pageSize,\n totalCount: totalCount,\n totalPages: pageCount(totalCount, pageSize),\n pageSizes: pageSizes,\n getMessage: getMessage,\n onCurrentPageChange: setCurrentPage,\n onPageSizeChange: setPageSize\n });\n })));\n };\n\n PagingPanelBase.defaultProps = {\n pageSizes: [],\n messages: {}\n };\n PagingPanelBase.components = {\n containerComponent: 'Container'\n };\n return PagingPanelBase;\n}(PureComponent);\n/** A plugin that renders the paging panel used for navigation through data pages. */\n\n\nvar PagingPanel = PagingPanelBase;\nvar defaultProps = {\n draggingEnabled: false,\n onDragStart: function onDragStart() {},\n onDragEnd: function onDragEnd() {}\n}; // tslint:disable-next-line: max-line-length\n\nvar ItemLayout = /*#__PURE__*/function (_super) {\n __extends(ItemLayout, _super);\n\n function ItemLayout(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n dragging: false\n };\n return _this;\n }\n\n ItemLayout.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n item = _a.item,\n Item = _a.itemComponent,\n draggingEnabled = _a.draggingEnabled,\n onDragStart = _a.onDragStart,\n onDragEnd = _a.onDragEnd;\n var dragging = this.state.dragging;\n var itemElement = createElement(Item, {\n item: _assign(_assign({}, item), {\n draft: dragging || item.draft\n })\n });\n return draggingEnabled ? createElement(DragSource, {\n payload: [{\n type: 'column',\n columnName: item.column.name\n }],\n onStart: function onStart() {\n _this.setState({\n dragging: true\n });\n\n onDragStart();\n },\n onEnd: function onEnd() {\n _this.setState({\n dragging: false\n });\n\n onDragEnd();\n }\n }, itemElement) : itemElement;\n };\n\n ItemLayout.defaultProps = defaultProps;\n return ItemLayout;\n}(PureComponent);\n\nvar defaultProps$1 = {\n onGroup: function onGroup() {},\n draggingEnabled: false,\n isColumnGroupingEnabled: function isColumnGroupingEnabled() {\n return false;\n },\n onGroupDraft: function onGroupDraft() {},\n onGroupDraftCancel: function onGroupDraftCancel() {}\n}; // tslint:disable-next-line: max-line-length\n\nvar GroupPanelLayoutBase = /*#__PURE__*/function (_super) {\n __extends(GroupPanelLayoutBase, _super);\n\n function GroupPanelLayoutBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.itemRefs = [];\n _this.draggingColumnName = null;\n _this.state = {\n sourceColumnName: null,\n targetItemIndex: -1\n };\n\n _this.handleDragEvent = function (eventHandler, _a) {\n var payload = _a.payload,\n restArgs = __rest(_a, [\"payload\"]);\n\n var isColumnGroupingEnabled = _this.props.isColumnGroupingEnabled;\n var columnName = payload[0].columnName;\n\n if (isColumnGroupingEnabled(columnName)) {\n eventHandler(_assign({\n payload: payload\n }, restArgs));\n }\n };\n\n _this.onEnter = function (_a) {\n var payload = _a.payload;\n\n _this.setState({\n sourceColumnName: payload[0].columnName\n });\n };\n\n _this.onOver = function (_a) {\n var clientOffset = _a.clientOffset;\n var _b = _this.props,\n onGroupDraft = _b.onGroupDraft,\n items = _b.items;\n var _c = _this.state,\n sourceColumnName = _c.sourceColumnName,\n prevTargetItemIndex = _c.targetItemIndex; // eslint-disable-next-line react/no-find-dom-node\n\n var itemGeometries = _this.itemRefs.map(function (ref) {\n return findDOMNode(ref).getBoundingClientRect();\n });\n\n var sourceItemIndex = items.findIndex(function (_a) {\n var column = _a.column;\n return column.name === sourceColumnName;\n });\n var targetItemIndex = getGroupCellTargetIndex(itemGeometries, sourceItemIndex, clientOffset);\n if (prevTargetItemIndex === targetItemIndex) return;\n onGroupDraft({\n columnName: sourceColumnName,\n groupIndex: targetItemIndex\n });\n\n _this.setState({\n targetItemIndex: targetItemIndex\n });\n };\n\n _this.onLeave = function () {\n var onGroupDraft = _this.props.onGroupDraft;\n var sourceColumnName = _this.state.sourceColumnName;\n\n if (!_this.draggingColumnName) {\n _this.resetState();\n\n return;\n }\n\n onGroupDraft({\n columnName: sourceColumnName,\n groupIndex: -1\n });\n\n _this.setState({\n targetItemIndex: -1\n });\n };\n\n _this.onDrop = function () {\n var onGroup = _this.props.onGroup;\n var _a = _this.state,\n sourceColumnName = _a.sourceColumnName,\n targetItemIndex = _a.targetItemIndex;\n\n _this.resetState();\n\n onGroup({\n columnName: sourceColumnName,\n groupIndex: targetItemIndex\n });\n };\n\n _this.onDragStart = function (columnName) {\n _this.draggingColumnName = columnName;\n };\n\n _this.onDragEnd = function () {\n _this.draggingColumnName = null;\n var _a = _this.state,\n sourceColumnName = _a.sourceColumnName,\n targetItemIndex = _a.targetItemIndex;\n var onGroup = _this.props.onGroup;\n\n if (sourceColumnName && targetItemIndex === -1) {\n onGroup({\n columnName: sourceColumnName\n });\n }\n\n _this.resetState();\n };\n\n return _this;\n }\n\n GroupPanelLayoutBase.prototype.resetState = function () {\n var onGroupDraftCancel = this.props.onGroupDraftCancel;\n onGroupDraftCancel();\n this.setState({\n sourceColumnName: null,\n targetItemIndex: -1\n });\n };\n\n GroupPanelLayoutBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n items = _a.items,\n EmptyMessage = _a.emptyMessageComponent,\n Container = _a.containerComponent,\n Item = _a.itemComponent,\n draggingEnabled = _a.draggingEnabled,\n isColumnGroupingEnabled = _a.isColumnGroupingEnabled;\n this.itemRefs = [];\n var groupPanel = items.length ? createElement(Container, null, items.map(function (item) {\n var columnName = item.column.name;\n return createElement(ItemLayout, {\n key: columnName,\n ref: function ref(element) {\n return element && _this.itemRefs.push(element);\n },\n item: item,\n itemComponent: Item,\n draggingEnabled: draggingEnabled && isColumnGroupingEnabled(columnName),\n onDragStart: function onDragStart() {\n return _this.onDragStart(columnName);\n },\n onDragEnd: _this.onDragEnd\n });\n })) : createElement(EmptyMessage, null);\n return draggingEnabled ? createElement(DropTarget, {\n onEnter: function onEnter(args) {\n return _this.handleDragEvent(_this.onEnter, args);\n },\n onOver: function onOver(args) {\n return _this.handleDragEvent(_this.onOver, args);\n },\n onLeave: function onLeave(args) {\n return _this.handleDragEvent(_this.onLeave, args);\n },\n onDrop: function onDrop(args) {\n return _this.handleDragEvent(_this.onDrop, args);\n }\n }, groupPanel) : groupPanel;\n };\n\n GroupPanelLayoutBase.defaultProps = defaultProps$1;\n return GroupPanelLayoutBase;\n}(PureComponent);\n/** @internal */\n\n\nvar GroupPanelLayout = GroupPanelLayoutBase;\nvar defaultMessages$5 = {\n groupByColumn: 'Drag a column header here to group by that column'\n};\nvar defaultProps$2 = {\n showSortingControls: false,\n showGroupingControls: false,\n messages: {}\n};\n\nvar GroupingPanelRaw = /*#__PURE__*/function (_super) {\n __extends(GroupingPanelRaw, _super);\n\n function GroupingPanelRaw() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GroupingPanelRaw.prototype.render = function () {\n var _a = this.props,\n LayoutComponent = _a.layoutComponent,\n Container = _a.containerComponent,\n Item = _a.itemComponent,\n EmptyMessage = _a.emptyMessageComponent,\n showSortingControls = _a.showSortingControls,\n showGroupingControls = _a.showGroupingControls,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$5), messages));\n\n var EmptyMessagePlaceholder = function EmptyMessagePlaceholder() {\n return createElement(EmptyMessage, {\n getMessage: getMessage\n });\n };\n\n var ItemPlaceholder = function ItemPlaceholder(_a) {\n var item = _a.item;\n var columnName = item.column.name;\n return createElement(TemplateConnector, null, function (_a, _b) {\n var sorting = _a.sorting,\n isColumnSortingEnabled = _a.isColumnSortingEnabled,\n isColumnGroupingEnabled = _a.isColumnGroupingEnabled;\n var changeColumnGrouping = _b.changeColumnGrouping,\n changeColumnSorting = _b.changeColumnSorting;\n var sortingEnabled = isColumnSortingEnabled && isColumnSortingEnabled(columnName);\n var groupingEnabled = isColumnGroupingEnabled && isColumnGroupingEnabled(columnName);\n return createElement(Item, {\n item: item,\n sortingEnabled: sortingEnabled,\n groupingEnabled: groupingEnabled,\n showSortingControls: showSortingControls,\n sortingDirection: showSortingControls ? getColumnSortingDirection(sorting, columnName) : undefined,\n showGroupingControls: showGroupingControls,\n onGroup: function onGroup() {\n return changeColumnGrouping({\n columnName: columnName\n });\n },\n onSort: function onSort(_a) {\n var direction = _a.direction,\n keepOther = _a.keepOther;\n return changeColumnSorting({\n columnName: columnName,\n direction: direction,\n keepOther: keepOther\n });\n }\n });\n });\n };\n\n return createElement(Plugin, {\n name: \"GroupingPanel\",\n dependencies: [{\n name: 'GroupingState'\n }, {\n name: 'Toolbar'\n }, {\n name: 'SortingState',\n optional: !showSortingControls\n }]\n }, createElement(Template, {\n name: \"toolbarContent\"\n }, createElement(TemplateConnector, null, function (_a, _b) {\n var columns = _a.columns,\n grouping = _a.grouping,\n draftGrouping = _a.draftGrouping,\n draggingEnabled = _a.draggingEnabled,\n isColumnGroupingEnabled = _a.isColumnGroupingEnabled,\n isDataRemote = _a.isDataRemote;\n var changeColumnGrouping = _b.changeColumnGrouping,\n draftColumnGrouping = _b.draftColumnGrouping,\n cancelColumnGroupingDraft = _b.cancelColumnGroupingDraft,\n scrollToRow = _b.scrollToRow;\n\n var onGroup = function onGroup(config) {\n if (isDataRemote) {\n scrollToRow(TOP_POSITION);\n }\n\n changeColumnGrouping(config);\n };\n\n return createElement(LayoutComponent, {\n items: groupingPanelItems(columns, grouping, draftGrouping),\n isColumnGroupingEnabled: isColumnGroupingEnabled,\n draggingEnabled: draggingEnabled,\n onGroup: onGroup,\n onGroupDraft: draftColumnGrouping,\n onGroupDraftCancel: cancelColumnGroupingDraft,\n itemComponent: ItemPlaceholder,\n emptyMessageComponent: EmptyMessagePlaceholder,\n containerComponent: Container\n });\n }), createElement(TemplatePlaceholder, null)));\n };\n\n GroupingPanelRaw.defaultProps = defaultProps$2;\n GroupingPanelRaw.components = {\n layoutComponent: 'Layout',\n containerComponent: 'Container',\n itemComponent: 'Item',\n emptyMessageComponent: 'EmptyMessage'\n };\n return GroupingPanelRaw;\n}(PureComponent);\n/***\r\n * A plugin that renders the Grouping Panel in the Grid's header. This panel displays grouped\r\n * columns and allows a user to modify grouping options.Optionally, the plugin allows an end-user\r\n * to change grouped columns' sorting order and render sorting indicators.\r\n * */\n\n\nvar GroupingPanel = withComponents({\n Layout: GroupPanelLayout\n})(GroupingPanelRaw);\n\nvar DataTypeProviderBase = /*#__PURE__*/function (_super) {\n __extends(DataTypeProviderBase, _super);\n\n function DataTypeProviderBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DataTypeProviderBase.prototype.render = function () {\n var _a = this.props,\n columnNames = _a.for,\n Formatter = _a.formatterComponent,\n Editor = _a.editorComponent,\n availableFilterOperations = _a.availableFilterOperations;\n\n var getAvailableFilterOperationsComputed = function getAvailableFilterOperationsComputed(_a) {\n var getAvailableFilterOperations = _a.getAvailableFilterOperations;\n return getAvailableFilterOperationsGetter(getAvailableFilterOperations, availableFilterOperations, columnNames);\n };\n\n return createElement(Plugin, {\n name: \"DataTypeProvider\",\n key: columnNames.join('_')\n }, createElement(Getter, {\n name: \"getAvailableFilterOperations\",\n computed: getAvailableFilterOperationsComputed\n }), Formatter ? createElement(Template, {\n name: \"valueFormatter\",\n predicate: function predicate(_a) {\n var column = _a.column;\n return columnNames.includes(column.name);\n }\n }, function (params) {\n return createElement(Formatter, _assign({}, params));\n }) : null, Editor ? createElement(Template, {\n name: \"valueEditor\",\n predicate: function predicate(_a) {\n var column = _a.column;\n return columnNames.includes(column.name);\n }\n }, function (params) {\n return createElement(Editor, _assign({}, params));\n }) : null);\n };\n\n return DataTypeProviderBase;\n}(PureComponent); // tslint:disable-next-line: max-line-length\n\n/** A plugin that allows you to customize formatting options and editors depending on the data type. */\n\n\nvar DataTypeProvider = DataTypeProviderBase;\nvar pluginDependencies$g = [{\n name: 'Table'\n}];\nvar defaultMessages$6 = {\n noColumns: 'Nothing to show'\n};\n\nvar columnExtensionValueGetter$4 = function columnExtensionValueGetter$4(columnExtensions, defaultValue) {\n return getColumnExtensionValueGetter(columnExtensions, 'togglingEnabled', defaultValue);\n}; // tslint:disable-next-line: max-line-length\n\n\nvar TableColumnVisibilityBase = /*#__PURE__*/function (_super) {\n __extends(TableColumnVisibilityBase, _super);\n\n function TableColumnVisibilityBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n hiddenColumnNames: props.hiddenColumnNames || props.defaultHiddenColumnNames\n };\n var stateHelper = createStateHelper(_this, {\n hiddenColumnNames: function hiddenColumnNames() {\n var onHiddenColumnNamesChange = _this.props.onHiddenColumnNamesChange;\n return onHiddenColumnNamesChange;\n }\n });\n _this.toggleColumnVisibility = stateHelper.applyFieldReducer.bind(stateHelper, 'hiddenColumnNames', toggleColumn);\n return _this;\n }\n\n TableColumnVisibilityBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.hiddenColumnNames,\n hiddenColumnNames = _a === void 0 ? prevState.hiddenColumnNames : _a;\n return {\n hiddenColumnNames: hiddenColumnNames\n };\n };\n\n TableColumnVisibilityBase.prototype.render = function () {\n var _a = this.props,\n EmptyMessage = _a.emptyMessageComponent,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$6), messages));\n var hiddenColumnNames = this.state.hiddenColumnNames;\n var _b = this.props,\n columnExtensions = _b.columnExtensions,\n columnTogglingEnabled = _b.columnTogglingEnabled;\n return createElement(Plugin, {\n name: \"TableColumnVisibility\",\n dependencies: pluginDependencies$g\n }, createElement(VisibleTableColumns, {\n hiddenColumnNames: hiddenColumnNames\n }), createElement(Getter, {\n name: \"isColumnTogglingEnabled\",\n value: columnExtensionValueGetter$4(columnExtensions, columnTogglingEnabled)\n }), createElement(Action, {\n name: \"toggleColumnVisibility\",\n action: this.toggleColumnVisibility\n }), createElement(Template, {\n name: \"table\"\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var tableColumns = _a.tableColumns;\n return tableDataColumnsExist(tableColumns) ? createElement(TemplatePlaceholder, null) : createElement(EmptyMessage, _assign({\n getMessage: getMessage\n }, params));\n });\n }));\n };\n\n TableColumnVisibilityBase.defaultProps = {\n defaultHiddenColumnNames: [],\n messages: {},\n columnTogglingEnabled: true\n };\n TableColumnVisibilityBase.components = {\n emptyMessageComponent: 'EmptyMessage'\n };\n return TableColumnVisibilityBase;\n}(PureComponent);\n\nTableColumnVisibilityBase.components = {\n emptyMessageComponent: 'EmptyMessage'\n};\n/* tslint:disable: max-line-length */\n\n/** A plugin that manages Grid columns' visibility. */\n\nvar TableColumnVisibility = TableColumnVisibilityBase;\n/* tslint:enable: max-line-length */\n\nvar ToolbarBase = /*#__PURE__*/function (_super) {\n __extends(ToolbarBase, _super);\n\n function ToolbarBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToolbarBase.prototype.render = function () {\n var _a = this.props,\n Root = _a.rootComponent,\n FlexibleSpaceComponent = _a.flexibleSpaceComponent;\n return createElement(Plugin, {\n name: \"Toolbar\"\n }, createElement(Template, {\n name: \"header\"\n }, createElement(Root, null, createElement(TemplatePlaceholder, {\n name: \"toolbarContent\"\n })), createElement(TemplatePlaceholder, null)), createElement(Template, {\n name: \"toolbarContent\"\n }, createElement(FlexibleSpaceComponent, null)));\n };\n\n ToolbarBase.components = {\n rootComponent: 'Root',\n flexibleSpaceComponent: 'FlexibleSpace'\n };\n return ToolbarBase;\n}(PureComponent);\n/** A plugin that renders the Grid toolbar. */\n\n\nvar Toolbar = ToolbarBase;\n\nvar TreeDataStateBase = /*#__PURE__*/function (_super) {\n __extends(TreeDataStateBase, _super);\n\n function TreeDataStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n expandedRowIds: props.expandedRowIds || props.defaultExpandedRowIds\n };\n var stateHelper = createStateHelper(_this, {\n expandedRowIds: function expandedRowIds() {\n var onExpandedRowIdsChange = _this.props.onExpandedRowIdsChange;\n return onExpandedRowIdsChange;\n }\n });\n _this.toggleRowExpanded = stateHelper.applyFieldReducer.bind(stateHelper, 'expandedRowIds', toggleRowExpanded);\n return _this;\n }\n\n TreeDataStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.expandedRowIds,\n expandedRowIds = _a === void 0 ? prevState.expandedRowIds : _a;\n return {\n expandedRowIds: expandedRowIds\n };\n };\n\n TreeDataStateBase.prototype.render = function () {\n var expandedRowIds = this.state.expandedRowIds;\n return createElement(Plugin, {\n name: \"TreeDataState\"\n }, createElement(Getter, {\n name: \"expandedRowIds\",\n value: expandedRowIds\n }), ' ', createElement(Action, {\n name: \"toggleRowExpanded\",\n action: this.toggleRowExpanded\n }));\n };\n\n TreeDataStateBase.defaultProps = {\n defaultExpandedRowIds: []\n };\n return TreeDataStateBase;\n}(PureComponent);\n/** A plugin that manages the expanded state for tree rows. */\n\n\nvar TreeDataState = TreeDataStateBase;\nvar pluginDependencies$h = [{\n name: 'TreeDataState'\n}];\n\nvar expandedTreeRowsComputed = function expandedTreeRowsComputed(_a) {\n var rows = _a.rows,\n getRowId = _a.getRowId,\n expandedRowIds = _a.expandedRowIds;\n return expandedTreeRows(rows, getRowId, expandedRowIds);\n};\n\nvar getRowIdComputed$1 = function getRowIdComputed$1(_a) {\n var getRowId = _a.getRowId,\n rows = _a.rows;\n return customTreeRowIdGetter(getRowId, rows);\n};\n\nvar getRowLevelKeyComputed = function getRowLevelKeyComputed(_a) {\n var getRowLevelKey = _a.getRowLevelKey,\n rows = _a.rows;\n return customTreeRowLevelKeyGetter(getRowLevelKey, rows);\n};\n\nvar isTreeRowLeafComputed = function isTreeRowLeafComputed(_a) {\n var rows = _a.rows;\n return isTreeRowLeafGetter(rows);\n};\n\nvar getTreeRowLevelComputed = function getTreeRowLevelComputed(_a) {\n var rows = _a.rows;\n return getTreeRowLevelGetter(rows);\n};\n\nvar collapsedTreeRowsGetterComputed = function collapsedTreeRowsGetterComputed(_a) {\n var rows = _a.rows,\n getCollapsedRows = _a.getCollapsedRows;\n return collapsedTreeRowsGetter(getCollapsedRows, rows);\n};\n\nvar unwrappedTreeRowsComputed = function unwrappedTreeRowsComputed(_a) {\n var rows = _a.rows;\n return unwrappedCustomTreeRows(rows);\n};\n\nvar CustomTreeDataBase = /*#__PURE__*/function (_super) {\n __extends(CustomTreeDataBase, _super);\n\n function CustomTreeDataBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CustomTreeDataBase.prototype.render = function () {\n var getChildRows = this.props.getChildRows;\n\n var treeRowsComputed = function treeRowsComputed(_a) {\n var rows = _a.rows;\n return customTreeRowsWithMeta(rows, getChildRows);\n };\n\n return createElement(Plugin, {\n name: \"CustomTreeData\",\n dependencies: pluginDependencies$h\n }, createElement(Getter, {\n name: \"rows\",\n computed: treeRowsComputed\n }), createElement(Getter, {\n name: \"getRowId\",\n computed: getRowIdComputed$1\n }), createElement(Getter, {\n name: \"getRowLevelKey\",\n computed: getRowLevelKeyComputed\n }), createElement(Getter, {\n name: \"isTreeRowLeaf\",\n computed: isTreeRowLeafComputed\n }), createElement(Getter, {\n name: \"getTreeRowLevel\",\n computed: getTreeRowLevelComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: expandedTreeRowsComputed\n }), createElement(Getter, {\n name: \"getCollapsedRows\",\n computed: collapsedTreeRowsGetterComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: unwrappedTreeRowsComputed\n }));\n };\n\n return CustomTreeDataBase;\n}(PureComponent);\n/***\r\n * A plugin that converts custom formatted tree data to a supported format and performs\r\n * local row expanding/collapsing.\r\n * */\n\n\nvar CustomTreeData = CustomTreeDataBase;\n\nvar TableTreeColumnBase = /*#__PURE__*/function (_super) {\n __extends(TableTreeColumnBase, _super);\n\n function TableTreeColumnBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableTreeColumnBase.prototype.render = function () {\n var _a = this.props,\n forColumnName = _a.for,\n showSelectionControls = _a.showSelectionControls,\n showSelectAll = _a.showSelectAll,\n Indent = _a.indentComponent,\n ExpandButton = _a.expandButtonComponent,\n Checkbox = _a.checkboxComponent,\n Content = _a.contentComponent,\n Cell = _a.cellComponent;\n return createElement(Plugin, {\n name: \"TableTreeColumn\",\n dependencies: [{\n name: 'DataTypeProvider',\n optional: true\n }, {\n name: 'TreeDataState'\n }, {\n name: 'SelectionState',\n optional: !showSelectionControls\n }, {\n name: 'IntegratedSelection',\n optional: !showSelectAll\n }, {\n name: 'Table'\n }, {\n name: 'TableHeaderRow',\n optional: true\n }],\n key: forColumnName\n }, createElement(Getter, {\n name: \"tableTreeColumnName\",\n value: forColumnName\n }), createElement(Template, {\n name: \"tableHeaderCellBefore\",\n predicate: function predicate(_a) {\n var column = _a.column;\n return column.name === forColumnName;\n }\n }, createElement(ExpandButton, {\n visible: false,\n expanded: false,\n onToggle: function onToggle() {}\n }), showSelectionControls && showSelectAll && createElement(TemplateConnector, null, function (_a, _b) {\n var selectAllAvailable = _a.selectAllAvailable,\n allSelected = _a.allSelected,\n someSelected = _a.someSelected;\n var toggleSelectAll = _b.toggleSelectAll;\n return createElement(Checkbox, {\n disabled: !selectAllAvailable,\n checked: allSelected,\n indeterminate: someSelected,\n onChange: toggleSelectAll\n });\n })), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isTreeTableCell(tableRow, tableColumn, forColumnName);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var getCollapsedRows = _a.getCollapsedRows,\n expandedRowIds = _a.expandedRowIds,\n selection = _a.selection,\n isTreeRowLeaf = _a.isTreeRowLeaf,\n getTreeRowLevel = _a.getTreeRowLevel,\n getCellValue = _a.getCellValue;\n var toggleRowExpanded = _b.toggleRowExpanded,\n toggleSelection = _b.toggleSelection;\n var _c = params.tableRow,\n row = _c.row,\n rowId = _c.rowId;\n var columnName = params.tableColumn.column.name;\n var value = getCellValue(row, columnName);\n var collapsedRows = getCollapsedRows(row);\n return createElement(TemplatePlaceholder, {\n name: \"valueFormatter\",\n params: {\n value: value,\n row: row,\n column: params.tableColumn.column\n }\n }, function (content) {\n return createElement(Cell, _assign({}, params, {\n row: row,\n column: params.tableColumn.column,\n value: value\n }), createElement(Indent, {\n level: getTreeRowLevel(row)\n }), createElement(ExpandButton, {\n visible: collapsedRows ? !!collapsedRows.length : !isTreeRowLeaf(row),\n expanded: expandedRowIds.indexOf(rowId) > -1,\n onToggle: function onToggle() {\n return toggleRowExpanded({\n rowId: rowId\n });\n }\n }), showSelectionControls && createElement(Checkbox, {\n disabled: false,\n checked: selection.indexOf(rowId) > -1,\n indeterminate: false,\n onChange: function onChange() {\n return toggleSelection({\n rowIds: [rowId]\n });\n }\n }), createElement(Content, null, content || value));\n });\n });\n }));\n };\n\n TableTreeColumnBase.defaultProps = {\n showSelectionControls: false,\n showSelectAll: false\n };\n TableTreeColumnBase.components = {\n cellComponent: 'Cell',\n contentComponent: 'Content',\n indentComponent: 'Indent',\n expandButtonComponent: 'ExpandButton',\n checkboxComponent: 'Checkbox'\n };\n return TableTreeColumnBase;\n}(PureComponent);\n/** A plugin that renders a table column with a toggle button and sorting indicators. */\n\n\nvar TableTreeColumn = TableTreeColumnBase;\n\nvar SearchStateBase = /*#__PURE__*/function (_super) {\n __extends(SearchStateBase, _super);\n\n function SearchStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n value: props.value || props.defaultValue\n };\n var stateHelper = createStateHelper(_this, {\n value: function value() {\n var onValueChange = _this.props.onValueChange;\n return onValueChange;\n }\n });\n _this.changeValue = stateHelper.applyFieldReducer.bind(stateHelper, 'value', changeSearchValue);\n return _this;\n }\n\n SearchStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.value,\n value = _a === void 0 ? prevState.value : _a;\n return {\n value: value\n };\n };\n\n SearchStateBase.prototype.render = function () {\n var value = this.state.value;\n\n var filterExpressionComputed = function filterExpressionComputed(_a) {\n var filterExpression = _a.filterExpression,\n columns = _a.columns;\n return searchFilterExpression(value, columns, filterExpression);\n };\n\n return createElement(Plugin, {\n name: \"SearchState\"\n }, createElement(Getter, {\n name: \"filterExpression\",\n computed: filterExpressionComputed\n }), createElement(Getter, {\n name: \"searchValue\",\n value: value\n }), createElement(Action, {\n name: \"changeSearchValue\",\n action: this.changeValue\n }));\n };\n\n SearchStateBase.defaultProps = {\n defaultValue: ''\n };\n return SearchStateBase;\n}(PureComponent);\n/** A plugin that manages the search state. */\n\n\nvar SearchState = SearchStateBase;\nvar pluginDependencies$i = [{\n name: 'Toolbar'\n}, {\n name: 'SearchState'\n}];\nvar defaultMessages$7 = {\n searchPlaceholder: 'Search...'\n};\n\nvar SearchPanelBase = /*#__PURE__*/function (_super) {\n __extends(SearchPanelBase, _super);\n\n function SearchPanelBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SearchPanelBase.prototype.render = function () {\n var _a = this.props,\n Input = _a.inputComponent,\n messages = _a.messages;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$7), messages));\n return createElement(Plugin, {\n name: \"SearchPanel\",\n dependencies: pluginDependencies$i\n }, createElement(Template, {\n name: \"toolbarContent\"\n }, createElement(TemplatePlaceholder, null), createElement(TemplateConnector, null, function (_a, _b) {\n var searchValue = _a.searchValue,\n isDataRemote = _a.isDataRemote;\n var changeSearchValue = _b.changeSearchValue,\n scrollToRow = _b.scrollToRow;\n\n var onValueChange = function onValueChange(value) {\n if (isDataRemote) {\n scrollToRow(TOP_POSITION);\n }\n\n changeSearchValue(value);\n };\n\n return createElement(Input, {\n value: searchValue,\n onValueChange: onValueChange,\n getMessage: getMessage\n });\n })));\n };\n\n SearchPanelBase.defaultProps = {\n messages: {}\n };\n SearchPanelBase.components = {\n inputComponent: 'Input'\n };\n return SearchPanelBase;\n}(PureComponent);\n/** A plugin that renders the Search Panel. */\n\n\nvar SearchPanel = SearchPanelBase;\n\nvar tableHeaderRowsComputed$2 = function tableHeaderRowsComputed$2(_a) {\n var tableHeaderRows = _a.tableHeaderRows;\n return tableHeaderRowsWithFixed(tableHeaderRows);\n};\n\nvar tableHeaderColumnChainsComputed = function tableHeaderColumnChainsComputed(_a) {\n var tableColumns = _a.tableColumns,\n tableHeaderRows = _a.tableHeaderRows,\n tableHeaderColumnChains = _a.tableHeaderColumnChains;\n return tableHeaderColumnChainsWithFixed(tableHeaderColumnChains, tableHeaderRows, tableColumns);\n};\n\nvar CellPlaceholder$2 = function CellPlaceholder$2(props) {\n return createElement(TemplatePlaceholder, {\n params: props\n });\n};\n\nvar pluginDependencies$j = [{\n name: 'Table'\n}, {\n name: 'TableBandHeader',\n optional: true\n}, {\n name: 'TableColumnReordering',\n optional: true\n}, {\n name: 'TableEditColumn',\n optional: true\n}, {\n name: 'TableEditRow',\n optional: true\n}, {\n name: 'TableFilterRow',\n optional: true\n}, {\n name: 'TableGroupRow',\n optional: true\n}, {\n name: 'TableHeaderRow',\n optional: true\n}, {\n name: 'TableRowDetail',\n optional: true\n}, {\n name: 'TableSelection',\n optional: true\n}, {\n name: 'TableSummaryRow',\n optional: true\n}, {\n name: 'TableTreeColumn',\n optional: true\n}]; // tslint:disable-next-line: max-line-length\n\nvar TableFixedColumnsBase = /*#__PURE__*/function (_super) {\n __extends(TableFixedColumnsBase, _super);\n\n function TableFixedColumnsBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n tableColumnDimensions: {}\n };\n return _this;\n }\n\n TableFixedColumnsBase.prototype.handleListenerSizeChange = function (key, width) {\n var tableColumnDimensions = this.state.tableColumnDimensions;\n\n if (tableColumnDimensions[key] !== width) {\n this.setState(function (state) {\n var _a;\n\n return {\n tableColumnDimensions: _assign(_assign({}, state.tableColumnDimensions), (_a = {}, _a[key] = width, _a))\n };\n });\n }\n };\n\n TableFixedColumnsBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n Cell = _a.cellComponent,\n ListenerRow = _a.listenerRowComponent,\n ListenerCell = _a.listenerCellComponent;\n var leftColumns = this.props.leftColumns;\n var rightColumns = this.props.rightColumns;\n\n var tableColumnsComputed = function tableColumnsComputed(_a) {\n var tableColumns = _a.tableColumns;\n return tableColumnsWithFixed(tableColumns, leftColumns, rightColumns);\n };\n\n return createElement(Plugin, {\n name: \"TableFixedColumns\",\n dependencies: pluginDependencies$j\n }, createElement(Getter, {\n name: \"tableHeaderRows\",\n computed: tableHeaderRowsComputed$2\n }), createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }), createElement(Getter, {\n name: \"tableHeaderColumnChains\",\n computed: tableHeaderColumnChainsComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableColumn = _a.tableColumn;\n return !!tableColumn.fixed;\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var tableColumns = _a.tableColumns,\n tableHeaderColumnChains = _a.tableHeaderColumnChains,\n selection = _a.selection,\n highlightSelectedRow = _a.highlightSelectedRow;\n var selected = isRowHighlighted(highlightSelectedRow, selection, params.tableRow);\n var tableColumnDimensions = _this.state.tableColumnDimensions;\n var fixedColumnProps = calculateFixedColumnProps(params, {\n leftColumns: leftColumns,\n rightColumns: rightColumns\n }, tableColumns, tableColumnDimensions, tableHeaderColumnChains);\n return createElement(Cell, _assign({}, params, fixedColumnProps, {\n component: CellPlaceholder$2,\n selected: selected\n }));\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isFixedTableRow(tableRow);\n }\n }, function (params) {\n return createElement(ListenerRow, _assign({}, params));\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isFixedTableRow(tableRow);\n }\n }, function (params) {\n return createElement(ListenerCell, _assign({}, params, {\n listen: !!params.tableColumn.fixed,\n onSizeChange: function onSizeChange(_a) {\n var width = _a.width;\n return _this.handleListenerSizeChange(params.tableColumn.key, width);\n }\n }));\n }));\n };\n\n TableFixedColumnsBase.components = {\n cellComponent: 'Cell',\n listenerRowComponent: 'ListenerRow',\n listenerCellComponent: 'ListenerCell'\n };\n TableFixedColumnsBase.defaultProps = {\n leftColumns: [],\n rightColumns: []\n };\n return TableFixedColumnsBase;\n}(PureComponent);\n/** A plugin that enables you to fix columns to the left and right sides of the grid. */\n\n\nvar TableFixedColumns = TableFixedColumnsBase;\n\nvar groupSummaryItemsComputed = function groupSummaryItemsComputed(_a) {\n var groupSummaryItems = _a.groupSummaryItems;\n return prepareGroupSummaryItems(groupSummaryItems);\n};\n\nvar SummaryStateBase = /*#__PURE__*/function (_super) {\n __extends(SummaryStateBase, _super);\n\n function SummaryStateBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SummaryStateBase.prototype.render = function () {\n var _a = this.props,\n totalItems = _a.totalItems,\n groupItems = _a.groupItems,\n treeItems = _a.treeItems;\n return createElement(Plugin, {\n name: \"SummaryState\"\n }, createElement(Getter, {\n name: \"totalSummaryItems\",\n value: totalItems\n }), createElement(Getter, {\n name: \"groupSummaryItems\",\n value: groupItems\n }), createElement(Getter, {\n name: \"groupSummaryItems\",\n computed: groupSummaryItemsComputed\n }), createElement(Getter, {\n name: \"treeSummaryItems\",\n value: treeItems\n }));\n };\n\n SummaryStateBase.defaultProps = {\n totalItems: [],\n groupItems: [],\n treeItems: []\n };\n return SummaryStateBase;\n}(PureComponent);\n/** A plugin that provides items for total, group, and tree summaries. */\n\n\nvar SummaryState = SummaryStateBase;\nvar pluginDependencies$k = [{\n name: 'SummaryState'\n}, {\n name: 'IntegratedGrouping',\n optional: true\n}];\n\nvar IntegratedSummaryBase = /*#__PURE__*/function (_super) {\n __extends(IntegratedSummaryBase, _super);\n\n function IntegratedSummaryBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n IntegratedSummaryBase.prototype.render = function () {\n var calculator = this.props.calculator;\n\n var totalSummaryValuesComputed = function totalSummaryValuesComputed(_a) {\n var rows = _a.rows,\n totalSummaryItems = _a.totalSummaryItems,\n getCellValue = _a.getCellValue,\n getRowLevelKey = _a.getRowLevelKey,\n isGroupRow = _a.isGroupRow,\n getCollapsedRows = _a.getCollapsedRows;\n return totalSummaryValues(rows, totalSummaryItems, getCellValue, getRowLevelKey, isGroupRow, getCollapsedRows, calculator);\n };\n\n var groupSummaryValuesComputed = function groupSummaryValuesComputed(_a) {\n var rows = _a.rows,\n groupSummaryItems = _a.groupSummaryItems,\n getCellValue = _a.getCellValue,\n getRowLevelKey = _a.getRowLevelKey,\n isGroupRow = _a.isGroupRow,\n getCollapsedRows = _a.getCollapsedRows;\n return groupSummaryValues(rows, groupSummaryItems, getCellValue, getRowLevelKey, isGroupRow, getCollapsedRows, calculator);\n };\n\n var treeSummaryValuesComputed = function treeSummaryValuesComputed(_a) {\n var rows = _a.rows,\n treeSummaryItems = _a.treeSummaryItems,\n getCellValue = _a.getCellValue,\n getRowLevelKey = _a.getRowLevelKey,\n isGroupRow = _a.isGroupRow,\n getRowId = _a.getRowId;\n return treeSummaryValues(rows, treeSummaryItems, getCellValue, getRowLevelKey, isGroupRow, getRowId, calculator);\n };\n\n return createElement(Plugin, {\n name: \"IntegratedSummary\",\n dependencies: pluginDependencies$k\n }, createElement(Getter, {\n name: \"totalSummaryValues\",\n computed: totalSummaryValuesComputed\n }), createElement(Getter, {\n name: \"groupSummaryValues\",\n computed: groupSummaryValuesComputed\n }), createElement(Getter, {\n name: \"treeSummaryValues\",\n computed: treeSummaryValuesComputed\n }));\n };\n\n IntegratedSummaryBase.defaultCalculator = defaultSummaryCalculator;\n return IntegratedSummaryBase;\n}(PureComponent);\n/** A plugin that performs a built-in data summary calculation. */\n\n\nvar IntegratedSummary = IntegratedSummaryBase;\nvar pluginDependencies$l = [{\n name: 'SummaryState'\n}];\n\nvar CustomSummaryBase = /*#__PURE__*/function (_super) {\n __extends(CustomSummaryBase, _super);\n\n function CustomSummaryBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CustomSummaryBase.prototype.render = function () {\n var _a = this.props,\n totalValues = _a.totalValues,\n groupValues = _a.groupValues,\n treeValues = _a.treeValues;\n return createElement(Plugin, {\n name: \"CustomSummary\",\n dependencies: pluginDependencies$l\n }, createElement(Getter, {\n name: \"totalSummaryValues\",\n value: totalValues\n }), createElement(Getter, {\n name: \"groupSummaryValues\",\n value: groupValues\n }), createElement(Getter, {\n name: \"treeSummaryValues\",\n value: treeValues\n }));\n };\n\n return CustomSummaryBase;\n}(PureComponent);\n/** A plugin that allows you to calculate a custom summary. */\n\n\nvar CustomSummary = CustomSummaryBase;\nvar dependencies$1 = [{\n name: 'DataTypeProvider',\n optional: true\n}, {\n name: 'SummaryState'\n}, {\n name: 'CustomSummary',\n optional: true\n}, {\n name: 'IntegratedSummary',\n optional: true\n}, {\n name: 'Table'\n}, {\n name: 'TableTreeColumn',\n optional: true\n}];\n\nvar tableBodyRowsComputed$2 = function tableBodyRowsComputed$2(_a) {\n var tableBodyRows = _a.tableBodyRows,\n getRowLevelKey = _a.getRowLevelKey,\n isGroupRow = _a.isGroupRow,\n getRowId = _a.getRowId,\n groupSummaryItems = _a.groupSummaryItems,\n treeSummaryItems = _a.treeSummaryItems;\n return tableRowsWithSummaries(tableBodyRows, groupSummaryItems, treeSummaryItems, getRowLevelKey, isGroupRow, getRowId);\n};\n\nvar tableFooterRowsComputed = function tableFooterRowsComputed(_a) {\n var tableFooterRows = _a.tableFooterRows,\n totalSummaryItems = _a.totalSummaryItems;\n return totalSummaryItems.length ? tableRowsWithTotalSummaries(tableFooterRows) : tableFooterRows;\n};\n\nvar TableSummaryRowBase = /*#__PURE__*/function (_super) {\n __extends(TableSummaryRowBase, _super);\n\n function TableSummaryRowBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableSummaryRowBase.prototype.renderContent = function (column, columnSummaries) {\n var _a = this.props,\n formatlessSummaryTypes = _a.formatlessSummaryTypes,\n Item = _a.itemComponent,\n messages = _a.messages;\n return createElement(TableSummaryContent, {\n column: column,\n columnSummaries: columnSummaries,\n formatlessSummaryTypes: formatlessSummaryTypes,\n itemComponent: Item,\n messages: messages\n });\n };\n\n TableSummaryRowBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n TotalRow = _a.totalRowComponent,\n GroupRow = _a.groupRowComponent,\n TreeRow = _a.treeRowComponent,\n TotalCell = _a.totalCellComponent,\n GroupCell = _a.groupCellComponent,\n TreeCell = _a.treeCellComponent,\n TreeColumnCell = _a.treeColumnCellComponent,\n TreeColumnContent = _a.treeColumnContentComponent,\n TreeColumnIndent = _a.treeColumnIndentComponent;\n return createElement(Plugin, {\n name: \"TableSummaryRow\",\n dependencies: dependencies$1\n }, createElement(Getter, {\n name: \"tableBodyRows\",\n computed: tableBodyRowsComputed$2\n }), createElement(Getter, {\n name: \"tableFooterRows\",\n computed: tableFooterRowsComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isTotalSummaryTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var totalSummaryItems = _a.totalSummaryItems,\n totalSummaryValues = _a.totalSummaryValues;\n var columnSummaries = getColumnSummaries(totalSummaryItems, params.tableColumn.column.name, totalSummaryValues);\n return createElement(TotalCell, _assign({}, params, {\n column: params.tableColumn.column\n }), _this.renderContent(params.tableColumn.column, columnSummaries));\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isGroupSummaryTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var groupSummaryItems = _a.groupSummaryItems,\n groupSummaryValues = _a.groupSummaryValues;\n var columnSummaries = getColumnSummaries(groupSummaryItems, params.tableColumn.column.name, groupSummaryValues[params.tableRow.row.compoundKey], function (summaryItem) {\n return isFooterSummary(summaryItem);\n });\n return createElement(GroupCell, _assign({}, params, {\n column: params.tableColumn.column\n }), _this.renderContent(params.tableColumn.column, columnSummaries));\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return isTreeSummaryTableCell(tableRow, tableColumn);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var treeSummaryItems = _a.treeSummaryItems,\n treeSummaryValues = _a.treeSummaryValues,\n tableTreeColumnName = _a.tableTreeColumnName,\n getRowId = _a.getRowId,\n getTreeRowLevel = _a.getTreeRowLevel;\n var columnSummaries = getColumnSummaries(treeSummaryItems, params.tableColumn.column.name, treeSummaryValues[getRowId(params.tableRow.row)]);\n\n if (tableTreeColumnName === params.tableColumn.column.name) {\n return createElement(TreeColumnCell, _assign({}, params, {\n column: params.tableColumn.column\n }), createElement(TreeColumnIndent, {\n level: getTreeRowLevel(params.tableRow.row)\n }), createElement(TreeColumnContent, null, _this.renderContent(params.tableColumn.column, columnSummaries)));\n }\n\n return createElement(TreeCell, _assign({}, params, {\n column: params.tableColumn.column\n }), _this.renderContent(params.tableColumn.column, columnSummaries));\n });\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isTotalSummaryTableRow(tableRow);\n }\n }, function (params) {\n return createElement(TotalRow, _assign({}, params));\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isGroupSummaryTableRow(tableRow);\n }\n }, function (params) {\n return createElement(GroupRow, _assign({}, params));\n }), createElement(Template, {\n name: \"tableRow\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isTreeSummaryTableRow(tableRow);\n }\n }, function (params) {\n return createElement(TreeRow, _assign({}, params));\n }));\n };\n\n TableSummaryRowBase.TREE_ROW_TYPE = TABLE_TREE_SUMMARY_TYPE;\n TableSummaryRowBase.GROUP_ROW_TYPE = TABLE_GROUP_SUMMARY_TYPE;\n TableSummaryRowBase.TOTAL_ROW_TYPE = TABLE_TOTAL_SUMMARY_TYPE;\n TableSummaryRowBase.defaultProps = {\n formatlessSummaryTypes: [],\n messages: {}\n };\n TableSummaryRowBase.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 return TableSummaryRowBase;\n}(PureComponent);\n/** A plugin that renders table rows that display a total, group, and tree summary. */\n\n\nvar TableSummaryRow = TableSummaryRowBase;\n\nvar virtualRowsComputed = function virtualRowsComputed(_a) {\n var skip = _a.skip,\n rows = _a.rows,\n virtualRowsCache = _a.virtualRowsCache;\n return virtualRowsWithCache(skip, rows, virtualRowsCache);\n};\n\nvar rowsComputed = function rowsComputed(_a) {\n var virtualRows = _a.virtualRows,\n availableRowCount = _a.availableRowCount;\n return plainRows(virtualRows, availableRowCount);\n};\n\nvar loadedRowsStartComputed = function loadedRowsStartComputed(_a) {\n var virtualRows = _a.virtualRows;\n return loadedRowsStart(virtualRows);\n}; // tslint:disable-next-line: max-line-length\n\n\nvar VirtualTableStateBase = /*#__PURE__*/function (_super) {\n __extends(VirtualTableStateBase, _super);\n\n function VirtualTableStateBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.requestTimer = 0;\n\n _this.setViewport = function (viewport, _a, _b) {\n var virtualRows = _a.virtualRows;\n var requestNextPage = _b.requestNextPage;\n var pageSize = _this.props.pageSize;\n var referenceIndex = getReferenceIndex(viewport);\n\n if (needFetchMorePages(virtualRows, referenceIndex, pageSize)) {\n requestNextPage({\n referenceIndex: referenceIndex\n });\n }\n };\n\n _this.requestNextPageAction = function (_a, _b) {\n var referenceIndex = _a.referenceIndex,\n forceReload = _a.forceReload;\n var virtualRows = _b.virtualRows;\n var _c = _this.props,\n pageSize = _c.pageSize,\n totalRowCount = _c.totalRowCount,\n infiniteScrolling = _c.infiniteScrolling;\n var requestedStartIndex = _this.state.requestedStartIndex;\n var actualVirtualRows = forceReload ? emptyVirtualRows : virtualRows;\n\n var _d = getRequestMeta(referenceIndex, virtualRows, pageSize, totalRowCount, forceReload, infiniteScrolling),\n requestedRange = _d.requestedRange,\n actualBounds = _d.actualBounds;\n\n if (forceReload || shouldSendRequest(requestedRange, requestedStartIndex)) {\n _this.requestNextPage(requestedRange, actualVirtualRows, actualBounds);\n }\n };\n\n _this.clearRowsCacheAction = function (_, __, _a) {\n var requestNextPage = _a.requestNextPage;\n\n _this.setState({\n virtualRowsCache: emptyVirtualRows\n });\n\n requestNextPage({\n forceReload: true\n });\n };\n\n _this.resetVirtualTablePosition = function () {\n return _this.requestFirstPage();\n };\n\n _this.state = {\n virtualRowsCache: emptyVirtualRows,\n requestedStartIndex: -1,\n availableRowCount: props.totalRowCount || 0\n };\n return _this;\n }\n\n VirtualTableStateBase.prototype.requestNextPage = function (requestedRange, virtualRows, actualBounds) {\n var _this = this;\n\n var _a = this.props,\n getRows = _a.getRows,\n infiniteScrolling = _a.infiniteScrolling,\n totalRowCount = _a.totalRowCount;\n var stateAvailableCount = this.state.availableRowCount;\n\n if (this.requestTimer !== 0) {\n clearTimeout(this.requestTimer);\n }\n\n this.requestTimer = window.setTimeout(function () {\n var requestedStartIndex = requestedRange.start,\n end = requestedRange.end;\n var loadCount = end - requestedStartIndex;\n var virtualRowsCache = trimRowsToInterval(virtualRows, actualBounds);\n var availableRowCount = getAvailableRowCount(infiniteScrolling, actualBounds.end, stateAvailableCount, totalRowCount);\n getRows(requestedStartIndex, loadCount);\n\n _this.setState({\n virtualRowsCache: virtualRowsCache,\n availableRowCount: availableRowCount,\n requestedStartIndex: requestedStartIndex\n });\n }, 50);\n };\n\n VirtualTableStateBase.prototype.requestFirstPage = function () {\n var _this = this;\n\n var _a = this.props,\n getRows = _a.getRows,\n pageSize = _a.pageSize;\n\n if (this.requestTimer !== 0) {\n clearTimeout(this.requestTimer);\n }\n\n this.requestTimer = window.setTimeout(function () {\n getRows(0, 2 * pageSize);\n\n _this.setState({\n virtualRowsCache: emptyVirtualRows,\n requestedStartIndex: 0\n });\n }, 50);\n };\n\n VirtualTableStateBase.getDerivedStateFromProps = function (nextProps, prevState) {\n var _a = nextProps.availableRowCount,\n prevAvailableRowCount = _a === void 0 ? prevState.availableRowCount : _a,\n totalRowCount = nextProps.totalRowCount,\n pageSize = nextProps.pageSize,\n infiniteScrolling = nextProps.infiniteScrolling;\n var prevRequestedStartIndex = prevState.requestedStartIndex,\n prevVirtualRowCache = prevState.virtualRowsCache;\n var availableRowCount = getAvailableRowCount(infiniteScrolling, pageSize * 2, prevAvailableRowCount, totalRowCount);\n var requestedStartIndex = Math.max(Math.min(prevRequestedStartIndex, availableRowCount - pageSize), 0);\n var virtualRowsCache = prevRequestedStartIndex === requestedStartIndex ? prevVirtualRowCache : emptyVirtualRows;\n return {\n availableRowCount: availableRowCount,\n requestedStartIndex: requestedStartIndex,\n virtualRowsCache: virtualRowsCache\n };\n };\n\n VirtualTableStateBase.prototype.componentDidMount = function () {\n var _a = this.props,\n getRows = _a.getRows,\n pageSize = _a.pageSize,\n infiniteScrolling = _a.infiniteScrolling,\n totalRowCount = _a.totalRowCount;\n getRows(0, 2 * pageSize);\n var newRowCount = infiniteScrolling ? 2 * pageSize : totalRowCount;\n this.setState({\n availableRowCount: newRowCount\n });\n };\n\n VirtualTableStateBase.prototype.componentWillUnmount = function () {\n if (this.requestTimer !== 0) {\n window.clearTimeout(this.requestTimer);\n }\n };\n\n VirtualTableStateBase.prototype.render = function () {\n var _a = this.state,\n virtualRowsCache = _a.virtualRowsCache,\n availableRowCount = _a.availableRowCount;\n var _b = this.props,\n skip = _b.skip,\n pageSize = _b.pageSize,\n loading = _b.loading,\n infiniteScrolling = _b.infiniteScrolling;\n return createElement(Plugin, {\n name: \"VirtualTableState\"\n }, createElement(Getter, {\n name: \"isDataRemote\",\n value: true\n }), createElement(Getter, {\n name: \"isDataLoading\",\n value: loading\n }), createElement(Getter, {\n name: \"isScrollingInfinite\",\n value: infiniteScrolling\n }), createElement(Getter, {\n name: \"skip\",\n value: skip\n }), createElement(Getter, {\n name: \"virtualRowsCache\",\n value: virtualRowsCache\n }), createElement(Getter, {\n name: \"pageSize\",\n value: pageSize\n }), createElement(Getter, {\n name: \"availableRowCount\",\n value: availableRowCount\n }), createElement(Getter, {\n name: \"virtualRows\",\n computed: virtualRowsComputed\n }), createElement(Getter, {\n name: \"rows\",\n computed: rowsComputed\n }), createElement(Getter, {\n name: \"loadedRowsStart\",\n computed: loadedRowsStartComputed\n }), createElement(Action, {\n name: \"requestNextPage\",\n action: this.requestNextPageAction\n }), createElement(Action, {\n name: \"setViewport\",\n action: this.setViewport\n }), createElement(Action, {\n name: \"clearRowCache\",\n action: this.clearRowsCacheAction\n }), createElement(Action, {\n name: \"changeColumnSorting\",\n action: this.clearRowsCacheAction\n }), createElement(Action, {\n name: \"changeColumnFilter\",\n action: this.resetVirtualTablePosition\n }), createElement(Action, {\n name: \"changeSearchValue\",\n action: this.resetVirtualTablePosition\n }), createElement(Action, {\n name: \"changeColumnGrouping\",\n action: this.resetVirtualTablePosition\n }));\n };\n\n VirtualTableStateBase.defaultProps = {\n pageSize: 100\n };\n return VirtualTableStateBase;\n}(PureComponent);\n\nvar VirtualTableState = VirtualTableStateBase;\nvar pluginDependencies$m = [{\n name: 'EditingState'\n}, {\n name: 'Table'\n}, {\n name: 'DataTypeProvider',\n optional: true\n}];\n\nvar rowsWithEditingCellsComputed = function rowsWithEditingCellsComputed(_a) {\n var tableBodyRows = _a.tableBodyRows,\n editingCells = _a.editingCells;\n return rowsWithEditingCells(tableBodyRows, editingCells);\n};\n\nvar columnsWithEditingCellsComputed = function columnsWithEditingCellsComputed(_a) {\n var tableColumns = _a.tableColumns,\n editingCells = _a.editingCells;\n return columnsWithEditingCells(tableColumns, editingCells);\n};\n/* tslint:disable-next-line max-line-length*/\n\n\nvar INLINE_CELL_EDITING_ERROR = 'The startEditAction property of the InlineCellEditing plugin is given an invalid value.'; // tslint:disable-next-line: max-line-length\n\nvar TableInlineCellEditingBase = function TableInlineCellEditingBase(props) {\n var EditCell = props.cellComponent,\n startEditAction = props.startEditAction,\n selectTextOnEditStart = props.selectTextOnEditStart;\n return createElement(Plugin, {\n name: \"TableInlineCellEditing\",\n dependencies: pluginDependencies$m\n }, createElement(Getter, {\n name: \"tableBodyRows\",\n computed: rowsWithEditingCellsComputed\n }), createElement(Getter, {\n name: \"tableColumns\",\n computed: columnsWithEditingCellsComputed\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return tableRow.type === TABLE_DATA_TYPE && tableColumn.type === TABLE_DATA_TYPE;\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var _c;\n\n var startEditCells = _b.startEditCells;\n var rowId = params.tableRow.rowId,\n column = params.tableColumn.column;\n var columnName = column.name;\n\n if (startEditAction !== 'click' && startEditAction !== 'doubleClick') {\n throw new Error(INLINE_CELL_EDITING_ERROR);\n }\n\n var startEditCellCallback = function startEditCellCallback() {\n return startEditCells({\n editingCells: [{\n rowId: rowId,\n columnName: columnName\n }]\n });\n };\n\n var eventName = startEditAction === 'click' ? 'onClick' : 'onDoubleClick';\n\n var newParams = _assign(_assign({}, params), (_c = {}, _c[eventName] = startEditCellCallback, _c));\n\n return createElement(TemplatePlaceholder, {\n params: newParams\n });\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow,\n tableColumn = _a.tableColumn;\n return tableRow.hasEditCell && tableColumn.hasEditCell;\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var getCellValue = _a.getCellValue,\n createRowChange = _a.createRowChange,\n rowChanges = _a.rowChanges,\n isColumnEditingEnabled = _a.isColumnEditingEnabled;\n var changeRow = _b.changeRow,\n stopEditCells = _b.stopEditCells,\n commitChangedRows = _b.commitChangedRows,\n cancelChangedRows = _b.cancelChangedRows;\n var _c = params.tableRow,\n rowId = _c.rowId,\n row = _c.row,\n column = params.tableColumn.column;\n var columnName = column.name;\n\n var changedRow = _assign(_assign({}, row), getRowChange(rowChanges, rowId));\n\n var value = getCellValue(changedRow, columnName);\n\n var onValueChange = function onValueChange(newValue) {\n var changeArgs = {\n rowId: rowId,\n change: createRowChange(changedRow, newValue, columnName)\n };\n changeRow(changeArgs);\n };\n\n var onKeyDown = function onKeyDown(_a) {\n var key = _a.key;\n\n if (key === 'Enter') {\n commitChangedRows({\n rowIds: [rowId]\n });\n stopEditCells({\n editingCells: [{\n rowId: rowId,\n columnName: columnName\n }]\n });\n } else if (key === 'Escape') {\n cancelChangedRows({\n rowIds: [rowId]\n });\n stopEditCells({\n editingCells: [{\n rowId: rowId,\n columnName: columnName\n }]\n });\n }\n };\n\n var onBlur = function onBlur() {\n commitChangedRows({\n rowIds: [rowId]\n });\n stopEditCells({\n editingCells: [{\n rowId: rowId,\n columnName: columnName\n }]\n });\n };\n\n var onFocus = selectTextOnEditStart ? function (e) {\n return e.target.select();\n } : function () {};\n var editingEnabled = isColumnEditingEnabled(columnName);\n return createElement(TemplatePlaceholder, {\n name: \"valueEditor\",\n params: {\n column: column,\n row: row,\n value: value,\n onValueChange: onValueChange,\n disabled: !editingEnabled\n }\n }, function (content) {\n return createElement(EditCell, _assign({}, params, {\n row: row,\n column: column,\n value: value,\n editingEnabled: editingEnabled,\n onValueChange: onValueChange,\n autoFocus: true,\n onKeyDown: onKeyDown,\n onBlur: onBlur,\n onFocus: onFocus\n }), content);\n });\n });\n }));\n};\n\nTableInlineCellEditingBase.components = {\n cellComponent: 'Cell'\n};\nTableInlineCellEditingBase.defaultProps = {\n startEditAction: 'click',\n selectTextOnEditStart: false\n}; // tslint:disable-next-line: max-line-length\n\nvar TableInlineCellEditing = TableInlineCellEditingBase;\nvar defaultMessages$8 = {\n showExportMenu: 'Export',\n exportAll: 'Export all data',\n exportSelected: 'Export selected rows'\n};\n\nvar ExportPanelBase = /*#__PURE__*/function (_super) {\n __extends(ExportPanelBase, _super);\n\n function ExportPanelBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n visible: false\n };\n\n _this.setButtonRef = function (button) {\n return _this.button = button;\n };\n\n _this.handleToggle = function () {\n var visible = _this.state.visible;\n\n _this.setState({\n visible: !visible\n });\n };\n\n _this.handleHide = function () {\n return _this.setState({\n visible: false\n });\n };\n\n return _this;\n }\n\n ExportPanelBase.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n ToggleButton = _a.toggleButtonComponent,\n Menu = _a.menuComponent,\n MenuItem = _a.menuItemComponent,\n messages = _a.messages,\n startExport = _a.startExport;\n var visible = this.state.visible;\n var getMessage = getMessagesFormatter(_assign(_assign({}, defaultMessages$8), messages));\n return createElement(Plugin, {\n name: \"ExportPanel\",\n dependencies: [{\n name: 'SelectionState',\n optional: true\n }, {\n name: 'Toolbar'\n }]\n }, createElement(Template, {\n name: \"toolbarContent\"\n }, createElement(TemplatePlaceholder, null), createElement(TemplateConnector, null, function (_a) {\n var selection = _a.selection;\n return createElement(Fragment, null, createElement(ToggleButton, {\n buttonRef: _this.setButtonRef,\n onToggle: _this.handleToggle,\n getMessage: getMessage\n }), createElement(Menu, {\n visible: visible,\n onHide: _this.handleHide,\n target: _this.button\n }, createElement(MenuItem, {\n key: \"exportAll\",\n text: getMessage('exportAll'),\n onClick: function onClick() {\n _this.handleHide();\n\n startExport();\n }\n }), (selection === null || selection === void 0 ? void 0 : selection.length) ? createElement(MenuItem, {\n key: \"exportSelected\",\n text: getMessage('exportSelected'),\n onClick: function onClick() {\n _this.handleHide();\n\n startExport({\n selectedOnly: true\n });\n }\n }) : null));\n })));\n };\n\n ExportPanelBase.components = {\n toggleButtonComponent: 'ToggleButton',\n menuComponent: 'Menu',\n menuItemComponent: 'MenuItem'\n };\n return ExportPanelBase;\n}(PureComponent);\n\nvar ExportPanel = ExportPanelBase;\n\nvar getRowStyle = function getRowStyle(_a) {\n var row = _a.row;\n return row.height !== undefined ? {\n height: row.height + \"px\"\n } : undefined;\n};\n\nvar isNumber = function isNumber(value) {\n return typeof value === 'number' || !Number.isNaN(Number(value));\n};\n/* globals requestAnimationFrame cancelAnimationFrame */\n\n\nvar TableLayoutBase = /*#__PURE__*/function (_super) {\n __extends(TableLayoutBase, _super);\n\n function TableLayoutBase(props) {\n var _this = _super.call(this, props) || this;\n\n _this.savedOffsetWidth = -1;\n _this.raf = -1;\n _this.state = {\n animationState: new Map()\n };\n _this.animations = new Map();\n _this.savedScrollWidth = {};\n _this.tableRef = createRef();\n return _this;\n }\n\n TableLayoutBase.prototype.componentDidUpdate = function (prevProps) {\n var columns = this.props.columns;\n var prevColumns = prevProps.columns;\n var animationState = this.state.animationState;\n var activeAnimationExists = !shallowEqual(columns, prevColumns) || !!animationState.size || !!this.animations.size; // 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\n if (activeAnimationExists) {\n this.processAnimation(prevColumns);\n }\n };\n\n TableLayoutBase.prototype.processAnimation = function (prevColumns) {\n var columns = this.props.columns;\n var tableWidth = this.getTableWidth(prevColumns, columns);\n this.animations = getAnimations(prevColumns, columns, tableWidth, this.animations);\n cancelAnimationFrame(this.raf);\n this.raf = requestAnimationFrame(this.processAnimationFrame.bind(this));\n };\n\n TableLayoutBase.prototype.getTableWidth = function (prevColumns, columns) {\n var _a = this.tableRef.current,\n offsetWidth = _a.offsetWidth,\n scrollWidth = _a.scrollWidth;\n var animationState = this.state.animationState;\n var widthChanged = this.savedOffsetWidth !== offsetWidth || !this.savedScrollWidth[columns.length];\n var 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 TableLayoutBase.prototype.getColumns = function () {\n var columns = this.props.columns;\n var animationState = this.state.animationState;\n var result = columns;\n var isFixedWidth = columns.filter(function (column) {\n return column.width === undefined || column.width === 'auto';\n }).length === 0;\n\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 = __spread(result, [{\n key: TABLE_FLEX_TYPE.toString(),\n type: TABLE_FLEX_TYPE\n }]);\n }\n\n if (animationState.size) {\n result = result.map(function (column) {\n return animationState.has(column.key) ? _assign(_assign({}, column), {\n animationState: animationState.get(column.key)\n }) : column;\n });\n }\n\n return result;\n };\n\n TableLayoutBase.prototype.processAnimationFrame = function () {\n var animationComponentState = this.state.animationState;\n this.animations = filterActiveAnimations(this.animations);\n\n if (!this.animations.size) {\n if (animationComponentState.size) {\n this.setState({\n animationState: new Map()\n });\n }\n\n return;\n }\n\n var animationState = evalAnimations(this.animations);\n this.setState({\n animationState: animationState\n });\n };\n\n TableLayoutBase.prototype.render = function () {\n var _a = this.props,\n Layout = _a.layoutComponent,\n minColumnWidth = _a.minColumnWidth,\n restProps = __rest(_a, [\"layoutComponent\", \"minColumnWidth\"]);\n\n var columns = this.getColumns();\n var minWidth = columns.map(function (column) {\n return column.width || (column.type === TABLE_FLEX_TYPE ? 0 : minColumnWidth);\n }).filter(function (value) {\n return value !== 'auto' && value !== 0;\n }).map(function (value) {\n return isNumber(value) ? value + \"px\" : value;\n }).join(' + ');\n return createElement(Layout, _assign({}, restProps, {\n tableRef: this.tableRef,\n columns: columns,\n minWidth: minWidth,\n minColumnWidth: minColumnWidth\n }));\n };\n\n return TableLayoutBase;\n}(PureComponent);\n/** @internal */\n\n\nvar TableLayout = TableLayoutBase;\n/** @internal */\n\nvar ColumnGroup = /*#__PURE__*/function (_super) {\n __extends(ColumnGroup, _super);\n\n function ColumnGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ColumnGroup.prototype.render = function () {\n var columns = this.props.columns;\n return createElement(\"colgroup\", null, columns.map(function (_a) {\n var key = _a.key,\n width = _a.width;\n var styleWidth = typeof width === 'number' ? width + \"px\" : width;\n return createElement(\"col\", {\n key: key,\n style: width !== undefined ? {\n width: styleWidth\n } : undefined\n });\n }));\n };\n\n return ColumnGroup;\n}(PureComponent);\n\nvar VirtualRowLayout = /*#__PURE__*/function (_super) {\n __extends(VirtualRowLayout, _super);\n\n function VirtualRowLayout() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n VirtualRowLayout.prototype.shouldComponentUpdate = function (nextProps) {\n var _a = this.props,\n prevCells = _a.cells,\n prevRow = _a.row;\n var nextCells = nextProps.cells,\n nextRow = nextProps.row;\n\n if (prevRow !== nextRow || prevCells.length !== nextCells.length) {\n return true;\n }\n\n var propsAreNotEqual = nextCells.some(function (nextCell, i) {\n var prevCell = prevCells[i];\n return prevCell.column !== nextCell.column || prevCell.colSpan !== nextCell.colSpan;\n });\n return propsAreNotEqual;\n };\n\n VirtualRowLayout.prototype.render = function () {\n var _a = this.props,\n row = _a.row,\n cells = _a.cells,\n Row = _a.rowComponent,\n Cell = _a.cellComponent;\n return createElement(Row, {\n tableRow: row,\n style: getRowStyle({\n row: row\n })\n }, cells.map(function (_a) {\n var column = _a.column,\n colSpan = _a.colSpan;\n return createElement(Cell, {\n key: column.key,\n tableRow: row,\n tableColumn: column,\n colSpan: colSpan\n });\n }));\n };\n\n return VirtualRowLayout;\n}(Component); // tslint:disable-next-line: max-line-length\n\n\nvar VirtualTableLayoutBlock = /*#__PURE__*/function (_super) {\n __extends(VirtualTableLayoutBlock, _super);\n\n function VirtualTableLayoutBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n VirtualTableLayoutBlock.prototype.render = function () {\n var _a = this.props,\n name = _a.name,\n tableRef = _a.tableRef,\n collapsedGrid = _a.collapsedGrid,\n minWidth = _a.minWidth,\n blockRefsHandler = _a.blockRefsHandler,\n rowRefsHandler = _a.rowRefsHandler,\n Table = _a.tableComponent,\n Body = _a.bodyComponent,\n cellComponent = _a.cellComponent,\n rowComponent = _a.rowComponent,\n marginBottom = _a.marginBottom;\n return createElement(RefHolder, {\n ref: function ref(_ref) {\n return blockRefsHandler(name, _ref);\n }\n }, createElement(Table, {\n tableRef: tableRef,\n style: _assign({\n minWidth: minWidth + \"px\"\n }, marginBottom ? {\n marginBottom: marginBottom + \"px\"\n } : null)\n }, createElement(ColumnGroup, {\n columns: collapsedGrid.columns\n }), createElement(Body, null, collapsedGrid.rows.map(function (visibleRow) {\n var row = visibleRow.row,\n _a = visibleRow.cells,\n cells = _a === void 0 ? [] : _a;\n return createElement(RefHolder, {\n key: row.key,\n ref: function ref(_ref2) {\n return rowRefsHandler(row, _ref2);\n }\n }, createElement(VirtualRowLayout, {\n row: row,\n cells: cells,\n rowComponent: rowComponent,\n cellComponent: cellComponent\n }));\n }))));\n };\n\n VirtualTableLayoutBlock.defaultProps = {\n blockRefsHandler: function blockRefsHandler() {},\n rowRefsHandler: function rowRefsHandler() {},\n tableRef: createRef()\n };\n return VirtualTableLayoutBlock;\n}(PureComponent);\n\nvar AUTO_HEIGHT = 'auto';\nvar defaultProps$3 = {\n headerRows: [],\n footerRows: [],\n headComponent: function headComponent() {\n return null;\n },\n headTableComponent: function headTableComponent() {\n return null;\n },\n footerComponent: function footerComponent() {\n return null;\n },\n footerTableComponent: function footerTableComponent() {\n return null;\n }\n};\n/** @internal */\n// tslint:disable-next-line: max-line-length\n\nvar VirtualTableLayout = /*#__PURE__*/function (_super) {\n __extends(VirtualTableLayout, _super);\n\n function VirtualTableLayout(props) {\n var _this = _super.call(this, props) || this;\n\n _this.rowRefs = new Map();\n _this.blockRefs = new Map();\n _this.viewportTop = 0;\n _this.containerHeight = 600;\n _this.containerWidth = 800;\n _this.viewportLeft = 0;\n\n _this.getRowHeight = function (row) {\n var rowHeights = _this.state.rowHeights;\n var estimatedRowHeight = _this.props.estimatedRowHeight;\n\n if (row) {\n var storedHeight = rowHeights.get(row.key);\n if (storedHeight !== undefined) return storedHeight;\n if (row.height) return row.height;\n }\n\n return estimatedRowHeight;\n };\n\n _this.registerRowRef = function (row, ref) {\n if (ref === null) {\n _this.rowRefs.delete(row);\n } else {\n _this.rowRefs.set(row, ref);\n }\n };\n\n _this.registerBlockRef = function (name, ref) {\n if (ref === null) {\n _this.blockRefs.delete(name);\n } else {\n _this.blockRefs.set(name, ref);\n }\n };\n\n _this.onScroll = function (e) {\n var node = e.target;\n\n if (_this.shouldSkipScrollEvent(e)) {\n return;\n }\n\n var viewportTop = node.scrollTop,\n viewportLeft = node.scrollLeft;\n _this.viewportTop = viewportTop;\n _this.viewportLeft = viewportLeft;\n\n _this.updateViewport();\n };\n\n _this.handleContainerSizeChange = function (_a) {\n var width = _a.width,\n height = _a.height;\n _this.containerHeight = height;\n _this.containerWidth = width;\n\n _this.updateViewport();\n };\n\n _this.state = {\n rowHeights: new Map(),\n height: 0,\n headerHeight: 0,\n bodyHeight: 0,\n footerHeight: 0,\n visibleRowBoundaries: {}\n };\n var headerHeight = props.headerRows.reduce(function (acc, row) {\n return acc + _this.getRowHeight(row);\n }, 0);\n var footerHeight = props.footerRows.reduce(function (acc, row) {\n return acc + _this.getRowHeight(row);\n }, 0);\n _this.state = _assign(_assign({}, _this.state), {\n headerHeight: headerHeight,\n footerHeight: footerHeight\n });\n _this.getColumnWidthGetter = memoize(function (tableColumns, tableWidth, minColumnWidth) {\n return getColumnWidthGetter(tableColumns, tableWidth, minColumnWidth);\n });\n return _this;\n }\n\n VirtualTableLayout.prototype.componentDidMount = function () {\n this.storeRowHeights();\n this.storeBlockHeights();\n };\n\n VirtualTableLayout.prototype.componentDidUpdate = function (prevProps) {\n this.storeRowHeights();\n this.storeBlockHeights();\n var _a = this.props,\n bodyRows = _a.bodyRows,\n columns = _a.columns; // 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\n var bodyRowsChanged = prevProps.bodyRows !== bodyRows; // Also it's the only place where we can respond to the column count change\n\n var columnCountChanged = prevProps.columns.length !== columns.length;\n\n if (bodyRowsChanged || columnCountChanged) {\n this.updateViewport();\n }\n };\n\n VirtualTableLayout.getDerivedStateFromProps = function (nextProps, prevState) {\n var prevRowHeight = prevState.rowHeights;\n\n var rowHeights = __spread(nextProps.headerRows, nextProps.bodyRows, nextProps.footerRows).reduce(function (acc, row) {\n var rowHeight = prevRowHeight.get(row.key);\n\n if (rowHeight !== undefined) {\n acc.set(row.key, rowHeight);\n }\n\n return acc;\n }, new Map());\n\n return {\n rowHeights: rowHeights\n };\n };\n\n VirtualTableLayout.prototype.storeRowHeights = function () {\n var _this = this;\n\n var rowsWithChangedHeights = Array.from(this.rowRefs.entries()).map(function (_a) {\n var _b = __read(_a, 2),\n row = _b[0],\n ref = _b[1];\n\n return [row, findDOMNode(ref)];\n }).filter(function (_a) {\n var _b = __read(_a, 2),\n node = _b[1];\n\n return !!node;\n }).map(function (_a) {\n var _b = __read(_a, 2),\n row = _b[0],\n node = _b[1];\n\n return [row, node.getBoundingClientRect().height];\n }).filter(function (_a) {\n var _b = __read(_a, 1),\n row = _b[0];\n\n return row.type !== TABLE_STUB_TYPE;\n }).filter(function (_a) {\n var _b = __read(_a, 2),\n row = _b[0],\n height = _b[1];\n\n return height !== _this.getRowHeight(row);\n });\n\n if (rowsWithChangedHeights.length) {\n var rowHeights_1 = this.state.rowHeights;\n rowsWithChangedHeights.forEach(function (_a) {\n var _b = __read(_a, 2),\n row = _b[0],\n height = _b[1];\n\n return rowHeights_1.set(row.key, height);\n });\n this.setState({\n rowHeights: rowHeights_1\n });\n }\n };\n\n VirtualTableLayout.prototype.storeBlockHeights = function () {\n var _this = this;\n\n var getBlockHeight = function getBlockHeight(blockName) {\n return _this.blockRefs.get(blockName) ? findDOMNode(_this.blockRefs.get(blockName)).getBoundingClientRect().height : 0;\n };\n\n var headerHeight = getBlockHeight('header');\n var bodyHeight = getBlockHeight('body');\n var footerHeight = getBlockHeight('footer');\n var _a = this.state,\n prevHeaderHeight = _a.headerHeight,\n prevBodyHeight = _a.bodyHeight,\n prevFooterHeight = _a.footerHeight;\n\n if (prevHeaderHeight !== headerHeight || prevBodyHeight !== bodyHeight || prevFooterHeight !== footerHeight) {\n this.setState({\n headerHeight: headerHeight,\n bodyHeight: bodyHeight,\n footerHeight: footerHeight\n });\n }\n };\n\n VirtualTableLayout.prototype.shouldSkipScrollEvent = function (e) {\n var node = e.target; // NOTE: prevent nested scroll to update viewport\n\n if (node !== e.currentTarget) {\n return true;\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\n\n var correction = 1;\n var nodeHorizontalOffset = parseInt(node.scrollLeft + node.clientWidth, 10) - correction;\n var nodeVerticalOffset = parseInt(node.scrollTop + node.clientHeight, 10) - correction; // NOTE: prevent iOS to flicker in bounces and correct rendering on high dpi screens\n\n if (node.scrollTop < 0 || node.scrollLeft < 0 || nodeHorizontalOffset > Math.max(node.scrollWidth, node.clientWidth) || nodeVerticalOffset > Math.max(node.scrollHeight, node.clientHeight)) {\n return true;\n }\n\n return false;\n };\n\n VirtualTableLayout.prototype.updateViewport = function () {\n var _a = this.props,\n viewport = _a.viewport,\n setViewport = _a.setViewport;\n var newViewport = this.calculateViewport();\n\n if (viewport !== newViewport) {\n setViewport(newViewport);\n }\n };\n\n VirtualTableLayout.prototype.calculateViewport = function () {\n var _a = this,\n state = _a.state,\n viewportTop = _a.viewportTop,\n viewportLeft = _a.viewportLeft,\n containerHeight = _a.containerHeight,\n containerWidth = _a.containerWidth;\n\n var _b = this.props,\n loadedRowsStart = _b.loadedRowsStart,\n bodyRows = _b.bodyRows,\n headerRows = _b.headerRows,\n footerRows = _b.footerRows,\n estimatedRowHeight = _b.estimatedRowHeight,\n columns = _b.columns,\n minColumnWidth = _b.minColumnWidth,\n isDataRemote = _b.isDataRemote,\n viewport = _b.viewport;\n var getColumnWidth = this.getColumnWidthGetter(columns, containerWidth, minColumnWidth);\n return getViewport(_assign(_assign({}, state), {\n viewportTop: viewportTop,\n viewportLeft: viewportLeft,\n containerHeight: containerHeight,\n containerWidth: containerWidth\n }), {\n loadedRowsStart: loadedRowsStart,\n columns: columns,\n bodyRows: bodyRows,\n headerRows: headerRows,\n footerRows: footerRows,\n isDataRemote: isDataRemote,\n viewport: viewport\n }, estimatedRowHeight, this.getRowHeight, getColumnWidth);\n };\n\n VirtualTableLayout.prototype.getCollapsedGrids = function (viewport) {\n var _a = this,\n containerWidth = _a.containerWidth,\n viewportLeft = _a.viewportLeft;\n\n var _b = this.props,\n headerRows = _b.headerRows,\n bodyRows = _b.bodyRows,\n footerRows = _b.footerRows,\n columns = _b.columns,\n loadedRowsStart = _b.loadedRowsStart,\n totalRowCount = _b.totalRowCount,\n getCellColSpan = _b.getCellColSpan,\n minColumnWidth = _b.minColumnWidth;\n var getColumnWidth = this.getColumnWidthGetter(columns, containerWidth, minColumnWidth);\n return getCollapsedGrids({\n headerRows: headerRows,\n bodyRows: bodyRows,\n footerRows: footerRows,\n columns: columns,\n loadedRowsStart: loadedRowsStart,\n totalRowCount: totalRowCount,\n getCellColSpan: getCellColSpan,\n viewportLeft: viewportLeft,\n containerWidth: containerWidth,\n viewport: viewport,\n getRowHeight: this.getRowHeight,\n getColumnWidth: getColumnWidth\n });\n };\n\n VirtualTableLayout.prototype.render = function () {\n var _a = this.props,\n Container = _a.containerComponent,\n HeadTable = _a.headTableComponent,\n FootTable = _a.footerTableComponent,\n Table = _a.tableComponent,\n Head = _a.headComponent,\n Body = _a.bodyComponent,\n Footer = _a.footerComponent,\n tableRef = _a.tableRef,\n height = _a.height,\n headerRows = _a.headerRows,\n footerRows = _a.footerRows,\n minColumnWidth = _a.minColumnWidth,\n minWidth = _a.minWidth,\n cellComponent = _a.cellComponent,\n rowComponent = _a.rowComponent,\n viewport = _a.viewport,\n scrollTop = _a.scrollTop;\n var _b = this.state,\n headerHeight = _b.headerHeight,\n bodyHeight = _b.bodyHeight,\n footerHeight = _b.footerHeight;\n var containerHeight = this.containerHeight;\n var collapsedGrids = this.getCollapsedGrids(viewport);\n var commonProps = {\n cellComponent: cellComponent,\n rowComponent: rowComponent,\n minColumnWidth: minColumnWidth,\n minWidth: minWidth,\n blockRefsHandler: this.registerBlockRef,\n rowRefsHandler: this.registerRowRef\n };\n var sizerHeight = height === AUTO_HEIGHT ? null : height;\n return createElement(Sizer, {\n onSizeChange: this.handleContainerSizeChange,\n containerComponent: Container,\n style: {\n height: sizerHeight\n },\n onScroll: this.onScroll,\n scrollTop: scrollTop\n }, !!headerRows.length && createElement(VirtualTableLayoutBlock, _assign({}, commonProps, {\n name: \"header\",\n collapsedGrid: collapsedGrids.headerGrid,\n tableComponent: HeadTable,\n bodyComponent: Head\n })), createElement(VirtualTableLayoutBlock, _assign({}, commonProps, {\n name: \"body\",\n collapsedGrid: collapsedGrids.bodyGrid,\n tableComponent: Table,\n bodyComponent: Body,\n tableRef: tableRef,\n marginBottom: Math.max(0, containerHeight - headerHeight - bodyHeight - footerHeight)\n })), !!footerRows.length && createElement(VirtualTableLayoutBlock, _assign({}, commonProps, {\n name: \"footer\",\n collapsedGrid: collapsedGrids.footerGrid,\n tableComponent: FootTable,\n bodyComponent: Footer\n })));\n };\n\n VirtualTableLayout.defaultProps = defaultProps$3;\n return VirtualTableLayout;\n}(PureComponent);\n\nvar getColumnStyle = function getColumnStyle(_a) {\n var column = _a.column;\n return column.animationState;\n};\n/** @internal */\n\n\nvar RowLayout = memo(function (props) {\n var row = props.row,\n columns = props.columns,\n Row = props.rowComponent,\n Cell = props.cellComponent,\n getCellColSpan = props.getCellColSpan;\n var getColSpan = useCallback(function (tableRow, tableColumn) {\n return getCellColSpan({\n tableRow: tableRow,\n tableColumn: tableColumn,\n tableColumns: columns\n });\n }, [columns, getCellColSpan]);\n return createElement(Row, {\n tableRow: row,\n style: getRowStyle({\n row: row\n })\n }, columns.map(function (column) {\n return createElement(Cell, {\n key: column.key,\n tableRow: row,\n tableColumn: column,\n style: getColumnStyle({\n column: column\n }),\n colSpan: getColSpan(row, column)\n });\n }));\n});\n/** @internal */\n\nvar RowsBlockLayout = /*#__PURE__*/function (_super) {\n __extends(RowsBlockLayout, _super);\n\n function RowsBlockLayout() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RowsBlockLayout.prototype.render = function () {\n var _a = this.props,\n rows = _a.rows,\n columns = _a.columns,\n Block = _a.blockComponent,\n rowComponent = _a.rowComponent,\n cellComponent = _a.cellComponent,\n getCellColSpan = _a.getCellColSpan;\n return createElement(Block, null, rows.map(function (row) {\n return createElement(RowLayout, {\n key: row.key,\n row: row,\n columns: columns,\n rowComponent: rowComponent,\n cellComponent: cellComponent,\n getCellColSpan: getCellColSpan\n });\n }));\n };\n\n return RowsBlockLayout;\n}(PureComponent);\n\nvar defaultProps$4 = {\n headerRows: [],\n footerRows: [],\n headComponent: function headComponent() {\n return null;\n },\n footerComponent: function footerComponent() {\n return null;\n }\n};\n/** @internal */\n\nvar StaticTableLayout = /*#__PURE__*/function (_super) {\n __extends(StaticTableLayout, _super);\n\n function StaticTableLayout() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n StaticTableLayout.prototype.render = function () {\n var _a = this.props,\n headerRows = _a.headerRows,\n bodyRows = _a.bodyRows,\n footerRows = _a.footerRows,\n columns = _a.columns,\n minWidth = _a.minWidth,\n Container = _a.containerComponent,\n Table = _a.tableComponent,\n headComponent = _a.headComponent,\n bodyComponent = _a.bodyComponent,\n footerComponent = _a.footerComponent,\n rowComponent = _a.rowComponent,\n cellComponent = _a.cellComponent,\n getCellColSpan = _a.getCellColSpan,\n tableRef = _a.tableRef;\n var commonProps = {\n columns: columns,\n rowComponent: rowComponent,\n cellComponent: cellComponent,\n getCellColSpan: getCellColSpan\n };\n return createElement(Container, null, createElement(Table, {\n tableRef: tableRef,\n style: {\n minWidth: \"calc(\" + minWidth + \")\"\n }\n }, createElement(ColumnGroup, {\n columns: columns\n }), !!headerRows.length && createElement(RowsBlockLayout, _assign({\n rows: headerRows,\n blockComponent: headComponent\n }, commonProps)), createElement(RowsBlockLayout, _assign({\n rows: bodyRows,\n blockComponent: bodyComponent\n }, commonProps)), !!footerRows.length && createElement(RowsBlockLayout, _assign({\n rows: footerRows,\n blockComponent: footerComponent\n }, commonProps))));\n };\n\n StaticTableLayout.defaultProps = defaultProps$4;\n return StaticTableLayout;\n}(PureComponent);\n/** @internal */\n\n\nvar 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\nvar tableColumnsComputed = function tableColumnsComputed(_a) {\n var tableColumns = _a.tableColumns;\n return checkColumnWidths(tableColumns);\n};\n/** @internal */\n\n\nvar makeVirtualTable = function makeVirtualTable(Table, _a) {\n var VirtualLayout = _a.VirtualLayout,\n FixedHeader = _a.FixedHeader,\n FixedFooter = _a.FixedFooter,\n SkeletonCell = _a.SkeletonCell,\n defaultEstimatedRowHeight = _a.defaultEstimatedRowHeight,\n defaultHeight = _a.defaultHeight;\n\n var VirtualTable = /*#__PURE__*/function (_super) {\n __extends(VirtualTable, _super);\n\n function VirtualTable(props) {\n var _this = _super.call(this, props) || this;\n\n _this.setViewport = function (viewport) {\n _this.setState({\n viewport: viewport\n });\n };\n\n _this.state = {\n viewport: emptyViewport,\n nextRowId: undefined\n };\n _this.layoutRenderComponent = connectProps(VirtualLayout, function () {\n var _a = _this.props,\n headTableComponent = _a.headTableComponent,\n footerTableComponent = _a.footerTableComponent;\n return {\n headTableComponent: headTableComponent,\n footerTableComponent: footerTableComponent\n };\n });\n\n _this.scrollToRow = function (nextRowId) {\n return _this.setState({\n nextRowId: nextRowId\n });\n };\n\n return _this;\n }\n\n VirtualTable.prototype.componentDidUpdate = function (prevProps, prevState) {\n var prevId = prevState.nextRowId;\n var currentId = this.state.nextRowId;\n var areIdsEqual = currentId !== undefined && currentId === prevId;\n this.layoutRenderComponent.update();\n\n if (areIdsEqual) {\n this.setState({\n nextRowId: undefined\n });\n }\n };\n\n VirtualTable.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n height = _a.height,\n estimatedRowHeight = _a.estimatedRowHeight,\n SkeletonStubCell = _a.skeletonCellComponent,\n children = _a.children,\n restProps = __rest(_a, [\"height\", \"estimatedRowHeight\", \"skeletonCellComponent\", \"children\"]);\n\n var _b = this.state,\n stateViewport = _b.viewport,\n nextId = _b.nextRowId;\n return createElement(Plugin, {\n name: \"VirtualTable\"\n }, createElement(Table, _assign({\n layoutComponent: this.layoutRenderComponent\n }, restProps)), createElement(Action, {\n name: \"setViewport\",\n action: this.setViewport\n }), createElement(Action, {\n name: \"scrollToRow\",\n action: this.scrollToRow\n }), createElement(Getter, {\n name: \"viewport\",\n value: stateViewport\n }), createElement(Getter, {\n name: \"tableColumns\",\n computed: tableColumnsComputed\n }), createElement(Template, {\n name: \"tableLayout\"\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a, _b) {\n var availableRowCount = _a.availableRowCount,\n loadedRowsStart = _a.loadedRowsStart,\n tableBodyRows = _a.tableBodyRows,\n isDataRemote = _a.isDataRemote,\n viewport = _a.viewport;\n var setViewport = _b.setViewport;\n var onTopRowChange = _this.props.onTopRowChange;\n var rowId = getTopRowId(viewport, tableBodyRows, isDataRemote);\n onTopRowChange(rowId);\n var totalRowCount = availableRowCount || tableBodyRows.length;\n var scrollTop = getScrollTop(tableBodyRows, totalRowCount, nextId, estimatedRowHeight, isDataRemote);\n return createElement(TemplatePlaceholder, {\n params: _assign(_assign({}, params), {\n totalRowCount: totalRowCount,\n loadedRowsStart: loadedRowsStart,\n isDataRemote: isDataRemote,\n height: height,\n estimatedRowHeight: estimatedRowHeight,\n setViewport: setViewport,\n viewport: viewport,\n scrollTop: scrollTop\n })\n });\n });\n }), createElement(Template, {\n name: \"tableCell\",\n predicate: function predicate(_a) {\n var tableRow = _a.tableRow;\n return !!isStubTableCell(tableRow);\n }\n }, function (params) {\n return createElement(TemplateConnector, null, function (_a) {\n var isDataRemote = _a.isDataRemote;\n return isDataRemote ? createElement(SkeletonStubCell, _assign({}, params)) : createElement(TemplatePlaceholder, null);\n });\n }));\n };\n\n VirtualTable.defaultProps = {\n estimatedRowHeight: defaultEstimatedRowHeight,\n height: defaultHeight,\n headTableComponent: FixedHeader,\n footerTableComponent: FixedFooter,\n skeletonCellComponent: SkeletonCell,\n onTopRowChange: function onTopRowChange() {}\n };\n VirtualTable.TOP_POSITION = TOP_POSITION;\n VirtualTable.BOTTOM_POSITION = BOTTOM_POSITION;\n return VirtualTable;\n }(PureComponent);\n\n Object.values(Table.components).forEach(function (name) {\n VirtualTable[name] = Table[name];\n });\n VirtualTable.FixedHeader = FixedHeader;\n VirtualTable.FixedFooter = FixedFooter;\n VirtualTable.SkeletonCell = SkeletonCell;\n return VirtualTable;\n};\n\nvar Node = /*#__PURE__*/function () {\n function Node(start, rows) {\n this.prev = null;\n this.next = null;\n this.start = start;\n this.rows = rows;\n }\n\n return Node;\n}(); // tslint:disable-next-line:max-classes-per-file\n\n\nvar LRUCache = /*#__PURE__*/function () {\n function LRUCache(pageSize, capacity) {\n if (capacity === void 0) {\n capacity = Number.POSITIVE_INFINITY;\n }\n\n this.pages = new Map();\n this.pageSize = pageSize;\n this.capacity = capacity;\n this.initList();\n }\n\n LRUCache.prototype.initList = function () {\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 LRUCache.prototype.addPage = function (pageStart, rows) {\n if (this.pages.has(pageStart)) {\n this.removePage(pageStart);\n }\n\n var node = new Node(pageStart, rows);\n var 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 LRUCache.prototype.removePage = function (start) {\n var node = this.pages.get(start);\n node.prev.next = node.next;\n node.next.prev = node.prev;\n this.pages.delete(start);\n };\n\n LRUCache.prototype.getPage = function (pageStart) {\n if (!this.pages.has(pageStart)) {\n return null;\n }\n\n var rows = this.pages.get(pageStart).rows;\n this.removePage(pageStart);\n this.addPage(pageStart, rows);\n return rows;\n };\n\n LRUCache.prototype.clear = function () {\n this.pages.clear();\n this.initList();\n };\n\n return LRUCache;\n}();\n\nvar createRowCache = function createRowCache(pageSize, capacity) {\n if (pageSize === void 0) {\n pageSize = 100;\n }\n\n if (capacity === void 0) {\n capacity = Number.POSITIVE_INFINITY;\n }\n\n var cache = new LRUCache(pageSize, capacity / pageSize);\n return {\n getRows: function getRows(skip, take) {\n var result = [];\n var pageCount = Math.ceil(take / pageSize);\n\n for (var i = 0; i < pageCount; i += 1) {\n var pageStart = skip + i * pageSize;\n var chunk = cache.getPage(pageStart);\n\n if (chunk !== null) {\n result = result.concat(chunk);\n } // yield if last page is incomplete\n\n\n if (chunk === null || i !== pageCount - 1 && chunk.length !== pageSize) {\n return result;\n }\n }\n\n return result;\n },\n setRows: function setRows(skip, rows) {\n var pageCount = Math.ceil(rows.length / pageSize);\n\n for (var i = 0; i < pageCount; i += 1) {\n var pageStart = i * pageSize;\n var rowsChunk = rows.slice(pageStart, pageStart + pageSize); // put incomplete page only if it is last one\n\n if (rowsChunk.length === pageSize || i === pageCount - 1) {\n cache.addPage(pageStart + skip, rowsChunk);\n }\n }\n },\n invalidate: function invalidate() {\n return cache.clear();\n }\n };\n};\n\nvar InlineSummaryItem = memo(function (_a) {\n var _b = _a.summary,\n messageKey = _b.messageKey,\n columnTitle = _b.columnTitle,\n SummaryComponent = _b.component,\n getMessage = _a.getMessage;\n return createElement(Fragment, null, getMessage(messageKey, {\n columnTitle: columnTitle\n }), createElement(SummaryComponent, null));\n});\nexport { ColumnChooser, CustomGrouping, CustomPaging, CustomSummary, CustomTreeData, DataTypeProvider, DragDropProvider, EditingState, ExportPanel, FilteringState, Grid, GroupPanelLayout, GroupingPanel, GroupingState, InlineSummaryItem, IntegratedFiltering, IntegratedGrouping, IntegratedPaging, IntegratedSelection, IntegratedSorting, IntegratedSummary, PagingPanel, PagingState, RowDetailState, SearchPanel, SearchState, SelectionState, SortingState, StaticTableLayout, SummaryState, Table, TableBandHeader, TableColumnReordering, TableColumnResizing, TableColumnVisibility, TableEditColumn, TableEditRow, TableFilterRow, TableFixedColumns, TableGroupRow, TableHeaderRow, TableInlineCellEditing, TableLayout, TableRowDetail, TableSelection, TableSummaryRow, TableSummaryRowBase, TableTreeColumn, Toolbar, TreeDataState, VirtualTableLayout, VirtualTableState, createRowCache, defaultMessages$1 as defaultMessages, emptyViewport, makeVirtualTable };"],"sourceRoot":""}