mirror of
https://github.com/bendtherules/react-fiber-traverse.git
synced 2026-08-18 13:52:36 +00:00
traverseGenerator - Add skipSelfForStartNode start param to skip startNode (default:false)
Default false to keep current testcases running
This commit is contained in:
+11
-4
@@ -4,6 +4,7 @@ import { FiberNode } from "./mocked-types";
|
||||
interface TTraverseConfig {
|
||||
order?: Array<"self" | "child" | "sibling">;
|
||||
skipSiblingForStartNode?: boolean;
|
||||
skipSelfForStartNode?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,13 +70,16 @@ function* traverseGenerator(
|
||||
node: FiberNode,
|
||||
{
|
||||
order = ["self", "child", "sibling"],
|
||||
skipSiblingForStartNode = true
|
||||
skipSiblingForStartNode = true,
|
||||
skipSelfForStartNode = false
|
||||
}: TTraverseConfig = {}
|
||||
): IterableIterator<FiberNode> {
|
||||
let skipChild = false,
|
||||
skipSibling = skipSiblingForStartNode;
|
||||
skipSibling = skipSiblingForStartNode,
|
||||
skipSelf = skipSelfForStartNode;
|
||||
|
||||
function* traverseSelf() {
|
||||
if (!skipSelf) {
|
||||
const controlInput:
|
||||
| { skipChild?: boolean; skipSibling?: boolean }
|
||||
| undefined = yield node;
|
||||
@@ -84,13 +88,15 @@ function* traverseGenerator(
|
||||
({ skipChild = skipChild, skipSibling = skipSibling } = controlInput);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function* traverseChild() {
|
||||
if (!skipChild && node.child !== null) {
|
||||
const nextNode = node.child;
|
||||
yield* traverseGenerator(nextNode, {
|
||||
order,
|
||||
skipSiblingForStartNode: false
|
||||
skipSiblingForStartNode: false,
|
||||
skipSelfForStartNode: false
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -100,7 +106,8 @@ function* traverseGenerator(
|
||||
const nextNode = node.sibling;
|
||||
yield* traverseGenerator(nextNode, {
|
||||
order,
|
||||
skipSiblingForStartNode: false
|
||||
skipSiblingForStartNode: false,
|
||||
skipSelfForStartNode: false
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user