@itwin/itwinui-react
Version:
A react component library for iTwinUI
46 lines (45 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'useScrollToRow', {
enumerable: true,
get: function () {
return useScrollToRow;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
function useScrollToRow({
data,
enableVirtualization,
page,
paginatorRenderer,
scrollToRow,
}) {
let rowRefs = _react.useRef({});
let pageRef = _react.useRef(page);
pageRef.current = page;
let dataRef = _react.useRef(data);
dataRef.current = data;
let scrollToIndex = _react.useMemo(() => {
if (!scrollToRow || paginatorRenderer) return;
let index = scrollToRow(pageRef.current, dataRef.current);
return index < 0 ? void 0 : index;
}, [paginatorRenderer, scrollToRow]);
_react.useEffect(() => {
if (enableVirtualization || null == scrollToIndex || scrollToIndex < 0)
return;
rowRefs.current[pageRef.current[scrollToIndex]?.id]?.scrollIntoView();
}, [enableVirtualization, scrollToIndex]);
let tableRowRef = _react.useCallback(
(row) => (element) => {
rowRefs.current[row.id] = element;
},
[],
);
return {
scrollToIndex,
tableRowRef,
};
}