[enhancement] Add togglable windowing and the ability to lazily load data, for large dataset optimisations
What I mean by windowing is the use of virtual lists via react-virtualized in order to improve performance for large datasets, by only rendering items that would be visible.
As for the lazily loaded data, it would go as follows: when a node is expanded, if it's children aren't in a cache, then a callback would be invoked, which receives the ID of the expanded node. This callback would need to return a list of nodes (the children of the expanded node).
The lazily loading is a nice-to-have, but the windowing would be a great performance addition for large datasets. It would be overkill for small datasets, which is why it would need to be optional/togglable.
Hi @JamesYeoman -- this might require some more work than I have time for at the moment.
I need to work on the internals and exactly how it would handle windowing (especially if you were to expand a node near the scroll obserer listener and trigger the window. If you've got time, I'd love to see a PR I can review and merge.