🎨 Export preview mode supports focus use https://github.com/siyuan-note/siyuan/issues/15340

This commit is contained in:
Daniel 2025-07-26 21:59:05 +08:00
parent 3cb666d397
commit cf6c905930
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 20 additions and 8 deletions

View file

@ -277,8 +277,9 @@ export class Preview {
this.processZHTable(copyElement); this.processZHTable(copyElement);
} else if (type === "yuque") { } else if (type === "yuque") {
fetchPost("/api/lute/copyStdMarkdown", { fetchPost("/api/lute/copyStdMarkdown", {
id: protyle.block.rootID, id: protyle.block.id || protyle.options.blockId || protyle.block.parentID,
assetsDestSpace2Underscore: true, assetsDestSpace2Underscore: true,
adjustHeadingLevel: true,
}, (response) => { }, (response) => {
writeText(response.data); writeText(response.data);
showMessage(`${window.siyuan.languages.pasteToYuque}`); showMessage(`${window.siyuan.languages.pasteToYuque}`);

View file

@ -48,7 +48,13 @@ func copyStdMarkdown(c *gin.Context) {
if nil != arg["assetsDestSpace2Underscore"] { if nil != arg["assetsDestSpace2Underscore"] {
assetsDestSpace2Underscore = arg["assetsDestSpace2Underscore"].(bool) assetsDestSpace2Underscore = arg["assetsDestSpace2Underscore"].(bool)
} }
ret.Data = model.ExportStdMarkdown(id, assetsDestSpace2Underscore)
adjustHeadingLevel := false
if nil != arg["adjustHeadingLevel"] {
adjustHeadingLevel = arg["adjustHeadingLevel"].(bool)
}
ret.Data = model.ExportStdMarkdown(id, assetsDestSpace2Underscore, adjustHeadingLevel)
} }
func html2BlockDOM(c *gin.Context) { func html2BlockDOM(c *gin.Context) {

View file

@ -268,7 +268,7 @@ func Export2Liandi(id string) (err error) {
title := path.Base(tree.HPath) title := path.Base(tree.HPath)
tags := tree.Root.IALAttr("tags") tags := tree.Root.IALAttr("tags")
content := exportMarkdownContent0(tree, util.GetCloudForumAssetsServer()+time.Now().Format("2006/01")+"/siyuan/"+Conf.GetUser().UserId+"/", true, content := exportMarkdownContent0(id, tree, util.GetCloudForumAssetsServer()+time.Now().Format("2006/01")+"/siyuan/"+Conf.GetUser().UserId+"/", true, false,
".md", 3, 1, 1, ".md", 3, 1, 1,
"#", "#", "#", "#",
"", "", "", "",
@ -1457,7 +1457,7 @@ func processPDFLinkEmbedAssets(pdfCtx *model.Context, assetDests []string, remov
} }
} }
func ExportStdMarkdown(id string, assetsDestSpace2Underscore bool) string { func ExportStdMarkdown(id string, assetsDestSpace2Underscore, adjustHeadingLevel bool) string {
tree, err := LoadTreeByBlockID(id) tree, err := LoadTreeByBlockID(id)
if err != nil { if err != nil {
logging.LogErrorf("load tree by block id [%s] failed: %s", id, err) logging.LogErrorf("load tree by block id [%s] failed: %s", id, err)
@ -1495,7 +1495,7 @@ func ExportStdMarkdown(id string, assetsDestSpace2Underscore bool) string {
} }
defBlockIDs = gulu.Str.RemoveDuplicatedElem(defBlockIDs) defBlockIDs = gulu.Str.RemoveDuplicatedElem(defBlockIDs)
return exportMarkdownContent0(tree, cloudAssetsBase, assetsDestSpace2Underscore, return exportMarkdownContent0(id, tree, cloudAssetsBase, assetsDestSpace2Underscore, adjustHeadingLevel,
".md", Conf.Export.BlockRefMode, Conf.Export.BlockEmbedMode, Conf.Export.FileAnnotationRefMode, ".md", Conf.Export.BlockRefMode, Conf.Export.BlockEmbedMode, Conf.Export.FileAnnotationRefMode,
Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker, Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker,
Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight, Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight,
@ -1989,7 +1989,7 @@ func ExportMarkdownContent(id string, refMode, embedMode int, addYfm, fillCSSVar
tree := prepareExportTree(bt) tree := prepareExportTree(bt)
hPath = tree.HPath hPath = tree.HPath
exportedMd = exportMarkdownContent0(tree, "", false, exportedMd = exportMarkdownContent0(id, tree, "", false, false,
".md", refMode, embedMode, Conf.Export.FileAnnotationRefMode, ".md", refMode, embedMode, Conf.Export.FileAnnotationRefMode,
Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker, Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker,
Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight, Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight,
@ -2008,7 +2008,7 @@ func exportMarkdownContent(id, ext string, exportRefMode int, defBlockIDs []stri
return return
} }
isEmpty = nil == tree.Root.FirstChild.FirstChild isEmpty = nil == tree.Root.FirstChild.FirstChild
exportedMd = exportMarkdownContent0(tree, "", false, exportedMd = exportMarkdownContent0(id, tree, "", false, false,
ext, exportRefMode, Conf.Export.BlockEmbedMode, Conf.Export.FileAnnotationRefMode, ext, exportRefMode, Conf.Export.BlockEmbedMode, Conf.Export.FileAnnotationRefMode,
Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker, Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker,
Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight, Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight,
@ -2021,7 +2021,7 @@ func exportMarkdownContent(id, ext string, exportRefMode int, defBlockIDs []stri
return return
} }
func exportMarkdownContent0(tree *parse.Tree, cloudAssetsBase string, assetsDestSpace2Underscore bool, func exportMarkdownContent0(id string, tree *parse.Tree, cloudAssetsBase string, assetsDestSpace2Underscore, adjustHeadingLv bool,
ext string, blockRefMode, blockEmbedMode, fileAnnotationRefMode int, ext string, blockRefMode, blockEmbedMode, fileAnnotationRefMode int,
tagOpenMarker, tagCloseMarker string, blockRefTextLeft, blockRefTextRight string, tagOpenMarker, tagCloseMarker string, blockRefTextLeft, blockRefTextRight string,
addTitle, inlineMemo bool, defBlockIDs []string, singleFile, fillCSSVar bool, treeCache *map[string]*parse.Tree) (ret string) { addTitle, inlineMemo bool, defBlockIDs []string, singleFile, fillCSSVar bool, treeCache *map[string]*parse.Tree) (ret string) {
@ -2030,6 +2030,11 @@ func exportMarkdownContent0(tree *parse.Tree, cloudAssetsBase string, assetsDest
tagOpenMarker, tagCloseMarker, tagOpenMarker, tagCloseMarker,
blockRefTextLeft, blockRefTextRight, blockRefTextLeft, blockRefTextRight,
addTitle, inlineMemo, 0 < len(defBlockIDs), singleFile, treeCache) addTitle, inlineMemo, 0 < len(defBlockIDs), singleFile, treeCache)
if adjustHeadingLv {
bt := treenode.GetBlockTree(id)
adjustHeadingLevel(bt, tree)
}
luteEngine := NewLute() luteEngine := NewLute()
luteEngine.SetFootnotes(true) luteEngine.SetFootnotes(true)
luteEngine.SetKramdownIAL(false) luteEngine.SetKramdownIAL(false)