Transform.getMirror
, usable in obscure circumstances for inspecting the mirroring structure or a transform, is now a public method.
New utility function dropPoint
, which tries to find a valid position for dropping a slice near a given document position.
Transform.setBlockType
no longer drops marks on the nodes it updates.
Fix a bug that made replaceStep
unable to generate wrapper nodes in some circumstances.
Fixes an issue where replaceStep
could generate slices that internally violated the schema.
Transform.deleteRange
will cover unmatched opening at the start of the deleted range.
Throw errors, rather than constructing invalid objects, when deserializing from invalid JSON data.
replaceStep
will now return null rather than an empty step when it fails to place the slice.
Avoid duplicating defining parent nodes in replaceRange
.
Fix overeager closing of destination nodes when fitting a slice during replacing.
Fix a problem where slice-placing didn't handle content matches correctly and might generate invalid steps or fail to generate steps though a valid one exists.
Allows adjacent nodes from an inserted slice to be placed in different parent nodes, allowing Transform.replace
to create fits that weren't previously found.
Fixes a crash in replace
.
The errors raised by Transform.step
now properly inherit from Error.
When setBlockType
comes across a textblock that can't be changed due to schema constraints, it skips it instead of failing.
canSplit
now returns false when the requested split goes through isolating nodes.
The setNodeType
method on transforms is now more descriptively called setNodeMarkup
. The old name will continue to work with a warning until the next release.
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).
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
.
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.
Fix another bug in the way canSplit
interpreted its typesAfter
argument.
Fix crash in canSplit
when an array containing null fields is passed as fourth argument.
canSplit
now returns false when given custom after-split node types that don't match the content at that point.
Fixes canLift
incorrectly returning null when lifting into an isolating node.
addMark
no longer assumes marks always exclude only themselves.
replaceRange
](http://prosemirror.net/docs/ref/version/0.21.0.html#transform.Transform.replaceRange) and deleteRange
will no longer expand the range across isolating node boundaries.
Fixes issue where replacing would sometimes unexpectedly split nodes.
Transform.setNodeType
now takes an optional argument to set the new node's attributes.
Steps now provide an offset
method, which makes it possible to create a copy the step with its position offset by a given amount.
docChanged
is now a property on the Transform
class, rather than its Transaction
subclass.
Mapping
instances now have invert
and appendMappingInverted
methods to make mapping through them in reverse easier.
Fix bug where pasted/inserted content would sometimes get incorrectly closed at the right side.
Fix issue where Transform.replace
would, in specific circumstances, unneccessarily drop content.
The new Transform
method replaceRange
, replaceRangeWith
, and deleteRange
provide a way to replace and delete content in a 'do what I mean' way, automatically expanding the replaced region over empty parent nodes and including the parent nodes in the inserted content when appropriate.
Fix bug in Transform.setBlockType
when used in a transform that already has steps.
Mapped positions now count as deleted when the token to the
side specified by the assoc
parameter is deleted, rather than when
both tokens around them are deleted. (This is usually what you already
wanted anyway.)
Moved into a separate module.
The Remapping
class was renamed to Mapping
and works differently
(simpler, grows in only one direction, and has provision for mapping
through only a part of it).
Transform
objects now build up a Mapping
instead of an array of maps.
PosMap
was renamed to StepMap
to make it
clearer that this applies only to a single step (as opposed to
Mapping
.
The arguments to canSplit
and
split
were changed to make it
possible to specify multiple split-off node types for splits with a
depth greater than 1.
Rename joinable
to canJoin
.
Steps can now be merged in some circumstances, which can be useful when storing a lot of them.