getParagraphSelection function

DocumentSelection? getParagraphSelection({
  1. required DocumentPosition docPosition,
  2. required DocumentLayout docLayout,
})

Returns the paragraph of text that contains the given docPosition, or null if there is no text at the given docPosition.

A paragraph is defined as all text within the given document node, bounded by newlines or the beginning/end of the node's text.

Implementation

DocumentSelection? getParagraphSelection({
  required DocumentPosition docPosition,
  required DocumentLayout docLayout,
}) {
  _log.log('getParagraphSelection', '_getWordSelection()');
  _log.log('getParagraphSelection', ' - doc position: $docPosition');

  final component = docLayout.getComponentByNodeId(docPosition.nodeId);
  if (component is! TextComposable) {
    return null;
  }

  final nodePosition = docPosition.nodePosition;
  if (nodePosition is! TextNodePosition) {
    return null;
  }

  final paragraphNodeSelection = (component as TextComposable).getContiguousTextSelectionAt(nodePosition);

  return DocumentSelection(
    base: DocumentPosition(
      nodeId: docPosition.nodeId,
      nodePosition: paragraphNodeSelection.base,
    ),
    extent: DocumentPosition(
      nodeId: docPosition.nodeId,
      nodePosition: paragraphNodeSelection.extent,
    ),
  );
}