mirror of
https://github.com/bendtherules/react-fiber-traverse.git
synced 2026-08-19 00:33:38 +00:00
Add basic traverseGenerator
Need to allow changing order
This commit is contained in:
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
import traverse from "./traverse";
|
import { traverse, traverseGenerator } from "./traverse";
|
||||||
import {
|
import {
|
||||||
findNodeByComponent,
|
findNodeByComponent,
|
||||||
findNodeByComponentRef,
|
findNodeByComponentRef,
|
||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
|
|
||||||
export {
|
export {
|
||||||
traverse,
|
traverse,
|
||||||
|
traverseGenerator,
|
||||||
findNodeByComponent,
|
findNodeByComponent,
|
||||||
findNodeByComponentRef,
|
findNodeByComponentRef,
|
||||||
findNodeByComponentName
|
findNodeByComponentName
|
||||||
|
|||||||
+22
-3
@@ -1,5 +1,5 @@
|
|||||||
// import { isNodeSimple } from './utils';
|
// import { isNodeSimple } from './utils';
|
||||||
import {FiberNode} from './mocked-types';
|
import { FiberNode } from "./mocked-types";
|
||||||
|
|
||||||
function traverse(node: FiberNode, fn: (node: FiberNode) => any) {
|
function traverse(node: FiberNode, fn: (node: FiberNode) => any) {
|
||||||
fn.call(null, node);
|
fn.call(null, node);
|
||||||
@@ -10,6 +10,25 @@ function traverse(node: FiberNode, fn: (node: FiberNode) => any) {
|
|||||||
if (node.sibling !== null) {
|
if (node.sibling !== null) {
|
||||||
traverse(node.sibling, fn);
|
traverse(node.sibling, fn);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export default traverse;
|
function* traverseGenerator(
|
||||||
|
node: FiberNode
|
||||||
|
// {
|
||||||
|
// order = "pre"
|
||||||
|
// }: { order: "in" | "pre" | "post" }
|
||||||
|
): IterableIterator<FiberNode> {
|
||||||
|
const { skipChild, skipSibling } = yield node;
|
||||||
|
|
||||||
|
if (!skipChild && node.child !== null) {
|
||||||
|
const nextNode = node.child;
|
||||||
|
yield* traverseGenerator(nextNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!skipSibling && node.sibling !== null) {
|
||||||
|
const nextNode = node.sibling;
|
||||||
|
yield* traverseGenerator(nextNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { traverse, traverseGenerator };
|
||||||
|
|||||||
+2
-1
@@ -6,6 +6,7 @@
|
|||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"declaration": false,
|
"declaration": false,
|
||||||
"declarationDir": null,
|
"declarationDir": null,
|
||||||
"module": "commonjs"
|
"module": "commonjs",
|
||||||
|
"target": "es6",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user