Only two weeks after 0.14.0! Things are really starting to feel stable… which I guess is about time.
The main change in this release is that a bunch more things (typing, in-textblock backspacing) are left to the browser, and ProseMirror takes care not to re-render content when it doesn’t have to. Which goes exactly against the original concept of ProseMirror (‘never trust the browser, we’ll do it ourselves’), but more and more issues came up where browser or platform features, such as spell-check, long-press to type character variants on OS, double-space for a period on iOS, were broken because the browser and/or the OS didn’t realize what was going on.
So for relatively uncontroversial functionality (there’s not too much disagreement on what should happen to your document when you type a character), the editor now takes a hands-off approach. This is not without danger, and is likely going to cause some new bugs and issues, but I feel it’s a more promising route than continuing to throw up my hands and say ‘nothing I can do’ for the various broken native editing features.
Release Notes
prosemirror-model 0.15.0 (2016-12-10)
Breaking changes
ResolvedPos.atNodeBoundary
is deprecated and will be removed in the next release. Use textOffset > 0
instead.
New features
Parse rules associated with a schema can now specify a priority
to influence the order in which they are applied.
Resolved positions have a new getter textOffset
to find their position within a text node (if any).
prosemirror-transform 0.15.0 (2016-12-10)
Bug fixes
Fix bug where pasted/inserted content would sometimes get incorrectly closed at the right side.
prosemirror-state 0.15.0 (2016-12-10)
Breaking changes
Selection actions no longer scroll the new selection into view by default (they never were supposed to, but due to a bug they did). Add a scrollIntoView
property to the action to get this behavior.
prosemirror-view 0.15.0 (2016-12-10)
Breaking changes
The editor view no longer wraps its editable DOM element in a wrapper element. The ProseMirror
CSS class now applies directly to the editable element. The ProseMirror-content
CSS class is still present for ease of upgrading but will be dropped in the next release.
The editor view no longer draws a drop cursor when dragging content over the editor. The new prosemirror-dropcursor
module implements this as a plugin.
Bug fixes
Simple typing and backspacing now gets handled by the browser without ProseMirror redrawing the touched nodes, making spell-checking and various platform-specific input tricks (long-press on OS X, double space on iOS) work in the editor.
Improve tracking of DOM nodes that have been touched by user changes, so that updateState
can reliably fix them.
Changes to the document that happen while dragging editor content no longer break moving of the content.
Adding or removing a mark directly in the DOM (for example with the bold/italic buttons in iOS’ context menu) now produces mark steps, rather than replace steps.
Pressing backspace at the start of a paragraph on Android now allows key handlers for backspace to fire.
Toggling a mark when there is no selection now works better on mobile platforms.
New features
Introduces an endOfTextblock
method on views, which can be used to find out in a bidi- and layout-aware way whether the selection is on the edge of a textblock.
prosemirror-commands 0.15.0 (2016-12-10)
Breaking changes
Drops suppport for delete(Char|Word)(Before|After)
and move(Back|For)ward
, since we are now letting the browser handle those natively.
Bug fixes
The joinForward
and joinBackward
commands can now strip out markup and nodes that aren’t allowed in the joined node.
New features
A new command exitCode
allows a user to exit a code block by creating a new paragraph below it.
The joinForward
and joinBackward
commands now use a bidirectional-text-aware way to determine whether the cursor is at the proper side of its parent textblock when they are passed a view.