5 ms·
Switching to canvas sounds like a very roundabout way to handle an issue related to the dom growing out of hand. Surely unmounting pages that you you're not cur
by worldsayshi 5y ago
Switching to canvas sounds like a very roundabout way to handle an issue related to the dom growing out of hand. Surely unmounting pages that you you're not currently looking at should work?
Of course there could be many reasons but we're left to speculate...
- cellularmitosis 5y agoYou can ditch the off-screen rendered pages but you are still stuck with the entire 1000-page data structure. Should your current line be on page 997 or 998? You have to calculate the size of every line of every page to answer that.
- williamscs 5y agoBut does switching to using canvas solve that problem?
- nwsm 5y agoThe argument is that the application would be much more performant, and would handle that issue better, not necessarily avoid it.
- hctaw 5y agoEfficient 3 dimensional position or range queries (line/column/page) is a pretty well studied problem. You don't need to query every point of the space to answer anything.
- jasim 5y agoI could not find clear references with an initial search. Can you expand a bit more about this approach? Thanks.
- ctoth 5y agoI've used a segment tree[0] for a similar problem before. For 3D queries an R-tree may be more appropriate. [0]: https://en.wikipedia.org/wiki/Segment_tree https://en.wikipedia.org/wiki/Segment_tree
- hctaw 5y agoIt's a task more commonly found in computational geometry (3D range query == find all the points in a data set enclosed by a cube). There are numerous data structures that are well suited for various geometric queries like ranges/lookups (interval trees, quadtrees) as well as more text-oriented operations like cut/copy/paste/insert/merge/etc (like ropes). I'm not familiar with the operations required to put a cursor at the right place in a document, but knowing how much research has gone into storing similar data and looking up what you need efficiently the idea of "going through all the text every time" is a big code smell.