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