1234567891011121314151617181920212223242526272829303132333435 |
- import styleToCssString from '../helpers/libs/styleToCssString'
- export const mapVirtualToProps = ({ items, itemHeight }, { startIndex, endIndex }) => {
- const visibleItems = endIndex > -1 ? items.slice(startIndex, endIndex + 1) : []
- // style
- const height = items.length * itemHeight
- const paddingTop = startIndex * itemHeight
- return {
- virtual: {
- items: visibleItems,
- style: styleToCssString({
- boxSizing: 'border-box',
- width: '100%',
- height,
- // paddingTop,
- }),
- },
- }
- }
- export const getVisibleItemBounds = (viewTop, viewHeight, itemCount, itemHeight, itemBuffer) => {
- // visible list inside view
- const listViewTop = Math.max(0, viewTop)
- // visible item indexes
- const startIndex = Math.max(0, Math.floor(listViewTop / itemHeight))
- const endIndex = Math.min(startIndex + Math.ceil(viewHeight / itemHeight) + itemBuffer - 1, itemCount)
- return {
- startIndex,
- endIndex,
- }
- }
|