From 9455dd49bf0cbb4470ffe2e18ac357278fc38e2f Mon Sep 17 00:00:00 2001 From: Douglas Ward Date: Sun, 28 Apr 2024 09:32:10 -0600 Subject: [PATCH] Add: test for QuillController clipboard Dart Formatted --- lib/src/models/documents/nodes/line.dart | 46 +++++++++++++++++------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/lib/src/models/documents/nodes/line.dart b/lib/src/models/documents/nodes/line.dart index 5aa63e91..65e893f7 100644 --- a/lib/src/models/documents/nodes/line.dart +++ b/lib/src/models/documents/nodes/line.dart @@ -43,7 +43,9 @@ base class Line extends QuillContainer { if (parent!.isLast) { return null; } - return parent!.next is Block ? (parent!.next as Block).first as Line? : parent!.next as Line?; + return parent!.next is Block + ? (parent!.next as Block).first as Line? + : parent!.next as Line?; } @override @@ -51,7 +53,9 @@ base class Line extends QuillContainer { @override Delta toDelta() { - final delta = children.map((child) => child.toDelta()).fold(Delta(), (dynamic a, b) => a.concat(b)); + final delta = children + .map((child) => child.toDelta()) + .fold(Delta(), (dynamic a, b) => a.concat(b)); var attributes = style; if (parent is Block) { final block = parent as Block; @@ -130,11 +134,17 @@ base class Line extends QuillContainer { final isLineFormat = (index + local == thisLength) && local == 1; if (isLineFormat) { - assert(style.values.every((attr) => attr.scope == AttributeScope.block || attr.scope == AttributeScope.ignore), 'It is not allowed to apply inline attributes to line itself.'); + assert( + style.values.every((attr) => + attr.scope == AttributeScope.block || + attr.scope == AttributeScope.ignore), + 'It is not allowed to apply inline attributes to line itself.'); _format(style); } else { // Otherwise forward to children as it's an inline format update. - assert(style.values.every((attr) => attr.scope == AttributeScope.inline || attr.scope == AttributeScope.ignore)); + assert(style.values.every((attr) => + attr.scope == AttributeScope.inline || + attr.scope == AttributeScope.ignore)); assert(index + local != thisLength); super.retain(index, local, style); } @@ -205,15 +215,21 @@ base class Line extends QuillContainer { // Ensure that we're only unwrapping the block only if we unset a single // block format in the `parentStyle` and there are no more block formats // left to unset. - if (blockStyle.value == null && parentStyle.containsKey(blockStyle.key) && parentStyle.length == 1) { + if (blockStyle.value == null && + parentStyle.containsKey(blockStyle.key) && + parentStyle.length == 1) { _unwrap(); - } else if (!const MapEquality().equals(newStyle.getBlocksExceptHeader(), parentStyle)) { + } else if (!const MapEquality() + .equals(newStyle.getBlocksExceptHeader(), parentStyle)) { _unwrap(); // Block style now can contain multiple attributes - if (newStyle.attributes.keys.any(Attribute.exclusiveBlockKeys.contains)) { - parentStyle.removeWhere((key, attr) => Attribute.exclusiveBlockKeys.contains(key)); + if (newStyle.attributes.keys + .any(Attribute.exclusiveBlockKeys.contains)) { + parentStyle.removeWhere( + (key, attr) => Attribute.exclusiveBlockKeys.contains(key)); } - parentStyle.removeWhere((key, attr) => newStyle?.attributes.keys.contains(key) ?? false); + parentStyle.removeWhere( + (key, attr) => newStyle?.attributes.keys.contains(key) ?? false); final parentStyleToMerge = Style.attr(parentStyle); newStyle = newStyle.mergeAll(parentStyleToMerge); _applyBlockStyles(newStyle); @@ -345,7 +361,8 @@ base class Line extends QuillContainer { void handle(Style style) { for (final attr in result.values) { - if (!style.containsKey(attr.key) || (style.attributes[attr.key]?.value != attr.value)) { + if (!style.containsKey(attr.key) || + (style.attributes[attr.key]?.value != attr.value)) { excluded.add(attr); } } @@ -380,7 +397,8 @@ base class Line extends QuillContainer { /// Returns each node segment's offset in selection /// with its corresponding style or embed as a list - List collectAllIndividualStylesAndEmbed(int offset, int len, {int beg = 0}) { + List collectAllIndividualStylesAndEmbed(int offset, int len, + {int beg = 0}) { final local = math.min(length - offset, len); final result = []; @@ -412,7 +430,8 @@ base class Line extends QuillContainer { final remaining = len - local; if (remaining > 0 && nextLine != null) { - final rest = nextLine!.collectAllIndividualStylesAndEmbed(0, remaining, beg: local + beg); + final rest = nextLine! + .collectAllIndividualStylesAndEmbed(0, remaining, beg: local + beg); result.addAll(rest); } @@ -482,7 +501,8 @@ base class Line extends QuillContainer { final remaining = len - local; if (remaining > 0 && nextLine != null) { - final rest = nextLine!.collectAllStylesWithOffsets(0, remaining, beg: local); + final rest = + nextLine!.collectAllStylesWithOffsets(0, remaining, beg: local); result.addAll(rest); }