import { isValidElement, cloneElement } from 'react';

/**
 * 插槽包装工具函数
 * @description 用于包装 React 插槽元素，添加额外的事件处理
 */

/**
 * 包装插槽元素，添加点击事件
 * @param slotContent 插槽内容
 * @param onClick 点击回调
 * @returns 包装后的插槽内容
 * @example
 * wrapSlotWithClick(leftSlot, handleBackClick)
 */
export var wrapSlotWithClick = function wrapSlotWithClick(slotContent, _onClick) {
  if (!slotContent) return null;
  if ( /*#__PURE__*/isValidElement(slotContent)) {
    return /*#__PURE__*/cloneElement(slotContent, {
      onClick: function onClick(e) {
        var _props;
        // 先调用原有的 onClick
        var originalOnClick = (_props = slotContent.props) === null || _props === void 0 ? void 0 : _props.onClick;
        originalOnClick === null || originalOnClick === void 0 || originalOnClick(e);
        // 再调用传入的 onClick
        _onClick === null || _onClick === void 0 || _onClick();
      }
    });
  }
  return slotContent;
};

/**
 * 检查插槽是否为有效的 React 元素
 * @param slotContent 插槽内容
 * @returns 是否为有效元素
 */
export var isValidSlot = function isValidSlot(slotContent) {
  return slotContent !== null && slotContent !== undefined;
};

/**
 * 渲染插槽内容，如果为空则返回默认内容
 * @param slotContent 插槽内容
 * @param defaultContent 默认内容
 * @returns 最终渲染内容
 */
export var renderSlotOrDefault = function renderSlotOrDefault(slotContent, defaultContent) {
  return isValidSlot(slotContent) ? slotContent : defaultContent;
};