getUpstreamSelectableNodeBefore function

DocumentNode? getUpstreamSelectableNodeBefore(
  1. Document document,
  2. DocumentLayoutResolver documentLayoutResolver,
  3. DocumentNode startingNode
)

Returns the first DocumentNode before startingNode whose DocumentComponent is visually selectable.

Implementation

DocumentNode? getUpstreamSelectableNodeBefore(
  Document document,
  DocumentLayoutResolver documentLayoutResolver,
  DocumentNode startingNode,
) {
  bool foundSelectableNode = false;
  DocumentNode prevNode = startingNode;
  DocumentNode? selectableNode;
  do {
    selectableNode = document.getNodeBefore(prevNode);

    if (selectableNode != null) {
      final nextComponent = documentLayoutResolver().getComponentByNodeId(selectableNode.id);
      if (nextComponent != null) {
        foundSelectableNode = nextComponent.isVisualSelectionSupported();
      }
      prevNode = selectableNode;
    }
  } while (!foundSelectableNode && selectableNode != null);

  return selectableNode;
}