mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 07:00:12 +01:00
This commit is contained in:
parent
08de630e6f
commit
233bd2d88c
1 changed files with 27 additions and 10 deletions
|
|
@ -227,22 +227,39 @@ func renderBlockDOMByNode(node *ast.Node, luteEngine *lute.Lute) string {
|
||||||
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
||||||
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions)
|
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions)
|
||||||
blockRenderer.Options.ProtyleContenteditable = false
|
blockRenderer.Options.ProtyleContenteditable = false
|
||||||
|
resetIDs := map[string]string{}
|
||||||
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||||
if entering {
|
if entering {
|
||||||
// 内容图中不需要渲染数据库角标 https://github.com/siyuan-note/siyuan/issues/15057
|
if n.IsBlock() {
|
||||||
ial := parse.IAL2Map(n.KramdownIAL)
|
// 内容图中不需要渲染数据库角标 https://github.com/siyuan-note/siyuan/issues/15057
|
||||||
delete(ial, av.NodeAttrNameAvs)
|
ial := parse.IAL2Map(n.KramdownIAL)
|
||||||
|
delete(ial, av.NodeAttrNameAvs)
|
||||||
|
|
||||||
// 重置 data-node-id 的值,避免触发前端绑定的事件 https://github.com/siyuan-note/siyuan/issues/15088
|
// 重置 data-node-id 的值,避免触发前端绑定的事件 https://github.com/siyuan-note/siyuan/issues/15088
|
||||||
ial["id"] = ast.NewNodeID()
|
newID := ast.NewNodeID()
|
||||||
n.KramdownIAL = parse.Map2IAL(ial)
|
resetIDs[newID] = n.ID
|
||||||
|
n.ID, ial["id"] = newID, newID
|
||||||
|
n.KramdownIAL = parse.Map2IAL(ial)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rendererFunc := blockRenderer.RendererFuncs[n.Type]
|
rendererFunc := blockRenderer.RendererFuncs[n.Type]
|
||||||
return rendererFunc(n, entering)
|
return rendererFunc(n, entering)
|
||||||
})
|
})
|
||||||
h := strings.TrimSpace(blockRenderer.Writer.String())
|
ret := strings.TrimSpace(blockRenderer.Writer.String())
|
||||||
if strings.HasPrefix(h, "<li") {
|
if strings.HasPrefix(ret, "<li") {
|
||||||
h = "<ul>" + h + "</ul>"
|
ret = "<ul>" + ret + "</ul>"
|
||||||
}
|
}
|
||||||
return h
|
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||||
|
if entering {
|
||||||
|
if n.IsBlock() {
|
||||||
|
// 还原上面重置 data-node-id 的值
|
||||||
|
ial := parse.IAL2Map(n.KramdownIAL)
|
||||||
|
oldID := resetIDs[n.ID]
|
||||||
|
n.ID, ial["id"] = oldID, oldID
|
||||||
|
n.KramdownIAL = parse.Map2IAL(ial)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ast.WalkContinue
|
||||||
|
})
|
||||||
|
return ret
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue