diff --git a/common/changes/@coze-editor/react-components/fix-prefix-element-caret_2026-06-17-11-51.json b/common/changes/@coze-editor/react-components/fix-prefix-element-caret_2026-06-17-11-51.json new file mode 100644 index 00000000..23f38f73 --- /dev/null +++ b/common/changes/@coze-editor/react-components/fix-prefix-element-caret_2026-06-17-11-51.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze-editor/react-components", + "comment": "fix caret issue with PrefixElement", + "type": "patch" + } + ], + "packageName": "@coze-editor/react-components", + "email": "stream-pipe@users.noreply.github.com" +} diff --git a/packages/text-editor/dev/src/index.tsx b/packages/text-editor/dev/src/index.tsx index 832aa6d7..45ad0ee8 100644 --- a/packages/text-editor/dev/src/index.tsx +++ b/packages/text-editor/dev/src/index.tsx @@ -1,5 +1,5 @@ import { createRoot } from 'react-dom/client'; -import Page from './pages/highlight'; +import Page from './pages/prefix'; import './index.css'; createRoot(document.getElementById('app')!).render(); diff --git a/packages/text-editor/react-components/src/prefix-element/dom.ts b/packages/text-editor/react-components/src/prefix-element/dom.ts index 6287c431..5cca0895 100644 --- a/packages/text-editor/react-components/src/prefix-element/dom.ts +++ b/packages/text-editor/react-components/src/prefix-element/dom.ts @@ -18,11 +18,6 @@ function textRange(node: Text, from: number, to = from) { return range; } -function flattenRect(rect: Rect, left: boolean) { - const x = left ? rect.left : rect.right; - return { left: x, right: x, top: rect.top, bottom: rect.bottom }; -} - function clientRectsFor(dom: Node) { if (dom.nodeType == 3) { return textRange(dom as Text, 0, dom.nodeValue!.length).getClientRects(); @@ -33,6 +28,6 @@ function clientRectsFor(dom: Node) { } } -export { flattenRect, clientRectsFor }; +export { clientRectsFor }; export type { Rect }; diff --git a/packages/text-editor/react-components/src/prefix-element/react.tsx b/packages/text-editor/react-components/src/prefix-element/react.tsx index a6df417f..d2693250 100644 --- a/packages/text-editor/react-components/src/prefix-element/react.tsx +++ b/packages/text-editor/react-components/src/prefix-element/react.tsx @@ -5,7 +5,7 @@ import { useHTMLElement, useLatest } from '@coze-editor/react-hooks'; import { useInjector } from '@coze-editor/react'; import { Decoration, EditorView, keymap, WidgetType } from '@codemirror/view'; -import { clientRectsFor, flattenRect } from './dom'; +import { clientRectsFor } from './dom'; class PrefixElementWidget extends WidgetType { constructor( @@ -43,7 +43,7 @@ class PrefixElementWidget extends WidgetType { return null; } const style = window.getComputedStyle(dom.parentNode as HTMLElement); - const rect = flattenRect(rects[0], style.direction != 'rtl'); + const rect = rects[0]; const lineHeight = parseInt(style.lineHeight); if (rect.bottom - rect.top > lineHeight * 1.5) { return {