Improve rendering strategy on tree view on Sao

Rational
Rendering strategy of tree views on desktop client allow to show views with a big number of records.
This is due to not render all records at a time, but on the contrary render records that appear on
screen.

I think it would be a good idea try to imitate desktop client behavior on rendering trees,
as long as this does not affect the current operation of Sao.

Proposal
I think, we can use a library that allow to know what records are in viewport of screen or xxx2many
widget. Render only this records, and detect scroll on view trees to redraw only records inside viewport.

Implementation
https://bugs.tryton.org/issue8437
https://codereview.tryton.org/251601002/

Videos:
Actual rendering strategy sample
Proposed rendering strategy sample

On our company, we will try to solve this feature using IntersectionObserver

We will share results comming soon

Is it still needed with the recent improvement on the rendering:

But the IntersectionObserver could be used to automatically click on more when visible.

I think this feature is one more step on performance improvement.

Yes, in the same way that GTK client works.

Why? Because if we fill by default only 20 rows (average number for all the screen sizes) and when new rows are added we only render them (thanks to sao: 6da9f9b71de5). I do no see what improvement an IntersectionObserver will provide except to render only 10 rows instead of 20 on small screen (which is very negligible).

Not really. Because on GTK all the rows are created because it is cheap but on HTML it is not.