const selection = editor.read.selection();
if (!selection) return;
const target = editor.anchor(selection, {
association: "inward",
deletion: "drop",
});deletion is required:
"drop" resolves to null when the target is deleted. Undo does not
resurrect the dropped value."nearest" resolves to the nearest valid location. Saved undo and redo
restore the exact value recorded on each side of the history batch.Paths and points accept "backward" or "forward" association. Ranges also
accept "inward" and "outward". Pass root for a rootless value that belongs
to a named document root.
Persistent anchors remain active across commits and history actions until
release() is called.
Omit view to resolve in the view that captured the anchor. Pass another view
of the same editor model and document root to read its current projection.
A foreign model or different root throws. One retained target can resolve to
different locations, or be unavailable, across projected views; resolving it
does not create another anchor or change either view's projection.
const current = target.resolve();
const inOtherView = target.resolve(otherView);
const finalValue = target.release();const current = target.resolve();
const inOtherView = target.resolve(otherView);
const finalValue = target.release();Here, otherView is another view of the same model and root. resolve reads
the mapped value without ending tracking. An anchor captured in an aborted
transaction is unavailable. A released anchor returns null in every view.
release() returns the current value in the capture view and permanently
detaches the shared target. Releasing an anchor does not merely detach one
projected view. Both methods return null for a dropped target or after release.
Use persistent anchors for application-owned runtime state such as local annotations. Release them when their owner is removed.
Transaction anchors track a location only while the update or detached transaction builder is active.
editor.update((tx) => {
const target = tx.anchor(range, {
association: "inward",
deletion: "nearest",
});
tx.text.delete({ at: range });
const mapped = target.resolve();
if (mapped) tx.selection.set(mapped);
});editor.update((tx) => {
const target = tx.anchor(range, {
association: "inward",
deletion: "nearest",
});
tx.text.delete({ at: range });
const mapped = target.resolve();
if (mapped) tx.selection.set(mapped);
});EditorTransactionAnchor exposes only resolve(). The transaction releases
its backing anchor automatically. Calling resolve() after the callback ends
throws because the transaction is no longer active.
Anchors are runtime values. Persist the resolved path, point, or range only when the application owns a durable serialization policy.