diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx index eb0f138357..6e416a8b6b 100644 --- a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx @@ -6,7 +6,6 @@ import { useCallback, useContext, useEffect, - useMemo, useRef, useState, } from 'react'; @@ -168,10 +167,6 @@ export const TOC = () => { }, [updateTocDataSource]); const onClick = async (blockId?: string) => { - if (blockId === activeBlockId) { - return; - } - setActiveBlockId(blockId); await editor.scrollManager.scrollIntoViewByBlockId(blockId); }; diff --git a/libs/components/editor-core/src/editor/scroll/scroll.ts b/libs/components/editor-core/src/editor/scroll/scroll.ts index 69b4d85703..08f2b8ec16 100644 --- a/libs/components/editor-core/src/editor/scroll/scroll.ts +++ b/libs/components/editor-core/src/editor/scroll/scroll.ts @@ -1,5 +1,5 @@ -import { CSSProperties, type UIEvent } from 'react'; import EventEmitter from 'eventemitter3'; +import { type UIEvent } from 'react'; import { domToRect, Rect } from '@toeverything/utils'; import type { Editor as BlockEditor } from '../editor'; @@ -164,22 +164,9 @@ export class ScrollManager { if (!block.dom) { return console.warn(`Block is not exist.`); } - const containerRect = domToRect(this._scrollContainer); - const blockRect = domToRect(block.dom); - const blockRelativeTopToEditor = - blockRect.top - containerRect.top - containerRect.height / 4; - const blockRelativeLeftToEditor = blockRect.left - containerRect.left; - - this.scrollTo({ - left: blockRelativeLeftToEditor, - top: blockRelativeTopToEditor, - behavior, - }); - this._updateScrollInfo( - blockRelativeLeftToEditor, - blockRelativeTopToEditor - ); + /* use dom primary ability */ + block.dom.scrollIntoView({ block: 'start', behavior }); } public async keepBlockInView(