It’s been two and a half month since 0.22.0, but finally 0.23.0 is here. It comes with quite a long list of changes, some of them breaking, since I’ve been reviewing all the parts that I wasn’t happy with yet and cleaning them up. I also worked on the docs, where I noticed and removed some methods that seemed superfluous.
Unless something really bad is found, I’m going to release this, maybe with some minor fixes, as 1.0.0 in two weeks (end of September). If you’re using ProseMirror, trying to upgrade and reporting anything that goes wrong would be very helpful.
You’ll find a new guide, more examples, and a somewhat more polished reference manual on the website. Those probably contain typos still, since I only read them once after I wrote them, so if you read them, issues or pull requests are appreciated.
Release notes
prosemirror-model 0.23.0 (2017-09-13)
Breaking changes
ResolvedPos.marks no longer takes a parameter (you probably want marksAcross if you were passing true there).
Attribute and mark constraints in content expressions are no longer supported (this also means the prosemirror-schema-table package, which relied on them, is no longer supported). In this release, mark constraints are still (approximately) recognized with a warning, when present.
ContentMatch objects lost a number of methods: matchNode, matchToEnd, findWrappingFor (which can be easily emulated using the remaining API), and allowsMark, which is now the responsibility of node types instead.
ContentMatch.validEnd is now a property rather than a method.
ContentMatch.findWrapping now returns an array of plain node types, with no attribute information (since this is no longer necessary).
The compute method for attributes is no longer supported.
Fragments no longer have an offsetAt method.
DOMParser.schemaRules is no longer public (use fromSchema and get the resulting parser’s rules property instead).
The DOM parser option topStart has been replaced by topMatch.
The DOMSerializer methods nodesFromSchema and marksFromSchema are no longer public (construct a serializer with fromSchema and read its nodes and marks properties instead).
Bug fixes
Fix issue where whitespace at node boundaries was sometimes dropped during content parsing.
Attribute default values of undefined are now allowed.
New features
contentElement in parse rules may now be a function.
The new method ResolvedPos.marksAcross can be used to find the set of marks that should be preserved after a deletion.
Content expressions are now a regular language, meaning all the operators can be nested and composed as desired, and a bunch of constraints on what could appear next to what have been lifted.
The starting content match for a node type now lives in NodeType.contentMatch.
Allowed marks are now specified per node, rather than in content expressions, using the marks property on the node spec.
Node types received new methods allowsMarkType, allowsMarks, and allowedMarks, which tell you about the marks that node supports.
The style property on parse rules may now have the form "font-style=italic" to only match styles that have the value after the equals sign.
prosemirror-transform 0.23.0 (2017-09-13)
Breaking changes
Step.toJSON no longer has a default implementation.
Steps no longer have an offset method. Map them through a map created with StepMap.offset instead.
The clearMarkup method on Transform is no longer supported (you probably needed clearIncompatible anyway).
Bug fixes
Pasting a list item at the start of a non-empty textblock now wraps the textblock in a list.
Marks on open nodes at the left of a slice are no longer dropped by Transform.replace.
New features
StepMap now has a static method offset, which can be used to create a map that offsets all positions by a given distance.
Transform objects now have a clearIncompatible method that can help make sure a node’s content matches another node type.
prosemirror-view 0.23.0 (2017-09-13)
Breaking changes
The onFocus, onBlur, and handleContextMenu props are no longer supported. You can achieve their effect with the handleDOMEvents prop.
Bug fixes
Fixes occasional crash when reading the selection in Firefox.
Putting a table cell on the clipboard now properly wraps it in a table.
The view will no longer scroll into view when receiving a state that isn’t derived from its previous state.
New features
Transactions caused by a paste now have their “paste” meta property set to true.
Adds a new view prop, handleScrollToSelection to override the behavior of scrolling the selection into view.
The new editor prop clipboardTextSerializer allows you to override the way a piece of document is converted to clipboard text.
Adds the editor prop clipboardTextParser, which can be used to define your own parsing strategy for clipboard text content.
DecorationSet.find now supports passing a predicate to filter decorations by spec.
prosemirror-inputrules 0.23.0 (2017-09-13)
Breaking changes
Schema-specific rule-builders blockQuoteRule, orderedListRule, bulletListRule, codeBlockRule, and headingRule, along with the allInputRules array, are no longer included in this module.
prosemirror-commands 0.23.0 (2017-09-13)
Breaking changes
joinForward and joinBackward no longer fall back to selecting the next node when no other behavior is possible. There are now separate commands selectNodeForward and selectNodeBackward that do this, which the base keymap binds as fallback behavior.
baseKeymap no longer binds keys for joinUp, joinDown, lift, and selectParentNode.
New features
New commands selectNodeForward and selectNodeBackward added.
prosemirror-schema-list 0.23.0 (2017-09-13)
Bug fixes
The splitListItem command now splits the parent list item when executed in a (trailing) empty list item in a nested list.