feat(editor): replace format bar with selection appearance controls

This commit is contained in:
eezd committed 2026-10-24 18:11:57 +08:00
1 parent 19aab631ec
commit 5abc99b89e
15 files changed
+634 -130

No files matched your search

+8
View File
@@ -1,6 +1,7 @@
import type { SyntaxNode } from '@lezer/common'
import { Emoji, GFM, parser as commonmarkParser, Subscript, Superscript, type MarkdownParser } from '@lezer/markdown'
import { typoraExtensions } from './extensions'
import { inlineStyleText, stylesFromTag } from './inlineStyles'
// 与编辑器一致的语法集(lang-markdown 的 markdownLanguage 加 Typora 扩展)
export const markdownParser = commonmarkParser.configure([GFM, Subscript, Superscript, Emoji, ...typoraExtensions])
@@ -278,6 +279,13 @@ export function renderMarkdown(src: string, { parser = markdownParser, unsafe =
return `<sub>${innerOf(node, 'SubscriptMark')}</sub>`
case 'Highlight':
return `<mark>${innerOf(node, 'HighlightMark')}</mark>`
case 'Underline':
return `<u>${innerOf(node, 'UnderlineMark')}</u>`
case 'InlineStyle': {
const open = node.getChild('InlineStyleMark')!
const styles = stylesFromTag(text(open.from, open.to))!
return `<span style="${escapeAttr(inlineStyleText(styles))}">${innerOf(node, 'InlineStyleMark')}</span>`
}
// 公式与 emoji 输出占位元素,由 render.ts 的 hydrate 按需加载依赖后填充
case 'InlineMath': {
const tex = text(node.from + 1, node.to - 1)