chore: temporarily remove the code that automatically formats when inserting text

This commit is contained in:
Lucas.Xu 2022-10-08 11:25:26 +08:00
parent e9c0956c51
commit 1841fb293e
3 changed files with 11 additions and 69 deletions

View File

@ -1,7 +1,6 @@
import 'dart:collection';
import 'dart:math';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_editor/src/document/attributes.dart';
import 'package:appflowy_editor/src/document/node.dart';
import 'package:appflowy_editor/src/document/path.dart';
@ -115,17 +114,21 @@ class TransactionBuilder {
/// Inserts content at a specified index.
/// Optionally, you may specify formatting attributes that are applied to the inserted string.
/// When no formatting attributes specified, the formating attributes before the insert position will be used if they don't have defaultFormatting flag set
/// When defaultFormatting flag is set before the insert position, it will be cleared.
/// When insert position is within a text having defaultFormatting flag set, the flag will be ignored and clear (formatting attributes of the text will be applied)
/// By default, the formatting attributes before the insert position will be used.
insertText(
TextNode node,
int index,
String content, {
Attributes? attributes,
}) {
final newAttributes = attributes ?? _getAttributesAt(node, index);
var newAttributes = attributes;
if (index != 0 && attributes == null) {
newAttributes =
node.delta.slice(max(index - 1, 0), index).first.attributes;
if (newAttributes != null) {
newAttributes = Attributes.from(newAttributes);
}
}
textEdit(
node,
() => Delta()
@ -224,38 +227,4 @@ class TransactionBuilder {
afterSelection: afterSelection,
);
}
Attributes? _getAttributesAt(TextNode node, int index) {
if (index == 0) {
return null;
}
final previousAttributes =
node.delta.slice(index - 1, index).first.attributes;
final nextAttributes = node.delta.length > index
? node.delta.slice(index, index + 1).first.attributes
: null;
if (previousAttributes == null) {
return null;
}
if (previousAttributes.containsKey(BuiltInAttributeKey.defaultFormating)) {
Attributes newAttributes = Map.from(previousAttributes)
..removeWhere((key, _) => key == BuiltInAttributeKey.defaultFormating);
if (node.previous != null) {
updateNode(node.next!, newAttributes);
if (previousAttributes == nextAttributes) {
updateNode(node.next!, newAttributes);
return newAttributes;
}
}
return null;
}
return Attributes.from(previousAttributes);
}
}

View File

@ -1,5 +1,4 @@
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_editor/src/extensions/path_extensions.dart';
import 'package:flutter/material.dart';
// convert **abc** to bold abc.

View File

@ -95,7 +95,6 @@ void main() async {
testWidgets('**AppFlowy** application to bold AppFlowy only',
(tester) async {
const boldText = '**AppFlowy*';
const normalText = ' application';
final editor = tester.editor..insertTextNode('');
await editor.startTesting();
await editor.updateSelection(
@ -107,10 +106,6 @@ void main() async {
await editor.insertText(textNode, boldText[i], i);
}
await insertAsterisk(editor);
for (var i = 0; i < normalText.length; i++) {
await editor.insertText(
textNode, normalText[i], i + boldText.length - 3);
}
final boldTextLength = boldText.replaceAll('*', '').length;
final appFlowyBold = textNode.allSatisfyBoldInSelection(
Selection.single(
@ -119,16 +114,8 @@ void main() async {
endOffset: boldTextLength,
),
);
final applicationNormal = textNode.allSatisfyBoldInSelection(
Selection.single(
path: [0],
startOffset: boldTextLength,
endOffset: textNode.toRawString().length,
),
);
expect(appFlowyBold, true);
expect(applicationNormal, false);
expect(textNode.toRawString(), 'AppFlowy application');
expect(textNode.toRawString(), 'AppFlowy');
});
testWidgets('**** nothing changes', (tester) async {
@ -240,7 +227,6 @@ void main() async {
testWidgets('__AppFlowy__ application to bold AppFlowy only',
(tester) async {
const boldText = '__AppFlowy_';
const normalText = ' application';
final editor = tester.editor..insertTextNode('');
await editor.startTesting();
await editor.updateSelection(
@ -252,10 +238,6 @@ void main() async {
await editor.insertText(textNode, boldText[i], i);
}
await insertUnderscore(editor);
for (var i = 0; i < normalText.length; i++) {
await editor.insertText(
textNode, normalText[i], i + boldText.length - 3);
}
final boldTextLength = boldText.replaceAll('_', '').length;
final appFlowyBold = textNode.allSatisfyBoldInSelection(
Selection.single(
@ -264,16 +246,8 @@ void main() async {
endOffset: boldTextLength,
),
);
final applicationNormal = textNode.allSatisfyBoldInSelection(
Selection.single(
path: [0],
startOffset: boldTextLength,
endOffset: textNode.toRawString().length,
),
);
expect(appFlowyBold, true);
expect(applicationNormal, false);
expect(textNode.toRawString(), 'AppFlowy application');
expect(textNode.toRawString(), 'AppFlowy');
});
testWidgets('____ nothing changes', (tester) async {