kosei-n 2 лет назад
Родитель
Сommit
e6848f59b0

+ 2 - 2
packages/editor/src/components/CodeMirrorEditor/CodeMirrorEditor.tsx

@@ -10,7 +10,7 @@ import type { ReactCodeMirrorProps } from '@uiw/react-codemirror';
 import { GlobalCodeMirrorEditorKey, AcceptedUploadFileType } from '../../consts';
 import { GlobalCodeMirrorEditorKey, AcceptedUploadFileType } from '../../consts';
 import { useFileDropzone, FileDropzoneOverlay, AllEditorTheme } from '../../services';
 import { useFileDropzone, FileDropzoneOverlay, AllEditorTheme } from '../../services';
 import {
 import {
-  getLineToCursor, adjustPasteData,
+  adjustPasteData, getStrFromBol,
 } from '../../services/list-util/markdown-list-util';
 } from '../../services/list-util/markdown-list-util';
 import { useCodeMirrorEditorIsolated } from '../../stores';
 import { useCodeMirrorEditorIsolated } from '../../stores';
 
 
@@ -88,7 +88,7 @@ export const CodeMirrorEditor = (props: Props): JSX.Element => {
 
 
         const textData = event.clipboardData.getData('text/plain');
         const textData = event.clipboardData.getData('text/plain');
 
 
-        const strFromBol = getLineToCursor(editor);
+        const strFromBol = getStrFromBol(editor);
 
 
         const adjusted = adjustPasteData(strFromBol, textData);
         const adjusted = adjustPasteData(strFromBol, textData);
 
 

+ 17 - 6
packages/editor/src/services/list-util/markdown-list-util.ts

@@ -3,15 +3,26 @@ import { EditorView } from '@codemirror/view';
 // https://regex101.com/r/7BN2fR/5
 // https://regex101.com/r/7BN2fR/5
 const indentAndMarkRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/;
 const indentAndMarkRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/;
 
 
-export const getLineToCursor = (editor: EditorView, lineNumBeforeCursor = 0): string => {
-  const curPos = editor.state.selection.main.head;
-  const firstLineNumToGet = editor.state.doc.lineAt(curPos).number - lineNumBeforeCursor;
+// export const getLineToCursor = (editor: EditorView, lineNumBeforeCursor = 0): string => {
+//   const curPos = editor.state.selection.main.head;
+//   const firstLineNumToGet = editor.state.doc.lineAt(curPos).number - lineNumBeforeCursor;
+
+//   const fixedFirstLineNumToGet = Math.max(firstLineNumToGet, 0);
+
+//   const firstLineToGet = editor.state.doc.line(fixedFirstLineNumToGet).from;
 
 
-  const fixedFirstLineNumToGet = Math.max(firstLineNumToGet, 0);
+//   return editor.state.sliceDoc(firstLineToGet, curPos);
+// };
 
 
-  const firstLineToGet = editor.state.doc.line(fixedFirstLineNumToGet).from;
+const getBol = (editor: EditorView) => {
+  const curPos = editor.state.selection.main.head;
+  const aboveLine = editor.state.doc.lineAt(curPos).number;
+  return editor.state.doc.line(aboveLine).from;
+};
 
 
-  return editor.state.sliceDoc(firstLineToGet, curPos);
+export const getStrFromBol = (editor: EditorView): string => {
+  const curPos = editor.state.selection.main.head;
+  return editor.state.sliceDoc(getBol(editor), curPos);
 };
 };
 
 
 export const adjustPasteData = (strFromBol: string, text: string): string => {
 export const adjustPasteData = (strFromBol: string, text: string): string => {