mirror of
https://github.com/bendtherules/react-fiber-traverse.git
synced 2026-08-18 13:52:36 +00:00
findNode* - Support traverseConfig
This commit is contained in:
+25
-51
@@ -1,4 +1,5 @@
|
|||||||
import { FiberNode } from "./mocked-types";
|
import { FiberNode } from "./mocked-types";
|
||||||
|
import { traverseGenerator, TTraverseConfig } from "./traverse";
|
||||||
import { isNodeNotHtmlLike } from "./utils";
|
import { isNodeNotHtmlLike } from "./utils";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,26 +21,17 @@ import { isNodeNotHtmlLike } from "./utils";
|
|||||||
*/
|
*/
|
||||||
function findNodeByComponentName(
|
function findNodeByComponentName(
|
||||||
node: FiberNode | null,
|
node: FiberNode | null,
|
||||||
expectedName: string
|
expectedName: string,
|
||||||
|
traverseConfig?: TTraverseConfig
|
||||||
): FiberNode | null {
|
): FiberNode | null {
|
||||||
if (node === null) {
|
if (node === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNodeNotHtmlLike(node) && node.type.name === expectedName) {
|
const nodeIterator = traverseGenerator(node, traverseConfig);
|
||||||
return node;
|
for (const tmpNode of nodeIterator) {
|
||||||
}
|
if (isNodeNotHtmlLike(tmpNode) && tmpNode.type.name === expectedName) {
|
||||||
|
return tmpNode;
|
||||||
{
|
|
||||||
const returnVal = findNodeByComponentName(node.child, expectedName);
|
|
||||||
if (returnVal !== null) {
|
|
||||||
return returnVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
const returnVal = findNodeByComponentName(node.sibling, expectedName);
|
|
||||||
if (returnVal !== null) {
|
|
||||||
return returnVal;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,29 +58,20 @@ function findNodeByComponentName(
|
|||||||
*/
|
*/
|
||||||
function findNodeByComponent(
|
function findNodeByComponent(
|
||||||
node: FiberNode | null,
|
node: FiberNode | null,
|
||||||
expectedClassOrFunction: React.ComponentType
|
expectedClassOrFunction: React.ComponentType,
|
||||||
|
traverseConfig?: TTraverseConfig
|
||||||
): FiberNode | null {
|
): FiberNode | null {
|
||||||
if (node === null) {
|
if (node === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNodeNotHtmlLike(node) && node.type === expectedClassOrFunction) {
|
const nodeIterator = traverseGenerator(node, traverseConfig);
|
||||||
return node;
|
for (const tmpNode of nodeIterator) {
|
||||||
}
|
if (
|
||||||
|
isNodeNotHtmlLike(tmpNode) &&
|
||||||
{
|
tmpNode.type === expectedClassOrFunction
|
||||||
const returnVal = findNodeByComponent(node.child, expectedClassOrFunction);
|
) {
|
||||||
if (returnVal !== null) {
|
return tmpNode;
|
||||||
return returnVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
const returnVal = findNodeByComponent(
|
|
||||||
node.sibling,
|
|
||||||
expectedClassOrFunction
|
|
||||||
);
|
|
||||||
if (returnVal !== null) {
|
|
||||||
return returnVal;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,29 +96,20 @@ function findNodeByComponent(
|
|||||||
*/
|
*/
|
||||||
function findNodeByComponentRef(
|
function findNodeByComponentRef(
|
||||||
node: FiberNode | null,
|
node: FiberNode | null,
|
||||||
expectedClassInstance: React.Component
|
expectedClassInstance: React.Component,
|
||||||
|
traverseConfig?: TTraverseConfig
|
||||||
): FiberNode | null {
|
): FiberNode | null {
|
||||||
if (node === null) {
|
if (node === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNodeNotHtmlLike(node) && node.stateNode === expectedClassInstance) {
|
const nodeIterator = traverseGenerator(node, traverseConfig);
|
||||||
return node;
|
for (const tmpNode of nodeIterator) {
|
||||||
}
|
if (
|
||||||
|
isNodeNotHtmlLike(tmpNode) &&
|
||||||
{
|
tmpNode.stateNode === expectedClassInstance
|
||||||
const returnVal = findNodeByComponentRef(node.child, expectedClassInstance);
|
) {
|
||||||
if (returnVal !== null) {
|
return tmpNode;
|
||||||
return returnVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
const returnVal = findNodeByComponentRef(
|
|
||||||
node.sibling,
|
|
||||||
expectedClassInstance
|
|
||||||
);
|
|
||||||
if (returnVal !== null) {
|
|
||||||
return returnVal;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user