import { isValidElement } from 'react';

/**
 * 从 React 节点中提取文本内容
 * @param node React 节点
 * @returns 提取的文本字符串
 * @example
 * extractTextFromNode(<span>Hello</span>) // => 'Hello'
 * extractTextFromNode('Hello') // => 'Hello'
 * extractTextFromNode([<span>Hello</span>, ' ', <span>World</span>]) // => 'Hello World'
 */
export var extractTextFromNode = function extractTextFromNode(node) {
  if (typeof node === 'string') return node;
  if (typeof node === 'number') return String(node);
  if (!node) return '';

  // 处理数组
  if (Array.isArray(node)) {
    return node.map(extractTextFromNode).join('');
  }

  // 处理 React 元素
  if ( /*#__PURE__*/isValidElement(node)) {
    var props = node.props;
    return extractTextFromNode(props.children);
  }
  return '';
};

/**
 * 从按钮 props 中提取显示文本
 * @param buttonProps 按钮的 props
 * @param fallback 默认文本
 * @returns 显示文本
 */
export var extractButtonLabel = function extractButtonLabel(buttonProps, fallback) {
  if (!(buttonProps !== null && buttonProps !== void 0 && buttonProps.children)) return fallback;
  var text = extractTextFromNode(buttonProps.children);
  return text || fallback;
};