generated from halo-dev/plugin-starter
-
Notifications
You must be signed in to change notification settings - Fork 2
/
ScriptUtils.java
44 lines (40 loc) · 1.76 KB
/
ScriptUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package top.mczhengyi.vditor.utils;
import top.mczhengyi.vditor.bean.RenderConfig;
public class ScriptUtils {
public static String renderScript(RenderConfig renderConfig) {
StringBuilder script = new StringBuilder();
script.append(basicScript(renderConfig));
// 如果是跟随Joe 3.0则注入脚本
if ("joe".equals(renderConfig.getDarkMode()))
script.append(joeDarkMode());
return script.toString();
}
public static String basicScript(RenderConfig renderConfig) {
return """
<link rel="stylesheet" type="text/css" href="/plugins/vditor-mde/assets/static/dist/index.css" id="vditor-style" />
<script src="/plugins/vditor-mde/assets/static/dist/method.min.js"></script>
<script src="/plugins/vditor-mde/assets/static/render.js" id="vditor-render"
data-dark="%s" data-mediaRender="%s"></script>
""".formatted(renderConfig.getDarkMode(), renderConfig.getMediaRender());
}
public static String joeDarkMode() {
return """
<script>
window.addEventListener("load", () => {
var html = document.getElementsByTagName("html")[0]
if (!html) return
setTheme(html.dataset.mode)
var callback = (mutation) => {
if (mutation[0].attributeName=="data-mode") {
console.log("CHANGED")
var mode = mutation[0].target.dataset.mode
setTheme(mode)
}
}
var observer = new MutationObserver(callback)
observer.observe(html, {attributes:true})
})
</script>
""";
}
}