/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { useCallback } from 'react';
import { useKeypress } from '../hooks/useKeypress.js';
import { ShellExecutionService } from '@hoptrendy/hopcode-core';
import { keyToAnsi } from '../hooks/keyToAnsi.js';
import { keyMatchers, Command } from '../keyMatchers.js';
export const ShellInputPrompt = ({ activeShellPtyId, focus = true, }) => {
    const handleShellInputSubmit = useCallback((input) => {
        if (activeShellPtyId) {
            ShellExecutionService.writeToPty(activeShellPtyId, input);
        }
    }, [activeShellPtyId]);
    const handleInput = useCallback((key) => {
        if (!focus || !activeShellPtyId) {
            return;
        }
        // Don't forward Ctrl+F to the PTY — it's used to toggle shell focus.
        // Without this, the raw ^F control character gets written to the shell.
        if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS](key)) {
            return;
        }
        if (key.ctrl && key.shift && key.name === 'up') {
            ShellExecutionService.scrollPty(activeShellPtyId, -1);
            return;
        }
        if (key.ctrl && key.shift && key.name === 'down') {
            ShellExecutionService.scrollPty(activeShellPtyId, 1);
            return;
        }
        const ansiSequence = keyToAnsi(key);
        if (ansiSequence) {
            handleShellInputSubmit(ansiSequence);
        }
    }, [focus, handleShellInputSubmit, activeShellPtyId]);
    useKeypress(handleInput, { isActive: focus });
    return null;
};
//# sourceMappingURL=ShellInputPrompt.js.map