private findNext()

in fuse-ui-fabric/tree/treeView.tsx [386:412]


  private findNext(cur: ITreeNodeView, skipChildren: boolean = false): ITreeNodeView {
    if (cur.expanded && !skipChildren) {
      const firstChild = first(cur.children);
      if (firstChild) {
        return firstChild;
      }
    }

    const parent = cur.parent;
    if (!parent) {
      return null;
    }

    const children = parent.children;
    let iter = children.next();
    let prev: ITreeNodeView = null;

    while (!iter.done) {
      if (prev === cur) {
        return iter.value;
      }
      prev = iter.value;
      iter = children.next();
    }

    return this.findNext(parent, true);
  }