mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: implement delete multiple text node and merge the text.
This commit is contained in:
parent
89a0a5599e
commit
b577489c2f
@ -48,6 +48,10 @@ class TransactionBuilder {
|
||||
add(DeleteOperation(path: node.path, removedValue: node));
|
||||
}
|
||||
|
||||
deleteNodes(List<Node> nodes) {
|
||||
nodes.forEach(deleteNode);
|
||||
}
|
||||
|
||||
textEdit(TextNode node, Delta Function() f) {
|
||||
beforeSelection = state.cursorSelection;
|
||||
final path = node.path;
|
||||
|
@ -57,24 +57,19 @@ FlowyKeyEventHandler deleteTextHandler = (editorState, event) {
|
||||
);
|
||||
}
|
||||
} else {
|
||||
for (var i = 0; i < textNodes.length; i++) {
|
||||
final textNode = textNodes[i];
|
||||
if (i == 0) {
|
||||
transactionBuilder.deleteText(
|
||||
textNode,
|
||||
selection.start.offset,
|
||||
textNode.toRawString().length - selection.start.offset,
|
||||
);
|
||||
} else if (i == textNodes.length - 1) {
|
||||
transactionBuilder.deleteText(
|
||||
textNode,
|
||||
0,
|
||||
selection.end.offset,
|
||||
);
|
||||
} else {
|
||||
transactionBuilder.deleteNode(textNode);
|
||||
}
|
||||
}
|
||||
final first = textNodes.first;
|
||||
var content = textNodes.last.toRawString();
|
||||
content = content.substring(selection.end.offset, content.length);
|
||||
// Merge the fist and the last text node content,
|
||||
// and delete the all nodes expect for the first.
|
||||
transactionBuilder
|
||||
..deleteNodes(textNodes.sublist(1))
|
||||
..replaceText(
|
||||
first,
|
||||
selection.start.offset,
|
||||
first.toRawString().length - selection.start.offset,
|
||||
content,
|
||||
);
|
||||
}
|
||||
|
||||
transactionBuilder.commit();
|
||||
|
Loading…
Reference in New Issue
Block a user