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.
- package/dist/MaterialReactTable.d.ts +1 -0
- package/dist/body/MRT_TableBody.d.ts +2 -1
- package/dist/material-react-table.cjs.development.js +530 -9
- package/dist/material-react-table.cjs.development.js.map +1 -1
- package/dist/material-react-table.cjs.production.min.js +1 -1
- package/dist/material-react-table.cjs.production.min.js.map +1 -1
- package/dist/material-react-table.esm.js +37 -7
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/table/MRT_Table.d.ts +2 -1
- package/package.json +3 -2
- package/src/MaterialReactTable.tsx +1 -0
- package/src/body/MRT_TableBody.tsx +53 -14
- package/src/table/MRT_Table.tsx +10 -3
- package/src/table/MRT_TableContainer.tsx +8 -2
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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$
|
|
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
|
-
|
|
6844
|
-
|
|
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$
|
|
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
|
};
|