From 731d2feacce43ee558bee7d81388838c04125714 Mon Sep 17 00:00:00 2001 From: Van Date: Wed, 11 Mar 2020 15:08:36 +0800 Subject: [PATCH] :bug: fix #217 --- src/ts/wysiwyg/index.ts | 4 +++- src/ts/wysiwyg/processMD.ts | 4 ++-- src/ts/wysiwyg/setHeading.ts | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ts/wysiwyg/index.ts b/src/ts/wysiwyg/index.ts index eee9e090c..f1cb4fa17 100644 --- a/src/ts/wysiwyg/index.ts +++ b/src/ts/wysiwyg/index.ts @@ -16,7 +16,7 @@ import {getRenderElementNextNode, modifyPre} from "./inlineTag"; import {input} from "./input"; import {insertHTML} from "./insertHTML"; import {processCodeRender, showCode} from "./processCodeRender"; -import {isHeadingMD, isHrMD, isToC} from "./processMD"; +import {isHeadingMD, isHrMD, isToC, renderToc} from "./processMD"; import {setRangeByWbr} from "./setRangeByWbr"; class WYSIWYG { @@ -312,6 +312,7 @@ class WYSIWYG { if (blockElement && blockElement.tagName.indexOf("H") === 0 && blockElement.textContent === "" && blockElement.tagName.length === 2) { // heading 为空删除 https://github.com/Vanessa219/vditor/issues/150 + renderToc(this.element); return; } input(vditor, getSelection().getRangeAt(0).cloneRange(), event); @@ -365,6 +366,7 @@ class WYSIWYG { if (blockElement.tagName.indexOf("H") === 0 && blockElement.textContent === "" && blockElement.tagName.length === 2) { // heading 为空删除 https://github.com/Vanessa219/vditor/issues/150 + renderToc(this.element); return; } diff --git a/src/ts/wysiwyg/processMD.ts b/src/ts/wysiwyg/processMD.ts index 5a5bed1bb..0a394473d 100644 --- a/src/ts/wysiwyg/processMD.ts +++ b/src/ts/wysiwyg/processMD.ts @@ -55,10 +55,10 @@ export const renderToc = (editorElement: HTMLPreElement) => { } let tocHTML = ""; Array.from(editorElement.children).forEach((item: HTMLElement) => { - if (item.tagName.indexOf("H") === 0 && item.tagName.length === 2) { + if (item.tagName.indexOf("H") === 0 && item.tagName.length === 2 && item.textContent.trim() !== "") { const space = new Array((parseInt(item.tagName.substring(1), 10) - 1) * 2).fill(" ").join(""); tocHTML += `${space}${item.textContent.trim()}
`; } }); - tocElement.innerHTML = tocHTML; + tocElement.innerHTML = tocHTML || "[ToC]"; }; diff --git a/src/ts/wysiwyg/setHeading.ts b/src/ts/wysiwyg/setHeading.ts index 51e8c0a40..1a5dc014d 100644 --- a/src/ts/wysiwyg/setHeading.ts +++ b/src/ts/wysiwyg/setHeading.ts @@ -1,5 +1,6 @@ import {hasClosestBlock} from "../util/hasClosest"; import {setRangeByWbr} from "./setRangeByWbr"; +import {renderToc} from "./processMD"; export const setHeading = (vditor: IVditor, tagName: string) => { const range = getSelection().getRangeAt(0); @@ -23,6 +24,7 @@ export const setHeading = (vditor: IVditor, tagName: string) => { blockElement.outerHTML = `<${tagName} data-block="0">${blockElement.innerHTML.trim()}`; } setRangeByWbr(vditor.wysiwyg.element, range); + renderToc(vditor.wysiwyg.element); } };