From 968b7d0a7f7e0bef916d20ee65b2f989e7c079c1 Mon Sep 17 00:00:00 2001 From: zhengyi Date: Tue, 6 Feb 2024 16:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=20Rename=20render=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VditorSinglePageContentHandler.java | 5 +- .../mczhengyi/vditor/utils/ScriptUtils.java | 4 +- src/main/resources/static/pjax.js | 20 ----- src/main/resources/static/render-utils.js | 67 +++++++++++++++ src/main/resources/static/render.js | 85 +++++-------------- 5 files changed, 92 insertions(+), 89 deletions(-) delete mode 100644 src/main/resources/static/pjax.js create mode 100644 src/main/resources/static/render-utils.js diff --git a/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java b/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java index df97490..0cbab6b 100644 --- a/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java +++ b/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java @@ -1,6 +1,7 @@ package top.mczhengyi.vditor.extension; import com.google.common.base.Throwables; + import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -27,7 +28,9 @@ public class VditorSinglePageContentHandler implements ReactiveSinglePageContent return contentContext; }) .onErrorResume(e -> { - log.error("VditorHeadProcessor process failed", Throwables.getRootCause(e)); + if (e instanceof Throwable) { + log.error("VditorHeadProcessor process failed", Throwables.getRootCause(e)); + } return Mono.empty(); }); } diff --git a/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java b/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java index 0135678..518730f 100644 --- a/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java +++ b/src/main/java/top/mczhengyi/vditor/utils/ScriptUtils.java @@ -14,7 +14,7 @@ public class ScriptUtils { script.sign("article-sign") .stylesheet("vditor-render.css", "style") .script("https://cdn.jsdelivr.net/npm/vditor@3.9.9/dist/method.min.js", "methods") - .script("render.js", "render"); // 标记文章位置 + .script("render-utils.js", "render-utils"); // 标记文章位置 if (renderConfig.getMediaRender()) script.script("external/media-render.js", "media"); if (!renderConfig.getDarkMode().equals("disabled")) { @@ -23,7 +23,7 @@ public class ScriptUtils { script.script("halo-renders/index.js", "halo-render-js") .stylesheet("halo-renders/index.css", "halo-render-css") .script("external/halo-renders.js", "halo-render") - .script("pjax.js", "vditor-pjax"); // 完成操作后渲染 + .script("render.js", "render"); // 完成操作后渲染 return script.getScript(); } diff --git a/src/main/resources/static/pjax.js b/src/main/resources/static/pjax.js deleted file mode 100644 index 64a8a50..0000000 --- a/src/main/resources/static/pjax.js +++ /dev/null @@ -1,20 +0,0 @@ -if (!window.vditorPjax) { - window.vditorPjax = true - // 当网页已经准备就绪则直接执行渲染任务 - if (document.readyState === "complete") { - vditorRender.render() - } else { - window.addEventListener('load', () => vditorRender.render()) - } - // 兼容 PJAX - $(document).on('pjax:complete', function() { - vditorRender.render() - console.log("[Vditor Render] PJAX END") - }) - // 兼容 Jquery-Pjax - $(document).on('pjax:end', function() { - vditorRender.render() - console.log("[Vditor Render] PJAX END") - }) - console.log("[Vditor Render] PJAX Injected") -} diff --git a/src/main/resources/static/render-utils.js b/src/main/resources/static/render-utils.js new file mode 100644 index 0000000..016b5a7 --- /dev/null +++ b/src/main/resources/static/render-utils.js @@ -0,0 +1,67 @@ +(function (win) { + if (win.vditorRender) return; + + const THEME_PREFIX="/plugins/vditor-mde/assets/static/themes" + const CDN = "https://cdn.jsdelivr.net/npm/vditor@3.9.9" + + /** 拓展处理 ({dark}) => void */ + let functionList = [] + let darkMode = false + + /** + * 处理渲染 + * @param func + */ + function addExternal(func) { + functionList.push(func) + } + + /** + * 设置暗色模式 + * @param {Boolean} dark + */ + function setDarkMode(dark = false) { + darkMode = dark + } + + /** + * 渲染 + * @param elId 搜寻位置 + */ + function vditorRender(elId="vditor-article-sign") { + Vditor.setContentTheme(darkMode?"dark":"light", THEME_PREFIX) + let root = document.getElementById(elId) + if (!root) { + console.log("[Vditor Render] Can't Found Article Root Element!"); + return + } + root = root.parentElement + root.classList.add("vditor-reset") + // Render + const renderTheme = darkMode?"dark":"classic" + Vditor.mathRender(root, {cdn: CDN}) + Vditor.mindmapRender(root, CDN, renderTheme) + Vditor.mermaidRender(root, CDN, renderTheme) + Vditor.chartRender(root, CDN, renderTheme) + Vditor.abcRender(root, CDN) + Vditor.graphvizRender(root, CDN) + Vditor.flowchartRender(root, CDN) + // Run External Plugin + functionList.forEach(func => { + func({ + darkMode + }) + }) + } + + win.vditorRender = { + THEME_PREFIX, + CDN, + functionList, + darkMode, + addExternal, + setDarkMode, + vditorRender, + render: vditorRender + } +})(window) \ No newline at end of file diff --git a/src/main/resources/static/render.js b/src/main/resources/static/render.js index 016b5a7..64a8a50 100644 --- a/src/main/resources/static/render.js +++ b/src/main/resources/static/render.js @@ -1,67 +1,20 @@ -(function (win) { - if (win.vditorRender) return; - - const THEME_PREFIX="/plugins/vditor-mde/assets/static/themes" - const CDN = "https://cdn.jsdelivr.net/npm/vditor@3.9.9" - - /** 拓展处理 ({dark}) => void */ - let functionList = [] - let darkMode = false - - /** - * 处理渲染 - * @param func - */ - function addExternal(func) { - functionList.push(func) +if (!window.vditorPjax) { + window.vditorPjax = true + // 当网页已经准备就绪则直接执行渲染任务 + if (document.readyState === "complete") { + vditorRender.render() + } else { + window.addEventListener('load', () => vditorRender.render()) } - - /** - * 设置暗色模式 - * @param {Boolean} dark - */ - function setDarkMode(dark = false) { - darkMode = dark - } - - /** - * 渲染 - * @param elId 搜寻位置 - */ - function vditorRender(elId="vditor-article-sign") { - Vditor.setContentTheme(darkMode?"dark":"light", THEME_PREFIX) - let root = document.getElementById(elId) - if (!root) { - console.log("[Vditor Render] Can't Found Article Root Element!"); - return - } - root = root.parentElement - root.classList.add("vditor-reset") - // Render - const renderTheme = darkMode?"dark":"classic" - Vditor.mathRender(root, {cdn: CDN}) - Vditor.mindmapRender(root, CDN, renderTheme) - Vditor.mermaidRender(root, CDN, renderTheme) - Vditor.chartRender(root, CDN, renderTheme) - Vditor.abcRender(root, CDN) - Vditor.graphvizRender(root, CDN) - Vditor.flowchartRender(root, CDN) - // Run External Plugin - functionList.forEach(func => { - func({ - darkMode - }) - }) - } - - win.vditorRender = { - THEME_PREFIX, - CDN, - functionList, - darkMode, - addExternal, - setDarkMode, - vditorRender, - render: vditorRender - } -})(window) \ No newline at end of file + // 兼容 PJAX + $(document).on('pjax:complete', function() { + vditorRender.render() + console.log("[Vditor Render] PJAX END") + }) + // 兼容 Jquery-Pjax + $(document).on('pjax:end', function() { + vditorRender.render() + console.log("[Vditor Render] PJAX END") + }) + console.log("[Vditor Render] PJAX Injected") +}