From f745435d26ce9308f0c83f9aff547355269fb711 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Thu, 10 Jul 2025 11:47:26 -0700 Subject: [PATCH] Add comment --- src-web/components/core/Editor/singleLine.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src-web/components/core/Editor/singleLine.ts b/src-web/components/core/Editor/singleLine.ts index 174ce65e..7b040d7c 100644 --- a/src-web/components/core/Editor/singleLine.ts +++ b/src-web/components/core/Editor/singleLine.ts @@ -1,6 +1,19 @@ import type { Extension, TransactionSpec } from '@codemirror/state'; import { EditorSelection, EditorState, Transaction } from '@codemirror/state'; +/** + * A CodeMirror extension that forces single-line input by stripping + * all newline characters from user input, including pasted content. + * + * This extension uses a transaction filter to intercept user input, + * removes any newline characters, and adjusts the selection to the end + * of the inserted text. + * + * IME composition events are ignored to preserve proper input behavior + * for non-Latin languages. + * + * @returns A CodeMirror extension that enforces single-line editing. + */ export function singleLineExtensions(): Extension { return EditorState.transactionFilter.of( (tr: Transaction): TransactionSpec | readonly TransactionSpec[] => {