ProseMirror / prosemirror

The ProseMirror WYSIWYM editor

Home Page:http://prosemirror.net/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add `ignoreMutation` function for MarkView

Mr3zee opened this issue · comments

Can we, please, have an ability to add ignoreMutation for MarkView's? I would be really helpful!

Mark views do not support the kind of dynamic behavior that would make ignoreMutation useful, they just allow you to create a custom wrapper element. You'll have to find another solution (decorations, possibly) if you want to do something more complicated with your marks. But mind that they may be split by the presence of other marks.

@marijnh but this is not dynamic behavior. There is MarkViewDesc that basically has ignoreMutation function, that just can not be extended via libraries API's, does not it make sense to provide these means of extensibility?

Do you have an example of a use case for this?

@marijnh I do. I have a text highlighting functionality. It highlights a word on hover and some words around it (not necessarily adjacent ones). To highlight the words that are not hovered I need to add a css class to corresponding DOM elements (the word wrapping into DOM elements is done by inline decorations). This causes mutations that I can suppress in paragraph node view. But if a word is wrapped into some mark, this does not work. Mutation is captured by a mark desc and the element is recreated thus rollbacking my changes. If I could ignore this mutation in a mark - the problem would disappear.

That kind of thing is not what ignoreMutation is for—it is intended to help filter out mutations inside widgets and such. Use decorations to style content, don't directly manipulate the DOM.

@marijnh technically, I'm this a mutation of the inline decoration element. But inline decorations do not have this filter either