From 693dd69d325421bc6bd1442111180b9b86e7c603 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Thu, 12 Sep 2019 13:46:33 +0530 Subject: [PATCH] findNode - Add findNodesByComponentName and findAllNodesByComponentName --- src/findNode.ts | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/findNode.ts b/src/findNode.ts index ec9c443..9123f79 100644 --- a/src/findNode.ts +++ b/src/findNode.ts @@ -38,6 +38,31 @@ function findNodeByComponentName( return null; } +function* findNodesByComponentName( + node: FiberNode | null, + expectedName: string, + traverseConfig?: TTraverseConfig +): IterableIterator { + if (node === null) { + return null; + } + + const nodeIterator = traverseGenerator(node, traverseConfig); + for (const tmpNode of nodeIterator) { + if (isNodeNotHtmlLike(tmpNode) && tmpNode.type.name === expectedName) { + yield tmpNode; + } + } +} + +function findAllNodesByComponentName( + node: FiberNode | null, + expectedName: string, + traverseConfig?: TTraverseConfig +): Array { + return [...findNodesByComponentName(node, expectedName, traverseConfig)]; +} + /** * Find node by component (i.e. class or function by reference), till first match. * @@ -116,4 +141,10 @@ function findNodeByComponentRef( return null; } -export { findNodeByComponentName, findNodeByComponent, findNodeByComponentRef }; +export { + findNodeByComponentName, + findNodesByComponentName, + findAllNodesByComponentName, + findNodeByComponent, + findNodeByComponentRef +};