import React from "react"; import type { ImageAttachment } from "../../utils/image.js"; import { type SlashCommandInfo } from "./SlashCommandMenu.js"; import type { TaskRecord } from "../../core/tasks-store.js"; export interface PasteInfo { offset: number; length: number; lineCount: number; } interface InputAreaProps { onSubmit: (value: string, images: ImageAttachment[], paste?: PasteInfo) => void; onAbort: () => void; /** * Text to push into the composer from outside (e.g. queued messages restored * after an interrupt). Bumping `nonce` re-triggers injection even when the * text is unchanged. Injected text is appended after any existing draft. */ injectText?: { text: string; nonce: number; } | null; disabled?: boolean; isActive?: boolean; onDownAtEnd?: () => void; onShiftTab?: () => void; onToggleTasks?: () => void; taskPickerOpen?: boolean; tasks?: readonly TaskRecord[]; onCloseTaskPicker?: () => void; onStartTask?: (task: TaskRecord) => void; onRunAllTasks?: (task?: TaskRecord) => void; onDeleteTask?: (task: TaskRecord) => void; onToggleSkills?: () => void; onToggleMarkdown?: () => void; cwd: string; commands?: SlashCommandInfo[]; /** * Locked badge rendered before the prompt arrow on the first visual line. * The user cannot delete or edit it — typed text always follows. Used by * downstream tools (gg-boss) to show the active scope/project pill. */ scopeBadge?: React.ReactNode; /** * Skip the SGR mouse-tracking enable/disable dance entirely. Some terminals * (notably Ghostty mid-2026) interpret rapid `\x1b[?1000h` / `\x1b[?1006h` * mode toggles as bracketed-paste boundaries, which makes the terminal * paste whatever's in the system clipboard repeatedly during high-frequency * UI updates (e.g. when workers are running and the input rapidly rerenders). * Setting this to true disables click-to-cursor inside the input but kills * the phantom-paste bug. Default: false (mouse tracking enabled, ggcoder * behaviour preserved). */ disableMouseTracking?: boolean; /** * Fired when the user presses Tab (outside slash-completion mode). Used by * downstream tools (gg-boss) to cycle the scope badge. */ onTab?: () => void; /** * Fullscreen alt-screen mode: there is no native scrollback, so mouse-wheel * events must drive the in-app transcript scroll instead of being passed * through to the terminal. When set, wheel-up/down call `onScroll` and mouse * tracking is kept enabled regardless of input text so wheel events arrive. */ mouseScroll?: boolean; /** * Called with a signed line delta when the user scrolls the mouse wheel in * fullscreen mode. Positive = scroll UP (older output), negative = DOWN. */ onScroll?: (deltaLines: number) => void; } export declare function InputArea({ onSubmit, onAbort, injectText, disabled, isActive, onDownAtEnd, onShiftTab, onToggleTasks, taskPickerOpen, tasks, onCloseTaskPicker, onStartTask, onRunAllTasks, onDeleteTask, onToggleSkills, onToggleMarkdown, cwd, commands, scopeBadge, disableMouseTracking, mouseScroll, onScroll, onTab, }: InputAreaProps): import("react/jsx-runtime").JSX.Element; export {}; //# sourceMappingURL=InputArea.d.ts.map