import { VirtualScroll } from '@web/base'; export const createScrollManager = (container, state, onRenderedListChange) => { const vs = VirtualScroll({ itemHeight: 40 }); let scrollEl = null; const refresh = () => { if (!scrollEl) return; const virtualContainer = { clientHeight: scrollEl.clientHeight * 1.6, scrollTop: scrollEl.scrollTop }; const res = vs.calc(virtualContainer, state.list); if (res) { Object.assign(state, { prevHeight: res.prevHeight, postHeight: res.postHeight, _listStartIndex: res.listStartIndex, _renderedList: res.renderedList }); onRenderedListChange?.(res.renderedList.length); } }; return { init: () => { scrollEl = container.querySelector('.dt-main'); }, reset: (list) => { state._listStartIndex = 0; state._renderedList = vs.reset(list, scrollEl || container) || []; if (state.list === list) { vs.init(list, refresh); } }, refresh, onScroll: refresh }; };