// ============================================================
// text-input-menu.ts — 提示词输入框右键菜单定义
//
// 菜单结构：
//   撤销 | 重做
//   ——
//   剪切 | 复制 | 粘贴 | 清空
//   ——
//   全选
//   ——
//   增大字号 | 减小字号 | 恢复默认字号
//
// 注意：
//   - 标准操作（撤销/重做/剪切/复制/粘贴/全选）通过 document.execCommand()
//     操作当前聚焦的 input/textarea 元素
//   - 字号操作需要外部传入 getFocusedInput / setFontSize 回调
//   - 建议在 ContextMenu 外层保持输入框聚焦（见 onContextMenu 处理）
// ============================================================

import type { ContextMenuItems } from '@/shared/components/ContextMenu';

export interface TextInputMenuOptions {
    /** 是否有选中文本（影响剪切/复制的禁用状态） */
    hasSelection: boolean;
    /** 输入框是否为空（影响清空的禁用状态） */
    isEmpty: boolean;
    /** 当前字号相对于默认字号的偏移（>0 增大，<0 减小，0 默认） */
    fontSizeLevel: number;

    onUndo: () => void;
    onRedo: () => void;
    onCut: () => void;
    onCopy: () => void;
    onPaste: () => void;
    onClear: () => void;
    onSelectAll: () => void;
    onIncreaseFont: () => void;
    onDecreaseFont: () => void;
    onResetFont: () => void;
}

export function getTextInputMenuItems(opts: TextInputMenuOptions): ContextMenuItems {
    return [
        {
            key: 'undo',
            label: '撤销',
            shortcut: 'Ctrl+Z',
            onClick: opts.onUndo,
        },
        {
            key: 'redo',
            label: '重做',
            shortcut: 'Ctrl+Y',
            onClick: opts.onRedo,
        },
        'divider',
        {
            key: 'cut',
            label: '剪切',
            shortcut: 'Ctrl+X',
            onClick: opts.onCut,
            disabled: !opts.hasSelection,
        },
        {
            key: 'copy',
            label: '复制',
            shortcut: 'Ctrl+C',
            onClick: opts.onCopy,
            disabled: !opts.hasSelection,
        },
        {
            key: 'paste',
            label: '粘贴',
            shortcut: 'Ctrl+V',
            onClick: opts.onPaste,
        },
        {
            key: 'clear',
            label: '清空',
            onClick: opts.onClear,
            disabled: opts.isEmpty,
        },
        'divider',
        {
            key: 'select-all',
            label: '全选',
            shortcut: 'Ctrl+A',
            onClick: opts.onSelectAll,
        },
        'divider',
        {
            key: 'increase-font',
            label: '增大字号',
            shortcut: 'Ctrl+Plus',
            onClick: opts.onIncreaseFont,
        },
        {
            key: 'decrease-font',
            label: '减小字号',
            shortcut: 'Ctrl+Minus',
            onClick: opts.onDecreaseFont,
        },
        {
            key: 'reset-font',
            label: '恢复默认字号',
            onClick: opts.onResetFont,
            disabled: opts.fontSizeLevel === 0,
        },
    ];
}
