From bffe7bc16fd01689929b8188960a9a9b276feb4f Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 17 Jan 2024 19:14:19 +0800 Subject: [PATCH] fix: synchronize scrolling in dual column editor --- src/components/dashboard/DualColumnEditor.tsx | 27 +++++++++---------- src/markdown/index.ts | 2 +- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/components/dashboard/DualColumnEditor.tsx b/src/components/dashboard/DualColumnEditor.tsx index 9355e385..faa49f49 100644 --- a/src/components/dashboard/DualColumnEditor.tsx +++ b/src/components/dashboard/DualColumnEditor.tsx @@ -1,5 +1,5 @@ import { useDebounceEffect } from "ahooks" -import type { Root } from "mdast" +import type { Root } from "hast" import { useTranslations } from "next-intl" import { useCallback, useEffect, useMemo, useRef, useState } from "react" @@ -10,9 +10,8 @@ import { toolbarShortcuts } from "~/components/dashboard/toolbars" import { editorUpload } from "~/components/dashboard/toolbars/Multimedia" import CodeMirror from "~/components/ui/CodeMirror" import { useIsMobileLayout } from "~/hooks/useMobileLayout" -import { useUploadFile } from "~/hooks/useUploadFile" import { cn } from "~/lib/utils" -import { Rendered, renderPageContent } from "~/markdown" +import { renderPageContent } from "~/markdown" export default function DualColumnEditor({ initialContent, @@ -29,7 +28,6 @@ export default function DualColumnEditor({ }) { const isMobileLayout = useIsMobileLayout() const t = useTranslations() - const uploadFile = useUploadFile() const [currentScrollArea, setCurrentScrollArea] = useState("") const [view, setView] = useState() @@ -37,7 +35,9 @@ export default function DualColumnEditor({ const [values, setValues] = useState("") // preview - const [parsedContent, setParsedContent] = useState() + const [parsedContent, setParsedContent] = useState< + ReturnType | undefined + >() useEffect(() => { setValues(initialContent) @@ -46,7 +46,7 @@ export default function DualColumnEditor({ useDebounceEffect( () => { const result = renderPageContent(values) - setTree(result.tree) + setTree(result.hastTree) setParsedContent(result) }, [values], @@ -58,13 +58,10 @@ export default function DualColumnEditor({ const previewRef = useRef(null) // editor - const onCreateEditorInside = useCallback( - (view: EditorView) => { - setView?.(view) - onCreateEditor?.(view) - }, - [setView], - ) + const onCreateEditorInside = useCallback((view: EditorView) => { + setView?.(view) + onCreateEditor?.(view) + }, []) const handleDropFile = useCallback( async (file: File) => { @@ -72,11 +69,11 @@ export default function DualColumnEditor({ editorUpload(file, view) } }, - [uploadFile, view], + [view], ) const computedPosition = useCallback(() => { - let previewChildNodes = previewRef.current?.childNodes[0]?.childNodes + let previewChildNodes = previewRef.current?.childNodes const editorElementList: number[] = [] const previewElementList: number[] = [] if (view?.state && previewChildNodes) { diff --git a/src/markdown/index.ts b/src/markdown/index.ts index 4d02190f..2f5efba2 100644 --- a/src/markdown/index.ts +++ b/src/markdown/index.ts @@ -261,6 +261,6 @@ export const renderPageContent = ( cover: images[0], images, audio, - tree: {}, + hastTree, } }