UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

46 lines (45 loc) 1.3 kB
'use strict'; 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, }; }