diff --git a/webapp/packages/plugin-codemirror6/src/ReactCodemirror.tsx b/webapp/packages/plugin-codemirror6/src/ReactCodemirror.tsx index 71e05ba5fb..d9a1623c49 100644 --- a/webapp/packages/plugin-codemirror6/src/ReactCodemirror.tsx +++ b/webapp/packages/plugin-codemirror6/src/ReactCodemirror.tsx @@ -19,6 +19,7 @@ import { type IReactCodemirrorContext, ReactCodemirrorContext } from './ReactCod import { useCodemirrorExtensions } from './useCodemirrorExtensions.js'; import { validateCursorBoundaries } from './validateCursorBoundaries.js'; import { ReactCodemirrorSearchPanel } from './ReactCodemirrorSearchPanel.js'; +import { hasInsertProperty } from './hasInsertProperty.js'; const External = Annotation.define(); @@ -213,6 +214,13 @@ export const ReactCodemirror = observer( } } + if (hasInsertProperty(transaction.changes) && !transaction.selection) { + transaction.selection = { + anchor: transaction.changes.insert?.length ?? 0, + head: transaction.changes.insert?.length ?? 0, + }; + } + if (transaction.changes) { view.dispatch({ changes: transaction.changes }); } diff --git a/webapp/packages/plugin-codemirror6/src/hasInsertProperty.ts b/webapp/packages/plugin-codemirror6/src/hasInsertProperty.ts new file mode 100644 index 0000000000..5988b45c91 --- /dev/null +++ b/webapp/packages/plugin-codemirror6/src/hasInsertProperty.ts @@ -0,0 +1,12 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2025 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ +import type { ChangeSpec, Text } from '@codemirror/state'; + +export function hasInsertProperty(spec: ChangeSpec | undefined): spec is { from: number; to?: number; insert?: string | Text } { + return typeof spec === 'object' && spec !== null && 'insert' in spec; +} \ No newline at end of file