mergeNearNodes method

DOMNodeMapping<T>? mergeNearNodes(
  1. DOMNode domNode1,
  2. DOMNode domNode2, {
  3. bool onlyCompatibles = false,
})

Implementation

DOMNodeMapping<T>? mergeNearNodes(DOMNode domNode1, DOMNode domNode2,
    {bool onlyCompatibles = false}) {
  if (onlyCompatibles && !domNode1.isCompatibleForMerge(domNode2)) {
    return null;
  }

  var nodeRuntime1 = domNode1.getRuntime<T>();
  var nodeRuntime2 = domNode2.getRuntime<T>();

  var node1 = nodeRuntime1.node;
  var node2 = nodeRuntime2.node;

  if (domNode1.isNextNode(domNode2)) {
    if (domNode1.merge(domNode2) && nodeRuntime1.mergeNode(node2)) {
      if (node1 == null || node2 == null) return null;
      unmap(domNode2, node2);
      return DOMNodeMapping(this, domNode1, node1);
    }
  } else if (domNode1.isPreviousNode(domNode2)) {
    if (domNode2.merge(domNode1) && nodeRuntime2.mergeNode(node1)) {
      if (node1 == null || node2 == null) return null;
      unmap(domNode1, node1);
      return DOMNodeMapping(this, domNode2, node2);
    }
  }

  return null;
}