/**
 * 拼音匹配工具函数。
 *
 * 支持：首字母匹配（xy → 小燕）、全拼匹配（yan → 燕）、
 * 中文+字母混合（小y → 小燕）、多音字全覆盖。
 *
 * 基于 pinyin-pro 的 match 函数实现。
 */

import { match } from "pinyin-pro";

/**
 * 判断 text 是否匹配 input（支持拼音 + 中文 + 混合输入）。
 *
 * @param input 用户输入的搜索词
 * @param text 待匹配的文本（如姓名）
 * @returns 是否匹配
 */
export function pinyinMatch(input: string, text: string): boolean {
  if (!input || !text) return false;
  const q = input.toLowerCase();
  const t = text.toLowerCase();

  // 原始中文/数字包含匹配（兜底）
  if (t.includes(q)) return true;

  // pinyin-pro match：返回匹配的字符索引数组，无匹配返回 null
  // 自动处理首字母、全拼、混合输入、多音字
  const indices = match(text, input, { continuous: true });
  return indices !== null && indices.length > 0;
}

/**
 * Ant Design Select filterOption 的拼音增强版。
 *
 * 用法：
 * ```tsx
 * <Select filterOption={pinyinFilterOption} />
 * ```
 */
export function pinyinFilterOption(
  input: string,
  option?: { label?: unknown; value?: unknown },
): boolean {
  const label = String(option?.label ?? "");
  return pinyinMatch(input, label);
}
