Fix an issue that caused widgets at the end of a mark decoration to be rendered in their own separate mark DOM element.
When multiple ranges in a single range set overlap, put the smaller ones inside the bigger ones, so that overlapping decorations don't break up each other's elements when coming from the same source.
Selection and selection range eq
methods now support an optional argument that makes them also compare by cursor associativity.
The RangeSet.join
function can be used to join multiple range sets together.
Fix an issue where Text.slice
and Text.replace
could return objects with incorrect length
when the given from
/to
values were out of range for the text.
Make sure transactions cannot add multiple selections when allowMultipleSelections
is false.
Fix a bug that caused Text.iterLines
to not return empty lines at the end of the iterated ranges.
Give the tag property on FacetReader
the type of the output type parameter to force TypeScript to infer the proper type when converting from Facet
to FacetReader
.
The new FacetReader
type provides a way to export a read-only handle to a Facet
.
Fix an issue that could cause RangeSet.compare
to miss changes in the set of active ranges around a point range.
EditorSelection.range
now accepts an optional 4th argument to specify the bidi level of the range's head position.
Fix a bug that caused the openStart
value passed to span iterators to be incorrect around widgets in some circumstances.
Avoid unnecessary calls to computed facet getters when a state is reconfigured but no dependencies of the computed facet change.
Fix an infinite loop in RangeSet.eq
when the to
parameter isn't given.
Fix an issue where, when multiple transaction extenders took effect, only the highest-precedence one was actually included in the transaction.
Fix a bug in range set span iteration that would cause decorations to be inappropriately split in some situations.
Refine change mapping to preserve insertions made by concurrent changes.
The enables
option to Facet.define
may now take a function, which will be called with the facet value to create the extensions.
Fix a problem that caused effects' map
methods to be called with an incorrect change set when filtering changes.
Update dependencies to 6.0.0
EditorView.phrase
now accepts additional arguments, which it will interpolate into the phrase in the place of $
markers.
The deprecated precedence names fallback
, extend
, and override
were removed from the library.
Fix a bug where, if an extension value occurs multiple times, its lowest, rather than highest precedence is used.
Fix an issue where facets with computed inputs would unneccesarily have their outputs recreated on state reconfiguration.
Fix a bug in the order in which new values for state fields and facets were computed, which could cause dynamic facets to hold the wrong value in some situations.
The exports from @codemirror/rangeset now live in this package.
The exports from @codemirror/text now live in this package.
Mapping a non-empty selection range now always puts any newly inserted text on the sides of the range outside of the mapped version.
Fix a bug where facet values with computed inputs could incorrectly retain their old value on reconfiguration.
Avoid recomputing facets on state reconfiguration if that facet's inputs stayed precisely the same.
Selection ranges created with EditorSelection.range
will now have an assoc pointing at their anchor, when non-empty.
Fix a bug that caused facet compare functions to be called with an invalid value in some situations.
Fix a bug that caused dynamic facet values to be incorrectly kept unchanged when reconfiguration changed one of their dependencies.
Fix a bug that would cause dynamic facet values influenced by a state reconfiguration to not properly recompute.
When reconfiguring a state, effects from the reconfiguring transaction can now be seen by newly added state fields.
The precedence levels (under Prec
) now have more generic names, because their 'meaningful' names were entirely inappropriate in many situations.
The editor state now has a readOnly
property with a matching facet to control its value.
Fix a bug where wordAt
never returned a useful result.
User event strings now work differently—the events emitted by the core packages follow a different system, and hierarchical event tags can be created by separating the words with dots.
languageDataAt
now takes an optional side
argument to specificy which side of the position you're interested in.
It is now possible to add a user event annotation with a direct userEvent
property on a transaction spec.
Transactions now have an isUserEvent
method that can be used to check if it is (a subtype of) some user event type.
Fix an issue where state fields might be initialized with a state that they aren't actually part of during reconfiguration.
The new EditorState.wordAt
method finds the word at a given position.
Fix an issue in the compiled output that would break the code when minified with terser.
The new Transaction.remote
annotation can be used to mark and recognize transactions created by other actors.
The ChangeDesc
class now has toJSON
and fromJSON
methods.
Fix unintended ES2020 output (the package contains ES6 code again).
The new Compartment.get
method can be used to get the content of a compartment in a given state.
tagExtension
and the reconfigure
transaction spec property have been replaced with the concept of configuration compartments and reconfiguration effects (see Compartment
, StateEffect.reconfigure
, and StateEffect.appendConfig
).
EditorSelection.map
and SelectionRange.map
now take an optional second argument to indicate which direction to map to.
The package now also exports a CommonJS module.
First numbered release.