markdown-to-html-cli 3.5.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/lib/create.js +10 -4
- package/lib/create.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/nodes/dark-mode.d.ts +1 -1
- package/lib/nodes/dark-mode.js +13 -5
- package/lib/nodes/dark-mode.js.map +1 -1
- package/lib/nodes/markdown-style.d.ts +1 -1
- package/lib/nodes/markdown-style.js +4 -3
- package/lib/nodes/markdown-style.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/package.json +1 -1
- package/src/create.ts +10 -4
- package/src/index.ts +5 -1
- package/src/nodes/dark-mode.ts +14 -6
- package/src/nodes/markdown-style.ts +4 -3
package/README.md
CHANGED
|
@@ -139,6 +139,7 @@ Options:
|
|
|
139
139
|
--markdown Markdown string.
|
|
140
140
|
--style Override default styles. css file path or css string.
|
|
141
141
|
--markdown-style-theme Setting markdown-style light/dark theme.
|
|
142
|
+
--markdown-style Markdown wrapper style
|
|
142
143
|
--output, -o Output static pages to the specified directory. Default: "index.html"
|
|
143
144
|
--source, -s The path of the target file "README.md". Default: "README.md"
|
|
144
145
|
--title The `<title>` tag is required in HTML documents!
|
|
@@ -152,6 +153,9 @@ Example:
|
|
|
152
153
|
npx markdown-to-html-cli
|
|
153
154
|
npx markdown-to-html-cli --markdown="Hello World!"
|
|
154
155
|
npx markdown-to-html-cli --no-dark-mode
|
|
156
|
+
npx markdown-to-html-cli --dark-mode auto
|
|
157
|
+
npx markdown-to-html-cli --dark-mode auto --markdown-style-theme dark
|
|
158
|
+
npx markdown-to-html-cli --no-dark-mode --markdown-style-theme dark
|
|
155
159
|
npx markdown-to-html-cli --markdown-style-theme dark
|
|
156
160
|
npx markdown-to-html-cli --github-corners https://github.com/jaywcjlove/markdown-to-html-cli
|
|
157
161
|
npx markdown-to-html-cli --github-corners https://github.com/jaywcjlove --github-corners-fork
|
|
@@ -218,8 +222,14 @@ export interface RunArgvs extends Omit<ParsedArgs, '_'> {
|
|
|
218
222
|
'github-corners'?: string;
|
|
219
223
|
/** Github corners style. */
|
|
220
224
|
'github-corners-fork'?: boolean;
|
|
225
|
+
/** Disable light and dark theme styles button. */
|
|
226
|
+
'dark-mode'?: boolean;
|
|
227
|
+
/** Setting markdown-style light/dark theme. */
|
|
228
|
+
'markdown-style-theme'?: 'dark' | 'light';
|
|
221
229
|
/** Markdown string. */
|
|
222
230
|
markdown?: string;
|
|
231
|
+
/** Markdown wrapper style */
|
|
232
|
+
'markdown-style'?: string;
|
|
223
233
|
/** The `<title>` tag is required in HTML documents! */
|
|
224
234
|
title?: string;
|
|
225
235
|
/** Specify the configuration file. Default: `<process.cwd()>/package.json` */
|
|
@@ -232,6 +242,8 @@ export interface RunArgvs extends Omit<ParsedArgs, '_'> {
|
|
|
232
242
|
favicon?: string;
|
|
233
243
|
/** Define the author of a page */
|
|
234
244
|
author?: string;
|
|
245
|
+
/** Override default styles */
|
|
246
|
+
style?: string;
|
|
235
247
|
}
|
|
236
248
|
export interface MDToHTMLOptions extends RunArgvs {
|
|
237
249
|
/** [rehype-document](https://github.com/rehypejs/rehype-document#options) options */
|
package/lib/create.js
CHANGED
|
@@ -14,7 +14,7 @@ import { markdownStyle } from './nodes/markdown-style.js';
|
|
|
14
14
|
import { copyElement, copyStyle, copyScript } from './nodes/copy.js';
|
|
15
15
|
import { darkMode } from './nodes/dark-mode.js';
|
|
16
16
|
export function create(options = {}) {
|
|
17
|
-
const { markdown: string, document, rewrite, reurls = {}, 'markdown-style-theme': markdownStyleTheme, 'dark-mode': darkModeTheme = true } = options;
|
|
17
|
+
const { markdown: string, document, rewrite, reurls = {}, 'markdown-style-theme': markdownStyleTheme, 'dark-mode': darkModeTheme = true, 'markdown-style': wrapperStyle } = options;
|
|
18
18
|
const mdOptions = {
|
|
19
19
|
hastNode: false,
|
|
20
20
|
remarkPlugins: [remarkGemoji],
|
|
@@ -30,10 +30,16 @@ export function create(options = {}) {
|
|
|
30
30
|
[rehypeFormat],
|
|
31
31
|
],
|
|
32
32
|
rewrite: (node, index, parent) => {
|
|
33
|
-
if (
|
|
34
|
-
|
|
33
|
+
if (node.type === 'element' && node.tagName === 'html') {
|
|
34
|
+
if (markdownStyleTheme) {
|
|
35
|
+
node.properties = node.properties || {};
|
|
36
|
+
node.properties['data-color-mode'] = markdownStyleTheme;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if ((node.type === 'element' && node.tagName === 'body') || (!document && node.type === 'root')) {
|
|
40
|
+
node.children = markdownStyle(node.children, markdownStyleTheme, wrapperStyle);
|
|
41
|
+
darkMode(darkModeTheme).forEach(item => node.children.unshift(item));
|
|
35
42
|
if (darkModeTheme) {
|
|
36
|
-
darkMode().forEach(item => node.children.unshift(item));
|
|
37
43
|
}
|
|
38
44
|
}
|
|
39
45
|
if (options['github-corners'] && ((document && node.type == 'element' && node.tagName === 'body') || (!document && node.type === 'root'))) {
|
package/lib/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,QAAqB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,aAAa;AACb,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAU7C,MAAM,UAAU,MAAM,CAAC,UAA2B,EAAE;IAClD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -12,11 +12,13 @@ export interface RunArgvs extends Omit<ParsedArgs, '_'> {
|
|
|
12
12
|
/** Github corners style. */
|
|
13
13
|
'github-corners-fork'?: boolean;
|
|
14
14
|
/** Disable light and dark theme styles button. */
|
|
15
|
-
'dark-mode'?: boolean;
|
|
15
|
+
'dark-mode'?: boolean | 'auto';
|
|
16
16
|
/** Setting markdown-style light/dark theme. */
|
|
17
17
|
'markdown-style-theme'?: 'dark' | 'light';
|
|
18
18
|
/** Markdown string. */
|
|
19
19
|
markdown?: string;
|
|
20
|
+
/** Markdown wrapper style */
|
|
21
|
+
'markdown-style'?: string;
|
|
20
22
|
/** The `<title>` tag is required in HTML documents! */
|
|
21
23
|
title?: string;
|
|
22
24
|
/** Specify the configuration file. Default: `<process.cwd()>/package.json` */
|
package/lib/index.js
CHANGED
|
@@ -19,6 +19,7 @@ export function run(opts = {}) {
|
|
|
19
19
|
help: opts.h || opts.help || false,
|
|
20
20
|
source: opts.s || opts.source || 'README.md',
|
|
21
21
|
markdown: opts.markdown || '',
|
|
22
|
+
'markdown-style': 'max-width: 960px;',
|
|
22
23
|
description: opts.description || '',
|
|
23
24
|
output: opts.o || opts.output || 'index.html',
|
|
24
25
|
},
|
|
@@ -68,6 +69,7 @@ export const cliHelp = `\n Usage: markdown-to-html [options] [--help|h]
|
|
|
68
69
|
--markdown Markdown string.
|
|
69
70
|
--style Override default styles. css file path or css string.
|
|
70
71
|
--markdown-style-theme Setting markdown-style light/dark theme.
|
|
72
|
+
--markdown-style Markdown wrapper style.
|
|
71
73
|
--output, -o Output static pages to the specified directory. Default: "index.html"
|
|
72
74
|
--source, -s The path of the target file "README.md". Default: "README.md"
|
|
73
75
|
--title The \`<title>\` tag is required in HTML documents!
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAwB,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/nodes/dark-mode.d.ts
CHANGED
package/lib/nodes/dark-mode.js
CHANGED
|
@@ -3,7 +3,18 @@ const scriptString = `const t=document;const e="_dark_mode_theme_";const s="perm
|
|
|
3
3
|
* @wcj/dark-mode@1.0.14
|
|
4
4
|
* https://github.com/jaywcjlove/dark-mode
|
|
5
5
|
*/
|
|
6
|
-
export function darkMode() {
|
|
6
|
+
export function darkMode(mode) {
|
|
7
|
+
const properties = {
|
|
8
|
+
style: 'position: fixed; top: 8px; left: 10px; z-index: 999;',
|
|
9
|
+
dark: 'Dark',
|
|
10
|
+
light: 'Light',
|
|
11
|
+
};
|
|
12
|
+
if (mode && mode !== 'auto') {
|
|
13
|
+
properties.permanent = 'true';
|
|
14
|
+
}
|
|
15
|
+
if (mode === false || mode === 'false') {
|
|
16
|
+
properties.style = properties.style + 'display: none;';
|
|
17
|
+
}
|
|
7
18
|
return [{
|
|
8
19
|
type: 'element',
|
|
9
20
|
tagName: 'script',
|
|
@@ -18,10 +29,7 @@ export function darkMode() {
|
|
|
18
29
|
type: 'element',
|
|
19
30
|
tagName: 'dark-mode',
|
|
20
31
|
properties: {
|
|
21
|
-
|
|
22
|
-
style: 'position: fixed; top: 8px; left: 10px; z-index: 999;',
|
|
23
|
-
dark: 'Dark',
|
|
24
|
-
light: 'Light',
|
|
32
|
+
...properties
|
|
25
33
|
},
|
|
26
34
|
children: []
|
|
27
35
|
}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode.js","sourceRoot":"","sources":["../../src/nodes/dark-mode.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG,o8GAAo8G,CAAA;AAEz9G;;;GAGG;AACH,MAAM,UAAU,QAAQ;
|
|
1
|
+
{"version":3,"file":"dark-mode.js","sourceRoot":"","sources":["../../src/nodes/dark-mode.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG,o8GAAo8G,CAAA;AAEz9G;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAuB;IAC9C,MAAM,UAAU,GAAe;QAC7B,KAAK,EAAE,sDAAsD;QAC7D,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;KACf,CAAA;IACD,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;QAC3B,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;KAC/B;IACD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAA6B,EAAE;QAC5D,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,gBAAgB,CAAC;KACxD;IACD,OAAO,CAAC;YACN,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ;YACjB,gBAAgB;YAChB,6CAA6C;YAC7C,KAAK;YACL,QAAQ,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,YAAY;iBACpB,CAAC;SACH,EAAE;YACD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE;gBACV,GAAG,UAAU;aACd;YACD,QAAQ,EAAE,EAAE;SACb,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Element, ElementContent } from 'hast';
|
|
2
|
-
export declare function markdownStyle(child: ElementContent[], markdownStyleTheme?: 'dark' | 'light'): Element[];
|
|
2
|
+
export declare function markdownStyle(child: ElementContent[], markdownStyleTheme?: 'dark' | 'light', style?: string): Element[];
|
|
@@ -70,13 +70,14 @@ class MarkdownStyle extends HTMLElement {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
customElements.define('markdown-style', MarkdownStyle);`;
|
|
73
|
-
export function markdownStyle(child, markdownStyleTheme) {
|
|
73
|
+
export function markdownStyle(child, markdownStyleTheme, style = '') {
|
|
74
74
|
const properties = {
|
|
75
|
-
style: 'max-width: 960px; margin: 0 auto 60px auto; padding: 8px',
|
|
75
|
+
style: 'max-width: 960px; margin: 0 auto 60px auto; padding: 8px;' + style,
|
|
76
76
|
className: 'markdown-style',
|
|
77
77
|
};
|
|
78
78
|
if (markdownStyleTheme) {
|
|
79
|
-
properties.theme = markdownStyleTheme;
|
|
79
|
+
// properties.theme = markdownStyleTheme;
|
|
80
|
+
properties.mode = markdownStyleTheme;
|
|
80
81
|
}
|
|
81
82
|
return [{
|
|
82
83
|
type: 'element',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-style.js","sourceRoot":"","sources":["../../src/nodes/markdown-style.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;EAcvB,CAAC;AAEH;;;GAGG;AACH,MAAM,YAAY,GAAG;;;EAGnB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAiDsC,CAAA;AAExD,MAAM,UAAU,aAAa,CAAC,KAAuB,EAAE,kBAAqC;
|
|
1
|
+
{"version":3,"file":"markdown-style.js","sourceRoot":"","sources":["../../src/nodes/markdown-style.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;EAcvB,CAAC;AAEH;;;GAGG;AACH,MAAM,YAAY,GAAG;;;EAGnB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAiDsC,CAAA;AAExD,MAAM,UAAU,aAAa,CAAC,KAAuB,EAAE,kBAAqC,EAAE,QAAgB,EAAE;IAC9G,MAAM,UAAU,GAA2B;QACzC,KAAK,EAAE,2DAA2D,GAAG,KAAK;QAC1E,SAAS,EAAE,gBAAgB;KAC5B,CAAA;IACD,IAAI,kBAAkB,EAAE;QACtB,yCAAyC;QACzC,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC;KACtC;IACD,OAAO,CAAC;YACN,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ;YACjB,gBAAgB;YAChB,uBAAuB;YACvB,4DAA4D;YAC5D,KAAK;YACL,QAAQ,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,YAAY;iBACpB,CAAC;SACH,EAAE;YACD,IAAI,EAAE,SAAS;YACf,UAAU;YACV,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;AACJ,CAAC"}
|
package/lib/utils.d.ts
CHANGED
package/package.json
CHANGED
package/src/create.ts
CHANGED
|
@@ -23,7 +23,7 @@ import { MDToHTMLOptions } from './index';
|
|
|
23
23
|
export interface CreateOptions extends MDToHTMLOptions { }
|
|
24
24
|
|
|
25
25
|
export function create(options: MDToHTMLOptions = {}) {
|
|
26
|
-
const { markdown: string, document, rewrite, reurls = {}, 'markdown-style-theme': markdownStyleTheme, 'dark-mode': darkModeTheme = true } = options;
|
|
26
|
+
const { markdown: string, document, rewrite, reurls = {}, 'markdown-style-theme': markdownStyleTheme, 'dark-mode': darkModeTheme = true, 'markdown-style': wrapperStyle } = options;
|
|
27
27
|
|
|
28
28
|
const mdOptions: Options = {
|
|
29
29
|
hastNode: false,
|
|
@@ -40,10 +40,16 @@ export function create(options: MDToHTMLOptions = {}) {
|
|
|
40
40
|
[rehypeFormat],
|
|
41
41
|
],
|
|
42
42
|
rewrite: (node, index, parent) => {
|
|
43
|
-
if (
|
|
44
|
-
|
|
43
|
+
if (node.type === 'element' && node.tagName === 'html') {
|
|
44
|
+
if (markdownStyleTheme) {
|
|
45
|
+
node.properties = node.properties || {};
|
|
46
|
+
node.properties['data-color-mode'] = markdownStyleTheme;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if ((node.type === 'element' && node.tagName === 'body') || (!document && node.type === 'root')) {
|
|
50
|
+
node.children = markdownStyle(node.children as any, markdownStyleTheme, wrapperStyle);
|
|
51
|
+
darkMode(darkModeTheme).forEach(item => node.children.unshift(item));
|
|
45
52
|
if (darkModeTheme) {
|
|
46
|
-
darkMode().forEach(item => node.children.unshift(item));
|
|
47
53
|
}
|
|
48
54
|
}
|
|
49
55
|
if (options['github-corners'] && ((document && node.type == 'element' && node.tagName === 'body') || (!document && node.type === 'root'))) {
|
package/src/index.ts
CHANGED
|
@@ -18,11 +18,13 @@ export interface RunArgvs extends Omit<ParsedArgs, '_'> {
|
|
|
18
18
|
/** Github corners style. */
|
|
19
19
|
'github-corners-fork'?: boolean;
|
|
20
20
|
/** Disable light and dark theme styles button. */
|
|
21
|
-
'dark-mode'?: boolean;
|
|
21
|
+
'dark-mode'?: boolean | 'auto';
|
|
22
22
|
/** Setting markdown-style light/dark theme. */
|
|
23
23
|
'markdown-style-theme'?: 'dark' | 'light';
|
|
24
24
|
/** Markdown string. */
|
|
25
25
|
markdown?: string;
|
|
26
|
+
/** Markdown wrapper style */
|
|
27
|
+
'markdown-style'?: string;
|
|
26
28
|
/** The `<title>` tag is required in HTML documents! */
|
|
27
29
|
title?: string;
|
|
28
30
|
/** Specify the configuration file. Default: `<process.cwd()>/package.json` */
|
|
@@ -62,6 +64,7 @@ export function run(opts = {} as Omit<RunArgvs, '_'>) {
|
|
|
62
64
|
help: opts.h || opts.help || false,
|
|
63
65
|
source: opts.s || opts.source || 'README.md',
|
|
64
66
|
markdown: opts.markdown || '',
|
|
67
|
+
'markdown-style': 'max-width: 960px;',
|
|
65
68
|
description: opts.description || '',
|
|
66
69
|
output: opts.o || opts.output || 'index.html',
|
|
67
70
|
},
|
|
@@ -114,6 +117,7 @@ export const cliHelp: string = `\n Usage: markdown-to-html [options] [--help|h]
|
|
|
114
117
|
--markdown Markdown string.
|
|
115
118
|
--style Override default styles. css file path or css string.
|
|
116
119
|
--markdown-style-theme Setting markdown-style light/dark theme.
|
|
120
|
+
--markdown-style Markdown wrapper style.
|
|
117
121
|
--output, -o Output static pages to the specified directory. Default: "index.html"
|
|
118
122
|
--source, -s The path of the target file "README.md". Default: "README.md"
|
|
119
123
|
--title The \`<title>\` tag is required in HTML documents!
|
package/src/nodes/dark-mode.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Element } from 'hast';
|
|
1
|
+
import { Element, Properties } from 'hast';
|
|
2
2
|
|
|
3
3
|
const scriptString = `const t=document;const e="_dark_mode_theme_";const s="permanent";const o="colorschemechange";const i="permanentcolorscheme";const h="light";const r="dark";const n=(t,e,s=e)=>{Object.defineProperty(t,s,{enumerable:true,get(){const t=this.getAttribute(e);return t===null?"":t},set(t){this.setAttribute(e,t)}})};const c=(t,e,s=e)=>{Object.defineProperty(t,s,{enumerable:true,get(){return this.hasAttribute(e)},set(t){if(t){this.setAttribute(e,"")}else{this.removeAttribute(e)}}})};class a extends HTMLElement{static get observedAttributes(){return["mode",h,r,s]}LOCAL_NANE=e;constructor(){super();this.t()}connectedCallback(){n(this,"mode");n(this,r);n(this,h);c(this,s);const a=localStorage.getItem(e);if(a&&[h,r].includes(a)){this.mode=a;this.permanent=true}if(this.permanent&&!a){localStorage.setItem(e,this.mode)}const l=[h,r].includes(a);if(this.permanent&&a){this.o()}else{if(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches){this.mode=r;this.o()}if(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches){this.mode=h;this.o()}}if(!this.permanent&&!l){window.matchMedia("(prefers-color-scheme: light)").onchange=t=>{this.mode=t.matches?h:r;this.o()};window.matchMedia("(prefers-color-scheme: dark)").onchange=t=>{this.mode=t.matches?r:h;this.o()}}const d=new MutationObserver(((s,h)=>{this.mode=t.documentElement.dataset.colorMode;if(this.permanent&&l){localStorage.setItem(e,this.mode);this.i(i,{permanent:this.permanent})}this.h();this.i(o,{colorScheme:this.mode})}));d.observe(t.documentElement,{attributes:true});this.i(o,{colorScheme:this.mode});this.h()}attributeChangedCallback(t,s,o){if(t==="mode"&&s!==o&&[h,r].includes(o)){const t=localStorage.getItem(e);if(this.mode===t){this.mode=o;this.h();this.o()}else if(this.mode&&this.mode!==t){this.h();this.o()}}else if((t===h||t===r)&&s!==o){this.h()}if(t==="permanent"&&typeof this.permanent==="boolean"){this.permanent?localStorage.setItem(e,this.mode):localStorage.removeItem(e)}}o(){t.documentElement.setAttribute("data-color-mode",this.mode)}h(){this.icon.textContent=this.mode===h?"🌒":"🌞";this.text.textContent=this.mode===h?this.getAttribute(r):this.getAttribute(h)}t(){var s=this.attachShadow({mode:"open"});this.label=t.createElement("span");this.label.setAttribute("class","wrapper");this.label.onclick=()=>{this.mode=this.mode===h?r:h;if(this.permanent){localStorage.setItem(e,this.mode)}this.o();this.h()};s.appendChild(this.label);this.icon=t.createElement("span");this.label.appendChild(this.icon);this.text=t.createElement("span");this.label.appendChild(this.text);const o=\`\n[data-color-mode*='dark'], [data-color-mode*='dark'] body {\n color-scheme: dark;\n --color-theme-bg: #0d1117;\n --color-theme-text: #c9d1d9;\n background-color: var(--color-theme-bg);\n color: var(--color-theme-text);\n}\n\n[data-color-mode*='light'], [data-color-mode*='light'] body {\n color-scheme: light;\n --color-theme-bg: #fff;\n --color-theme-text: #24292f;\n background-color: var(--color-theme-bg);\n color: var(--color-theme-text);\n}\`;const i="_dark_mode_style_";const n=t.getElementById(i);if(!n){var c=t.createElement("style");c.id=i;c.textContent=o;t.head.appendChild(c)}var a=t.createElement("style");a.textContent=\`\n .wrapper { cursor: pointer; user-select: none; position: relative; }\n .wrapper > span + span { margin-left: .4rem; }\n \`;s.appendChild(a)}i(t,e){this.dispatchEvent(new CustomEvent(t,{bubbles:true,composed:true,detail:e}))}}customElements.define("dark-mode",a);`
|
|
4
4
|
|
|
@@ -6,7 +6,18 @@ const scriptString = `const t=document;const e="_dark_mode_theme_";const s="perm
|
|
|
6
6
|
* @wcj/dark-mode@1.0.14
|
|
7
7
|
* https://github.com/jaywcjlove/dark-mode
|
|
8
8
|
*/
|
|
9
|
-
export function darkMode(): Element[] {
|
|
9
|
+
export function darkMode(mode?: boolean | 'auto'): Element[] {
|
|
10
|
+
const properties: Properties = {
|
|
11
|
+
style: 'position: fixed; top: 8px; left: 10px; z-index: 999;',
|
|
12
|
+
dark: 'Dark',
|
|
13
|
+
light: 'Light',
|
|
14
|
+
}
|
|
15
|
+
if (mode && mode !== 'auto') {
|
|
16
|
+
properties.permanent = 'true';
|
|
17
|
+
}
|
|
18
|
+
if (mode === false || mode === 'false' as unknown as boolean) {
|
|
19
|
+
properties.style = properties.style + 'display: none;';
|
|
20
|
+
}
|
|
10
21
|
return [{
|
|
11
22
|
type: 'element',
|
|
12
23
|
tagName: 'script',
|
|
@@ -21,10 +32,7 @@ export function darkMode(): Element[] {
|
|
|
21
32
|
type: 'element',
|
|
22
33
|
tagName: 'dark-mode',
|
|
23
34
|
properties: {
|
|
24
|
-
|
|
25
|
-
style: 'position: fixed; top: 8px; left: 10px; z-index: 999;',
|
|
26
|
-
dark: 'Dark',
|
|
27
|
-
light: 'Light',
|
|
35
|
+
...properties
|
|
28
36
|
},
|
|
29
37
|
children: []
|
|
30
38
|
}]
|
|
@@ -74,13 +74,14 @@ class MarkdownStyle extends HTMLElement {
|
|
|
74
74
|
}
|
|
75
75
|
customElements.define('markdown-style', MarkdownStyle);`
|
|
76
76
|
|
|
77
|
-
export function markdownStyle(child: ElementContent[], markdownStyleTheme?: 'dark' | 'light'): Element[] {
|
|
77
|
+
export function markdownStyle(child: ElementContent[], markdownStyleTheme?: 'dark' | 'light', style: string = ''): Element[] {
|
|
78
78
|
const properties: Record<string, string> = {
|
|
79
|
-
style: 'max-width: 960px; margin: 0 auto 60px auto; padding: 8px',
|
|
79
|
+
style: 'max-width: 960px; margin: 0 auto 60px auto; padding: 8px;' + style,
|
|
80
80
|
className: 'markdown-style',
|
|
81
81
|
}
|
|
82
82
|
if (markdownStyleTheme) {
|
|
83
|
-
properties.theme = markdownStyleTheme;
|
|
83
|
+
// properties.theme = markdownStyleTheme;
|
|
84
|
+
properties.mode = markdownStyleTheme;
|
|
84
85
|
}
|
|
85
86
|
return [{
|
|
86
87
|
type: 'element',
|