diff --git a/packages/web/src/javascripts/Components/SuperEditor/Plugins/ToolbarPlugin/ToolbarPlugin.tsx b/packages/web/src/javascripts/Components/SuperEditor/Plugins/ToolbarPlugin/ToolbarPlugin.tsx index fe24f359d..7a43d4d9e 100644 --- a/packages/web/src/javascripts/Components/SuperEditor/Plugins/ToolbarPlugin/ToolbarPlugin.tsx +++ b/packages/web/src/javascripts/Components/SuperEditor/Plugins/ToolbarPlugin/ToolbarPlugin.tsx @@ -50,6 +50,7 @@ import Popover from '@/Components/Popover/Popover' import LexicalTableOfContents from '@lexical/react/LexicalTableOfContents' import Menu from '@/Components/Menu/Menu' import MenuItem from '@/Components/Menu/MenuItem' +import { remToPx } from '@/Utils' const TOGGLE_LINK_AND_EDIT_COMMAND = createCommand('TOGGLE_LINK_AND_EDIT_COMMAND') @@ -693,25 +694,34 @@ const ToolbarPlugin = () => { return ( - {tableOfContents.map(([key, text, tag]) => ( - { - editor.getEditorState().read(() => { - const domElement = editor.getElementByKey(key) - if (!domElement) { - return - } - domElement.scrollIntoView({ block: 'start' }) - setIsTOCOpen(false) - }) - }} - > - - {text} - - ))} + {tableOfContents.map(([key, text, tag]) => { + const level = parseInt(tag.slice(1)) || 1 + if (level > 3) { + return null + } + return ( + { + editor.getEditorState().read(() => { + const domElement = editor.getElementByKey(key) + if (!domElement) { + return + } + domElement.scrollIntoView({ block: 'start' }) + setIsTOCOpen(false) + }) + }} + style={{ + paddingLeft: `${(level - 1) * remToPx(1) + remToPx(0.75)}px`, + }} + > + + {text} + + ) + })} ) }} diff --git a/packages/web/src/javascripts/Utils/Utils.ts b/packages/web/src/javascripts/Utils/Utils.ts index ec7d63a2c..282cab9c6 100644 --- a/packages/web/src/javascripts/Utils/Utils.ts +++ b/packages/web/src/javascripts/Utils/Utils.ts @@ -255,3 +255,7 @@ export function getScrollParent(node: HTMLElement | null): HTMLElement | null { return getScrollParent(node.parentElement) } } + +export function remToPx(rem: number) { + return rem * parseFloat(getComputedStyle(document.documentElement).fontSize) +}