
import React from 'react';

function isStatelessComponent(klass) {
  // 已包含React.PureComponent?
  return !(klass instanceof React.Component);
}

// 遍历所有层级的子组件
// 将符合条件的顶层组件传入处理函数
function deepSearch(children, shouldHandle, handle) {
  return React.Children.map(children, (item) => {
    if (shouldHandle(item)) {
      return handle(item);
    }

    // fix issue #58
    // item may be null
    if (!(item && item.props && item.props.children)) {
      return item;
    }

    return React.cloneElement(
      item,
      {},
      deepSearch(item.props.children, shouldHandle, handle)
    );
  });
}

export {
  isStatelessComponent,
  deepSearch
};
