How is the text/data stored per cell? I tried building something similar to this based off cells in Jupyter notebooks, but one issue I encountered was with having a one-way binding from editor to render.
One problem with this is with to-do lists, where instead of having the user modifying the underlying text representation in the editor, I wanted the user to be able to check off an item via the rendered html. For this, it seems like I needed three components: an editor, a render, and a non-flat data model.