pairOpsWithTheirBlock static method
Implementation
static List<TDataGroup> pairOpsWithTheirBlock(List<DeltaInsertOp> ops) {
final result = <TDataGroup>[];
bool canBeInBlock(DeltaInsertOp op) {
return !(op.isJustNewline() || op.isCustomEmbedBlock() || op.isVideo() || op.isContainerBlock());
}
bool isInlineData(DeltaInsertOp op) => op.isInline();
var lastInd = ops.length - 1;
for (var i = lastInd; i >= 0; i--) {
final op = ops[i];
if (op.isVideo()) {
result.add(VideoItem(op));
} else if (op.isCustomEmbedBlock()) {
result.add(BlotBlock(op));
} else if (op.isContainerBlock()) {
final opsSlice = sliceFromReverseWhile(ops, i - 1, canBeInBlock);
result.add(BlockGroup(op, opsSlice.elements));
i = opsSlice.sliceStartsAt > -1 ? opsSlice.sliceStartsAt : i;
} else {
final opsSlice = sliceFromReverseWhile(ops, i - 1, isInlineData);
result.add(InlineGroup(opsSlice.elements..add(op)));
i = opsSlice.sliceStartsAt > -1 ? opsSlice.sliceStartsAt : i;
}
}
return result.reversed.toList();
}