Closed jhnsnc closed 1 year ago
See https://github.com/ProseMirror/prosemirror-view/commit/47be3c32b9fd2238a4bffd7435ada713cee64750 . But I expect IME will still be disrupted even with that patch, since without a node view for the parent node, there's no way in which ProseMirror can update it without recreating the DOM nodes.
Thanks, Marijn!
Simple attribute changes (either via
setNodeAttribute
orsetNodeMarkup
) on any node destroys/recreates all child nodeView instances. The NodeView is not destroyed if thesetNodeAttribute
is called for the node itself.This is unexpected because in most (or perhaps all?) cases, a simple attribute change on the parent is irrelevant to the rendering of its contentDOM. If the attribute change were directly on the node with the NodeView, we have the
update()
callback to decide if the NodeView can successfully handle the change or not, but there is no such mechanism for changes on parent/ancestor nodes.Repro demo: https://glitch.com/edit/#!/vivacious-whispering-ocarina
We noticed this in our editor because user IME compositions were getting disrupted when we set an attribute on a container node to track which user last touched that node's content and it destroyed/recreated our NodeView containing the text node where the IME was happening, breaking the composition.