prosemirror-replaceattrs
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

prosemirror-replaceattrs

The missing ReplaceAttrsStep for prosemirror

Usage

import 'prosemirror-replaceattrs' /// somewhere in your project
 
tr.replaceAttrs(pos, attrs)

Why

In prosemirror, in order to update attributes of a node, you must delete it and replace with a new node with updated attributes. Something like this:

state.tr.setNodeMarkup(state.selection.from, undefined, attrs)
/// or
newNode = node.copy()
newNode.attrs = attrs
state.tr.replaceWith(pos, pos + 1, newNode)

While this works perfectly, during collaboration it does not go well with undo history. Suppose user A inserts an image node and user B updates alt attribute of that image node. When user A hits undo, it should remove the inserted image, but it will not if you've replaced the entire node. This ReplaceAttrsStep solves that problem if you use it to update attributes of a node.

Readme

Keywords

Package Sidebar

Install

npm i prosemirror-replaceattrs

Weekly Downloads

488

Version

1.0.0

License

MIT

Unpacked Size

19.9 kB

Total Files

13

Last publish

Collaborators

  • orkhan.alikhanov