mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 17:35:16 +00:00
32 lines
944 B
JavaScript
32 lines
944 B
JavaScript
|
import React from 'react';
|
||
|
/**
|
||
|
* Iterates through children that are typically specified as `props.children`,
|
||
|
* but only maps over children that are "valid elements".
|
||
|
*
|
||
|
* The mapFunction provided index will be normalised to the components mapped,
|
||
|
* so an invalid component would not increase the index.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
function map(children, func) {
|
||
|
var index = 0;
|
||
|
return React.Children.map(children, function (child) {
|
||
|
return /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child;
|
||
|
});
|
||
|
}
|
||
|
/**
|
||
|
* Iterates through children that are "valid elements".
|
||
|
*
|
||
|
* The provided forEachFunc(child, index) will be called for each
|
||
|
* leaf child with the index reflecting the position relative to "valid components".
|
||
|
*/
|
||
|
|
||
|
|
||
|
function forEach(children, func) {
|
||
|
var index = 0;
|
||
|
React.Children.forEach(children, function (child) {
|
||
|
if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export { map, forEach };
|