UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

62 lines (61 loc) 1.43 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); Object.defineProperty(exports, 'useVirtualScroll', { enumerable: true, get: function () { return useVirtualScroll; }, }); const _interop_require_default = require('@swc/helpers/_/_interop_require_default'); const _reactvirtual = require('@tanstack/react-virtual'); const _react = /*#__PURE__*/ _interop_require_default._(require('react')); const css = ` :host { contain: layout; background-color: var(--iui-color-background); } [data-iui-virtualizer='root'] { min-inline-size: 100%; position: relative; } ::slotted([data-iui-virtualizer='item']) { position: absolute !important; top: 0 !important; left: 0 !important; } `; const useVirtualScroll = (params) => { let { ...rest } = params; let _virtualizer = (0, _reactvirtual.useVirtualizer)({ indexAttribute: 'data-iui-index', overscan: 10, ...rest, }); let scrollToIndex = _react.default.useCallback( (index, options) => { setTimeout(() => { _virtualizer.scrollToIndex(index, { align: 'auto', ...options, }); }); }, [_virtualizer], ); let virtualizer = _react.default.useMemo( () => ({ ..._virtualizer, scrollToIndex, }), [_virtualizer, scrollToIndex], ); return _react.default.useMemo( () => ({ virtualizer, css, }), [virtualizer], ); };