1
1
export async function htmlTemplate (
2
2
p : { htmlContent : string ; title : string ; level : number } ,
3
3
config ?: {
4
- siyuanPrefix : string ;
5
- embedCode ?: { head ?: string ; beforeBody ?: string ; afterBody ?: string } ;
4
+ siyuanPrefix : string
5
+ embedCode ?: { head ?: string ; beforeBody ?: string ; afterBody ?: string }
6
6
} ,
7
7
) {
8
8
/** 根据level有几级返回多少个 '../' ,用于解决 file协议打开html文档无法正常加载资源 */
9
- let prePath = "" ;
9
+ let prePath = ''
10
10
if ( config ?. siyuanPrefix ) {
11
- prePath = config . siyuanPrefix ;
11
+ prePath = config . siyuanPrefix
12
12
} else {
13
13
for ( let i = 0 ; i < p . level ; i ++ ) {
14
- prePath += " ../" ;
14
+ prePath += ' ../'
15
15
}
16
16
}
17
- const version = "2.10.5" ;
17
+ const version = '2.10.5'
18
+ /** 思源中导出 html 代码: https://github1s.com/siyuan-note/siyuan/blob/HEAD/app/src/protyle/export/index.ts#L652 */
18
19
//data-theme-mode="dark" data-light-theme="daylight" data-dark-theme="midnight"
19
20
return `<!DOCTYPE html>
20
21
<html lang="zh_CN" data-theme-mode="light" data-light-theme="daylight" data-dark-theme="midnight">
21
22
<head>
22
- ${ config ?. embedCode ?. head ?? "" }
23
+ ${ config ?. embedCode ?. head ?? '' }
23
24
<meta charset="utf-8" />
24
25
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
25
26
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
26
27
<meta name="apple-mobile-web-app-capable" content="yes" />
27
28
<meta name="mobile-web-app-capable" content="yes" />
28
29
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
29
30
<link rel="stylesheet" type="text/css" id="baseStyle" href="${ prePath } stage/build/export/base.css?${ version } "/>
30
- <link rel="stylesheet" type="text/css" id="themeDefaultStyle" href="${ prePath } appearance/themes/daylight/theme.css?${ version } "/>
31
+ <script>
32
+ function isNightTime() {
33
+ return true
34
+ const currentHour = new Date().getHours();
35
+ return currentHour >= 18 || currentHour < 6;
36
+ }
37
+ document.write('<link rel="stylesheet" type="text/css" id="themeDefaultStyle" href="${ prePath } appearance/themes/'+(isNightTime()?'midnight':'daylight')+'/theme.css?${ version } "/>');
38
+ </script>
31
39
<link rel="stylesheet" type="text/css" href="${ prePath } appearance/oceanpress.css"/>
32
-
33
40
<title>${ p . title } </title>
34
41
</head>
35
42
<body>
36
- ${ config ?. embedCode ?. beforeBody ?? "" }
43
+ ${ config ?. embedCode ?. beforeBody ?? '' }
37
44
<div class="protyle-wysiwyg protyle-wysiwyg--attr" id="preview">
38
- ${ p . htmlContent }
45
+ ${ p . htmlContent }
39
46
</div>
40
47
<script src="${ prePath } appearance/icons/material/icon.js?${ version } "></script>
41
48
<script src="${ prePath } stage/build/export/protyle-method.js?${ version } "></script>
@@ -44,7 +51,7 @@ export async function htmlTemplate(
44
51
window.siyuan = {
45
52
config: {
46
53
appearance: {
47
- mode: 0,
54
+ mode: isNightTime()?1:0,//主题 明亮=0 暗黑=1
48
55
codeBlockThemeDark: "base16/dracula",
49
56
codeBlockThemeLight: "github",
50
57
},
@@ -58,17 +65,19 @@ export async function htmlTemplate(
58
65
},
59
66
languages: { copy: "复制" },
60
67
};
68
+ const cdn = "${ prePath } stage/protyle";
61
69
const previewElement = document.getElementById("preview");
62
- Protyle.highlightRender(previewElement, "${ prePath } stage/protyle");
63
- Protyle.mathRender(previewElement, "${ prePath } stage/protyle", false);
64
- Protyle.mermaidRender(previewElement, "${ prePath } stage/protyle");
65
- Protyle.flowchartRender(previewElement, "${ prePath } stage/protyle");
66
- Protyle.graphvizRender(previewElement, "${ prePath } stage/protyle");
67
- Protyle.chartRender(previewElement, "${ prePath } stage/protyle");
68
- Protyle.mindmapRender(previewElement, "${ prePath } stage/protyle");
69
- Protyle.abcRender(previewElement, "${ prePath } stage/protyle");
70
+
71
+ Protyle.highlightRender(previewElement, cdn);
72
+ Protyle.mathRender(previewElement, cdn, false);
73
+ Protyle.mermaidRender(previewElement, cdn);
74
+ Protyle.flowchartRender(previewElement, cdn);
75
+ Protyle.graphvizRender(previewElement, cdn);
76
+ Protyle.chartRender(previewElement, cdn);
77
+ Protyle.mindmapRender(previewElement, cdn);
78
+ Protyle.abcRender(previewElement, cdn);
70
79
Protyle.htmlRender(previewElement);
71
- Protyle.plantumlRender(previewElement, " ${ prePath } stage/protyle" );
80
+ Protyle.plantumlRender(previewElement, cdn );
72
81
document.querySelectorAll(".protyle-action__copy").forEach((item) => {
73
82
item.addEventListener("click", (event) => {
74
83
navigator.clipboard.writeText(
@@ -79,7 +88,7 @@ export async function htmlTemplate(
79
88
});
80
89
});
81
90
</script>
82
- ${ config ?. embedCode ?. afterBody ?? "" }
91
+ ${ config ?. embedCode ?. afterBody ?? '' }
83
92
</body>
84
- </html>` ;
93
+ </html>`
85
94
}
0 commit comments