π File detail
components/PromptInput/useMaybeTruncateInput.ts
π§© .tsπ 59 linesπΎ 1,468 bytesπ text
β Back to All Filesπ― Use case
This file lives under βcomponents/β, which covers shared React UI pieces. On the API surface it exposes useMaybeTruncateInput β mainly functions, hooks, or classes. Dependencies touch React UI and src. It composes internal code from inputPaste (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { useEffect, useState } from 'react' import type { PastedContent } from 'src/utils/config.js' import { maybeTruncateInput } from './inputPaste.js' type Props = {
π€ Exports (heuristic)
useMaybeTruncateInput
π External import roots
Package roots from from "β¦" (relative paths omitted).
reactsrc
π₯οΈ Source preview
import { useEffect, useState } from 'react'
import type { PastedContent } from 'src/utils/config.js'
import { maybeTruncateInput } from './inputPaste.js'
type Props = {
input: string
pastedContents: Record<number, PastedContent>
onInputChange: (input: string) => void
setCursorOffset: (offset: number) => void
setPastedContents: (contents: Record<number, PastedContent>) => void
}
export function useMaybeTruncateInput({
input,
pastedContents,
onInputChange,
setCursorOffset,
setPastedContents,
}: Props) {
// Track if we've initialized this specific input value
const [hasAppliedTruncationToInput, setHasAppliedTruncationToInput] =
useState(false)
// Process input for truncation and pasted images from MessageSelector.
useEffect(() => {
if (hasAppliedTruncationToInput) {
return
}
if (input.length <= 10_000) {
return
}
const { newInput, newPastedContents } = maybeTruncateInput(
input,
pastedContents,
)
onInputChange(newInput)
setCursorOffset(newInput.length)
setPastedContents(newPastedContents)
setHasAppliedTruncationToInput(true)
}, [
input,
hasAppliedTruncationToInput,
pastedContents,
onInputChange,
setPastedContents,
setCursorOffset,
])
// Reset hasInitializedInput when input is cleared (e.g., after submission)
useEffect(() => {
if (input === '') {
setHasAppliedTruncationToInput(false)
}
}, [input])
}