material-react-table 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -182,6 +182,7 @@ export declare type MaterialReactTableProps<D extends Record<string, any> = {}>
182
182
  enablePersistentState?: boolean;
183
183
  enableRowActions?: boolean;
184
184
  enableRowNumbers?: boolean;
185
+ enableRowVirtualization?: boolean;
185
186
  enableSelectAll?: boolean;
186
187
  enableStickyHeader?: boolean;
187
188
  enableTableFooter?: boolean;
@@ -1,7 +1,8 @@
1
- import { FC } from 'react';
1
+ import { FC, RefObject } from 'react';
2
2
  import { MRT_TableInstance } from '..';
3
3
  interface Props {
4
4
  tableInstance: MRT_TableInstance;
5
+ tableContainerRef: RefObject<HTMLDivElement>;
5
6
  }
6
7
  export declare const MRT_TableBody: FC<Props>;
7
8
  export {};
@@ -6703,24 +6703,540 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
6703
6703
  }));
6704
6704
  };
6705
6705
 
6706
+ function _extends$1() {
6707
+ _extends$1 = Object.assign || function (target) {
6708
+ for (var i = 1; i < arguments.length; i++) {
6709
+ var source = arguments[i];
6710
+
6711
+ for (var key in source) {
6712
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
6713
+ target[key] = source[key];
6714
+ }
6715
+ }
6716
+ }
6717
+
6718
+ return target;
6719
+ };
6720
+
6721
+ return _extends$1.apply(this, arguments);
6722
+ }
6723
+
6724
+ function _objectWithoutPropertiesLoose$2(source, excluded) {
6725
+ if (source == null) return {};
6726
+ var target = {};
6727
+ var sourceKeys = Object.keys(source);
6728
+ var key, i;
6729
+
6730
+ for (i = 0; i < sourceKeys.length; i++) {
6731
+ key = sourceKeys[i];
6732
+ if (excluded.indexOf(key) >= 0) continue;
6733
+ target[key] = source[key];
6734
+ }
6735
+
6736
+ return target;
6737
+ }
6738
+
6739
+ var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];
6740
+
6741
+ var rectChanged = function rectChanged(a, b) {
6742
+ if (a === void 0) {
6743
+ a = {};
6744
+ }
6745
+
6746
+ if (b === void 0) {
6747
+ b = {};
6748
+ }
6749
+
6750
+ return props.some(function (prop) {
6751
+ return a[prop] !== b[prop];
6752
+ });
6753
+ };
6754
+
6755
+ var observedNodes = /*#__PURE__*/new Map();
6756
+ var rafId;
6757
+
6758
+ var run = function run() {
6759
+ var changedStates = [];
6760
+ observedNodes.forEach(function (state, node) {
6761
+ var newRect = node.getBoundingClientRect();
6762
+
6763
+ if (rectChanged(newRect, state.rect)) {
6764
+ state.rect = newRect;
6765
+ changedStates.push(state);
6766
+ }
6767
+ });
6768
+ changedStates.forEach(function (state) {
6769
+ state.callbacks.forEach(function (cb) {
6770
+ return cb(state.rect);
6771
+ });
6772
+ });
6773
+ rafId = window.requestAnimationFrame(run);
6774
+ };
6775
+
6776
+ function observeRect(node, cb) {
6777
+ return {
6778
+ observe: function observe() {
6779
+ var wasEmpty = observedNodes.size === 0;
6780
+
6781
+ if (observedNodes.has(node)) {
6782
+ observedNodes.get(node).callbacks.push(cb);
6783
+ } else {
6784
+ observedNodes.set(node, {
6785
+ rect: undefined,
6786
+ hasRectChanged: false,
6787
+ callbacks: [cb]
6788
+ });
6789
+ }
6790
+
6791
+ if (wasEmpty) run();
6792
+ },
6793
+ unobserve: function unobserve() {
6794
+ var state = observedNodes.get(node);
6795
+
6796
+ if (state) {
6797
+ // Remove the callback
6798
+ var index = state.callbacks.indexOf(cb);
6799
+ if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference
6800
+
6801
+ if (!state.callbacks.length) observedNodes["delete"](node); // Stop the loop
6802
+
6803
+ if (!observedNodes.size) cancelAnimationFrame(rafId);
6804
+ }
6805
+ }
6806
+ };
6807
+ }
6808
+
6809
+ var useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
6810
+
6811
+ function useRect(nodeRef, initialRect) {
6812
+ if (initialRect === void 0) {
6813
+ initialRect = {
6814
+ width: 0,
6815
+ height: 0
6816
+ };
6817
+ }
6818
+
6819
+ var _React$useState = React__default.useState(nodeRef.current),
6820
+ element = _React$useState[0],
6821
+ setElement = _React$useState[1];
6822
+
6823
+ var _React$useReducer = React__default.useReducer(rectReducer, initialRect),
6824
+ rect = _React$useReducer[0],
6825
+ dispatch = _React$useReducer[1];
6826
+
6827
+ var initialRectSet = React__default.useRef(false);
6828
+ useIsomorphicLayoutEffect$1(function () {
6829
+ if (nodeRef.current !== element) {
6830
+ setElement(nodeRef.current);
6831
+ }
6832
+ });
6833
+ useIsomorphicLayoutEffect$1(function () {
6834
+ if (element && !initialRectSet.current) {
6835
+ initialRectSet.current = true;
6836
+
6837
+ var _rect = element.getBoundingClientRect();
6838
+
6839
+ dispatch({
6840
+ rect: _rect
6841
+ });
6842
+ }
6843
+ }, [element]);
6844
+ React__default.useEffect(function () {
6845
+ if (!element) {
6846
+ return;
6847
+ }
6848
+
6849
+ var observer = observeRect(element, function (rect) {
6850
+ dispatch({
6851
+ rect: rect
6852
+ });
6853
+ });
6854
+ observer.observe();
6855
+ return function () {
6856
+ observer.unobserve();
6857
+ };
6858
+ }, [element]);
6859
+ return rect;
6860
+ }
6861
+
6862
+ function rectReducer(state, action) {
6863
+ var rect = action.rect;
6864
+
6865
+ if (state.height !== rect.height || state.width !== rect.width) {
6866
+ return rect;
6867
+ }
6868
+
6869
+ return state;
6870
+ }
6871
+
6872
+ var defaultEstimateSize = function defaultEstimateSize() {
6873
+ return 50;
6874
+ };
6875
+
6876
+ var defaultKeyExtractor = function defaultKeyExtractor(index) {
6877
+ return index;
6878
+ };
6879
+
6880
+ var defaultMeasureSize = function defaultMeasureSize(el, horizontal) {
6881
+ var key = horizontal ? 'offsetWidth' : 'offsetHeight';
6882
+ return el[key];
6883
+ };
6884
+
6885
+ var defaultRangeExtractor = function defaultRangeExtractor(range) {
6886
+ var start = Math.max(range.start - range.overscan, 0);
6887
+ var end = Math.min(range.end + range.overscan, range.size - 1);
6888
+ var arr = [];
6889
+
6890
+ for (var i = start; i <= end; i++) {
6891
+ arr.push(i);
6892
+ }
6893
+
6894
+ return arr;
6895
+ };
6896
+ function useVirtual(_ref) {
6897
+ var _measurements;
6898
+
6899
+ var _ref$size = _ref.size,
6900
+ size = _ref$size === void 0 ? 0 : _ref$size,
6901
+ _ref$estimateSize = _ref.estimateSize,
6902
+ estimateSize = _ref$estimateSize === void 0 ? defaultEstimateSize : _ref$estimateSize,
6903
+ _ref$overscan = _ref.overscan,
6904
+ overscan = _ref$overscan === void 0 ? 1 : _ref$overscan,
6905
+ _ref$paddingStart = _ref.paddingStart,
6906
+ paddingStart = _ref$paddingStart === void 0 ? 0 : _ref$paddingStart,
6907
+ _ref$paddingEnd = _ref.paddingEnd,
6908
+ paddingEnd = _ref$paddingEnd === void 0 ? 0 : _ref$paddingEnd,
6909
+ parentRef = _ref.parentRef,
6910
+ horizontal = _ref.horizontal,
6911
+ scrollToFn = _ref.scrollToFn,
6912
+ useObserver = _ref.useObserver,
6913
+ initialRect = _ref.initialRect,
6914
+ onScrollElement = _ref.onScrollElement,
6915
+ scrollOffsetFn = _ref.scrollOffsetFn,
6916
+ _ref$keyExtractor = _ref.keyExtractor,
6917
+ keyExtractor = _ref$keyExtractor === void 0 ? defaultKeyExtractor : _ref$keyExtractor,
6918
+ _ref$measureSize = _ref.measureSize,
6919
+ measureSize = _ref$measureSize === void 0 ? defaultMeasureSize : _ref$measureSize,
6920
+ _ref$rangeExtractor = _ref.rangeExtractor,
6921
+ rangeExtractor = _ref$rangeExtractor === void 0 ? defaultRangeExtractor : _ref$rangeExtractor;
6922
+ var sizeKey = horizontal ? 'width' : 'height';
6923
+ var scrollKey = horizontal ? 'scrollLeft' : 'scrollTop';
6924
+ var latestRef = React__default.useRef({
6925
+ scrollOffset: 0,
6926
+ measurements: []
6927
+ });
6928
+
6929
+ var _React$useState = React__default.useState(0),
6930
+ scrollOffset = _React$useState[0],
6931
+ setScrollOffset = _React$useState[1];
6932
+
6933
+ latestRef.current.scrollOffset = scrollOffset;
6934
+ var useMeasureParent = useObserver || useRect;
6935
+
6936
+ var _useMeasureParent = useMeasureParent(parentRef, initialRect),
6937
+ outerSize = _useMeasureParent[sizeKey];
6938
+
6939
+ latestRef.current.outerSize = outerSize;
6940
+ var defaultScrollToFn = React__default.useCallback(function (offset) {
6941
+ if (parentRef.current) {
6942
+ parentRef.current[scrollKey] = offset;
6943
+ }
6944
+ }, [parentRef, scrollKey]);
6945
+ var resolvedScrollToFn = scrollToFn || defaultScrollToFn;
6946
+ scrollToFn = React__default.useCallback(function (offset) {
6947
+ resolvedScrollToFn(offset, defaultScrollToFn);
6948
+ }, [defaultScrollToFn, resolvedScrollToFn]);
6949
+
6950
+ var _React$useState2 = React__default.useState({}),
6951
+ measuredCache = _React$useState2[0],
6952
+ setMeasuredCache = _React$useState2[1];
6953
+
6954
+ var measure = React__default.useCallback(function () {
6955
+ return setMeasuredCache({});
6956
+ }, []);
6957
+ var pendingMeasuredCacheIndexesRef = React__default.useRef([]);
6958
+ var measurements = React__default.useMemo(function () {
6959
+ var min = pendingMeasuredCacheIndexesRef.current.length > 0 ? Math.min.apply(Math, pendingMeasuredCacheIndexesRef.current) : 0;
6960
+ pendingMeasuredCacheIndexesRef.current = [];
6961
+ var measurements = latestRef.current.measurements.slice(0, min);
6962
+
6963
+ for (var i = min; i < size; i++) {
6964
+ var key = keyExtractor(i);
6965
+ var measuredSize = measuredCache[key];
6966
+
6967
+ var _start = measurements[i - 1] ? measurements[i - 1].end : paddingStart;
6968
+
6969
+ var _size = typeof measuredSize === 'number' ? measuredSize : estimateSize(i);
6970
+
6971
+ var _end = _start + _size;
6972
+
6973
+ measurements[i] = {
6974
+ index: i,
6975
+ start: _start,
6976
+ size: _size,
6977
+ end: _end,
6978
+ key: key
6979
+ };
6980
+ }
6981
+
6982
+ return measurements;
6983
+ }, [estimateSize, measuredCache, paddingStart, size, keyExtractor]);
6984
+ var totalSize = (((_measurements = measurements[size - 1]) == null ? void 0 : _measurements.end) || paddingStart) + paddingEnd;
6985
+ latestRef.current.measurements = measurements;
6986
+ latestRef.current.totalSize = totalSize;
6987
+ var element = onScrollElement ? onScrollElement.current : parentRef.current;
6988
+ var scrollOffsetFnRef = React__default.useRef(scrollOffsetFn);
6989
+ scrollOffsetFnRef.current = scrollOffsetFn;
6990
+ useIsomorphicLayoutEffect$1(function () {
6991
+ if (!element) {
6992
+ setScrollOffset(0);
6993
+ return;
6994
+ }
6995
+
6996
+ var onScroll = function onScroll(event) {
6997
+ var offset = scrollOffsetFnRef.current ? scrollOffsetFnRef.current(event) : element[scrollKey];
6998
+ setScrollOffset(offset);
6999
+ };
7000
+
7001
+ onScroll();
7002
+ element.addEventListener('scroll', onScroll, {
7003
+ capture: false,
7004
+ passive: true
7005
+ });
7006
+ return function () {
7007
+ element.removeEventListener('scroll', onScroll);
7008
+ };
7009
+ }, [element, scrollKey]);
7010
+
7011
+ var _calculateRange = calculateRange(latestRef.current),
7012
+ start = _calculateRange.start,
7013
+ end = _calculateRange.end;
7014
+
7015
+ var indexes = React__default.useMemo(function () {
7016
+ return rangeExtractor({
7017
+ start: start,
7018
+ end: end,
7019
+ overscan: overscan,
7020
+ size: measurements.length
7021
+ });
7022
+ }, [start, end, overscan, measurements.length, rangeExtractor]);
7023
+ var measureSizeRef = React__default.useRef(measureSize);
7024
+ measureSizeRef.current = measureSize;
7025
+ var virtualItems = React__default.useMemo(function () {
7026
+ var virtualItems = [];
7027
+
7028
+ var _loop = function _loop(k, len) {
7029
+ var i = indexes[k];
7030
+ var measurement = measurements[i];
7031
+
7032
+ var item = _extends$1(_extends$1({}, measurement), {}, {
7033
+ measureRef: function measureRef(el) {
7034
+ if (el) {
7035
+ var measuredSize = measureSizeRef.current(el, horizontal);
7036
+
7037
+ if (measuredSize !== item.size) {
7038
+ var _scrollOffset = latestRef.current.scrollOffset;
7039
+
7040
+ if (item.start < _scrollOffset) {
7041
+ defaultScrollToFn(_scrollOffset + (measuredSize - item.size));
7042
+ }
7043
+
7044
+ pendingMeasuredCacheIndexesRef.current.push(i);
7045
+ setMeasuredCache(function (old) {
7046
+ var _extends2;
7047
+
7048
+ return _extends$1(_extends$1({}, old), {}, (_extends2 = {}, _extends2[item.key] = measuredSize, _extends2));
7049
+ });
7050
+ }
7051
+ }
7052
+ }
7053
+ });
7054
+
7055
+ virtualItems.push(item);
7056
+ };
7057
+
7058
+ for (var k = 0, len = indexes.length; k < len; k++) {
7059
+ _loop(k);
7060
+ }
7061
+
7062
+ return virtualItems;
7063
+ }, [indexes, defaultScrollToFn, horizontal, measurements]);
7064
+ var mountedRef = React__default.useRef(false);
7065
+ useIsomorphicLayoutEffect$1(function () {
7066
+ if (mountedRef.current) {
7067
+ setMeasuredCache({});
7068
+ }
7069
+
7070
+ mountedRef.current = true;
7071
+ }, [estimateSize]);
7072
+ var scrollToOffset = React__default.useCallback(function (toOffset, _temp) {
7073
+ var _ref2 = _temp === void 0 ? {} : _temp,
7074
+ _ref2$align = _ref2.align,
7075
+ align = _ref2$align === void 0 ? 'start' : _ref2$align;
7076
+
7077
+ var _latestRef$current = latestRef.current,
7078
+ scrollOffset = _latestRef$current.scrollOffset,
7079
+ outerSize = _latestRef$current.outerSize;
7080
+
7081
+ if (align === 'auto') {
7082
+ if (toOffset <= scrollOffset) {
7083
+ align = 'start';
7084
+ } else if (toOffset >= scrollOffset + outerSize) {
7085
+ align = 'end';
7086
+ } else {
7087
+ align = 'start';
7088
+ }
7089
+ }
7090
+
7091
+ if (align === 'start') {
7092
+ scrollToFn(toOffset);
7093
+ } else if (align === 'end') {
7094
+ scrollToFn(toOffset - outerSize);
7095
+ } else if (align === 'center') {
7096
+ scrollToFn(toOffset - outerSize / 2);
7097
+ }
7098
+ }, [scrollToFn]);
7099
+ var tryScrollToIndex = React__default.useCallback(function (index, _temp2) {
7100
+ var _ref3 = _temp2 === void 0 ? {} : _temp2,
7101
+ _ref3$align = _ref3.align,
7102
+ align = _ref3$align === void 0 ? 'auto' : _ref3$align,
7103
+ rest = _objectWithoutPropertiesLoose$2(_ref3, ["align"]);
7104
+
7105
+ var _latestRef$current2 = latestRef.current,
7106
+ measurements = _latestRef$current2.measurements,
7107
+ scrollOffset = _latestRef$current2.scrollOffset,
7108
+ outerSize = _latestRef$current2.outerSize;
7109
+ var measurement = measurements[Math.max(0, Math.min(index, size - 1))];
7110
+
7111
+ if (!measurement) {
7112
+ return;
7113
+ }
7114
+
7115
+ if (align === 'auto') {
7116
+ if (measurement.end >= scrollOffset + outerSize) {
7117
+ align = 'end';
7118
+ } else if (measurement.start <= scrollOffset) {
7119
+ align = 'start';
7120
+ } else {
7121
+ return;
7122
+ }
7123
+ }
7124
+
7125
+ var toOffset = align === 'center' ? measurement.start + measurement.size / 2 : align === 'end' ? measurement.end : measurement.start;
7126
+ scrollToOffset(toOffset, _extends$1({
7127
+ align: align
7128
+ }, rest));
7129
+ }, [scrollToOffset, size]);
7130
+ var scrollToIndex = React__default.useCallback(function () {
7131
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
7132
+ args[_key] = arguments[_key];
7133
+ }
7134
+
7135
+ // We do a double request here because of
7136
+ // dynamic sizes which can cause offset shift
7137
+ // and end up in the wrong spot. Unfortunately,
7138
+ // we can't know about those dynamic sizes until
7139
+ // we try and render them. So double down!
7140
+ tryScrollToIndex.apply(void 0, args);
7141
+ requestAnimationFrame(function () {
7142
+ tryScrollToIndex.apply(void 0, args);
7143
+ });
7144
+ }, [tryScrollToIndex]);
7145
+ return {
7146
+ virtualItems: virtualItems,
7147
+ totalSize: totalSize,
7148
+ scrollToOffset: scrollToOffset,
7149
+ scrollToIndex: scrollToIndex,
7150
+ measure: measure
7151
+ };
7152
+ }
7153
+
7154
+ var findNearestBinarySearch = function findNearestBinarySearch(low, high, getCurrentValue, value) {
7155
+ while (low <= high) {
7156
+ var middle = (low + high) / 2 | 0;
7157
+ var currentValue = getCurrentValue(middle);
7158
+
7159
+ if (currentValue < value) {
7160
+ low = middle + 1;
7161
+ } else if (currentValue > value) {
7162
+ high = middle - 1;
7163
+ } else {
7164
+ return middle;
7165
+ }
7166
+ }
7167
+
7168
+ if (low > 0) {
7169
+ return low - 1;
7170
+ } else {
7171
+ return 0;
7172
+ }
7173
+ };
7174
+
7175
+ function calculateRange(_ref4) {
7176
+ var measurements = _ref4.measurements,
7177
+ outerSize = _ref4.outerSize,
7178
+ scrollOffset = _ref4.scrollOffset;
7179
+ var size = measurements.length - 1;
7180
+
7181
+ var getOffset = function getOffset(index) {
7182
+ return measurements[index].start;
7183
+ };
7184
+
7185
+ var start = findNearestBinarySearch(0, size, getOffset, scrollOffset);
7186
+ var end = start;
7187
+
7188
+ while (end < size && measurements[end].end < scrollOffset + outerSize) {
7189
+ end++;
7190
+ }
7191
+
7192
+ return {
7193
+ start: start,
7194
+ end: end
7195
+ };
7196
+ }
7197
+
6706
7198
  var MRT_TableBody = function MRT_TableBody(_ref) {
6707
- var tableInstance = _ref.tableInstance;
7199
+ var tableInstance = _ref.tableInstance,
7200
+ tableContainerRef = _ref.tableContainerRef;
6708
7201
  var getPaginationRowModel = tableInstance.getPaginationRowModel,
6709
7202
  getPrePaginationRowModel = tableInstance.getPrePaginationRowModel,
7203
+ getState = tableInstance.getState,
6710
7204
  _tableInstance$option = tableInstance.options,
6711
7205
  enablePagination = _tableInstance$option.enablePagination,
7206
+ enableRowVirtualization = _tableInstance$option.enableRowVirtualization,
6712
7207
  muiTableBodyProps = _tableInstance$option.muiTableBodyProps;
6713
- var rows = enablePagination ? getPaginationRowModel().rows : getPrePaginationRowModel().rows;
7208
+
7209
+ var _getState = getState(),
7210
+ isDensePadding = _getState.isDensePadding;
7211
+
6714
7212
  var tableBodyProps = muiTableBodyProps instanceof Function ? muiTableBodyProps({
6715
7213
  tableInstance: tableInstance
6716
7214
  }) : muiTableBodyProps;
6717
- return React__default.createElement(material.TableBody, Object.assign({}, tableBodyProps), rows.map(function (row) {
7215
+ var rows = enablePagination ? getPaginationRowModel().rows : getPrePaginationRowModel().rows;
7216
+ var rowVirtualizer = useVirtual({
7217
+ overscan: isDensePadding ? 15 : 5,
7218
+ size: rows.length,
7219
+ parentRef: tableContainerRef
7220
+ });
7221
+ var virtualRows = rowVirtualizer.virtualItems;
7222
+ var paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;
7223
+ var paddingBottom = virtualRows.length > 0 ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end : 0;
7224
+ return React__default.createElement(material.TableBody, Object.assign({}, tableBodyProps), enableRowVirtualization && paddingTop > 0 && React__default.createElement("tr", null, React__default.createElement("td", {
7225
+ style: {
7226
+ height: paddingTop + "px"
7227
+ }
7228
+ })), (enableRowVirtualization ? virtualRows : rows).map(function (rowOrVirtualRow) {
7229
+ var row = enableRowVirtualization ? rows[rowOrVirtualRow.index] : rowOrVirtualRow;
6718
7230
  return React__default.createElement(MRT_TableBodyRow, {
6719
7231
  key: row.id,
6720
7232
  row: row,
6721
7233
  tableInstance: tableInstance
6722
7234
  });
6723
- }));
7235
+ }), enableRowVirtualization && paddingBottom > 0 && React__default.createElement("tr", null, React__default.createElement("td", {
7236
+ style: {
7237
+ height: paddingBottom + "px"
7238
+ }
7239
+ })));
6724
7240
  };
6725
7241
 
6726
7242
  var MRT_TableFooterCell = function MRT_TableFooterCell(_ref) {
@@ -6814,7 +7330,8 @@ var MRT_TableFooter = function MRT_TableFooter(_ref) {
6814
7330
  };
6815
7331
 
6816
7332
  var MRT_Table = function MRT_Table(_ref) {
6817
- var tableInstance = _ref.tableInstance;
7333
+ var tableContainerRef = _ref.tableContainerRef,
7334
+ tableInstance = _ref.tableInstance;
6818
7335
  var _tableInstance$option = tableInstance.options,
6819
7336
  enableStickyHeader = _tableInstance$option.enableStickyHeader,
6820
7337
  enableTableFooter = _tableInstance$option.enableTableFooter,
@@ -6828,20 +7345,21 @@ var MRT_Table = function MRT_Table(_ref) {
6828
7345
  }, tableProps), enableTableHead && React__default.createElement(MRT_TableHead, {
6829
7346
  tableInstance: tableInstance
6830
7347
  }), React__default.createElement(MRT_TableBody, {
7348
+ tableContainerRef: tableContainerRef,
6831
7349
  tableInstance: tableInstance
6832
7350
  }), enableTableFooter && React__default.createElement(MRT_TableFooter, {
6833
7351
  tableInstance: tableInstance
6834
7352
  }));
6835
7353
  };
6836
7354
 
6837
- var useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
7355
+ var useIsomorphicLayoutEffect$2 = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
6838
7356
  var MRT_TableContainer = function MRT_TableContainer(_ref) {
6839
7357
  var tableInstance = _ref.tableInstance;
6840
7358
  var getState = tableInstance.getState,
6841
7359
  _tableInstance$option = tableInstance.options,
6842
7360
  enableStickyHeader = _tableInstance$option.enableStickyHeader,
6843
- tableId = _tableInstance$option.tableId,
6844
- muiTableContainerProps = _tableInstance$option.muiTableContainerProps;
7361
+ muiTableContainerProps = _tableInstance$option.muiTableContainerProps,
7362
+ tableId = _tableInstance$option.tableId;
6845
7363
 
6846
7364
  var _getState = getState(),
6847
7365
  isFullScreen = _getState.isFullScreen;
@@ -6853,14 +7371,16 @@ var MRT_TableContainer = function MRT_TableContainer(_ref) {
6853
7371
  var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps({
6854
7372
  tableInstance: tableInstance
6855
7373
  }) : muiTableContainerProps;
6856
- useIsomorphicLayoutEffect$1(function () {
7374
+ useIsomorphicLayoutEffect$2(function () {
6857
7375
  var _document$getElementB, _document, _document$getElementB2, _document$getElementB3, _document2, _document2$getElement;
6858
7376
 
6859
7377
  var topToolbarHeight = typeof document !== 'undefined' ? (_document$getElementB = (_document = document) == null ? void 0 : (_document$getElementB2 = _document.getElementById("mrt-" + tableId + "-toolbar-top")) == null ? void 0 : _document$getElementB2.offsetHeight) != null ? _document$getElementB : 0 : 0;
6860
7378
  var bottomToolbarHeight = typeof document !== 'undefined' ? (_document$getElementB3 = (_document2 = document) == null ? void 0 : (_document2$getElement = _document2.getElementById("mrt-" + tableId + "-toolbar-bottom")) == null ? void 0 : _document2$getElement.offsetHeight) != null ? _document$getElementB3 : 0 : 0;
6861
7379
  setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
6862
7380
  });
7381
+ var tableContainerRef = React__default.useRef(null);
6863
7382
  return React__default.createElement(material.TableContainer, Object.assign({}, tableContainerProps, {
7383
+ ref: tableContainerRef,
6864
7384
  sx: _extends({
6865
7385
  maxWidth: '100%',
6866
7386
  maxHeight: enableStickyHeader ? "clamp(350px, calc(100vh - " + totalToolbarHeight + "px), 2000px)" : undefined,
@@ -6870,6 +7390,7 @@ var MRT_TableContainer = function MRT_TableContainer(_ref) {
6870
7390
  maxHeight: isFullScreen ? "calc(100vh - " + totalToolbarHeight + "px)" : undefined
6871
7391
  }
6872
7392
  }), React__default.createElement(MRT_Table, {
7393
+ tableContainerRef: tableContainerRef,
6873
7394
  tableInstance: tableInstance
6874
7395
  }));
6875
7396
  };