diff --git a/.size-snapshot.json b/.size-snapshot.json index 998524c..a4a4f12 100644 --- a/.size-snapshot.json +++ b/.size-snapshot.json @@ -1,36 +1,36 @@ { "dist/react-fiber-traverse.cjs.development.js": { - "bundled": 12379, - "minified": 5465, - "gzipped": 1553 + "bundled": 19424, + "minified": 8388, + "gzipped": 2612 }, "dist/react-fiber-traverse.cjs.production.js": { - "bundled": 12379, - "minified": 5465, - "gzipped": 1553 + "bundled": 19424, + "minified": 8388, + "gzipped": 2612 }, "dist/react-fiber-traverse.esm.js": { - "bundled": 12017, - "minified": 5161, - "gzipped": 1468, + "bundled": 19124, + "minified": 8112, + "gzipped": 2537, "treeshaked": { "rollup": { - "code": 49, - "import_statements": 49 + "code": 31, + "import_statements": 31 }, "webpack": { - "code": 1066 + "code": 1048 } } }, "dist/react-fiber-traverse.umd.development.js": { - "bundled": 37610, - "minified": 10548, - "gzipped": 3614 + "bundled": 34569, + "minified": 11581, + "gzipped": 4230 }, "dist/react-fiber-traverse.umd.production.js": { - "bundled": 37610, - "minified": 10548, - "gzipped": 3614 + "bundled": 34569, + "minified": 11581, + "gzipped": 4230 } } diff --git a/docs/globals.md b/docs/globals.md index 5b72228..9c27aa3 100644 --- a/docs/globals.md +++ b/docs/globals.md @@ -10,6 +10,7 @@ * ["findNode"](modules/_findnode_.md) * ["index"](modules/_index_.md) +* ["match"](modules/_match_.md) * ["mocked-types/index"](modules/_mocked_types_index_.md) * ["traverse"](modules/_traverse_.md) * ["utils"](modules/_utils_.md) \ No newline at end of file diff --git a/docs/interfaces/_mocked_types_index_.fibernodedomcontainer.md b/docs/interfaces/_mocked_types_index_.fibernodedomcontainer.md index f2d5749..3a46ccf 100644 --- a/docs/interfaces/_mocked_types_index_.fibernodedomcontainer.md +++ b/docs/interfaces/_mocked_types_index_.fibernodedomcontainer.md @@ -347,7 +347,7 @@ ___ • **_reactRootContainer**: *object* -*Defined in [mocked-types/index.ts:4](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L4)* +*Defined in [mocked-types/index.ts:4](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L4)* #### Type declaration: diff --git a/docs/interfaces/_mocked_types_index_.fibernodeforcomponentclass.md b/docs/interfaces/_mocked_types_index_.fibernodeforcomponentclass.md index d8cdb07..7ee46fe 100644 --- a/docs/interfaces/_mocked_types_index_.fibernodeforcomponentclass.md +++ b/docs/interfaces/_mocked_types_index_.fibernodeforcomponentclass.md @@ -24,7 +24,7 @@ • **child**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:28](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L28)* +*Defined in [mocked-types/index.ts:28](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L28)* ___ @@ -32,7 +32,7 @@ ___ • **elementType**: *`ComponentClass`* -*Defined in [mocked-types/index.ts:31](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L31)* +*Defined in [mocked-types/index.ts:31](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L31)* ___ @@ -40,7 +40,7 @@ ___ • **sibling**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:29](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L29)* +*Defined in [mocked-types/index.ts:29](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L29)* ___ @@ -48,7 +48,7 @@ ___ • **stateNode**: *`Component`* -*Defined in [mocked-types/index.ts:34](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L34)* +*Defined in [mocked-types/index.ts:34](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L34)* ___ @@ -56,4 +56,4 @@ ___ • **type**: *`ComponentClass`* -*Defined in [mocked-types/index.ts:32](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L32)* \ No newline at end of file +*Defined in [mocked-types/index.ts:32](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L32)* \ No newline at end of file diff --git a/docs/interfaces/_mocked_types_index_.fibernodeforfunctioncomponent.md b/docs/interfaces/_mocked_types_index_.fibernodeforfunctioncomponent.md index ce78060..75d2dbf 100644 --- a/docs/interfaces/_mocked_types_index_.fibernodeforfunctioncomponent.md +++ b/docs/interfaces/_mocked_types_index_.fibernodeforfunctioncomponent.md @@ -24,7 +24,7 @@ • **child**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:18](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L18)* +*Defined in [mocked-types/index.ts:18](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L18)* ___ @@ -32,7 +32,7 @@ ___ • **elementType**: *`FunctionComponent`* -*Defined in [mocked-types/index.ts:21](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L21)* +*Defined in [mocked-types/index.ts:21](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L21)* ___ @@ -40,7 +40,7 @@ ___ • **sibling**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:19](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L19)* +*Defined in [mocked-types/index.ts:19](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L19)* ___ @@ -48,7 +48,7 @@ ___ • **stateNode**: *null* -*Defined in [mocked-types/index.ts:24](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L24)* +*Defined in [mocked-types/index.ts:24](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L24)* ___ @@ -56,4 +56,4 @@ ___ • **type**: *`FunctionComponent`* -*Defined in [mocked-types/index.ts:22](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L22)* \ No newline at end of file +*Defined in [mocked-types/index.ts:22](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L22)* \ No newline at end of file diff --git a/docs/interfaces/_mocked_types_index_.fibernodeforinstrinsicelement.md b/docs/interfaces/_mocked_types_index_.fibernodeforinstrinsicelement.md index 1252e1f..8d122fb 100644 --- a/docs/interfaces/_mocked_types_index_.fibernodeforinstrinsicelement.md +++ b/docs/interfaces/_mocked_types_index_.fibernodeforinstrinsicelement.md @@ -24,9 +24,9 @@ • **child**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:38](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L38)* +*Defined in [mocked-types/index.ts:38](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L38)* -*Defined in [mocked-types/index.ts:48](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L48)* +*Defined in [mocked-types/index.ts:48](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L48)* ___ @@ -34,9 +34,9 @@ ___ • **elementType**: *keyof IntrinsicElements* -*Defined in [mocked-types/index.ts:41](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L41)* +*Defined in [mocked-types/index.ts:41](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L41)* -*Defined in [mocked-types/index.ts:51](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L51)* +*Defined in [mocked-types/index.ts:51](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L51)* ___ @@ -44,9 +44,9 @@ ___ • **sibling**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:39](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L39)* +*Defined in [mocked-types/index.ts:39](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L39)* -*Defined in [mocked-types/index.ts:49](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L49)* +*Defined in [mocked-types/index.ts:49](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L49)* ___ @@ -54,9 +54,9 @@ ___ • **stateNode**: *`HTMLElement`* -*Defined in [mocked-types/index.ts:44](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L44)* +*Defined in [mocked-types/index.ts:44](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L44)* -*Defined in [mocked-types/index.ts:54](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L54)* +*Defined in [mocked-types/index.ts:54](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L54)* ___ @@ -64,6 +64,6 @@ ___ • **type**: *keyof IntrinsicElements* -*Defined in [mocked-types/index.ts:42](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L42)* +*Defined in [mocked-types/index.ts:42](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L42)* -*Defined in [mocked-types/index.ts:52](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L52)* \ No newline at end of file +*Defined in [mocked-types/index.ts:52](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L52)* \ No newline at end of file diff --git a/docs/interfaces/_mocked_types_index_.fibernodefortextnode.md b/docs/interfaces/_mocked_types_index_.fibernodefortextnode.md index 10e0ba8..fdc1d10 100644 --- a/docs/interfaces/_mocked_types_index_.fibernodefortextnode.md +++ b/docs/interfaces/_mocked_types_index_.fibernodefortextnode.md @@ -24,7 +24,7 @@ • **child**: *null* -*Defined in [mocked-types/index.ts:58](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L58)* +*Defined in [mocked-types/index.ts:58](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L58)* ___ @@ -32,7 +32,7 @@ ___ • **elementType**: *null* -*Defined in [mocked-types/index.ts:61](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L61)* +*Defined in [mocked-types/index.ts:61](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L61)* ___ @@ -40,7 +40,7 @@ ___ • **sibling**: *[FiberNode](../modules/_mocked_types_index_.md#fibernode) | null* -*Defined in [mocked-types/index.ts:59](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L59)* +*Defined in [mocked-types/index.ts:59](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L59)* ___ @@ -48,7 +48,7 @@ ___ • **stateNode**: *`Text`* -*Defined in [mocked-types/index.ts:64](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L64)* +*Defined in [mocked-types/index.ts:64](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L64)* ___ @@ -56,4 +56,4 @@ ___ • **type**: *null* -*Defined in [mocked-types/index.ts:62](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L62)* \ No newline at end of file +*Defined in [mocked-types/index.ts:62](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L62)* \ No newline at end of file diff --git a/docs/interfaces/_traverse_.ttraverseconfig.md b/docs/interfaces/_traverse_.ttraverseconfig.md new file mode 100644 index 0000000..8f09eb8 --- /dev/null +++ b/docs/interfaces/_traverse_.ttraverseconfig.md @@ -0,0 +1,41 @@ +> **[react-fiber-traverse](../README.md)** + +[Globals](../globals.md) / ["traverse"](../modules/_traverse_.md) / [TTraverseConfig](_traverse_.ttraverseconfig.md) / + +# Interface: TTraverseConfig + +## Hierarchy + +* **TTraverseConfig** + +## Index + +### Properties + +* [order](_traverse_.ttraverseconfig.md#optional-order) +* [skipSelfForStartNode](_traverse_.ttraverseconfig.md#optional-skipselfforstartnode) +* [skipSiblingForStartNode](_traverse_.ttraverseconfig.md#optional-skipsiblingforstartnode) + +## Properties + +### `Optional` order + +• **order**? : *`Array<"self" | "child" | "sibling">`* + +*Defined in [traverse.ts:5](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L5)* + +___ + +### `Optional` skipSelfForStartNode + +• **skipSelfForStartNode**? : *undefined | false | true* + +*Defined in [traverse.ts:7](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L7)* + +___ + +### `Optional` skipSiblingForStartNode + +• **skipSiblingForStartNode**? : *undefined | false | true* + +*Defined in [traverse.ts:6](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L6)* \ No newline at end of file diff --git a/docs/modules/_findnode_.md b/docs/modules/_findnode_.md index b9d4ca5..c1fae70 100644 --- a/docs/modules/_findnode_.md +++ b/docs/modules/_findnode_.md @@ -8,17 +8,37 @@ ### Functions +* [findAllNodesByComponentName](_findnode_.md#findallnodesbycomponentname) * [findNodeByComponent](_findnode_.md#findnodebycomponent) * [findNodeByComponentName](_findnode_.md#findnodebycomponentname) * [findNodeByComponentRef](_findnode_.md#findnodebycomponentref) +* [findNodesByComponentName](_findnode_.md#findnodesbycomponentname) ## Functions +### findAllNodesByComponentName + +▸ **findAllNodesByComponentName**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedName`: string, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *`Array`* + +*Defined in [findNode.ts:58](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/findNode.ts#L58)* + +**Parameters:** + +Name | Type | +------ | ------ | +`node` | [FiberNode](_mocked_types_index_.md#fibernode) \| null | +`expectedName` | string | +`traverseConfig?` | [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md) | + +**Returns:** *`Array`* + +___ + ### findNodeByComponent -▸ **findNodeByComponent**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedClassOrFunction`: `React.ComponentType`): *[FiberNode](_mocked_types_index_.md#fibernode) | null* +▸ **findNodeByComponent**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedClassOrFunction`: `React.ComponentType`, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *[FiberNode](_mocked_types_index_.md#fibernode) | null* -*Defined in [findNode.ts:67](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/findNode.ts#L67)* +*Defined in [findNode.ts:84](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/findNode.ts#L84)* Find node by component (i.e. class or function by reference), till first match. @@ -42,6 +62,7 @@ Name | Type | ------ | ------ | `node` | [FiberNode](_mocked_types_index_.md#fibernode) \| null | `expectedClassOrFunction` | `React.ComponentType` | +`traverseConfig?` | [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md) | **Returns:** *[FiberNode](_mocked_types_index_.md#fibernode) | null* @@ -49,9 +70,9 @@ ___ ### findNodeByComponentName -▸ **findNodeByComponentName**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedName`: string): *[FiberNode](_mocked_types_index_.md#fibernode) | null* +▸ **findNodeByComponentName**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedName`: string, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *[FiberNode](_mocked_types_index_.md#fibernode) | null* -*Defined in [findNode.ts:21](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/findNode.ts#L21)* +*Defined in [findNode.ts:22](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/findNode.ts#L22)* Find node by component name, till first match. @@ -74,6 +95,7 @@ Name | Type | ------ | ------ | `node` | [FiberNode](_mocked_types_index_.md#fibernode) \| null | `expectedName` | string | +`traverseConfig?` | [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md) | **Returns:** *[FiberNode](_mocked_types_index_.md#fibernode) | null* @@ -81,9 +103,9 @@ ___ ### findNodeByComponentRef -▸ **findNodeByComponentRef**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedClassInstance`: `Component`): *[FiberNode](_mocked_types_index_.md#fibernode) | null* +▸ **findNodeByComponentRef**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedClassInstance`: `Component`, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *[FiberNode](_mocked_types_index_.md#fibernode) | null* -*Defined in [findNode.ts:114](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/findNode.ts#L114)* +*Defined in [findNode.ts:122](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/findNode.ts#L122)* Find node by component instance ref, till first match. @@ -105,5 +127,24 @@ Name | Type | ------ | ------ | `node` | [FiberNode](_mocked_types_index_.md#fibernode) \| null | `expectedClassInstance` | `Component` | +`traverseConfig?` | [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md) | -**Returns:** *[FiberNode](_mocked_types_index_.md#fibernode) | null* \ No newline at end of file +**Returns:** *[FiberNode](_mocked_types_index_.md#fibernode) | null* + +___ + +### findNodesByComponentName + +▸ **findNodesByComponentName**(`node`: [FiberNode](_mocked_types_index_.md#fibernode) | null, `expectedName`: string, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *`IterableIterator`* + +*Defined in [findNode.ts:41](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/findNode.ts#L41)* + +**Parameters:** + +Name | Type | +------ | ------ | +`node` | [FiberNode](_mocked_types_index_.md#fibernode) \| null | +`expectedName` | string | +`traverseConfig?` | [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md) | + +**Returns:** *`IterableIterator`* \ No newline at end of file diff --git a/docs/modules/_match_.md b/docs/modules/_match_.md new file mode 100644 index 0000000..0d3d524 --- /dev/null +++ b/docs/modules/_match_.md @@ -0,0 +1,64 @@ +> **[react-fiber-traverse](../README.md)** + +[Globals](../globals.md) / ["match"](_match_.md) / + +# External module: "match" + +## Index + +### Functions + +* [matchAll](_match_.md#matchall) +* [matchFirst](_match_.md#matchfirst) +* [matchGenerator](_match_.md#matchgenerator) + +## Functions + +### matchAll + +▸ **matchAll**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `match`: string | `CSSWhat.Selector`[][]): *`Array`* + +*Defined in [match.ts:115](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/match.ts#L115)* + +**Parameters:** + +Name | Type | +------ | ------ | +`node` | [FiberNode](_mocked_types_index_.md#fibernode) | +`match` | string \| `CSSWhat.Selector`[][] | + +**Returns:** *`Array`* + +___ + +### matchFirst + +▸ **matchFirst**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `match`: string | `CSSWhat.Selector`[][]): *[FiberNode](_mocked_types_index_.md#fibernode) | null* + +*Defined in [match.ts:122](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/match.ts#L122)* + +**Parameters:** + +Name | Type | +------ | ------ | +`node` | [FiberNode](_mocked_types_index_.md#fibernode) | +`match` | string \| `CSSWhat.Selector`[][] | + +**Returns:** *[FiberNode](_mocked_types_index_.md#fibernode) | null* + +___ + +### matchGenerator + +▸ **matchGenerator**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `match`: string | `CSSWhat.Selector`[][]): *`IterableIterator`* + +*Defined in [match.ts:6](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/match.ts#L6)* + +**Parameters:** + +Name | Type | +------ | ------ | +`node` | [FiberNode](_mocked_types_index_.md#fibernode) | +`match` | string \| `CSSWhat.Selector`[][] | + +**Returns:** *`IterableIterator`* \ No newline at end of file diff --git a/docs/modules/_mocked_types_index_.md b/docs/modules/_mocked_types_index_.md index 90fd289..52dcf5a 100644 --- a/docs/modules/_mocked_types_index_.md +++ b/docs/modules/_mocked_types_index_.md @@ -25,7 +25,7 @@ Ƭ **FiberNode**: *[FiberNodeForComponentClass](../interfaces/_mocked_types_index_.fibernodeforcomponentclass.md) | [FiberNodeForFunctionComponent](../interfaces/_mocked_types_index_.fibernodeforfunctioncomponent.md) | [FiberNodeForInstrinsicElement](../interfaces/_mocked_types_index_.fibernodeforinstrinsicelement.md) | [FiberNodeForTextNode](../interfaces/_mocked_types_index_.fibernodefortextnode.md)* -*Defined in [mocked-types/index.ts:11](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L11)* +*Defined in [mocked-types/index.ts:11](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L11)* ___ @@ -33,4 +33,4 @@ ___ Ƭ **FiberNodeisHTMLLike**: *[FiberNodeForInstrinsicElement](../interfaces/_mocked_types_index_.fibernodeforinstrinsicelement.md) | [FiberNodeForTextNode](../interfaces/_mocked_types_index_.fibernodefortextnode.md)* -*Defined in [mocked-types/index.ts:67](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/mocked-types/index.ts#L67)* \ No newline at end of file +*Defined in [mocked-types/index.ts:67](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/mocked-types/index.ts#L67)* \ No newline at end of file diff --git a/docs/modules/_traverse_.md b/docs/modules/_traverse_.md index 37a740d..9ea75c1 100644 --- a/docs/modules/_traverse_.md +++ b/docs/modules/_traverse_.md @@ -6,6 +6,10 @@ ## Index +### Interfaces + +* [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md) + ### Functions * [traverse](_traverse_.md#traverse) @@ -15,13 +19,13 @@ ### traverse -▸ **traverse**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `fn`: function): *void* +▸ **traverse**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `fn`: function, `traverseConfig?`: [TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)): *void* -*Defined in [traverse.ts:19](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/traverse.ts#L19)* +*Defined in [traverse.ts:146](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L146)* Traverse nodes recursively in depth-first manner, starting from a start node. -This is the default and basic traversal method, which covers basic use cases. +This is the default and basic traversal function, which covers basic use cases. You can't do advanced things like change the order of traversal, skip or cancel traversal after any node, etc. For more advanced usecases, see [traverseGenerator](_traverse_.md#traversegenerator) @@ -45,6 +49,8 @@ Name | Type | ------ | ------ | `node` | [FiberNode](_mocked_types_index_.md#fibernode) | +▪`Optional` **traverseConfig**: *[TTraverseConfig](../interfaces/_traverse_.ttraverseconfig.md)* + **Returns:** *void* ___ @@ -53,7 +59,64 @@ ___ ▸ **traverseGenerator**(`node`: [FiberNode](_mocked_types_index_.md#fibernode), `__namedParameters`: object): *`IterableIterator`* -*Defined in [traverse.ts:30](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/traverse.ts#L30)* +*Defined in [traverse.ts:69](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/traverse.ts#L69)* + +Traverse nodes recursively using generators. + +This is the advanced traverse function, which can be used used +to write other variants of traversal and find. + +Type signature for generator.next first argument is `{ skipChild?: boolean; skipSibling?: boolean } | void ` +Throw any error into the generator to finish the generator and let it cleanup its internals. + +It allows inversion of control - +so, application code can decide to +1. change order of traversal, +2. skip some elements, +3. cancel traversal mid-way. + +**`example`** +```js +// Basic use (for-of) + +const nodeIterator = traverseGenerator(rootNode); +for (const node of nodeIterator) { + // do something with each node here +} +``` +------ + +**`example`** +```js +// Breadth-first + +// note the order below +const nodeIterator = traverseGenerator(rootNode, ["self", "sibling", "child"]); +// rest - same as above +``` +----- + +**`example`** +```js +// Get first 3 nodes and then stop the generator + +const nodeIterator = traverseGenerator(rootNode); + +var count = 0; +var next; +while ( + count < 3 && + !(next = nodeIterator.next()).done +) { + count++; + const node = next.value; + // do something with each node here +} + +// Finish generator, to prevent memory leak +nodeIterator.throw(new Error()); +``` +----- **Parameters:** @@ -64,5 +127,7 @@ ___ Name | Type | Default | ------ | ------ | ------ | `order` | "self" \| "child" \| "sibling"[] | ["self", "child", "sibling"] | +`skipSelfForStartNode` | boolean | false | +`skipSiblingForStartNode` | boolean | true | **Returns:** *`IterableIterator`* \ No newline at end of file diff --git a/docs/modules/_utils_.md b/docs/modules/_utils_.md index 1e3da70..d08408b 100644 --- a/docs/modules/_utils_.md +++ b/docs/modules/_utils_.md @@ -24,7 +24,7 @@ ▸ **doesElementContainRootFiberNode**(`element`: `Element`): *boolean* -*Defined in [utils.ts:65](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L65)* +*Defined in [utils.ts:65](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L65)* **Parameters:** @@ -40,7 +40,7 @@ ___ ▸ **getRootFiberNodeFromDOM**(`startElement?`: [Element](../interfaces/_mocked_types_index_.fibernodedomcontainer.md#element)): *[FiberNode](_mocked_types_index_.md#fibernode) | null* -*Defined in [utils.ts:82](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L82)* +*Defined in [utils.ts:82](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L82)* Util to find root React Fiber node from html DOM tree. Returns null, if not found.SHould be called after ReactDOM.render is finished. @@ -59,7 +59,7 @@ ___ ▸ **isConstructorComponentClass**(`ctr`: `React.ElementType` | null): *boolean* -*Defined in [utils.ts:42](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L42)* +*Defined in [utils.ts:42](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L42)* **Parameters:** @@ -75,7 +75,7 @@ ___ ▸ **isConstructorFunctionComponent**(`ctr`: `React.ElementType` | null): *boolean* -*Defined in [utils.ts:59](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L59)* +*Defined in [utils.ts:59](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L59)* **Parameters:** @@ -91,7 +91,7 @@ ___ ▸ **isConstructorHtmlLike**(`ctr`: `React.ElementType` | null): *boolean* -*Defined in [utils.ts:33](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L33)* +*Defined in [utils.ts:33](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L33)* **Parameters:** @@ -107,7 +107,7 @@ ___ ▸ **isNodeComponentClass**(`node`: [FiberNode](_mocked_types_index_.md#fibernode)): *boolean* -*Defined in [utils.ts:27](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L27)* +*Defined in [utils.ts:27](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L27)* **Parameters:** @@ -123,7 +123,7 @@ ___ ▸ **isNodeFunctionComponent**(`node`: [FiberNode](_mocked_types_index_.md#fibernode)): *boolean* -*Defined in [utils.ts:21](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L21)* +*Defined in [utils.ts:21](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L21)* **Parameters:** @@ -139,7 +139,7 @@ ___ ▸ **isNodeHtmlLike**(`node`: [FiberNode](_mocked_types_index_.md#fibernode)): *boolean* -*Defined in [utils.ts:11](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L11)* +*Defined in [utils.ts:11](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L11)* **Parameters:** @@ -155,7 +155,7 @@ ___ ▸ **isNodeNotHtmlLike**(`node`: [FiberNode](_mocked_types_index_.md#fibernode)): *boolean* -*Defined in [utils.ts:15](https://github.com/bendtherules/react-fiber-traverse/blob/fd6dad2/src/utils.ts#L15)* +*Defined in [utils.ts:15](https://github.com/bendtherules/react-fiber-traverse/blob/c92c64b/src/utils.ts#L15)* **Parameters:** diff --git a/package-lock.json b/package-lock.json index 526c5b9..0affb8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-fiber-traverse", - "version": "0.0.7", + "version": "0.0.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7f5f249..6f346d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-fiber-traverse", - "version": "0.0.7", + "version": "0.0.8", "description": "Traverse and other utils on top of React fiber tree", "main": "dist/index.js", "module": "dist/react-fiber-traverse.esm.js",