reiji-h 1 год назад
Родитель
Сommit
a37efc3e51

+ 1 - 1
apps/app/src/client/components/PageEditor/PageEditor.tsx

@@ -306,7 +306,7 @@ export const PageEditor = React.memo((props: Props): JSX.Element => {
       if (currentPageYjsData?.hasRevisionBodyDiff) {
         return;
       }
-      codeMirrorEditor?.setCaretLineInit(lineNumber);
+      codeMirrorEditor?.setCaretLine(lineNumber);
     };
     globalEmitter.on('setCaretLine', handler);
     if (globalEmitter.listenerCount('getCaretLine') >= 1 && codeMirrorEditor?.view != null) {

+ 0 - 4
packages/editor/src/client/services/use-codemirror-editor/use-codemirror-editor.ts

@@ -18,7 +18,6 @@ import { useInsertPrefix, type InsertPrefix } from './utils/insert-prefix';
 import { useInsertText, type InsertText } from './utils/insert-text';
 import { useReplaceText, type ReplaceText } from './utils/replace-text';
 import { useSetCaretLine, type SetCaretLine } from './utils/set-caret-line';
-import { useSetCaretLineInit, type SetCaretLineInit } from './utils/set-caret-line-init';
 
 
 type UseCodeMirrorEditorUtils = {
@@ -27,7 +26,6 @@ type UseCodeMirrorEditorUtils = {
   getDoc: GetDoc,
   focus: Focus,
   setCaretLine: SetCaretLine,
-  setCaretLineInit: SetCaretLineInit,
   insertText: InsertText,
   replaceText: ReplaceText,
   insertMarkdownElements: InsertMarkdowElements,
@@ -73,7 +71,6 @@ export const useCodeMirrorEditor = (props?: UseCodeMirror): UseCodeMirrorEditor
   const getDoc = useGetDoc(view);
   const focus = useFocus(view);
   const setCaretLine = useSetCaretLine(view);
-  const setCaretLineInit = useSetCaretLineInit(view);
   const insertText = useInsertText(view);
   const replaceText = useReplaceText(view);
   const insertMarkdownElements = useInsertMarkdownElements(view);
@@ -88,7 +85,6 @@ export const useCodeMirrorEditor = (props?: UseCodeMirror): UseCodeMirrorEditor
     getDoc,
     focus,
     setCaretLine,
-    setCaretLineInit,
     insertText,
     replaceText,
     insertMarkdownElements,

+ 0 - 54
packages/editor/src/client/services/use-codemirror-editor/utils/set-caret-line-init.ts

@@ -1,54 +0,0 @@
-import { useCallback } from 'react';
-
-import { Compartment, StateEffect } from '@codemirror/state';
-import type { ViewUpdate } from '@codemirror/view';
-import { EditorView } from '@codemirror/view';
-
-export type SetCaretLineInit = (lineNumber?: number) => void;
-
-export const useSetCaretLineInit = (view?: EditorView): SetCaretLineInit => {
-
-  return useCallback((lineNumber) => {
-
-    const compartment = new Compartment();
-
-    const initDocListenerExtension = EditorView.updateListener.of((v: ViewUpdate) => {
-      if (v.docChanged && v.changes.desc.length === 0) {
-
-        const doc = v.state.doc;
-
-        try {
-          const posOfLineEnd = doc.line(lineNumber ?? 1).to;
-          view?.dispatch({
-            selection: {
-              anchor: posOfLineEnd,
-              head: posOfLineEnd,
-            },
-            scrollIntoView: true,
-            effects: EditorView.scrollIntoView(posOfLineEnd, {
-              x: 'start',
-              y: 'start',
-            }),
-          });
-        }
-        catch (_: unknown) {
-          // if posOfLineEnd is not found.
-        }
-
-        // focus
-        view?.focus();
-
-        view?.dispatch({
-          effects: compartment.reconfigure([]),
-        });
-      }
-    });
-
-    view?.dispatch({
-      effects: StateEffect.appendConfig.of(
-        compartment.of(initDocListenerExtension),
-      ),
-    });
-
-  }, [view]);
-};