insertBefore<T extends LexicalNode> method
T
insertBefore<T extends LexicalNode>(
- T nodeToInsert
Inserts nodeToInsert directly before this node.
Implementation
T insertBefore<T extends LexicalNode>(T nodeToInsert) {
errorOnReadOnly();
final parent = getParentOrThrow();
errorOnInsertTextNodeOnRoot(parent, nodeToInsert);
final writableSelf = getWritable<LexicalNode>();
final writableInsert = nodeToInsert.getWritable<T>();
$removeFromParent(writableInsert);
final writableParent = writableSelf
.getParentOrThrow()
.getWritable<ElementNode>();
final prevSibling = writableSelf.getPreviousSibling();
if (prevSibling == null) {
writableParent.firstKey = writableInsert.key;
} else {
prevSibling.getWritable<LexicalNode>().nextKey = writableInsert.key;
}
writableInsert
..prevKey = writableSelf.prevKey
..nextKey = writableSelf.key
..parentKey = writableParent.key;
writableSelf.prevKey = writableInsert.key;
writableParent.sizeInternal++;
return nodeToInsert;
}