this leads to some bugs: rows removed after vertical scrolling appear only after horizontal scrolling because we have additional cleaning in render -
if (lastRenderedScrollLeft != scrollLeft) {
cleanUpAndRenderCells(rendered);
}
the fix is probably to replace && with || in cleanupRows:
if ( ( ( i = parseInt(i, 10)) !== activeRow )
&& ( i < rangeToKeep.top || i > rangeToKeep.bottom )
|| ( removeFrozenRow )
) {
removeRowFromCache(i);
}