import { useCallback } from 'react';
import { isStepClickable } from "../utils";

/**
 * 处理步骤点击逻辑的 Hook
 * 
 * @param currentStep - 当前步骤索引
 * @param clickable - 是否允许点击步骤切换
 * @param allowClickFinished - 是否允许点击已完成的步骤
 * @param onStepChange - 步骤变更回调函数
 * @returns 步骤点击处理函数
 */
export function useStepClick(currentStep, clickable, allowClickFinished, onStepChange) {
  var handleStepClick = useCallback(function (index, item) {
    // 检查是否禁用
    if (item.disabled) {
      return;
    }

    // 检查是否可点击
    if (!clickable) {
      return;
    }

    // 检查步骤状态是否允许点击
    var canClick = isStepClickable(index, currentStep, item.status || 'wait', clickable, allowClickFinished);
    if (!canClick) {
      return;
    }

    // 触发步骤变更
    onStepChange(index);
  }, [currentStep, clickable, allowClickFinished, onStepChange]);
  return handleStepClick;
}