Agree about virtualization in principle. Not that nightmarish though.
My Sciter supports built-in virtualization out of the box. But I shall admit that this is second approach to the problem.
Currently Sciter's behavior:virtual-list supports as fixed-height items (that's easy) as variable-height items like messages [1] in chats.
API is relatively simple [2]: single event "contentrequired" that virtual-list sends to JS. In response JS shall either append or prepend requested number of DOM elements to the container (a.k.a. sliding window scroller). Example, grid showing 20000 records: https://gitlab.com/sciter-engine/sciter-js-sdk/-/blob/main/s...
And needless to say that this supports animated (a.k.a. kinetic) scroll.
Agreed. Virtualization with a table layout, sticky header, native scrolling, and inline content (aka no iframe) it's quite challenging, especially if business-value-wise it's seen as some kind of commodity. Factor in variable height and you're in for big trouble.
Refer to this POC (read: uncompleted unuseful app) to understand what I mean (save for the variable height): https://csv.riiway.com/
My Sciter supports built-in virtualization out of the box. But I shall admit that this is second approach to the problem.
Currently Sciter's behavior:virtual-list supports as fixed-height items (that's easy) as variable-height items like messages [1] in chats.
API is relatively simple [2]: single event "contentrequired" that virtual-list sends to JS. In response JS shall either append or prepend requested number of DOM elements to the container (a.k.a. sliding window scroller). Example, grid showing 20000 records: https://gitlab.com/sciter-engine/sciter-js-sdk/-/blob/main/s...
And needless to say that this supports animated (a.k.a. kinetic) scroll.
[1] https://sciter.com/behaviorvirtual-list-for-sciter-and-scite... [2] https://docs.sciter.com/docs/behaviors/behavior-virtual-list