onScroll(evt) { var scrollTop = 0; if (evt != null) { var scrollDiv = evt.target; if (this.paddingDiv == null) { this.paddingDiv = scrollDiv.querySelector('#padding'); } if (this.innerDiv == null) { this.innerDiv = scrollDiv.querySelector('#inner'); this.innerDiv.style.setProperty('width', `${ROW_WIDTH}px`); } scrollTop = scrollDiv.scrollTop; } var iStart = Math.floor(scrollTop / ITEM_HEIGHT); var iEnd = Math.min(iStart + VISIBLE_ITEMS + 1, this._fullList.length); var padding = iStart * ITEM_HEIGHT; if (this.innerDiv != null) { this.innerDiv.style.setProperty('height', `${HEIGHT - padding}px`); } if (this.paddingDiv != null) { this.paddingDiv.style.setProperty('height', `${padding}px`); } this.visibleItems = ListWrapper.slice(this._fullList, iStart, iEnd); }