- fast, even when loading big files (how big?)
- wysiwym, nice UX
- live schema validation (nice to have)
To keep the UI responsive I’ll keep CPU heavy things off the main thread. Loading files in a webworker with a wasm xml parser which works fine, and it can parse/emit while the file downloads, which means editing is enabled before the file loads entirely.
One of the bottlenecks in UI speed is rendering too much stuff to the DOM, so I’ll only render what’s in the viewport. That means determining chunks of content and rendering them independently. So I guess that means I’ll have block elements (paragraphs, table cells, list items) as chunks. These chunks will be absolute positioned because the whole point is that they’re rendered independently.
To make it feel seamless users should be able to use arrow keys to move between these chunks as if it was one big textarea. So the first bit of coding i’m doing is making a bunch of absolute positioned textareas that you can navigate between with arrow keys.