/
larinv
/
claude-code
Обзор
Документация
Войти
/
larinv
/
claude-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
components/BaseTextInput.tsx
136 строк
19 KB
kuberwastaken
new initial commit (history rewritten)
01 апр 2026, 14:57
01 апр 2026, 14:57
c1996f2
Код
Авторство
О чём код?
import { c as _c } from "react/compiler-runtime"; import React from 'react'; import { renderPlaceholder } from '../hooks/renderPlaceholder.js'; import { usePasteHandler } from '../hooks/usePasteHandler.js'; import { useDeclaredCursor } from '../ink/hooks/use-declared-cursor.js'; import { Ansi, Box, Text, useInput } from '../ink.js'; import type { BaseInputState, BaseTextInputProps } from '../types/textInputTypes.js'; import type { TextHighlight } from '../utils/textHighlighting.js'; import { HighlightedInput } from './PromptInput/ShimmeredInput.js'; type BaseTextInputComponentProps = BaseTextInputProps & { inputState: BaseInputState; children?: React.ReactNode; terminalFocus: boolean; highlights?: TextHighlight[]; invert?: (text: string) => string; hidePlaceholderText?: boolean; }; /** * A base component for text inputs that handles rendering and basic input */ export function BaseTextInput(t0) { const $ = _c(14); const { inputState, children, terminalFocus, invert, hidePlaceholderText, ...props } = t0; const { onInput, renderedValue, cursorLine, cursorColumn } = inputState; const t1 = Boolean(props.focus && props.showCursor && terminalFocus); let t2; if ($[0] !== cursorColumn || $[1] !== cursorLine || $[2] !== t1) { t2 = { line: cursorLine, column: cursorColumn, active: t1 }; $[0] = cursorColumn; $[1] = cursorLine; $[2] = t1; $[3] = t2; } else { t2 = $[3]; } const cursorRef = useDeclaredCursor(t2); const { wrappedOnInput, isPasting: t3 } = usePasteHandler({ onPaste: props.onPaste, onInput: (input, key) => { if (isPasting && key.return) { return; } onInput(input, key); }, onImagePaste: props.onImagePaste }); const isPasting = t3; const { onIsPastingChange } = props; React.useEffect(() => { if (onIsPastingChange) { onIsPastingChange(isPasting); } }, [isPasting, onIsPastingChange]); const { showPlaceholder, renderedPlaceholder } = renderPlaceholder({ placeholder: props.placeholder, value: props.value, showCursor: props.showCursor, focus: props.focus, terminalFocus, invert, hidePlaceholderText }); useInput(wrappedOnInput, { isActive: props.focus }); const commandWithoutArgs = props.value && props.value.trim().indexOf(" ") === -1 || props.value && props.value.endsWith(" "); const showArgumentHint = Boolean(props.argumentHint && props.value && commandWithoutArgs && props.value.startsWith("/")); const cursorFiltered = props.showCursor && props.highlights ? props.highlights.filter(h => h.dimColor || props.cursorOffset < h.start || props.cursorOffset >= h.end) : props.highlights; const { viewportCharOffset, viewportCharEnd } = inputState; const filteredHighlights = cursorFiltered && viewportCharOffset > 0 ? cursorFiltered.filter(h_0 => h_0.end > viewportCharOffset && h_0.start < viewportCharEnd).map(h_1 => ({ ...h_1, start: Math.max(0, h_1.start - viewportCharOffset), end: h_1.end - viewportCharOffset })) : cursorFiltered; const hasHighlights = filteredHighlights && filteredHighlights.length > 0; if (hasHighlights) { return <Box ref={cursorRef}><HighlightedInput text={renderedValue} highlights={filteredHighlights} />{showArgumentHint && <Text dimColor={true}>{props.value?.endsWith(" ") ? "" : " "}{props.argumentHint}</Text>}{children}</Box>; } const T0 = Box; const T1 = Text; const t4 = "truncate-end"; const t5 = showPlaceholder && props.placeholderElement ? props.placeholderElement : showPlaceholder && renderedPlaceholder ? <Ansi>{renderedPlaceholder}</Ansi> : <Ansi>{renderedValue}</Ansi>; const t6 = showArgumentHint && <Text dimColor={true}>{props.value?.endsWith(" ") ? "" : " "}{props.argumentHint}</Text>; let t7; if ($[4] !== T1 || $[5] !== children || $[6] !== props || $[7] !== t5 || $[8] !== t6) { t7 = <T1 wrap={t4} dimColor={props.dimColor}>{t5}{t6}{children}</T1>; $[4] = T1; $[5] = children; $[6] = props; $[7] = t5; $[8] = t6; $[9] = t7; } else { t7 = $[9]; } let t8; if ($[10] !== T0 || $[11] !== cursorRef || $[12] !== t7) { t8 = <T0 ref={cursorRef}>{t7}</T0>; $[10] = T0; $[11] = cursorRef; $[12] = t7; $[13] = t8; } else { t8 = $[13]; } return t8; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInJlbmRlclBsYWNlaG9sZGVyIiwidXNlUGFzdGVIYW5kbGVyIiwidXNlRGVjbGFyZWRDdXJzb3IiLCJBbnNpIiwiQm94Iiwi … [Строка слишком длинная. Вы можете скачать файл]