From 2bea0fdf6d39efebe2b456928052cb16bda89406 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Wed, 8 Apr 2026 02:35:58 +1000 Subject: [PATCH] Input: Truncate too-long pasted text instead of dropping entirely --- ts/components/Input.dom.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ts/components/Input.dom.tsx b/ts/components/Input.dom.tsx index 1a567bede1..8d51929734 100644 --- a/ts/components/Input.dom.tsx +++ b/ts/components/Input.dom.tsx @@ -171,7 +171,7 @@ export const Input = forwardRef< const handlePaste = useCallback( (event: ClipboardEvent) => { const inputEl = innerRef.current; - if (!inputEl || !maxLengthCount || !maxByteCount) { + if (!inputEl || (!maxLengthCount && !maxByteCount)) { return; } @@ -193,13 +193,17 @@ export const Input = forwardRef< pastedBytes + countBytes(textAfterSelection); - const lengthDelta = newLengthCount - maxLengthCount; - const byteDelta = newByteCount - maxByteCount; + const lengthDelta = + maxLengthCount > 0 ? newLengthCount - maxLengthCount : 0; + const byteDelta = maxByteCount > 0 ? newByteCount - maxByteCount : 0; + if (lengthDelta > 0 || byteDelta > 0) { event.preventDefault(); - const newPastedLength = pastedLength - lengthDelta; - const newPastedBytes = pastedBytes - byteDelta; + const newPastedLength = + lengthDelta > 0 ? pastedLength - lengthDelta : pastedLength; + const newPastedBytes = + byteDelta > 0 ? pastedBytes - byteDelta : pastedBytes; const truncatedPaste = truncateString(pastedText, { byteLimit: newPastedBytes,