Skip to content

Commit

Permalink
🎨 SV 切换编辑模式 SV 脚注缩进丢失 Vanessa219/vditor#1270
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Aug 4, 2022
1 parent bffd2f7 commit bd16ecc
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 2 deletions.
5 changes: 4 additions & 1 deletion render/vditor_sv_renderer.go
Expand Up @@ -408,7 +408,10 @@ func (r *VditorSVRenderer) renderFootnotesDef(node *ast.Node, entering bool) ast
r.WriteString("<span>: </span>")
for c := node.FirstChild; nil != c; c = c.Next {
ast.Walk(c, func(n *ast.Node, entering bool) ast.WalkStatus {
// indentSpacesStr := `<span data-type="padding"> </span>`
if entering && n != node.FirstChild && n.IsBlock() {
indentSpacesStr := `<span data-type="padding"> </span>`
r.WriteString(indentSpacesStr)
}
return r.RendererFuncs[n.Type](n, entering)
})
}
Expand Down
1 change: 1 addition & 0 deletions test/spin_block_test.go
Expand Up @@ -20,6 +20,7 @@ import (

var spinBlockDOMTests = []*parseTest{

{"132", "<div data-node-id=\"20220804093503-axqeojl\" data-node-index=\"0\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220804143308\"><div contenteditable=\"true\" spellcheck=\"false\">```foo%<wbr>\n```</div><div class=\"protyle-attr\" contenteditable=\"false\">​</div></div>", "<div data-node-id=\"20060102150405-1a2b3c4\" data-node-index=\"1\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20060102150405\"><div contenteditable=\"true\" spellcheck=\"false\">```foo%<wbr></div><div class=\"protyle-attr\" contenteditable=\"false\">\u200b</div></div><div data-node-id=\"20060102150405-1a2b3c4\" data-node-index=\"2\" data-type=\"NodeCodeBlock\" class=\"code-block\" updated=\"20060102150405\"><div class=\"protyle-action\"><span class=\"protyle-action--first protyle-action__language\" contenteditable=\"false\"></span><span class=\"fn__flex-1\"></span><span class=\"protyle-icon protyle-icon--first protyle-action__copy\"><svg><use xlink:href=\"#iconCopy\"></use></svg></span><span class=\"protyle-icon protyle-icon--last protyle-action__menu\"><svg><use xlink:href=\"#iconMore\"></use></svg></span></div><div class=\"hljs\" contenteditable=\"true\" spellcheck=\"false\">{: id=&quot;20220804093503-axqeojl&quot; updated=&quot;20220804143308&quot;}\n</div><div class=\"protyle-attr\" contenteditable=\"false\">\u200b</div></div>"},
{"131", "<div data-node-id=\"20220801103121-opq0yx7\" data-node-index=\"1\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220801104417\" data-eof=\"true\"><div contenteditable=\"true\" spellcheck=\"false\"><span contenteditable=\"false\" data-type=\"img\" class=\"img\" style=\"max-width: 276px;\"><span> </span><span><span class=\"protyle-action protyle-icons\"><span class=\"protyle-icon protyle-icon--only\"><svg class=\"svg\"><use xlink:href=\"#iconMore\"></use></svg></span></span><img src=\"assets/foo-20211228205701-btntjdp.png\" data-src=\"assets/foo-20211228205701-btntjdp.png\" alt=\"foo-20211228205701-btntjdp\" style=\"width: 266px;\"><span class=\"protyle-action__drag\"></span><span class=\"protyle-action__title\"></span></span><span> </span></span><wbr></div><div class=\"protyle-attr\" contenteditable=\"false\">​</div></div>", "<div data-node-id=\"20220801103121-opq0yx7\" data-node-index=\"1\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220801104417\"><div contenteditable=\"true\" spellcheck=\"false\"><span contenteditable=\"false\" data-type=\"img\" class=\"img\" style=\"max-width: 276px;\"><span> </span><span><span class=\"protyle-action protyle-icons\"><span class=\"protyle-icon protyle-icon--only\"><svg class=\"svg\"><use xlink:href=\"#iconMore\"></use></svg></span></span><img src=\"assets/foo-20211228205701-btntjdp.png\" data-src=\"assets/foo-20211228205701-btntjdp.png\" alt=\"foo-20211228205701-btntjdp\" style=\"width: 266px;\" /><span class=\"protyle-action__drag\"></span><span class=\"protyle-action__title\"></span></span><span> </span></span>\u200b<wbr></div><div class=\"protyle-attr\" contenteditable=\"false\">\u200b</div></div>"},
{"130", "<div data-node-id=\"20220801103757-kkehwny\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220801103916\"><div contenteditable=\"true\" spellcheck=\"false\">```<wbr>foo ~</div><div class=\"protyle-attr\" contenteditable=\"false\">​</div></div>", "<div data-node-id=\"20220801103757-kkehwny\" data-node-index=\"1\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220801103916\"><div contenteditable=\"true\" spellcheck=\"false\">```<wbr>foo ~</div><div class=\"protyle-attr\" contenteditable=\"false\">\u200b</div></div>"},
{"129", "<div data-node-id=\"20220722094231-31y15n6\" data-node-index=\"2\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220722100657\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"block-ref\" data-subtype=\"s\" data-id=\"20201225212401-ru1scjs\"><span data-type=\"block-ref\" data-subtype=\"s\" data-id=\"20200813093015-u6bopdt\">foo</span><wbr>bar</span></div><div class=\"protyle-attr\" contenteditable=\"false\">​</div></div>", "<div data-node-id=\"20220722094231-31y15n6\" data-node-index=\"1\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20220722100657\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"block-ref\" data-subtype=\"s\" data-id=\"20201225212401-ru1scjs\">foo<wbr>bar</span></div><div class=\"protyle-attr\" contenteditable=\"false\">\u200b</div></div>"},
Expand Down
3 changes: 2 additions & 1 deletion test/spin_sv_test.go
Expand Up @@ -18,6 +18,7 @@ import (

var spinVditorSVDOMTests = []*parseTest{

{"64", "[^1]: foo\n\n bar‸", "<span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span><span>: </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"padding\"> </span><span data-type=\"text\">bar<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"63", "123\n456\n| a | b |\n| - | - |\n| d | e |\n", "<span data-type=\"text\">123</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"text\">456</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"table\">| a | b |\n| - | - |\n| d | e |<span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span>"},
{"62", "| foo | bar |\n| - | - |\n| baz | bazz |\n", "<span data-type=\"table\">| foo | bar |\n| - | - |\n| baz | bazz |<span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span>"},
{"61", "![text][foo]\n\n[foo]: bar", "<span class=\"vditor-sv__marker\">!</span><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--bracket\">text</span><span class=\"vditor-sv__marker--bracket\">]</span><span class=\"vditor-sv__marker--link\">[foo]</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"link-ref-defs-block\">foo</span><span class=\"vditor-sv__marker--bracket\">]</span><span>: </span>bar<span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
Expand Down Expand Up @@ -54,7 +55,7 @@ var spinVditorSVDOMTests = []*parseTest{
{"30", "```\nfoo\n```‸", "<span data-type=\"code-block-open-marker\" class=\"vditor-sv__marker\">```</span><span class=\"vditor-sv__marker--info\" data-type=\"code-block-info\"></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"text\">foo<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"code-block-close-marker\" class=\"vditor-sv__marker\">```</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"29", "> foo\n> >‸\n", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"28", "> >‸", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"27", "这里是一个脚注引用[^1],这里是另一个脚注引用[^bignote]。\n\n[^1]: 第一个脚注定义。\n[^bignote]: 脚注定义可使用多段内容。\n\n 缩进对齐的段落包含在这个脚注定义内。‸\n", "<span data-type=\"text\">这里是一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">,这里是另一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span><span>: </span><span data-type=\"text\">第一个脚注定义。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span><span>: </span><span data-type=\"text\">脚注定义可使用多段内容。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"text\">缩进对齐的段落包含在这个脚注定义内。<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"27", "这里是一个脚注引用[^1],这里是另一个脚注引用[^bignote]。\n\n[^1]: 第一个脚注定义。\n[^bignote]: 脚注定义可使用多段内容。\n\n 缩进对齐的段落包含在这个脚注定义内。‸\n", "<span data-type=\"text\">这里是一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">,这里是另一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span><span>: </span><span data-type=\"text\">第一个脚注定义。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span><span>: </span><span data-type=\"text\">脚注定义可使用多段内容。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"padding\"> </span><span data-type=\"text\">缩进对齐的段落包含在这个脚注定义内。<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
// TODO SV 表格换行
//{"26", "|foo|bar|\n| ---| ---|\n|‸", "<span data-type=\"table\">|foo|bar|\n| ---| ---|\n|<wbr><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span>"},
{"25", "‸", "<span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
Expand Down
1 change: 1 addition & 0 deletions test/spin_wysiwyg_test.go
Expand Up @@ -18,6 +18,7 @@ import (

var spinVditorDOMTests = []*parseTest{

{"158", "<form ><iframe/src=\"data:text/html,<script>alert('xss');</script>\"></iframe>", "<div class=\"vditor-wysiwyg__block\" data-type=\"html-block\" data-block=\"0\"><pre><code>&lt;form&gt;&lt;iframe src=&quot;data:text/html,&lt;script&gt;alert('xss');&lt;/script&gt;&quot;&gt;&lt;/iframe&gt;&lt;/form&gt;</code></pre><pre class=\"vditor-wysiwyg__preview\" data-render=\"2\"><form><iframe src=\"data:text/html,&lt;script&gt;alert(&#39;xss&#39;);&lt;/script&gt;\"></iframe></form></pre></div>"},
{"157", "<p>[ToC]</p><h1 data-block=\"0\" id=\"wysiwyg-foo--bar1_1\" data-marker=\"#\">foo <code data-marker=\"`\">​&lt;script&gt;</code>​ bar</h1>", "<div class=\"vditor-toc\" data-block=\"0\" data-type=\"toc-block\" contenteditable=\"false\"><ul><li><span data-target-id=\"wysiwyg-foo--bar\">foo <code>&lt;script&gt;</code> bar</span></li></ul></div><h1 data-block=\"0\" id=\"wysiwyg-foo--bar\" data-marker=\"#\">foo <code data-marker=\"`\">\u200b&lt;script&gt;</code>\u200b bar</h1>"},
{"156", "<p data-block=\"0\"><span class=\"vditor-comment\" data-cmtids=\"20220331213230-cb3a3hv\">foo</span>​<code data-type=\"html-inline\">​&lt;span&gt;</code>bar&lt;/span&gt;<wbr></p>", "<p data-block=\"0\"><span class=\"vditor-comment\" data-cmtids=\"20220331213230-cb3a3hv\">foo</span>\u200b<code data-type=\"html-inline\">\u200b&lt;span&gt;</code>bar<code data-type=\"html-inline\">\u200b&lt;/span&gt;</code><wbr></p>"},
{"155", "<p data-block=\"0\">​<code data-type=\"html-inline\">​&lt;span&gt;</code>foo&lt;/span&gt;<wbr></p>", "<p data-block=\"0\">\u200b<code data-type=\"html-inline\">\u200b&lt;span&gt;</code>foo<code data-type=\"html-inline\">\u200b&lt;/span&gt;</code><wbr></p>"},
Expand Down

0 comments on commit bd16ecc

Please sign in to comment.